Toybrick

固件更新后,rknn出现的问题

Aaronworry

注册会员

积分
56
楼主
发表于 2019-11-1 15:48:52    查看: 8350|回复: 5 | [复制链接]    打印 | 只看该作者
在之前使用v1.3的固件时,将pb模型转化为rknn是可行的(不会报错)

然后更新了固件为v1.5(Fedora),将pb转rknn时出现如下报错:
eption when loading tensorflow model: ./tensorflow.pb!
T Traceback (most recent call last):
T   File "/home/toybrick/.local/lib/python3.6/site-packages/tensorflow/python/framework/importer.py", line 418, in import_graph_def
T     graph._c_graph, serialized, options)  # pylint: disable=protected-access
T tensorflow.python.framework.errors_impl.InvalidArgumentError: NodeDef mentions attr 'explicit_paddings' not in Op<name=Conv2D; signature=input:T, filter:T -> output:T; attr=T:type,allowed=[DT_HALF, DT_BFLOAT16, DT_FLOAT, DT_DOUBLE]; attr=strides:list(int); attr=use_cudnn_on_gpu:bool,default=true; attr=padding:string,allowed=["SAME", "VALID"]; attr=data_format:string,default="NHWC",allowed=["NHWC", "NCHW"]; attr=dilations:list(int),default=[1, 1, 1, 1]>; NodeDef: conv2d_1/convolution = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], explicit_paddings=[], padding="SAME", strides=[1, 2, 2, 1], use_cudnn_on_gpu=true](input_1, conv2d_1/kernel). (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).
T During handling of the above exception, another exception occurred:
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 488, in rknn.base.RKNNlib.converter.convert_tf.convert_tf.pre_process
T   File "rknn/base/RKNNlib/converter/tensorflowloader.py", line 102, in rknn.base.RKNNlib.converter.tensorflowloader.TF_Graph_Preprocess.pre_proces
T   File "rknn/base/RKNNlib/converter/tensorflowloader.py", line 629, in rknn.base.RKNNlib.converter.tensorflowloader.TF_Graph_Preprocess.calc_2_const
T   File "rknn/base/RKNNlib/converter/tf_util.py", line 371, in rknn.base.RKNNlib.converter.tf_util.TFProto_Util.query_tensor
T   File "rknn/base/RKNNlib/converter/tf_util.py", line 372, in rknn.base.RKNNlib.converter.tf_util.TFProto_Util.query_tensor
T   File "/home/toybrick/.local/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 454, in new_func
T     return func(*args, **kwargs)
T   File "/home/toybrick/.local/lib/python3.6/site-packages/tensorflow/python/framework/importer.py", line 422, in import_graph_def
T     raise ValueError(str(e))
T ValueError: NodeDef mentions attr 'explicit_paddings' not in Op<name=Conv2D; signature=input:T, filter:T -> output:T; attr=T:type,allowed=[DT_HALF, DT_BFLOAT16, DT_FLOAT, DT_DOUBLE]; attr=strides:list(int); attr=use_cudnn_on_gpu:bool,default=true; attr=padding:string,allowed=["SAME", "VALID"]; attr=data_format:string,default="NHWC",allowed=["NHWC", "NCHW"]; attr=dilations:list(int),default=[1, 1, 1, 1]>; NodeDef: conv2d_1/convolution = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], explicit_paddings=[], padding="SAME", strides=[1, 2, 2, 1], use_cudnn_on_gpu=true](input_1, conv2d_1/kernel). (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).
done
--> Building model
Traceback (most recent call last):
  File "test.py", line 23, in <module>
    rknn.build(do_quantization=False)  
  File "/home/toybrick/.local/lib/python3.6/site-packages/rknn/api/rknn.py", line 163, in build
    inputs = self.rknn_base.net.get_input_layers()
AttributeError: 'NoneType' object has no attribute 'get_input_layers'


这个该如何解决呢?
回复

使用道具 举报

jefferyzhang

版主

积分
13580
沙发
发表于 2019-11-1 16:58:19 | 只看该作者
T   File "/home/toybrick/.local/lib/python3.6/site-packages/tensorflow/python/framework/importer.py", line 418, in import_graph_def

tf报的错。应该是pb文件和你转换rknn时候使用的tf版本不匹配造成的。
建议你在生成这个pb文件的PC上去转换rknn
回复

使用道具 举报

Aaronworry

注册会员

积分
56
板凳
 楼主| 发表于 2019-11-2 10:53:31 | 只看该作者
jefferyzhang 发表于 2019-11-1 16:58
T   File "/home/toybrick/.local/lib/python3.6/site-packages/tensorflow/python/framework/importer.py" ...

非常感谢,问题解决了。
然后调用rknn(target=‘rk3399pro')跑模型时提示 :
       Using device with adb mode to init runtime, but npu_transfer_proxy is running, it may cause conflict. Please terminate npu_transfer_proxy first.

然后我在ubuntu上跑时,target="linux"   是可以执行的
回复

使用道具 举报

jefferyzhang

版主

积分
13580
地板
发表于 2019-11-2 11:07:50 | 只看该作者
这个target是指定运行的目标的,
如果你在pc上跑rknntoolkit,target写 rk3399pro,那他就是通过rknntoolkit的npu_transfer_proxy和连接在pc上toybrick板子进行RPC远程调用来执行代码,
如果target写rk1808,就是在计算棒上跑。
回复

使用道具 举报

Aaronworry

注册会员

积分
56
5#
 楼主| 发表于 2019-11-2 20:50:31 | 只看该作者
jefferyzhang 发表于 2019-11-2 11:07
这个target是指定运行的目标的,
如果你在pc上跑rknntoolkit,target写 rk3399pro,那他就是通过rknntoolki ...

但这是我在rk3399pro这个板子上的这个代码,target=rk3399pro报上述错误
回复

使用道具 举报

jefferyzhang

版主

积分
13580
6#
发表于 2019-11-2 22:51:53 | 只看该作者
Aaronworry 发表于 2019-11-2 20:50
但这是我在rk3399pro这个板子上跑的这个代码,target=rk3399pro 时 报上述错误

如果你在3399pro上跑,target就不能写,因为他的目标是NPU。
回复

使用道具 举报

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

本版积分规则

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


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