arXiv论文“Sim-to-Real Domain Adaptation for Lane Detection and Classification in Autonomous Driving“,2022年5月,加拿大滑铁卢大学的工作。
虽然自主驾驶的监督检测和分类框架需要大型标注数据集,但光照真实模拟环境生成的合成数据推动的无监督域适应(UDA,Unsupervised Domain Adaptation)方法则是低成本、耗时更少的解决方案。本文提出对抗性鉴别和生成(adversarial discriminative and generative)方法的UDA方案,用于自动驾驶的车道线检测和分类应用。
还介绍Simulanes数据集生成器,利用CARLA的巨大交通场景和天气条件,创建一个自然的合成数据集。提出的UDA框架将带标签的合成数据集作为源域,而目标域是未标记的真实数据。用对抗生成和特征鉴别器,调试学习模型,预测目标域的车道位置和类别。用真实数据集和合成数据集进行评估。
开源UDA框架在githubcom/anita-hu/sim2real-lane-detection,还有数据集生成器在github.com/anita-hu/simulanes。
现实世界中的驾驶具有多样性,交通条件、天气和周围环境也各不相同。因此,模拟场景的多样性对模型在现实世界中的良好适应性至关重要。有许多用于自动驾驶的开源模拟器,即CARLA和LGSVL。本文选择CARLA来生成模拟数据集,除灵活的Python API外,CARLA还包含丰富的覆盖城市、农村和公路场景的预先绘制地图内容。
模拟数据生成器Simulanes在城市、农村和公路环境中生成了各种模拟场景,包括15个车道类别和动态天气。如图显示来自合成数据集的样本。行人和车辆参与者随机生成并放置在地图上,通过遮挡增加数据集的难度。根据TuSimple和CULane数据集,将车辆附近的最大车道数限制为4条,并用行锚点为标签。
由于CARLA模拟器不直接给出车道位置标签,用CARLA的路点系统(waypoint system)生成标签。CARLA路点是车辆autopilot要遵循的预定义位置,位于车道中心。为了获得车道位置标签,将当前车道的路点左右移动W/2,其中W是模拟器给定的车道宽度。然后将这些移动的路点投影到摄像头坐标系,并采用样条曲线拟合,以便沿预定的行锚点生成标签。类标签由模拟器给出,是15个类的一个。
为了生成具有N帧的数据集,将N均匀地划分到所有可用的地图上。从默认的CARLA地图中,用城镇1、3、4、5、7和10,而城镇2和6由于提取的车道位置标签与图像的车道位置之间存在差异而未使用。对每个地图,车辆参与者在随机位置生成,并随机移动。动态天气通过将时间作为正弦函数平滑地改变太阳的位置并偶尔产生风暴来实现,风暴通过云量、水量和积水等变量影响环境的外观。为了避免在同一位置保存多个帧,检查车辆是否已从前一帧位置移动,如果这个车辆停止太长时间,则重新生成新的车辆。
当sim-to-real算法应用于车道检测时,采用端到端的方法,并使用Ultra- Fast-Lane-Detection(UFLD)模型作为基础网络。之所以选择UFLD,是因为其轻量级架构可以在相同输入分辨率下实现300帧/秒速度,同时具有与最先进方法相当的性能。UFLD将车道检测任务表述为基于行的选择法,其中每个车道由预定义行的一系列水平位置表示,即行锚点。对于每个行锚点,位置被划分为w网格单元。对于第i条车道和第j行锚点,位置预测成为一个分类问题,其中模型输出选择(w+1)网格单元的概率Pi,j。输出中的附加维度是无车道。
UFLD提出一个辅助分割分支,在多尺度上聚集特征来建模局部特征,这个只在训练期间使用。随UFLD方法,交叉熵损失用于分割损失Lseg。对于车道分类,添加一个全连接(FC)层的小分支,接收与车道位置预测的FC层相同的特征。车道分类损失Lcls也使用交叉熵损失。
为了缓解UDA设置的域漂移问题,采用了UNIT(“Unsupervised Image-to-Image Translation Networks“,NIPS,2017)& MUNIT(“Multimodal unsupervised image-to-image translation,” ECCV 2018)的对抗性生成方法,以及使用特征鉴别器的对抗性判别方法。如图所示:提出了对抗性生成方法(A)和对抗性判别方法(B)。UNIT和MUNIT在(A)中表示,其中显示用于图像翻译(image translation)的生成器输入。MUNIT的附加风格输入以蓝色虚线显示。为了简单起见,省略了MUNIT风格的编码器输出,因为它不用于图像翻译。
实验结果如下:
左:直接迁移法,右:对抗鉴别(ADA)方法