2、目标检测基础:常用目标检测算法(YOLO、SSD等)简介、检测框输出格式(坐标、宽高)与置信度

在机器人目标跟随任务中,视觉感知是决策与控制的起点。机器人需要通过摄像头获取的图像,实时判断“目标在哪里”“目标是什么”“目标有多大”。这一过程的核心技术便是目标检测(Object Detection)。与图像分类不同,目标检测不仅要回答“图像中有什么”,还要回答“目标在图像中的具体位置”。本章将围绕目标检测的基础知识展开,重点讲解YOLO、SSD等主流算法的设计思想与适用场景,深入剖析检测框的输出格式(中心坐标、宽高)与置信度的物理含义,帮助学习者为后续的PID控制与丢失重搜逻辑打下坚实的感知基础。

目标检测算法与输出格式知识框架 常用检测算法 • YOLO系列:单阶段,实时性高 • SSD:多尺度特征图检测 • Faster R-CNN:两阶段,精度高 • 选型:速度 vs 精度权衡 检测框输出格式 • 中心坐标 (cx, cy) • 宽高 (w, h) • 归一化 / 像素坐标 • 类别标签 + 置信度 置信度含义 • 包含目标的概率 • 框定位的准确程度 • 阈值筛选(如0.5) • 低置信度处理策略 下游应用:机器人目标跟随 检测框中心 → PID控制 → 丢失重搜逻辑 关键注意事项 坐标归一化与反归一化 | 置信度阈值设定 | 多目标匹配策略 | 检测帧率与实时性

2.1 核心原理:从分类到定位的跨越

目标检测算法的本质是在图像中同时完成“分类”和“定位”两个任务。早期的计算机视觉研究主要集中于图像分类,即判断整张图片属于哪个类别。然而,在机器人跟随场景中,仅仅知道“画面中有人”是远远不够的,机器人必须知道“人在画面的哪个位置”,才能调整自身运动方向。因此,目标检测算法引入了边界框(Bounding Box)的概念,用一个矩形框将目标物体框选出来。

从技术演进路径来看,目标检测算法主要分为两大流派:两阶段检测器与单阶段检测器。两阶段检测器的代表是Faster R-CNN,其思路是先通过区域建议网络(RPN)生成可能包含目标的候选区域,再对这些区域进行分类和边框回归。这种“先粗后精”的策略精度较高,但计算量较大,难以满足机器人实时控制的需求。单阶段检测器则跳过了候选区域生成步骤,直接在特征图上预测目标的类别和位置,代表算法包括YOLO(You Only Look Once)和SSD(Single Shot MultiBox Detector)。

YOLO的核心思想是将图像划分为S×S的网格,每个网格负责预测固定数量的边界框及其置信度。以YOLOv5为例,输入图像被划分为80×80、40×40、20×20三种尺度的网格,分别对应小、中、大目标的检测。SSD则在不同尺度的特征图上进行预测,浅层特征图保留更多细节信息,适合检测小目标;深层特征图语义信息丰富,适合检测大目标。对于机器人跟随任务,YOLO系列因其出色的速度-精度平衡,成为工程实践中的首选。

工程选型建议:在嵌入式平台(如Jetson Nano、树莓派)上运行目标检测时,建议优先考虑YOLOv5s或YOLOv8n等轻量级模型。若使用SSD,可选择MobileNet-SSD组合,其参数量小、推理速度快,但精度略低于YOLO系列。实际选型时,应结合机器人平台的算力、摄像头分辨率和控制周期综合评估。

2.2 检测框输出格式:坐标、宽高与归一化

无论使用哪种检测算法,最终输出的检测框信息都遵循统一的格式约定。理解这些格式是编写控制代码的前提。常见的输出格式有两种:像素坐标格式和归一化坐标格式。

像素坐标格式直接使用图像中的像素值表示检测框位置。例如,对于一张640×480分辨率的图像,检测框可以表示为 (x_min, y_min, x_max, y_max),即左上角和右下角的坐标。另一种更常用的表示方法是 (cx, cy, w, h),其中 (cx, cy) 是检测框中心的像素坐标,w 和 h 分别是框的宽度和高度(以像素为单位)。这种中心点表示法在后续的PID控制中非常方便,因为机器人需要直接获取目标中心的像素位置来调整云台角度。

归一化坐标格式则将坐标值缩放到0~1之间。YOLO系列默认使用归一化格式,其计算公式为:

cx_norm = cx_pixel / image_width
cy_norm = cy_pixel / image_height
w_norm = w_pixel / image_width
h_norm = h_pixel / image_height

归一化的好处在于,当输入图像尺寸变化时,检测框的相对位置保持不变,便于模型在不同分辨率下迁移。但在实际控制中,必须将归一化坐标乘以图像宽高,还原为像素坐标后才能用于PID计算。

表示方法 格式 取值范围 适用场景
像素坐标(两点式) (x_min, y_min, x_max, y_max) 0 ~ 图像宽/高 传统图像处理、OpenCV绘图
像素坐标(中心式) (cx, cy, w, h) 0 ~ 图像宽/高 PID控制、目标跟踪
归一化坐标 (cx_norm, cy_norm, w_norm, h_norm) 0.0 ~ 1.0 模型训练、跨分辨率推理

2.3 置信度:衡量检测结果的可信程度

置信度(Confidence)是目标检测算法输出的另一个关键参数,它表示模型对“当前边界框内确实包含目标”以及“边界框定位准确”的综合信心。在YOLO中,置信度由两部分组成:目标存在概率(Pr(Object))和交并比(IoU)。具体计算公式为:

Confidence = Pr(Object) × IoU(pred, truth)

其中,Pr(Object) 表示网格单元内是否存在目标的概率,IoU 表示预测框与真实框的重叠程度。在实际推理时,模型还会为每个检测框输出一个类别概率向量,最终得分由置信度与类别概率相乘得到。例如,YOLOv5的输出维度为 (batch_size, num_anchors, 5 + num_classes),其中前5个值分别为 (cx, cy, w, h, confidence),后续为各类别的概率。

在机器人跟随任务中,置信度阈值的选择直接影响系统的鲁棒性。阈值设置过高,可能导致目标漏检(假阴性),机器人会丢失目标;阈值设置过低,则可能引入大量误检(假阳性),机器人会跟随错误的目标。通常建议将置信度阈值设置在0.4~0.6之间,具体数值需根据实际场景的光照、遮挡情况和模型训练质量进行调优。

风险提示:当检测框的置信度低于阈值时,不应直接丢弃该检测结果。在目标短暂被遮挡或快速运动导致模糊时,置信度会暂时下降。此时可以结合卡尔曼滤波或简单的帧间预测,维持对目标位置的估计,避免因单帧低置信度而触发不必要的丢失重搜流程。

2.4 实战场景:从检测输出到跟随控制的桥接

为了更直观地理解检测框输出如何驱动机器人运动,我们以一个具体的跟随任务为例进行拆解。假设机器人搭载的摄像头分辨率为640×480,使用YOLOv5s模型检测目标人物,模型输出以下归一化检测结果:

类别: person
置信度: 0.87
归一化中心坐标: (cx_norm=0.52, cy_norm=0.48)
归一化宽高: (w_norm=0.15, h_norm=0.35)

首先,将归一化坐标转换为像素坐标:

cx_pixel = 0.52 × 640 = 332.8
cy_pixel = 0.48 × 480 = 230.4
w_pixel = 0.15 × 640 = 96
h_pixel = 0.35 × 480 = 168

此时,机器人控制程序可以获取目标中心在图像中的位置 (332.8, 230.4)。若摄像头画面中心为 (320, 240),则水平偏差为 332.8 - 320 = 12.8 像素,垂直偏差为 230.4 - 240 = -9.6 像素。这些偏差值将作为PID控制器的输入,驱动云台电机转动,使目标始终保持在画面中心附近。

同时,检测框的宽高信息也有重要用途。当目标距离机器人较近时,检测框的宽高值会增大;距离较远时,宽高值会减小。通过计算检测框面积的变化率,可以粗略估计目标与机器人的相对距离变化,从而控制机器人的前进速度,实现“近停远走”的跟随策略。

经验分享:在实际工程中,建议对检测框的宽高进行平滑滤波(如移动平均或一阶低通滤波),避免因单帧检测框抖动导致速度控制指令频繁波动。滤波窗口大小通常取5~10帧,既能有效抑制噪声,又不会引入明显的延迟。

2.5 常见误区与总结复盘

在目标检测基础的学习和实践中,学习者常陷入以下几个误区,需要特别警惕:

  • 误区一:混淆归一化坐标与像素坐标。在编写控制代码时,忘记将归一化坐标乘以图像尺寸,导致目标位置计算错误,机器人转向错误方向。解决方法是建立统一的坐标转换工具函数,并在代码注释中明确标注当前坐标类型。
  • 误区二:忽视置信度阈值的动态调整。固定使用一个置信度阈值应对所有场景,导致在逆光、夜间等复杂光照条件下检测性能急剧下降。建议根据场景亮度、目标大小等特征,动态调整阈值。
  • 误区三:将检测框中心直接等同于目标物理中心。当目标部分被遮挡时,检测框中心可能偏离目标的实际几何中心。此时应结合目标类别先验知识(如人体中心通常位于框的下半部分)进行修正。
  • 误区四:忽略多目标情况下的匹配问题。当画面中出现多个同类目标时,仅凭置信度无法确定哪个是跟随目标。需要引入目标ID跟踪(如DeepSORT)或基于位置连续性的匹配策略。

总结而言,目标检测是机器人视觉感知的基石。理解YOLO、SSD等算法的设计哲学,掌握检测框的坐标格式与置信度含义,能够帮助开发者正确解析模型输出,为后续的PID控制和丢失重搜逻辑提供可靠的数据支撑。在下一阶段的开发中,建议学习者先在仿真环境中验证坐标转换和阈值筛选逻辑,再迁移到实体机器人上调试,这样可以大幅缩短开发周期,降低调试风险。