苦瓜跳跳糖
1
用户您好,请详细描述您所遇到的问题。
1.硬件获取渠道:供应商
2.当前系统镜像版本:Ubuntu 18.04
3.当前天工开物版本:1.11.4 gpu
4.问题定位:模型转换
5.开发的demo/案例:
6.需要提供的解决方案:
onnx模型转为bin模型后,bin模型输入的属性 hbDNNTensorShape validShape (1*640*640*3)与 hbDNNTensorShape alignedShape(1*640*640*4) 不一致,请问是什么原因?cv读取的是640*640*3(配置文件规定的模型输入为 1*640*640*3) ,是否可以直接作为模型的输入?
颜值即正义
2
颜值即正义
3
您好,关于validshape和alignedshape的尺寸分配问题,可以查看社区上的这篇文章:模型输入输出对齐规则解析
地瓜橙
4
你好,需要扩展到alignedShape进行推理,保证是4的倍数,可以发挥推理的性能,数据需要进行扩展
苦瓜跳跳糖
5
你的意思是可以通过将
// 第四步准备输入数据-
hbDNNTensor input;-
hbDNNTensorProperties input_properties;-
hbDNNGetInputTensorProperties(&input_properties, dnn_handle, 0);-
input.properties = input_properties;-
auto &mem = input.sysMem[0];-
int rgb_length = 640 * 640 * 3;-
hbSysAllocCachedMem(&mem, rgb_length);-
memcpy(mem.virAddr, rgb_data, rgb_length); // rgb_data是cv读取的640*640*3的图片数据-
hbSysFlushMem(&mem, HB_SYS_MEM_CACHE_CLEAN);
直接改成
// 第四步准备输入数据-
hbDNNTensor input;-
hbDNNTensorProperties input_properties;-
hbDNNGetInputTensorProperties(&input_properties, dnn_handle, 0);-
input.properties = input_properties;-
auto &mem = input.sysMem[0];-
hbSysAllocCachedMem(&mem, 640 * 640 * 4);-
memcpy(mem.virAddr, rgb_data, 640 * 640 * 3_); // rgb_data是cv读取的640*640*3的图片数据_-
hbSysFlushMem(&mem, HB_SYS_MEM_CACHE_CLEAN);
就可以了是吗?
代码参考https://developer.horizon.ai/api/v1/fileData/doc/ddk\_doc/navigation/ai\_toolchain/docs\_cn/horizon\_ai\_toolchain\_user\_guide/application\_development.html#engineer-implementation的4.3工程实现
苦瓜跳跳糖
6

可以问一下怎么指定alignedShape = validShape吗?是在c代码里直接对input_properties的alignedShape进行赋值吗?代码如下?
input_properties.alignedShape = input_properties.validShape;
地瓜橙
7
你好,维度扩展不是直接增加内存容量,可以败诉搜索进行相关示例学习
颜值即正义
8
关于具体实现,可以参考ddk/samples/ai_toolchain/horizon_runtime_sample/code/00_quick_start/src/run_mobileNetV1_224x224.cc中的代码哈-
