AttributeError: Can‘t get attribute ‘SPPF‘

1.环境:训练自己的YOLOv5-5.0模型。

2.报错原因:预训练权重的版本与源码框架不匹配,在下面的网站中找到对应的YOLOv5-5.0的版本:

Releases · ultralytics/yolov5 (github.com)

将5.0下的YOLOv5s.pt拷贝至weights文件夹下,仍然报上述错误,于是将YOLOv5s6.pt拷贝至对应文件夹下,bug消失。

:有一种下载对应预训练权重的方式:修改util/文件夹下google_utils.py文件的对应行为response=requests.get(f'https://api.github.com/repos/{repo}/releases/tags/v5.0').json()

3.根据github官网上的描述,

  • YOLOv5-P5 models (same architecture as v4.0 release): 3 output layers P3, P4, P5 at strides 8, 16, 32, trained at --img 64
  • YOLOv5-P6 models: 4 output layers P3, P4, P5, P6 at strides 8, 16, 32, 64 trained at --img 1280

可知,YOLOv5-P5的网络结构与YOLOv5-4.0的网络结构相似,都是三个输出层,而YOLOv5-P6多了一个输出层,增加了对更大目标的检测效果。

4.另:看到还有一种解决方式就是更改项目源码,即在model/common.py添加SPPF类,个人觉得这种方式像是间接地变成了训练YOLOv5-6.0网络模型,不过也可以解决问题。

5.参考文章

AttributeError: Can't get attribute 'SPPF' · Issue #5175 · ultralytics/yolov5 (github.com)icon-default.png?t=M276https://github.com/ultralytics/yolov5/issues/5175

猜你喜欢

转载自blog.csdn.net/m0_46749624/article/details/124069086
今日推荐