转载链接:https://www.zhihu.com/question/49455386/answer/117198011
转载链接:https://www.zhihu.com/question/49455386/answer/135977995
SSD 策略理解点:
1:作为小物体,其所对应的anchor比较少 (gt overlap > 0.5 的 anchor),也就是说对应feature map上的pixel难以得到充分训练。读者可以脑补每一个大的ROI可能覆盖很多 anchor,那么这些 anchor 均有机会得到训练。然而一个小物体并不能覆盖很多 anchor。通过 randomly crop,让每一个anchor都得到充分训练(也就是说,crop出一个小物体,在新图里面就变成大物体了)只能说这种without region propisal的结果 naturally 不擅长小物体
2:YOLO比较坑的地方在于倒数第二层为全连接,后面的7*7格子不能扩张太大,不然前面的全连接要爆。格子大了,同一个格子可能会包括多个小物体,检测就不好搞了。而YOLO全连接的作用又是整合全局信息,要去掉全连接,就需要增加最后点的感受野,所以深度残差就非常适合。SSD前面的CNN结构,一定要是全对称的,特别是pooling的时候,这样最后输出点的感受野中心才与每个格子的中心是重合的。如果是非对称的,CNN前面特征提取的时候,它会纠结,造成大量的小物体不好学习。而YOLO最后有全连接都还好,问题不大。
3:SSD使用的VGG16作为特征抽取,在conv4_3feature map的分辨率已经缩小了8倍,在conv5_3缩小了16倍.比如一个32*32大小的物体,在vgg16 的 conv5_3的feature map 对应仅为2*2. 位置信息有较大的损失.
1). 使用不同层的特征: 比如hyperNet, MultiPath.
2). 保证感受也不缩小的情况下feature map的分辨率不至于缩小太多.这种思路可以考虑采用DeepLab中采用的Hole algorithm.在保证感受野的同时分辨变化较小.