前言
对象检测任务是计算机视觉中极其重要的基础问题。对象检测是检测输入图像中是否存在给定类别的对象,如果是,则输出有关对象在图像中的位置的信息;当图像中存在目标的时候,则输出目标在图像中的位置信息坐标。(这个里面的位置坐标是指bounding box)
物体检测模型大致可以分为one-stage)模型和two-stage模型两大类。本篇中分析和对比了这两类模型在架构、性能和效率上的差异,并给出了原理解释。
分析理解
单步检测:
物体检测中的单步模型是指不独立和明确地提取候选区域的模型,并直接从输入图像中获取其中存在的对象的类别和位置信息。(例如:SSD\YOLO)。
双步检测:
物体识别中的两步模型具有独立、明确的候选区域提取过程,即首先过滤掉输入图像上可能对象的一些候选区域,然后评估每个候选区域是否存在对象,如果存在,则提供对象的类别和位置校正信息。(例如:RCNN\FASTRCNN)
分析
一般来说,单步模型在计算效率上有优势,两步模型在检测精度上有优 势。如下图所示。可以看到:当检测时间较短时,单步模型 SSD 能 取得更高的精度;而随着检测时间的增加,两步模型 Faster R-CNN 则 在精度上取得优势。对于单步模型与两步模型在速度和精度上的差异,一般认为有如下原因:
比较
1. 大多数单阶段模型使用预设的锚框来捕获可能存在于图像中不同位置的对象。在单步模型中,大量锚点框架根据它们是否包含对象以及对象所属的类别进行密集分类。由于图像中实际包含的对象数远小于锚帧数,因此训练此分类器时正样本和负样本的数量极不均匀,这可能导致分类器训练不佳。由于它包含两步模型中候选区域的独立提取步骤,因此第一步可以过滤掉大多数不包含任何要检测的对象的区域,如果移动第二步来分类和校正候选框的位置和大小,则正负样本的比例相对平衡,并且没有类似的问题。
2. 两步模型在提取候选区域期间校正候选框的位置和大小,以便在进入第二步之前对齐候选区域的特征,这有助于为第二步的分类提供更高质量的特征。将两阶段模型在第二步的候选箱中再次进行校正,这里共对候选箱进行两次校正,从而带来更高的定位精度,但它也增加了模型的复杂性。单步模型对候选区域没有提取过程,当然也没有特征对齐步骤,每个锚点场的预测都是基于层上每个特征点的接收场,其输入特征不对齐,质量差,因此定位和分类精度容易受到损害。
3. 以 Faster R-CNN 为代表的两步模型在第二步对候选区域进行分类 和位置回归时,是针对每个候选区域独立进行的,因此该部分的算法复 杂度线性正比于预设的候选区域数目,这往往十分巨大,导致两步模型 的头重脚轻(heavy head)问题。
结束
以上的分析是分析单双步目标检测效果差异,希望可以帮助大家在项目中对该操作的理解或在面试过程中回答面试官的提问回答。