写点什么

Demo 分享丨看 ModelArts 与 HiLens 是如何让车自己跑起来的

发布于: 2020 年 12 月 29 日

本文作者|历天一


摘要:基于 HiLens Kit 已经基本开发完成,可部署到 HiLens Kit,模型的选择为基于 DarkNet53 的 YOLOv3 模型,权重为基于 COCO2014 训练的数据集,而车道线的检测是基于 OpenCV 的传统方法实现的,可通过 ModelArts AI Gallery 与 HiLens Kit 全流程端云协同开发部署。

点击传送门,先来看看最终视频效果吧→→(PS:请忽略背景音乐)!

主体流程介绍:

  1. (可选,忽略亦可,取决于摄像头质量,对于相机畸变较大的需要先计算相机的畸变矩阵和失真系数,对图片进行校正)图片校正;

  2. 截取感兴趣区域,仅对包含车道线信息的图像区域进行处理;

  3. 对感兴趣区域使用透视变换;

  4. 针对不同颜色的车道线,不同光照条件下的车道线,不同清晰度的车道线,根据不同的颜色空间使用不同的梯度阈值,颜色阈值进行不同的处理。并将每一种处理方式进行融合,得到车道线的二进制图;

  5. 提取二进制图中属于车道线的像素;

  6. 对二进制图片的像素进行直方图统计,统计左右两侧的峰值点作为左右车道线的起始点坐标进行曲线拟合;

  7. 使用二次多项式分别拟合左右车道线的像素点(对于噪声较大的像素点,可以进行滤波处理,或者使用随机采样一致性算法进行曲线拟合);

  8. 计算车道曲率及车辆相对车道中央的偏离位置;

  9. 效果显示(可行域显示,曲率和位置显示)。

  10. 检测驾驶过程中道路中其他车辆状态,显示车辆类别置信度,并通过 YOLOv3 进行检测车辆,然后返回的车辆检测框的坐标与当前坐标进行透视变换获取大约的距离作为车辆之间的距离 dis

说明:

本 Demo 的主体框架基于 HiLens Kit 已经基本开发完成,模型的选择为基于 DarkNet53 的 YOLOv3 模型,权重为基于 COCO2014 训练的数据集,而车道线的检测是基于 OpenCV 的传统方法实现的,所以计算量较大,导致整体速度较慢。

关于部署和训练——基于 ModelArts 和 HiLens Kit 的端云协同:

1)考虑到部署,已经测试过部署到 HiLens Kit 了,对了,也支持在 HiLens Stuido 运行模拟测试,更推荐在 HiLens Studio 哦,比较方便,而且不需要硬件支持,只需要在 HiLens Kit 或 HiLens Studio 上安装 pillow 库就行了,关于如何在 HiLens Kit 和 HiLens Studio 上安装第三方库,非常简单的哦,可参考:

在 HiLens Kit 上:https://bbs.huaweicloud.com/forum/thread-94316-1-1.html

在 HiLens Studio 上:https://bbs.huaweicloud.com/forum/thread-94317-1-1.html

2)如果想训练或优化,由没有硬件(比如 GPU),那么很推荐使用 ModelArts 了,一站式开发,无缝衔接到 HiLens Kit 哦,关于 ModelArts 的介绍可参考:https://www.huaweicloud.com/product/modelarts.html

同时也许还能提升下运行速度,这里介绍三种算法,亲测都可以部署到 HiLens Kit 推理使用哦,就在最新的 AI Gallery(原 AI 市场)中哦,这里除了有算法,还有模型、数据集等等,很丰富,大家可以自己探索一下,同时还可以分享自己的算法给其他开发者,开发者订阅即可创建训练使用,很方便,相比于 GitHub,不仅提供了源代码,还提供了用于训练的硬件资源,强大的 Tesla V100 32GB 版本哦。



(1)YOLOv3_Darknet53,没错,就是著名的YOLOv3,经典的目标检测网络,后续又推出了 YOLOv4、YOLOv5(暂称此名吧),AI Gallery 也推出了YOLOv5的,不过由于 PyTorch 框架暂不支持模         型转换,所以暂时放弃了。

       关于 YOLOv3_Darknet53 的使用方法,算法界面介绍很详细,这里就不赘述了,可以参考使用,注意模型转换部分请参考这篇博文中模型转换部分哦:https://bbs.huaweicloud.com/blogs/199870

       算法备用链接为:https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=2d52a07e-ccbd-420f-8999-2ea7b4bdd691

     (2)YOLOv3_Resnet18(GPU),如果我们只想做车辆的检测或者为了简化模型,提高速度,可以选用主干网络为 Resnet18 的 YOLOv3,网络更轻量,速度会快一些哦。

       同样给上链接:https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=948196c8-3e7a-4729-850b-069101d6e95c

     (3)YOLOv3_Resnet18(Ascend 910),和上面(2)版本差异不大,主要改为由 GPU 换为 Ascend 910 训练的,大家可自由选择哦。

       链接为:https://marketplace.huaweicloud.com/markets/aihub/modelhub/detail/?id=7087008a-7eec-4977-8b66-3a7703e9fd22

好了,算法部分解决了,数据怎么办呢?ModelArts 的 AI Gallery 同样想到了,提供了数据集哦,免费订阅,下载到自己的 OBS 导入就能用了(注意 OBS 需要一定花费),这里我也提供了开源数据集的 5164 张人车图片,供大家使用哦,上链接:https://marketplace.huaweicloud.com/markets/aihub/datasets/detail/?content_id=a337272b-6918-4282-83d6-2b15e2a4c716

那么数据集和算法都有了,该训练了吧,在 ModelArts 上可以很好完成,凭借强大的 Tesla V100 32GB 或 Ascend 910 可以很快完成哦。

上述整体操作流程部分可参考下述博文完成:https://bbs.huaweicloud.com/blogs/199870

运行效果:

完成执行如视频中所示处理的一帧需要约 300ms,也就是 FPS 约为 3,不较慢,需要优化。我觉得还有很大优化空间,比如:

(1)预处理和后处理很费时间,真正推理很快,可以从这方面加速,不知道开启多线程是否有提升,应该有吧;

(2)应该可以更好发挥专用硬件,记得好像有 DVPP 和 AIPP 吧,可以用来做色域转换的操作;

(3) YOLOv3 的后处理解析比较麻烦,这里用的是 COCO 的 80 类,但可以只用 person、car 两类,或者再加一点,同时 nms 也比较费时间,如果能用算子实现,融合到 om 模型中,会提速很多;

(4)这里使用的是 Python,如果用 C++应该会提升一些,执行效率会高很多吧。

(5)优化提速要根据硬件性能,对费时的部分做分析,以最大压榨硬件性能,需要做针对性、定制化地优化,我个人理解很浅,希望有熟悉的同学指教。

备注:

  1. 本 Demo 所用模型、代码均来自开源代码,好像是吴恩达老师的一个课程涉及的项目,但找不到出处了,如果知道的同学,还请在在下方回复指教,谢谢了。

  2. 本 Demo 的模型精度以及运行速度不做保证,仅供学习交流使用。

  3. 其他未尽事宜,还请多多指教。

  4. 代码会开源的,敬请期待哦,谢谢。

本文分享自华为云社区《Demo 分享 | 当自动驾驶遇到 ModelArts,ModelArts AI Gallery 与 HiLens Kit 开发》,原文作者:Tianyi_Li 。

 

点击关注,第一时间了解华为云新鲜技术~


发布于: 2020 年 12 月 29 日阅读数: 57
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
Demo分享丨看ModelArts与HiLens是如何让车自己跑起来的