Yolov5添加SKNet注意力机报错

Yolov5采用yolov5m-6.0版本,在SPPF前添加一个视觉注意力sknet,报错如下。已修改common.py,yolo.py和yolov5m.yaml文件。为什么会报这个错,该怎么修改呢

img

img

从报错信息来看,可能有以下几个原因:

  1. SKNet模块的参数初始化有问题。SKNet模块需要初始化一些参数,如果初始化错误会导致报错。可以 double check SKNet的参数初始化。
  2. SKNet模块的forward函数实现有问题。forward函数实现不正确也会导致报错。可以检查SKNet的forward函数实现是否正确。
  3. SKNet模块的输出 не匹配Yolov5的输入格式。Yolov5的输入是一个list,每个元素是一层的输出,SKNet的输出如果不在list中,也会导致报错。可以将SKNet的输出放在list中,作为Yolov5的输入。
  4. SKNet模块和Yolov5的其它部分连接不正确。除了forward函数,还需要正确连接SKNet模块和Yolov5的输入、输出。如果连接不正确也会导致报错。
  5. 有其他实现错误。也有可能是其他实现细节导致的报错,需要仔细检查代码。
    总之,添加第三方模块到Yolov5,需要确保:
  6. 模块参数初始化正确
  7. forward函数实现正确
  8. 输入输出格式匹配Yolov5
  9. 与Yolov5其他部分连接正确
  10. 无其他实现错误
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: 使用自己数据集训练yolov5-6.0中的 3.运行val.py脚本 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    1)修改val.py的读取数据配置文件和权重文件,如下:

     2)这里还需要修改模型文件,因为yolov5使用coco数据集训练模型,其种类有80种,而我的只有2种,因此需要找到相应的模型文件进行修改。(如果疑惑为什么train.py不用修改,而val.py需要修改:主要原因是在train.py中就修改了模型的配置文件,不信你往上翻,会找到yolov5s_my.yaml。而val.py脚本内没有导入模型配置文件,因此需要在原模型上修改)

    3)上述步骤完成后,就可以运行val.py脚本了。如果运行不了,就是上述步骤修改出错了,多检查一下。上述工作完成后,即可运行val.py文件,生成的结果保存在runs/val/exp(i)中

  • 以下回答来自chatgpt:

    由于问题描述比较简略,无法确定具体错误信息和代码实现,因此无法确定错误原因和解决方案。建议检查修改代码是否符合SKNet注意力机的使用要求,并参考SKNet的官方文档和示例代码进行修改。如果还存在问题,可以尝试在相关论坛或社区中进行求助,或者联系Yolov5的官方支持团队进行咨询。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^