Toybrick

rknn可以推理单通道图片作为网络的输入吗?

FFFOCUS

注册会员

积分
56
发表于 2019-8-27 11:34:36    查看: 18093|回复: 11 | [复制链接]    打印 | 显示全部楼层
现有一个网络,输入为单通道的图片,在转rknn的时候,rknn.config()中的mean与scale怎么写?我尝试写了0 0 0 1 推理结果完全不正确
回复

使用道具 举报

jefferyzhang

版主

积分
12921
发表于 2019-8-29 16:09:01 | 显示全部楼层
可以的,mean scale 留空试试。
可以参考下我们之前基础教程,车牌识别那个教程就是单通道图片
回复

使用道具 举报

FFFOCUS

注册会员

积分
56
 楼主| 发表于 2019-8-29 17:03:46 | 显示全部楼层
jefferyzhang 发表于 2019-8-29 16:09
可以的,mean scale 留空试试。
可以参考下我们之前基础教程,车牌识别那个教程就是单通道图片 ...

我看了车牌识别的模型转换代码:rknn.config()但是结果还是跟之前一样。
下面上图是pb推理的结果,下图是转rknn时候的结果;fusion是网络的输入




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

jefferyzhang

版主

积分
12921
发表于 2019-8-29 19:45:30 | 显示全部楼层
输入是否一致,输入图片是否和原模型一样做了归一化操作之类的。
差别比较大的情况一般都是代码问题
回复

使用道具 举报

FFFOCUS

注册会员

积分
56
 楼主| 发表于 2019-8-30 09:11:08 | 显示全部楼层
jefferyzhang 发表于 2019-8-29 19:45
输入是否一致,输入图片是否和原模型一样做了归一化操作之类的。
差别比较大的情况一般都是代码问题 ...

图中的fusion 就是我送进网络的经过各种处理的图片,两种情况下是一致的,结果不一致
回复

使用道具 举报

jefferyzhang

版主

积分
12921
发表于 2019-8-30 09:54:32 | 显示全部楼层
FFFOCUS 发表于 2019-8-30 09:11
图中的fusion 就是我送进网络的经过各种处理的图片,两种情况下是一致的,结果不一致 ...

你需要逐层往上调试输出,定位哪一层开始不一致的
回复

使用道具 举报

FFFOCUS

注册会员

积分
56
 楼主| 发表于 2019-8-30 10:06:10 | 显示全部楼层
jefferyzhang 发表于 2019-8-30 09:54
你需要逐层往上调试输出,定位哪一层开始不一致的

网络第一层就有问题了,
ret = rknn.load_tensorflow(tf_pb='vgg-new.pb',inputs=['Placeholder'],outputs=[‘conv1/Conv2D'],input_size_list=[[112, 112, 1]])
打印送进网络的tensor会报错
ret = rknn.load_tensorflow(tf_pb='vgg-new.pb',inputs=['Placeholder'],outputs=['Placeholder'],input_size_list=[[112, 112, 1]])
报错
W Not get any connection of Placeholderut0
E Catch exception when loading tensorflow model: vgg-new.pb!
T Traceback (most recent call last):
T   File "rknn/api/rknn_base.py", line 186, in rknn.api.rknn_base.RKNNBase.load_tensorflow
T   File "rknn/base/RKNNlib/converter/convert_tf.py", line 655, in rknn.base.RKNNlib.converter.convert_tf.convert_tf.graph_connection_build
T AttributeError: 'NoneType' object has no attribute 'lid'
回复

使用道具 举报

jefferyzhang

版主

积分
12921
发表于 2019-8-30 10:49:46 | 显示全部楼层
FFFOCUS 发表于 2019-8-30 10:06
网络第一层就有问题了,
ret = rknn.load_tensorflow(tf_pb='vgg-new.pb',inputs=['Placeholder'],outpu ...

verbose=True打开了不。
conv-relu-maxpool 最好不要拆散,因为这对NPU来说是一个算子
回复

使用道具 举报

FFFOCUS

注册会员

积分
56
 楼主| 发表于 2019-8-30 11:53:01 | 显示全部楼层
jefferyzhang 发表于 2019-8-30 10:49
verbose=True打开了不。
conv-relu-maxpool 最好不要拆散,因为这对NPU来说是一个算子 ...

我是两个层conv后带有一个maxpool,打印conv1 conv addbias 及relu层的输出和tf推理pb的结果不在一个量级上,想打印placeholder(未进行推理的tensor)这个tensor 报错
--> Loading model
D import clients finished
I Current TF Model producer version 0 min consumer version 0 bad consumer version []
I Have 0 tensors convert to const tensor
[]
I build output layer attach_Placeholderut0
I build input layer Placeholderut0
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.6/logging/__init__.py", line 996, in emit
    stream.write(msg)
ValueError: I/O operation on closed file.
Call stack:
  File "test.py", line 21, in <module>
    ret = rknn.load_tensorflow(tf_pb='vgg-new.pb',inputs=['Placeholder'],outputs=['Placeholder'],input_size_list=[[112, 112, 1]])
  File "/usr/local/lib/python3.6/dist-packages/rknn/api/rknn.py", line 62, in load_tensorflow
    std_values=std_values)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/deprecation.py", line 323, in new_func
    instructions)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/platform/tf_logging.py", line 166, in warning
    get_logger().warning(msg, *args, **kwargs)
Message: 'From %s: %s (from %s) is deprecated and will be removed %s.\nInstructions for updating:\n%s'
Arguments: ('/usr/local/lib/python3.6/dist-packages/rknn/api/rknn.py:62', 'extract_sub_graph', 'tensorflow.python.framework.graph_util_impl', 'in a future version', 'Use tf.compat.v1.graph_util.extract_sub_graph')
W Not get any connection of Placeholderut0
E Catch exception when loading tensorflow model: vgg-new.pb!
T Traceback (most recent call last):
T   File "rknn/api/rknn_base.py", line 186, in rknn.api.rknn_base.RKNNBase.load_tensorflow
T   File "rknn/base/RKNNlib/converter/convert_tf.py", line 655, in rknn.base.RKNNlib.converter.convert_tf.convert_tf.graph_connection_build
T AttributeError: 'NoneType' object has no attribute 'lid'
回复

使用道具 举报

jefferyzhang

版主

积分
12921
发表于 2019-8-30 12:08:42 | 显示全部楼层
这种情况我们是从来没有客户出现过的。我还是比较怀疑你的输入或者模型代码问题。
例如:
1. pb模型输入是归一化的[-1, 1],结果你用rknn时候输入没做归一
2. rknn config时候做了归一,结果使用时候喂的数据又做了一次归一

类似这样的问题。
回复

使用道具 举报

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

本版积分规则

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


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