一、Faster-RCNN基本结构

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

二、feature maps

最后一层卷积层输出。

三、RPN

1、RPN(Region Proposal Networks)

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进行训练。

训练方框回归的时候,

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

总的损失函数为:

在这里λ被设置为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:

五、参考:

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

Faster-RCNN理解的更多相关文章

  1. Faster RCNN代码理解(Python)

    转自http://www.infocool.net/kb/Python/201611/209696.html#原文地址 第一步,准备 从train_faster_rcnn_alt_opt.py入: 初 ...

  2. Faster rcnn代码理解(4)

    上一篇我们说完了AnchorTargetLayer层,然后我将Faster rcnn中的其他层看了,这里把ROIPoolingLayer层说一下: 我先说一下它的实现原理:RPN生成的roi区域大小是 ...

  3. Faster rcnn代码理解(2)

    接着上篇的博客,咱们继续看一下Faster RCNN的代码- 上次大致讲完了Faster rcnn在训练时是如何获取imdb和roidb文件的,主要都在train_rpn()的get_roidb()函 ...

  4. Faster rcnn代码理解(1)

    这段时间看了不少论文,回头看看,感觉还是有必要将Faster rcnn的源码理解一下,毕竟后来很多方法都和它有相近之处,同时理解该框架也有助于以后自己修改和编写自己的框架.好的开始吧- 这里我们跟着F ...

  5. 对faster rcnn 中rpn层的理解

    1.介绍 图为faster rcnn的rpn层,接自conv5-3 图为faster rcnn 论文中关于RPN层的结构示意图 2 关于anchor: 一般是在最末层的 feature map 上再用 ...

  6. [论文理解] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

    Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 简介 Faster R-CNN是很经典的t ...

  7. 原 CNN--卷积神经网络从R-CNN到Faster R-CNN的理解(CIFAR10分类代码)

    1. 什么是CNN 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Netwo ...

  8. 一个门外汉的理解 ~ Faster R-CNN

    首先放R-CNN的原理图 显然R-CNN的整过过程大致上划分为四步: 1.输入图片 2.生成候选窗口 3.对局部窗口进行特征提取(CNN) 4.分类(Classify regions) 而R-CNN的 ...

  9. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(理解)

    0 - 背景 R-CNN中检测步骤分成很多步骤,fast-RCNN便基于此进行改进,将region proposals的特征提取融合成共享卷积层问题,但是,fast-RCNN仍然采用了selectiv ...

  10. 对Faster R-CNN的理解(1)

    目标检测是一种基于目标几何和统计特征的图像分割,最新的进展一般是通过R-CNN(基于区域的卷积神经网络)来实现的,其中最重要的方法之一是Faster R-CNN. 1. 总体结构 Faster R-C ...

随机推荐

  1. swiper 父级元素display:none 之bug

    问题描述: 同一个页面,点击底部tab按钮切换div的显示与隐藏,点击到第四个页面时 轮播图总是不动,出bug function start(){ var mySwiper = new Swiper( ...

  2. 共有和私有、name mangling

    1.在python中可以在变量和函数名前加上双下划线—‘’__‘’来实现其伪私有(实际上python中没有Private属性的),加上双下划线后,外部对象不能通过调用其名称直接获得对象的属性或操作. ...

  3. web传输过程中的gzip压缩

    最近在做项目的时候用到了gzip,发现它的压缩能力还是很强大的,基本能够压缩50%的文本文件大小.以前有所了解,但不够深入,现在详细了解下. 什么是gzip 在哪里使用gzip gzip对于不同类型文 ...

  4. Labview-vi的可重入性

    VI可重入性: labview多线程中 同时对一个子vi访问时,可能会造成同时对同一块内存地址读写所造成的数据混乱,当选择 vi属性(Ctrl+i)中执行选项卡允许可重入时,labview会分配不同的 ...

  5. web 自定义标签

    Web Components 标准非常重要的一个特性是,它使开发者能够将HTML页面的功能封装为 custom elements(自定义标签).而自定义标签的好处,就是在大型web开发的时候,可以封装 ...

  6. [转载] Fiddler为所欲为第二篇 像OD一样调试 [二]

    首先,如果大家没有看过第一篇,可以先看看第一篇,了解Fiddler script的脚本哦.传送门:https://www.52pojie.cn/thread-854434-1-1.html 导语:其实 ...

  7. loadrunner11浏览器兼容性的问题

    最近项目中遇到了新开发的系统,全是HTML5和一些最新的前端框架技术,由于没有做浏览器兼容处理,所以该系统无法在IE浏览器进行操作,对firefox和google浏览器支持较好.但是又一个问题出现了, ...

  8. L2-022 重排链表 (25 分)

    L2-022 重排链表 (25 分)   给定一个单链表 L​1​​→L​2​​→⋯→L​n−1​​→L​n​​,请编写程序将链表重新排列为 L​n​​→L​1​​→L​n−1​​→L​2​​→⋯.例 ...

  9. "Loading a plug-in failed The plug-in or one of its prerequisite plug-ins may be missing or damaged and may need to be reinstalled"

    The Unarchiver 虽好,但存在问题比我们在mac上zip打包一个软件xcode, 然后copy to another mac, 这时用The Unarchiver解压缩出来的xcode包不 ...

  10. 西门子SCL读写DB数据

    数据块间接寻址方式,仅供参考. STATUS_1:= DB11.DW[COUNTER]; //字节间接寻址STATUS_2:= DB12.DX[WNO, BITNO]; //位间接寻址,用户改变WNO ...