Toybrick

CenterNet检测网络,load模型正常,Build RKNN model出错?

roboman

新手上路

积分
21
楼主
发表于 2019-10-31 15:35:05    查看: 18721|回复: 10 | [复制链接]    打印 | 只看该作者
本帖最后由 roboman 于 2019-10-31 18:04 编辑

把CenterNet检测算法中的hourglass网络转成了TensorFlow的pb模型,用官方提供的rknn_convert.py工具转换模型,模型能够正常load,但是build的时候出错了,请问有什么解决办法吗?
日志如下:

--> Loading model...
done
--> Build RKNN model...
E Catch exception when building RKNN model!
T Traceback (most recent call last):
T   File "rknn/api/rknn_base.py", line 521, in rknn.api.rknn_base.RKNNBase.build
T   File "rknn/api/rknn_base.py", line 440, in rknn.api.rknn_base.RKNNBase._build
T   File "rknn/base/ovxconfiggenerator.py", line 197, in rknn.base.ovxconfiggenerator.generate_vx_config_from_files
T   File "rknn/base/RKNNlib/app/exporter/ovxlib_case/casegenerator.py", line 373, in rknn.base.RKNNlib.app.exporter.ovxlib_case.casegenerator.CaseGenerator.generate
T   File "rknn/base/RKNNlib/app/exporter/ovxlib_case/casegenerator.py", line 170, in rknn.base.RKNNlib.app.exporter.ovxlib_case.casegenerator.CaseGenerator._build_netdict
T   File "rknn/base/RKNNlib/app/helper/striphelper.py", line 74, in rknn.base.RKNNlib.app.helper.striphelper.StripHelper.build_netdict
T   File "rknn/base/RKNNlib/optimize/optimizer.py", line 186, in rknn.base.RKNNlib.optimize.optimizer.Optimizer.apply
T   File "rknn/base/RKNNlib/optimize/rules/tf2caffe/tf2caffe.py", line 13, in rknn.base.RKNNlib.optimize.rules.tf2caffe.tf2caffe.T2C_TF2CAFFE.apply
T   File "rknn/base/RKNNlib/optimize/rules/tf2caffe/t2c_switcher.py", line 309, in rknn.base.RKNNlib.optimize.rules.tf2caffe.t2c_switcher.T2C_Switcher.switch
T   File "rknn/base/RKNNlib/optimize/rules/tf2caffe/mode_switcher.py", line 126, in rknn.base.RKNNlib.optimize.rules.tf2caffe.mode_switcher.ModeSwitcher.opt_perm
T   File "rknn/base/RKNNlib/optimize/rules/tf2caffe/mode_switcher.py", line 50, in rknn.base.RKNNlib.optimize.rules.tf2caffe.mode_switcher.ModeSwitcher.opt_perm_list
T   File "rknn/base/RKNNlib/optimize/rules/tf2caffe/mode_switcher.py", line 44, in rknn.base.RKNNlib.optimize.rules.tf2caffe.mode_switcher.ModeSwitcher._opt_perms
T   File "rknn/base/RKNNlib/optimize/rules/tf2caffe/mode_switcher.py", line 28, in rknn.base.RKNNlib.optimize.rules.tf2caffe.mode_switcher.ModeSwitcher._remove_permutes
T   File "rknn/base/RKNNlib/optimize/rules/tf2caffe/mode_switcher.py", line 12, in rknn.base.RKNNlib.optimize.rules.tf2caffe.mode_switcher.ModeSwitcher._del_permute
T IndexError: list index out of range
done
--> Export RKNN model to: ../ctdet_hg/ctdet_hg.rknn
E RKNN model data is None, please load model first!
done

已经把pb文件上传到了百度网盘,下载链接为https://pan.baidu.com/s/1GmlA4ljdJZyjpp9F04UkCw,还请工作人员帮忙测试一下,测试脚本pb2rknn.py如下:

#!/usr/bin/env python3

import os
import sys
from rknn.api import RKNN


if __name__ == '__main__':

    sys.setrecursionlimit(10000)

    model_file_path = './ctdet_hg.pb'
    inputs  = ['input.1']
    outputs = ['1549']
    input_size_list = [[3, 512, 512]]

    rknn = RKNN()
    rknn.config(batch_size=1,
                channel_mean_value='128 128 128 128',
                reorder_channel='0 1 2')
    print('--> Loading model...')
    rknn.load_tensorflow(tf_pb=model_file_path,
                        inputs=inputs,
                        outputs=outputs,
                        input_size_list=input_size_list)
    print('done')

    print('--> Build RKNN model...')
    rknn.build(do_quantization=False, pre_compile=False)
    print('done')

    export_rknn_model_path = "./ctdet_hg.rknn"
    print('--> Export RKNN model to: {}'.format(export_rknn_model_path))
    rknn.export_rknn(export_path=export_rknn_model_path)
    print('done')




回复

使用道具 举报

roboman

新手上路

积分
21
沙发
 楼主| 发表于 2019-10-31 15:38:09
转换完成的pb网络,经过测试结果是正确的。问题应该出在build rknn的地方,有人知道如何解决吗?

jefferyzhang

版主

积分
12952
板凳
发表于 2019-10-31 15:58:06 | 只看该作者
本帖最后由 jefferyzhang 于 2019-10-31 16:05 编辑

1. 检查下转换的config设置是否正确,主要是input和output的name
2. 转完的pb是正常可以推理的话,能否把该pb和转换脚本发上来,我发给相关人员去调试下
回复

使用道具 举报

roboman

新手上路

积分
21
地板
 楼主| 发表于 2019-10-31 16:10:03 | 只看该作者
jefferyzhang 发表于 2019-10-31 15:58
1. 检查下转换的config设置是否正确,主要是input和output的name
2. 转完的pb是正常可以推理的话,能否把该 ...

Hello,你好,我已经把pb文件上传到了百度网盘,下载链接为https://pan.baidu.com/s/1GmlA4ljdJZyjpp9F04UkCw,还请工作人员帮忙测试一下。

input的节点名称为"input.1",输入shape为(3,512,512),output的节点名称为"1549",输出shape为(1, 84, 128, 128),因为是工具转的模型,名称会比较奇怪。
回复

使用道具 举报

jefferyzhang

版主

积分
12952
5#
发表于 2019-10-31 16:26:57 | 只看该作者
roboman 发表于 2019-10-31 16:10
Hello,你好,我已经把pb文件上传到了百度网盘,下载链接为https://pan.baidu.com/s/1GmlA4ljdJZyjpp9F04 ...

转换脚本也直接发给我们下,方便开发人员调试,不然他们还得再写一个
回复

使用道具 举报

roboman

新手上路

积分
21
6#
 楼主| 发表于 2019-10-31 17:31:44 | 只看该作者
jefferyzhang 发表于 2019-10-31 16:26
转换脚本也直接发给我们下,方便开发人员调试,不然他们还得再写一个

好的,pb2rknn.py脚本如下:

#!/usr/bin/env python3

import os
import sys
from rknn.api import RKNN


if __name__ == '__main__':

    sys.setrecursionlimit(10000)

    model_file_path = './ctdet_hg.pb'
    inputs  = ['input.1']
    outputs = ['1549']
    input_size_list = [[3, 512, 512]]

    rknn = RKNN()
    rknn.config(batch_size=1,
                channel_mean_value='128 128 128 128',
                reorder_channel='0 1 2')
    print('--> Loading model...')
    rknn.load_tensorflow(tf_pb=model_file_path,
                        inputs=inputs,
                        outputs=outputs,
                        input_size_list=input_size_list)
    print('done')

    print('--> Build RKNN model...')
    rknn.build(do_quantization=False, pre_compile=False)
    print('done')

    export_rknn_model_path = "./ctdet_hg.rknn"
    print('--> Export RKNN model to: {}'.format(export_rknn_model_path))
    rknn.export_rknn(export_path=export_rknn_model_path)
    print('done')
回复

使用道具 举报

jefferyzhang

版主

积分
12952
7#
发表于 2019-10-31 17:35:57 | 只看该作者
好的,已经上报问题了
回复

使用道具 举报

roboman

新手上路

积分
21
8#
 楼主| 发表于 2019-11-4 10:27:21 | 只看该作者
jefferyzhang 发表于 2019-10-31 17:35
好的,已经上报问题了

你好,贵司工程师有帮忙测试吗
回复

使用道具 举报

jefferyzhang

版主

积分
12952
9#
发表于 2019-11-4 11:21:03 | 只看该作者
roboman 发表于 2019-11-4 10:27
你好,贵司工程师有帮忙测试吗?

已经反馈和提交问题。请耐心等待。
部门有部门工作流程和优先级顺序,如果确认问题修改后会在随后的rknn-toolkit版本中发布修正。

如果方便的话,您可以在rknn-toolkit 1.2.1 和 rknntoolkit 1.1.0 两个版本做下测试,看下出的问题是否一致。
回复

使用道具 举报

roboman

新手上路

积分
21
10#
 楼主| 发表于 2019-11-4 11:51:19 | 只看该作者
jefferyzhang 发表于 2019-11-4 11:21
已经反馈和提交问题。请耐心等待。
部门有部门工作流程和优先级顺序,如果确认问题修改后会在随后的rknn- ...

好的,我先用新版本测试一下
回复

使用道具 举报

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

本版积分规则

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


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