1. 拉取最新版的代码
根据论文中的说明,PGI模块的功能主要是在训练时减少网络信息的丢失,辅助网络训练;而在推理时去除,以免影响模型大小、计算量、推理速度等。有关PGI的说明见此issue: https://github.com/WongKinYiu/yolov9/issues/101,作者最近才添加的重参数化脚本(tools/reparameterization.ipynb
,如果你的YOLOv9代码中没有此文件,那应该是你拉取的代码版本太早了,重新拉取新版本的代码。
2. PGI整体思想
首先参考这张YOLOv9的结构图,对应的网络配置文件为models/detect/yolov9-c.yaml
,此为训练时使用的网络模型。根据论文中PGI模块的设计思想,训练完成之后需要去除辅助分支再进行评估。此时需要使用上述提到的重参数化脚本去除辅助分支,也即去除结构图中的第23-第37层,以及检测头中的cv2、cv3、dfl分支
以得到最终用于推理的模型,对应最终模型的配置文件models/detect/gelan-c.yaml
(个人感觉整个过程的思想更像剪枝,去除模型的臃肿分支而对结果的影响很小)。