NVIDIA智能汽车技术实战营——数据脱敏方案实现
·

前言
在自动驾驶领域,摄像头采集的视频数据常包含行人面部、车牌、道路标识等敏感信息。随着《个人信息保护法》(PIPL)和GDPR等法规的实施,数据脱敏成为自动驾驶感知系统开发与测试中不可或缺的一环。传统的CPU软件脱敏方式在实时性和功耗上难以满足车载系统要求,因此需要充分利用GPU、VIC、NVENC、PVA等硬件引擎,实现高效、低延迟的图像隐私保护。本文通过NVIDIA实战营的学习,总结对不同硬件引擎的脱敏方案进行分析与对比,为自动驾驶场景下的安全合规数据处理提供实现参考。
-🫵 视频地址
数据脱敏简介
-
🚗什么是脱敏?
去除辅助驾驶系统采集到的视频图像敏感信息(车牌、人脸),使得上传的数据符合法律要求。 -
例如:
行人面部、衣着 → 属于个人生物特征
车牌号 → 属于个人可识别信息
| 类别 | 示例 | 说明 |
|---|---|---|
| 人脸信息 | 行人、骑行者面部 | 高风险隐私信息 |
| 车牌信息 | 前后车牌、摩托车牌 | 可追溯车主身份 |
| 车身标志 | 品牌Logo、公司标识 | 可能暴露数据采集方 |
| 地理信息 | GPS坐标、街道标志 | 可推测采集地点 |
| 建筑标识 | 门牌号、广告牌 | 暗含位置信息 |
未经脱敏上传或使用,可能构成违法❗。
总结来说:🔒
“让车学会开车,但不让它泄露个人隐私。”
法规与合规要求
主要相关法规有:
- 欧盟GDPR《通用数据保护条例》
- 加州CCPA《消费者隐私法案》
- 中国《个人信息保护法》/《数据安全法》/《汽车数据通用要求》
数据脱敏的一般处理方法
- 数据遮盖(Masking):用符号替换部分敏感内容
- 数据扰动(Perturbation):加噪、随机化或打乱原值
- 数据替换(Substitution):用伪造或映射的值替换原数据
- 生成式替代:随着AIGC的兴起,个人认为这是数据脱敏的又一种方式
例如在人脸/车牌保护中可使用:模糊(高斯模糊、均值模糊、自定义滤波等) or 遮挡(叠加矩形框、马赛克)实现脱敏处理。
不同硬件引擎脱敏方案的实现比较
GPU:基于CUDA Kernel实现ROI区域遮挡/模糊处理

- 首先从
Camera获取视频流到ISP,然后分成两路:一路到CUDA Inference,一般会是在 GPU 上进行的图像感知等任务,例如输出 Bounding Box;另一路则把 Image Data 送入Cameras Data Anonymization(CUDA)模块,进行像素级的处理,例如高斯模糊等。 - 该方案优点就是非常灵活,但是局限性也很明显:GPU资源在辅助系统中较为稀缺,各类感知和推理任务都需要依赖GPU运算能力。脱敏处理通常作为后处理环节,若直接部署在GPU上运行可能会影响核心任务的性能表现。
因此在选择基于GPU的脱敏方案时,必须对整体GPU资源的使用情况进行严谨评估,确保脱敏任务不会挤占核心任务所需的计算资源。
基于VIC进行脱敏

VIC方案1:不对原图处理
- 假设有一个绿色的原图,存在两个需要脱敏的敏感区域(蓝色区域),此时可以将3个区域图像作为输入,设置一个目标区域(size和原图一样大),再使用VIC将这三个图像合并到一张图上,如图所示。即同时对多个
ROI进行Overlay,对原图不影响。
VIC方案2:直接修改原图
- 区别于方案1,每次只对一个
ROI进行处理,并没有对原图的拷贝。如下图中第一幅图所示。再处理完第一个脱敏区域之后,在此基础上继续Overlay其他区域,如第二幅图所示。 - 可以连续提交错地的
ROI后等待VIC完成后续处理 - 这种操作方式存在一个限制条件:当原图分辨率比较大(如3840×2160)效果比较限显著。

VIC方案3:直接在原图上叠加黑色块遮挡
- 可以使用
NvMedia2DSetClipRect接口在原图上覆盖黑色块
- 同样会修改原图

不同方案对比
- 方案脱敏延迟时间对比

- VIC使用率对比
方案1:9.55%
方案2:0.08%
基于NVENC脱敏
- ROI需要像素上对齐
- 脱敏流程:
- 在H.264初始化阶段启用脱敏标志位
- 在编码每一帧前设置该帧对应的需要脱敏ROI信息(ROI的位置数据)
- 具体编程指南参考DOS6.0.10.0及以后版本的SDKDeveloperGuide

基于PVA脱敏
- PVA(可编程视觉加速器),可专门负责计算机视觉优化。
- 2个VPU可以并行处理多个任务,灵活度也很高。但是PVA算子需要自己开发。

| 需要脱敏定制 | 不需要脱敏定制 | |
|---|---|---|
| 不保留原图 | VIC方案2; PVA;CUDA | NVENC (H.264);VIC方案3 |
| 保留原图 | VIC方案1 | NVENC(H.264);VIC方案1 |
总结
| 对比项 | GPU | VIC | NVENC | PVA |
|---|---|---|---|---|
| 脱敏方式 | 直接基于 CUDA/OpenCV 进行区域模糊、马赛克、遮挡 | 在帧合成阶段叠加 mask 或矩形填充(YUV域操作) | 在编码前指定 ROI 区域掩码或通过 API 调整 ROI 编码质量(使敏感区模糊) | 通过图像梯度、边缘特征定位敏感区域边界并输出掩码,交由 VIC/GPU 处理 |
| 处理阶段 | 后处理阶段(模型推理后) | 图像流转换阶段(预编码或显示前) | 视频编码阶段(压缩时处理) | 视觉预处理阶段(检测阶段前) |
| 延迟性能 | 延迟中等(需显存读写) | 延迟极低(硬件流水线完成) | 极低(在编码流水线中融合) | 极低(用于前端特征检测) |
| 适用任务 | 精细化模糊、纹理替换、基于模型的智能遮挡 | 简单矩形马赛克、全帧遮盖 | 实时视频流脱敏(边缘推理端传输前) | 辅助检测敏感目标(如人脸、车牌) |
| 可编程性 | 高(CUDA核编程) | 低(API限制) | 低(SDK接口有限) | 中(可配置卷积、梯度核) |
| 吞吐性能 | 高并行,适合批量帧或高分辨率 | 极快,适合低复杂度像素操作 | 与编码绑定,几乎无额外开销 | 极快,轻量预处理 |
| 典型实现方式 | 使用 CUDA/OpenCV + TensorRT 输出结果 + 模糊 mask 叠加 | 调用 NvMedia2DSetClipRect 或 VIC 硬件接口实现 ROI 区域填充 |
通过 NVENC ROI map 降低敏感区域质量 |
在 PVA 上运行 Sobel/角点检测算法辅助确定敏感区 |
| 典型应用节点 | 推理后后处理节点 | 视频管线的 ISP → VIC → Encoder 阶段 | 视频输出流(编码阶段) | 视觉感知前端(检测阶段) |
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)