【2023 · CANN训练营第一季】应用开发(初级)第五章——媒体数据处理

1.媒体数据处理

受网络结构和训练方式等因素的影响,绝大多数神经网络模型对输入数据都有格式上的限制。在计算机视觉领域,这个限制大多体现在图像的尺寸、色域、归一化参数等。如果源图或视频的尺寸、格式等与网络模型的要求不一致时,我们需要将源图或视频处理成符合模型要求的图或视频。

数据预处理的方式

AIPP、DVPP可以分开独立使用,也可以组合使用。组合使用场景下,一般先使用DVPP对图片/视频进行解码、抠图.缩放等基本处理,但由于DVPP硬件上的约束,DVPP处理后的图片格式、分辨率有可能不满足模型的要求,因此还需要再经过AIPP进一步做色域转换、抠图、填充等处理。
image.png

数据预处理DVPP功能

异腾AI处理器内置图像处理单元DVPP(Digital Video Pre-Processor),提供强大的媒体处理硬加速能力。同时,异构计算架构CANN提供了使用图像处理硬件算力的入口: AscendCL接口,开发者可通过接口来进行图像处理,以便利用异腾AI处理器的算力。
image.png

宽stride和高stride

由于硬件对图片宽、高对齐的要求,DVPP数据预处理中存在宽stride和高stride两个概念,分别用于表示对齐后的宽.对齐后的高,DVPP中的不同功能,对不同格式的输入或输出图片的宽、高对齐要求也不同,在使用DVPP中的多个功能串接(例如JPEGD+VPC)时,需特别注意接口文档中的对齐说明。

内存申请与内存释放

内存申请/释放接口

实现媒体数据处理的VPC、JPEGD、JPEGE等功能前,若需要申请内存存放输入或输出数据,需调用专用的内存申请/释放接口,申请/释放的都是Device上的内存。如果多个功能串联使用的场景,需要复用同一段内存,则按最大内存要求来申请内存媒体数据处理V1版本,需调用acldvppMalloc申请内存、调用acldvppFree接口释放内存媒体数据处理V2版本,需调用hi_mpi_dvpp_malloc申请内存、调用hi_mpi_dvpp_free接口释放内存

内存大小

针对不同的DVPP功能、不同的输入/输出图片格式,内存大小的计算公式也不同,使用DVPP功能时,需参见详细的文档说明。

内存复用

调用媒体数据处理专用的内存申请接口申请出来的内存,也可以在其它任务中使用,例如,从性能角度,为了减少拷贝,媒体数据处理的输出作为模型推理的输入,实现内存复用。但由于媒体数据处理访问的地址空间有限,为确保媒体数据处理时内存足够,除媒体数据处理功能外的其它功能(例如,模型加载),建议调用acrtMalloc接口、或aclrtMallocHost接口、或aclrtMallocCached接口等通用的内存管理接口申请内存。

通道数

实现媒体数据处理的各功能前,必须调用接口创建对应功能的通道。通道的创建与销毁会涉及资源的申请与释放,反复创建与销毁通道会影响业务性能,因此建议根据实际场景管理通道,例如,如果有持续VPC图片处理,则创建VPC的通道后,等到所有VPC功能调用完成后,再销毁该VPC通道通道数量多,会影响Device的CPU占用率和内存占用,通道数量建议参考各功能章节下的的性能指标的路数。

2.JPEG图片解码

图片分辨率约束

image.png

实现JPEGD图片解码功能时,涉及存放输入、输出数据,需调用专门的内存申请/释放接口申请Device上的输入、输出内存,这部分内存的生命周期由用户自行管理。输入内存的大小就是指实际的输入图片所占用的大小输出内存的大小参见左表中的计算公式。
实现JPEGD图片解码功能时,仅支持Huffman编码,压缩前的原图像色彩空间为YUV,像素的各分量比例为4:4:4或4:2:2或4:2:0或4:0:0或4:4:0不支持算术编码、不支持渐进JPEG格式、不支持JPEG2000格式。

3.VPC图片缩放

图片分辨率约束

image.png

图片格式、宽高内存

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/143337.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【mongodb】查询mongodb的数据库存放路径

通过yum方式安装mongodb,我们需要了解mongodb实际存放数据的位置以及相关日志所在的文件,我们可以通过如下命令来了解: ps -ax | grep mongod 通过上面的输出,我们了解到Mongodb的配置使用的是/etc/mongod.conf文件,继而,我们可以…

MongoDB aggregate 管道聚合查询

文章目录 数据准备条件查询聚合查询模糊查询拆分数据关联查询根据用户组查询用户根据用户查询用户组 控制显示字段置顶合并字段新增或修改字段计算总数分页查询分页查询加总数排序分组 数据准备 UserPO Data EqualsAndHashCode(callSuper true) Accessors(chain true) NoAr…

mongodb查询

MongoDB 查询文档使用 find() 方法。 find() 方法以非结构化的方式来显示所有文档。 db.集合.find(query, projection) query :可选,使用查询操作符指定查询条件 projection :可选,使用投影操作符指定返回的键。查询时返回文档中所…

vue-element-admin实践系列(二)初始化系统的页面元素

vue-element-admin实践系列 vue-element-admin实践系列(一)代码部署及运行demovue-element-admin实践系列(二)初始化系统的页面元素 文章目录 vue-element-admin实践系列1、修改默认参数1.1 修改启动端口1.2 修改网页title1.3 修改网站 ico1.4 效果如下 2、自定义左侧导航栏2.…

一元多项式的加减法(C语言)

要求&#xff1a;以文件形式输入需要进行运算的两个一元多项式&#xff0c;并将结果以文件的形式进行输出。 #include<stdio.h> #include<stdlib.h> #include<math.h>//链表的构成 typedef struct Node{float ratio;int index;struct Node* next; }*PNode,*…

一元多项式计算器(C语言实现)

一、实验要求 二、代码实现 以下C语言代码实现了多项式的加减法、乘法、求导和顶点求值的功能。 &#xff08;水平有限&#xff0c;代码存在不规范之处&#xff09; 编程环境&#xff1a;Window11 Visual Studio #define _CRT_SECURE_NO_WARNINGS 1 # include <stdio.h…

c语言一元多项式课程设计,一元多项式的计算数据结构课程设计.doc

一元多项式的计算数据结构课程设计.doc 一元多项式的计算加&#xff0c;减摘要题目一元多项式计算任务能够按照指数降序排列建立并输出多项式&#xff1b;能够完成两个多项式的相加、相减&#xff0c;并将结果输入&#xff1b;目录1引言2需求分析3概要设计4详细设计5测试结果6…

基于C++的一元多项式相加

资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/85996014 资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/85996014 1.实验目的 了解链式存储结构的基本知识&#xff1b;掌握算法思想和数据结构的描述&#xff1b;结合一元…

c语言一元多项式相加

用单链表实现一元多项式相加 #include<stdio.h> #include<stdlib.h> typedef struct Node{float coef;//系数 int exp;//项数 struct Node *next; }LNode,*Linklist;void newPolynomial(Linklist &head){LNode *p;int i,tempExp;float tempCoef;scanf("…

一元多项式的相乘操作(链表)

一元多项式的乘法运算如何实现&#xff0c;要求多项式采用链表存储结构。 目录 基本思路&#xff1a; 添加条件的分类&#xff1a; multiple()源代码&#xff1a; detach()源代码&#xff1a; 处理结果&#xff1a; 基本思路&#xff1a; 本篇博客不知觉间已经拖了好久好久…

数据结构一元多项式的相加-单链表实现

实验内容&#xff1a;把任意给定的两个一元多项式P(x) ,Q(x) 输入计算机&#xff0c;计算它们的和并输出计算结果。 一元多项式可以用单链表表示&#xff0c;结点结构图示如下&#xff1a; coef expnext 首先分析一下这个过程是如何实现的 该算法需要求A与B两个一元多项式的和&…

一元多项式加减乘实现c/c++

一、实验题目&#xff1a; 一元多项式简单的计算器 1.主要功能&#xff1a; (1)输入并建立多项式&#xff1b; (2)输出多项式&#xff1b; (3)两个多项式相加&#xff0c;建立并输出和多项式&#xff1b; (4)两个多项式相减&#xff0c;建立并输出差多项式。 (5)算法的时…

一元多项式的加法

一元多项式的加法 问题描述&#xff1a;一元多项式的加法 &#xff08;1&#xff09; 编程实现一元多项式的加法。 &#xff08;2&#xff09; 编写一个测试主函数。 分析&#xff1a; 对于任意一元多项式 可以抽象为一个由“系数—指数”对构成的线性表&#xff0c;且线性表中…

一元多项式求导

问题描述&#xff1a; 设计函数求一元多项式的导数。&#xff08;注&#xff1a;x​n​​&#xff08;n为整数&#xff09;的一阶导数为nx​n−1​​。&#xff09; #include<cstdio> int main() {int a[100000];int b[100000];int n,m;char c;//判断结束的条件scanf(&q…

一元多项式课设

代码详见 目录 一、实习任务........................................................................................... - 1 - 1.问题描述&#xff1a;.................................................................................... - 1 - 2.小组分工.........…

数据结构:一元多项式及其基本运算

1、实现方式&#xff1a;可采用线性表的顺序存储结构&#xff0c;但是当多项式的每个项的指数差别很大时&#xff0c;会浪费很多存储空间。所以采用链式存储方式表示&#xff0c;每一项可以表示成一个结点&#xff0c;结点的结构由存放系数的coef域&#xff0c;存放指数的expn域…

一元多项式计算

目录 题目的内容及要求--------------------------------------------2需求分析-------------------------------------------------------2概要设计-------------------------------------------------------2 1、存储结构------------------------------------------------…

【数据结构】一元多项式的表示及相加

文章目录 ⭐️写在前面的话⭐️一元多项式的表示及相加初始化0_1、初始化链表0_2_1、头插法插入多项式的项(没有相同项)0_2_2、将要插入的相同&#xff0c;链表中有相同项&#xff0c;对应系数相加0_3、从链表中查找是否有相同的指数项0_4、对已经创建好的一元多项式按指数大小…

数据结构(严蔚敏)【一元多项式的运算】【C语言】

1、一元多项式的运算&#xff1a;实现两个多项式加、减乘运算 设计内容&#xff1a; 用顺序存储结构实现一元多项式的加法、减法和乘法。具体要求为&#xff1a;用五个函数分别实现一元多项式的创建、输出、加法、减法和乘法&#xff1b; 设计思路&#xff1a; 将顺序表数组…

算法竞赛入门【码蹄集进阶塔335题】(MT2151-2175)

算法竞赛入门【码蹄集进阶塔335题】(MT2151-2175&#xff09; 文章目录 算法竞赛入门【码蹄集进阶塔335题】(MT2151-2175&#xff09;前言为什么突然想学算法了&#xff1f;为什么选择码蹄集作为刷题软件&#xff1f; 目录1. MT2151 权值计算2. MT2152 黑客小码哥3. MT2153 来给…