Faster-RCNN理解
一、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理解的更多相关文章
- Faster RCNN代码理解(Python)
转自http://www.infocool.net/kb/Python/201611/209696.html#原文地址 第一步,准备 从train_faster_rcnn_alt_opt.py入: 初 ...
- Faster rcnn代码理解(4)
上一篇我们说完了AnchorTargetLayer层,然后我将Faster rcnn中的其他层看了,这里把ROIPoolingLayer层说一下: 我先说一下它的实现原理:RPN生成的roi区域大小是 ...
- Faster rcnn代码理解(2)
接着上篇的博客,咱们继续看一下Faster RCNN的代码- 上次大致讲完了Faster rcnn在训练时是如何获取imdb和roidb文件的,主要都在train_rpn()的get_roidb()函 ...
- Faster rcnn代码理解(1)
这段时间看了不少论文,回头看看,感觉还是有必要将Faster rcnn的源码理解一下,毕竟后来很多方法都和它有相近之处,同时理解该框架也有助于以后自己修改和编写自己的框架.好的开始吧- 这里我们跟着F ...
- 对faster rcnn 中rpn层的理解
1.介绍 图为faster rcnn的rpn层,接自conv5-3 图为faster rcnn 论文中关于RPN层的结构示意图 2 关于anchor: 一般是在最末层的 feature map 上再用 ...
- [论文理解] 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 ...
- 原 CNN--卷积神经网络从R-CNN到Faster R-CNN的理解(CIFAR10分类代码)
1. 什么是CNN 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Netwo ...
- 一个门外汉的理解 ~ Faster R-CNN
首先放R-CNN的原理图 显然R-CNN的整过过程大致上划分为四步: 1.输入图片 2.生成候选窗口 3.对局部窗口进行特征提取(CNN) 4.分类(Classify regions) 而R-CNN的 ...
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(理解)
0 - 背景 R-CNN中检测步骤分成很多步骤,fast-RCNN便基于此进行改进,将region proposals的特征提取融合成共享卷积层问题,但是,fast-RCNN仍然采用了selectiv ...
- 对Faster R-CNN的理解(1)
目标检测是一种基于目标几何和统计特征的图像分割,最新的进展一般是通过R-CNN(基于区域的卷积神经网络)来实现的,其中最重要的方法之一是Faster R-CNN. 1. 总体结构 Faster R-C ...
随机推荐
- 基于IntelliJ IDEA开发工具搭建SSM框架并实现页面登录功能详细讲解二
接: 接下来配置类 UserController package com.chatRotbot.controller; import com.chatRotbot.model.User; import ...
- selenium中的alter弹框
from selenium import webdriverimport timedriver=webdriver.Chrome()driver.get('http://ui.imdsx.cn/uit ...
- C++的qsort函数
void qsort(void * base,int nelem,int width,int (*fcmp)(const void*,const void *) 1.待排序数组首地址 2.数组中待排序 ...
- MySQL5.7关于密码二三事
MySQL5.7关于密码二三事 第一个:update user set password=password('root') where user='root' and host='localhost' ...
- java数字转IP 一行
System.out.println(InetAddress.getByName(String.valueOf(12345)).getHostAddress());
- deep learning RNN
specialize vi. 专攻;特化;专门从事;详细说明 vt.使专门化;使适应特殊情况;详细说明;列举 generalize across vt.& vi.概括,归纳;推广,普及;使 ...
- jmeter 上传附件脚本报Non HTTP response code: java.io.FileNotFoundException
如果上传附件报如下错误,就需要把附件放到和脚本同一路径下就解决了
- Ajax会自动将返回的对象属性首字母转化为小写
今天在使用Ajax的时候遇到的问题. $.ajax({ type: "post", url: "<%=basePath%>reserd'f'w/liswe'f ...
- div 隐藏显示各种例子
<html><head><title>jquery show()</title><script type="text/javascrip ...
- linux配置服务器
梳理一下这次配置服务器的思路. 1,挂载磁盘 Java和neigx上传到根目录下,tomcat放在data目录下,数据库新建文件夹也在data下, 2,配置环境变量 3,nginx修改域名 4,数据库 ...