Toybrick

标题: SSD 模型 rknn.load_tensorflow 输入输出节点问题 [打印本页]

作者: WuKing    时间: 2019-7-12 10:48
标题: SSD 模型 rknn.load_tensorflow 输入输出节点问题
mobilenet_v1 例程中, 输入输出节点从网络中间截取的,这是为什么呢?我看模型原来的输入,输出应该是: inputs=['image_tensor'],
outputs=['detection_boxes','detection_scores','num_detections','detection_classes'],

是由于自定义的OP 不支持转化吗?望知情的朋友解惑下,谢谢




作者: jefferyzhang    时间: 2019-7-12 16:37
没看懂你问什么,节点名字用Netron看会比较准确
作者: WuKing    时间: 2019-7-16 16:28
jefferyzhang 发表于 2019-7-12 16:37
没看懂你问什么,节点名字用Netron看会比较准确

    rknn.load_tensorflow(tf_pb='./ssd_mobilenet_v1_coco_2017_11_17.pb',
                         inputs=['FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_0/BatchNorm/batchnorm/mul_1'],
                         outputs=['concat', 'concat_1'],
                         input_size_list=[[INPUT_SIZE, INPUT_SIZE, 3]])

你好,我前面描述有误,其实是mobilenet-ssd的模型, 在load的时候,这个inputs 和outputs参数指定的节点和 我从ssd_mobilenet_v1_coco_2017_11_17.pb模型中取出的输入,输出节点不一致。所以有点困惑
作者: jefferyzhang    时间: 2019-7-18 10:03
WuKing 发表于 2019-7-16 16:28
rknn.load_tensorflow(tf_pb='./ssd_mobilenet_v1_coco_2017_11_17.pb',
                         i ...

rk的模型是有改过的,不要跟源码去比对,没有意义
作者: 摇太阳    时间: 2019-7-25 10:26
WuKing 发表于 2019-7-16 16:28
rknn.load_tensorflow(tf_pb='./ssd_mobilenet_v1_coco_2017_11_17.pb',
                         i ...

楼主你好 请问你解决了嘛
我也遇到了同样的问题了 请问怎么解决这个问题的呀

作者: WuKing    时间: 2019-7-25 10:39
摇太阳 发表于 2019-7-25 10:26
楼主你好 请问你解决了嘛
我也遇到了同样的问题了 请问怎么解决这个问题的呀
...

我是直接按照例程的输入输出节点来的,如果预训练模型一样的话,输入输出也是一样的
作者: 摇太阳    时间: 2019-7-26 08:40
WuKing 发表于 2019-7-25 10:39
我是直接按照例程的输入输出节点来的,如果预训练模型一样的话,输入输出也是一样的 ...

你好 请问你的训练模型怎么训练出来的呀 可以给一个教程嘛?
谢谢啦
作者: 求大佬指教    时间: 2019-11-1 14:09
本帖最后由 求大佬指教 于 2019-11-1 14:19 编辑
jefferyzhang 发表于 2019-7-18 10:03
rk的模型是有改过的,不要跟源码去比对,没有意义

请问input和outputs的节点参数该怎么确定呢?
我看有人是下面这么说的:
[attach]687[/attach]
那么这两个op.name在哪里看呢?


作者: jefferyzhang    时间: 2019-11-1 14:27
求大佬指教 发表于 2019-11-1 14:09
请问input和outputs的节点参数该怎么确定呢?
我看有人是下面这么说的:

如果你不会用tf看的话,可以下一个netron来查看各个节点的名字
作者: 求大佬指教    时间: 2019-11-1 15:03
jefferyzhang 发表于 2019-11-1 14:27
如果你不会用tf看的话,可以下一个netron来查看各个节点的名字

我就是用netron查看的,比如下面这个例子
一个输入:

[attach]689[/attach]
三个输出:

[attach]690[/attach][attach]691[/attach]
[attach]692[/attach]
我是这么写的

inputs = ['input/input_data'],
outputs = ['pred_sbbox/concat_2','pred_lbbox/concat_2','pred_mbbox/concat_2']
但是报错
[attach]688[/attach]
求教!谢谢!


作者: jefferyzhang    时间: 2019-11-1 15:43
求大佬指教 发表于 2019-11-1 15:03
我就是用netron查看的,比如下面这个例子
一个输入:

你就不能单独开个帖子问么

首先你这里报的错并不是input output name问题。
其次你可以吧verbose=True打开来看节点匹配问题。
再次看你log应该是pred_sbbox/exp 这个节点不支持造成的
作者: anmyxuxuxu    时间: 2019-11-11 20:31
你好!在pc机上安装rknn-toolkit 运行rknn_convert 将示例caffe模型转成rknn 。报错
E Catch exception when loading caffe model: ./models/caffe/mobilenet_v2/../../../../mobilenet_v2/mobilenet_v2.prototxt!
T Traceback (most recent call last):
T   File "rknn/api/rknn_base.py", line 283, in rknn.api.rknn_base.RKNNBase.load_caffe
T   File "rknn/base/RKNNlib/RKNNnetbuilder.py", line 72, in rknn.base.RKNNlib.RKNNnetbuilder.RKNNNetBuilder.__init__
T   File "rknn/base/RKNNlib/RKNN_session.py", line 19, in rknn.base.RKNNlib.RKNN_session.RKNNSession.__init__
T AttributeError: module 'tensorflow' has no attribute 'ConfigProto'
caffe end
done
--> Build RKNN model...
E Catch exception when building RKNN model!
T Traceback (most recent call last):
T   File "rknn/api/rknn_base.py", line 498, in rknn.api.rknn_base.RKNNBase.build
T   File "rknn/api/rknn_base.py", line 1056, in rknn.api.rknn_base.RKNNBase._quantize
T   File "rknn/base/RKNNlib/console/utils.py", line 7, in rknn.base.RKNNlib.console.utils.get_model_data_file
T   File "/home/xah/anaconda3/lib/python3.6/posixpath.py", line 122, in splitext
T     p = os.fspath(p)
T TypeError: expected str, bytes or os.PathLike object, not NoneType
done

作者: 奥古师弟    时间: 2020-6-10 16:07
jefferyzhang 发表于 2019-7-18 10:03
rk的模型是有改过的,不要跟源码去比对,没有意义

如果不要和源码对比的话,请问对于一个新的模型,在使用rknn.load_tensorflow的时候,输入和输出节点该如何确定呀。
作者: jefferyzhang    时间: 2020-6-10 16:45
奥古师弟 发表于 2020-6-10 16:07
如果不要和源码对比的话,请问对于一个新的模型,在使用rknn.load_tensorflow的时候,输入和输出节点该如 ...

如果是你自己写的tensorflow模型,你是不可能不知道input output name的,因为你自己用tf加载pb时候也要填这几个参数。
如果是别人模型,那你就用netron或者tensorboard看了。一样的道理,你也要先保证当前tf版本能正常载入pb才能去转rknn,不然回头一堆问题都不好定位




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3