英特尔开发板智慧交通演示-应急车道识别&违规提取
我们在平常长途回家,大多数多会上高速,但高速一般在节假日都会特别堵。所以这时候走应急车道的车还真不少,每每看到这些不排队的车主,真恨的有些牙痒,于是想结合OpenVINO™ 来实现一个类似于应急车道识别违法的案例,由于这篇文章没有代码部分,所以文章只讲述大致的思路,以及最终结果展示。
作者:英特尔创新大使 黄明明
文章介绍
之前写了很多关于Java 在OpenVINO™ 中的引用,有目标检测、道路分割、模型加速等,但虽然写了这么多,也似乎没有过多提及到一些实际生活上的案例。都说创新源于生活,于是乎就想做一些有意思的东西,想了想,还真有一个案例似乎可以做出来。我们在平常长途回家,大多数多会上高速,但高速一般在节假日都会特别堵。所以这时候走应急车道的车还真不少,每每看到这些不排队的车主,真恨的有些牙痒,于是想结合OpenVINO™ 来实现一个类似于应急车道识别违法的案例,由于这篇文章没有代码部分,所以文章只讲述大致的思路,以及最终结果展示。
总体构思
- 算力平台:为整体的想法提供算力和硬件支撑
- 识别模型:通过识别模型能够识别应急车道、车辆、车牌
- 举报系统:通过筛选出来的违规图片,进行自动上传。
算力平台
一开始打算用树莓派去做,后面考虑到树莓派这东西现在溢价严重得很,基本上都按传家宝的价格买。故使用研扬科技针对边缘 AI 行业开发者推出的哪吒(Nezha)开发套件,以信用卡大小(85 x 56mm)的开发板-哪吒(Nezha)为核心,哪吒采用 Intel® N97 处理器(Alder Lake-N),最大睿频 3.6GHz,Intel® UHD Graphics 内核GPU,可实现高分辨率显示;板载 LPDDR5 内存、eMMC 存储及 TPM 2.0,配备 GPIO 接口,支持 Windows 和 Linux 操作系统,这些功能和无风扇散热方式相结合,为各种应用程序构建高效的解决方案,专为入门级人工智能应用和边缘智能设备而设计。英特尔开发套件能完美胜人工智能学习、开发、实训、应用等不同应用场景。适用于如自动化、物联网网关、数字标牌和机器人等应用。售价 RMB 999起, 哪吒开发套件Nezha intel x86开发板板载Alder N97 可Win10/Ubuntu N97 4G+32G
应急车道识别
解决算力平台之后,我们就需要对模型的选型了,毕竟需要识别车道,这个才是关键。一开始想着实现车道识别可以使用最基础的OpenCV来实现,但是发现网上的资料和代码太过紊乱,且代码量也过于庞大,需要调节的参数五花八门,需要优化和移植的成本也不是一丁点。所以思考再三,在条路似乎不太符合快速偷懒实现的宗旨。于是打算基于之前road-segmentationOpenVINO™OpenVINO™-adas-0001模型。road-segmentation-adas-0001模型是使用了Open Model Zoo的预训练的道路场景分割模型。该模型识别四个类别:背景、道路、路缘和标记。而对于应急车道而言,我们只需要将车道提取出来。
如何识别四个类别:背景、道路、路缘和标记等操作可以看之前的文章
<英特尔开发套件在Java环境实现ADAS道路识别演示 | 开发者实战>
https://mp.weixin.qq.com/s/5bI0wUMfL1X39k-W6fBzgg
那么在高速上面,一般是两车道、三车道、四车道,而最右边则是应急车道,而绝大部分的车都会在正常车道中行驶,就如下图:
所以我们可以通过OpenVINO™ 的road-segmentation-adas-0001 模型将所有道路进行识别。
在通过模型运算之后,我们标记出来的道路是这样的,其他道路线我们用黄色表示,应急车道线我们用红色表示,这样我们就完成了最基本的需求。
车辆提取
同样,对于车辆识别和提取,我们也可以通过OpenCV来完成,也可以通过OpenVINO™ notebooks 中的教程(Vehicle Detection And Recognition with OpenVINO™ — OpenVINO™ documentation)来实现。
最后效果
我们现在拿到了车道信息和车辆信息,这时候我们只需要通过运算,就可以知道车辆是否走应急车道,下面是效果图(识别图片来源于百度)
结语
当然实际上的举报还是比较困难的,之前是想抓取举报平台的数据然后直接举报,但实际上比较严格,比如需要前后两张照片、照片需要位置信息,需要手机验证等,虽然这些都不是技术难点,但成本增加了,这需要两台手机一前一后拍摄,然后上传,效果图如下:
所以目前只做了车辆在应急车道的识别、车牌提取、车辆提取等工作,这些工作均通过Java 平台结合OpenVINO™ -Java-API 实现,仓库地址:https://github.com/Hmm466/OpenVINO-Java-API
后续笔者将结合OpenVINO™ -Java-API 实现更多案例,同时也请大家加入到项目中来,共同促进Java在AI领域的应用。
关于英特尔 OpenVINO™工具套件的详细资料,包括其中我们提供的三百多个经验证并优化的预训练模型的详细资料,请您点击https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/overview.html
除此之外,为了方便大家了解并快速掌握 OpenVINO™ 的使用,我们还提供了一系列开源的 Jupyter notebook demo。
运行这些 notebook,就能快速了解在不同场景下如何利用 OpenVINO™ 实现一系列、包括计算机视觉、语音及自然语言处理任务。
OpenVINO™ notebooks 的资源可以在 GitHub 下载安装:https://github.com/openvinotoolkit/openvino_notebooks
更多推荐
所有评论(0)