AI推理实践丨多路极致性能目标检测最佳实践设计解密
摘要:基于CANN的多路极致性能目标检测最佳实践设计解密。
本文分享自华为云社区《基于CANN的AI推理最佳实践丨多路极致性能目标检测应用设计解密》,作者: 昇腾CANN 。
当前人工智能领域,最热门的无疑是以ChatGPT为代表的各种“新贵”大模型,它们高高在上,让你无法触及。但在人们的日常生活中,实际应用需求最大的还是以Yolo模型为代表的目标检测“豪强”,它们每天都在以各种方式落地、应用于我们日常生活的方方面面。
目标检测是计算机视觉领域的一项关键技术,它的任务是找出图像中所有感兴趣的目标,确定它们的类别和位置。随着人工智能潜移默化地渗入人们的生活中,各行各业竞相通过引入目标检测等技术打开市场空间,关于目标检测的各类人工智能需求也奔涌而来,比如:
- 在交通领域,目标检测可以用来检测道路上的行人、车辆、交通标志等物体,提升行驶安全和通行便利性。
- 在安全领域,目标检测可以用来检测关键特征、特定行为或者可疑物体,以便快速发现和识别安全威胁。
- 在医疗领域,目标检测可以用来识别身体部位、病灶、心电图、CT影像等,以便快速辅助诊断。
- 在生活领域,目标检测可以用于智能购物、智能家居等场景,提升人们生活的便利性。
但AI应用开发门槛高,周期长。各类AI软件栈理解成本高、AI算法模型与业务结合难度高、对开发人员的技能要求也较高。如何提升AI推理应用的开发效率,降低开发门槛,是亟需改善的现状。为此,昇腾CANN技术专家设计和开发了针对目标检测应用的最佳实践,让开发者可以在昇腾平台上快速部署目标检测应用,轻松获得几十甚至上百路的检测效果。下面我们就来详细拆解一下这个实践的设计思路。
基础应用分解
我们首先从一个基础的目标检测推理应用场景开始,推理流程通常包含如下几个部分:
GPU AI推理业务流程
- 数据输入是摄像头获取的视频数据流,一般以H.264格式为主。
- 然后通过FFmpeg软件,将连续的视频流进行拆帧和解码。
- 下一阶段是对解码后的图像进行预处理,通常使用OpenCV对图像进行缩放,得到模型需要的图像规格。
- 模型推理环节,用户可以选择的方式比较多,比较典型的是使用TensorRT进行推理应用开发。
- 目标检测后处理需要进行NMS计算,进行图片画框等操作。
- 数据输出阶段,用户根据需要实现一个结果呈现形式。
推理功能适配
将上面介绍的目标检测应用迁移到昇腾平台,开发者仅需关注“推理”环节的适配,包括如下两个步骤:
- 将推理模型文件(onnx模型或pb模型)通过ATC工具转化为昇腾平台专属的离线om文件。
- 使用昇腾AscendCL语言开发模型加载和模型执行的逻辑。
基于CANN的AI推理业务流程
完成如上两个环节后,推理应用的功能就已经迁移到昇腾平台了。这时若整体的推理性能未达到理想预期,就需要进入性能优化提升阶段。
性能提升方式一:使能DVPP硬件的高效编解码能力
DVPP(Digital Vision Pre-Processing,数字视觉预处理)是昇腾AI处理器内置的图像处理单元,通过AscendCL媒体数据处理接口提供强大的媒体处理硬加速能力,主要包括以下功能:
- VPC(Vision Preprocessing Core):处理YUV、RGB等格式的图片,包括缩放、抠图、色域转换等。
- JPEGD(JPEG Decoder):JPEG压缩格式→YUV格式的图片解码。
- JPEGE(JPEG Encoder):YUV格式→JPEG压缩格式的图片编码。
- VDEC(Video Decoder):H264/H265格式→YUV/RGB格式的视频码流解码。
- VENC(Video Encoder):YUV420SP格式→H264/H265格式的视频码流编码。
- PNGD(PNG Decoder):PNG格式→RGB格式的图片解码。
Ascend 310 AI处理器逻辑架构中DVPP位置
开发者可以通过DVPP对图像进行硬件解码和处理,提升图像处理效率。另外,DVPP和执行推理的计算单元AI Core是完全独立的硬件单元,无需担心使用DVPP后会对推理执行的性能产生影响。
基于CANN的AI推理业务流程——使用DVPP进行数据预处理
性能提升方式二:增加推理前后数据并行,让推理步骤一刻不停
昇腾平台采用异构计算架构,所以要充分利用计算核心AI Core的超强能力,就需要保证AI Core计算需要的数据能够持续不间断供给,同时能够无等待输出。为了实现此能力,可以在数据预处理→模型推理,模型推理→数据后处理模块间通过队列的机制,增加推理模块的并行流水。
基于CANN的AI推理业务流程——通过队列增加推理并行流水
同理,在FFmpeg视频拆帧和DVPP处理之间,也可以使用队列,进一步增加并行情况。但需要注意推理侧的队列数据会消耗硬件内存,所以需要要合理设置。
性能提升方式三:多线程并发,持续释放AI Core性能
多线程是提升硬件资源利用率的重要手段,通过多线程的支持,可以实现多路不同源的视频输入;针对服务器多卡的场景,同样支持多个卡并行执行,充分释放昇腾软硬件的性能。
基于CANN的AI推理业务流程——多线程并发
基于目标检测最佳实践,开发者可轻松实现已有AI推理应用到昇腾平台的迁移,并轻松达成高性能。开发者也可以参考此实践快速上手AI开发,玩转昇腾平台推理应用。未来,CANN将持续致力于应用开发的易用性提升,不断满足开发者的诉求。
点击Link,获取多路高性能目标检测最佳实践源码。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
爱奇艺客户端“白嫖”电视机,后台满速上传
网友发帖称,自己的电视机在息屏休眠状态时,居然持续保持着 1-5M/s 的上传速度,直至断掉电源才停止上传。 他表示这是新买的电视机,安装的 APP 只有爱奇艺。在他强制关闭爱奇艺 APP 后,电视机的上传速度马上变为零。 接着他联系了爱奇艺客服,客服称这是加速手段,对使用没有影响,然后提供了关闭 HCDN 开关的操作。 根据爱奇艺官网的介绍,HCDN (Hybrid CDN) 是爱奇艺技术团队研发的大规模混合架构在线视频数据分发技术。该技术采用了混合 CDN 和 P2P 节点的调度架构。 《爱奇艺服务协议》提到,为了提升用户的服务体验,他们会采取一系列技术手段对产品及/或服务进行优化,其中包括改进 CDN 节点分布调度、使用专有 HCDN 对等网络等提升视频分发质量的技术措施等。 有网友在评论中指出,这是爱奇艺客户端将电视机当成了自己的 PCDN 服务器,因此会在后台持续执行上传任务。这种白嫖电费、流量、存储空间的操作,爱奇艺要给用户打钱才对。 (P2P CDN,简称 PCDN)是以 P2P 技术为基础,通过挖掘利用电信边缘网络海量碎片化闲置资源而构建的低成本高品质内容分发网络服务。...
- 下一篇
文件系统考古4:如何支持多个文件系统
Steve Kleiman 在 1986 年撰写了《Vnodes: An Architecture for Multiple File System Types in Sun UNIX》一文。这篇论文幅较短,大部分内容是数据结构的列举,以及 C 语言结构之间相互指向的图表。 Steve Kleiman是分布式文件系统领域的专家,在 Sun Microsystem 工作了多年,曾参与开发 Sun Network File System(NFS)等项目,为分布式文件系统领域做出了重要贡献。 Kleiman 希望在 Unix 中能够拥有多个文件系统,并希望这些文件系统能够共享接口和内存。具体而言,他希望设计一个能够提供以下功能的架构: 一个可以支持多个实现的通用接口; 支持 BSD FFS,以及两个远程文件系统 NFS 和 RFS,还有特定的非 Unix 文件系统,如MS-DOS; 接口定义的操作需要是原子性的。 并且,能够在不影响性能的情况下动态地处理内存和数据结构,支持重入(reentrant) 和多核,并且具有一定面向对象进行编程的特性。 重入(reentrant) 是指程序或子程序在...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7