基于视觉的智能驾驶虚拟仿真平台与课程教学实践
2023-08-22杨宗浩
周 越,杨宗浩,解 宇
(上海交通大学电子信息与电气工程学院,上海 200240)
0 引 言
随着人工智能技术的发展,智能驾驶成为自动化领域一个研究的热点。计算机视觉作为其核心技术之一,成为该领域人才知识结构中的重要单元。高校承担培养各领域人才的重任,如何培养具有扎实的基础理论和勇于创新实践的人才是至关重要。实践教学是其中的一个重要环节。本文基于视觉感知的智能驾驶为案例构建“感知—分析—控制—执行”的实践平台,有助于学生系统性地构筑知识体系,在解决探究性、综合性的工程问题时给予学生一个很好的创新实践平台[1]。
构建实物环境的条件苛刻、效费比低且具有一定危险性;对于日常实践教学的批量任务无法实时满足,且存在安全问题。同时,基于视觉的智能驾驶领域大量引入深度学习技术,需要各种场景下标注的样本,场景样本数据片面和海量数据样本无法准确标注的问题凸显。
虚拟仿真平台通过将复杂的智能驾驶场景进行具象化,从系统的角度让学生体验所学理论知识与提升学生的创新实践能力,同时该平台能够仿真不同环境下的各类信息(如视觉信息和深度信息),在一定程度上解决现实场景中海量数据标注问题,尤其是环境的深度感知信息与标注一直是相关技术研究的瓶颈。
基于Unity3D 的智能驾驶虚拟仿真平台内容丰富,本文在介绍城市场景下智能驾驶的虚拟仿真平台构建的基础上,着重以环境深度感知为例,说明虚拟仿真的原理与教学实践的研究。
1 虚拟仿真平台开发及体系建设
虚拟仿真实验平台主要是两大功能:①运用计算机视觉技术实现城市场景下的智能驾驶;②仿真产生不同场景下感知各类信息的数据样本(如深度信息的感知),并带有准确的标注信息。
1.1 城市场景智能驾驶任务的实现
在城市场景驾驶任务部分,平台提供了三大类型的仿真实验,城市道路驾驶、测距测姿和自动泊车实验。各实验由简到难,引导学生进行实验,学生可以在不同类型场景下,根据不同难度逐一进行探索和实验。此外,在测距实验中,可以通过调整双目相机基线距离、相机焦距参数、前后车起始距离、前车运行速度以及前车特征标志图类型进行分组对照实验。又如自动泊车实验,提供地面和地下停车场2 种不同难度的仿真环境,对仿真光照和物理空间有着不同的难度。实验需要学生通过优化不同的多视角组合获得更有效的视觉信息来完成各项任务,增强了实验的探索性和学生的自主性。
1.2 环境深度感知仿真的实现
平台还提供多种场景下深度信息感知的仿真。为学生进一步探究基于深度学习的环境感知与建模提供了数据支撑。
自动驾驶需要对周围环境中的物体距离有所感知,因此平台为采集相机提供场景的深度信息,学生可以使用车辆上的采集相机对环境中的彩色图像和对应的深度图像进行采集。为获取仿真环境中物体的深度信息,在采集相机对场景进行渲染时,平台在通用渲染管线中的深度测试阶段获取深度缓冲信息,从而使用该信息推算物体与采集相机之间的距离。深度缓冲作用是避免对相机采集画面中场景内的被遮挡物体进行渲染,在节省不必要计算的同时,可以获取场景内物体与采集相机的距离。因此平台利用深度缓冲阶段的深度相关信息进行深度测试,最终得到与彩色图像对应的深度图,每个像素点具有该点属于的物体相对相机的距离信息。
相机所采集的视差范围由设定好的远近平面所决定,利用最远平面剪裁可以舍去比最远平面更远的物体的渲染计算,同理,比最近平面更近的物体不需要进行渲染。因此,常规的深度测试直接利用线性深度缓冲进行计算,将图像像素点对应该点在空间坐标系中的z坐标映射到视差范围内,far和near是用来提供到投影矩阵设置可见视图截锥的远近值。其线性转换方程如下:
使用该方法获取的深度图与对应的彩色图像对深度估计网络模型进行训练,发现训练好的模型在公开数据集上的表现较差,而在可视化视差图结果上可以看出最终得到的视差图中远处物体和近处物体的差异并不明显。因此,本平台在线性深度测试的基础上进行改进,建立非线性映射方程以进行深度测试,牺牲对远处不感兴趣物体深度识别精度,从而提高对近处物体深度识别精度的提升。最终建立的非线性映射方程:
图1 为非线性映射函数图像。
图1 深度值非线性转换函数图
基于非线性深度测试方法,平台提出并实现对采集图像像素点重建该点世界空间坐标的方法,从而获取该点深度值。平台使用图形着色器进行实现。Unity默认的深度测试方法为:首先使用Unity 内置正交矩阵Munity对该顶点向量从世界空间向量vvertex转换到观察空间向量:
然后通过顶点向量v 在观察空间中的z轴分量(v.z)计算出相机视点的观察线性深度值(Eye Depth)o,公式如下:
据此,结合远平面截断与非线性深度缓冲计算方法,通过图形着色器的改写成功获取非线性深度值f,最终的深度值计算方法公式为
2 虚拟仿真实验平台与课程教学研究
2.1 虚拟仿真环境开发
平台所有仿真环境和场景的构建均基于Unity3D图形引擎,该公开平台不仅能够提供充足的仿真场景中所需要的资源,还具有完整的插件系统,更有利于搭建供学生使用的自动驾驶仿真平台。此外,本平台在还原现实生活中自动驾驶应用场景方面,尽可能涵盖了常见的驾驶场景,不仅包括日常行驶的城市街道或高速公路,更包括了自然驾驶场景和地下停车场等更具有视觉挑战性的复杂场景[14-15]。
引入平台是为了给学生提供“学以致用”的平台[2],整个虚拟仿真实验系统架构如图2 所示。①稳定的实验环境建设机制:前端包括仿真模型的搭建和使用者代码编辑功能的建设,后端包括车辆的仿真计算引擎以及仿真场景分配功能。②友好的系统运行需求:本仿真系统可在windows 或linux 系统下运行,用户使用浏览器登录网站后即可体验平台的功能。③真实的仿真信息反馈:在车辆的仿真部分,使用Unity3D搭建车辆行驶场景,代码IDE 区域实现与python相同的功能,给使用者带来真实准确的调试反馈信息[3]。
图2 虚拟仿真实验系统架构
2.2 虚拟仿真实验教学方法
(1)以“系统导向,实践闭环,拓展学习”为总体设计思路。智能驾驶场景下的系统性、综合性实验是计算机视觉课程中重要的实践环节[3]。学生通过虚拟仿真实验操作,可以打破时空壁垒,无须亲临真实实验场地,可达到将理论用于实践的教学目标,而且虚拟仿真实验还能够及时地给出反馈,将实验效果以及对比结果回馈于学生,形成实践闭环。另外,在对平台设置的复杂工程问题进行分析-解决的过程中,可以更好地激发学生自主拓展学习的热情,从而达到对知识深化学习和拓展知识的目的。
(2)以“实践探究,兴趣驱动,自主创新”为技术实现目标。实验由简到难引导学生进行实验,学生可以在不同类型场景下,根据不同难度逐一进行探索和实验,实现了任务多元化、难度层次化。此外,如在深度测距实验中,也可以通过调整双目相机基线距离、相机焦距参数、前后车起始距离、前车运行速度以及前车特征标志图类型进行分组对照实验。在实验中学生可以采用控制变量法,逐渐增加实验场景复杂度,逼近显示实际生活场景,完成对应的车辆实验任务。
又如智能驾驶的环境深度感知,平台仿真在不同场景、气象条件和不同时间,针对多样化的场景元素仿真出深度信息,同时给出大量数据样本相应的标注信息,为学生探究不同深度网络和学习算法提供了重要支撑;同时可以探究与真实获取的样本数据的对比实验以评估仿真数据的有效性,进一步研究不同算法在不同场景下的优劣,增强了实验的探索性和自主研究的创新性[4]。
3 智能驾驶平台虚拟环境构建
3.1 实验仿真场景的设计
场景中的元素设计主要分为4 个部分,分别为现实生活中客观环境还原、人类行为活动的模拟、道路上车辆动态行驶逻辑、不同天气效果和昼夜更替。图3展示了同一个场景中的不同视觉效果,为用户还原更真实的视觉任务场景。
图3 同一场景不同视角与天气情况下仿真对比
平台实现仿真场景中一天内光照效果的真实变换,还原昼夜更替效果。仿真环境中的主光源用于模拟日光或月光,因此会随时间变换而改变照射角度、光照强度,以及光照颜色。除了光照效果外,天空盒也会随时间变化,太阳和月亮会对应时间升起或落下,云层也会进行一定程度的随机变换,并且与天气系统对应。在夜晚时,建筑物、街灯和车灯都会亮起。天气效果利用粒子系统实现,模仿雨滴或雪花的效果。场景中还使用后处理方式丰富了真实灯光细节,如路灯的光晕和车灯的强光。
在逼真的客观仿真环境中,为了提供接近真实场景的车辆运动状态测量环境,平台在搭建仿真环境时提供了多因素的实验环境,包括双目相机间距、车辆运动状态变化、前后车辆间距变化、车辆定位标志牌、多种交通标志、车道障碍物等外界信息的交互。为了提供接近真实停车场景的车辆泊车环境,和环境感知本仿真系统在构建仿真环境时提供了丰富主观人为全要素的实验环境,包括可视方位变化、停车位定位信息变化、车辆与环境中已泊车辆的距离等外界信息的交互。
3.2 多样场景参数的调控框架设计
平台提供一个随机化框架,简化了将随机扰动因素引入场景的过程。平台提供的多个样本随机化器,可以完成常见的随机化任务(例如,随机对象的位置、旋转、纹理和色调,以及场景内的天气、天空背景等等)。此外,为在同一场景内执行不同驾驶任务,本系统提供UI面板和按键操控功能。图4 展示了UI操控面板所提供的部分控制接口。例如任务要求为利用街道驾驶场景中的双目立体视觉图像信息完成综合驾驶任务,则使用随机化工具可以宏观调控场景中物体的预设组合,以及部分车辆和建筑物等物体的放置方式,从而改变任务的难度;也可以微观设置当前驾驶汽车或场景中其他车辆的运动模式、双目采集相机的相机参数等。
图4 参数调控工具面板
总而言之,场景参数调控框架可以满足用户进行综合任务时对场景内物体的调控要求,帮助用户在实验中更好地利用所需要的视觉信息,配合实验平台所提供的信息真值,实现更复杂的视觉算法,最终能够有多种方式可选择地完成综合驾驶任务的要求。
3.3 平台的多环境兼容
平台无须安装其他插件、外置设备或者软件,打开浏览器,输入有效链接地址,即可进入仿真平台环境。在实验过程中,学生只需要打开对应的实验场景,在代码框中编辑合适的处理算法,点击连续运行或单步调试,即可进行实验。对学生使用的电脑硬件条件并没有任何约束,也无需在使用本虚拟仿真平台前安装任何插件,学生只需要位于网络良好的环境中,便可以进行实验。
4 仿真平台教学应用案例与评估
自平台搭建以来,共计已有大约1 200 余名学生在教学中使用该平台,其中使用平台的学生不仅包含了本科三、四年级,还有硕士研究生,同时在全国内部推广,涵盖10 余所高校。
通过使用该平台,一方面能够促进学生掌握计算机视觉技术,另一方面激发了学生们的创新实践能力。
4.1 基于平台的深度感知建模的实践案例
本平台最大程度提供逼真的仿真场景和供用户利用视觉信息完成综合驾驶任务的仿真平台。环境感知与分析建模实验分为3 个阶段:①环境感知数据生成;②利用平台提供的仿真数据对单目深度估计建模;③与真实数据所得的模型进行对比与评估,验证在平台上所使用的图像处理算法,能够更好地在真实场景中使用,从而达到实验教学的目的。
平台为学生提供了场景深度图采集功能,为验证本平台仿真场景所采集的图像质量以及对应的深度图质量,本文于实验部分选用目前单目深度估计常用网络模型MonoDepth2[5]对本平台提供的图像数据进行质量验证。
首先在本平台上对不同场景采集视频序列,分辨率设定为640 ×480。使用固定基线的两个采集相机以20 帧/s的帧速率进行双目图像采集,彩色图像与深度图一一对应。
本案例中MonoDepth2 模型使用PyTorch 工具搭建,优化方式采用Adam优化[6],迭代周期默认设为20个,批处理大小为12,输入和输出分辨率均为640 ×192。验证集数量约为训练集大小的10%。
4.2 建模实验结果的评价指标
本文使用以下常用的量化指标,作为对训练后模型单目深度估计表现的衡量标准:
(1)绝对相对误差。计算每一个像素点i的估计深度值Di与实际深度值D*i的差值绝对值,并除以实际深度值,最后将结果进行累加并取总数为N个像素点的平均值。计算式如下:
(2)平方相对误差。计算每一个像素点i的估计深度值Di与实际深度值的差值平方,并除以实际深度值,最后将结果进行累加并取总数为N个像素点的平均值。计算式如下:
通过以上测试指标对实验结果进行分析,误差值指标AbsRel和SqRel越小说明模型测试结果越好,准确度指标越高说明模型深度估计能力越好。
4.3 模型精度评测
本文首先分别使用真实数据集KITTI[7]和平台所得到的仿真数据训练MonoDepth2 网络模型,训练分为两种方式,一种是只用单目数据对模型进行训练;另一种是以一定比例将单目数据和双目数据进行混合,然后训练网络模型。将训练好的模型在KITTI数据集上进行测试,测试集分割选用Eigen子集,使用单目深度估计指标对不同数据训练所得的网络模型的深度估计能力进行比较与评估。
表1 的结果说明本平台所采集的仿真数据训练好的模型在4 个指标中,与真实数据建模所得的模型测试指标十分接近,说明本平台仿真的深度数据与真实数据对网络模型的训练效果相近[8]。
表1 不同数据训练后的模型在KITTI测试集上深度预测表现
再进行定性分析,使用不同数据训练所得模型对同一张图进行单目深度估计,并对比可视化视差图(见图5)。其中:图5(a)为原图,图5(b)、(c)分别对应KITTI数据集中使用单目数据单独训练和单双目数据混合训练结果,图5(d)、(e)分别对应平台仿真数据只使用单目数据训练和单双目数据混合训练结果。可视化视差图对比可得,平台中的仿真深度数据与真实数据对建模效果一致。
图5 深度估计结果可视化视差图对比
综上所述,平台所提供的彩色图像数据与对应深度数据能够满足深度视觉相关实验要求,拥有与真实数据相近的逼真程度与准确性,具有实验价值[9-12]。
5 结 语
随着科学技术的不断发展,计算机视觉技术越来越多地应用于智能驾驶领域,实验教学在课程中起着越来越重要的作用。
本文主要针对计算机视觉课程的教学进行了一些改革尝试,通过虚拟仿真实验,不仅培养了学生动手实践的能力,还增加了学生对于此课程的学习积极性,对学生系统地掌握理论知识和提升创新能力都具有极大的促进作用,最终达到提高教学质量的目的[13-14]。