【2024·CANN训练营第一季】基于AscendCL高阶封装库开发推理应用
acllite库
ACLLite库是对CANN提供的ACL接口进行的高阶封装,简化用户调用流程,为用户提供一组简易的公共接口。当前主要针对边缘场景设计。
common
资源管理
-
AclLiteResource类:命名空间为acllite
-
AclLiteResource(int32_t devId = 0)
- 构造函数,创建一个AclLiteResource对象
-
~AclLiteResource()
- 析构函数,销毁AclLiteResource对象
-
bool Init()
- 初始化函数,初始化Acl相关资源device、context
-
aclrtContext GetContext()
- 获取程序运行的context
-
void Release()
- 资源释放函数,释放Acl相关资源device、context
-
公共函数
-
未封装为类:命名空间为acllite
-
void SaveBinFile(const std::string& filename, const void* data, uint32_t size)
- 将数据存为二进制文件
-
bool ReadBinFile(const std::string& fileName, void*& data, uint32_t& size)
- 读取二进制文件
-
void* CopyDataToDevice(void* data, uint32_t size)
- 将数据拷贝到Device侧
-
aclrtContext GetContextByDevice(int32_t devId)
- 获取对应device上的context
-
bool SetCurContext(aclrtContext context)
- 设置当前线程的context
-
工具宏
-
宏封装函数:无命名空间
-
ALIGN_UP(num, align)
- 计算对齐后的数值
-
ALIGN_UP2(num, align)
- 将数据按2对齐
-
ALIGN_UP16(num, align)
- 将数据按16对齐
-
ALIGN_UP64(num, align)
- 将数据按64对齐
-
ALIGN_UP128(num, align)
- 将数据按128对齐
-
YUV420SP_SIZE(width, height)
- 计算YUV420SP图片数据大小
-
YUV422P_SIZE(width, height)
- 计算YUV422P图片数据大小
-
SHARED_PTR_U8_BUF(buf)
- 新建指向一般内存的智能指针
-
SHARED_PTR_HOST_BUF(buf)
- 新建指向HOST内存的智能指针
-
SHARED_PTR_DEV_BUF(buf)
- 新建指向DEV内存的智能指针
-
SHARED_PTR_DVPP_BUF(buf)
- 新建指向DVPP内存的智能指针
-
CHECK_RET(cond, return_expr)
- 函数返回值判断
-
LOG_PRINT(message, …)
- 打印日志
-
公共数据结构
-
全局变量:命名空间为acllite
-
Result
- 用来表述返回值,一般用于函数定义或调用
-
RES_OK
- 用来表述正常返回
-
RES_ERROR
- 用来表述异常返回
-
-
数据结构:命名空间为acllite
-
struct DataInfo
- 数据信息,存储数据内容及数据大小,用来生成模型输入输出
-
struct InferenceOutput
- 存放模型推理结果数据
-
struct ImageSize
- 图像宽高组合,主要用于VPC中目标图片宽高取值
-
struct ImageData
- 图像数据和属性
-
struct FrameData
- 帧数据,主要用于队列传输
-
enum memoryLocation
- 内存所在位置
-
enum ResizeType
- resize方式
-
enum StreamProperty
- 需要设置/获取的流属性,用于视频处理过程
-
struct DvRect
- 图像左上角右下角坐标组合,主要用于VPC中裁剪区域取值
-
DVPPLite
视频解码
-
VideoRead类:命名空间为acllite
-
VideoRead(const std::string& videoName, int32_t deviceId = 0, aclrtContext context = nullptr)
- 构造函数,创建一个VideoRead对象
-
~VideoRead()
- 析构函数,销毁VideoRead对象
-
bool Read(ImageData& image)
- 获取要被处理的一帧图像数据
-
bool IsOpened()
- 判断摄像头或者视频流是否已经打开
-
bool Set(StreamProperty propId, int value)
- 设置解码属性
-
uint32_t Get(StreamProperty propId)
- 获取解码视频流信息
-
void Release()
- 资源释放函数
-
视频编码
-
VideoWrite类:命名空间为acllite
-
VideoWrite(std::string outFile, uint32_t maxWidth, uint32_t maxHeight, int32_t deviceId = 0)
- 构造函数,创建一个VideoWrite对象
-
~VideoWrite()
- 析构函数,销毁VideoRead对象
-
bool Write(ImageData& image)
- 写入一帧图像数据进行编码
-
bool IsOpened()
- 判断写入文件是否已经打开
-
void Release()
- 资源释放函数
-
图像编解码及VPC处理
-
ImageProc类:命名空间为acllite
-
ImageProc(int deviceId = 0)
- 构造函数,创建一个ImageProc对象
-
~ImageProc()
- 析构函数,销毁ImageProc对象
-
ImageData Read(const std::string& fileName, acldvppPixelFormat imgFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420)
- 读取一帧图片,将JPG图片解码为YUV
-
void Resize(ImageData& src, ImageData& dst, ImageSize dsize, ResizeType type = RESIZE_COMMON)
- 对图片进行缩放
-
bool Write(const std::string& fileName, ImageData& img)
- 对图片进行编码,写成图片文件
-
void Crop(ImageData& src, ImageData& dst, DvRect dRect, ImageSize dSize)
- 对图片进行裁剪缩放
-
OMExecute
模型管理
-
ModelProc类:命名空间为acllite
-
ModelProc()
- 构造函数,创建一个ModelProc对象
-
~ModelProc()
- 析构函数,销毁ModelProc对象
-
void DestroyResource()
- 销毁模型处理过程中的相关资源
-
bool Load(const std::string& modelPath)
- 模型加载函数
-
bool CreateInput(void *input, uint32_t size)
- 创建模型输入(模型单输入场景)
-
bool CreateInput(void *input1, uint32_t input1size, void *input2, uint32_t input2size)
- 创建模型输入(模型两个输入场景)
-
bool CreateInput(std::vector& inputData)
- 创建模型输入(模型多输入场景)
-
bool Execute(std::vector& inferOutputs)
- 模型执行函数
-
void DestroyInput()
- 释放模型输入
-
void DestroyOutput()
- 释放模型输出
-
void Unload()
- 卸载模型
-
Media
USB摄像头读取
-
CameraRead类:命名空间为acllite
-
CameraRead(const std::string& videoName, int32_t deviceId = 0, aclrtContext context = nullptr)
- 构造函数,创建一个VideoRead对象
-
~CameraRead()
- 析构函数,销毁VideoRead对象
-
bool Read(ImageData& image)
- 获取要被处理的一帧图像数据
-
bool IsOpened()
- 判断摄像头或者视频流是否已经打开
-
void Release()
- 资源释放函数
-
uint32_t Get(StreamProperty propId)
- 获取解码视频流信息
-
- 点赞
- 收藏
- 关注作者
评论(0)