问题定义
Last updated
Last updated
借助数学公式,我们可以将通用目标检测问题正式表达如下:
设计某种算法,使之可以针对给定的图像 ,检测出其中出现的所有视觉物体 。
这里,每一个视觉物体 都是一个三元组 。其中, 为置信度,表示检测算法给出这个检测结果的自信程度; 表示物体的类别; 表示物体的位置,通常由物体在图像中左、上、下、右四个边界的坐标值表示,即 ,由这四个边界所组成的矩形框也称为边界框(bounding box)。
在下图中,每一个绿色的矩形都是一个边界框,代表算法检测出的一个视觉物体,并在左上角标出了对应的类别。
将物体的定位精确到像素是一个更为复杂的问题,称为实例分割(instance segmentation)。
目标检测看起来和图像定位问题(Image classification & localization)有些类似。在这两个问题中,我们都要求算法能预测图像中物体的类别,并以边界框的形式给出物体的精确位置。但事实上二者有着本质的不同。在图像定位问题中,我们已知图像中有且只有一个物体,并且该物体占据了图像的主要面积,因而这是一个受限环境下的问题。而目标检测面对的问题就要开放得多,图像中可能恰好有一个物体,也可能有多个物体,也可能没有物体,物体的大小也没有任何限制。在一些特定的场景下,算法还需要处理物体之间的关系,如遮挡等。
为了处理这些复杂的问题,目标检测算法通常包含若干个模块,分别处理位置、尺度、模式分类、位置关系等具体问题。这些模块通过某种方式组合在一起,输出最终结果。因而目标检测也是计算机视觉中最复杂的一类算法。在深度学习出现之前,特征金字塔和滑窗检测器是检测算法所采用的主流技术。 最为先进的 DPM (Deformable part model) 模型还引入了部件模型,对组件之间的位置关系进行建模。
近年来,随着深度学习技术日趋成熟,基于深度学习的新一代检测算法早已在性能上远远超越传统算法,成为目标检测算法的主流。受益于深度学习模型强大的拟合能力、出色的特征表达以及自由的构建方式,目标检测框架也朝着更为简洁统一的方向发展。
另外,我们还可以用物体所覆盖的像素的集合表示物体的精确位置。此时, 是与图像大小相同的像素蒙版,满足