4. 环境感知与目标检测
无人系统要在真实任务中自主行动,第一步不是“看见”,而是“看懂”。环境感知与目标检测负责把摄像头、激光雷达、毫米波雷达等传感器输出的原始数据,转换成带有类别、位置、尺寸和置信度的结构化目标列表,供后续预测、规划与决策模块使用。本节围绕无人系统任务场景,梳理基于深度学习的2D/3D目标检测、语义分割与实例分割方法,并给出在真实或仿真数据集上完成障碍物与目标识别的可执行路径。
一、三类感知任务的本质区别
2D目标检测输出图像平面上的矩形框,形式为 (x_min, y_min, x_max, y_max, class, score),它回答“画面里有什么、在哪个像素区域”。语义分割为每个像素分配类别标签,输出与图像同尺寸的类别图,回答“每个像素属于道路、天空还是植被”,但不区分同类个体。实例分割在语义分割基础上进一步区分同一类别的不同个体,输出每个目标的像素级掩码,回答“这辆车和那辆车分别是哪些像素”。
3D目标检测则直接输出目标在三维空间中的位置与朝向,常用表示是 (x, y, z, l, w, h, yaw, class, score),其中 (x, y, z) 是目标中心在自车坐标系下的坐标,(l, w, h) 是长宽高,yaw 是绕竖直轴的偏航角。对无人车、无人机和无人船而言,只有3D信息才能直接支撑避障与路径规划,因此3D检测是任务级感知的核心。
二、2D检测的工程实现要点
2D检测主流方法分为两阶段与单阶段两类。两阶段以Faster R-CNN为代表,先由区域建议网络生成候选框,再对候选框分类与回归,精度较高但速度偏慢;单阶段以YOLO系列、RetinaNet为代表,直接在特征图上预测类别与框偏移,速度优势明显,适合无人系统实时感知。工程中更常用YOLOv8或YOLOv11作为基线。
训练一个可用的2D检测器,关键在数据与损失。以YOLOv8为例,输入分辨率设为 640×640,batch size 取16,初始学习率 0.01,采用SGD动量0.937,训练100个epoch。损失由三部分组成:分类损失用BCE,框回归用CIoU,置信度用BCE。数据增强常用Mosaic、随机缩放、HSV抖动和水平翻转。评估指标看mAP@0.5和mAP@0.5:0.95,前者衡量框是否大致对准,后者对定位精度要求更严。
实际部署时,2D检测的典型问题是小目标漏检和遮挡误检。小目标可通过提高输入分辨率、增加P2小目标检测头、或在数据集中过采样小目标样本来缓解;遮挡则依赖更强的上下文建模,例如引入注意力模块或使用更大感受野的骨干网络。
三、3D检测:点云与多模态融合
3D检测按输入模态可分为三类。纯点云方法以PointPillars、CenterPoint、SECOND为代表,将点云体素化或柱状化后用3D卷积或稀疏卷积提取特征,再在BEV(鸟瞰图)上做检测头预测。纯图像方法如BEVDet、BEVFormer,通过透视变换或Transformer将多视角图像投影到BEV空间,成本低但深度估计误差大。多模态融合方法如MVX-Net、BEVFusion,将点云与图像特征在BEV空间对齐融合,兼顾几何精度与纹理信息,是当前无人系统感知的主流方向。
以PointPillars为例,其处理链为:点云按 0.16m×0.16m 的柱体划分,每个柱体内最多保留32个点,用PointNet提取柱特征,得到 (H, W, C) 的伪图像,再用2D卷积骨干网络提取BEV特征,最后接SSD式检测头输出3D框。训练时正负样本按IoU阈值划分,正样本IoU大于0.6,负样本小于0.45,回归损失用Smooth L1,分类用Focal Loss。
3D检测的评估指标是3D mAP和BEV mAP,通常按IoU阈值0.5和0.7分别统计。对无人车而言,0.7阈值下的BEV mAP更能反映实际避障能力,因为BEV平面上的位置误差直接决定规划模块是否会把障碍物判为可通行。
四、语义分割与实例分割的落地方式
语义分割在无人系统中主要用于可通行区域提取和场景理解。以DeepLabV3+为例,骨干网络用ResNet-50或MobileNetV3,空洞卷积扩大感受野,ASPP模块捕获多尺度上下文。训练时输入 512×512,类别包括道路、人行道、建筑、植被、天空、车辆、行人等,损失用交叉熵加Dice损失,评估看mIoU。实际部署中,语义分割结果常与3D检测结果做后融合:把3D框投影到图像上,检查框内像素的语义类别是否与检测类别一致,不一致则降低置信度或触发二次验证。
实例分割适合需要区分个体的场景,例如统计路口车辆数、跟踪特定行人。YOLOv8-seg在检测头基础上增加掩码分支,输出每个实例的像素掩码,速度与检测接近,适合实时系统。训练时掩码损失用BCE,与检测损失联合优化。
五、数据集与训练流程示例
无人系统感知常用数据集包括KITTI(2D/3D检测、语义分割)、nuScenes(多模态3D检测)、Waymo Open Dataset(大规模3D检测)以及CARLA仿真数据集。以KITTI 3D检测为例,7481张训练样本、7518张测试样本,类别为Car、Pedestrian、Cyclist,评估按Easy/Moderate/Hard三档难度划分。
一个可复现的训练流程如下:
# 以PointPillars在KITTI上训练为例(示例参数)
数据准备:KITTI点云 + 标注,按7:3划分训练/验证
体素化:柱体尺寸 0.16m × 0.16m,最大柱数 12000,每柱最多32点
网络:PointNet柱编码 → 2D CNN骨干 → SSD检测头
训练:batch size 4,学习率 2e-4,Adam优化器,80 epoch
损失:分类Focal Loss + 回归Smooth L1
评估:3D mAP@0.7,Car类别Moderate难度目标 ≥ 60% 为可用基线
训练过程中重点观察三个信号:训练损失是否稳定下降、验证集3D mAP是否在20 epoch后趋于平台、以及BEV可视化中远距离目标是否出现漏检。若验证mAP远低于训练mAP,优先检查数据增强是否过强或标注是否一致;若BEV中目标框普遍偏移,检查外参标定和体素化范围是否与标注坐标系一致。
六、结果判读与常见问题
检测结果不能只看mAP一个数字。实际调试时,应把预测框与真值框叠加到BEV或图像上逐帧查看,重点关注:近距离目标是否稳定、遮挡目标是否漏检、同类目标是否被NMS误删、以及朝向角是否出现180度翻转。朝向翻转通常由yaw角回归的周期性导致,可通过引入方向分类分支或使用sin/cos双通道回归解决。
完成本节任务后,应能针对给定无人系统场景,选择合适的2D/3D检测与分割方法,配置训练参数,在真实或仿真数据集上完成障碍物与目标识别,并通过BEV可视化和mAP指标判断感知结果是否满足下游规划需求。