- 低层(bottom-up feature):低级特征,框的位置预测准确,但分类可能会出错,细粒度特征
- 高层(top-down feature):高级特征,语义信息很强,
分类误差大->高层语义信息运用
location误差大->低层信息运用
- SSD缺点
仅使用顶层进行检测,对小物体检测效果不好;
对类似类别的分类错误较多,one-stage检测器的
- 为何SSD和Faster R-CNN对小目标检测效果不好?
1)SSD和Faster R-CNN此类方法对小目标效果不好,一定程度上是因为小目标所能对应的anchor比较少,导致训练不足。
解决办法:保证anchor的密度,根据感受野合理设置anchor;
- 如何提高小目标的检测?
特征融合,加入context上下文信息。
1) FPN的做法:SSD为了预测小目标,就得把比较低的层拿出来预测,这样的话就很难保证有很强的语义特征,所以作者就想着,把高层的特征再传下来,补充低层的语义,这样就可以获得高分辨率、强语义的特征,有利于小目标的检测。
FPN中的1×1侧连特别重要,1x1的卷积作用:
- 使bottom-up对应层降维至256(改变维度以便element-wise sum);
- 缓冲作用,防止梯度直接影响bottom-up主干网络,更稳定;组合特征。上采样2x up作者采用的是nearest neighbor。
- 加号是elementwise sum(DSSD中实验结果是elementwise product会好一点点)。
如果不进行特征的融合(也就是说去掉所有的1x1侧连接),虽然理论上分辨率没变,语义也增强了,但是AR下降了10%左右!作者认为这些特征上下采样太多次了,导致它们不适于定位。Bottom-up的特征包含了更精确的位置信息。
- 正负样本选择-Faster R-CNN
RPN网络:
- 正样本:对于每一个ground truth bounding box(gt_bbox),选择与其IOU最高的一个anchor作为正样本;对于剩下的anchor,从中选择和任意一个gt_bbox重叠度超过0.7的anchor作为正样本,正样本的数目不超过128个(==bbox负样本较多,需保持正负样本比例均衡,此处使正负样本比例为1:1==,如果正样本不足128,则用负样本补充)。
- 负样本:随机选择和gt_bbox重叠度小于0.3的anchor作为负样本。
- 尺寸超过图像边界的anchor弃去不用,不满足正负样本规定的anchor弃去不用;
R-CNN(ROIHead):
由于RoIs给出的2000个候选框,分别对应feature map不同大小的区域,挑选出top-N个(如128个)ROIs来训练Fast R-CNN,选择规则如下: - RoIs和gt_bboxes 的IoU大于0.5的,选择一些(比如32个)
- 选择 RoIs和gt_bboxes的IoU小于等于0(或者0.1)的选择一些(比如 128-32=96个)作为负样本