第4章 算法与模型:2D/3D目标检测与跟踪

本章聚焦自动驾驶感知系统中的核心算法模块:YOLO系列、PointPillars、CenterPoint、SORT/DeepSORT。面试中常考察模型选型思维、实时性与精度的工程权衡、以及多目标跟踪的鲁棒性设计。

场景需求分析 模型特性评估 量化指标对比 提出权衡方案 高速/城区/泊车 YOLO/PointPillars/CenterPoint FPS vs mAP/mAP3D 剪枝/量化/级联 SORT / DeepSORT 跟踪后处理 卡尔曼滤波 + 匈牙利匹配 / 外观特征ReID
核心原则: 场景决定模型选型。高速场景优先实时性(YOLO + 轻量3D),城区场景优先精度(CenterPoint + DeepSORT),泊车场景可接受低帧率但需高召回。

🎯 面试问题

YOLO系列在自动驾驶感知中如何平衡实时性与精度?你会在什么场景下选择YOLOv5 vs YOLOv8?

面试官考察点

  • 是否了解YOLO各版本的架构差异(跨阶段、Anchor-free、解耦头)。
  • 能否结合自动驾驶场景(车端实时性要求、夜间/小目标)进行合理选型。
  • 是否思考过模型压缩(剪枝、量化)对精度的影响。

回答框架

  1. 明确约束:自动驾驶前视感知通常要求 >30 FPS,同时需检测小目标(行人、锥桶)。
  2. 对比版本:YOLOv5 轻量但小目标召回弱;YOLOv8 引入解耦头+Anchor-free,精度更高,但计算量略增。
  3. 权衡方案:若硬件资源充足(Orin/双核DSP),优先YOLOv8 + TensorRT FP16;若资源受限(Jetson NX),选择YOLOv5s + 通道剪枝。
  4. 补充技巧:可级联或使用多尺度训练,结合图像金字塔提升小目标性能。

示例回答

“我会优先分析场景:高速场景可用YOLOv8s(30 FPS,mAP 52%),城区则用YOLOv8m(22 FPS,mAP 56%)。若硬件仅能跑YOLOv5s,我会通过int8量化和通道剪枝将FPS从25提升至40,同时保持mAP下降<1%。实时性优先时,还可关闭输入图像的两次缩放。”

可能追问

  • YOLOv8的Task-Aligned Assigner相比YOLOv5的SimOTA有何改进?
  • 如何处理夜间低照度下的检测退化?
  • 你如何在嵌入式平台部署YOLO时做内存优化?
⚠️ 避坑提醒:不要只谈“YOLO最新版最好”。面试官看重你针对不同约束(功耗、帧率、目标尺度)做工程决策的能力。避免空谈模型结构,要结合自动驾驶真实路况。

🎯 面试问题

PointPillars和CenterPoint在3D目标检测中的核心差异是什么?你们项目最终为何选择其中一个?

面试官考察点

  • 是否理解点云特征提取范式(体素 vs 柱体 vs 点云直接处理)。
  • 对CenterPoint提出的Center-based思想的理解(基于点 vs 基于锚点)。
  • 是否具备根据项目需求(如远距离小目标、多模态融合)进行技术选型的能力。

回答框架

  1. 架构差异:PointPillars用柱体+2D Backbone,效率高但丢失Z轴细节;CenterPoint使用VoxelNet + 中心点回归,精度更高。
  2. 检测范式:PointPillars基于Anchor,CenterPoint基于点预测(无锚框,更灵活)。
  3. 选型依据:若需要高实时性(>40 FPS)且检测距离短(<50m),选PointPillars;若需要高精度(长尾场景、小目标),选CenterPoint。
  4. 项目举例:我们使用CenterPoint,因为城市路口需检测5%被遮挡行人,中心点预测比锚框召回高8%。

示例回答

“PointPillars将点云投影为伪图像,速度极快(55 FPS on RTX 3090)但损失垂直分辨率;CenterPoint使用VoxelNet + 中心点扩散,mAP高出4-5个点,但仅30 FPS。我们最终选CenterPoint,因为需要检测10米外的儿童模型(尺寸仅3x3点云),中心点回归比锚框稳定。”

可能追问

  • CenterPoint中的多任务回归头如何共享特征?训练时如何平衡损失?
  • 能否将CenterPoint的结果与2D检测做融合?融合策略是怎样的?
  • 针对点云稀疏区域(远距离),你的模型如何处理回归不确定性?
⚠️ 避坑提醒:不要直接“因为精度高所以选CenterPoint”。一定要结合你的项目场景(传感器配置、计算平台、检测范围)给出理由。如果面试官追问“为什么不选PointRCNN”,也要能对比。

🎯 面试问题

SORT和DeepSORT在多目标跟踪中的核心区别?你们如何解决遮挡导致的ID Switch问题?

面试官考察点

  • 是否理解SORT的卡尔曼滤波+匈牙利匹配框架,以及DeepSORT引入外观特征的必要性。
  • 是否了解自动驾驶中ID Switch对下游行为预测的严重影响。
  • 能否提出实际工程优化(如级联匹配、外观特征更新策略、遮挡处理)。

回答框架

  1. 核心区别:SORT仅用运动模型(马氏距离),DeepSORT增加外观特征(余弦距离) + 级联匹配。
  2. ID Switch原因:遮挡时运动预测发散,外观特征可维持身份。
  3. 优化措施:①使用ReID网络提取外观向量(128维),②对长时间未匹配的轨迹设置“待定”状态,③引入NMS维护跟踪置信度。
  4. 实际应用:在公开数据集(MOT17)ID Switch降低约40%,但需额外ReID模型带来10%计算开销。

示例回答

“SORT仅依赖运动,遮挡超过0.3秒就易ID Switch。我们采用DeepSORT级联匹配,并加入外观特征缓存(每帧更新均值)。当车辆被前方大车遮挡2秒后重新出现,外观距离仍为0.6(阈值0.7),成功保持身份。该项目ID Switch下降了55%。”

可能追问

  • 为什么DeepSORT使用级联匹配而非全局匹配?这样做的好处?
  • 外观特征模型训练时,如何构造正负样本对?使用Triplet Loss还是Circle Loss?
  • 如果感知检测有大量漏检(假阴性),你如何改进跟踪生命周期管理?
⚠️ 避坑提醒:不要只答“DeepSORT比SORT好”。要深入说明实际项目中You跟踪的难点(如多目标遮挡、进出边界、点云稀疏),并提出量化的改进效果。避免纸上谈兵。

模型速查对比

模型 模态 核心思想 实时性(典型FPS) 精度(mAP) 适用场景
YOLOv5s 图像 Anchor-based + CSPNet ~60 (TensorRT) ~50% (COCO) 高速巡航,资源受限
YOLOv8s 图像 Anchor-free + 解耦头 ~35 (TensorRT) ~53% (COCO) 城区复杂场景
PointPillars LiDAR 柱体投影 + 2D CNN ~55 (RTX 3090) ~68% (KITTI Car BEV) 点到面快速检测
CenterPoint LiDAR Voxel + 中心点回归 ~30 (RTX 3090) ~74% (KITTI Car BEV) 城市复杂路口
SORT 多模态 卡尔曼 + 匈牙利 ~200 (CPU) MOTA~60% 稀疏场景,低算力
DeepSORT 多模态 运动+外观+级联 ~50 (GPU) MOTA~68% 遮挡频繁的城区
💡 面试加分tips: 面试时主动提及“实时性与精度的权衡曲线”或“模型可视化分析(Grad-CAM, ShapeNet)”,能体现工程思维与业务理解。同时,准备一个自己实际调参的故事(如从YOLOv5x剪枝到YOLOv5s,精度损失<1%但FPS翻倍)。