zoukankan      html  css  js  c++  java
  • Faster-RCNN理解

    一、Faster-RCNN基本结构

    image

    该网络结构大致分为三个部分:卷积层得到高位图像特征feature maps、Region Proposal Network得到候选边框、classifier识别出物体及得到准确bounding box。

    二、feature maps

    最后一层卷积层输出。

    三、RPN

    1、RPN(Region Proposal Networks)

    image

    feature maps再以3x3的卷积核进行卷积得到256xHxW的高维特征图,每个高维像素点对应原图9个anchor boxes(长宽比3种情况,boxes大小也有3种情况),共有WH*9 个anchors。接着将256xHxW的高维特征图一方面用18通道输出的1x1的卷积核将对应的anchor boxs进行前景背景分类,另一方面用36通道输出的1x1卷积核对判定为前景的anchor进坐标修正。

    训练前景背景分类的时候,需要获取每个anchor的标签,当anchor box与ground truth的IOU在0.3以下,判定为背景,当anchor box与ground truth的IOU在0.7以上,判定为前景,其他情况不用于训练。在训练anchor属于前景与背景的时候,是在一张图中,随机抽取了128个前景anchor与128个背景anchor。采用SoftmaxWithLoss进行训练。

    训练方框回归的时候,

    804917-20170316173931166-2076981304

    也需要获取每个anchor的标签,即每个anchor到ground truth的Gx,Gy,Gw,Gh。训练时只要训练判定为前景的anchor就好了,采用SmoothL1loss进行训练,具体可以描述为:

    20180120110847681

    总的损失函数为:

    image

    在这里λ被设置为10,Ncls为256(前景背景分类的正负样本分别为128),Nreg为2400(一般feature map的宽高为60x40)。这样设置的话,RPN的两部分loss值能保持平衡。

    2、NMS

    得到判定为前景的anchor后,会进行一次非极大值抑制(Non-Maximum Suppression,NMS)去除重叠的proposal。NMS原理参考:https://www.cnblogs.com/makefile/p/nms.html

    四、classifier

    1、ROI pooling

    对于每个RoI而言,需要从共享卷积层上摘取对应的特征,并且送入全连接层进行分类。因此,RoI Pooling主要做了两件事,第一件是为每个RoI选取对应的特征,第二件事是为了满足全连接层的输入需求,将每个RoI对应的特征的维度转化成某个定值。例如将feature maps按水平和竖直方向六等分,再用最大池化转换,得到宽高为6x6。

    2、分类与边框修正

    将每个ROI输入进行分类及边框修正。分类这时要识别具体物体了,共分为C+1类(算上背景)。训练边框修正,同样使用SmoothL1loss损失函数,总体损失函数如下,其中r取1:

    20180120205040998

    五、参考:

    实例分割模型Mask R-CNN详解:从R-CNN,Fast R-CNN,Faster R-CNN再到Mask R-CNN - jiongnima的博客 - CSDN博客  https://blog.csdn.net/jiongnima/article/details/79094159

  • 相关阅读:
    Plotagraph软件五分钟光速速成傻瓜教程
    QT插件+ROS 2 新建项目
    QT插件+ROS 1 安装配置
    GitHub 优秀的 Android 开源项目 (精品)
    ROS的launch文件
    编写第一个 Shell 脚本
    CMake 入门实战
    ROS 创建服务和请求
    ROS 小乌龟测试
    【转】C++中的虚函数的实现
  • 原文地址:https://www.cnblogs.com/smbx-ztbz/p/10660679.html
Copyright © 2011-2022 走看看