宝马自动驾驶战略 - 深度学习的部署【附PDF原版英文资料下载】
1、 自动驾驶机器学习应用程序的设计过程
应用实例(驾驶辅助/自动驾驶)
-
收集和标记数据
-
模型开发
图1. 自动驾驶应用程序设计过程
2、项目示例(1)- 自动驾驶车辆的细粒度特征表达
2.1 动机/诱因
对复杂交通场景一个细致理解,例如
-
其他交通参与者的状态和可能意图
-
精确估计车辆的位姿和类别
-
监视能动作的部位,比如车门,行李箱盖
-
快速反应并适应安全关键情况
2.2 目标
1)通过语义分割获取新的车辆表征;
2)三种车辆碎片化级别(粗糙 - 精细 - 完整);
-
基于用材和功能把车辆划分成多个区域
-
每个区域嵌入姿态信息
-
在CAD模型上标注特征
3)基于VKITTY 、Cityscapes数据集的经验化检验;
图2. 基于Cityscapes数据集分割标准的碎片化级别的2D可视化示例
2.3 半自动化标记流程
1)ShapeNet(3D 模型库)中的车辆碎片化级别
-
不同的车辆模型,包括WorldNet synsets中车辆模型 (>4000)
-
三种碎片化级别(粗糙(4)- 精细(9)- 完整(27))
-
涵盖的组件:车身,车窗,车灯,车轮,车门,车顶,侧围,后备箱,车轮,前风挡
-
更精细的特征:模型需要解决挑战性的零部件分离任务,它们要共享视觉提示,但位置却又不同,如相互独立的各个车门;
-
识别局部视觉环境较小的零件:该表示法适合于高遮挡或截断部位;
图3. 带注释CAD模型的可视化
2)半自动化标记流程
-
将刚好重叠的3D边界框应用于原始图像;
-
根据车辆类型或模型尺寸(L1距离)选择合适的模型;
-
调整3D模型网格大小以适应边界框并与3D空间对齐;
-
网格投影在图像平面上:生成包含车辆碎片化等级信息的分割图;
-
仅将各自数据集中标记为车辆的像素传播到图像:解决投影误差
图4. 半自动化标记流程
3)FCN(全卷积神经网络)模型开发
-
重新实现了FCN8 和VGG16作为主干
-
使用交叉熵损失进行端到端训练
-
基于分段级别,完成4-27级训练,即从粗糙到完整
-
外加数据集的类
-
多GPU 进行训练 → 完整碎片化级别 → 高分辨率输出图像
目标:在非车辆相关背景分类中不会损失明显的准确性
图5. FCN8 和VGG16作为主干
表1. 使用FCN8应用在VKITTY和Cityscapes上的三种碎片化级别的分割结果
6a. VKITTY数据集上三种碎片化级别的定性分析结果
图6b. Cityscapes数据集上三种碎片化级别的定性分析结果
3、项目示例(2)- 基于自动驾驶可行驶区域的自监督学习
3.1 动机/诱因
-
用于为可行驶区域分割任务生成训练数据的自动化方法
→ 训练数据生成器(TDG)
-
获取具有相关地面真实性的大规模数据集仍然是一个昂贵且劳动密集的问题;
图7a. TDG自动化生成数据
图7b. 经过TDG训练的DNN的分割图
3.2 为什么需要进行地面探测
-
是进行安全舒适驾驶操作的一个重要方面
-
关系到车辆的周边环境信息
-
尤其是可行驶区域
-
例如 前方/可行驶区域被障碍物阻挡
-
GPU的并行处理允许基于帧的语义分割
3.3 为什么要数据标签自动化
1)速度和成本压力
2)标记数据成本昂贵
3)现有数据集不适合所需的应用程序
-
技术方面:例如视野、安装位置、摄像机几何结构
-
环境条件:例如 天气状况,时间,街道类型
3.4 标签自动化流程
基于所谓的v视差图:
-
不同的应用实例
-
无需对现有模型进行微调
图8. 自动化标签流程
3.5 CNN(卷积神经网络)模型开发
-
自动生成的数据用于训练Unet和SegNet
→ 低分辨率输入(512 * 256和480 * 360)
-
仅在自动生成的数据集上训练模型
-
通过使用人为标记的地面真实数据进行评估,例如 Cityscape ,Kitty
-
可行驶区域(道路,停车场)和非行驶区域(人行道,行人)
观测结果:
-
横向检测性低
-
TDG的噪音数据
→ 生产鲁棒性的CNN模型
-
动态目标探测的可靠性
图9a. SegNet 分割(左)与图9b. U-net 分割(右)
鲁棒性模型 : 上下翻转图像
-
SegNet → 无法检测接地平面
-
U-Net → 可探测到地平面
图9c. 被翻转的SegNet分割(左) 与图9d. 被翻转的U-net 分割(右)
表2. 在Cityscpes和Kitty数据集上分别使用U-Net和SegNet后TDG的分割结果
4、项目示例(3)- 自动驾驶CNN优化技术
4.1 运行示例:CNNs的量化
-
通常情况下,浮点PEs的能量效率与定点计算相比要低10倍;
-
使用浮点数,两个数字之间的步长可以是动态的。这对于CNN中不同类型的层是有用的特性。
-
缩小CNN计算需求和硬件加速器之间的差距非常重要;
-
趋向于专门的硬件加速器,如特斯拉;
图10. 如何以不同的方式看待DNNs 的部署
图11. 设计流程优化
4.2 资源感知多准则优化
-
现成DNNs需要高性能硬件加速器
-
YOLO or SSD300 需要一个英伟达 Titan X 去实时运行 → 展示这些模型的高计算需求;
-
不,SqueezeNet 不是即开即用的(Out of the box) → 一个 18,000 GPU 超级计算机被用于模型开发;
-
在内存、性能和功耗上部署DNNs限制嵌入式硬件通常非常耗时;
图12. 卷积层的滤波裁剪
4.3 为什么要进行资源感知的多准则优化
-
优化技术将齐头并进(滤波修剪和量化)
-
CNN优化依赖于设计过程中的系统、算法和系统层级;
-
DNNs需要高度压缩以适应自动驾驶的硬件;
→ 车规级存储器价格昂贵
-
良好的数据局部性对于低功耗应用至关重要
→ 汽车的极端温度(西伯利亚→死亡谷)
→ 强制主动冷却
-
快速部署时间是敏捷软件部署的一个关键方面
4.4 提出一个CNNs的修剪和量化方案
修剪方法:
1) 基于快速幅度的修剪方案 → 删除不重要的过滤器
2) 基于半间隔搜索(log2(n))→ 探索最佳分层修剪率
3) 探索最佳分层修剪率
4) 移除一层加权过滤器的过程:
-
确定一层所有权过滤器的损失(L1距离)
-
基于半间隔搜索移除过滤器,其损失低于阈值
-
用半区间搜索法确定阈值
-
学习率低的再训练模型(带动量的SGD)
-
由于CNN的准确性得以保持,因此修剪率提高了(半间隔搜索)
-
修剪始终应用于最适合所需优化目标的图层
图13. 应用于CNN修剪的二元搜索
量化方法:
-
量化能使得硬件更好的被执行;
-
减少硬件组件的占用
-
降低内存带宽
-
提高性能 (浮点PE的效率比定点单元低10倍)
-
使加权并**被带入固定点,用符号<S,IB,FB>格式化
a、 S: 符号位 b、IB:整数位 c、FB:小数位
-
随机舍入用于近似
图14. 应用于CNN的修剪和量化方法
4.5 内存和性能对比分析
图15. 深度压缩方法和Ours方法的修剪速率和运行时间的对比分析
图16. 不同硬件加速器上VGG16的运行时间
图17. Ours方法应用在VGG16上的内存和性能对比
参考资料:
1. Deep learning in the field of autonomous driving(BMW)
注:如需获取参考文件,扫描下方二维码,关注公众号“筋斗云与自动驾驶”,在公众对话框回复【宝马01】即可获取。