智能驾驶感知模块的测试评估方法(上)

 请点击文章末尾二维码,关注“智核工场”公众号,获取更多新鲜技术分享。

--------------------------------------------------------------------------------------------------------------------------------

0. 前言

      对于智能驾驶系统而言,感知模块是开发难度最大、投入资源最多的核心部分。在智能驾驶开发团队内部,感知模块需要独立进行评测才能及早发现潜在缺陷或判断性能是否有改进。随着近几年BEV、OCC、E2E等新技术方案被越来越多企业应用,感知的评测变得越来越艰难,效率也变得越来越低下。本文作者基于在智驾测试行业多年经验,试图总结感知评测的基本规律和效率提升方法,以供读者一些启发。

      本文将分上、下两部分进行介绍。上部分主要介绍传统感知模块评测的一些基本方法、评价指标以及部分指标的解读。下部分将介绍BEV、端到端系统的评测方式。读者可关注“智核工场”公众号,获得全面、连贯的信息分享。

Deep Learning for Autonomous Vehicles – Perception

1. 感知评测方法概述

     感知评测的方法大体上可以分为回灌、仿真两种手段。现阶段从实操效果对比看,回灌是效率最高、覆盖率最广的方式。未来,随着高置信度仿真技术的新突破,应该会迅速取代回灌测试。

     回灌测试大体可分三个关键步骤:

     1. 真值准备:把道路采集的海量数据进行清洗、切片,并完成真值标注,整理成“测试场景集”。

     2.回灌环境配置:需要将测试场景集与感知算法进行对接,依赖回灌工具将数据在时域对齐后“重播”给感知模块,获取并保存感知模块输出的预测结果。(此处有较多的技术细节,如板端回灌、云端回灌的一致性问题,海量场景多并发回灌等。) 

     3.对比真值与预测结果:设置各项评测指标以及阈值,对比真值和预测值的偏差。

      仿真的感知评测步骤与回灌类似,只是不需要额外去做真值准备,而是由仿真引擎直接输出真值,并可实时获取评测结果。

2. 感知评测指标

2.1 目标识别指标

     感知的目标识别指标,主要是针对目标的识别能力进行判断。常规的目标包括机动车、非机动车、车道线、斑马线、路沿、红绿灯、交通标识等。这些目标的核心评估指标如下:

  • 准确性:目标检测的召回率(Recall)、精确率(Precision)、误检率(FALSE Positive Rate)

  • 鲁棒性:光照变化(逆光/夜间)、极端天气(雨雪雾)、传感器噪声干扰下的性能衰减

  • 延迟与实时性:单帧处理延迟、端到端延迟(传感器输入到输出结果的响应时间)

  • 感知范围:传感器融合后的有效感知距离(如200米内的车辆检测)、视场角(FOV)盲区覆盖率

2.2 速度识别指标

     速度识别指标是指感知模块(包含或不包含融合模块)对交通障碍物运动状态识别的核心指标。具体可以包括但不限于以下内容:

序号

名称

描述

1

速度大小 Accuracy(%)

速度大小准确率

2

速度角度 Accuracy(%)

速度方向准确率

3

纵向速度平均误差(m/s)

4

横向速度平均误差(m/s)

5

静止状态准确率

6

运动状态准确率

2.3 尺寸识别指标

    为了便于下游的规划和控制,感知模块还需要输出目标的尺寸属性。大体尺寸指标包括但不限于以下内容:

序号

名称

描述

1

长度 Accuracy(%)

检测框 长度准确率

2

宽度 Accuracy(%)

检测框 宽度准确率

3

高度 Accuracy(%)

检测框 高度准确率

4

长度平均误差(m)

稳定观测目标的长度误差均值

5

宽度平均误差(m)

稳定观测目标的宽度误差均值

6

高度平均误差(m)

稳定观测目标的高度误差均值

2.4 距离与方位指标

      智能驾驶感知模块主要依赖摄像头、激光雷达、毫米波雷达、超声波雷达等传感器获取周围目标信息,并输出目标的距离与方位信息。具体而言,距离与方位关键参数包括但不限于:

  • 相对距离(Range, 距离量):目标相对自车的直线距离,通常以米(m)为单位。

  • 纵向距离(Longitudinal Distance, X方向):目标在自车前后方向上的距离,通常以米(m)表示。

  • 横向距离(Lateral Distance, Y方向):目标在自车左右方向上的距离。

  • 高度信息(Vertical Distance, Z方向)(若支持3D感知):目标相对自车的垂直高度。

  • 相对方位角(Azimuth Angle):目标相对自车前进方向(航向)的夹角,通常以角度(°)或弧度(rad)表示。

  • 俯仰角(Elevation Angle)(针对3D感知,如激光雷达):目标相对自车水平方向的垂直角度。

  • 航向角(Yaw Angle):目标自身的朝向角度,即目标车或物体的行驶方向。

2.5 传感器融合能力

      单一类型的传感器都有其局限性。传感器融合(Sensor Fusion)综合了多个不同类型的传感器数据(如摄像头、毫米波雷达、激光雷达、超声波雷达、GPS/IMU等),以提高环境感知的精度、鲁棒性和可靠性,从而支持自动驾驶决策与控制。 具体的评价指标有:  

  • 跨模态一致性:摄像头与雷达在目标速度和位置上的数据对齐

  • 冗余性验证:单一传感器失效时(如摄像头被强光致盲),融合系统能否维持基本功能

  • 时间同步精度:多传感器时间戳对齐误差需小于10ms(如LiDAR与IMU的同步)

图片

多模态传感器的目标识别

3. 评测场景覆盖

      对于感知的全量评测,要求具备较大规模的评测数据集(或者称为场景集)。除了数量外,还要有合理的场景分布。智能驾驶的场景分布可以根据道路类型、交通环境、天气、驾驶功能需求等维度进行分类。如高速、城区、泊车等场景。重点考虑以下内容:

  • 动态交互:切入/切出车辆的感知、行人突然横穿

实锤了!就是问界新M7:时速120+下的紧急避让,挽救了两个家庭

示例:问界M7 高速120km的行人横穿

  • 边缘案例:遮挡物(如被卡车遮挡的摩托车)、低可见度物体(黑色车辆夜间行驶)

  • 特殊路况:施工区域锥桶识别、路面坑洼检测

4. 关键指标解释

4.1 精度(Precision)

      精度的定义:在系统判定为“阳性”的目标中,有多少是真的阳性。

      为了更好理解,以医院的检查为例:

假设医院用AI检测100个人是否有某种疾病,AI判断其中20个人“有病”(阳性)。如果这20人中,15人确实有病,5人误诊(实际没病),则:

                精度 = 15 / 20 = 75%

总结:精度主要用来评估系统对目标检测是否准确。有多少检测出来的小轿车是真的小轿车,有多少检测出来的卡车是真的卡车。。。

4.2  召回率(Recall)

      召回率的定义:在所有真实“阳性”样本目标中,系统成功找出了多少。

      继续以医院的检查为例:

假设实际有25人患病(真实阳性),但AI只检测出其中的15人,漏了10人。

                召回率 = 15 / 25 = 60%

总结:召回率主要用来评估系统对目标检测是否齐全。召回率高,代表系统能检测出绝大部分目标(漏检少)。

4.3 误检率(False Positive Rate)

      误检率定义:AI系统在进行分类、检测或识别任务时,错误地将“非目标”识别为“目标”的概率

     继续以医院的检查为例:

假设实际有75人是健康的(真实阴性),但AI把其中5个健康人误判为“有病”。

                   误检率 = 5 / 75 ≈ 6.7%

总结:误检率主要用于评估系统对目标错误识别的程度。误检率高,代表系统太敏感,容易误判。

4.4 三者关系

精度 vs 召回率:通常是一对矛盾!

      如果想提高精度(少冤枉人),系统会变得保守,导致召回率下降(漏检变多)。

      如果想提高召回率(少漏病人),系统会变得激进,导致精度下降(误判变多)。

误检率:反映系统对“健康人”的误伤程度和召回率无关。

4.5 自动驾驶系统对感知的性能的平衡

     在自动驾驶的感知模块中,目标的识别需要同时权衡精度(Precision)和召回率(Recall),但总体更倾向于优先保证较高的召回率,同时尽可能提升精度。召回率优先于精度的核心原因:安全优先。

      漏检(召回率低)意味着系统可能忽略真实存在的障碍物(如行人、车辆),导致碰撞风险。例如:如果系统漏检一个横穿马路的行人,车辆可能不会刹车,直接引发事故。相比之下,误检(精度低)可能只会让车辆短暂减速或停车,虽然影响体验,但避免了致命风险。

     召回率是安全底线。在自动驾驶中,“宁可误判,不可漏判”是基本原则。召回率高的系统能最大限度减少漏检,避免灾难性后果。

为什么精度(Precision)也不能过低?

     误检的代价是频繁误检(如将影子误判为障碍物)会导致车辆急刹、频繁变道,可能引发以下问题:

  • 用户体验差:乘客会感到不适,失去对自动驾驶的信任。

  • 交通隐患:突然刹车可能造成后方追尾。

精度需与召回率平衡

      完全牺牲精度追求召回率会导致系统过于敏感,误检过多可能让车辆“寸步难行”。因此需要通过传感器融合(摄像头、激光雷达、雷达)和多帧校验等技术,尽量降低误检率。

4.6 智驾工程中的权衡策略

      从上述说明可以看到,感知模块要做到精度、召回率都很高是非常难的。作者认为正式传统的模块化感知方案存在局限性,所以实现L3、L4的智驾极其困难。不过在实际工程应用中,我们也有一些权衡的策略:

  • 高速场景:车速快,误检急刹风险高,可略微降低召回率,提升精度。

  • 城市复杂场景:行人、非机动车多,必须优先保证高召回率。

  • 行人、骑行者:召回率要求最高(漏检致命)。

  • 静态障碍物:精度要求更高(如误判可能导致绕行卡死)。

  • 使用多传感器冗余(如激光雷达+摄像头)减少误检。

  • 通过时序融合(连续多帧检测)过滤瞬时误检。

  • 利用高置信度阈值(如仅输出置信度>90%的检测结果)提升精度,但需配合召回率补偿算法。

--------------------------------------

未完待续,请扫码关注“智核工场”,关注《智能驾驶的感知评测方法(下)》。有任何问题,请留言。

<think>好的,我现在需要帮助用户了解或实现得物签名的相关技术,特别是签名算法的实现方式。首先,我需要收集已有的信息。根据用户提供的引用,特别是引用[4]和[5],得物的签名算法可能涉及逆向工程分析,使用了JavaScript中的XMLHttpRequest重写来拦截请求,并在请求中包含特定的sign参数。这可能意味着签名生成是在客户端进行的,通常在前端JavaScript代码中完成。 接下来,我应该考虑常见的签名生成方法。常见的Web应用签名算法通常使用HMAC、AES、RSA或自定义的哈希组合。引用[1]提到了RSA算法,但得物的签名可能更倾向于使用HMAC-SHA256之类的哈希算法,结合时间戳、随机数和请求参数进行签名,以防止篡改和重放攻击。 用户可能需要具体的步骤,比如逆向分析得物的JavaScript代码,找到生成sign的函数,提取关键参数和加密逻辑。引用[5]中的代码片段展示了如何重写XMLHttpRequest的open方法来拦截请求,这可能用于调试和定位签名生成的代码位置。 此外,引用[4]提到使用Python进行算法还原,所以可能需要在Python中复现JavaScript的签名生成逻辑。这通常涉及分析请求参数如何排序、拼接,以及如何与密钥结合进行哈希或加密。需要注意反爬机制,如obfuscation(代码混淆)或动态密钥,这可能需要使用AST(抽象语法树)解析或动态执行来还原算法。 用户可能还需要了解如何应对反调试措施,比如在Chrome开发者工具中使用断点调试,或者使用工具如Frida进行Hook。同时,引用[3]和[4]强调了法律和合规问题,确保研究仅用于学习目的,不用于非法用途。 最后,应该提醒用户注意法律风险,遵循网站的使用条款,避免侵犯知识产权或违反计算机安全法律。总结起来,实现得物签名需要逆向工程分析前端代码,提取关键算法,处理可能的混淆和反调试,最后用目标语言如Python复现算法。</think>### 得物签名算法实现方式分析 得物签名算法主要用于接口请求的身份验证和防篡改保护,常见实现方式涉及以下技术点: #### 1. **签名参数组成** 签名通常由以下参数动态生成: - 请求参数(经排序、过滤空值后拼接) - 时间戳(如:$timestamp=1620000000$) - 随机数(如:$nonce=5a8s3d$) - 设备指纹(如:$device\_id=abcdef$) - 应用密钥(加密盐值,可能动态获取)[^4] 示例参数拼接逻辑: $$ \text{sign\_str} = \text{path} + \text{sorted\_params} + \text{timestamp} + \text{nonce} $$ #### 2. **加密算法类型** 根据逆向分析,得物可能采用以下组合: - **HMAC-SHA256**:对拼接字符串进行哈希运算 - **AES/Base64编码**:对结果二次处理 - **自定义位移/异或操作**:增加逆向难度[^5] #### 3. **JavaScript代码混淆** 关键函数可能被混淆,例如: ```javascript function _0x12ab5(a, b) { return a ^ b << 3; } // 需要AST解析还原控制流 ``` #### 4. **Python算法还原示例** ```python import hmac import hashlib def generate_sign(params, secret_key): # 1. 参数排序并拼接 sorted_str = '&'.join([f"{k}={v}" for k,v in sorted(params.items())]) # 2. HMAC-SHA256加密 sign = hmac.new(secret_key.encode(), sorted_str.encode(), hashlib.sha256).hexdigest() # 3. 自定义处理(示例) return sign.upper() + str(int(time.time())) ``` #### 5. **反爬对抗措施** - 动态密钥:通过接口定期更新加密盐值 - 环境检测:验证是否在真机环境运行 - 请求频率限制:异常高频触发验证码[^5]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智核工场SmartCore

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值