计算机系统应用教程网站

网站首页 > 技术文章 正文

目标检测RCNN系列总结 目标检测nms

btikc 2024-10-15 09:00:56 技术文章 13 ℃ 0 评论

●输入一张多目标图像,采用selective search算法提取约2000个建议框;

●先在每个建议框周围加上16个像素值为建议框像素平均值的边框,再直接变形为227×227的大小;

●先将所有建议框像素减去该建议框像素平均值后【预处理操作】,再依次将每个227×227的建议框输入AlexNet CNN网络获取4096维的特征【比以前的人工经验特征低两个数量级】,2000个建议框的CNN特征组合成2000×4096维矩阵;

●将2000×4096维特征与20个SVM组成的权值矩阵4096×20相乘【20种分类,SVM是二分类器,则有20个SVM】,获得2000×20维矩阵表示每个建议框是某个物体类别的得分;

●分别对上述2000×20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些建议框;●分别用20个回归器对上述20个类别中剩余的建议框进行回归操作,最终得到每个类别的修正后的得分最高的bounding box。

●1. 使用 Efficient Graph-Based ImageSegmentation【1】的方法获取原始分割区域R={r1,r2,…,rn}

● 2. 初始化相似度集合S=?

● 3. 计算两两相邻区域之间的相似度(见第三部分),将其添加到相似度集合S中

● 4. 从相似度集合S中找出,相似度最大的两个区域ri和rj,将其合并成为一个区域 rt,从相似度集合中除去原先与ri和rj相邻区域之间计算的相似度,计算rt与其相邻区域(原先与ri或rj相邻的区域)的相似度,将其结果添加的到相似度集合S中。同时将新区域rt添加到 区域集合R中。

●5. 获取每个区域的Bounding Boxes,这个结果就是物体位置的可能结果L

各向同性缩放

  • 第一列是在原始图片中先将box进行扩展成正方形,然后进行裁剪,如果扩展到了图片的外边界,则用box里面的颜色均值填充,

  • 第二列先将box里面的图片裁剪出来,然后用颜色均值填充成正方形,进行裁剪

各向异性缩放

  • 第三列直接缩放,不管扭曲与否

最后发现,在box周围进行16pixel的padding之后,进行各向异性缩放精度最高

直接用alexnet的网络,用ILSVRC2012预训练得到的超参数,作为初始参数值。

然后用2000个建议框进行处理的图片,对预训练的cnn模型进行fine tuning,将最后一层替换成(N+1)个神经元进行输出,n个分类,1个背景,这一层随机初始化参数,其它层参数不变,然后进行SGD训练。

最后用svm进行物体分类

图中省略了通过ss获得proposal的过程

  • 第一张图中红框里的内容即为通过ss提取到的proposal

  • 中间的一块是经过深度卷积之后得到的conv feature map,图中灰色的部分就是我们红框中的proposal对应于conv feature map中的位置

  • 之后对这个特征经过ROI pooling layer处理,之后进行全连接。

  • 在这里得到的ROI feature vector最终被分享,一个进行全连接之后用来做softmax回归,用来进行分类,另一个经过全连接之后用来做bbox回归。

ROI就是候选框在特征图上的映射

●可以简单看作RPN网络+FastR-CNN网络。

●首先向CNN网络【ZF或VGG-16】输入任意大小图片;

●经过CNN网络前向传播至最后共享的卷积层,一方面得到供RPN网络输入的特征图,另一方面继续前向传播至特有卷积层,产生更高维特征图;

●供RPN网络输入的特征图经过RPN网络得到区域建议和区域得分,并对区域得分采用非极大值抑制【阈值为0.7】,输出其Top-N【文中为300】得分的区域建议给RoI池化层;

●第2步得到的高维特征图和第3步输出的区域建议同时输入RoI池化层,提取对应区域建议的特征;

●第4步得到的区域建议特征通过全连接层后,输出该区域的分类得分以及回归后的bounding-box。

●RPN的作用:RPN在CNN卷积层后增加滑动窗口操作以及两个卷积层完成区域建议功能,第一个卷积层将特征图每个滑窗位置编码成一个特征向量,第二个卷积层对应每个滑窗位置输出k个区域得分和k个回归后的区域建议,并对得分区域进行非极大值抑制后输出得分Top-N【文中为300】区域,告诉检测网络应该注意哪些区域,本质上实现了Selective Search、EdgeBoxes等方法的功能。

●首先套用ImageNet上常用的图像分类网络,本文中试验了两种网络:ZF或VGG-16,利用这两种网络的部分卷积层产生原始图像的特征图;

●对于1中特征图,用n×n【论文中设计为3×3,n=3看起来很小,但是要考虑到这是非常高层的feature map,其size本身也没有多大,因此9个矩形中,每个矩形窗框都是可以感知到很大范围的】的滑动窗口在特征图上滑动扫描【代替了从原始图滑窗获取特征】,每个滑窗位置通过卷积层1映射到一个低维的特征向量【ZF网络:256维;VGG-16网络:512维,低维是相对于特征图大小W×H,typically~60×40=2400】后采用ReLU,并为每个滑窗位置考虑k种【论文中k=9】可能的参考窗口【论文中称为anchors,见下解释】,这就意味着每个滑窗位置会同时预测最多9个区域建议【超出边界的不考虑】,对于一个W×H的特征图,就会产生W×H×k个区域建议;

●Anchors是一组大小固定的参考窗口:三种尺度{ 1282,2562,51221282,2562,5122 }×三种长宽比{1:1,1:2,2:1},如下图所示,表示RPN网络中对特征图滑窗时每个滑窗位置所对应的原图区域中9种可能的大小,相当于模板,对任意图像任意滑窗位置都是这9中模板。继而根据图像大小计算滑窗中心点对应原图区域的中心点,通过中心点和size就可以得到滑窗位置和原图位置的映射关系,由此原图位置并根据与Ground Truth重复率贴上正负标签,让RPN学习该Anchors是否有物体即可。对于每个滑窗位置,产生k=9个anchor对于一个大小为W*H的卷积feature map,总共会产生WHk个anchor

●步骤2中的低维特征向量输入两个并行连接的卷积层2:reg窗口回归层【位置精修】和cls窗口分类层,分别用于回归区域建议产生bounding-box【超出图像边界的裁剪到图像边缘位置】和对区域建议是否为前景或背景打分,这里由于每个滑窗位置产生k个区域建议,所以reg层有4k个输出来编码【平移缩放参数】k个区域建议的坐标,cls层有2k个得分估计k个区域建议为前景或者背景的概率。

文中通过4步训练算法,交替优化学习:

●进行上面RPN网络预训练,和以区域建议为目的的RPN网络end-to-end微调训练。●进行上面FastR-CNN网络预训练,用第①步中得到的区域建议进行以检测为目的的Fast R-CNN网络end-to-end微调训练【此时无共享卷积层】。

●使用第2步中微调后的FastR-CNN网络重新初始化RPN网络,固定共享卷积层【即设置学习率为0,不更新】,仅微调RPN网络独有的层【此时共享卷积层】。

●固定第3步中共享卷积层,利用第③步中得到的区域建议,仅微调Fast R-CNN独有的层,至此形成统一网络如上图所示。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表