4000 个场景。TTC 阈值取 1.0 秒:漏警 19.9%、误触发只有 2.2%; 取 4.0 秒:漏警降到 6.2%、误触发冲到 16.7%。 2.0 到 2.5 秒是拐点,也是行业普遍取值。但判对率最高只有 79.9%——因为这个规则不看横向。
前两节都是「让交通更顺」,这一节是「让人不死」。 主动安全的核心矛盾只有一个:漏警和误触发,你更怕哪个。
一、AEB 只做一个判断
自动紧急制动(AEB)要回答的问题非常窄:现在这一瞬间,该不该踩刹车。它不做路径规划、 不做舒适性,只做这一个二选一的判断。 最常用的判据是碰撞时间 TTC:TTC = 距离 ÷ 相对速度。TTC 小于某个阈值就触发。 一个除法,没有模型。 为什么用这么简单的判据?因为它可解释、可验证、可认证。 出了事故要能复现「当时为什么刹/为什么没刹」,一个神经网络的输出没法回答这个问题。 所以真实的 AEB 是「简单判据 + 严格标定」,而不是「一个大模型端到端」。
二、两类错,代价完全不同
漏警:真该刹却没刹——后果是撞。 误触发:不该刹却刹了——后果是被追尾、乘客受惊。 Demo 造了 4000 个场景(距离 5~80 米、相对速度、前车减速度、横向偏移), 按「同车道且按当前速度必撞」定义真危险,再给 AEB 加上感知误差(距离 1.5 米、 相对速度 0.5 米/秒),扫六个阈值:
| TTC 阈值 | 触发率 | 漏警率 | 误触发率 | 判对率 |
|---|---|---|---|---|
| 1.0 秒 | 6.8% | 19.9% | 2.2% | 77.9% |
| 1.5 秒 | 12.3% | 16.4% | 4.3% | 79.3% |
| 2.0 秒 | 17.3% | 13.6% | 6.5% | 79.9% |
| 2.5 秒 | 22.0% | 11.4% | 9.0% | 79.6% |
| 3.0 秒 | 27.2% | 9.1% | 11.8% | 79.1% |
| 4.0 秒 | 34.9% | 6.2% | 16.7% | 77.1% |
| 阈值 1.0 秒:漏警 19.9%,误触发只有 2.2%。1 秒是「马上要撞」的程度, | ||||
| 这时候刹车已经来不及了——漏警这么高就是这个原因。 | ||||
| 阈值 4.0 秒:漏警降到 6.2%,误触发冲到 16.7%。四秒之外只要相对速度大一点就报警, | ||||
| 路上全是误刹。 | ||||
| 这两类错是一条曲线上的两端,不可能同时压到零。所以定阈值不是在「找最优」, | ||||
| 是在选一个你更能承受的失败方式。 |
三、两秒是拐点
看「判对率」那一列:77.9 → 79.3 → 79.9 → 79.6 → 79.1 → 77.1。 在 2.0 秒处最高,两边都往下掉。 有意思的是:判对率的峰值很平(79.9 到 77.1 只差 2.8 个点),但漏警和误触发的比例变了三倍。 这说明「判对率」这个指标选不出阈值——它把两类错误的代价当成一样的。 所以业界普遍取 2 秒上下(对应 TTC 1.6~2.4 秒),不是因为判对率最高, 是因为这个区间里两类错误的绝对量都可控。具体偏 1.6 还是 2.4,取决于车型定位: 家用车偏保守,运动型偏激进。 再加一层现实:高速和市区该用不同的阈值。高速上 2.5 秒才够(刹停距离长), 市区里 1.5 秒就够(速度低、误刹代价大)。一张标定表管所有工况,是做不到的。
四、只算 TTC 的天花板
判对率最高只有 79.9%——注意,这个天花板不是数据不够,是这个规则本身的极限。 差在哪? 它不看横向。相邻车道的车离得很近、相对速度也大, TTC 一算就很危险,可人家根本不在你的车道上。 这些场景全部变成误触发。 Demo 里横向偏移服从标准差 1.6 米的正态, 同车道判据取 1.75 米——也就是说有相当一部分「邻道车」被算成了危险。 所以真实 AEB 必须融合横向位置和车道判断。单靠一个 TTC 数字,无论阈值怎么调, 都会在这个上限附近撞墙。 这条经验能推广:任何「单指标阈值」的方案,天花板都在那个指标漏掉的信息里。 换阈值只能沿着曲线挪,不能把曲线抬高。
五、落地:四件事
① 先定代价比。 「漏一次」和「误触发一次」哪个更严重、严重几倍。 这个数必须由产品和法务一起定,不能由算法定。 ② 分场景标定。 高速、城区、停车场,三套阈值。不要指望一套参数打通。 ③ 横向必须进判据。 车道线识别、目标跟踪, 哪怕只做一个「是否同车道」的二分类,也能把误触发砍掉一大截。 ④ 留数据闭环。 每次触发都要存前后几秒的数据, 事后人工标注「该不该触发」——这是唯一能持续调参的办法。没有闭环的系统,标定一次就用三年, 三年后一定不准。 最后一句:AEB 的指标不能只报「避免了多少事故」。 还要报「误触发了多少次」——因为误触发会导致用户关掉这个功能,关掉之后就一次都不保护了。
六、动手 Demo:AEB:阈值从 1.0 秒提到 4.0 秒,漏警 20% 掉到 6%,误触发 2% 涨到 17%
造 4000 个场景:自车速度 8~33 米/秒、前车速度、初始距离 5~80 米、前车减速度三档、 横向偏移服从正态。按「同车道且按当前速度必撞」定义真危险; 再给 AEB 加上距离 1.5 米、相对速度 0.5 米/秒的感知误差,用带噪的 TTC 在六个阈值下分别算漏警率、 误触发率和判对率。
dv = v_self - v_lead
dmin = np.where(dv > 0, d - dv * dv / (2.0 * np.maximum(a_lead, 0.3)), d)
crash = (dmin < 0.0) & (np.abs(lat) < 1.75) # 同车道且必撞
d_m = d + rg.normal(0.0, 1.5, n) # 感知误差
dv_m = dv + rg.normal(0.0, 0.5, n)
ttc = np.where(dv_m > 0.1, d_m / np.maximum(dv_m, 0.1), 99.0)
for th in (1.0, 1.5, 2.0, 2.5, 3.0, 4.0):
fire = ttc < th
miss = np.mean(~fire & crash) # 漏警
fa = np.mean(fire & ~crash) # 误触发
实跑输出:
--------------------------------------------------------------------
AEB:阈值从 1.0 秒提到 4.0 秒,漏警 20% 掉到 6%,误触发 2% 涨到 17%
--------------------------------------------------------------------
场景数 4000
真危险定义 同车道且按当前速度必撞
感知误差 距离 1.5 米、相对速度 0.5 米/秒
横向判断 AEB 不做,只看 TTC
TTC 阈值 触发率 漏警率 误触发率 判对率
---------------------------------------------
1.0 秒 6.8% 19.9% 2.2% 77.9%
1.5 秒 12.3% 16.4% 4.3% 79.3%
2.0 秒 17.3% 13.6% 6.5% 79.9%
2.5 秒 22.0% 11.4% 9.0% 79.6%
3.0 秒 27.2% 9.1% 11.8% 79.1%
4.0 秒 34.9% 6.2% 16.7% 77.1%
先看两端。**阈值 1.0 秒:漏警 19.9%,误触发只有 2.2%。**
**1 秒是「马上要撞」的程度,这时候刹车已经来不及了**——漏警率这么高就是这个原因。
**阈值 4.0 秒:漏警降到 6.2%,误触发冲到 16.7%。**
**四秒之外只要相对速度大一点就报警,路上全是误刹。**
中间三档里,**2.0 到 2.5 秒是拐点**:漏警 13.6%~11.4%,误触发 6.5%~9.0%。
**这也是行业里 AEB 普遍取 2 秒上下(对应 TTC 1.6~2.4)的原因。**
但真正值得注意的是:**判对率最高只有 79.9%**,
**也就是说这个只看 TTC 的规则,最好也就到这。**
差在哪?**它不看横向。** 相邻车道的车离得很近、相对速度也大,
**TTC 一算就很危险,可人家根本不在你的车道上。**
**所以真实 AEB 必须融合横向位置和车道判断,单靠 TTC 一定误刹。**
两个端点先记住:1.0 秒漏警 19.9%、4.0 秒漏警 6.2%。 漏警降了 13.7 个点,代价是误触发从 2.2% 涨到 16.7%,涨了 7 倍多。 判对率那一列几乎不动(77.9 到 79.9), 这是最值得注意的地方:一个把两类错误等价的指标,在两类错误代价差十倍时是没有用的。 横向那一条是天花板所在:AEB 只用 TTC,不看车道,所以邻道车的场景全部算误触发。 判对率上不去,是因为信息不够,不是参数没调好。 要说明:真危险的定义是我写的物理判据(同车道 + 减速度不足以避免相撞), 感知误差是我设的高斯噪声,场景也是随机生成的。 但漏警/误触发的定义、阈值扫描、判对率的算法都是真的。 还有一点要说清:这里没有建模「驾驶员反应」和「制动延迟」, 所以真危险的比例偏高(漏警那一列的分母包含了很多人本来就会自己刹的场景)。 真实标定必须带上人和车的响应模型。
30 秒实验
- 把感知误差从 1.5 米加到 4.0 米(大雨、逆光),重跑。 每个阈值的漏警和误触发都会同时变差——噪声让两个方向都退化。
- 把横向同车道阈值从 1.75 米改成 2.5 米(更宽的车道),看误触发。 会显著上升——判据放宽,邻道车更容易被算成同车道。
- 把前车减速度的概率分布改成更多「急刹」(0.2 改成 0.4),重跑。 真危险的比例会上升,所有阈值的漏警都会变大。
常见误区
- 「阈值调到最优就行」。两类错在一条曲线上,只能选一个可承受的失败方式,不存在同时最优。
- 「判对率最高的阈值就是最好的」。判对率把两类错误等价,而漏警和误触发的代价差十倍。
- 「AEB 越灵敏越好」。误触发多了用户会关掉,关掉之后一次都不保护。
自测三问(点开对答案)
1. 漏警和误触发分别是什么后果? —— 漏警是真该刹没刹,后果是撞;误触发是不该刹却刹了,后果是被追尾、乘客受惊,以及用户关掉功能。 2. 为什么判对率选不出合适的阈值? —— 它把两类错误当成等价。当漏警和误触发的代价差一个数量级时,判对率最高的点未必是代价最小的点。 3. 只算 TTC 的 AEB 为什么有天花板? —— 它不看横向位置,邻道车会被算成危险,全部变成误触发。这个信息缺口调阈值补不上。交通场景三节讲完:配时、ETA、AEB。下一节进智驾本身——从「车怎么知道自己在哪」开始。
- ☐ (本节完,下一节 10.3.1 感知系统升级)