zoukankan      html  css  js  c++  java
  • 利用FPN构建Faster R-CNN检测

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

    把FPN融合到Faster rcnn中能够很大程度增加检测器对全图信息的认知,

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

    步骤如图所示:

    1.先将图像送入底层网络中得到一个feature map,可以用resnet等 网络

    2.图中的1,2,3层即为预训练网络得到的特征,之后采取的操作是对于2层进行1*1的降维操作,然后与3层上采样之后的结果进行相加,得到5层,这就是FPN的操作。

    3.对于6层是一样的操作,然后对于得到的4,5,6层(top-down网络,fpn的核心)进行RPN操作得到region proposal,之后与原始faster rcnn的操作一样,通过3*3的卷积之后连接分类层和回归层。

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

    5.最后,连接两个1024层的全连接层,然后分两个支路,连接最后对应的分类层和回归层

    使用了更深网络来构造特征金字塔,能增加鲁棒信息;除此之外,将低层特征和高层特征累加,是因为低层特征可以提供更加准确的位置信息,而多次的降采样和上采样操作使得深层网络的定位信息存在误差,

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

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

    高层的语义信息能够帮助我们准确的检测出目标

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

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

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

    在第6层输出较小目标的检测结果。因为在大的feature map上进行操作,可以获得更多关于小目标的有用信息(分辨率有关,第三条);

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

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

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

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

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

  • 相关阅读:
    善用性能工具进行SQL整体优化
    mysql use index () 优化查询的例子
    mysql优化 explain index
    mysql中explain用法和结果的含义
    MySQL运行状态show status中文详解
    Mysql运行状态查询命令及调优详解
    数据库工具——Navicat Premium使用技巧
    细说mysql索引
    对国家失望:汉末儒生集体沉默(儒家主张积极入世,以经国济世为己任的)
    韦尔股份:打造国际半导体设计行业领先企业(各种企业问题的问答)
  • 原文地址:https://www.cnblogs.com/ywheunji/p/10783029.html
Copyright © 2011-2022 走看看