R-CNN 也是在2013年提出的,比 OverFeat 晚了点。然而,这种基于区域的方法最终以其两阶段的框架,即 region proposal 阶段和区域分类与精细化阶段,引发了目标检测研究的大浪潮。
源自论文“Region-based Convolutional Networks for Accurate Object Detection and Segmentation”
在上图中,R-CNN 首先使用一种称为selective search的技术从输入图像中提取出感兴趣的潜在区域。selective search并不真正尝试理解前景目标,相反,它依靠启发式方法对相似的像素进行分组: 相似的像素通常属于同一个目标。因此,selective search的结果很有可能包含一些有意义的内容。接下来,R-CNN 将这些 region proposals 变换成带有一些填充的固定大小的图像,并将这些图像提供给网络的第二阶段,以便进行更细粒度的识别。与那些使用selective search的旧方法不同,R-CNN 在第二阶段将 HOG 替换为 CNN,从所有 region proposals 中提取特征。这种方法需要注意的是,许多 region proposals 实际上并不是一个完整的目标,因此 R-CNN 不仅需要学习如何对包含的类别进行分类,还需要学习如何拒绝负类。为了解决这个问题,R-CNN 将所有与一个ground truth框重叠度≥0.5 IoU 的 region proposal 视为正,其余视为负。
selective search 的 region proposal 高度依赖于相似性假设,因此只能提供大致的位置估计。为了进一步提高定位精度,R-CNN 借鉴了“Deep Neural Networks for Object Detection”(又名 DetectorNet)的思想,引入了额外的边界框回归来预测框的中心坐标、宽度和高度。这种回归器被广泛应用于未来的目标检测器中。
然而,像 R-CNN 这样的两阶段检测器存在两个大问题: 1) selective search并不是卷积,因为它不是端到端可训练的。2) region proposal 阶段与 OverFeat 等其他单阶段检测器相比通常非常慢,而且在每个 region proposal上分别运行会使其更慢。稍后,我们将看到 R-CNN 如何随着时间的推移逐步演变以解决这两个问题的。
2015: Fast R-CNN
Fast R-CN
源自论文“Fast R-CNN”
R-CNN 的一个快速后续是减少对多个 region proposals 的重复卷积。由于这些 region proposals 都来自一个图像,自然而然地想到,可以通过对整个图像运行一次 CNN,并在许多 region proposals 之间共享计算,来改进 R-CNN。然而,不同的 region proposals 有不同的大小,如果我们使用相同的 CNN 特征提取器,会导致不同的输出特征图大小。这些具有不同大小的特征图将阻止我们使用全连接层进行进一步的分类和回归,因为全连接层的输入只能是固定大小。
幸运的是,论文“Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition”解决了全连接层的动态缩放问题。在 SPPNet 中,在卷积层和 FC 层之间引入了特征金字塔池化,以创建bag-of-words式的特征向量。这个向量有固定的大小和不同尺度的特征特征,所以我们的卷积层现在可以接受任意尺寸的图像作为输入,而不用担心 FC 层的不兼容性。受此启发,Fast R-CNN 提出了一个类似的层称为 ROI Pooling 层。这个池化层将不同大小的特征图 downsample 为一个固定大小的向量。这样我们就可以使用相同的 FC 层进行分类和框回归,不管 ROI 是大还是小。
Fast R-CNN 由于采用了共享特征提取器和尺度不变(scale-invariant)的 ROI 池化层,达到类似的定位精度,训练快了10 ~ 20倍,且推理快了100 ~ 200倍。接近实时推理和一个更易用的端到端检测部分训练协议使Fast R-CNN 成为业界的热门选择。
2015: Faster R-CNN
Faster R-CNN: 通过Region Proposal Networks实现实时目标检测
正如我们上面介绍的,在2015年初,Ross Girshick 提出了一个改进版本的 R-CNN,称为 Fast R-CNN,对建议的区域使用共享的特征提取器。仅仅几个月后,Ross和他的团队又带着另一个改进回来了。这个新的网络Faster R-CNN 不仅比以前的版本更快,而且标志着目标检测深度学习方法的一个里程碑。
源自论文“Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks”
有了 Fast R-CNN,网络中唯一的非卷积部分就是 selective search 的 region proposal了。2015年,研究人员开始意识到深层神经网络是如此神奇,只要有足够的数据,它就可以学习任何东西。那么,是否有可能训练一个 region proposal 的神经网络,而不是依赖于 selective search 等启发式和手工的方法?Faster R-CNN 遵循这个方向和思路,并成功地创建了Region Proposal Network(RPN)。简单地说,RPN 是一个 CNN,以图像作为输入,并输出一组矩形目标建议,每个都有一个 objectiveness 得分。论文最初使用的是 VGG,但其他主干网络如 ResNet 后来变得更加普及。为了生成 region proposals,在 CNN 特征图输出上应用一个3x3滑动窗口每个位置生成2个得分(前景和背景)和4个坐标值。实际上,这个滑动窗口是用一个带有1x1卷积核的3x3卷积核来实现的。
为了理解为什么单阶段检测器通常不如两阶段检测器好,RetinaNet 研究了单阶段检测器密集预测的前景-背景类不均衡问题。以 YOLO 为例,它试图同时预测所有可能位置的类和边界框,因此在训练过程中大多数输出与负类相匹配。SSD 通过 hard example mining解决了这个问题。在训练的早期阶段,YOLO 使用objectiveness评分隐式训练前景分类器。RetinaNet认为他们都没有找到解决问题的关键,所以它发明了一种新的损失函数,称为Focal Loss,以帮助网络学习什么是真正重要的。
源自论文“Focal Loss for Dense Object Detection”
Focal Loss 增加了一个指数 γ (他们称之为聚焦参数)的交叉熵损失。自然,随着置信度分数的增加,损失值会比正常的交叉熵值低得多。参数 α 用于平衡这种聚焦效应。
1 Pierre Sermanet, David Eigen, Xiang Zhang, Michael Mathieu, Rob Fergus, Yann LeCun, OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks2 Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik, Region-based Convolutional Networks for Accurate Object Detection and SegmentationRoss Girshick, Fast R-CNN3 Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi, You Only Look Once: Unified, Real-Time Object Detection4 Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang Fu, Alexander C. Berg, SSD: Single Shot MultiBox Detector5 Shaoqing Ren, Kaiming He, Ross Girshick, Jian Sun, Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks6 Tsung-Yi Lin, Piotr Dollár, Ross Girshick, Kaiming He, Bharath Hariharan, Serge Belongie, Feature Pyramid Networks for Object Detection7 Tsung-Yi Lin, Priya Goyal, Ross Girshick, Kaiming He, Piotr Dollár, Focal Loss for Dense Object Detection8 Joseph Redmon, Ali Farhadi, YOLO9000: Better, Faster, Stronger9 Joseph Redmon, Ali Farhadi, YOLOv3: An Incremental Improvement
10 Yanjia Li, Dive Really Deep into YOLO v3: A Beginner’s Guide11 Xingyi Zhou, Dequan Wang, Philipp Krähenbühl, Objects as Points12 Yanjia Li, Human Pose Estimation with Stacked Hourglass Network and TensorFlow13 Kaiming He, Georgia Gkioxari, Piotr Dollár, Ross Girshick, Mask R-CNN14 Zhaowei Cai, Nuno Vasconcelos, Cascade R-CNN: Delving into High Quality Object Detection15 Mingxing Tan, Ruoming Pang, Quoc V. Le, EfficientDet: Scalable and Efficient Object Detection16 Jifeng Dai, Yi Li, Kaiming He, Jian Sun, R-FCN: Object Detection via Region-based Fully Convolutional Networks17 Yanjia Li, Witnessing the Progression in Semantic Segmentation: DeepLab Series from V1 to V3+18 Golnaz Ghiasi, Tsung-Yi Lin, Ruoming Pang, Quoc V. Le, NAS-FPN: Learning Scalable Feature Pyramid Architecture for Object Detection19 Shu Liu, Lu Qi, Haifang Qin, Jianping Shi, Jiaya Jia, Path Aggregation Network for Instance Segmentation20 Yanjia Li, 10 Papers You Should Read to Understand Image Classification in the Deep Learning Era