sold2算法中的特征点检测对应了junction_decoder部分
input的image经过作为backbone的Hourglass net之后,会过一个junction_decoder的小网络,
网络结构如下
conv3x3, s=2, p=1
conv1x1
input image size = [1, C, H, W]
junction_decoder output size = [1, 65, H/8, W/8]
这个65是什么意思呢,1~64表示的是8x8 patch内有特征点的位置标1,其余是0
最后一个65是一个flag,表示这片patch里面有没有特征点
现在知道了检测出来的特征点输出size是[1, 65, H/8, W/8],
那要怎么知道特征点在原image中的位置呢。
这个时候要用到上采样,同时还能改变channel的PixelShuffel了(具体原理见链接)。
对应的源码如下
def conve