一、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. 性能测试LR学习笔录 -2

    LoadRunner基本测试流程: 制定性能测试计划(部分)  -> 创建测试脚本 -> 编译.运行测试脚本 -> 创建场景 - > 运行.监控场景.收集数据  -> 生 ...

  2. 用6个案例说明如何恢复PXC集群

    原文链接:https://blog.csdn.net/zengxuewen2045/article/details/51868976 1.   案例一:三个节点,关闭一个 由于维护和配置变更等工作需要 ...

  3. js实现全选反选(开关门)

    话不多说直接看图吧

  4. 《Pro SQL Server Internals, 2nd edition》

    设计和优化索引 定义一种应用于所有地方的索引策略是不可能的.每个系统都是独特的,需要基于工作,业务需求和其他一些因素的自己的索引方法.然而,有几个设计的注意事项和指导方针可以被应用到每个系统. 在我们 ...

  5. C++编程题#1:含k个3的数

    描述 输入二个正整数m 和 k,其中1 < m < 100000,1 < k <5 ,判断m 能否被19整除,且恰好含有k个3,如果满足条件,则输出YES,否则,输出NO. 例 ...

  6. 不使用Visual Studio开发ASP.NET MVC应用(下篇)

    书接上回! 前文“纯手工”.彻底抛弃Visual Studio,制作了一个ASP.NET MVC应用,运行起来还不错,项目目录.源代码.web.config等所有东西都已经做到“最简”,除去了Visu ...

  7. iOS 二维码 学习

    这段时间忙着交接工作,找工作,找房子,入职,杂七杂八的,差不多一个月没有静下来学习了.这周末晚上等外卖的时间学习一下二维码的制作与扫描. 项目采用OC语言,只要使用iOS自带的CoreImage框架, ...

  8. 虚拟机centos7服务器下,启动oracle11g数据库和关闭数据库

    转载:https://blog.csdn.net/ShelleyWhile/article/details/74898033 一.前提条件:虚拟机centos7服务器下,已经安装好oracle11g数 ...

  9. C语言的AT指令

    今天跟人聊嵌入式,对面是某国际硬盘生产商的嵌入式软件工程师,问了我很简单的问题,如何快速将一个变量赋给某个特定的地址. 按我们思路就是unsigned *a = address1:  *a = add ...

  10. ES6学习重难点总结(持续更新)

    Symbol 1.Symbol.iterator Symbol.iterator指向对象的默认遍历器方法: String.prototype[Symbol.iterator] //ƒ [Symbol. ...