深度学习第25讲:目标检测算法经典论文研读之R-CNN

       正如笔者在上一篇目标检测算法综述中所言,作为将深度学习引入目标检测领域的开山之作,R-CNN 在目标检测和计算机视觉发展历史上具有举足轻重的地位。作为 two-stage 算法系列的开创者,先生成候选区域(region proposals),再利用 CNN 进行特征提取是本系列算法的核心主旨。本文就将 R-CNN 的论文拿出来作为目标检测的经典论文进行研读和分析。

640?wx_fmt=png

       论文的摘要给出了 R-CNN 的两点关键的贡献:一是提出生成和使用候选框来对目标物体进行定位和分割的方法,二是在缺乏足够的打标数据的情形下使用有监督的预训练(即迁移学习)方法来进行特征提取。相较于此前的 DPM 模型的 35.1% 和 24.3% 的平均准确率,R-CNN 在 PASCAL VOC 2010 数据集和 ILSVRC 2013 目标检测数据集中分别取得了 53.7% 和 31.4% 的 mAP (平均准确率),提升效果显著。

如下图所示,归纳出 R-CNN 算法的四个步骤:

  • 生成候选区域

  • 对候选区域使用CNN进行特征提取

  • 将提取的特征送入SVM分类器

  • 最后使用回归器对目标位置进行修正

笔者按照四个步骤对论文进行详细解读。

640?wx_fmt=png

生成候选区域的方法—— selective search

       R-CNN 采用选择性搜索(selective search)的方法生成候选区域,且看 selective search 方法具体描述。selective search 方法的基本步骤为:

  • 采用一种过分割手段将输入图像分割成1~2k个子区域

  • 按照一定的合并规则合并可能性最高的相邻的子区域

  • 形成并输出候选区域

       子区域合并规则如下:

       颜色(颜色直方图)和纹理(纹理直方图)相近的、合并后总面积小的(避免出现一整块巨大的合并后的区域)、合并后在边界框中占比面积大的(保证合并后的区域呈规则形状)。

       selective search 效果示意图如下:

640?wx_fmt=png

640?wx_fmt=png

具体算法合并细节参考论文:

Selective Search for Object Recognition

       利用 selective search 方法得到候选框后不能直接拿来进行 CNN 特征提取,因为 CNN 对输入图片有着统一的尺寸要求,所以我们还需要对生成的候选框进行统一的缩放处理。论文中给出了两种缩放方法,一种是 anisotropically scales (各向异性缩放):即不论候选框的长宽比例,直接进行缩放,这样做的虽然很方便,但候选框可能会存在严重的拉伸变形状,影响后续的特征提取效果。另一种则是 isotropically (各向同性缩放):如果候选框存在着长宽比例不一致的情况,则进行裁剪和填充使其比例一致。先裁剪后填充或者是先填充后裁剪都是可以的。

640?wx_fmt=png

CNN特征提取

       候选框生成完毕之后即可利用 CNN 结构对输入候选框进行特征提取。正如摘要中所言,在打标数据缺乏的情况下,可以使用预训练模型进行迁移学习。论文给出了两种 CNN 网络结构,一种是 2012年的 AlexNet,另一种则是2013年第二名的 VGG16,尽管 VGG16 的表现要相对较好,但在同等算力的情况下一般选择 AlexNet 进行迁移学习。

640?wx_fmt=png

       基于 AlexNet 和 VGG16 Net 的迁移学习这里不再赘述,笔者在图像分类经典论文研读和迁移学学习两篇中均有详细论述。这里值得注意的一个问题就是正负样本的问题,选择性搜索会产生1~2k 个候选框,但这上千个候选框可能与人工标注的候选框很难有完全重合的情况,所以在进行特征提取时我们需要利用 CNN 为这些候选框进行打标,选择的标准就是 IOU(交并比)。当选择性搜索选出来的候选框与人工打标的候选框的 IOU 达到 0.5 以上时,这个候选框便是目标物体(正样本),否则则是负样本(背景)。

       论文中还使用了一些方法对卷积网络的学习进行了可视化展示:

640?wx_fmt=png

SVM 分类器和边界框回归

       将 CNN 提取的特征向量输入 SVM 分类器进行分类即可得到目标物体的类别,然后对每一类目标,使用一个线性回归器对边界框位置进行精修,使其输出更为准确的边界框坐标。

       R-CNN 在 2013 年 ILSVRC 上的表现:

640?wx_fmt=png

总结

       R-CNN 率先将深度学习方法引入目标检测算法当中,改变了当时目标检测领域的研究思路,开深度学习目标检测算法之先河。总体而言,R-CNN 提出生成候选框来进行目标物体定位,相较于此前的滑动窗口卷积的方法,大大提高了检测速度。使用预训练网络进行迁移学习来进行特征提取,解决了训练数据缺乏的问题。

论文地址:https://arxiv.org/abs/1311.2524

R-CNN 参考实现代码:

Tensorflow: https://github.com/yangxue0827/RCNN

keras: https://github.com/broadinstitute/keras-rcnn

参考资料:

Rich feature hierarchies for accurate object detection and semantic segmentation

https://zhuanlan.zhihu.com/p/23006190

往期精彩:


一个数据科学从业者的学习历程

640?

640?wx_fmt=jpeg

长按二维码.关注数据科学家养成记

640?wx_fmt=jpeg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值