作者:幻灵风 | 来源:互联网 | 2023-10-12 12:40
引言
目标检测:
目标检测的目标是确定某张给定图像中是否存在给定类别(比如人、车、自行车、狗和猫)的目标实例;如果存在,就返回每个目标实例的空间位置和覆盖范围(比如返回一个边界框)。
目标检测的意义
作为图像理解和计算机视觉的基石,目标检测是解决分割、场景理解、目标追踪、图像描述、事件检测和活动识别等更复杂更高层次的视觉任务的基础。目标检测在人工智能和信息技术的许多领域都有广泛的应用,包括机器人视觉、消费电子产品、安保、自动驾驶、人机交互、基于内容的图像检索、智能视频监控和增强现实。
目标检测的过程:
传统的目标检测方法一般分为三个阶段:首先在给定的图像上选择一些候选区域,然后对这些区域提取特征,最后使用分类器进行分类。
目标检测面临的难点:
-
高准确度(Loc acc.+Reg acc.)
- 对类内形变的鲁棒性
- 同类物体有很多不同的实例(不同纹理/颜色/材质等)
- 目标实例的多样性(姿态/非刚性形变等)
- 采样过程的条件和环境的影响(光照/尺度/遮挡/阴影/污迹/角度/背景)
- 图像噪声(采样过程的噪声/滤波器影响/压缩的噪声等)
- 高的可区分性
-
高效性(时间、内存效率)
- 实际中目标类别成千上万
- 需要定位并辨别目标类别
- 目标的可能定位数量太多
- 图像/视频数据太多
目标检测发展:
过去20年的进展:
整体而言,这些检测器可以分为两大主要类别:
1. R-CNN(2013)
R-CNN是利用卷积神经网络进行“目标检测”的开山之作,其意义深远
R-CNN流的发展过程:
R-CNN -> SPP Net -> Fast R-CNN -> Faster R-CNN -> Mask R-CNN
实现步骤:
1)Region Proposal+Crop/Wrap归一化:通过SS方法生成约2000个候选区域,并将候选区域resize成固定大小(227*227)
2)对每个框进行CNN特征提取:对每个候选区域提取卷积特征图,得到4096-d的向量
3)SVM分类+边界回归:将2000个特征向量送入SVM学习N个SVM分类器
R-CNN的贡献:
1)使用ImageNet训练好的优质模型,在PASCAL VOC数据集上机芯微调,因为大数据集图像高达几百万,利用卷积网络充分学习了浅层特征,之后在小数据集上微调后进行特征提取,获得了好多特征提取效果。
2)使用b-box regression进行了目标包围框的修正
R-CNN的缺点:
1)SS耗时:每幅图像的SS需要花费2s
2)每个候选区域内的图像都要经过一次AlexNet,为所有的框提取特征大约花费47s,且每个特征都要存储下来,浪费空间。
3)三个模块(SS+特征提取+分类)是分别训练的,导致训练分类器时没有更新网络参数,且对存储空间消耗很大
4)所有的框都暴力归一化到统一大小227*227,造成图像内容损失,引起物体形变,影响精度。
R-CNN的主要特点有以下三点:
1)利用了selective search方法,即先通过实例分割将图像分割为若干小块,然后选择相似度较高的小块,把这些相似小块合并为一个大块,最后整个物体生成一个大的矩形框,通过这种方法大大提高候选区域的筛选速度。
2)用在ImageNet数据集上进行学习的参数对神经网络进行预处理,解决了在目标检测训练过程中标注数据不足的问题。
3)通过线性回归模型对边框进行校准,减少图像中的背景空白,得到更精确的定位。
4)该方法将PASCAL VOC上的检测率从35.1%提升到了53.7%,其意义与AlexNet在2012年取得分类任务的大突破是相当的,对目标检测领域影响深远。
2. SPPnet(空域金字塔池化,2014)
该方法提出的最初原因是为了解决全连接层的输入要求大小统一的问题,SPP层可以和R-CNN结合起来提升网络性能。R-CNN中采用暴力resize的方法将所有的框都归一化为227*227,但这会影响识别精度,于是SPPnet在CNN层与全连接层之间插入了空间金字塔池化层来解决该矛盾。
SPPnet(下)与普通网络(上)对比:
SPP原理:
假定CNN层得到的特征图大小为a×a(比如13×13,随输入图片大小而变化),设定的金字塔尺度为n×n bins(对于不同大小图片是固定的),那么SPP层采用一种滑动窗口池化,窗口大小win_size=⌈a/n⌉,步长为stride=⌊a/n⌋,采用max pooling,本质上将特征图均分为n×n个子区域,然后对各个子区域max pooling,这样不论输入图片大小,经过SPP层之后得到是固定大小的特征。一般设置多个金字塔级别,文中使用了4×4,2×2和1×1三个尺度。
每个金字塔都得一个特征,将它们连接在一起送入后面的全连接层即可,这样就解决了变大小图片输入的问题了。SPP-net在ImageNet ILSVRC 2014图像分类大赛中夺得了第三名。
空间金字塔池化过程:
输入图像 →→→x∗分别表示预测框、锚框和真实框,这可以被认为是从锚框到邻近真实边界框的回归。
四步交替优化法,使得学习到RPN和CNN共享特征的统一网络
-
训练RPN,使用ImageNet预训练模型进行初始化,对区域提议任务进行端到端的微调
- 随机采样256个anchors,正负比1:1–不够用负样本填充;
- μ=0,σ=0.01,学习率=0.001 or 0.0001,动量=0.9,衰减系数=0.0005
-
使用由第一步RPN生成的提议,由Fast R-CNN训练单独的检测网络。该检测网络也由ImageNet的预训练模型进行初始化。此时两个网络不共享卷积层。
-
使用检测器网络来初始化RPN训练,但是我们修正共享的卷积层,并且只对RPN特有的层进行微调。现在这两个网络共享卷积层。
-
保持共享卷积层的固定,对Fast R-CNN的独有层进行微调。
注意:
1)训练时忽略超过图像边界的anchor boxes(不收敛且误差难以纠正),测试时剪切跨边界的框。
2)一些RPN proposals相互高度重叠,为了减少冗余,根据cls分数采取非极大值抑制,阈值为0.7,NMS不会影响检测准确性,但会大大减少proposal的数量。在NMS之后使用前N个候选区域进行检测。
R-CNN家族系统对比
从R-CNN,SPP-net,Fast R-CNN到Faster R-CNN,基于深度学习目标检测的流程变得更加精简、精度更高、速度更快,因此基于region proposal的R-CNN系列目标检测方法是当前目标最主要的一个分支。
Faster RCNN这种基于CNN的目标检测方法使得real-time检测成为可能,在这个方向上有老进一步的研究思路。
RCNN网络的演进如下:
三者的比较:
引言
目标检测:
目标检测的目标是确定某张给定图像中是否存在给定类别(比如人、车、自行车、狗和猫)的目标实例;如果存在,就返回每个目标实例的空间位置和覆盖范围(比如返回一个边界框)。
目标检测的意义
作为图像理解和计算机视觉的基石,目标检测是解决分割、场景理解、目标追踪、图像描述、事件检测和活动识别等更复杂更高层次的视觉任务的基础。目标检测在人工智能和信息技术的许多领域都有广泛的应用,包括机器人视觉、消费电子产品、安保、自动驾驶、人机交互、基于内容的图像检索、智能视频监控和增强现实。
目标检测的过程:
传统的目标检测方法一般分为三个阶段:首先在给定的图像上选择一些候选区域,然后对这些区域提取特征,最后使用分类器进行分类。
目标检测面临的难点:
-
高准确度(Loc acc.+Reg acc.)
- 对类内形变的鲁棒性
- 同类物体有很多不同的实例(不同纹理/颜色/材质等)
- 目标实例的多样性(姿态/非刚性形变等)
- 采样过程的条件和环境的影响(光照/尺度/遮挡/阴影/污迹/角度/背景)
- 图像噪声(采样过程的噪声/滤波器影响/压缩的噪声等)
- 高的可区分性
-
高效性(时间、内存效率)
- 实际中目标类别成千上万
- 需要定位并辨别目标类别
- 目标的可能定位数量太多
- 图像/视频数据太多
目标检测发展:
过去20年的进展:
整体而言,这些检测器可以分为两大主要类别:
1. R-CNN(2013)
R-CNN是利用卷积神经网络进行“目标检测”的开山之作,其意义深远
R-CNN流的发展过程:
R-CNN -> SPP Net -> Fast R-CNN -> Faster R-CNN -> Mask R-CNN
实现步骤:
1)Region Proposal+Crop/Wrap归一化:通过SS方法生成约2000个候选区域,并将候选区域resize成固定大小(227*227)
2)对每个框进行CNN特征提取:对每个候选区域提取卷积特征图,得到4096-d的向量
3)SVM分类+边界回归:将2000个特征向量送入SVM学习N个SVM分类器
R-CNN的贡献:
1)使用ImageNet训练好的优质模型,在PASCAL VOC数据集上机芯微调,因为大数据集图像高达几百万,利用卷积网络充分学习了浅层特征,之后在小数据集上微调后进行特征提取,获得了好多特征提取效果。
2)使用b-box regression进行了目标包围框的修正
R-CNN的缺点:
1)SS耗时:每幅图像的SS需要花费2s
2)每个候选区域内的图像都要经过一次AlexNet,为所有的框提取特征大约花费47s,且每个特征都要存储下来,浪费空间。
3)三个模块(SS+特征提取+分类)是分别训练的,导致训练分类器时没有更新网络参数,且对存储空间消耗很大
4)所有的框都暴力归一化到统一大小227*227,造成图像内容损失,引起物体形变,影响精度。
R-CNN的主要特点有以下三点:
1)利用了selective search方法,即先通过实例分割将图像分割为若干小块,然后选择相似度较高的小块,把这些相似小块合并为一个大块,最后整个物体生成一个大的矩形框,通过这种方法大大提高候选区域的筛选速度。
2)用在ImageNet数据集上进行学习的参数对神经网络进行预处理,解决了在目标检测训练过程中标注数据不足的问题。
3)通过线性回归模型对边框进行校准,减少图像中的背景空白,得到更精确的定位。
4)该方法将PASCAL VOC上的检测率从35.1%提升到了53.7%,其意义与AlexNet在2012年取得分类任务的大突破是相当的,对目标检测领域影响深远。
2. SPPnet(空域金字塔池化,2014)
该方法提出的最初原因是为了解决全连接层的输入要求大小统一的问题,SPP层可以和R-CNN结合起来提升网络性能。R-CNN中采用暴力resize的方法将所有的框都归一化为227*227,但这会影响识别精度,于是SPPnet在CNN层与全连接层之间插入了空间金字塔池化层来解决该矛盾。
SPPnet(下)与普通网络(上)对比:
SPP原理:
假定CNN层得到的特征图大小为a×a(比如13×13,随输入图片大小而变化),设定的金字塔尺度为n×n bins(对于不同大小图片是固定的),那么SPP层采用一种滑动窗口池化,窗口大小win_size=⌈a/n⌉,步长为stride=⌊a/n⌋,采用max pooling,本质上将特征图均分为n×n个子区域,然后对各个子区域max pooling,这样不论输入图片大小,经过SPP层之后得到是固定大小的特征。一般设置多个金字塔级别,文中使用了4×4,2×2和1×1三个尺度。
每个金字塔都得一个特征,将它们连接在一起送入后面的全连接层即可,这样就解决了变大小图片输入的问题了。SPP-net在ImageNet ILSVRC 2014图像分类大赛中夺得了第三名。
空间金字塔池化过程:
输入图像 →→→x∗分别表示预测框、锚框和真实框,这可以被认为是从锚框到邻近真实边界框的回归。
四步交替优化法,使得学习到RPN和CNN共享特征的统一网络
-
训练RPN,使用ImageNet预训练模型进行初始化,对区域提议任务进行端到端的微调
- 随机采样256个anchors,正负比1:1–不够用负样本填充;
- μ=0,σ=0.01,学习率=0.001 or 0.0001,动量=0.9,衰减系数=0.0005
-
使用由第一步RPN生成的提议,由Fast R-CNN训练单独的检测网络。该检测网络也由ImageNet的预训练模型进行初始化。此时两个网络不共享卷积层。
-
使用检测器网络来初始化RPN训练,但是我们修正共享的卷积层,并且只对RPN特有的层进行微调。现在这两个网络共享卷积层。
-
保持共享卷积层的固定,对Fast R-CNN的独有层进行微调。
注意:
1)训练时忽略超过图像边界的anchor boxes(不收敛且误差难以纠正),测试时剪切跨边界的框。
2)一些RPN proposals相互高度重叠,为了减少冗余,根据cls分数采取非极大值抑制,阈值为0.7,NMS不会影响检测准确性,但会大大减少proposal的数量。在NMS之后使用前N个候选区域进行检测。
R-CNN家族系统对比
从R-CNN,SPP-net,Fast R-CNN到Faster R-CNN,基于深度学习目标检测的流程变得更加精简、精度更高、速度更快,因此基于region proposal的R-CNN系列目标检测方法是当前目标最主要的一个分支。
Faster RCNN这种基于CNN的目标检测方法使得real-time检测成为可能,在这个方向上有老进一步的研究思路。
RCNN网络的演进如下:
三者的比较: