根据输入参数创建同步/异步推理任务。对于异步任务,调用方可以跨函数、跨线程使用返回的 taskHandle。
taskHandle 任务句柄指针。output 推理任务的输出。input 推理任务的输入。dnnHandle DNN句柄指针。0 则表示API成功执行,否则执行失败。如果 taskHandle 置为 nullptr,则会自动创建同步任务,接口返回即推理完成。
如果 *taskHandle 置为 nullptr,则会自动创建异步任务,接口返回的 taskHandle 可用于后续阻塞或回调。
如果 *taskHandle 非空,并且指向之前已经创建但未提交的任务,则会自动创建新任务并添加进来。
最多支持同时存在32个模型任务。
根据输入参数创建ROI同步/异步推理任务。对于异步任务,调用方可以跨函数、跨线程使用返回的 taskHandle。
taskHandle 任务句柄指针。output 推理任务的输出。input 推理任务的输入。rois Roi框信息。roiCount Roi框数量。dnnHandle dnn句柄指针。0 则表示API成功执行,否则执行失败。概念说明:
input_count:模型输入分支数量。output_count:模型输出分支数量。resizer_count:模型输入源为resizer的分支数量(≤input_count),每一个resizer输入源都需要对应一个roi。roiCount:Roi框数量,其数值应为 resizer_count 的整数倍。data_batch:模型需要推理的数据批数,其数值为 roiCount / resizer_count。input:推理任务的输入,其数量应为 input_count * data_batch。output:推理任务的输出,其数量与output_count 一致,每个输出所需申请的内存为模型对应张量所需内存的 data_batch 倍。输入/输出示例说明:
以较为复杂的多输入模型为例,假设模型有3个输入分支(2个resizer输入源,1个ddr输入源)和 1 个输出分支,模型共需处理3批数据共6个roi(即每批数据有2个roi),那么现有如下信息:
input_count = 3output_count = 1resizer_count = 2roiCount = 6data_batch = roiCount / resizer_count = 3input = input_count * data_batch = 9output = output_count = 1另假设模型输入/输出的静态信息如下:
模型输入(model_info):
模型输出(model_info):
那么模型在推理时的动态信息则为:
input ):
output ):
接口限制说明:
taskHandle 置为 nullptr,除非是给指定 taskHandle 追加任务。stride 必须是32的倍数。roi 尺寸要求是不能超出输入图像边界,此限制后续版本会放宽。