目标检测:fasterRCNN的receptive field的理解

作者:Alan Huang
链接:https://www.zhihu.com/question/61772315/answer/191421994
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在物体检测中, 除了物体本身的appearance之外, context对检测质量会有不少影响 特别是当物体本身appearance信息不足的时候(遮挡,尺度过小等等),context会成为检测判别当中非常重要的线索。 通常来讲, context应该要和物体的尺寸相匹配: 如果过小则context信息不足以提供置信度支持; 若过大(特别是当你提供的context和检测物体本身并没有很强的coherence时),会引入过多的额外噪声对训练和预测造成干扰。

receptive-field 即网络输出的一个点所涵盖的输入区域,可以认为是object + context的连续区域。Context大小往往跟检测的物体类型和应用场景有关。以其他答主提到的人脸和车辆为例:

人脸检测场景中, 通常会出现头肩,甚至是整个人体的信息。 人脸跟头肩和人体具有非常大的相关性,此时如果增大receptive-field, 把头肩甚至是整个人体都包含进去, 往往会比单单包含人脸输入的检测器要好。 这也是为何许多人脸检测器训练的输入往往是整个上半身图, 而不是单单一张脸。 [1612.04402] Finding Tiny Faces 这篇固定receptive field(300px)也是合理的:对于小的人脸(<30px), 这个输入大小已经包含了大部分的人体, 能够提供足够多的context; 对于大的人脸(80-200px),输入分辨率足够高,有了足够的细节信息,可以只从人脸区域就能有比较高的置信度判断是不是人脸。

车辆检测中, 整个车的bounding box已经囊括了车本身,所以context一般不需要太大,empirically 物体本身的2-3倍大小输入就足够了。 过大的receptive-field还会造成定位不准以及低recall, 这也是直接在KITTI上怼faster r-cnn效果并不理想的原因。


最后, 如果想把物体检测的性能做好, 除了了解现在最新的CNN系列方法之外, 去回顾一下传统的检测方法也是必要的, 因为很多物体检测问题本身的一些domain knowledge 被强大的CNN掩盖掉了..... 例如 如何解决intra-class variance(subtype clustering? ), 如何处理object scale variance (image pyramid ? multi-scale models ?) , 如何做input sampling(hard negative mining? ) 等等等等

不过这可能也是因为人脸这个目标比较特殊,人脸毕竟只占人体的一小部分,而人体是非常强的context信息。换成别的目标,比如说一辆车、一个行人可能也不需要几十倍大的receptive field。

猜你喜欢

转载自blog.csdn.net/wfei101/article/details/80530766