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的计算分两步:

  1. 画PR曲线:改变检测的置信度阈值,得到一系列(Recall, Precision)点,连成曲线。
  2. 计算AP:PR曲线下的面积,就是AP(Average Precision)。
  3. 取平均:对所有类别(行人、车辆、自行车等)的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:综合评估模型在不同阈值下的表现。
  • 漏检率/误检率:直接对应安全性和用户体验。

在实际项目中,我一般会这样用:

  1. 先定IoU阈值(比如0.5或0.7)。
  2. 用mAP评估模型整体水平。
  3. 针对关键场景(如行人、自行车),单独看漏检率和误检率。
  4. 反复调参,直到安全指标达标,体验指标可接受。

嗯,这就是目标检测KPI的核心。下一章咱们聊聊分类和跟踪的指标,那个更有意思。