Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

无法成功插入slice节点,希望增加修改输入通道数的功能 #22

Closed
wwdok opened this issue Oct 22, 2022 · 7 comments
Closed

Comments

@wwdok
Copy link

wwdok commented Oct 22, 2022

作者你好,我的情况是这样的,我的模型是在灰度图上训练的,所以输入的通道数只有1,现在我要把输入的通道数变成3,这样才能享受TNN的加速,但我又不想重新制作数据集和训练,所以我想到的是:第一步,修改输入的通道数从1变成3,即[1,1,192,192]变成[1,3,192,192];第二步,在输入后面插入一个slice算子,只选取三个通道中的第一个通道。这样我就不用重新训练模型了。
现在我跳过第一步,先尝试第二步插入slice 算子,但遇到了以下问题:
我已经修改了slice的输入和输出
image
也修改了第一个卷积的输入
image
可slice算子还是无法成功地与第一个卷积连接。
我使用的onnx模型是:model.zip

@ZhangGe6
Copy link
Owner

谢谢反馈!问题收到,正在修复中。

@ZhangGe6
Copy link
Owner

@wwdok 你好,这个issue中包含两个问题:

1. 关于slice算子无法成功连接
这一步是上述操作有误。具体来说,在第二步修改“卷积的输入”时,应该填写Conv0,而不是custom_added_Slice0。(填的应该是节点的输入输出名,而不是节点名)。

  • 填写为Conv0后,实测可以成功连接。
  • 需要指出的是,在每次输入到最后一个字符前,建议稍稍停顿一下,因为Netron源码中有大量的异步操作,输入太快可能导致读取不到。

2. 关于增加修改输入通道数的功能
该功能目前已经支持,详见readme。就该问题而言,具体设置如下图,实测得到的模型可以正确推理。
issue22_slice_example

请重新尝试一下,如果还存在问题,欢迎继续交流~

@wwdok
Copy link
Author

wwdok commented Oct 27, 2022

太棒了,致敬大佬!

@wwdok wwdok closed this as completed Oct 27, 2022
@wwdok
Copy link
Author

wwdok commented Oct 28, 2022

我后来再想想,感觉我说的”增加修改输入通道数的功能“好像和你理解的不太一样,我期望的是改变模型输入的通道数,也就是[1,1,192,192]变成[1,3,192,192],如下图所示:
image
对了,说到这里,我又想到一个功能需求,就是增加个”推理形状“的按钮,这样就能够显示加入算子节点前后形状是怎么变化的了,好像是用到onnx.shape_inference.infer_shapes这个函数,参考:https://blog.csdn.net/Artyze/article/details/107403191。

@ZhangGe6
Copy link
Owner

我后来再想想,感觉我说的”增加修改输入通道数的功能“好像和你理解的不太一样,我期望的是改变模型输入的通道数,也就是[1,1,192,192]变成[1,3,192,192],如下图所示:

我也是按照你描述的这样理解的。starts = [0, 0, 0, 0], ends = [1, 1, 192, 192]的slice节点,实现的是取第一个通道。我这边没有做三通道的实验,而是还在一通道的基础上做slice,是想示例一下。因为从三通道中取第一通道,和从一通道中取第一通道,得到的值应该是一样的。
请问是在把输入的通道数从1变成3后,使用出现问题了吗?如果是我没理解对你的意思,也欢迎继续讨论~

”推理形状“的功能确实比较实用,后续会考虑添加支持。多谢建议~

@wwdok
Copy link
Author

wwdok commented Oct 28, 2022

因为TNN它只支持三通道或四通道输入的模型的opencl加速,也就是说我在准备的模型的输入的时候,准备的是一个[1,3,192,192]的mat来储存我的输入图像,而[1,3,192,192]的mat输入给属性是输入形状为[1,1,192,192]的模型应该会因为形状不一致而报错(我感觉的),所以需要把模型的输入形状属性从[1,1,192,192]改成[1,3,192,192]。
没事,已经解决了大部分问题了~

@ZhangGe6
Copy link
Owner

ok!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants