【CANN训练营】玩转CANN目标检测与识别一站式方案【基础篇】
前言
本博文承接上一篇《玩转CANN目标检测与识别一站式方案【介绍篇】》,如果是对CANN目标检测与识别一站式方案还不了解的同学,建议先读读之前的博文。
认识AclLite
AclLite是什么?
CANN目标检测与识别一站式方案是基于AclLite开发的,那么AclLite又是什么呢?简单来说,就是基于华为昇腾原生接口和官方接口文档做了进一步封装,特别是对当前开源社区样例中相关重复代码进行封装,为用户提供的一组简易公共接口。
一言以蔽之,就是简化开发,降低基于CANN开发的难度。其功能介绍和获取方式如下图所示:
AclLite简介
考虑到实际开发需要和比较热门的应用,下面我们介绍下常用的处理方法:
图片处理
视频处理
模型推理,公共函数与资源管理
应用和多线程
除了以上部分,其实还有其他部分,这里就不一一展开了,需要注意的是,这是基于官方接口的封装,属于二次开发,不建议作为标准库使用,但是如果为了快速实现,验证原型,还是可以考虑的。
CANN目标检测与识别一站式方案实现分析
看过《玩转CANN目标检测与识别一站式方案【介绍篇】》的朋友们应该知道,原始方案是先检测对输入做车辆检测,之后将检测到的车辆做颜色分类,是一个检测 + 分类的级联任务。下面分别介绍这两个任务的处理流程。
检测预处理
视频检测预处理
检测推理流程
检测后处理流程
分类预处理流程
分类推理流程
分类后处理流程
定制化自己的应用
这个方案是为了给开发者提供一个样例,方便大家进行自己的应用开发,希望做到以此方案为参考或模板,能够快速实现自己应用的开发,总的替换流程如下图所示:
预处理
推理流程
对要替换的模型进行分析,配置代表模型文件路径的变量,以替换后的模型初始化AclLiteModel类对象,根据替换后模型的实际需要,对初始化模型输入接口进行替换,并修改模型的执行接口。
一般来说,替换模型的话,从预处理到模型加载,推理再到后处理都需要改,基本上算重构代码了,但如果模型的预处理或后处理差异不大,那么改动就小多了,比如YOLO系列的预处理和后处理大都差不多,就好改多了。
后处理
除上述的基本处理流程外,还可以根据需要,增加我们想要的,更灵活的功能,比如动态Batch,具体代码修改如下图所示:
此外,还有动态分辨率和动态AIPP等功能,不过一般来说,动态的特性,虽然更加灵活,但是一般都会使得效率变低,个人认为,除非是一定要用才能完成既定功能,否则还是静态更好。毕竟推理任务,还是要以效率或者说性能为更重要的考量。
结语
不多说了,以老师的最后一张PPT作为结束吧!
- 点赞
- 收藏
- 关注作者
评论(0)