盘它!基于CANN的辅助驾驶AI实战案例,轻松搞定车辆检测和车距计算!( 三 )

盘它!基于CANN的辅助驾驶AI实战案例,轻松搞定车辆检测和车距计算!

文章插图
在后处理阶段中,后处理包括根据推理结果获取检测框坐标和置信度,使用NMS消除多余的边框,使用透视变换矩阵计算车距,用opencv检测车道线,最终绘制带有车辆检测框、检测框类别、车距和车道线的新图像 。
梳理一下整体开发流程:
1. 运行管理资源申请:用于初始化系统内部资源,此部分为固定的调用流程 。2. 加载模型文件并构建输出的内存:将训练好的模型转换成om离线模型并且从文件加载 。此时需要由用户自行管理模型运行的内存,根据内存中加载的模型获取模型的基本信息包括模型输入、输出数据的buffer大小 。由模型的基本信息构建模型输出内存,为接下来的模型推理做准备 。3. 数据预处理:对读入的图像数据进行预处理,然后构建模型的输入数据 。首先会对输入视频中的图像画面按每帧进行处理;然后由BGR转成RGB格式;接着使用resize将图像大小变成416x416,最后除以255进行归一化处理以消除奇异数据的影响 。4. 模型推理:根据构建好的模型输入数据进行模型推理 。5. 解析推理结果:基于推理得到的检测边框和各边框的置信度,使用NMS消除多余的边框,将新的边框和类别绘制在输出图像上 。这样,一个基于CANN开发的简易版AI辅助驾驶小应用就开发完成了,小伙伴们点击如下链接就能直接体验效果啦!https://www.hiascend.com/zh/developer/mindx-sdk/driveassist
盘它!基于CANN的辅助驾驶AI实战案例,轻松搞定车辆检测和车距计算!

文章插图
可能有人会问,车距是怎么算出来的?其实车距计算采用的是透视变换原理,使用opencv的getPerspectiveTransform方法通过将驾驶过程中拍摄的直视图转换成俯视图计算车距 。此外,用来拍摄行驶画面的相机也影响车距的计算 。需要查找相机的内外参矩阵,结合畸变系数用相机标定技术将图像中的距离信息映射为客观世界中的真实距离,从而计算出与其他车的距离 。这几个参数如何查找可以参考文末的视频链接 。
我们的项目代码全部开源,感兴趣的小伙伴可以下拉到文末直接访问源码 。当前开发的这个AI辅助驾驶小应用,针对分辨率1280x720、帧率29.97、时长16秒的视频,单帧图像在昇腾AI处理器上的纯推理时长为14.19毫秒,但由于图像的前处理和后处理是在CPU上进行的,因此影响整体性能,可通过以下方式改进:
1. 前处理和后处理根据CPU数量和处理时长使用多个线程并行处理,提高昇腾AI处理器使用率 。
盘它!基于CANN的辅助驾驶AI实战案例,轻松搞定车辆检测和车距计算!

文章插图
2. 使用多个昇腾AI处理器进行多路推理,进一步提升性能 。3. 优化代码算法,将后处理部分由CPU下沉到昇腾AI处理器减少后处理耗时,如何下沉可参考https://gitee.com/ascend/samples/tree/master/python/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture_with_postprocess_op4. 使用Auto Tune工具,对模型进行调优,减少模型单次推理时长5. 使用Profiling工具,分析模型中耗时算子,对算子进行优化
欢迎小伙伴一起参与项目改进,如有疑问也欢迎在gitee互动留言!
总结如今很多汽车、高铁和飞机上都搭载了辅助驾驶系统,不仅可以减轻驾驶员的负担,同时还降低了事故发生的概率 。随着越来越多的行业汇入AI这条道路,昇腾CANN也将凭借技术优势大大降低企业和个人开发者的使用门槛,通过不断创新打造昇腾AI极致性能体验,加速AI应用行业落地步伐,助力合作伙伴在未来AI之路上越走越远!
相关链接在线体验链接:https://www.hiascend.com/zh/developer/mindx-sdk/driveassistGitee源码链接:https://gitee.com/ascend/samples/tree/master/python/level2_simple_inference/2_object_detection/YOLOV4_coco_detection_car_videoYOLOv4原论文:https://arxiv.org/abs/2004.10934YOLO原论文:https://arxiv.org/pdf/1506.02640.pdfYOLOv4模型实现:https://github.com/AlexeyAB/darknet相机参数查找方法:https://www.bilibili.com/video/BV1Fq4y1H7sx/

经验总结扩展阅读