ZhangGe6 / onnx-modifier

A tool to modify ONNX models in a visualization fashion, based on Netron and Flask.
MIT License
1.28k stars 157 forks source link

能实现将三个输出,修改为一个输出的功能吗?以yolov5为例 #81

Closed woshishijeishangshangzuidadwk closed 10 months ago

woshishijeishangshangzuidadwk commented 11 months ago

1695541148522 1695541157336 1695541136761

ZhangGe6 commented 11 months ago

麻烦结合图片对需求给出进一步的说明。是希望只保留三个分支中的一个分支,和它的输出吗?这可以通过把其他两个分支删除掉实现。

woshishijeishangshangzuidadwk commented 11 months ago

感谢回复!不是简单的删除分支,类似下面的图,它是一个输出,上面有三个Transpose,Transpose之后本来是三个输出的分支,经过下面的切片,坐标转换等操作,最后concat成了一个输出,我现在有一个三输出的模型,如何去用您的工具实现三输出到这样的单输出ONNX的转换 1695541157336

ZhangGe6 commented 11 months ago

我理解可以增加Concat节点,把三个分支concat成一个分支。类似地,也可以为每一个分支增加对应的节点,比如Slice等等。不知道是不是正确理解了需求?

woshishijeishangshangzuidadwk commented 11 months ago

是的,是这个样子的。是手动添加所有的节点吗?假如要添加Slice,应该怎么填写内容?谢谢

1695544203556 1695544148031

woshishijeishangshangzuidadwk commented 11 months ago

yolov5s_san.zip 这是三输出的onnx

woshishijeishangshangzuidadwk commented 11 months ago

yolov5s.zip 这是单输出的ONNX,我想将三输出的ONNX转换成单输出的ONNX这样

ZhangGe6 commented 11 months ago

参数的填写可以参照 点击Node Properties->type一栏后的?号弹出的信息,或参考ONNX operator的官方文档。 Screenshot_20230924_163617.jpg

添加节点需要逐个添加。

woshishijeishangshangzuidadwk commented 11 months ago

好的 多谢! 我试一试

woshishijeishangshangzuidadwk commented 11 months ago

作者你好,我已经通过add output 添加了输出 ,为什么导出的onnx没有输出呢 1695546421902 1695546404813

ZhangGe6 commented 11 months ago

这听起来像是个老问题…。可否提供一个可复现的模型(最好是这种状态:基于这个模型,对某一个节点点击add output,即可复现问题)?谢谢!

woshishijeishangshangzuidadwk commented 11 months ago

yolov5s.zip 这是模型单输出的onnx,将sigmoid下面的分支全部去掉然后add output三个,但是没有效果

ZhangGe6 commented 11 months ago

yolov5s.zip 这是模型单输出的onnx,将sigmoid下面的分支全部去掉然后add output三个,但是没有效果

@woshishijeishangshangzuidadwk 你好,使用这个模型,我本地无法复现(output可正常添加,导出的ONNX模型中也正常存在添加的output)。请问您是在什么平台,使用的相关Python包版本是什么样的?我本地在Windows下的相关Python包版本如下,供参考

onnx                         1.14.1
onnx-tool                    0.8.1
Flask                        2.2.5
qingzhangq commented 10 months ago

1695541148522 1695541157336 1695541136761

我的onnx模型是单输出应该如何做成三输出

ZhangGe6 commented 10 months ago

@qingzhangq 删除最后一个Concat节点,然后在末尾三个Reshape节点分别点击Add output.