Toybrick

标题: CenterNet检测网络,load模型正常,Build RKNN model出错? [打印本页]

作者: roboman    时间: 2019-10-31 15:35
标题: CenterNet检测网络,load模型正常,Build RKNN model出错?
本帖最后由 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')





作者: jefferyzhang    时间: 2019-10-31 15:58
本帖最后由 jefferyzhang 于 2019-10-31 16:05 编辑

1. 检查下转换的config设置是否正确,主要是input和output的name
2. 转完的pb是正常可以推理的话,能否把该pb和转换脚本发上来,我发给相关人员去调试下
作者: roboman    时间: 2019-10-31 16:10
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    时间: 2019-10-31 16:26
roboman 发表于 2019-10-31 16:10
Hello,你好,我已经把pb文件上传到了百度网盘,下载链接为https://pan.baidu.com/s/1GmlA4ljdJZyjpp9F04 ...

转换脚本也直接发给我们下,方便开发人员调试,不然他们还得再写一个
作者: roboman    时间: 2019-10-31 17:31
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    时间: 2019-10-31 17:35
好的,已经上报问题了
作者: roboman    时间: 2019-11-4 10:27
jefferyzhang 发表于 2019-10-31 17:35
好的,已经上报问题了

你好,贵司工程师有帮忙测试吗
作者: jefferyzhang    时间: 2019-11-4 11:21
roboman 发表于 2019-11-4 10:27
你好,贵司工程师有帮忙测试吗?

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

如果方便的话,您可以在rknn-toolkit 1.2.1 和 rknntoolkit 1.1.0 两个版本做下测试,看下出的问题是否一致。
作者: roboman    时间: 2019-11-4 11:51
jefferyzhang 发表于 2019-11-4 11:21
已经反馈和提交问题。请耐心等待。
部门有部门工作流程和优先级顺序,如果确认问题修改后会在随后的rknn- ...

好的,我先用新版本测试一下
作者: Ryan_zdst    时间: 2019-11-4 15:05
请教个问题,config中channel_mean_value中的4个值是怎么计算出来的呢
作者: jefferyzhang    时间: 2019-11-8 09:14
我们工程师回复如下:

1. 请问你们用的tf是什么版本的,我们用1.13.1无法加载这个pb文件,1.14.0能跑,但是tensorboard看网络结构时候会出错。
2. 能否请你们用tf 1.11 到 1.13之间的版本生成个pb文件,或者把tensorboad的错误先解决下,否则我们连网络结构都看不到。





欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3