目标检测
Object Detection
目标检测是计算机视觉领域的一项核心任务,它比图像分类更进了一步。目标检测的目标不仅是识别出图像中有什么物体(分类),还要同时确定这些物体在图像中的位置(定位)。通常,位置信息会以边界框 (Bounding Box) 的形式输出。
核心任务
一个目标检测算法需要对一张输入的图像,输出一个列表,列表中的每一项包含:
- 类别标签 (Class Label): 识别出的物体属于哪个类别(如:“人”、“车”、“猫”)。
- 边界框 (Bounding Box): 一个矩形框,通常由左上角坐标
和框的宽高 来定义,用于精确地框出物体的位置。 - 置信度分数 (Confidence Score): 一个表示该检测结果有多大把握是正确的概率值。
两大主流技术路线
现代基于深度学习的目标检测算法主要分为两大流派:
1. 两阶段检测器 (Two-Stage Detectors)
这类方法将检测过程分为两个独立的阶段,追求更高的检测精度。
- 阶段一:候选区域生成 (Region Proposal): 首先通过一个专门的算法(如Selective Search或Region Proposal Network)在图像上快速地生成数千个可能包含物体的候选区域(Region of Interest, RoI)。
- 阶段二:分类与回归 (Classification and Regression): 对每个候选区域,使用一个卷积神经网络进行精细的分类,并对边界框的位置进行微调(回归)。
- 代表算法: R-CNN系列
- R-CNN: 开山之作,但速度极慢,因为它对每个候选区域都独立运行一次CNN。
- Fast R-CNN: 通过共享卷积计算,极大地提升了速度。
- Faster R-CNN: 引入了区域提议网络 (Region Proposal Network, RPN),将候选区域的生成也整合进了神经网络,实现了端到端的训练,是两阶段检测器的里程碑。
- 特点: 通常具有更高的检测精度,但速度相对较慢。
2. 单阶段检测器 (One-Stage Detectors)
这类方法摒弃了候选区域生成阶段,直接将目标检测视为一个统一的回归问题,在整个图像上一次性地预测出所有物体的类别和位置。
- 代表算法:
- YOLO (You Only Look Once): 将图像划分为一个网格(grid),每个网格单元负责预测落在该单元内的物体。YOLO以其极快的检测速度而闻名,能够轻松实现实时检测。
- SSD (Single Shot MultiBox Detector): 结合了YOLO的网格思想和Faster R-CNN的锚点框(Anchor Box)思想,在不同尺度的特征图上进行预测,以实现在速度和精度之间的良好平衡。
- 特点: 速度非常快,适合需要实时处理的应用场景,但通常在精度上略逊于两阶段检测器。
关键概念与评估
核心组件
- 锚点框 (Anchor Boxes): 在图像上预设的一系列不同尺寸和长宽比的参考框。模型学习的是如何将这些锚点框调整到真实物体的位置,而不是从零开始预测边界框。
- 非极大值抑制 (Non-Maximum Suppression, NMS): 目标检测算法在后处理阶段的一个关键步骤。一个物体可能被多个边界框同时检测到,NMS通过保留置信度最高的那个框,并抑制掉与它交并比 (IoU) 过高的其他框,来消除冗余的检测结果。
核心评估指标
-
交并比 (Intersection over Union, IoU): 这是衡量单个预测框有多准确的核心指标。它的计算方式是:
IoU的值介于0和1之间,值越大表示重合度越高。通常,我们会设定一个阈值(如0.5),当IoU大于该阈值时,认为这个预测是正确的(True Positive)。
-
平均精度 (Average Precision, AP): 针对单个类别的评估指标。它综合了模型在不同置信度阈值下的精确率(Precision)和召回率(Recall),是Precision-Recall曲线下的面积。
-
平均精度均值 (mean Average Precision, mAP): 整个模型性能的最终指标。它是所有类别的AP值的平均值。mAP是目标检测领域最通用、最重要的评估标准。