美文网首页
目标检测:R-CNN问题总结

目标检测:R-CNN问题总结

作者: 哎吆喂轩 | 来源:发表于2018-11-23 07:47 被阅读0次

    一、R-CNN的处理思想

      1. 采用CNN网络提取图像特征;
      1. 采用大样本下有监督预训练+小样本微调的方式解决小样本难以训练甚至过拟合等问题。

    二、测试过程

    • 1.输入一张多目标图像,采用selective search算法提取约2000个候选框;
    • 2.先在每个候选框周围加上16个像素值,作为候选框像素平均值的边框,再直接变形为227×227的大小;
    • 3.依次将每个227×227的候选框输入AlexNet CNN网络,获取4096维的特征,2000个候选框的CNN特征组合成2000×4096维矩阵;
    • 4.将2000×4096维特征与20个SVM组成的权值矩阵4096×20相乘(20种分类,SVM是二分类器,则有20个SVM),获得2000×20维矩阵表示每个候选框是某个物体类别的得分;
    • 5.分别对上述2000×20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些建议框;
    • 6.分别用20个回归器对上述20个类别中剩余的建议框进行回归操作,最终得到每个类别的修正后的得分最高的bounding box。

    三、区域合并

    1.区域合并的方法

    区域的合并方式是有层次的(hierarchical),类似于哈夫曼树的构造过程。

    哈夫曼树的构造过程

    输入:彩色图片(三通道)
    输出:物体位置的可能结果L
    1. 使用 Efficient Graph-Based Image Segmentation的方法获取原始分割区域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。

    2.相似度计算

    在区域合并时计算区域之间的相似度的四种方法:
    1. 颜色(color)相似度
    使用L1-norm归一化获取图像每个颜色通道的25 bins的直方图,这样每个区域都可以得到一个75维的向量

    ,区域之间颜色相似度通过下面的公式计算:

    在区域合并过程中使用需要对新的区域进行计算其直方图,计算方法:

    2. 纹理(texture)相似度
    这里的纹理采用SIFT-Like特征。具体做法是对每个颜色通道的8个不同方向计算方差σ=1的高斯微分(Gaussian Derivative),每个通道每个颜色获取10 bins的直方图(L1-norm归一化),这样就可以获取到一个240维的向量

    ,区域之间纹理相似度计算方式和颜色相似度计算方式类似,合并之后新区域的纹理特征计算方式和颜色特征计算相同:


    3. 大小(size)相似度
    这里的大小是指区域中包含像素点的个数。使用大小的相似度计算,主要是为了尽量让小的区域先合并:

    4. 吻合(fit)相似度
    这里主要是为了衡量两个区域是否更加“吻合”,其指标是合并后的区域的Bounding Box(能够框住区域的最小矩形(没有旋转))越小,其吻合度越高。其计算方式:

    最后将上述相似度计算方式组合到一起,可以写成如下,其中

    四、问题总结

    1. selective search
    采取过分割手段,将图像分割成小区域,再通过颜色直方图,梯度直方图相近等规则进行合并,最后生成约2000个建议框的操作。

    2. 为什么要将建议框变形为227×227?怎么做?
    本文采用AlexNet CNN网络进行CNN特征提取,为了适应AlexNet网络的输入图像大小:227×227,故将所有建议框变形为227×227。
    变形方式有一下几种:
    ① 考虑context【图像中context指RoI周边像素】的各向同性变形,建议框像周围像素扩充到227×227,若遇到图像边界则用建议框像素均值填充,下图第二列;
    ② 不考虑context的各向同性变形,直接用建议框像素均值填充至227×227,下图第三列;
    ③ 各向异性变形,简单粗暴对图像就行缩放至227×227,下图第四列;
    ④ 变形前先进行边界像素填充【padding】处理,即向外扩展建议框边界,以上三种方法中分别采用padding=0下图第一行,padding=16下图第二行进行处理;

    经过作者一系列实验表明采用padding=16的各向异性变形即下图第二行第三列效果最好,能使mAP提升3-5%。


    图片处理
    1. CNN特征如何可视化?
      文中采用了巧妙的方式将AlexNet CNN网络中Pool5层特征进行了可视化。该层的size是6×6×256,即有256种表示不同的特征,这相当于原始227×227图片中有256种195×195的感受视野【相当于对227×227的输入图像,卷积核大小为195×195,padding=4,step=8,输出大小(227-195+2×4)/8+1=6×6】;
      文中将这些特征视为”物体检测器”,输入10million的Region Proposal集合,计算每种6×6特征即“物体检测器”的激活量,之后进行非极大值抑制【下面解释】,最后展示出每种6×6特征即“物体检测器”前几个得分最高的Region Proposal,从而给出了这种6×6的特征图表示了什么纹理、结构,很有意思。
    2. 为什么要进行非极大值抑制?非极大值抑制又如何操作?
      先解释什么叫IoU。如下图所示IoU即表示(A∩B)/(A∪B)

    在测试过程完成到第4步之后,获得2000×20维矩阵表示每个建议框是某个物体类别的得分情况,此时会遇到下图所示情况,同一个车辆目标会被多个建议框包围,这时需要非极大值抑制操作去除得分较低的候选框以减少重叠框。


    具体怎么做呢?
    ① 对2000×20维矩阵中每列按从大到小进行排序;
    ② 从每列最大的得分建议框开始,分别与该列后面的得分建议框进行IoU计算,若IoU>阈值,则剔除得分较小的建议框,否则认为图像中存在多个同一类物体;
    ③ 从每列次大的得分建议框开始,重复步骤②;
    ④ 重复步骤③直到遍历完该列所有建议框;
    ⑤ 遍历完2000×20维矩阵所有列,即所有物体种类都做一遍非极大值抑制;
    ⑥ 最后剔除各个类别中剩余建议框得分少于该类别阈值的建议框。

    1. 为什么要采用回归器?回归器是什么有什么用?如何进行操作?

      首先要明确目标检测不仅是要对目标进行识别,还要完成定位任务,所以最终获得的bounding-box也决定了目标检测的精度。
      这里先解释一下什么叫定位精度:定位精度可以用算法得出的物体检测框与实际标注的物体边界框的IoU值来近似表示。

    相关文章

      网友评论

          本文标题:目标检测:R-CNN问题总结

          本文链接:https://www.haomeiwen.com/subject/ygjdqqtx.html