徐炜鹏 黄宏成 解仁浩
(上海交通大学机械与动力工程学院 上海 200240)
随着自动驾驶研究的不断发展,利用仿真平台开发验证自动驾驶算法,已经成为大多数企业研发自动驾驶系统不可或缺的一部分。而得益于深度学习模型的强大性能,深度学习也越来越多和自动驾驶的相关任务相结合,比如利用深度学习去进行目标检测、跟踪,进行道路可行驶区域的语义分割等等。但这些强大、复杂的深度学习模型要想真正在自动驾驶领域落地还存在巨大的挑战。阻碍深度学习落地的问题主要有两个,一个是成本,导致了计算资源的限制,深度学习模型往往很复杂,参数很多,在进行训练或推理时需要大量的计算资源。另一个原因是深度神经网络的脆弱性[1],神经网络容易受到攻击是一个普遍的现象,比如在图像领域里,当给神经网络输入的图片增加一个人为的微小扰动,模型在增加扰动前后的预测结果却可能截然不同,因此模型的安全性难以得到保证。针对上述的第一个问题,为了减少大模型占用的高额存储空间以及消耗的计算资源,模型压缩[2]是现在学术界和工业界的一个研究热点。上述的第二个问题截止目前还是一个开放性的问题,这几年不断有研究人员提出新的攻击方法和防御方法。
本文主要是针对自动驾驶中常见的目标检测任务,从模型压缩和对抗鲁棒性的角度去优化目标检测器,并将优化后的模型在开源的自动驾驶仿真平台Carla[3]上进行验证。
在问题建模上,本文部分借鉴了文献[4]的方法,区别在于本文是针对目标检测任务进行联合优化,另外本文是通过正则归一化层的尺度因子实现模型的稀疏化训练,这也是和文献[4]不同的地方。最终我们将获取速度-对抗鲁棒性权衡的目标检测器问题抽象为这样一个优化问题。
(1)
L(fθ(x),{yi,bi})=losscls(fθ(x),yi)+
λ·lossloc(fθ(x),bi)
(2)
其中f表示目标检测器,θ为模型的全部参数,θs为进行稀疏化训练的那部分参数,θs为θ的子集,L是目标检测器的损失函数,x是无扰动的干净图片,δ是对抗扰动,yi是真实标签的类别,bi是真实标签的位置信息,‖θs‖0表示参数非零个数,losscls为分类的损失,lossloc为定位的损失,λ为定位任务的权重。
把上述优化函数表示为增广拉格朗日函数,如下所示。
G(θ,z,u)=Ladv+g(z)+ρ〈u,θs-z〉+
(3)
其中g(z)为一个指示函数。
(4)
我们的目标是最小化上述的增广拉格朗日函数,这是我们的优化问题,使用交替方向乘子法(ADMM)[5]将原问题分解为2个子问题。
(5)
(6)
(7)
第一个子问题:
(8)
采用随机梯度下降来解决第一个子问题,因为Ladv是非凸的,所以这是一个非凸优化问题,我们没办法保证获得全局最优解,但是合理选择ρ的取值,ADMM可以使第一个子问题获得一个还不错的局部最优解。
第二个子问题:
(9)
最终,我们利用交替方向乘子法迭代地求解两个子问题来获取速度-对抗鲁棒性权衡的目标检测器。
为了验证针对目标检测器提出的联合优化算法,并将优化后的模型在开源的自动驾驶仿真平台Carla上进行验证。将进行如下的实验,先是在开源数据集开发验证联合优化算法,再在Carla平台中验证优化好的目标检测模型。
为了开发、研究、验证我们针对速度-对抗鲁棒性平衡的目标检测器的联合优化算法,我们采用经典的一阶段目标检测器Yolov3[6]作为基础模型进行后续的实验。Yolov3是一个兼顾检测精度和实时性的一阶段目标检测网络,在一块Pascal Titan X能达到30帧每秒的速度,在COCO[7]test-dev能达到57.9%的mAP。YOLOv3的基础网络用的是darknet-53,分类精度和resnet-152[8]相当,速度比其快2倍左右。相比YOLOv1[9]和YOLOv2[10], YOLOv3采用了类似特征金字塔的多尺度预测,对小物体的检测效果明显提升。本文选取它作为实验的基础网络架构,来开发、验证我们针对模型压缩和对抗鲁棒性的联合优化算法。
在开源数据集Oxford Hand[11]进行联合优化算法的开发。
Oxford Hand是牛津大学开源的一个手部检测数据集,这是一个比较小型的数据集,适合用来开发、研究、验证算法。数据集包括训练集、验证集和测试集三部分,其中训练集有4,069张图片,包含9,163个手部实例;验证集有738张图片,包含1,856个手部实例;测试集有821张图片,包含2,031个手部实例。
3.1.1 超参数设置
所有的训练都是使用带有动量的随机梯度下降,初始学习率设置为0.001,动量系数设置为0.9,权重衰减设置为0.0005,batch size设置为32。测试集对抗攻击使用PGD[12]的变种形式,对抗设置为扰动步长0.01的迭代攻击,训练时每个Epoch后再验证集上进行性能检验,为了节约计算资源,验证集对抗攻击使用扰动步长为0.03的单步攻击。
3.1.2 对抗稀疏化训练
本文通过一系列的对比实验来选取联合优化算法中训练时对抗攻击的扰动步长、稀疏因子的稀疏化策略和训练的损失函数。确定好参数后,最终的训练结果如图1-图4所示。
图1 训练集对抗样本损失的变化曲线
图2 验证集上的mAP变化曲线
图3 验证集上的mAP_adv变化曲线
图4 模型0.5压缩率阈值的变化曲线
从图中可以看到训练过程对抗样本损失基本上是比较平稳的下降的,解决了训练不稳定的问题。验证集上的mAP和mAP_adv在第一阶段虽然存在些许震荡现象,但是通过第二阶段的退火策略可以使最终的结果稳定下来。
最终通过使用交替方向乘子法实现了速度和对抗鲁棒性平衡的目标检测器,最好的模型在测试集上对于攻击得到的对抗样本mAP_adv为0.371,对于干净样本mAP为0.761,推理时间相比压缩前提升18.62%,模型参数减少62.61%。
在Carla平台中进一步验证联合优化算法,超参数设置和在Oxford Hand数据集通过对比实验得到的超参数设置一致。由于Carla平台中数据集没有标签,我们在Pascal Voc训练集上进行训练,然后给出在Carla平台中的样本检测结果。
优化前的目标检测器检测对抗样本结果如图5所示,联合优化后的目标检测器检测对抗样本结果如图6所示。此时可以正常检测出车辆的位置,说明联合优化后的检测器是有效的。
图5 优化前
图6 优化后
本文针对自动驾驶中常见的目标检测任务,从模型压缩和对抗鲁棒性的角度对目标检测模型进行联合优化。通过使用交替方向乘子法在牛津大学开源的手部检测数据集对Yolov3进行了优化,实现了速度和对抗鲁棒性平衡的目标检测器。最好的模型在测试集上对于攻击得到的对抗样本mAP_adv为0.371,对于干净样本mAP为0.761,推理时间相比压缩前提升18.62%,模型参数减少62.61%。通过在Oxford Hand进行对比试验确定的联合优化参数,在开源的自动驾驶仿真平台Carla进一步验证了联合优化算法的有效性。这有助于将优化后的模型直接整合进自动驾驶仿真工具链中,加速自动驾驶算法在仿真平台上的开发与验证。