SSD目标检测理解

转载链接: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.在保证感受野的同时分辨变化较小.

4:SSD,每一个用于定位的卷积层都有K*(C+4)个3x3的filters (其中k是anchor的个数,C是类型数目),我的理解是这个卷积操作相当于RPN中的sliding window,预测K种anchor在每个feature map cell上的loc和conf。然后卷积操作得到的feature拉成长向量,最后将所有层的特征concatenate起来做回归和分类。
如果是这样的话,那么小物体在低层次feature map ( e.g. conv_4-3)的响应更显著,小物体的检测主要靠低层的特征(联想:SSD训练之前首先要做一个ground truth的匹配,比如样本猫狗图像,较小的猫的ground truth只是出现在底层,高层没有猫的ground truth,而较大物体狗匹配到的ground truth在高层feature map上),其他层的信息只是简单拼接(所以小物体检测的语义信息,contex信息差一些)。
针对评论提问每个预测分支中3x3卷积的作用,我用train模型的可视化图来说明:例如从fc7(实际是一个卷积层)的feature map引出的loc分支,fc7_mbox_loc是一个卷积层,有6x4=24个3x3卷积核。其中,6是anchor的种类,4是回归预测的4个坐标(的offset),即每个cell都分别给6种anchor box预测4个坐标。得到24个feature map后再flatten拉长,最后把所有层的特征都拼接起来,求置信度conf的分支也类似,最后mbox_loc和mbox_conf送到整体损失层mbox_loss



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值