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

相关文章

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

IDEA和GIT关于文件中LF和CRLF问题及解决

《IDEA和GIT关于文件中LF和CRLF问题及解决》文章总结:因IDEA默认使用CRLF换行符导致Shell脚本在Linux运行报错,需在编辑器和Git中统一为LF,通过调整Git的core.aut... 目录问题描述问题思考解决过程总结问题描述项目软件安装shell脚本上git仓库管理,但拉取后,上l

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

idea npm install很慢问题及解决(nodejs)

《ideanpminstall很慢问题及解决(nodejs)》npm安装速度慢可通过配置国内镜像源(如淘宝)、清理缓存及切换工具解决,建议设置全局镜像(npmconfigsetregistryht... 目录idea npm install很慢(nodejs)配置国内镜像源清理缓存总结idea npm in

idea突然报错Malformed \uxxxx encoding问题及解决

《idea突然报错Malformeduxxxxencoding问题及解决》Maven项目在切换Git分支时报错,提示project元素为描述符根元素,解决方法:删除Maven仓库中的resolv... 目www.chinasem.cn录问题解决方式总结问题idea 上的 maven China编程项目突然报错,是

在Ubuntu上打不开GitHub的完整解决方法

《在Ubuntu上打不开GitHub的完整解决方法》当你满心欢喜打开Ubuntu准备推送代码时,突然发现终端里的gitpush卡成狗,浏览器里的GitHub页面直接变成Whoathere!警告页面... 目录一、那些年我们遇到的"红色惊叹号"二、三大症状快速诊断症状1:浏览器直接无法访问症状2:终端操作异常

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

mybatis直接执行完整sql及踩坑解决

《mybatis直接执行完整sql及踩坑解决》MyBatis可通过select标签执行动态SQL,DQL用ListLinkedHashMap接收结果,DML用int处理,注意防御SQL注入,优先使用#... 目录myBATiFBNZQs直接执行完整sql及踩坑select语句采用count、insert、u