2024年最全R-CNN论文解读 总结 详细笔记(1),大佬整理

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

目标检测发展历程:

在利用深度学习做物体检测之前,传统算法对于目标检测通常分为3个阶段:区域选取、特征提取和特征分类。

在这里插入图片描述

  • 区域选取:首先选取图像中可能出现物体的位置,由于物体位置、大小都不固定,因此传统算法通常使用滑动窗口(Sliding Windows)算法,但这种算法会存在大量的冗余框,并且计算复杂度高。

在这里插入图片描述

  • 特征提取:在得到物体位置后,通常使用人工精心设计的提取器进行特征提取,如SIFT和HOG等。由于提取器包含的参数较少,并且人工设计的鲁棒性较低,因此特征提取的质量并不高。
  • 特征分类:最后,对上一步得到的特征进行分类,通常使用如SVM、AdaBoost的分类器。

深度学习火了之后,神经网络的大量参数可以提取出鲁棒性和语义性更好的特征,并且分类器性能也更优越,从此便拉开了深度学习做目标检测的序幕。

在这里插入图片描述

此文章为介绍的开篇之作RCNN。

摘要(论文的主要创新点)

论文提出一个简单并且可扩展的检测算法,可以将**mAP**(mean Average Precision)在VOC2012最好结果的基础上提高30%以上——达到了53.3%。该方法的两个关键点为:

  1. 在候选区域(region proposals)上自下而上使用大型卷积神经网络(CNNs),用以定位和分割物体。
  2. 当带标签的训练数据不足时,先针对辅助任务进行有监督预训练,再进行特定任务的微调,可以使性能明显提升(即我们常说的 迁移学习

我们在评价一个目标检测算法的“好坏”程度的时候,往往采用的是pascal voc 2012的评价标准mAP。

mAP:

mean of Average Precision的缩写,意思是平均精确度(average precision)的平均(mean),是object detection中模型性能的衡量标准.

迁移学习

迁移学习(Transfer learning): 顾名思义就是把已训练好的模型(预训练模型)参数迁移到新的模型来帮助新模型训练。考虑到大部分数据或任务都是存在相关性的,所以通过迁移学习我们可以将已经学到的模型参数(也可理解为模型学到的知识)通过某种方式来分享给新模型从而加快并优化模型的学习效率不用像大多数网络那样从零学习。

迁移学习又被定义为:迁移学习和域适应指的是在一种环境中学到的知识被用在另一个领域中来提高它的泛化性能。

其中,实现迁移学习有以下三种手段:

  1. Transfer Learning:冻结预训练模型的全部卷积层,只训练自己定制的全连接层。
  2. Extract Feature Vector:先计算出预训练模型的卷积层对所有训练和测试数据的特征向量,然后抛开预训练模型,只训练自己定制的简配版全连接网络。
    3.Fine-tuning:冻结预训练模型的部分卷积层(通常是靠近输入的多数卷积层,因为这些层保留了大量底层信息)甚至不冻结任何网络层,训练剩下的卷积层(通常是靠近输出的部分卷积层)和全连接层。

迁移学习在某些深度学习问题中是非常受欢迎的,例如在具有大量训练深度模型所需的资源或者具有大量的用来预训练模型的数据集的情况。仅在第一个任务中的深度模型特征是泛化特征的时候,迁移学习才会起作用。

理想情况下,在一个成功的迁移学习应用中,将会获得以下益处:

  1. 更高的起点:在微调之前,源模型的初始性能要比不使用迁移学习来的高。
  2. 更高的斜率:在训练的过程中源模型提升的速率要比不使用迁移学习来得快。
  3. 更高的渐进:训练得到的模型的收敛性能要比不使用迁移学习更好。

因为将候选区域与CNNs结合,所以该方法称为R-CNN:Regions with CNN festures。

介绍

受 AlexNet 启发,论文作者尝试将 AlexNet 在 ImageNet 目标识别的能力泛化到 PASCAL VOC 目标检测上面来。CNN可以在 PASCAL VOC 有更好的目标检测表现。实现这个结果需要解决两个问题:

  1. 如何利用深度的神经网络去做目标的定位?
  2. 如何在一个小规模的数据集上训练能力强劲的网络模型?

论文作者给出了以下思路:

**1.如何利用深度的神经网络去做目标的定位?解决:**利用候选区域与 CNN 结合做目标定位

借鉴了滑动窗口思想,R-CNN 采用对区域进行识别的方案。

具体是:

  1. 给定一张输入图片。
  2. 从图片中提取 2000 个类别独立的候选区域。
  3. 对于每个区域利用 CNN 抽取一个固定长度的特征向量。
  4. 再对每个区域利用 SVM 进行目标分类。
  5. 将特征输入训练好的线形回归器中,得到更为精确的位置定位。

**2.何在一个小规模的数据集上训练能力强劲的网络模型?解决:**利用预训练与微调

在辅助数据集(ILSVRC)上进行有监督的预训练,再在小数据集(PASCAL)上针对特定问题进行调优。(这里即是我们常说的 迁移学习)。这是在训练数据稀少的情况下一个非常有效的训练大型卷积神经网络的方法。

利用R-CNN进行目标检测

目标检测系统由三个模块构成:

  • 1.第一个模块是生成与类别无关的候选框(**region proposal),**这些推荐定义了一个候选检测区域的集合。
  • 2.第二个模块是一个大型卷积神经网络,用于从每个区域抽取特定大小的特征向量。
  • 3.第三个模块是每个类别分别训练一个线性支持向量机(指定类别的线性SVM。

模块设计

1.**区域推荐(region proposal):**采用了选择性搜索(selective search)以方便和前面的工作进行可控的比较。

**2.特征提取(Feature extraction):**对每个候选区域抽取一个4096维度的特征向量(AlexNet作为特征提取的骨干网络),输入一个减去均值的大小为227X227 RGB的图片,通过五个卷积层和两个全连接层进行前向传播,最终得到一个4096维的特征向量。

对于候选框的预处理😗 :无论候选区域的尺寸和宽高比是什么,都把候选区域统一变换到 227×227 的尺寸。变形之前,先在候选框周围加上p=16padding(填充),再进行各向异性缩放,这种处理使得mAp提高了3到5个百分点。

测试阶段的目标检测

在测试图像上使用择性搜索(selective search) 抽取2000个候选区域,将候选区域变形后通过CNN前向传播计算出特征,然后使用对每个类别训练出的SVM给整个特征向量中的每个类别单独打分。

候选区域有 2000 个,所以很多会进行重叠。

针对每个类,通过计算 IoU 指标,采取非极大性抑制,以最高分的区域为基础,剔除掉那些重叠位置的区域。

以下为一个非极大抑制的小例子:

RCNN算法会从一张图片中找出n多个可能是物体的矩形框,然后为每个矩形框为进行类别分类。就像上面的图片一样,定位两个人、马、狗和车,首先算法找出了一堆黄色的矩形框,然后将所有的黄色方框分类后生成不同颜色的对应各种类型方框,最后我们需要判别相同颜色的矩形框中哪些矩形框是没用的。

IoU

目标检测任务中,常用到一个指标IoU,即交并比,IoU可以很好的描述一个目标检测模型的好坏。在训练阶段IoU可以作为anchor-based方法中,划分正负样本的依据;同时也可用作损失函数;在推理阶段,NMS中会用到IoU。同时IoU有着比较严重的缺陷。

IoU的计算是用预测框(A)和真实框(B)的交集除以二者的并集,其公式为:

IoU的值越高也说明A框与B框重合程度越高,代表模型预测越准确。反之,IoU越低模型性能越差。

IoU优点:

(1)IoU具有尺度不变性

(2)结果非负,且范围是(0, 1)

IoU缺点:

(1)如果两个目标没有重叠,IoU将会为0,并且不会反应两个目标之间的距离,在这种无重叠目标的情况下,如果IoU用作于损失函数,梯度为0,无法优化。

(2)IoU无法精确的反映两者的重合度大小。如下图所示,三种情况IoU都相等,但看得出来他们的重合度是不一样的,左边的图回归的效果最好,右边的最差。

非极大值抑制:

非极大值抑制,简称为NMS算法(Non-Maximum Suppression)。其思想是搜素局部极大值,抑制非极大值元素。

以目标检测为例:目标检测的过程中在同一目标的位置上会产生大量的候选框,这些候选框相互之间可能会有重叠,此时我们需要利用非极大值抑制找到最佳的目标边界框,消除冗余的边界框。Demo如下图:

左图是人脸检测的候选框结果,每个边界框有一个置信度得分(confidence score),如果不使用非极大值抑制,就会有多个候选框出现。右图是使用非极大值抑制之后的结果,符合我们人脸检测的预期结果。

如何使用非极大值抑制?

**前提:**目标边界框列表及其对应的置信度得分列表,设定阈值,阈值用来删除重叠较大的边界框。
IoU:intersection-over-union,即两个边界框的交集部分除以它们的并集。

非极大值抑制的流程如下:

  • 根据置信度得分进行排序
  • 选择置信度最高的比边界框添加到最终输出列表中,将其从边界框列表中删除
  • 计算所有边界框的面积
  • 计算置信度最高的边界框与其它候选框的IoU。
  • 删除IoU大于阈值的边界框
  • 重复上述过程,直至边界框列表为空。

非极大值抑制:先假设有6个同类矩形框,根据分类器类别分类概率做排序,矩形框从小到大对应的概率分别为A、B、C、D、E、F。

(1)从最大概率矩形框F开始,分别判断A-E中与F的重叠度IOU是否大于某个设定的阈值;
(2)假设B、D与F的重叠度超过阈值,那么就扔掉B、D;并标记第一个矩形框F,是我们保留下来的。
(3)从剩下的矩形框A、C、E中,选择概率最大的E,然后判断E与A、C的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是我们保留下来的第二个矩形框。
      就这样一直重复,找到所有被保留下来的矩形框。

测试时其实分两个结果:

1.分类

在测试的时候,先对带检测图像提取出约2000个候选区域,将每个区域都进行缩放,然后将缩放后的图片输入CNN进行特征提取,对CNN输出的特征用SVM进行打分(每类都有一个SVM,21类(20个分类+背景1个=21个)就有21个SVM分类器),对打好分的区域使用NMS即非极大值抑制(每类都单独使用)。

到这里分类就完成了,但是得到的位置只是候选区在图像中的位置,而候选区的位置并不一定就是ground truth,即检测目标的真实位置

2.定位(回归)

将CNN对候选区域提取出的特征输入训练好的线形回归器中,得到更为精确的位置定位,具体情况会在下面训练方法中详细介绍。但要明确的是,这些回归器是按照类来训练的,即每类分类完后进行回归。

训练

  1. 监督式预训练(迁移学习):前面已经提到过 R-CNN 采取迁移学习。

预训练采用了Caffe的CNN库。训练的时候,文章用了个trick,他先用ILSVRC2012数据库训练Alexnet,训练的时候目标时图片分类,因为ILSVRC2012数据库没有分类的标定数据。这步称为预训练
2. 特定领域的参数调优:提取在 ILSVRC 2012 的模型和权重,然后在 VOC 上进行调优(fine-tune)。当数据量不够的时候,常用的一种训练方式,即先用别的数据库训练网络,然后再用自己的数据库微调训练。

需要注意的是,这里在 ImageNet 上训练的是模型识别物体类型的能力,而不是预测 bbox 位置的能力。

ImageNet 的训练当中需要预测 1000 个类别,而 R-CNN 在 VOC 上进行迁移学习时,神经网络只需要识别 21 个类别。这是 VOC 规定的 20 个类别加上背景这个类别。

R-CNN 将候选区域与 GroundTrue 中的 box 标签相比较,如果 IoU > 0.5,说明两个对象重叠的位置比较多,于是就可以认为这个候选区域是 Positive,否则就是 Negetive.
3. 目标种类分类器(SVM)

1.在fine-tunning和SVM训练这两个阶段,作者定义得正负样例是不同的

因为在训练SVM时,正样本为groundtruth,负样本定义为与ground truth的IoU小于0.3的候选区域为负样本,介于0.3与0.7之间的样本忽略。
      fine-tuning是担心过拟合的原因,要扩大正样本的样本量,所以定义比较宽松,但是SVM是最终用于分类的分类器,而且SVM原理就是最小的距离最大化,越难分的数据越有利于SVM的训练,所以对样本的定义比较严格。

2.为什么单独训练了一个SVM而不是直接用softmax呢

因为在训练softmax的时候数据本来就不是很准确,而SVM的训练使用的是hard negative也就是样本比较严格,所以SVM效果会更好。

可视化、消融、模型的错误

可视化学习的特征

卷积层的第一层可以直接可视化,并且易于理解。它们捕捉定向边缘和颜色特征。对于后面的层,作者使用了一种简单的非参数化方法,直接展示网络学到的东西。

思路是挑选一个特征出来,把它直接当成一个物体分类器,先计算所有抽取出来的候选区域(大约1000万),计算每个区域所导致的对应单元的激活值,然后按激活值对这些区域进行排序,然后进行非极大值抑制,最后展示分值最高的若干个区域。作者避免平均化是为了看到不同的视觉模式和深入观察单元计算结果的的不变性。

消融研究

没有调优的CNN模型即在ILSVRC2012上训练后(迁移学习)的状态,对于网络的全连接层,若仅仅使用pool5的特征,相当于只使用CNN模型参数的6%也能有非常好的结果。

可见CNN模型的主要表达力来自于卷积层,而不是全连接层。

优后的CNN模型在VOC2007上的结果表现出调优后的提升非常明显,mAP提升了8个百分点,全连接层FC6和FC7的提升明显优于pool5,这说明pool5ImageNet学习的特征泛化性很强,在它之上层的大部分提升主要是在学习领域相关的非线性分类器。

R-CNN 还与其他的特征方法进行了能力比较,作者选取了两种基于 DPM 的方法,DPM ST 和 DPM HSC,结果都证明,R-CNN 要好于它们。

检测错误分析

R-CNN 作者采用了 Hoiem 提出的目标检测分析工具,能够直观地揭露错误的模型,作者通过这个工具针对性地进行 fine-tune。

Bounding-box回归

bbox 的值其实就是物体方框的位置,预测它就是回归问题,而不是分类问题。

受 DPM 的启发,作者训练了一个线性的回归模型,这个模型能够针对候选区域的 pool5 数据预测一个新的 box 位置。具体细节,作者放在补充材料当中。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

新的 box 位置。具体细节,作者放在补充材料当中。

[外链图片转存中…(img-A1Lybr4X-1715281382860)]
[外链图片转存中…(img-oII4dNXG-1715281382861)]
[外链图片转存中…(img-JPzzuiPZ-1715281382861)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 21
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值