
文章插图
图片源自YOLO原始论文,参见文章末尾
昇腾强大算力平台,让训练“快”到飞起 。和人类掌握某项技能一样,算法模型本身也需要经过不断地训练和试错才能满足特定业务场景需求,面对成千上万的数据量和参数量,训练时间可能需要几天甚至上月,这时,一个拥有强大算力的AI计算平台简直能救你于水火 。
昇腾AI基础软硬件平台,依托昇腾AI处理器强大的算力,借助异构计算架构CANN的软硬件协同优化充分释放硬件算力,为高效训练奠定了坚实的基础 。
我们知道,AI算法模型可以基于不同AI框架定义 。无论是华为开源AI框架昇思MindSpore,还是TensorFlow、PyTorch、Caffe等其他常用AI框架,CANN都能轻松转换成标准化的Ascend IR(Intermediate Representation)表达的图格式,屏蔽AI框架差异,让你快速搞定算法迁移,即刻体验昇腾AI 处理器的澎湃算力 。
此外,在全新一代CANN 5.0版本中,更是能通过图级和算子级的编译优化、自动调优等软硬件深度协同优化,全面释放硬件澎湃算力,达到AI模型训练性能的大幅提升 。针对包括分类、检测、NLP、语义分割在内的常用模型训练场景,均可实现性能翻番,让整个训练过程快到“飞”起 。
本项目使用的YOLOv4原始模型是基于Pytorch框架和昇腾AI处理器训练的,开发者们可以直接下载使用,也可根据实际精度需要重训:
https://www.hiascend.com/zh/software/modelzoo/detail/2/e2c648dc7ffb473fb41d687a1a490e28
AscendCL接口,助力开发者高效编程有了训练好的AI算法模型之后,就能借助AscendCL编程接口实现对视频车辆及车道线的智能检测了 。AscendCL(Ascend Computing Language)是一套用于开发深度神经网络推理应用的C语言API库,兼具运行时资源管理、模型加载与执行、图像预处理等能力,能够让开发者轻松解锁图片分类、目标检测等各类AI应用 。并且为开发者屏蔽底层处理器的差异,让开发者只需要掌握一套API,就可以全面应用于昇腾全系列AI处理器 。借助AscendCL编程接口,采用如下图所示的模块化设计,便能快速实现一个基于YOLOv4算法的目标检测应用 。

文章插图
首先介绍一下核心代码 。在预处理阶段,主要将opencv读到的图像转换成符合模型输入标准格式和尺寸的图像(源码如下图所示,完整版代码请查看文末链接) 。
1. 首先将opencv每帧读到的BGR图像转换成RGB图像,并通过模型输入所需宽高与原图像宽高得到缩放系数scale、偏移量shift、偏移系数shift_ratio 。2. 将原图像resize到新的宽高得到image_,构建一个全0的新图像,宽高和模型输入宽高相同 。将image_以np.array的形式填充到全0的图像中,不在偏移范围内的则都是0,将的图像的数据类型转换成np中32位浮点型 。3. 为了消除奇异样本数据的影像,进一步做归一化处理 。4. 最后将通道数换到图像的第一维度,返回新生成的图像和原始图像 。

文章插图
在推理阶段,调用acl_model中的execute函数执行模型(完整版代码请查看文末链接),预处理后的图像会被送至转成om的YOLOv4模型,返回推理结果 。

文章插图
经验总结扩展阅读
- 基于PL022 SPI 控制器 海思3516系列芯片SPI速率慢问题深入分析与优化
- 基于vite3+tauri模拟QQ登录切换窗体|Tauri自定义拖拽|最小/大/关闭
- 基于tauri+vue3.x多开窗口|Tauri创建多窗体实践
- 提高工作效率的神器:基于前端表格实现Chrome Excel扩展插件
- 基于雪花算法的增强版ID生成器
- 基于QT和C++实现的翻金币游戏
- Mysql单表访问方法,索引合并,多表连接原理,基于规则的优化,子查询优化
- 基于tauri打造的HTTP API客户端工具-CyberAPI
- 基于纯前端类Excel表格控件实现在线损益表应用
- 知识图谱实体对齐2:基于GNN嵌入的方法