YOLOv8 | 添加注意力机制报错KeyError:已解决,详细步骤

2024-03-15 19:36

本文主要是介绍YOLOv8 | 添加注意力机制报错KeyError:已解决,详细步骤,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

添加注意力机制报错

报错的原因

注意事项

解决错误流程

代码分享


⭐欢迎大家订阅我的专栏一起学习⭐

🚀🚀🚀订阅专栏,更新及时查看不迷路🚀🚀🚀
       YOLOv5涨点专栏:http://t.csdnimg.cn/2Ou4D

YOLOv8涨点专栏:http://t.csdnimg.cn/3qYOA

💡魔改网络、复现论文、优化创新💡
 

因为yolov8封装的很好,只需要配置环境,不用看源码就可以直接进行训练,但是这也导致了一些问题,比如添加注意力机制的时候会导致一些keyerror的错误。下面我我们就详细说一下这个错误应该怎么解决。

添加注意力机制报错

以添加GAM注意力机制为例子进行讲解

在添加注意力机制的代码,执行启动命令后

yolo detect train model=yolov8_GAM.yaml

会出现如下报错

Traceback (most recent call last):File "/usr/local/bin/yolo", line 8, in <module>sys.exit(entrypoint())File "/usr/local/lib/python3.8/dist-packages/ultralytics/cfg/__init__.py", line 541, in entrypointmodel = YOLO(model, task=task)File "/usr/local/lib/python3.8/dist-packages/ultralytics/models/yolo/model.py", line 23, in __init__super().__init__(model=model, task=task, verbose=verbose)File "/usr/local/lib/python3.8/dist-packages/ultralytics/engine/model.py", line 140, in __init__self._new(model, task=task, verbose=verbose)File "/usr/local/lib/python3.8/dist-packages/ultralytics/engine/model.py", line 211, in _newself.model = (model or self._smart_load("model"))(cfg_dict, verbose=verbose and RANK == -1)  # build modelFile "/usr/local/lib/python3.8/dist-packages/ultralytics/nn/tasks.py", line 287, in __init__self.model, self.save = parse_model(deepcopy(self.yaml), ch=ch, verbose=verbose)  # model, savelistFile "/usr/local/lib/python3.8/dist-packages/ultralytics/nn/tasks.py", line 837, in parse_modelm = getattr(torch.nn, m[3:]) if "nn." in m else globals()[m]  # get module
KeyError: 'GAM_Attention'

报错的原因

这是因为我们训练的时候就已经配置好了所需要的环境,而在训练的时候运行的代码,就是调用的原来的环境中配置好的代码,因此即使添加注意力机制以后还是会报错。

因此我们要解决这个问题的办法就是重新配置环境。

注意事项

因为涉及到ultralytics的不同版本,因此建议在docker中进行下面的操作,因为在不同的容器中不会改变镜像中的环境。

解决错误流程

建议读一下上面的注意事项。

我们已经找到了错误的原因,解决起来就容易很多

步骤1:卸载之前的环境

 在对应的环境中执行下面的代码

pip uninstall utralytics

 步骤2:重新安装环境

 下载文章末尾的代码,切换到文件夹ultralytics的目录下面

执行命令

pip install . # 你没看错,我没打错,这里就是有一个.

 等待环境安装完成后执行启动命令,发现出现了yolov8的结构,说明环境执行成功,结构内,有你自己修改的模块名称,则表示添加注意力机制成功

注意,以下代码只是添加了GAM注意力机制,如果你需要添加其他的注意力机制还是有可能报错的 。

代码分享

链接: https://pan.baidu.com/s/1pqAJ_JaJqF6nl4cFPm-Png?pwd=puu1 提取码: puu1 

如果你看了教程以后还是不能实现注意力的添加,可以关注我,后续我会持续分享不同的注意力机制代码。

如果你还要其他的需求,请在评论区留言,也欢迎各位小伙伴在留言区讨论

这篇关于YOLOv8 | 添加注意力机制报错KeyError:已解决,详细步骤的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/813044

相关文章

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Window Server2016加入AD域的方法步骤

《WindowServer2016加入AD域的方法步骤》:本文主要介绍WindowServer2016加入AD域的方法步骤,包括配置DNS、检测ping通、更改计算机域、输入账号密码、重启服务... 目录一、 准备条件二、配置ServerB加入ServerA的AD域(test.ly)三、查看加入AD域后的变

Window Server2016 AD域的创建的方法步骤

《WindowServer2016AD域的创建的方法步骤》本文主要介绍了WindowServer2016AD域的创建的方法步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、准备条件二、在ServerA服务器中常见AD域管理器:三、创建AD域,域地址为“test.ly”

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Redis缓存问题与缓存更新机制详解

《Redis缓存问题与缓存更新机制详解》本文主要介绍了缓存问题及其解决方案,包括缓存穿透、缓存击穿、缓存雪崩等问题的成因以及相应的预防和解决方法,同时,还详细探讨了缓存更新机制,包括不同情况下的缓存更... 目录一、缓存问题1.1 缓存穿透1.1.1 问题来源1.1.2 解决方案1.2 缓存击穿1.2.1

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后