版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
解读(jiědú)FasterRCNN2018.12.26第一页,共26页。FasterRCNN简介(jiǎnjiè)经过RCNN和FastRCNN的积淀,RossB.Girshick在2016年提出了新的FasterRCNN,在结构上,FasterRCN已经将特征抽取(featureextraction),proposal提取,boundingboxregression(rectrefine),classification都整合在了一个网络中,使得综合性能有较大提高,在检测速度(sùdù)方面尤为明显。第二页,共26页。论文作者看来FasterRCNN可以分为(fēnwéi)4个部分1、Convlayers。作为一种CNN网络目标(mùbiāo)检测方法,FasterRCNN首先使用一组基础的conv+relu+pooling层提取image的featuremaps。该featuremaps被共享用于后续RPN层和全连接层。2、RegionProposalNetworks。RPN网络用于生成regionproposals。该层通过softmax判断anchors属于foreground或者background,再利用boundingboxregression修正anchors获得精确的proposals。3、RoiPooling。该层收集输入的featuremaps和proposals,综合这些信息后提取proposal
featuremaps,送入后续全连接层判定目标(mùbiāo)类别。4、Classification。利用proposal
featuremaps计算proposal的类别,同时再次boundingboxregression获得检测框最终的精确位置。第三页,共26页。Convlayers部分共有13个conv层,13个relu层,4个pooling层。在Convlayers中:所有的conv层都是:kernel_size=3,pad=1,所有的pooling层都是:kernel_size=2,stride=2。最终一张MxN的图像经过Convlayers之后(zhīhòu)固定变为(M/16)x(N/16)下图展示了RPN网络的具体结构。可以看到RPN网络实际分为2条线,上面一条通过softmax分类anchors获得foreground和background(检测目标(mùbiāo)是foreground),下面一条用于计算对于anchors的boundingboxregression偏移量,以获得精确的proposal。而最后的Proposal层则负责综合foregroundanchors和boundingboxregression偏移量获取proposals,同时剔除太小和超出边界的proposals。其实整个网络到了ProposalLayer这里,就完成了相当于目标(mùbiāo)定位的功能。第四页,共26页。1、在论文中使用的是ZFmodel中,其ConvLayers中最后的conv5层num_output=256,对应生成256张特征图,所以相当于featuremap每个点都是256-d2、在conv5之后,做了rpn_conv/3x3卷积且num_output=256,相当于每个点又融合了周围(zhōuwéi)3x3的空间信息,同时256-d不变3、假设在conv5featuremap中每个点上有k个anchor(默认k=9),而每个anhcor要分foreground和background,所以每个点由256dfeature转化为cls=2kscores;而每个anchor都有[x,y,w,h]对应4个偏移量,所以reg=4kcoordinates4、全部anchors拿去训练太多了,训练程序会在合适的anchors中随机选取128个postiveanchors+128个negativeanchors进行训练第五页,共26页。一副MxN大小的矩阵送入FasterRCNN网络后,到RPN网络变为(M/16)x(N/16),不妨设W=M/16,H=N/16。在进入reshape与softmax之前,先做了1x1卷积,可以看到其num_output=18,也就是经过该卷积的输出图像为WxHx18大小。这也就刚好对应了featuremaps每一个点都有9个anchors,同时每个anchors又有可能是foreground和background,所有(suǒyǒu)这些信息都保存WxHx(9x2)大小的矩阵。后面接softmax分类获得foregroundanchors,也就相当于初步提取了检测目标候选区域box(一般认为目标在foregroundanchors中)。那么为何要在softmax前后都接一个reshapelayer?其实只是为了便于softmax分类,至于具体原因这就要从caffe的实现形式说起了在caffe基本数据结构blob中以如下形式保存数据:blob=[batch_size,channel,height,width]对应至上面的保存bg/fganchors的矩阵,其在caffeblob中的存储形式为[1,2*9,H,W]。而在softmax分类时需要进行fg/bg二分类,所以reshapelayer会将其变为[1,2,9*H,W]大小,即单独“腾空”出来一个维度以便softmax分类,之后再reshape回复原状。第六页,共26页。boundingboxregression原理(yuánlǐ)如图所示绿色框为飞机的GroundTruth(GT),红色为提取的foregroundanchors,那么即便红色的框被分类器识别为飞机,但是由于红色的框定位不准,这张图相当于没有正确的检测出飞机。所以我们希望采用一种方法对红色的框进行微调,使得(shǐde)foregroundanchors和GT更加接近。对于窗口一般(yībān)使用四维向量(x,y,w,h)表示,分别表示窗口的中心点坐标和宽高。对于上图,红色的框A代表原始的ForegroundAnchors,绿色的框G代表目标的GT,我们的目标是寻找一种关系,使得输入原始的anchorA经过映射得到一个跟真实窗口G更接近的回归窗口G',即:给定anchorA=(Ax,Ay,Aw,Ah),GT=[Gx,Gy,Gw,Gh],寻找一种变换F:使得F(Ax,Ay,Aw,Ah)=(G'x,G'y,G'w,G'h),其中(G'x,G'y,G'w,G'h)≈(Gx,Gy,Gw,Gh)。第七页,共26页。第八页,共26页。ProposalLayer负责综合所有[dx(A),dy(A),dw(A),dh(A)]变换量和foregroundanchors,计算出精准的proposal,送入后续RoIPoolingLayer。ProposalLayer有3个输入:fg/bganchors分类器结果rpn_cls_prob_reshape,对应的bboxreg的[dx(A),dy(A),dw(A),dh(A)]变换量rpn_bbox_pred,以及im_info;另外还有参数feat_stride=16。首先(shǒuxiān)解释im_info。对于一副任意大小PxQ图像,传入FasterRCNN前首先(shǒuxiān)reshape到固定MxN,im_info=[M,N,scale_factor]则保存了此次缩放的所有信息。然后经过ConvLayers,经过4次pooling变为WxH=(M/16)x(N/16)大小,其中feature_stride=16则保存了该信息,用于计算anchor偏移量进ProposalLayerforward(caffelayer的前传函数)按照以下(yǐxià)顺序依次处理:1、生成anchors,利用[dx(A),dy(A),dw(A),dh(A)]对所有的anchors做bboxregression回归(这里的anchors生成和训练时完全一致)2、按照输入的foregroundsoftmaxscores由大到小排序anchors,提取前pre_nms_topN(e.g.6000)个anchors,即提取修正位置后的foregroundanchors。3、利用im_info将fganchors从MxN尺度映射回PxQ原图,判断fganchors是否大范围超过边界,剔除严重超出边界fganchors。4、进行nms(nonmaximumsuppression,非极大值抑制)5、再次按照nms后的foregroundsoftmaxscores由大到小排序fganchors,提取post_nms_topN(e.g.300)结果作为proposal输出。第九页,共26页。之后输出proposal=[x1,y1,x2,y2],注意,由于在第三步中将anchors映射回原图判断是否超出边界,所以这里输出的proposal是对应MxN输入图像尺度的RPN网络结构就介绍到这里,总结起来就是:生成(shēnɡchénɡ)anchors->softmax分类器提取fganchors
->bboxreg回归fganchors->ProposalLayer生成(shēnɡchénɡ)proposals而RoIPooling层则负责收集proposal,并计算出proposalfeaturemaps,送入后续网络(wǎngluò)。从前面图中可以看到Rolpooling层有2个输入:1、原始的featuremaps2、RPN输出的proposalboxes(大小各不相同)传统的CNN(AlexNet,VGG等)对于输入图像尺寸不固定采用的方法一般为上图两种方式(fāngshì),可以看到无论采取那种办法都不好,要么crop后破坏了图像的完整结构,要么warp破坏了图像原始形状信息,所以FasterRCNN中提出了RoIPooling解决这个问题(RoIPooling是从SPP发展而来)第十页,共26页。RoIPoolinglayerforward过程:在之前有明确提到:proposal=[x1,y1,x2,y2]是对应MxN尺度的,所以首先使用spatial_scale参数将其映射回(M/16)x(N/16)大小的featuremaps尺度;之后将每个proposal水平和竖直都分为7份,对每一份都进行maxpooling处理。这样处理后,即使大小不同(bùtónɡ)的proposal,输出结果都是7x7大小,实现了fixed-lengthoutput(固定长度输出)。第十一页,共26页。ClassificationClassification部分利用已经获得的proposalfeaturemaps,通过FC层与softmax计算每个proposal具体属于(shǔyú)那个类别(如人,车,电视等),输出cls_prob概率向量;同时再次利用boundingboxregression获得每个proposal的位置偏移量bbox_pred,用于回归更加精确的目标检测框。Classification部分网络结构如图从PoIPooling获取到7x7=49大小的proposalfeaturemaps后,送入后续网络,可以看到做了如下两件事:1、通过全连接和softmax对proposals进行分类(fēnlèi)。2、再次对proposals进行boundingboxregression,获取更高精度的rectbox第十二页,共26页。FasterRCNN训练(xùnliàn)FasterCNN的训练,是在已经训练好的model(如VGG_CNN_M_1024,VGG,ZF)的基础上继续进行训练。实际中训练过程分为(fēnwéi)6个步骤:1、在已经训练好的model上,训练RPN网络,对应stage1_rpn_train.pt2、利用步骤1中训练好的RPN网络,收集proposals,对应rpn_test.pt3、第一次训练FastRCNN网络,对应stage1_fast_rcnn_train.pt4、第二训练RPN网络,对应stage2_rpn_train.pt5、再次利用步骤4中训练好的RPN网络,收集proposals,对应rpn_test.pt6、第二次训练FastRCNN网络,对应stage2_fast_rcnn_train.ptZFNet第十三页,共26页。训练(xùnliàn)RPN网络在该步骤中,首先读取RBG提供的预训练好的model(这里(zhèlǐ)使用VGG),开始迭代训练。来看看stage1_rpn_train.pt网络结构,如图第十四页,共26页。与检测网络类似的是,依然(yīrán)使用ConvLayers提取featuremaps。整个网络使用的Loss如下:上述公式中,i表示anchorsindex,pi表示foregroundsoftmax
predict概率,pi*代表对应的GTpredict概率(即当第i个anchor与GT间IoU>0.7,认为是该anchor是foreground,pi*=1;反之IoU<0.3时,认为是该anchor是background,pi*=0;至于那些0.3<IoU<0.7的anchor则不参与训练);t代表predictboundingbox,t*代表对应foregroundanchor对应的GTbox。可以看到,整个Loss分为2部分:1、clsloss,即rpn_cls_loss层计算的softmaxloss,用于分类anchors为forground与background的网络训练2、regloss,即rpn_loss_bbox层计算的soomthL1loss,用于boundingboxregression网络训练。注意(zhùyì)在该loss中乘了pi*,相当于只关心foregroundanchors的回归(其实在回归中也完全没必要去关心background)第十五页,共26页。由于在实际过程中,Ncls和Nreg差距过大,用参数λ平衡二者(如Ncls=256,Nreg=2400时设置(shèzhì)λ=10),使总的网络Loss计算过程中能够均匀考虑2种Loss。这里比较重要是Lreg使用的soomthL1loss,计算公式如下:1、在RPN训练阶段,rpn-data(pythonAnchorTargetLayer)层会按照和test阶段Proposal层完全一样(yīyàng)的方式生成Anchors用于训练
2、对于rpn_loss_cls,输入的rpn_cls_scors_reshape和rpn_labels分别对应p与p*,Ncls参数隐含在p与p*的caffeblob的大小中3、对于rpn_loss_bbox,输入的rpn_bbox_pred和rpn_bbox_targets分别对应t于t*,rpn_bbox_inside_weigths对应p*,rpn_bbox_outside_weights对应λ,Nreg同样隐含在caffeblob大小中第十六页,共26页。通过(tōngguò)训练好的RPN网络收集proposals利用之前的RPN网络,获取proposalrois,同时获取foregroundsoftmaxprobability,如下图,然后(ránhòu)将获取的信息保存在pythonpickle文件中第十七页,共26页。训练(xùnliàn)FastRCNN网络读取之前保存的pickle文件,获取proposals与foreground
probability。从data层输入网络。然后:1、将提取的proposals作为rois传入网络,如下(rúxià)图蓝框2、将foreground
probability作为bb
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年揭阳市市直卫生健康事业单位赴外地院校公开招聘工作人员备考题库及答案详解参考
- 广西壮族自治区工业和信息化厅直属部分科研事业单位2025年度公开招聘工作人员备考题库及一套答案详解
- 2025年日喀则市人民医院关于面向社会招聘编制外医务人员的备考题库及完整答案详解1套
- 2025年池州东至县医疗保障局所属事业单位公开选调工作人员备考题库及一套参考答案详解
- 2型糖尿病合并肾病患者的肺炎疫苗策略
- 2025年石家庄精英全托学校公开招聘84名教师及工作人员备考题库及答案详解参考
- 2025年林西县公开招聘专职消防员备考题库及参考答案详解一套
- 2025年山东土地资本投资集团有限公司招聘11人备考题库及答案详解1套
- 2025年西安交通大学第一附属医院重症肾脏病·血液净化科招聘劳务派遣制助理护士备考题库及答案详解参考
- 2025年光伏组件清洗节水设计优化报告
- 食叶草种植可行性报告
- 落叶清扫压缩机设计答辩
- 广东省建筑装饰装修工程质量评价标准
- 珍爱生命活在当下-高一上学期生命教育主题班会课件
- 湖北省武汉市洪山区2023-2024学年八年级上学期期末数学试题
- 应用写作-终结性考核-国开(SC)-参考资料
- 场地租凭转让合同协议书
- 口腔科科室建设规划
- 动物活体成像技术
- 新教科版科学四年级上册分组实验报告单
- 雷达截面与隐身技术课件
评论
0/150
提交评论