利用FPN构建Faster R-CNN检测

FPN就是所谓的金字塔结构的检测器,(Feature Pyramid Network)html

把FPN融合到Faster rcnn中可以很大程度增长检测器对全图信息的认知,网络

在个人另外一篇博客中对多尺度融合有较为详细的介绍,https://www.cnblogs.com/ywheunji/p/11022674.htmlurl

步骤如图所示:spa

1.先将图像送入底层网络中获得一个feature map,能够用resnet等 网络.net

2.图中的1,2,3层即为预训练网络获得的特征,以后采起的操做是对于2层进行1*1的降维操做,而后与3层上采样以后的结果进行相加,获得5层,这就是FPN的操做。htm

3.对于6层是同样的操做,而后对于获得的4,5,6层(top-down网络,fpn的核心)进行RPN操做获得region proposal,以后与原始faster rcnn的操做同样,经过3*3的卷积以后链接分类层和回归层。blog

4.获得的结果进行roi pooling操做,即固定特征的大小。get

5.最后,链接两个1024层的全链接层,而后分两个支路,链接最后对应的分类层和回归层博客

 

 

使用了更深网络来构造特征金字塔,能增长鲁棒信息;除此以外,将低层特征和高层特征累加,是由于低层特征能够提供更加准确的位置信息,而屡次的降采样和上采样操做使得深层网络的定位信息存在偏差,io

浅层的网络更关注于细节(位置)信息,高层的网络更关注于语义信息,而高层的语义信息可以帮助咱们准确的检测出目标。所以咱们将其结合其起来使用,这样咱们就构建了一个更深的特征金字塔,融合了多层特征信息,并在不一样的特征进行输出。

0.浅层的网络更关注于细节(位置)信息,高层的网络更关注于语义信息

高层的语义信息可以帮助咱们准确的检测出目标

1.融合深层特征适合作复杂任务

图像中存在不一样尺寸的目标,而不一样的目标具备不一样的特征,利用浅层的特征就能够将简单的目标的区分开来;利用深层的特征能够将复杂的目标区分开来;这样咱们就须要这样的一个特征金字塔来完成这件事。

图中咱们在第4层输出较大目标的检测结果,在第5层输出次大目标的检测结果,

在第6层输出较小目标的检测结果。由于在大的feature map上进行操做,能够得到更多关于小目标的有用信息(分辨率有关,第三条);

检测也是同样,咱们会在第4层输出简单的目标,第5层输出较复杂的目标,第6层输出复杂的目标。

2.下采样倍数小的特征感觉野小,适合小目标

另外在yolov3中对多尺度检测的理解是,1/32大小的特征图下采样倍数高,因此具备大的感觉野,适合检测大目标的物体,1/8的特征图具备较小的感觉野,因此适合检测小目标。

3.小尺度分辨率信息不足不适合小目标

对于小目标,小尺度feature map没法提供必要的分辨率信息,因此还需结合大尺度的feature map

相关文章
相关标签/搜索