Toybrick
标题: rk3566 转换facenet失败 [打印本页]
作者: ameRk 时间: 2022-7-15 11:01
标题: rk3566 转换facenet失败
该问题是因为 rknn-toolkit2 已经不支持了facenet的模型转换吗?
W __init__: rknn-toolkit2 version: 1.3.0-11912b58
W config: 'target_platform' is None, use rk3566 as default, Please set according to the actual platform!
config done
--> Loading model
W load_tensorflow: inputs name should be a tensor name instead of node name
2022-07-14 16:26:03.647684: I tensorflow/tools/graph_transforms/transform_graph.cc:317] Applying strip_unused_nodes
2022-07-14 16:26:03.787548: I tensorflow/tools/graph_transforms/transform_graph.cc:317] Applying sort_by_execution_order
2022-07-14 16:26:03.867908: I tensorflow/tools/graph_transforms/transform_graph.cc:317] Applying fold_constants
2022-07-14 16:26:04.358690: I tensorflow/tools/graph_transforms/transform_graph.cc:317] Applying fold_batch_norms
2022-07-14 16:26:04.506355: I tensorflow/tools/graph_transforms/transform_graph.cc:317] Applying fold_old_batch_norms
2022-07-14 16:26:05.596624: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 AVX512F FMA
2022-07-14 16:26:05.620279: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2200000000 Hz
2022-07-14 16:26:05.622388: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x556b7a5042e0 executing computations on platform Host. Devices:
2022-07-14 16:26:05.622431: I tensorflow/compiler/xla/service/service.cc:175] StreamExecutor device (0): <undefined>, <undefined>
E load_tensorflow: Catch exception when loading tensorflow model: 20180402-114759/20180402-114759.pb!
E load_tensorflow: Traceback (most recent call last):
E load_tensorflow: File "/home/ame/anaconda3/envs/npu/lib/python3.6/site-packages/tensorflow/python/framework/importer.py", line 427, in import_graph_def
E load_tensorflow: graph._c_graph, serialized, options) # pylint: disable=protected-access
E load_tensorflow: tensorflow.python.framework.errors_impl.InvalidArgumentError: Node 'InceptionResnetV1/Bottleneck/BatchNorm/cond_1/AssignMovingAvg_1/Switch' expects to be colocated with unknown node 'InceptionResnetV1/Bottleneck/BatchNorm/moving_variance'
E load_tensorflow: During handling of the above exception, another exception occurred:
E load_tensorflow: Traceback (most recent call last):
E load_tensorflow: File "rknn/api/rknn_base.py", line 990, in rknn.api.rknn_base.RKNNBase.load_tensorflow
E load_tensorflow: File "rknn/base/convertor/tensorflow2onnx/tf2onnx/convert.py", line 589, in rknn.base.convertor.tensorflow2onnx.tf2onnx.convert.from_graph_def
E load_tensorflow: File "rknn/base/convertor/tensorflow2onnx/tf2onnx/convert.py", line 590, in rknn.base.convertor.tensorflow2onnx.tf2onnx.convert.from_graph_def
E load_tensorflow: File "rknn/base/convertor/tensorflow2onnx/tf2onnx/convert.py", line 591, in rknn.base.convertor.tensorflow2onnx.tf2onnx.convert.from_graph_def
E load_tensorflow: File "rknn/base/convertor/tensorflow2onnx/tf2onnx/convert.py", line 592, in rknn.base.convertor.tensorflow2onnx.tf2onnx.convert.from_graph_def
E load_tensorflow: File "/home/ame/anaconda3/envs/npu/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 507, in new_func
E load_tensorflow: return func(*args, **kwargs)
E load_tensorflow: File "/home/ame/anaconda3/envs/npu/lib/python3.6/site-packages/tensorflow/python/framework/importer.py", line 431, in import_graph_def
E load_tensorflow: raise ValueError(str(e))
E load_tensorflow: ValueError: Node 'InceptionResnetV1/Bottleneck/BatchNorm/cond_1/AssignMovingAvg_1/Switch' expects to be colocated with unknown node 'InceptionResnetV1/Bottleneck/BatchNorm/moving_variance'
done
--> Building model
E build: The model has not been loaded, please load it first!
done
E export_rknn: RKNN model is None, please load & build model first!
作者: jefferyzhang 时间: 2022-7-15 11:17
本帖最后由 jefferyzhang 于 2022-7-15 11:27 编辑
NPU只对op层面做支持,我们不会把市面所有模型都跑一遍。
不支持的op要么换掉,要么自定义,要么拉出来放到rknn外实现。你这个看过去也有可能是版本不匹配,建议你rknn文档先看一遍
作者: ameRk 时间: 2022-7-15 11:20
关键是 你这个rknn-toolkit 是支持的啊,怎么到 rknn-toolkit2 反而取消了呢,没有考虑向下兼容吗?
是对 rknn-toolkit2 进行了裁剪吗?
作者: jefferyzhang 时间: 2022-7-15 11:27
建议你先把文档看一遍,这个看过去不会支持不了。版本不匹配可能性更大
作者: ameRk 时间: 2022-7-15 11:40
版本不匹配,你是只芯片与sdk的版本吗,现在的板子是 rk 3566 ,就是按照你们的文档,要换成 rknn-toolkit2的啊
而且目前都是再ubuntu系统上进行转换的,你说的版本不匹配 指的什么呢,我现在都没有走到推理那一步,现在是转换模型都失败啦,同样的流程,rknn-toolkit (1.7.1)版本是可以转换成功的,rknn-toolkit 2就转换找不到OP
作者: ameRk 时间: 2022-7-15 11:43
为了保持一致性,我都是再同一台服务器上搭建的同样的环境(除了你们的转换工具包不一样,其他的依赖库版本都一样的)所以你说的版本不匹配 是指的哪方面的呢
作者: jefferyzhang 时间: 2022-7-15 12:05
你tensorflow什么版本
作者: ameRk 时间: 2022-7-15 12:10
1.14.0,按照你们的文档安装的版本
作者: jefferyzhang 时间: 2022-7-15 12:14
你模型没开推理模式转的吧?
作者: ameRk 时间: 2022-7-15 12:18
没开,因为之前就发现有问题,所以就只进行了模型转换处理
作者: jefferyzhang 时间: 2022-7-15 12:25
不开推理模式freeze的模型rknntoolkit1也是转不过的
作者: ameRk 时间: 2022-7-15 12:31
不好意思确认一下,你说的推理模式是指 rknn.build 之后的interface 操作,还是 某个配置项啊,如果是 指interface 的话。我这里确实都没有开,但是rknntoolkit1 确实是转换成功啦。build 是成功的,但是rknntoolkit2 就报第一栏的那种错误
作者: ameRk 时间: 2022-7-15 13:34
现在的对比情况,就是两套工具下的转换程序的流程是一致的,rknntoolkit1 没有报错并且有RKNN模型生成,rknntoolkit2 报错啦
作者: jefferyzhang 时间: 2022-7-15 14:40
tensorflow的接口,pytorch也有类似接口,模型在训练模式和推理模式是不一样的
作者: ameRk 时间: 2022-7-15 14:47
哦。但是从我这里的试验结果来看,流程是一样的啊(所以tensorflow那一部分也是没有修改的),唯一不同的就是rknntoolkit1 与rknntoolkit2(还有就是参数不同,参数都是根据你们不同版本的文档修改调整的),所以我现在想确认的是 rknntoolkit2 与rknntoolkit1 的改动有这么大吗,从转换结果来看,rknntoolkit1 是支持该 op的,但rknntoolkit2 却不支持,但是我无法看到你们的内部调用情况,所以需要您帮忙分析一下,是不是由于rknntoolkit1 与rknntoolkit2 的不同导致的,如果是这样的话,我好想其他办法解决这个问题,如果是参数或者函数调用的话,那方便指导一下那些参数有可能导致这些情况不!
作者: jefferyzhang 时间: 2022-7-15 15:03
两个是不同架构的npu,toolkit也是新开发的。
问题我已经反馈上去。
作者: ameRk 时间: 2022-7-15 15:04
好的,谢谢啦
作者: jefferyzhang 时间: 2022-7-19 17:40
本帖最后由 jefferyzhang 于 2022-7-20 09:43 编辑
请把模型和转换脚本发一下.还有你自己可以试试先转onnx再转rknn能不能转过
作者: ameRk 时间: 2022-9-1 10:36
rknn-toolkit2 的模型转换如下
import numpy as np
import re
import math
import random
import cv2
from rknn.api import RKNN
if __name__ == '__main__':
INPUT_SIZE = 160
rknn = RKNN(verbose=True)
# Config for Model Input PreProcess
#rknn.config(channel_mean_value='0 0 0 1', reorder_channel='0 1 2',target_platform=['rv1126'])
rknn.config(mean_values=[127.5, 127.5, 127.5], std_values=[127.5, 127.5, 127.5])
#rknn.config(channel_mean_value='0 0 0 1', reorder_channel='0 1 2')
print('config done')
# load tensorflow model
print('--> Loading model')
#out = 'InceptionResnetV1/Bottleneck/BatchNorm/batchnorm/add_1'
#out = "InceptionResnetV1/Bottleneck/BatchNorm/cond_1/AssignMovingAvg_1/Switch"
out = "InceptionResnetV1/Bottleneck/BatchNorm/Reshape_1"
#out = "embeddings"
rknn.load_tensorflow(tf_pb='20180402-114759/20180402-114759.pb',
#inputs=['input','phase_train'],
inputs=['input'],
outputs=[out],
input_size_list=[[INPUT_SIZE, INPUT_SIZE, 3]])
#input_size_list=[[INPUT_SIZE, INPUT_SIZE, 3], [1]])
print('done')
# Build Model
print('--> Building model')
ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
#ret = rknn.build(do_quantization=False)
print('done')
# Export RKNN Model
rknn.export_rknn('./facenet_Reshape_1_two.rknn')
rknn.release()
rknn-toolkit的换换如下
import numpy as np
import re
import math
import random
import cv2
from rknn.api import RKNN
if __name__ == '__main__':
INPUT_SIZE = 160
rknn = RKNN(verbose=True)
# Config for Model Input PreProcess
#rknn.config(channel_mean_value='0 0 0 1', reorder_channel='0 1 2',target_platform=['rv1126'])
#rknn.config(mean_values=[127.5, 127.5, 127.5], std_values=[127.5, 127.5, 127.5])
rknn.config(channel_mean_value='0 0 0 1', reorder_channel='0 1 2')
print('config done')
# load tensorflow model
print('--> Loading model')
#out = 'InceptionResnetV1/Bottleneck/BatchNorm/batchnorm/add_1'
#out = "InceptionResnetV1/Bottleneck/BatchNorm/cond_1/AssignMovingAvg_1/Switch"
out = "InceptionResnetV1/Bottleneck/BatchNorm/Reshape_1"
#out = "embeddings"
rknn.load_tensorflow(tf_pb='20180402-114759/20180402-114759.pb',
#inputs=['input','phase_train'],
inputs=['input'],
outputs=[out],
input_size_list=[[INPUT_SIZE, INPUT_SIZE, 3]])
print('done')
# Build Model
print('--> Building model')
#ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
rknn.build(do_quantization=False)
print('done')
# Export RKNN Model
rknn.export_rknn('./facenet_Reshape_1_two.rknn')
rknn.release()
欢迎光临 Toybrick (https://t.rock-chips.com/) |
Powered by Discuz! X3.3 |