第一阶段候选框生成的目标是搜索图像中可能包含物体的位置,这些位置又叫感兴趣区域(Region of Interesting,ROI)。物体目标可能出现在图像中的任何位置,而且相应的大小尺寸、长宽比例也无法确定,一个直观的思路是用滑动窗口遍历整幅图像。为了捕捉不同尺寸和长宽比物体的信息,输入图像也被重新分割为不同的尺寸和长宽比,然后用不同尺寸的窗口滑动扫描输入图像。
第二阶段,在图像的每一个位置上,利用滑动窗口获取固定长度的特征向量,人工设计特征从而捕捉该区域的判别语义信息。该特征向量通常由低级视觉描述子编码而成,这些描述子包括 SIFT、Haar 、HOG、SURF等,它们对缩放、光线变化和旋转具备一定的鲁棒性。
第三阶段,学习区域分类器,为特定区域分配类别标签。通常使用支持向量机作为分类器,因为它在小规模训练数据上性能优异。此外Bagging、级联学习和 Adaboost等分类技术也会用在此阶段,帮助提高目标检测的准确率。
传统目标检测方法的缺点是比较明显的:候选区域生成阶段的时间复杂度太高,这一阶段产生大量的冗余窗口,严重影响了之后特征提取和目标分类阶段的速度和性能,并且滑动窗口的长宽比一般都是设置固定的几个,对于尺寸波动较大的多类别目标检测,即便是滑动窗口遍历也不能得到很好的候选区域。特征提取阶段的人工设计的特征对于目标特征多样性的变化并没有很好的鲁棒性。
2.2 基于深度学习的目标检测
随着卷积神经网络在计算机视觉领域的飞速发展,其已作为图像识别领域的核心技术之一。2014 年Ross B. Girshick使用区域卷积神经网络(Regions with CNN,R-CNN)取代传统目标检测中滑动窗口结合人工设计特征的方式,使得目标检测领域得到了极大的成功和突破,掀起了基于深度学习的目标检测技术的研究热潮。目前基于深度学习的端到端目标检测主要分为两类:基于候选区域的二阶段目标检测器和基于回归的单阶段目标检测器。
(1)基于候选区域的二阶段目标检测器
二阶段目标检测流程如下图所示。R-CNN是一种具有代表性的两阶段目标检测器,对其网络结构进行修改,衍生出随后的Fast-RCNN和Faster R-CNN模型。两阶段检测器在训练网络时,第一步是训练区域候选网络(RegionProposal Network,RPN)用于生成候选区域,同时将图片划分为背景和目标两种类别,并会对目标位置进行初步的预测;第二步是训练目标区域检测网络用于实现对候选区域内目标类别的判定和目标位置的确定。两阶段目标检测器因其检测精度高而受到更加广泛的使用。但是两阶段目标检测器的网络结构比较复杂,这使得其训练和检测的效率较低,不能很好满足实时检测场景的需要。
(2)基于回归的单阶段目标检测器
单阶段目标检测器的体系结构比两阶段目标检测器更简单,不需要生成候选区域,通过卷积神经网络提取特征直接输出目标的类别、概率和位置坐标,从而实现端到端的目标检测。单阶段目标检测器又包含基于锚框(anchor-based)的和非锚框(anchor-free)的两种方法。SSD、YOLO 和 Retina Net 等都是 anchor-based 的单阶段检测器,它们处理速度快而但精度相对有限。Anchor-based 方法使用密集的锚框直接进行目标分类和回归,能有效提高网络的召回能力,但是冗余框很多。Anchor-free 目标检测器则抛弃锚框的设计,取而代之的使用关键点进行目标检测,诸如Corner Net,Center Net 等,都取得了不俗的效果。