4、场景标注方法:语义标注、行为标注、危险度标注、标注一致性校验
场景标注这件事,说白了就是给场景打标签。你想想看,我们辛辛苦苦采集了几万公里的数据,生成了几千个场景片段,如果不做标注,这些数据就是一堆乱码。我刚开始做预期功能安全那会儿,就吃过这个亏——数据堆了一硬盘,结果要分析的时候根本找不到想要的场景。
嗯,今天我们就来聊聊场景标注的四个核心维度。我个人习惯把它们分成两类:一类是描述场景「是什么」的,另一类是描述场景「有多危险」的。
4.1 语义标注:给场景贴上「身份标签」
语义标注,说白了就是回答「这个场景里有什么」。比如:是白天还是黑夜?是晴天还是雨天?路上有没有行人?车道线清不清晰?
我在项目中遇到过最头疼的事,就是不同标注员对同一个场景的理解不一样。比如「能见度低」,有人觉得200米就算低,有人觉得50米才算。所以语义标注的第一步,一定是定义好标签体系。
语义标注的典型标签维度:
- 环境条件:光照(白天/黄昏/夜晚)、天气(晴/雨/雪/雾)、路面(干燥/湿滑/结冰)
- 道路结构:直道/弯道、路口类型(十字/丁字/环岛)、车道数、是否有中央隔离带
- 交通参与者:车辆(轿车/卡车/公交车)、行人(成人/儿童/群体)、非机动车
- 基础设施:交通信号灯状态、标志牌类型、护栏/路肩
这里有个小技巧:语义标注的粒度要跟你的功能设计对齐。如果你做的是AEB(自动紧急制动),那「行人突然横穿」这个标签就比「路上有人」有用得多。
4.2 行为标注:描述「发生了什么」
语义标注是静态的,行为标注是动态的。它要回答的是「这个场景里发生了什么动作」。比如:前车急刹、行人突然加速跑、旁边车道车辆强行加塞。
我记得有一次做L3级自动驾驶的测试,系统在高速上遇到前车减速,它处理得很好。但遇到前车「先减速、再加速、又突然减速」这种复杂行为时,系统就懵了。为什么?因为我们的行为标注里只标了「前车减速」,没标「前车犹豫」。你看,行为标注的粒度直接影响系统能力的边界。
行为标注的常见分类:
- 主车行为:加速、减速、转向、变道、停车
- 目标行为:匀速行驶、急刹、切入、切出、横穿、折返
- 交互行为:让行、抢行、跟随、超车、并线
- 异常行为:突然加速、蛇形行驶、逆向行驶、静止不动
我个人建议,行为标注最好用「动词+程度副词」的结构。比如「急刹」和「缓刹」要区分开,「快速切入」和「缓慢切入」也要区分开。你想想看,系统对这两种行为的响应策略是完全不同的。
4.3 危险度标注:给场景「打分」
危险度标注,这是预期功能安全里最核心的一步。它要回答的是「这个场景有多危险」。我见过很多团队,标注了几千个场景,结果分析的时候发现90%都是安全场景,真正有危险的没几个。这就是典型的「标注了,但没标到点子上」。
危险度标注一般用三个维度来评估:
| 维度 | 含义 | 等级示例 |
|---|---|---|
| 暴露概率 | 这个危险场景出现的频率 | E1(极少)~ E4(极高) |
| 可控性 | 驾驶员能否避免事故 | C1(容易控制)~ C3(难以控制) |
| 严重度 | 事故可能造成的伤害程度 | S1(轻伤)~ S3(死亡) |
注意:危险度标注不是拍脑袋定的。我曾经见过一个团队,把「行人横穿马路」标成了S3(最高严重度),但实际场景里车速只有20km/h。这种过度标注会导致后续的测试用例设计严重偏离实际。危险度一定要结合场景的上下文来定。
嗯,这里我分享一个我自己的做法:危险度标注最好采用「半自动+人工复核」的方式。先用规则引擎根据车速、距离、目标类型等参数自动计算一个初始危险度,然后由标注专家进行人工复核。这样既保证了效率,又避免了机器误判。
4.4 标注一致性校验:别让标注员「各自为政」
标注一致性校验,这是整个标注流程里最容易被忽视、但也是最重要的一环。你想想看,如果三个标注员对同一个场景给出了三种不同的标签,那这个标注还有什么意义?
我曾经在一个项目里做过统计:在没有一致性校验的情况下,不同标注员对「危险度」的标注一致性只有62%。也就是说,将近40%的场景,不同的人给出了不同的危险等级。这直接导致后续的验证结果不可信。
标注一致性校验通常包括三个方面:
- 标注员内部一致性:同一个标注员在不同时间对同一场景的标注是否一致
- 标注员间一致性:不同标注员对同一场景的标注是否一致
- 标注与真值一致性:标注结果与标准答案(如果有)是否一致
常用的校验指标:
- Cohen's Kappa:衡量两个标注员的一致性,值>0.8表示一致性良好
- Fleiss' Kappa:衡量多个标注员的一致性
- 准确率/召回率:与真值对比时的指标
我建议,一致性校验要贯穿整个标注流程,而不是到最后才做。每标注完100个场景,就抽10个做一致性检查。如果发现Kappa值低于0.7,就要停下来重新培训标注员,或者调整标签定义。
4.5 场景标注的整体流程
好了,上面四个维度都讲完了。我画了一张图,把整个场景标注的流程串起来,你一看就明白了。
从这张图你可以看到,四个标注维度是并行进行的,但一致性校验会贯穿始终。如果一致性不达标,就要反馈回去重新标注或调整标签定义。这个闭环很重要,我见过太多团队只做标注不做校验,结果标注库的质量根本没法保证。
我的经验之谈:
标注一致性校验最好在标注完成20%的时候就做一次全面检查。如果等到全部标注完才发现问题,返工的成本会让你哭的。我曾经在一个项目里,就是因为前期没做一致性检查,最后发现2000个场景里有600个需要重新标注,白白浪费了两周时间。
好了,场景标注的方法就讲到这里。记住一句话:标注的质量决定了场景库的价值。你标注得再漂亮,如果一致性差、粒度不对,那后面的验证工作就是空中楼阁。
公众号:蓝海资料掘金营,微信deep3321