共计 7886 个字符,预计需要花费 20 分钟才能阅读完成。
摘要:在 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 的技能市场,提供了丰盛的开发好的技能,开发者能够站在伟人的肩膀上做开发,进步开发效率。
点击关注,第一工夫理解华为云陈腐技术~