R-CNN

R-CNN

1.什么是目标检测

所谓目标检测就是在一张图像中找到我们关注的目标,并确定它的类别和位置,这是计算机视觉领域最核心的问题之一。由于各类目标不同的外观,颜色,大小以及在成像时光照,遮挡等具有挑战性的问题,目标检测一直处于不断的优化和研究中。

2.目标检测算法分类

  • 一阶算法(one stage)

    先生成区域候选框,再通过卷积神经网络进行分类和回归修正,常见算法RCNN,SPPNet,Fast RCNN,Faster RCNN 和RFCN等。二阶算法检测结果更精确。
  • 二阶算法(two stage)
    不生成候选框,直接在网络中提取特征来预测物体的分类和位置。常见算法有SSD,YOLO系列和Retina等。一阶算法检测速度更块

3.RCNN简介

R-CNN可以说是利用深度学习进行目标检测的开山之作。作者Ross Girshick多次在PASCAL VOC的目标检测竞赛中折桂,曾在2010年带领团队获得终身成就奖。
论文:Rich feature hierarchies for accurate object detection and semantic segmentation

4.RCNN基本流程

(1).输入图像

(2).用selective search 生成1K-2K个候选框(一张图像) 缩放成227×227正方形

(3).对每个候选区域,逐一喂到卷积神经网络提取特征4096维

(4).用SVMs分类器进行分类,判断是否属于该类(20个类别就有20个SVMs)

(5)使用回归其精细修正候选框的位置

R-CNN_第1张图片

R-CNN_第2张图片

5.过程详解

  • 1.候选区域的生成

  • 利用Selective Search算法通过图像分割的方法得到一些原始区域,然后使用一些合并策略将这些区域合并,得到一个层次化的区域结构,而这些结构就包含着可能需要的物体。

    R-CNN_第3张图片

  • 2.对每个候选区域,使用深度网络提取特征

    将2000候选区域缩放到227x227pixel,接着将候选区域输入事先训练好的AlexNet CNN网络获取4096维的特征得到2000×4096维矩阵。

    R-CNN_第4张图片

-3.特征送入每一类的SVM分类器,判定类别。

将2000×4096维特征与20个SVM组成的权值矩阵4096×20相乘,获得2000×20维矩阵表示每个建议框是某个目标类别的得分。分别对上述2000×20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些建议框。

R-CNN_第5张图片

**举例理解:**2096×20矩阵中第一列表示猫的权重,第二列表示狗的权重,在2000×20的矩阵中,第一行第一列表示2000×4096矩阵中第一个候选框为猫的分数,第二行第一列表示2000×4096矩阵中第二个候选框为猫的分数。

  • 4.使用回归其精修候选区域的位置

通过 Selective Search算法得到的候选区域位置不一定准确,因此用20个回归器对上述20个类别中剩余的建议框进行回归操作,最终得到每个类别的修正后的目标区域。具体实现如下:

如图,黄色框表示候选区域 Region Proposal,绿色窗口表示实际区域Ground Truth(人工标注的),红色窗口表示 Region Proposal 进行回归后的预测区域,可以用最小二乘法解决线性回归问题。

通过回归器可以得到候选区域的四个参数,分别为:候选区域的x和y的偏移量,高度和宽度的缩放因子。可以通过这四个参数对候选区域的位置进行精修调整,就得到了红色的预测区域。

R-CNN_第6张图片

6.非极大值抑制

非极大值抑制剔除重叠建议框的具体实现方法是:

R-CNN_第7张图片

  • 第一步:定义IOU指数,即(A∩B)/(A∪B),即AB的重合区域面积与AB总面积之比,直观上来讲IOU就是表示AB重合的比率,IOU越大说明AB的重合部分占比越大,即A和B越相似
  • 第二步:找到每一类中2000个候选区域中概率最高的区域,计算其他区域与该区域的IOU值,删除所有IOU值大于阈值的候选区域,这样可以只保留少数重合率比较低的后续那区域,去掉重复区域

    举例理解:

    如下图所示,A是向日葵类对应的所有候选框中概率最大的区域,B是另一个区域,计算AB的IOU,其结果大于阈值,那么就认为AB属于同一类(即都是向日葵),所以应该保留A,删除B。

    R-CNN_第8张图片

7.R-CNN存在的问题

  • 1.测试速度慢:
    测试一张图片约53s,用Selective算法提取候选框用时约2s,一张图像内候选框之间存在大量重叠,提取特征操作冗余。
  • 2.训练速度慢:
    过程及其繁琐
  • 3.训练所需空间大:
    对于SVM和bbox回归训练,需要从每个图像中的每个目标候选框提取特征,并写入磁盘。对于非常深的网络,如VGG16,从VOC07训练集上的5k图像上提取的特征需要数百GB的存储空间。

8.改进R-CNN

提取候选框:EdgeBoxes、RPN网络

  • 共享卷积运算:SPPNet、Fast R CNN
  • 兼容任意尺寸图像:SPP、ROI Pooling
  • 预设长宽比:Anchor
  • 网络结构:端到端-FasterRCNN
  • 融合各层特征:FPN

9.产生候选框 Selective Search

  • 可视化能够使得某个feature map的某个值最大化的原始候选框

10.回归

  • 对候选框进行精调,得到一系列偏移量,得出准确的候选框
    R-CNN_第9张图片
    黄色拟合蓝色,得出准确的候选框

你可能感兴趣的:(深度学习-目标检测篇,r语言,cnn,深度学习)