如何基于香橙派 AIpro 对视频 / 图像数据进行预处理
本文分享自华为云社区《如何基于香橙派AIpro对视频/图像数据进行预处理》,作者: 昇腾 CANN。
受网络结构和训练方式等因素的影响,绝大多数神经网络模型对输入数据都有格式上的限制。在计算机视觉领域,这个限制大多体现在图像的尺寸、色域、归一化参数等。如果源图或视频的尺寸、格式等与网络模型的要求不一致时,我们需要对其进行数据预处理。
昇腾 AI 硬件内置专门用于图像预处理的硬件单元,开发者通过其上层软件栈 CANN 能够更加便捷地发挥出硬件强大的媒体处理硬加速能力。香橙派 AIpro 开发板是香橙派联合昇腾打造的高性能 AI 开发板,开发者可以基于此,对不满足神经网络模型输入要求的数据进行预处理,从而更好地完成 AI 推理计算。
01 昇腾 CANN 数据预处理方式简介
昇腾 CANN 提供了两种专门用于数据预处理的方式:AIPP 和 DVPP。
AIPP(Artificial Intelligence Pre-Processing)在 AI Core 上完成数据预处理,主要功能包括改变图像尺寸(抠图、填充等)、色域转换(转换图像格式)、减均值/乘系数(改变图像像素)等。AIPP 区分为静态 AIPP 和动态 AIPP,您只能选择其中一种方式,不支持两种方式同时配置。
静态 AIPP:模型转换时设置 AIPP 模式为静态,同时设置 AIPP 参数,模型生成后,AIPP 参数值被保存在离线模型(*.om)中,每次模型推理过程采用固定的 AIPP 预处理参数,无法修改。
动态 AIPP:模型转换时仅设置 AIPP 模式为动态,每次模型推理前,根据需求,在执行模型前设置动态 AIPP 参数值,然后在模型执行时可使用不同的 AIPP 参数。
DVPP(Digital Vision Pre-Processing)是昇腾 AI 处理器内置的图像处理单元,通过 AscendCL 媒体数据处理接口提供强大的媒体处理硬加速能力,主要功能包括缩放、抠图、色域转换、图片编解码、视频编解码等。
总结一下,虽然都是数据预处理,但 AIPP 与 DVPP 的功能范围不同(比如 DVPP 可以做图像编解码、视频编解码,AIPP 可以做归一化配置),处理数据的计算单元也不同,AIPP 用的 AI Core 计算加速单元,DVPP 就是用的专门的图像处理单元。
AIPP、DVPP 可以分开独立使用,也可以组合使用。组合使用场景下,一般先使用 DVPP 对图片/视频进行解码、抠图、缩放等基本处理,再使用 AIPP 进行色域转换、归一化等处理。
02 如何使用 AIPP 功能
下文以此为例:测试图片分辨率为 250*250、图片格式为 YUV420SP,模型对图片的要求为分辨率 224*224、图片格式为 RGB,因此需要通过 AIPP 实现抠图、图片格式转换 2 个功能。关于各种格式转换,其色域转换系数都有模板,可从 ATC 工具使用指南中获取,请参见“昇腾文档中心”。
1、静态 AIPP
(1)构造 AIPP 配置文件*.cfg。
抠图,有效数据区域从左上角(0, 0)像素开始,抠图宽*高为 224*224。
图片格式转换,输入图片格式为 YUV420SP_U8,输出图片格式通过色域转换系数控制。
(2)使能静态 AIPP 参数
使用 ATC 工具转换模型时,可将 AIPP 配置文件通过 insert_op_conf 参数传入,将其配置参数保存在模型文件中。
参数解释如下:
--framework:原始网络模型框架类型,3 表示 TensorFlow 框架。
--soc_version:指定模型转换时昇腾 AI 处理器的版本,可执行 npu-smi info 命令进行查询,在查询到的“Name”前增加 Ascend 信息,例如“Name”对应取值为 xxxyy。
--model:原始网络模型文件路径,含文件名。
--insert_op_conf:AIPP 预处理配置文件路径,含文件名。
--output:转换后的*.om 模型文件路径,含文件名,转换成功后,模型文件名自动以.om 后缀结尾。
(3)调用 AscendCL 接口加载模型,执行推理,具体可参见如何基于香橙派AIpro开发AI推理应用。
2、动态 AIPP
(1)构造 AIPP 配置文件*.cfg。
(2)使能动态 AIPP。
使用 ATC 工具转换模型时,可将 AIPP 配置文件通过 insert_op_conf 参数传入,将其配置参数保存在模型文件中。
参数解释如下:
--framework:原始网络模型框架类型,3 表示 TensorFlow 框架。
--soc_version:指定模型转换时昇腾 AI 处理器的版本。
--model:原始网络模型文件路径,含文件名。
--insert_op_conf:AIPP 预处理配置文件路径,含文件名。
--output:转换后的*.om 模型文件路径,含文件名,转换成功后,模型文件名自动以.om 后缀结尾。
(3)调用 AscendCL 接口加载模型,设置 AIPP 参数后,再执行推理,具体可参见如何基于香橙派AIpro开发AI推理应用。
调用 AscendCL 接口设置 AIPP 参数的代码示例如下:
03 如何使用 DVPP 功能
昇腾 AI 处理器内置图像处理单元 DVPP,提供了强大的媒体处理硬加速能力。同时,异构计算架构 CANN 提供了使用图像处理硬件算力的入口:AscendCL 接口,开发者可通过接口来进行图像处理,以便利用昇腾 AI 处理器的算力。
DVPP 内的功能模块如下表所示。
此处就以 JPEGD 图片解码+VPC 图片缩放为例来说明如何使用 DVPP 功能。这里先通过一张图总览接口调用流程,包括资源初始化 &去初始化、通道创建与销毁、解码、缩放、等待任务完成、释放内存资源等。
总览接口调用流程后,接下来我们以开发者更熟悉的方式“代码”来展示 JPEGD 图片解码+VPC 图片缩放功能的关键代码逻辑。
04 更多学习资源
更多学习资源,欢迎登录昇腾社区查阅:
[1]昇腾文档中心:https://www.hiascend.com/zh/document
[2]香橙派 AIpro 开源样例代码:https://gitee.com/ascend/EdgeAndRobotics
[3]香橙派 AIpro 学习资源一站式导航:https://www.hiascend.com/forum/thread-0285140173361311056-1-1.html
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/37248792ea4008685b1d35a90】。文章转载请联系作者。
评论