Toybrick

如何转换NCHW格式的tensorflow模型?

protossw512

中级会员

积分
252
发表于 2019-3-6 08:56:27    查看: 6438|回复: 5 | [复制链接]    打印 | 显示全部楼层
我尝试转换resnet_50的pb模型发现好像rknn没办法处理NCHW格式的模型。
具体模型在这里:https://github.com/tensorflow/mo ... r/research/tensorrtResNet-v2-ImageNet Frozen Graph

这个模型的输入是NHWC,然后在模型内进行了transpose处理,转成了NCHW,我尝试过使用transpose之前和之后的node作为输入,改变load_tensorflow中的input_size_list中channel的顺序,都没办法顺利通过buiding。不知道具体应该在哪里设置一下让rknn知道这个是NCHW的模型?我看rknn.config有一个model_data_format的参数,我改成了'nchw',也没有任何效果。
回复

使用道具 举报

elooon

注册会员

积分
139
发表于 2019-3-6 11:26:12 | 显示全部楼层
按理说好像输入能对应就行了吧?input_size_list和取的模型节点NHWC/NCHW能对上就行?
回复

使用道具 举报

elooon

注册会员

积分
139
发表于 2019-3-6 16:21:25 | 显示全部楼层
python api中inference接口可以设置format参数:

data_format:数据模式,可以填以下值: “nchw”, “nhwc”。默认值为’nhwc’。这两个的
不同之处在于 channel 数放置的位置。
回复

使用道具 举报

elooon

注册会员

积分
139
发表于 2019-3-6 16:25:38 | 显示全部楼层
elooon 发表于 2019-3-6 16:21
python api中inference接口可以设置format参数:

data_format:数据模式,可以填以下值: “nchw”, “nhwc ...

c api中设置input的时候也可以设置format:

rknn_input inputs[1];
memset(inputs, 0, sizeof(inputs));
inputs[0].index = 0;
inputs[0].type = RKNN_TENSOR_UINT8;
inputs[0].size = img_width*img_height*img_channels;
inputs[0].pass_through = FALSE;
inputs[0].fmt = RKNN_TENSOR_NHWC;
inputs[0].buf = in_data;

ret = rknn_inputs_set(ctx, 1, inputs);
回复

使用道具 举报

protossw512

中级会员

积分
252
 楼主| 发表于 2019-3-7 07:19:40 | 显示全部楼层
elooon 发表于 2019-3-6 16:21
python api中inference接口可以设置format参数:

data_format:数据模式,可以填以下值: “nchw”, “nhwc ...

我换了不同的设置,也不行。
inference是可以设置的,但是我现在遇到的问题是building的时候就报错了,因为需要输入图像去做量化。
回复

使用道具 举报

elooon

注册会员

积分
139
发表于 2019-3-7 08:53:12 | 显示全部楼层
protossw512 发表于 2019-3-7 07:19
我换了不同的设置,也不行。
inference是可以设置的,但是我现在遇到的问题是building的时候就报错了,因 ...

build的时候报什么错?verbose打开发出来看下,感觉是转换op的问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表