3. 感知层KPI - 目标检测:检测精度(Precision/Recall)、平均精度(mAP)、交并比(IoU)、漏检率/误检率
好,咱们进入感知层最核心的一块——目标检测。
说实话,我在ADAS行业摸爬滚打这么多年,见过太多项目在感知这块翻车。有的车明明前面有行人,系统就是没检测到;有的更离谱,把路边的垃圾桶当成了小孩。这些问题的根源,说白了就是目标检测的KPI没定好,或者测得不严。
今天我就把这块掰开揉碎了讲。你搞懂了这些指标,才算真正入了ADAS感知的门。
3.1 交并比(IoU)—— 检测框的“准头”
先聊IoU。这玩意儿是所有检测指标的基础。
IoU的全称是Intersection over Union,中文叫交并比。它衡量的是你预测的框和真实框(Ground Truth)之间重合的程度。
公式很简单:
IoU = (预测框 ∩ 真实框的面积) / (预测框 ∪ 真实框的面积)
打个比方,你拿个圈去套地上的一个点。圈套得越准,重合面积越大,IoU就越高。如果完全重合,IoU就是1;如果完全没挨着,就是0。
实际项目中的阈值设定
在ADAS里,我们通常不会要求IoU=1,那太理想了。一般会设个阈值,比如0.5或0.7。
- IoU ≥ 0.5:算检测成功。这是比较宽松的标准,适合早期验证。
- IoU ≥ 0.7:算精确检测。这是量产项目的常见要求。
- IoU ≥ 0.9:算高精度。一般用于泊车这类对位置极其敏感的场景。
我的经验
我曾经在一个AEB项目中,把IoU阈值从0.5提到0.7,结果误检率直接翻了一倍。为什么?因为很多原本“勉强算对”的检测框,现在被判为错了。所以阈值不是越高越好,得结合场景来调。
3.2 检测精度(Precision)与召回率(Recall)—— 一对“冤家”
有了IoU,我们就能判断每个检测框对不对。但光看单个框还不够,得看整体表现。这就引出了Precision和Recall。
这两个指标,你想想看,其实是一对矛盾体。
- Precision(精度):你检测出来的目标里,有多少是真正对的?公式:TP / (TP + FP)。说白了就是“我报的准不准”。
- Recall(召回率):所有真实的目标里,你检测出来了多少?公式:TP / (TP + FN)。说白了就是“我漏没漏”。
这里有几个关键概念:
- TP(True Positive):正确检测。IoU超过阈值,且类别也对。
- FP(False Positive):误检。检测到了,但实际没有这个目标,或者类别错了。
- FN(False Negative):漏检。实际有目标,但系统没检测到。
- TN(True Negative):正确未检测。这个在目标检测里用得少,因为背景太多了。
注意!
Precision和Recall是相互制约的。你提高Precision(只检测最有把握的),Recall就会下降(漏掉很多)。反过来,你想提高Recall(尽量不漏),Precision就会下降(误报增多)。
我见过一个团队,为了追求Recall,把检测阈值降到极低。结果呢?车在路上跑,系统每隔几秒就报一次“前方有障碍物”,其实只是路面的一个阴影。驾驶员直接关掉了系统。
3.3 平均精度(mAP)—— 综合实力的“成绩单”
Precision和Recall是一对,但光看一个点不够。比如你设定IoU=0.5,Precision=0.9,Recall=0.8。这看起来不错,但换个阈值呢?可能就崩了。
所以业界引入了mAP(mean Average Precision)。
mAP的计算分两步:
- 画PR曲线:改变检测的置信度阈值,得到一系列(Recall, Precision)点,连成曲线。
- 计算AP:PR曲线下的面积,就是AP(Average Precision)。
- 取平均:对所有类别(行人、车辆、自行车等)的AP取平均,就是mAP。
mAP越高,说明你的模型在不同阈值下表现都稳定。我个人习惯,量产项目至少要求mAP ≥ 0.7(在COCO标准下)。
ADAS场景下的mAP要求
| 场景 | 推荐mAP(IoU=0.5) | 说明 |
|---|---|---|
| 高速公路巡航 | ≥ 0.8 | 目标相对简单,要求高精度 |
| 城市道路 | ≥ 0.7 | 场景复杂,目标多样 |
| 泊车场景 | ≥ 0.6 | 近距离,对位置精度要求更高 |
| 夜间/雨雾 | ≥ 0.5 | 条件恶劣,能检测到就算不错 |
3.4 漏检率与误检率—— 安全与体验的“天平”
最后聊两个工程上最直接的指标:漏检率和误检率。
- 漏检率(Miss Rate):FN / (TP + FN)。说白了就是“该检的没检出来”。
- 误检率(False Positive Rate):FP / (FP + TN)。说白了就是“不该检的检出来了”。
在ADAS里,这两个指标直接关系到安全性和用户体验。
安全第一
对于AEB(自动紧急制动)这类功能,漏检率是绝对不能高的。你想想,如果前面有个小孩,系统漏检了,那后果不堪设想。所以AEB的漏检率通常要求 < 1%。
但误检率呢?如果系统动不动就急刹车,驾驶员肯定骂娘。所以误检率也得控制,一般要求 < 0.1% 或更低。
我的避坑指南
我曾经在一个项目中,为了降低漏检率,把检测阈值调得很低。结果误检率飙升,系统在高速上频繁报警。最后我们不得不重新标定,找到一个平衡点。
我的建议是:先定安全指标(漏检率上限),再优化体验指标(误检率下限)。安全永远是红线。
3.5 小结—— 这些指标怎么用?
好了,咱们捋一下:
- IoU:判断单个检测框准不准。
- Precision/Recall:看整体检测的“准”和“全”。
- mAP:综合评估模型在不同阈值下的表现。
- 漏检率/误检率:直接对应安全性和用户体验。
在实际项目中,我一般会这样用:
- 先定IoU阈值(比如0.5或0.7)。
- 用mAP评估模型整体水平。
- 针对关键场景(如行人、自行车),单独看漏检率和误检率。
- 反复调参,直到安全指标达标,体验指标可接受。
嗯,这就是目标检测KPI的核心。下一章咱们聊聊分类和跟踪的指标,那个更有意思。