第4章 算法与模型:2D/3D目标检测与跟踪
本章聚焦自动驾驶感知系统中的核心算法模块:YOLO系列、PointPillars、CenterPoint、SORT/DeepSORT。面试中常考察模型选型思维、实时性与精度的工程权衡、以及多目标跟踪的鲁棒性设计。
核心原则: 场景决定模型选型。高速场景优先实时性(YOLO + 轻量3D),城区场景优先精度(CenterPoint + DeepSORT),泊车场景可接受低帧率但需高召回。
🎯 面试问题
YOLO系列在自动驾驶感知中如何平衡实时性与精度?你会在什么场景下选择YOLOv5 vs YOLOv8?
面试官考察点
- 是否了解YOLO各版本的架构差异(跨阶段、Anchor-free、解耦头)。
- 能否结合自动驾驶场景(车端实时性要求、夜间/小目标)进行合理选型。
- 是否思考过模型压缩(剪枝、量化)对精度的影响。
回答框架
- 明确约束:自动驾驶前视感知通常要求 >30 FPS,同时需检测小目标(行人、锥桶)。
- 对比版本:YOLOv5 轻量但小目标召回弱;YOLOv8 引入解耦头+Anchor-free,精度更高,但计算量略增。
- 权衡方案:若硬件资源充足(Orin/双核DSP),优先YOLOv8 + TensorRT FP16;若资源受限(Jetson NX),选择YOLOv5s + 通道剪枝。
- 补充技巧:可级联或使用多尺度训练,结合图像金字塔提升小目标性能。
示例回答
“我会优先分析场景:高速场景可用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 基于锚点)。
- 是否具备根据项目需求(如远距离小目标、多模态融合)进行技术选型的能力。
回答框架
- 架构差异:PointPillars用柱体+2D Backbone,效率高但丢失Z轴细节;CenterPoint使用VoxelNet + 中心点回归,精度更高。
- 检测范式:PointPillars基于Anchor,CenterPoint基于点预测(无锚框,更灵活)。
- 选型依据:若需要高实时性(>40 FPS)且检测距离短(<50m),选PointPillars;若需要高精度(长尾场景、小目标),选CenterPoint。
- 项目举例:我们使用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对下游行为预测的严重影响。
- 能否提出实际工程优化(如级联匹配、外观特征更新策略、遮挡处理)。
回答框架
- 核心区别:SORT仅用运动模型(马氏距离),DeepSORT增加外观特征(余弦距离) + 级联匹配。
- ID Switch原因:遮挡时运动预测发散,外观特征可维持身份。
- 优化措施:①使用ReID网络提取外观向量(128维),②对长时间未匹配的轨迹设置“待定”状态,③引入NMS维护跟踪置信度。
- 实际应用:在公开数据集(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翻倍)。