感知算法篇(上)
感知算法篇(下)
感知范畴
静态环境感知
动态物体感知
覆盖任务
分割(语义分割 + 实例分割)
检测 + 跟踪
典型应用
车道线检测、可行驶区域
车辆/行人检测、轨迹预测
感知对象
不动的环境要素
运动的交通参与者
维度
分割
检测
精度
像素级
区域级(边界框)
输出
每个像素的类别
框坐标 + 类别
计算量
大
相对小
适用场景
需要精确轮廓
需要知道"有什么、在哪"
算法
年份
核心改进
解决了什么痛点
R-CNN
2014
Selective Search生成候选区域 → CNN提取特征 → SVM分类
首次将CNN引入检测,但每张图要跑约2000次CNN前向传播,极慢
Fast R-CNN
2015
在共享特征图上做RoIPooling,端到端训练
特征只算一次,速度快了上百倍
Faster R-CNN
RPN(区域生成网络)替代Selective Search
候选区域也由网络生成,真正端到端
核心思路
特点
YOLO
2016
将图片分成 S×S 网格,每个网格直接预测框和类别
速度极快(45 FPS),但小物体检测弱
SSD
多尺度特征图预测,不同层检测不同大小的物体
速度和精度兼顾
RetinaNet
2017
引入 Focal Loss 解决正负样本不均衡
单阶段首次匹配两阶段精度
通俗理解
CenterNet
2019
预测物体中心点的热力图 + 尺寸回归
找到物体的"重心",再往外推算大小
FCOS
逐像素预测:这个像素是否在物体内部 + 到框边的距离
每个像素都投一票,投票决定框的边界
两阶段
单阶段
Anchor-free
高
中(RetinaNet后追平)
中高
速度
慢
快
设计复杂度
中
低(不用设计Anchor)
代表
YOLO/SSD/RetinaNet
CenterNet/FCOS
信息
2D检测能提供
自动驾驶需要
位置
图片上的像素坐标
真实世界坐标(距离自车多少米)
大小
像素宽高
真实尺寸(长×宽×高)
朝向
无
车头朝哪个方向(航向角)
多少km/h、往哪开
路线
输入数据
代表方法
基于LiDAR
点云
VoxelNet、PointPillars、CenterPoint
精度高,但依赖激光雷达
基于摄像头
图像
FCOS3D、SMOKE
成本低,但深度估计不准
多模态融合
图像 + 点云
BEVFusion
融合两者优势,当前主流方向
场景
只有检测
前方车辆变道
每帧重新检测,不知道是同一辆
追踪ID不变,知道是同一辆在变道
行人被遮挡后重现
遮挡时丢失,重现后当新车
可以维持ID(如果算法够好)
预测前车行为
没有时序信息
有历史轨迹才能预测
步骤
做什么
1. 预测
用卡尔曼滤波根据历史轨迹预测下一帧位置
导航软件根据你的速度方向预测你5秒后在哪
2. 匹配
用匈牙利算法将预测框和检测框做最优匹配
相亲匹配,目标是总配对代价最小
3. 更新
用匹配到的检测框修正预测
GPS更新后修正你的实际位置
4. 生灭
新检测创建新轨迹,连续多帧没匹配上的轨迹删除
新面孔登记入场,消失太久注销
SORT
DeepSORT
运动信息
卡尔曼滤波
外观信息
ReID 特征(深度网络提取)
匹配代价
IoU 距离
运动距离 + 外观相似度的加权组合
ID Switch
多(遮挡时容易搞混)
少(即使遮挡也能靠外观认出来)
阶段
第一轮匹配
高分检测框 vs 所有轨迹
先把确定的配好
第二轮匹配
低分检测框 vs 剩余未匹配轨迹
再用低分检测"捞回"被遮挡的物体
方案
ReID特征
传统方案
独立检测器
独立ReID模型
两个网络,慢
JDE
一个网络输出
同一个网络输出
共享特征,快
FairMOT
额外解决检测和ReID的任务冲突
核心创新
ID保持能力
卡尔曼滤波 + 匈牙利算法
极快
弱(遮挡就丢)
+ 深度外观特征
强
ByteTrack
2022
两轮匹配,不丢低分检测
2021
联合检测与跟踪
任务
上篇/下篇
核心算法
分类
上篇概述
CNN 系列
上篇深入
FCN / U-Net / DeepLab / PSPNet / Mask R-CNN
本篇深入
R-CNN系列 / YOLO / CenterNet / PointPillars
跟踪
SORT / DeepSORT / ByteTrack / FairMOT