摘要:基于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 。

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

Demo分享丨看ModelArts与HiLens是如何让车自己跑起来的的更多相关文章

  1. ModelArts 与HiLens Kit联合开发丨行人社交距离风险提示Demo

    摘要:本Demo使用YOLOv3_Resnet18模型来检测的视频流中的行人,获取行人坐标(即图中蓝色方框),然后计算所有检测到的人之间的相互"距离". 前情提要 听到行人社交距离 ...

  2. 漏洞经验分享丨Java审计之XXE(下)

    上篇内容我们介绍了XXE的基础概念和审计函数的相关内容,今天我们将继续分享Blind XXE与OOB-XXE的知识点以及XXE防御方法,希望对大家的学习有所帮助! 上期回顾  ◀漏洞经验分享丨Java ...

  3. 漏洞经验分享丨Java审计之XXE(上)

    最近在审计公司的某个项目时(Java方面),发现了几个有意思的Blind XXE漏洞,我觉得有必要分享给大家,尤其是Java审计新手,了解这些内容可以让你少走一些弯路. Java总体常出现的审计漏洞如 ...

  4. 微信小程序初体验与DEMO分享

    前言 前一段时间微信公布小程序,瞬间引来了大量的关注.博主的公司也将其定为目标之一,遂派本菜为先头兵(踩坑侠). 这次开发了一个比较完整的DEMO,模仿自某个APP首页,由于保护隐私的目的我把数据拷贝 ...

  5. (Demo分享)利用JavaScript(JS)做一个可输入分钟的倒计时钟功能

    利用JavaScript(JS)实现一个可输入分钟的倒计时钟功能本文章为 Tz张无忌 原创文章,转载请注明来源,谢谢合作! 网络各种利用JavaScript做倒计时的Demo对新手很不友好,这里我亲手 ...

  6. 实践案例丨基于ModelArts AI市场算法MobileNet_v2实现花卉分类

    概述 MobileNetsV2是基于一个流线型的架构,它使用深度可分离的卷积来构建轻量级的深层神经网,此模型基于 MobileNetV2: Inverted Residuals and Linear ...

  7. 人车识别实验丨华为ModelArts VS 百度Easy DL硬核体验

    摘要:想了解时下流行的自动驾驶相关AI模型吗?接下来就用华为云的ModelArts和百度的Easy DL带你体验一下AI平台是怎么进行模型训练的. 华为ModelArts自动学习 VS 百度Easy ...

  8. 面经分享:看非科班研究生如何转行斩获 ATM 大厂的 Offer ?

    前言 先介绍一下自己的情况吧,本科和研究生都是通信专业,本科是某 Top2,研究生是香港某大学.了解了通信行业的就业情况和工作内容后,大概今年3月份的时候开始想转互联网. 本人相关的基础情况是:学校学 ...

  9. 新鲜出炉!春招-面试-阿里钉钉、头条广告,美团面经分享,看我如何拿下offer!

    之前给大家分享了一个朋友在字节面试的面试经历和拿到offer的过程,过程也算是比较精彩了,感兴趣的朋友可以去翻翻之前的那篇文章.话不多说重点来啦,一直有人发私信问我有没有其他大厂的面经分享啊,我也是联 ...

随机推荐

  1. java多态2

    1 package pet_2; 2 3 public class Pet { 4 private String name; 5 6 public String getName() { 7 retur ...

  2. mybatis-plus使用记录

    如何and和or: QuoteSalaryEnum salaryMax = QuoteSalaryEnum.of(memberObjectInfo.getQuoteSalaryMax()); Quot ...

  3. 华为交换机eNSP删除Vlan的详细步骤

    设备支持批量删除VLAN和单个删除VLAN两种方式: 单个删除VLAN10 <HUAWEI> system-view [HUAWEI] undo vlan 10 批量删除VLAN10到VL ...

  4. mysql建表和建数据库语句

    一.数据库操作语言 数据库在操作时,需要使用专门的数据库操作规则和语法,这个语法就是 SQL(Structured Query Language) 结构化查询语言. SQL 的主要功能是和数据库建立连 ...

  5. 使用KVM的API编写一个简易的AArch64虚拟机

    参考资料: Linux虚拟化KVM-Qemu分析(一) Linux虚拟化KVM-Qemu分析(二)之ARMv8虚拟化 Linux虚拟化KVM-Qemu分析(三)之KVM源码(1) Linux虚拟化KV ...

  6. 第7.6节 Python中类的继承机制详述

    在本章第一节,介绍了面向对象程序设计的三个特征:封装.继承和多态,前面章节重点介绍了封装和多态,由于Python语言是多态语言,对象的类型不再由继承等方式决定,而由实际运行时所表现出的具体行为来决定, ...

  7. web文件包含

    web安全~文件包含总结   文章来自freebuf,作者总结的很好,所以拿来做笔记用!!! 0×01 文件包含简介 服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当P ...

  8. 前端性能测试(H5性能测试)

    前端性能调优方法同样适用于H5. 1.H5前端性能知识点 学习前端性能,必须对HTTP协议有所了解. 1.1 浏览器渲染引擎 浏览器是Html解析和页面最终展示的工具. 浏览器的主要功能:将用户选择的 ...

  9. 项目使用RQ队列的思考

    碎遮项目的后端异步处理经历了 无处理->多线程/多进程->celery异步队列->RQ队列 的调整和修改,先简单说明一下为什么会存在这样的过程. 在nmap的使用指南中,提到过这样的 ...

  10. pytorch 损失函数(nn.BCELoss 和 nn.CrossEntropyLoss)(思考多标签分类问题)

    一.BCELoss 二分类损失函数 输入维度为(n, ), 输出维度为(n, ) 如果说要预测二分类值为1的概率,则建议用该函数! 输入比如是3维,则每一个应该是在0--1区间内(随意通常配合sigm ...