ZJU-lishuang / yolov5_prune

yolov5 prune,Support V2, V3, V4 and V6 versions of yolov5
Apache License 2.0
556 stars 136 forks source link

fuse操作对导出为onnx的影响 #49

Open HouBiaoLiu opened 3 years ago

HouBiaoLiu commented 3 years ago

执行export_prune_onnx.py 导出onnx时报错,在于attempt_load函数中fuse操作,去掉fuse操作可正常导出,这个fuse操作也将bn层的eps也fuse到卷积中了

ZJU-lishuang commented 3 years ago

可以关闭fuse操作。 这是组合conv和batch加速运算速度的,无其它作用。 实际部署中,部署工具也主要是通过这个来进行加速的。

ZJU-lishuang commented 3 years ago

fuse出错可能是因为网络结构中层的名称不同,导致识别conv和batch失败,不能正确合并conv+batch

HouBiaoLiu commented 3 years ago

我发现 我不fuse 和 fuse 导出的onnx的卷积层的权重是一样的,请问1、bn层 onnx会自动合并吗? 2、bn层的eps参数是由torch传递过去的,还是onnx本身具备的默认值

ZJU-lishuang commented 3 years ago

不会自动合并,这个是计算优化方向的 由torch传过去,onnx只是个转换工具,不会改变值