【目标检测】RCNN系列算法

R-CNN

  • 论文: Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentatio , R. Girshick, J. Donahue, T. Darrell and J. Malik
  • RCNN是将CNN方法引入目标检测领域,大大提高了目标检测效果,可以说改变了目标检测领域的主要研究思路
  • 紧随其后的系列文章:(RCNN), Fast RCNN, Faster RCNN

1.1 论文主要特点(相对传统方法的改进)

  • 速度:经典的目标检测算法使用滑动窗口依次判断所有可能的区域。本文则(采用Selective Search方法)预先提取一系列较可能是物体的候选区域,之后仅在这些候选区域上(采用CNN)提取特征,进行判断。
  • 训练集:经典的目标检测算法在区域中提取人工设定的特征。本文则采用深度网络进行特征提取。使用两个数据库: 一个较大的识别库(ImageNet ILSVC 2012):标定每张图片中物体的类别。一千万图像,1000类。 一个较小的检测库(PASCAL VOC 2007):标定每张图片中,物体的类别和位置,一万图像,20类。 本文使用识别库进行预训练得到CNN(有监督预训练),而后用检测库调优参数,最后在检测库上评测。

1.2 算法流程

论文图:
在这里插入图片描述

  1. 候选区域生成:给定一张输入图像,生成1K~2K个候选区域(采用Selective Search方法);
  2. 特征提取:对每个候选区域,利用CNN提取一个固定长度的特征向量;
  3. 类别判断:特征送入SVM分类器进行目标分类;
  4. 位置精修:利用回归器,精细修正候选框位置(为图像中每个识别出的对象生成更严格的边界框)。

1.2.1 Selective Search

1.2.2 CNN特征提取

a、网络结构
  • 在过去的十多年时间里,传统的机器视觉领域,通常采用特征描述子来应对目标识别任务,这些特征描述子最常见的就是 SIFT 和 HOG。( OpenCV 有现成的 API 可供大家实现相关操作)
  • 2012 年 Krizhevsky 等人在 ImageNet 举办的 ILSVRC 目标识别挑战大赛中一战成名,豪夺当年的第一名,Top5 错误率 15%,而他们团队提出来的网络结构以他们的导师名字命名,它就是 AlexNet
  • 因为 AlexNet 的出现,世人的目光重回神经网络领域,以此为契机,不断涌出各种各样的网络比如 VGG、GoogleNet、ResNet 等等。
  • 受 AlexNet 启发,论文作者尝试将 AlexNet 在 ImageNet 目标识别的能力泛化到 PASCAL VOC 目标检测上面来。
    在这里插入图片描述

AlexNet 更详细的讲解可看这篇文章:https://www.cnblogs.com/wangguchangqing/p/10333370.html

  • AlexNet 包含5个卷积层、2个全连接层;最后提取特征每个输入候选框图片都能得到一个4096维的特征向量
b、训练

参数初始化部分:目标检测的一个难点在于,标签训练数据少,如果要直接采用随机初始化CNN参数的方法,那么目前的训练数据量是远远不够的。这种情况下,最好的是采用某些方法,把参数初始化了,然后在进行有监督的参数微调,这里文献采用的是有监督的预训练。所以paper在设计网络结构的时候,是直接用Alexnet的网络,然后连参数也是直接采用它的参数,作为初始的参数值,然后再fine-tuning训练。网络优化求解时采用随机梯度下降法,学习率大小为0.001;

  • RCNN采用迁移学习
  • 提取在 ILSVRC 2012 的模型和权重,然后在 VOC 上进行 fine-tune。
  • 需要注意的是,这里在 ImageNet 上训练的是模型识别物体类型的能力,而不是预测 bbox 位置的能力。
  • ImageNet 的训练当中需要预测 1000 个类别,而 R-CNN 在 VOC 上进行迁移学习时,神经网络只需要识别 21 个类别(VOC的20个类别+背景)。
c、fine-tune
  • 假设要检测的物体类别有N类,那么我们就需要把上面预训练阶段的CNN模型的最后一层给替换掉,替换成N+1个输出的神经元(加1,表示还有一个背景) (20 + 1bg = 21),然后这一层直接采用参数随机初始化的方法,其它网络层的参数不变;接着就可以开始继续SGD训练了。
  • pool5 从 ImageNet 训练集中学习了物体的泛化能力,而能力的提升则是通过特定领域的 fine-tune。
    • 举个例子,神经网络在 ImageNet 数据集中学习到了 100 种猫的特征,而我自己的数据集只有两种猫,经过 fine-tune 训练后,这个神经网络可以更准确识别这两种猫了。

1.2.3 SVM & 位置精修

  • bbox 的值其实就是物体方框的位置,预测它就是回归问题,而不是分类问题。
  • 受 DPM 的启发,作者训练了一个线性的回归模型,这个模型能够针对候选区域的 pool5 数据预测一个新的 box 位置。

对每一类目标,使用一个线性脊回归器进行精修。输入为深度网络pool5层的4096维特征,输出为xy方向的缩放和平移。

在这里插入图片描述

1.3 RCNN的问题

从上述内容可以了解到RCNN是如何进行目标检测的,但这种技术有其自身的局限性。以下原因使得训练RCNN模型既昂贵又缓慢:

  • 基于选择性搜索算法为每个图像提取2,000个候选区域;

  • 使用CNN为每个图像区域提取特征;

  • RCNN整个物体检测过程用到三种模型:

    • CNN模型用于特征提取;
    • 线性svm分类器用于识别对象的的类别;
    • 回归模型用于收紧边界框;

这些过程相结合使得RCNN非常慢,对每个新图像进行预测需要大约 40 - 50 秒,这实际上使得模型在面对巨大的数据集时变得复杂且几乎不可能应用。
好消息是存在另一种目标检测技术,它解决了RCNN中大部分问题。


2 了解Fast RCNN

2.1 Fast RCNN 思想

  • RCNN的提出者Ross Girshick提出了这样的想法,即每个图像只运行一次CNN,然后找到一种在2,000个区域内共享该计算的方法。
  • 在Fast RCNN中,将输入图像馈送到CNN,CNN生成卷积特征映射。使用这些特征图提取候选区域。然后,使用RoI池化层将所有建议的区域重新整形为固定大小,以便将其馈送到全连接网络中。
    1. 首先将图像作为输入;
    2. 将图像传递给卷积神经网络,生成感兴趣的区域;
    3. 在所有的感兴趣的区域上应用RoI池化层,并调整区域的尺寸。然后,每个区域被传递到全连接层的网络中;
    4. softmax层用于全连接网以输出类别。与softmax层一起,也并行使用线性回归层,以输出预测类的边界框坐标。

因此,Fast RCNN算法中没有使用三个不同的模型,而使用单个模型从区域中提取特征,将它们分成不同的类,并同时返回所标识类的边界框。

在这里插入图片描述

可视化上述步骤

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 上述过程说明了Fast RCNN是如何解决RCNN的两个主要问题,即将每个图像中的1个而不是2,000个区域传递给卷积神经网络,并使用一个模型来实现提取特征、分类和生成边界框。

2.2 Fast RCNN的问题

Fast RCNN也存在一定的问题,它仍然使用 Selective Search 作为查找感兴趣区域的提议方法,这是一个缓慢且耗时的过程,每个图像检测对象大约需要2秒钟。

因此,又开发了另一种物体检测算法——Faster RCNN


3 了解Faster RCNN

3.1 Faster RCNN的思想

  • Faster RCNN是Fast RCNN的修改版本,二者之间的主要区别在于,Fast RCNN使用选择性搜索来生成感兴趣区域,而Faster RCNN使用“区域提议网络”,即RPN。RPN将图像特征映射作为输入,并生成一组提议对象,每个对象提议都以对象分数作为输出。

  • 算法步骤:

    1. 将图像作为输入并将其传递给卷积神经网络,后者返回该图像的特征图;
    2. 在这些特征图上应用RPN,返回提议对象及其分数;
    3. 在这些提议对象上应用RoI池层,以将所有提案降低到相同的大小;
    4. 最后,将提议传递到全连接层,该层在其顶部具有softmax层和线性回归层,以对对象的边界框进行分类和输出;
      在这里插入图片描述

……未完待续


4 总结

算法特征预测时间限制
CNN将图像分成多个区域,将每个区域分类为不同的类别-需要很多区域来准确预测,因此计算时间长
RCNN使用选择性搜索生成区域,从每个图像中提取大约2000个区域40-50秒每个区域分别传递给CNN的计算时间也很长,且使用三种不同的模型进行预测
Fast RCNN每个图像只传递一次到CNN,并提取特征图。在特征图上使用选择性搜索来生成预测。将RCNN中使用的所有三种模型组合在一起2秒选择性搜索很慢,因此计算时间仍然很长
Faster RCNN用区域提议网络替换选择性搜索方法,使算法更快0.2秒对象提议需要时间,并且由于不同的系统一个接一个地工作,系统的性能取决于先前系统的表现效果

Reference:

  1. A Step-by-Step Introduction to the Basic Object Detection Algorithms (Part 1)
  2. 深度学习目标检测系列:RCNN系列算法图解
  3. RCNN- 将CNN引入目标检测的开山之作
  4. 【深度学习】R-CNN 论文解读及个人理解
  5. R. Girshick, J. Donahue, T. Darrell and J. Malik, “Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation,” 2014 IEEE Conference on Computer Vision and Pattern Recognition, Columbus, OH, 2014, pp. 580-587, doi: 10.1109/CVPR.2014.81.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值