Toybrick

Tensorflow mobilenet-ssd 转 Rknn 模型失败

摇太阳

注册会员

积分
132
发表于 2019-7-11 15:58:49    查看: 7166|回复: 6 | [复制链接]    打印 | 显示全部楼层
开发板系统:fedora 28
Toolkit版本: 1.0.0
Tensorflow版本:1.10.1

1. 根据tensorflow官方教程生成了pb文件

2. 运行了官方的demo
/home/toybrick/RKNN/rknn-toolbrick/pexample/ssd_mobilenet_V2/step1.py
只是替换了模型的文件



import numpy as np
import cv2
from rknn.api import RKNN


if __name__ == '__main__':


    # Create RKNN object
    rknn = RKNN(verbose = True, verbose_file =  './Error.log')
   
    # pre-process config
    print('--> config model')
    rknn.config(channel_mean_value='127.5 127.5 127.5 128', reorder_channel='0 1 2', quantized_dtype='asymmetric_quantized-u8')
    print('done')


    # Load tflite model
    print('--> Loading model')
    #模型更改的路径
    ret = rknn.load_tensorflow(tf_pb='./tensorflow.pb',
                               inputs=['FeatureExtractor/MobilenetV2/MobilenetV2/input'],
                               outputs=['concat_1', 'concat'],
                               input_size_list=[[300,300,3]],
                               predef_file=None)
    if ret != 0:
        print('Load model failed!')
        exit(ret)
    print('done')


    if ret != 0:
        print('Load model failed!')
        exit(ret)
    print('done')


    # Build model
    print('--> hybrid_quantization_step1')
    ret = rknn.hybrid_quantization_step1(dataset='./dataset.txt')
    if ret != 0:
        print('hybrid_quantization_step1 failed!')
        exit(ret)
    print('done')


    # Tips
    print('Please modify ssd_mobilenet_v2.quantization.cfg!')
    print('==================================================================================================')
    print('Modify method:')
    print('1. delete @FeatureExtractor/MobilenetV2/expanded_conv/depthwise/depthwise_227:weight and its value')
    print('2. delete @FeatureExtractor/MobilenetV2/expanded_conv/depthwise/depthwise_227:bias and its value')
    print('3. delete @FeatureExtractor/MobilenetV2/Conv/Relu6_228ut0 and its value')
    print('==================================================================================================')
    print('Original quantization profile and modified quantization profile diff shows in file quantization_profile.diff')


    rknn.release()






3. 报错的日志

D import clients finished
E Catch exception when loading tensorflow model: ./tensorflow.pb!
T Traceback (most recent call last):
T   File "rknn/api/rknn_base.py", line 136, in rknn.api.rknn_base.RKNNBase.load_tensorflow
T   File "rknn/base/RKNNlib/converter/convert_tf.py", line 102, in rknn.base.RKNNlib.converter.convert_tf.convert_tf.__init__
T   File "rknn/base/RKNNlib/converter/tensorflowloader.py", line 44, in rknn.base.RKNNlib.converter.tensorflowloader.TF_Graph_Preprocess.__init__
T   File "rknn/base/RKNNlib/converter/tensorflowloader.py", line 46, in rknn.base.RKNNlib.converter.tensorflowloader.TF_Graph_Preprocess.__init__
T   File "/usr/local/lib/python3.6/site-packages/google/protobuf/message.py", line 187, in ParseFromString
T     return self.MergeFromString(serialized)
T   File "/usr/local/lib/python3.6/site-packages/google/protobuf/internal/python_message.py", line 1124, in MergeFromString
T     if self._InternalParse(serialized, 0, length) != length:
T   File "/usr/local/lib/python3.6/site-packages/google/protobuf/internal/python_message.py", line 1189, in InternalParse
T     pos = field_decoder(buffer, new_pos, end, self, field_dict)
T   File "/usr/local/lib/python3.6/site-packages/google/protobuf/internal/decoder.py", line 723, in DecodeField
T     if value._InternalParse(buffer, pos, new_pos) != new_pos:
T   File "/usr/local/lib/python3.6/site-packages/google/protobuf/internal/python_message.py", line 1189, in InternalParse
T     pos = field_decoder(buffer, new_pos, end, self, field_dict)
T   File "/usr/local/lib/python3.6/site-packages/google/protobuf/internal/decoder.py", line 702, in DecodeRepeatedField
T     if value.add()._InternalParse(buffer, pos, new_pos) != new_pos:
T   File "/usr/local/lib/python3.6/site-packages/google/protobuf/internal/python_message.py", line 1189, in InternalParse
T     pos = field_decoder(buffer, new_pos, end, self, field_dict)
T   File "/usr/local/lib/python3.6/site-packages/google/protobuf/internal/decoder.py", line 847, in DecodeMap
T     if submsg._InternalParse(buffer, pos, new_pos) != new_pos:
T   File "/usr/local/lib/python3.6/site-packages/google/protobuf/internal/python_message.py", line 1176, in InternalParse
T     buffer, new_pos, wire_type)  # pylint: disable=protected-access
T   File "/usr/local/lib/python3.6/site-packages/google/protobuf/internal/decoder.py", line 948, in _DecodeUnknownField
T     (data, pos) = _DecodeUnknownFieldSet(buffer, pos)
T   File "/usr/local/lib/python3.6/site-packages/google/protobuf/internal/decoder.py", line 927, in _DecodeUnknownFieldSet
T     (data, pos) = _DecodeUnknownField(buffer, pos, wire_type)
T   File "/usr/local/lib/python3.6/site-packages/google/protobuf/internal/decoder.py", line 952, in _DecodeUnknownField
T     raise _DecodeError('Wrong wire type in tag.')
T google.protobuf.message.DecodeError: Wrong wire type in tag.


回复

使用道具 举报

jefferyzhang

版主

积分
12844
发表于 2019-7-12 16:40:34 | 显示全部楼层
首先,你这个错都还在google/protobuf/里,都还没走到rknn_toolkit,这种错你要自己先debug下。
用这个pb你当前系统的tf是否可以运行,这里报的错很怀疑这个pb就不能在这个tf版本上运行
回复

使用道具 举报

摇太阳

注册会员

积分
132
 楼主| 发表于 2019-7-15 09:25:45 | 显示全部楼层
jefferyzhang 发表于 2019-7-12 16:40
首先,你这个错都还在google/protobuf/里,都还没走到rknn_toolkit,这种错你要自己先debug下。
用这个pb你 ...

喔喔喔,明白。
请教下,你们那个 /RKNN/rknn-toolkit/example/mobilenet-ssd/ssd_mobilenet_v1_coco_2017_11_17.pb训练的跟Tensorflow版本有关系嘛?你们用的是哪个版本啊?
能不能给一个官方训练的教程呀?
谢谢啊
回复

使用道具 举报

troy

版主

积分
2346
发表于 2019-7-16 08:31:04 | 显示全部楼层
摇太阳 发表于 2019-7-15 09:25
喔喔喔,明白。
请教下,你们那个 /RKNN/rknn-toolkit/example/mobilenet-ssd/ssd_mobilenet_v1_coco_201 ...

官方没有重新进行训练,都是使用现有的预训练模型。
回复

使用道具 举报

摇太阳

注册会员

积分
132
 楼主| 发表于 2019-7-16 15:14:27 | 显示全部楼层
troy 发表于 2019-7-16 08:31
官方没有重新进行训练,都是使用现有的预训练模型。

请问下您有没有用过自己的模型训练过呀 ?
如果有成功训练出来的能给个教程嘛?
我这里用自己的模型按官方的训练出来的转不欸
谢谢啦
回复

使用道具 举报

troy

版主

积分
2346
发表于 2019-7-16 16:10:23 | 显示全部楼层
摇太阳 发表于 2019-7-16 15:14
请问下您有没有用过自己的模型训练过呀 ?
如果有成功训练出来的能给个教程嘛?
我这里用自己的模型按官 ...

上面同事有回复,转换失败有可能是pb模型的TensorFlow版本太高导致的
回复

使用道具 举报

小宁哥

注册会员

积分
93
发表于 2019-11-26 19:19:14 | 显示全部楼层
楼主问题解决了吗,我也遇到了,tf版本和你一样,toolkit1.2
回复

使用道具 举报

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

本版积分规则

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


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