Toybrick

RKNN 转换 mobile V1 ssd 报错,请问 这个是为什么?已经使用.

linuxsky

注册会员

积分
151
发表于 2019-2-18 11:22:20    查看: 9601|回复: 7 | [复制链接]    打印 | 显示全部楼层
本帖最后由 linuxsky 于 2019-2-18 11:51 编辑

$ python3 ssd.py
W verbose file path is invalid, debug info will not dump to file.
--> Loading model
D import clients finished
E Catch exception when loading tensorflow model: ./frozen_inference_graph.pb!
T Traceback (most recent call last):
T   File "rknn/api/rknn_base.py", line 143, in rknn.api.rknn_base.RKNNBase.load_tensorflow
T   File "rknn/base/rknnlib/converter/convert_tf.py", line 93, in rknn.base.rknnlib.converter.convert_tf.convert_tf.__init__
T   File "rknn/base/rknnlib/converter/tensorflowloader.py", line 53, in rknn.base.rknnlib.converter.tensorflowloader.TF_Graph_Preprocess.__init__
T AttributeError: 'NoneType' object has no attribute 'op'
done
--> Building model
2019-02-18 10:59:07.223537: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
E Catch exception when building RKNN model!
T Traceback (most recent call last):
T   File "rknn/api/rknn_base.py", line 470, in rknn.api.rknn_base.RKNNBase.build
T   File "rknn/api/rknn_base.py", line 874, in rknn.api.rknn_base.RKNNBase._quantize
T   File "rknn/base/tensorzonex.py", line 213, in rknn.base.tensorzonex.get_data_file
T   File "/usr/lib/python3.5/posixpath.py", line 122, in splitext
T     return genericpath._splitext(p, sep, None, extsep)
T   File "/usr/lib/python3.5/genericpath.py", line 118, in _splitext
T     sepIndex = p.rfind(sep)
T AttributeError: 'NoneType' object has no attribute 'rfind'
done
--> Init runtime environment
done
--> Running model
E RKNN model is None
done
inference result:  None
Traceback (most recent call last):
  File "ssd.py", line 108, in <module>
    predictions = outputs[1].reshape((1, NUM_RESULTS, 4))
TypeError: 'NoneType' object is not subscriptable


回复

使用道具 举报

yhc

注册会员

积分
177
发表于 2019-2-18 12:05:13 | 显示全部楼层
确认是ssd_mobilenet_v1?
如果是ssd_mobilenet_v2的input节点有点不一样
  1.     rknn.load_tensorflow(tf_pb='./ssd_mobilenet_v2_coco_2018_03_29/frozen_inference_graph.pb',
  2.                          inputs=['FeatureExtractor/MobilenetV2/MobilenetV2/input'],
  3.                          outputs=['concat', 'concat_1'],
  4.                          input_size_list=[[INPUT_SIZE, INPUT_SIZE, 3]])
复制代码
回复

使用道具 举报

linuxsky

注册会员

积分
151
 楼主| 发表于 2019-2-18 13:47:15 | 显示全部楼层
yhc 发表于 2019-2-18 12:05
确认是ssd_mobilenet_v1?
如果是ssd_mobilenet_v2的input节点有点不一样

果然是 训练的有问题。。。V2 确实改了 iput 就可以了。
顺便问下,怎么确定模型的 input  output 呢?
回复

使用道具 举报

yhc

注册会员

积分
177
发表于 2019-2-18 15:53:48 | 显示全部楼层
可以用netron打开pb模型看网络结构,取这个节点是有去掉了一些前处理
回复

使用道具 举报

chuyee

中级会员

积分
352
发表于 2019-2-19 15:24:43 | 显示全部楼层
yhc 发表于 2019-2-18 15:53
可以用netron打开pb模型看网络结构,取这个节点是有去掉了一些前处理

回复

使用道具 举报

linuxsky

注册会员

积分
151
 楼主| 发表于 2019-2-19 15:53:29 | 显示全部楼层
yhc 发表于 2019-2-18 15:53
可以用netron打开pb模型看网络结构,取这个节点是有去掉了一些前处理

我刚才安装了 这个工具,打开后 看到大网络,但是一般看到输入不就是 image 么?为什么要选择 conv2D 呢?
是自己随便选择 输入输出的节点么?
做嵌入式开发的 ,小白 求大神 不吝赐教下。
回复

使用道具 举报

yhc

注册会员

积分
177
发表于 2019-2-19 16:24:24 | 显示全部楼层
一般的话要自己熟悉网络的结构,就ssd_mobilenet_v2网络来说,前处理的话都是Preprocessor开头的,所以就跳过这些Preprocessor的节点,取到
FeatureExtractor/MobilenetV2/MobilenetV2/input,因为这些前处理节点如果用NPU来跑并不是效率最高的,可以用cpu来替代处理
回复

使用道具 举报

linuxsky

注册会员

积分
151
 楼主| 发表于 2019-2-19 16:47:54 | 显示全部楼层
yhc 发表于 2019-2-19 16:24
一般的话要自己熟悉网络的结构,就ssd_mobilenet_v2网络来说,前处理的话都是Preprocessor开头的,所以就跳 ...

好的多谢,搞嵌入式的不懂这些。。。。
能加您个微信不,有啥不懂的跟请教学学
我的微信号 linuxsky
回复

使用道具 举报

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

本版积分规则

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


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