摘要:在2020年第二届华为云人工智能大赛•无人车挑战杯赛道中,“华中科技大学无人车一队”借助华为云一站式AI开发与治理平台ModelArts及HiLens端云协同AI开发利用平台,进行无人车模型开发与部署,最终取得大赛冠军。

2020年6月15日,由华为云主办,上海交大协办的第二届华为云人工智能大赛·无人车挑战杯正是开赛。往年第二届华为云无人车大赛6月启动以来,共吸引了150+所国内外高校、近200个团队、800人报名较量,笼罩了上海交大、清华、北大、浙大、复旦、西安交大、哈工大等出名高校,报名高校是去年的三倍。

华为云人工智能大赛·无人车挑战杯是在华为云人工智能平台(华为云一站式AI开发治理平台ModelArts、端云协同解决方案HiLens)及无人驾驶小车根底上,全面锤炼和进步赛队的AI解决方案能力及无人驾驶编程技巧的赛事。

9月25-26日,第二届华为云人工智能大赛 · 无人车挑战杯总决赛于华为全联接2020大会正式打响。在2020年第二届华为云人工智能大赛•无人车挑战杯赛道中,“华中科技大学无人车一队”借助华为云一站式AI开发与治理平台ModelArts及HiLens端云协同AI开发利用平台,进行无人车模型开发与部署,最终夺冠,取得20万处分(10万现金+10万代金券)。战队撰文分享其参赛体验,包含无人车较量的整体计划,多维数据处理及行驶管制的能力等。

1.较量背景

第二届华为云无人车挑战杯大赛,相比第一届大赛,难度更大,赛道环境更加靠近实在的路线。在较量中,无人车须要从发车区登程,通过车道线循迹沿“8”字形赛道在不能压线和触碰挡板的条件下行走一周半后,精确地停入到停车区。在无人车行驶期间,须要实现交通信号灯辨认、斑马线辨认、机器人动静避障、挡板区循迹、限速/解限速标记辨认、精准停车等工作。无人车不仅须要完满无误地实现所有的工作,在速度上也有要求,在总决赛中,无人车须要在70s内实现所有工作,工夫加分项能力为满分。

在较量中,华为云ModelArts一站式AI开发与治理平台,给参赛选手提供全流程的AI模型开发环境,助力参赛选手高效地实现检测工作中模型的训练,HiLens端云协同AI开发利用平台帮忙参赛选手疾速地实现模型在端侧设施上的部署和减速。华为云无人车挑战杯在由上海交大学生翻新核心智能制作实验室自主研发的无人车的根底上,联合华为云人工智能平台,全面锤炼和进步赛队的AI解决方案能力及无人驾驶编程技巧。

图1‑1 华中科技大学无人车一队的后浪

图1‑2 华为云无人车挑战赛总决赛现场

2.整体计划

无人车较量整体解决方案如图2‑1所示,较量次要分为三个局部,ModelArts做模型的在线训练,HiLens Kit做模型的部署,无人车上工控机通过ROS将各个节点整合到一起,做无人车底盘的决策和管制。

通过华为云ModelArts一站式AI开发与治理平台实现数据标注、模型训练、模型转换等工作,失去可供HiLens Kit前向推理的卷积神经网络的模型。HiLens Kit通过自带的相机采集图像,通过技能部署进行模型的前向推理和减速,HiLens Kit搭载着高性能的华为人工智能芯片昇腾310,针对卷积神经网络进行了优化,在模型的前向推理过程中可施展出弱小的算力。HiLens Kit实现交通灯、限速/解限速标记辨认、斑马线的指标检测辨认,通过Socket通信,将检测后果传给无人车上的工控机。无人车上工控机解决激光雷达的点云数据,做Slam建图和运行中的实时定位,工控机解决USB摄像头的采集的车道线数据,做车道线的辨认,再通过ROS将所有节点信息做整合,做底盘电机和舵机的决策控制。

图2‑1 无人车较量整体解决方案示意图

3.ModelArts模型训练

ModelArts是面向AI开发者的一站式开发平台,蕴含数据处理、模型训练、模型治理、模型部署等操作,并且提供AI市场性能,可能在市场内与其余开发者分享模型,其性能总览如图3‑1所示。在较量中,咱们通过ModelArts平台实现了数据标注、模型训练和模型在线转换等工作,并且通过ModelArts做模型的线上部署,测验模型的精度成果。

图3‑1 ModelArts一站式AI开发平台性能总览

3.1任务分析

本次大赛波及6类指标的检测辨认:红灯、绿灯、黄灯、限速标识牌、解限速标识牌、斑马线,如图3‑2所示。无人车在运行过程中,对指标采集的图像波及不同的视角和间隔,而且比赛场地光强未知,所以对于指标检测工作,要充分考虑到指标不同视角的刚体形变、不同间隔的尺度变动、不同环境光强的变动以及无人车运行中的静止含糊。无人车依据检测的后果做出相应决策和管制,对指标检测的精度要求很高,一旦误检或漏检,小车的管制就会出错,而且小车在赛道上疾速运行,所以对指标检测的速度也要求较高,一但小车看见指标,须要疾速输入检测后果。

图3‑2检测辨认的6类指标

3.2数据标注

数据标注采纳ModelArts中的数据管理性能,进入ModelArts平台的数据标注模块,创立数据集,抉择物体检测,增加标签集。既能够抉择手动标注,也能够在手动标注一部分后抉择智能标注,最终再批改确认智能标注。当数据集较大的时候,智能标注能够无效升高数据集标注的工作量。通过创立标注团队,将数据集调配给团队队员,团队单干放慢数据集标注速度。

图3‑3 ModelArts数据标注界面

3.3数据加强

咱们模型训练的数据集大部分来自HiLens Kit拍摄的不同环境下的视频序列,数据集中图像的反复比例较大,有必要将反复的图像做一些删除,对数据集做数据加强实现数据扩增,解决因为图像数据量较少带来的模型过拟合的问题。在较量中,咱们参考2018年的论文《Albumentations: fast and flexible image augmentations》开源的代码做数据集的裁减,开源代码网址:https://github.com/albumentat...。

该我的项目对于数据的裁减采纳色彩空间变换、含糊、亮度调整、黑白、压缩、随机噪声等30余种数据裁减方法。因为咱们较量中要辨认的对象,色彩是很重要的一个特色,例如:红灯、黄灯、绿灯三种灯的色彩,限速标识的红色和解限速标识的彩色,色彩变动相干的数据裁减,会造成数据色彩特色的失落。红灯、黄灯、绿灯三种灯别离在左、中、右三个地位,交通灯亮的地位,也是辨别三种灯的很重要的特色。所以对数据集的裁减,去掉了色调变换和程度翻转的数据裁减方法。数据裁减采纳裁减办法级联的形式,如图3‑4所示,更大程度上,减小数据之间的相似性,减少图像数据的多样性,数据加强的成果如图3‑5所示。

图3‑4 数据裁减办法级联形式

图3‑5 图像数据加强成果展现

3.4模型训练

通过数据加强,减小了数据之间的相似性,减少了数据多样性,最终选用了6031张图像数据做模型训练。模型训练咱们选用的是华为云AI市场外面基于TensorFlow框架的YOLOv3_Darknet53的网络。在训练时,采纳COCO数据集上的预训练模型,训练完后,通过模型转换性能将TensorFlow的PB模型转换成Ascend类型,以反对在HiLens Kit的Ascend 310 AI芯片上做模型推理。

YOLOv3是典型的一阶段的指标检测网络,图像输出为416*416条件下,COCO数据集上测试的mAP的分数为31.0,模型转换后在Ascend-310推理速度:17.8ms/pic,是目前速度和精度最为平衡的指标检测网络之一,其网络结构如图3‑6所示。

图3‑6 YOLOv3_Darknet53网络结构图(摘自网络)

YOLOv3采纳Darknet53作为backbone,Darknet53大量应用相似于ResNet的残差跳层连贯,从而能够加深网络的深度,特征提取能够提取出更高层的语义特色,并且为了升高池化带来的梯度负面成果,作者间接摒弃了pooling,用conv的stride来实现降采样,在这个网络结构中,应用的是步长为2的卷积来进行降采样。

YOLO v3中采纳相似FPN的上采样和特色交融的做法,在多尺度的特色图上做检测,大大增强了对小指标检测的精确度。YOLOv3采纳固定anchor对指标的地位做预测,图3‑6中输入的y1、y2、y3别离对应着32倍、16倍和8倍图像采样后果,32倍降采样的感触野最大,适宜检测大的指标,所以在输出为416×416时,每个cell的三个anchor box为(116 , 90)、 (156 , 198)、 (373 , 326)。16倍适宜个别大小的物体,anchor box为(30 , 61)、(62 , 45)、 (59 , 119)。8倍的感触野最小,适宜检测小指标,因而anchor box为(10 , 13)、(16 , 30)、(33 , 23)。

y1、y2、y3中每个cell回归边界框预测4个坐标,_tx , ty , tw ,th_。如果指标cell间隔图像左上角的间隔是(_cx_ ,_cy_),且它对应边界框的宽和高为_pw_ , _ph_ ,如图3‑7所示,那么网络的预测值为:

图3‑7 Bounding boxes回归形式

在ModelArts中做模型训练和调优参数相干设置如图3‑8所示,应用ModelArts中可视化工具做训练过程可视化后果如图3‑9所示。模型训练实现后,通过在线的模型转换工具,转换为.om的模型,以供在HiLens Kit上做推理。

图3‑8 ModelArts模型训练调优参数设置

图3‑9 训练过程可视化后果

4.HiLens技能开发和模型部署

华为HiLens为端云协同多模态AI开发利用平台,提供简略易用的开发框架、开箱即用的开发环境、丰盛的AI技能市场和云上治理平台。HiLens Framework封装了丰盛的视频剖析算法根底组件,如图像预处理、模型推理等,开发者只需大量代码即可开发本人的技能。HiLens Studio提供在线的开发环境,能够不便的在线编写和调试技能代码。治理控制台提供模型治理、技能开发等性能,供用户在云侧治理模型和技能,一键装置技能到端侧设施。在较量中,咱们应用HiLens Kit端侧设施做模型推理,线上开发好的技能能够一键部署到HiLens Kit上。

图4‑1 华为HiLens端云协同AI开发利用平台

4.1检测工作的Skill开发

如图4‑2所示在本次无人车较量中,咱们团队开发了3个Skill,get_pic是用HiLens Kit采集图像数据并通过socket通信传给主机,做数据集采集应用;yolo-v3-v1-test是用来在测试模型的精度成果,不加与工控机通信代码;uac-yolov3-v1是在无人车理论行驶时的技能,在较量中采集图像进行模型推理并与工控机通信。

图4‑2 华为云HiLens技能列表

在做检测工作的技能开发,咱们首先利用HiLens Studio的开发环境和HiLens Framework,在线做模型前向推理的测试,HiLens Studio开发环境如图4‑4所示,代码流程如图4‑3所示,先初始化HiLens、摄像头和加载模型,接着进入循环,读取摄像头采集的图像,做数据预处理,HiLens读取摄像头的图像为YUV格局,须要转为RGB格局,以及将图像resize为(416,416),以便做模型推理。模型推理通过调用HiLens Framework封装好的API,做模型前向推理的计算。因为Ascend310不反对模型后处理的计算,所以这一部分须要通过软件来做,后处理次要包含,从模型输入的特色矩阵中解码出检测框的地位、类别、置信度等信息、NMS筛选检测框等,最初输入后果。在后果后处理阶段,咱们也退出了一些小技巧,以进步检测工作的准确率:

  • 对于6类指标咱们别离采纳不同的置信度阈值做筛选,交通灯和斑马线须要在较远的间隔就辨认到,置信度阈值咱们设置为0.5,而限速/解限速,为确保检测正确性,置信度设置为0.9。
  • 对于红绿灯和限速/解限速,通过计算指标框中图像的红色重量值,来纠正检测的谬误,例如,当检测到红灯,必须红色重量值大于0.15,才认为正确,否则视为谬误。对于检测到绿灯或黄灯,必须红色重量小于0.1,才认为正确。
  • 同理,对于斑马线的检测,将指标框图像二值化,红色像素占比大于0.3,才认为检测正确。

最终,咱们在HiLens Studio对决赛现场的图像做测试,测试了700张图像,只有23张图像检测谬误,指标漏检的也很少,而且都是在角度很偏的时候,漏检率在5%以内。

在HiLens Studio技能代码做完了测试之后,在“技能治理”外面,创立一个新的技能,导入在HiLens Studio外面的代码,退出与工控机通信的局部,就实现了检测工作加上通信的技能开发,而后将技能在线装置到端侧设施HiLens Kit上。下一次HiLens Kit启动后,就会主动启动技能。

图4‑3 检测工作技能运行流程

图4‑4 HiLens studio界面展现

4.2HiLens的通信

在无人车较量中,HiLens Kit通过网口采纳Socket通信与工控机或PC机进行通信,Socket网络通信框架如图4‑5所示,Socket是应用层与TCP/IP协定族通信的两头软件形象层,它是一组接口。

在设计模式中,Socket其实就是一个门面模式,它把简单的TCP/IP协定族暗藏在Socket接口前面,对用户来说,一组简略的接口就是全副,让Socket去组织数据,以合乎指定的协定。Socket通信分为基于TCP和基于UDP两种。TCP协定是基于连贯的协定,须要先建设牢靠的连贯,而UDP不须要当时建设牢靠的连贯,而是间接把数据包发送进来,是不稳固的连贯。在图像数据集采集时,通过Socket通信传输视频数据,数据量大且不用要求每一个数据包都精确接管,咱们采纳Socket UDP通信,传输视频数据。在HiLens Kit做指标检测工作时,客户端数据少又须要稳固牢靠的传输,所以咱们采纳基于TCP协定的Socket通信,基于TCP协定的Socket通信如图4‑6所示。

图4‑5 Socket网络通信框架

图4‑6 Socket通信TCP通信过程

5.ROS无人车决策控制

无人车上由车上的工控机实现各项数据的解决和交融,进行无人车的决策控制。通过解决激光雷达的点云数据,做Slam建图和运行中的实时定位以及挡板区的循迹,解决USB摄像头的采集的车道线数据,做车道线的辨认,通过Socket通信接管来自HiLens kit的指标检测的后果。如图5‑1所示,无人车的管制计划次要包含:车道线循迹、挡板区循迹、斑马线停车及避障、限速和解限速、发车和停车、建图和定位,通过ROS整合各个节点的音讯,将多种数据进行多模态交融,进行无人车管制状态机的切换,给驱动管制发送不同的速度和方向指令,驱动管制将速度和方向信息转为无人车底盘的电机速度和舵机打角指令,通过串口发送给无人车驱动,最终实现无人车完满高效地实现整个较量工作。

图5‑1 无人车管制计划

5.1车道线辨认

在本次较量中,车道线的辨认也是本次较量的一个难点,无人车上USB camera的地位低、视角窄导致大部分工夫只能看到复线,再加上工控机的性能较弱,对图像相干处理速度较慢。对于车道线辨认,咱们没有采纳较量方提供的例程,而是从理论驾车思路登程,想方法失去路线的中线,通过中线推算偏差。

车道线辨认的流程如图5‑2所示,首先将图像二值化,通过收缩与侵蚀,将车道线线条的断裂给补上,小车在运行中,车道线总是会交于图像的左、右、下三条边,所以在这三条边上搜寻车道线基本点,依据搜寻到的基本点搜寻线。因为摄像头固定,采纳提前标定好的透视变换矩阵将图像变换到俯视图。因为在搜寻车道线基本点可能会搜寻到多个,例如图5‑3搜寻到3个基本点,从而会搜到多条边线,所以须要对边线进行筛选,提取车道线。将车道线做一次拟合,因为路线宽度固定,能够通过拟合的车道线计算出中线。依据中线的计算结果,即可求解偏差。在图像计算中,通过采纳python的numpy矩阵操作代替大量python低速循环进行计算减速,精简计算流程,(640,480)的图像在工控机计算帧率均匀可达到46fps。

图5‑2 车道线辨认根本流程

图5‑3 车道线辨认后果展现

5.2激光雷达挡板区循迹与无人车定位

无人车上的激光雷达传感器可扫描到无人车四周360度的障碍物的信息,能够用来做挡板区的循迹和无人车的实时定位。雷达数据的可视化展现如图5‑4(a)所示,雷达的点云数据组成了无人车行驶的车道,可采纳和车道线类似的解决方法,搜寻雷达右半局部0-75度的范畴,拟合左边线,从而计算中线,求取偏差。具体处理过程可参考车道线解决计划,此处不再赘述。

图5‑4 雷达数据可视化和搜线扫描形式

无人车Slam建图和定位的计划,现曾经很成熟, GitHub、GitLab等开源平台也有很多十分棒的基于ROS的激光雷达Slam我的项目和定位计划,咱们采纳开源的rf2o将激光雷达数据转为里程计信息,通过AMCL做定位,采纳Gmapping建图,ROS开源社区(http://wiki.ros.org)都有具体的介绍,此处不再赘述。

图5‑5 无人车Slam建图和定位计划

5.3多模态交融的无人车决策控制

在HiLen Kit部署的技能,只管采纳一些技巧晋升了图像的辨认准确率,但也并非百分百精确。无人车在行驶过程中,存在静止含糊、未知光源烦扰、反光等问题,只管制作数据集思考了此类情况,然而还是会有影响。咱们采纳了数字滤波中罕用的的窗口滤波来做图像信息的后端解决。

  • 采纳长度为k的定长队列做为察看窗口
  • 选取k个元素中呈现最多类别作为以后阶段预测类别

在小车行驶过程中,将ROS节点的各个信息,做多模态交融,实现无人车不同状态下切换,如图5‑6所示,无人车实现起步、斑马线停车避障、挡板区循迹、限速/解限速、精准停车等工作。

图5‑6 无人车不同状态下状态机的切换

6.联结应用ModelArts和HiLens体验

在此次华为云无人车大赛中,联结应用ModelArts和 HiLens,这全流程的解决方案对我的项目的实现提供了高质量的服务。ModelArts提供全流程的AI开发平台,数据管理、模型训练、在线部署,都不便高效;HiLens提供了端云协同的AI开发平台,大大降低了嵌入式平台开发门槛,实现模型高效快捷地端侧部署。咱们在应用华为云的全栈式解决方案之前,也接触过一些其余的AI解决方案,然而无论是云还是端都没有华为云ModelArts和HiLens的联结应用便捷高效。其便捷高效次要体现在以下几个方面:

(1)数据管理平台反对数据上传、存储、标注、解决一体化服务;

(2)ModelArts提供了各种配置好的开发环境,反对各种深度学习框架的开发;

(3)ModelArts的AI市场提供了丰盛的网络模型,进步开发者开发效率;

(4)ModelArts反对模型在线部署和测试,可提供网络接口供物联网设施实现云端协同;

(5)HiLens的HiLens Framework,丰盛的API解决了驱动和图像接入问题,自带媒体数据处理库,反对各种自定义操作;

(6)HiLens Studio开发环境可在不须要硬件的条件下,做模型的测试和代码的调试;

(7)HiLens技能治理平台可对技能间接做在线的部署和切换,不便、快捷。

(8)HiLens的技能市场,提供了丰盛的开发好的技能,开发者能够站在伟人的肩膀上做开发,进步开发效率。

点击关注,第一工夫理解华为云陈腐技术~