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

相关文章

JAVA线程的周期及调度机制详解

《JAVA线程的周期及调度机制详解》Java线程的生命周期包括NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED,线程调度依赖操作系统,采用抢占... 目录Java线程的生命周期线程状态转换示例代码JAVA线程调度机制优先级设置示例注意事项JAVA线程

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

SQL Server中行转列方法详细讲解

《SQLServer中行转列方法详细讲解》SQL行转列、列转行可以帮助我们更方便地处理数据,生成需要的报表和结果集,:本文主要介绍SQLServer中行转列方法的相关资料,需要的朋友可以参考下... 目录前言一、为什么需要行转列二、行转列的基本概念三、使用PIVOT运算符进行行转列1.创建示例数据表并插入数

maven异常Invalid bound statement(not found)的问题解决

《maven异常Invalidboundstatement(notfound)的问题解决》本文详细介绍了Maven项目中常见的Invalidboundstatement异常及其解决方案,文中通过... 目录Maven异常:Invalid bound statement (not found) 详解问题描述可

Java中自旋锁与CAS机制的深层关系与区别

《Java中自旋锁与CAS机制的深层关系与区别》CAS算法即比较并替换,是一种实现并发编程时常用到的算法,Java并发包中的很多类都使用了CAS算法,:本文主要介绍Java中自旋锁与CAS机制深层... 目录1. 引言2. 比较并交换 (Compare-and-Swap, CAS) 核心原理2.1 CAS

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里

Spring Boot 集成 mybatis核心机制

《SpringBoot集成mybatis核心机制》这篇文章给大家介绍SpringBoot集成mybatis核心机制,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值... 目录Spring Boot浅析1.依赖管理(Starter POMs)2.自动配置(AutoConfigu

nacos服务无法注册到nacos服务中心问题及解决

《nacos服务无法注册到nacos服务中心问题及解决》本文详细描述了在Linux服务器上使用Tomcat启动Java程序时,服务无法注册到Nacos的排查过程,通过一系列排查步骤,发现问题出在Tom... 目录简介依赖异常情况排查断点调试原因解决NacosRegisterOnWar结果总结简介1、程序在

JAVA SpringBoot集成Jasypt进行加密、解密的详细过程

《JAVASpringBoot集成Jasypt进行加密、解密的详细过程》文章详细介绍了如何在SpringBoot项目中集成Jasypt进行加密和解密,包括Jasypt简介、如何添加依赖、配置加密密钥... 目录Java (SpringBoot) 集成 Jasypt 进行加密、解密 - 详细教程一、Jasyp

Java 操作 MinIO详细步骤

《Java操作MinIO详细步骤》本文详细介绍了如何使用Java操作MinIO,涵盖了从环境准备、核心API详解到实战场景的全过程,文章从基础的桶和对象操作开始,到大文件分片上传、预签名URL生成... 目录Java 操作 MinIO 全指南:从 API 详解到实战场景引言:为什么选择 MinIO?一、环境