上一章:深度篇——目标检测史(一) 关于 古典 目标检测
下一章:深度篇——目标检测史(三) 细说 SPP-Net 目标检测
论文地址:《Rich feature hierarchies for accurate object detection and semantic segmentation》
本小节,细说 R-CNN 目标检测,下一小节细说 SPP-Net 目标检测
二. R-CNN 目标检测 (2013年)
1. R-CNN (Region-based Convolutional Neural Networks, R-CNN) 基于区域的卷积神经网络,是一种结合区域提名(Region Proposal) 和 卷积神经网络 (CNN) 的目标检测方法。R-CNN 是 Ross Girshick 在 2013 年发布的。Ross Girshick 作为这个领域的开山鼻祖,总是神一样的存在,R-CNN,Fast R-CNN,Faster R-CNN,YOLO 都和他有关。其实在 R-CNN 之前已经有很多研究者在尝试用 Deep learning 的方法来做目标检测,包括 OverFeast,但 R-CNN 是第一个真正可以工业级应用的解决方案。
2. 深度学习相关的目标检测方法看大致分为两派:
(1). 基于区域提名
如 R-CNN,SPP-Net,Fast R-CNN,Faster R-CNN,R-FCN
(2). 端到端 (end-to-end)
无需区域提名,如 SSD,YOLO,CornerNet 等
3. R-CNN 的主要步骤
(1). Region proposal 区域提名
通过 selective search 从原始图像中提取 2k 个左右 bounding boxes 区域候选框
(2). 区域大小归一化
把所有 bounding boxes 候选框 缩放成固定大小的 图像 (原文采用 227 x 227)。
(3). 特征提取
通过 CNN 网络,提取特征
(4). 分类与回归
在特征层的基础上添加两个全连接层,再用 SVM 分类来做识别,用线性回归来微调边框位置与大小,其中每个类别单独训练一个边框分类器。
4. R-CNN 流程图
另一种角度观察如下:
上图中的 Warped image regions,是区域大小归一化,会将 bounding boxe 框内的信息,通过 crop 或 warp,全都处理为相同尺寸。这就导致了一些图像会被拉伸变形,导致图像失真。
还有,就是单独对每个 大小归一化后的图像 进行卷积操作,由于 bounding boxes 大概 2k 左右个,而且,有很可能都有重合的,这就导致在提取特征的过程中,会有许多重复操作,并且非常消耗时间资源和空间资源。
再有,SVM 适合处理有限的数据,如果数据海量,则很容易超出 SVM 的能力范围。计算量过大,模型过大,效率过低。
5. R-CNN 与 古典目标检测 的区别,只是使用 CNN 卷积提取特征,替代了 HOG 特征 + bag-of-words 特征 等提取的过程。就这些改动,使得 R-CNN 在 ILSVRC2013 检测数据中,获得了 31.4% mAP 这样的好成绩。相对于以前那些最好的结果 24.3% mAP 有了巨大的提升。并且,也第一次引起人们的注意,CNN 提取图像特征,具有非凡的能力。从此,图像处理,基本使用 CNN 来提取特征。
尽管 R-CNN 对于后来者来说,有这样那样的不足。但是,在当时,却是一个很好的检测器,效果也是蛮好的
6. R-CNN 的缺点
(1). 重复计算
R-CNN 虽然不再是穷举,但依然有 2k 个左右的 bounding boxes,这些 bounding boxes 都需要进行 CNN 操作,计算量依然很大,其中有不少其实是重复计算
(2). SVM 模型
还有线性模型,在标注数据不缺的时候,显然不是最好的选择。
(3). 训练测试分为多步
region proposal,特征提取、分类、回归都是断开的训练过程,中间数据还需要单独保存。训练分为多个阶段,不在繁琐。微调网络 + 训练 SVM + 训练边框回归器
(4). 训练的空间和时间代价很高
卷积处理的特征要先存在硬盘上,这些特征需要 几百 G 的存储空间。保存和读取的过程,都需要消耗时间和资源。
(5). 慢
前面的缺点最终导致 R-CNN 出奇的慢,GPU 上处理一张图像需要 13s,CPU 上则需要 53s。
(6). 区域大小归一化,会对目标进行 crop 或 warp 非等比例缩放,导致 大小归一化 得到的目标变形 或 缺失部分信息,和真实目标产生一定的差距,这会在后面训练和测试的时候,导致其准确率下降。
上一章:深度篇——目标检测史(一) 关于 古典 目标检测
下一章:深度篇——目标检测史(三) 细说 SPP-Net 目标检测