资源共享分类
通信信号 图像语音 神经网络 智能优化 控制器 数值仿真 数学建模 其他专业

微信:HuangL1121
Q Q:1224848052
团队:嘉兴麦特莱博软件开发工作室
地址:嘉兴港区
 
神经网络
MATLAB代做|MATLAB专业代做|Faster R-CNN
来源:本站    日期:2019/6/27    浏览量:621  

功能描述:

      文章《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》是为了改进Fast R-CNN而提出来的。因为在Fast R-CNN文章中的测试时间是不包括search selective时间的,而在测试时很大的一部分时间要耗费在候选区域的提取上。(对于Fast R-CNN的详细知识,请查看Fast R-CNN文章详细解读。)Faster R-CNN正是为解决这个问题而提出来的。

      为了更好的理解Faster R-CNN的内容,先来看一下Faster R-CNN的整体结构,如下图所示 :


通过上面两张图可以看出Faster R-CNN由四个部分组成: 
1)卷积层(conv layers),用于提取图片的特征,输入为整张图片,输出为提取出的特征称为feature maps 
2)RPN网络(Region Proposal Network),用于推荐候选区域,这个网络是用来代替之前的search selective的。输入为图片(因为这里RPN网络和Fast R-CNN共用同一个CNN,所以这里输入也可以认为是featrue maps),输出为多个候选区域,这里的细节会在后面详细介绍。 
3)RoI pooling,和Fast R-CNN一样,将不同大小的输入转换为固定长度的输出,输入输出和Faste R-CNN中RoI pooling一样。 
4)分类和回归,这一层的输出是最终目的,输出候选区域所属的类,和候选区域在图像中的精确位置。

1.RPN 
通过上述介绍可以知道,Faster R-CNN与Fast R-CNN最大的区别就是提出了一个叫RPN(Region Proposal Networks)的网络,专门用来推荐候选区域的,RPN可以理解为一种全卷积网络,该网络可以进行end-to-end的训练,最终目的是为了推荐候选区域,如下图所示。 
原文中RPN网络为CNN后面接一个3*3的卷积层,再接两个1*1的卷积层(原文称这两个卷积层的关系为sibling),其中一个是用来给softmax层进行分类,另一个用于给候选区域精确定位。

到这里其实有个疑问没有说清楚,也算是理解这篇文章的重点,通过CNN得到的feature map怎么可以通过RPN得到与原图对应的候选区域的,换句话说,RPN输出的候选区域和softmax的结构怎么与原图中的区域进行对应的。要解决这个疑问就得先理解anchors的概念。

2.anchors 
anchors可以理解为一些预设大小的框,anchors的种类用k表示,在原文中k=9,由3种面积(12821282,25622562,51225122)和3种长宽比(1:1,1:2,2:1)组成,这里anchors的大小选取是根据检测时的图像定义,在检测时会将最小边缩放到600,最大边不超过1000(我看的是tf版本的代码)。生成anchors如下

1)在原文中使用的是ZF model中,其Conv Layers中最后的conv5层num_output=256,对应生成256张特征图(feature maps),所以相当于feature map每个点都是256-dimensions 
2)在conv5之后,做了rpn_conv/3x3卷积且num_output=256,相当于每个点又融合了周围3x3的空间信息),同时256-d不变 
3)假设在conv5 feature map中每个点上有k个anchor(原文如上k=9),而每个anhcor要分foreground和background,所以每个点由256d feature转化为cls=2k scores;而每个anchor都有[x, y, w, h]对应4个偏移量,所以reg=4k coordinates(scores和coordinates为RPN的最终输出) 
4)补充一点,全部anchors拿去训练太多了,训练程序会在合适的anchors中随机选取128个postive anchors+128个negative anchors进行训练(至于什么是合适的anchors接下来RPN的训练会讲)

注意,在tf版本的代码中使用的VGG conv5 num_output=512g,所以是512d,其他类似。

3.RPN训练 
RPN训练中对于正样本文章中给出两种定义。第一,与ground truth box有最大的IoU的anchors作为正样本;第二,与ground truth box的IoU大于0.7的作为正样本。文中采取的是第一种方式。文中定义的负样本为与ground truth box的IoU小于0.3的样本。 
训练RPN的loss函数定义如下: 
L({pi},{ti})=1Ncls∑iLcls(pi,p∗i)+λ1Nreg∑ip∗iLreg(ti,t∗i)L({pi},{ti})=1Ncls∑iLcls(pi,pi∗)+λ1Nreg∑ipi∗Lreg(ti,ti∗) 
其中,i表示mini-batch中第i个anchor,pipi表示第i个anchor是前景的概率,当第i个anchor是前景时p∗ipi∗为1反之为0,titi表示预测的bounding box的坐标,t∗iti∗为ground truth的坐标。 
看过Fast R-CNN文章详细解读文章的会发现,这部分的loss函数和Fast R-CNN一样,除了正负样本的定义不一样,其他表示时一样的。

4.RPN网络与Fast R-CNN网络的权值共享 
RPN最终目的是得到候选区域,但在目标检测的最终目的是为了得到最终的物体的位置和相应的概率,这部分功能由Fast R-CNN做的。因为RPN和Fast R-CNN都会要求利用CNN网络提取特征,所以文章的做法是使RPN和Fast R-CNN共享同一个CNN部分。 
Faster R-CNN的训练方法主要分为两个,目的都是使得RPN和Fast R-CNN共享CNN部分,如下图所示 
-




   上一篇: WANN——不训练不调参,AI自动构建超强网络,告别炼丹一大步    下一篇:    
   相关阅读
· MATLAB代做|FPGA代做|simulink代做—— 2020/7/14
· MATLAB代做|FPGA代做|simulink代做—— 2020/5/30
· MATLAB代做|FPGA代做|simulink代做—— 2020/5/30
· MATLAB代做|FPGA代做|simulink代做—— 2020/2/1
· MATLAB代做|FPGA代做|simulink代做—— 2019/12/11
· MATLAB代做|FPGA代做|simulink代做—— 2019/12/11
· MATLAB代做|FPGA代做|simulink代做—— 2019/12/11
· Alexnet网络结构 2019/11/20
· MATLAB代做|FPGA代做|simulink代做—— 2019/9/15
· MATLAB代做|FPGA代做|simulink代做—— 2019/8/29
Copyright 2017-2024 © 嘉兴麦特莱博软件开发工作室
  • 网站备案号:浙ICP备18008591号-1