文章目录
-
- 目标检测任务概述
- 机器学习时代的目标检测方法
- 深度学习时代的目标检测模型
-
- 基于提议的目标检测模型
-
- [R-CNN 模型](#R-CNN 模型)
- [Fast RCNN 模型](#Fast RCNN 模型)
- [Faster RCNN 模型](#Faster RCNN 模型)
- [SSD 模型](#SSD 模型)
- [YOLO 模型](#YOLO 模型)
- 基于分割的目标检测模型
-
- [FCN 模型](#FCN 模型)
- [U-Net 模型](#U-Net 模型)
目标检测任务概述
- 目标检测任务的概念:尝试从一张输入图像中找出感兴趣的物体所在的区域。
- 感兴趣物体所在的区域 :一般通过
RoI
(Region of Interest)进行表示,往往是一个包含有感兴趣的物体的水平的矩形,有时候也会是倾斜的矩形或一个表示物体轮廓线的任意几何形状。 - 目标检测和OCR的关系:目标检测是一种常见的图像处理任务,是OCR任务的基础。
- 目标检测技术的发展:在21世纪初,研究者们提出了很多基于机器学习的目标检测算法;十多年后,深度学习将目标检测引领向了一个新时代。
- 目标检测方法的分类 :根据发现感兴趣区域的方式和区域框的几何形状,可以分为两大类:
- 基于提议的方法:该类方法会首先提出很多的可能包含有感兴趣物体的矩形框,并最终从这些矩形框中选择置信度高的那些作为输出结果。
- 基于分割的方法:该类方法首先从一张输入图像中将各个物体分割开,然后从这些物体中选择属于感兴趣的类别的物体。
机器学习时代的目标检测方法
-
主要时间:在2012年深度学习开始繁荣之前,目标检测领域由机器学习方法统治着。
-
核心思想:根据输入图像提出多个候选区域,从这些候选区域中根据特征匹配找出被认为能够很好地容纳感兴趣的物体的那些。
-
主要阶段:可以划分为五个阶段。
- 提议阶段(Proposal):为后续的阶段生成多个候选区域。在机器学习时代,往往是通过不同尺寸的滑动窗口的方式生成数以万计的候选区域。
- 特征抽取阶段 (Feature-extraction):从每一个候选区域中抽取出图像的关键特征。在机器学习时代,往往使用人工设计的图像特征,比较知名的包括
SIFT
算法和HOG
算法。 - 判定阶段 (Judgement):基于每一个候选区域的图像特征向量判定该区域中是否包含一个感兴趣的物体。大多数的机器学习方法会对于每一个感兴趣的类别训练一个
SVM
分类器,训练过程中使用的损失函数是Hinge
损失函数(一个著名的算法是DPM
,该算法赢得了2007年到2009年的PASCAL VOC目标检测挑战赛冠军)。另外,在该阶段还会给每一个候选框根据其对感兴趣物体的容纳情况生成置信度,这些置信度在后续的抑制阶段会被使用。 - 调整阶段 (Adjustment):调整候选区域的位置和尺寸。该阶段也是在DPM算法中首次提出的,使用边界框回归(
BBR
)来调整候选区域的位置和尺寸,帮助候选区域能够更好地容纳我们感兴趣的物体。BBR算法中,通过候选区域与和它最近的真实的边界框的交并比来量化候选区域的质量, - 抑制阶段 (Suppression):移除高度重合的候选区域。使用的算法是非极大值抑制算法(
NMS
)。该方法首先设置一个交并比阈值,然后找出所有交并比超过该阈值的候选区域对,从中删除置信度较低的候选区域。该算法持续执行到无法继续移除候选区域为止,最终保留下来的候选区域就是最终的输出结果。
-
存在的主要限制:
- 候选区域过多:传统的机器学习方法往往会在提议阶段生成非常多的候选区域,这些候选区域之间存在严重的重叠,在概念上和计算上都为下游的分析带来了很大的困难。
- 图像特征提取不充分:基于人工设计的图像特征不能很好地捕捉输入图像中的关键信息。
深度学习时代的目标检测模型
基于提议的目标检测模型
R-CNN 模型
该模型于2014年提出。
-
模型特色:
- 选择性搜索算法 :
- 改进措施:R-CNN在生成候选区域的阶段,取消了原始的滑动窗口策略,而是采用一种新的选择性搜索算法。
- 基本原理:选择性搜索算法通过在不同尺度和颜色空间中寻找相似的区域,并将它们合并成更大的区域(如果合并结果不是矩形则进行填充),以此来生成可能包含物体的候选区域。
- 算法效果:最终,选择性搜索算法可以得到2000个左右的候选区域,相较于滑动窗口算法生成的候选区域少得多,方便后续的各种分析处理。
- 预训练的卷积神经网络 :
- 改进措施 :在图像特征抽取阶段,R-CNN使用一个在
ImageNet
上预训练好的卷积神经网络(AlexNet
)来对每一个候选区域进行图像特征抽取,而取消了人工设计的图像特征。
- 改进措施 :在图像特征抽取阶段,R-CNN使用一个在
- 选择性搜索算法 :
-
算法结果:
- 精确度提升:相较于之前的基于机器学习的精确度最高的方法,该方法的精确度提高了超过30%。
- 计算消耗降低:相较于之前的基于机器学习的方法,由于生成的候选区域更少,因此该算法的计算消耗也大大降低。
-
存在的问题:
- 图像特征向量计算非并行:对于上一个步骤生成的大约2000个候选区域,R-CNN采用分开计算的方法,对于每一个候选区域计算其图像特征向量。
- 各个阶段之间没有关联性:R-CNN中需要训练的三部分模型(也就是用于提取图像特征的卷积神经网络、用于进行判定的SVM和用于进行候选区域调整的模型BBR)是分开独立进行的,而没有作为一个整体进行统一训练。
- SVM分类器存在的问题:对于不同的感兴趣物体类别需要独立训练多个SVM并分开使用,因此需要大量的训练开销。
- 损失函数不够合理:在分类阶段,SVM只会输出每个候选框的二分类结果,而损失了该分类的详细信息,这些信息本可以通过设计合适的损失函数来进行利用。
Fast RCNN 模型
该模型于2015年提出。
- 模型特色 :
- 空间金字塔池化网络 :
- 改进措施: Fast RCNN中使用何恺明提出的空间金字塔池化网络(SSPN)来代替R-CNN中的AlexNet。
- 空间金字塔池化网络原理:即在原始的CNN网络中添加RoI池化层。通过该网络,可以同时计算提议阶段生成多个候选区域的图像特征向量,而不是像R-CNN中需要单独地对每一个候选区域计算图像特征向量,大大提高了计算速度。
- 用神经网络取代SVM :
- 改进措施: 使用一个带有几层全连接层的神经网络进行分类,而取代了R-CNN中的多个并行SVM分类器。
- 改进优点:神经网络避免了需要同时平行地训练多个SVM分类器,提升了训练的统一性,降低了训练难度;另外,神经网络的输出结果是分类概率而不是二分类的结果,因此能够更好地利用训练过程中的信息。
- 设计联合的损失函数 :
- 改进措施 :将判断候选区域属于哪个类别的分类损失(
交叉熵损失函数
)和调整候选区域的位置和大小的边界框回归损失(平滑L1损失函数
)合并为一个多任务损失函数。这种方式提高了训练的效率。
- 改进措施 :将判断候选区域属于哪个类别的分类损失(
- 空间金字塔池化网络 :
- 算法效果 :
- 显著的训练加速:相较于原始的R-CNN方法,该方法的训练加速了接近150倍。
- 略微提高的精确度:相较于R-CNN,该方法进行目标检测的精确度略有提高。
- 存在的限制 :
- 提出候选区域的算法仍然不够高效:Fast RCNN仍然采用选择搜索算法来找出候选区域,但是这种方法仍然有进一步改进从而提升效率的空间。
Faster RCNN 模型
该模型由何恺明在2015年提出。
- 模型特色 :
- 区域提议网络(RPN):在该模型中,使用区域提议网络来取代选择性搜索算法。它是一个深度学习网络,可以在特征图上滑动一个小的卷积核(通常称为"锚点"或"anchor"),并为每个锚点预测一个边界框和这个边界框包含物体的概率。RPN会根据这些预测生成候选区域,这些候选区域是网络通过学习得到的,能够更加准确地定位到可能的物体位置。
- 模型效果:相较于Fast RCNN,该模型通过区域提议网络,可以快超过10倍。
SSD 模型
该模型于2016年提出。
- 模型特色 :
- 统一中间步骤:SSD模型将目标检测任务中图像特征抽取、分类和调整三个步骤合并,直接对于生成的候选区域,使用端到端的卷积神经网络,生成预测类别向量和调整后的位置。
- 损失函数 :SSD模型中采用
L2损失函数
和多类logistic损失函数
的叠加作为模型的损失函数。 - 优化后的区域提议网络:该模型对RPN进行了优化,在多个尺度的特征图上进行高效的目标检测,从而提升目标检测的精确度。
- 模型效果:由于更多的阶段合并,使得SSD相较于Faster RCNN训练起来更加简单,比Faster RCNN还要快3到5倍,并且由于改进后的RPN算法,模型在精确度上也得到了提升。
YOLO 模型
该模型于2016年提出。
- 模型特色 :
- 直接生成候选区域:YOLO将输入图像直接通过7×7的网格划分为49个候选区域。
- 使用CNN进行并行计算:使用一个卷积神经网络同时处理49个候选区域,输出这些候选区域的边界框坐标和分类概率。
- 模型效果:相较于Faster RCNN,该模型可以加速三倍,但是目标检测精确率略有下降。
后续的目标检测模型还有 YOLO V2
,YOLO V3
,RetinaNet
,DSSD
和Cascade RetinaNet
等。上述的这些模型都是基于提议的目标检测模型的经典代表,下面将介绍基于分割的目标检测模型。
基于分割的目标检测模型
- 使用场景:主要用于检测方向非水平以及边界不规则的物体,作为基于提议的目标检测方法的补充。
- 基本原理:将输入图像分割为多个子部分,每一个子部分要么是一个物体,要么是背景,然后再判断每一个子部分哪一个才是需要检测的物体。该类方法实际上把目标检测问题变为了一个图像分割问题。
- 机器学习时代的图像分割模型 :可以分为基于聚类的模型、基于阈值的模型和基于边缘检测的模型等。
- 基于聚类的模型:将输入图像中的像素进行聚类,聚类的同一个簇中的像素可能在颜色、纹理等特征上类似,因此一个簇被视为一个分割结果。
- 基于阈值的模型:为每一个像素的多个特征设置阈值,相当于对一个特征空间进行了划分,将每一个像素的特征值投入该特征空间中,根据其所处的特征子空间来确定其类型。
- 基于边缘检测的模型:通过检测位于表示物体边缘的像素来分割不同的区域。
FCN 模型
- 提出时间:该模型于2015年提出。
- 核心思想:将图像分割问题视为一个对图像中每一个像素的分类的问题。
- 基本架构 :编码器解码器架构。通过一个卷积神经网络编码器对输入图像进行编码,将得到的特征图通过反卷积神经网络解码器进行解码(实际上就是一个上采样过程)。最后输出一个特征图,特征图中对于每一个像素,都有一个概率向量,表示该像素属于各个类别的概率。该模型使用
Softmax
损失函数进行训练。
U-Net 模型
- 提出时间:该模型于2015年提出,本身是用来分割生物医疗图像的。
- 模型架构:该模型和FCN类似,但是其增加了一个U形的结构,其中包含多个编码器路径和解码器路径。另外,U-Net在上采样的过程中还使用了跳跃连接,将编码器路径中的高分辨率特征图直接与解码器路径中的相应特征图拼接起来,从而保留更多的信息。