Yolov8改进交流

YOLO v8改进

YOLOv8的改进,我接触的主要分为网络改进和代码改进,网络改进就是以注意力、主干为主,代码改进就是类似于Iou,类别权重等修改。
以下是yolov8的原始模型。

# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv8 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect# Parameters
nc: 80  # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov8n.yaml' will call yolov8.yaml with scale 'n'# [depth, width, max_channels]n: [0.33, 0.25, 1024]  # YOLOv8n summary: 225 layers,  3157200 parameters,  3157184 gradients,   8.9 GFLOPss: [0.33, 0.50, 1024]  # YOLOv8s summary: 225 layers, 11166560 parameters, 11166544 gradients,  28.8 GFLOPsm: [0.67, 0.75, 768]   # YOLOv8m summary: 295 layers, 25902640 parameters, 25902624 gradients,  79.3 GFLOPsl: [1.00, 1.00, 512]   # YOLOv8l summary: 365 layers, 43691520 parameters, 43691504 gradients, 165.7 GFLOPsx: [1.00, 1.25, 512]   # YOLOv8x summary: 365 layers, 68229648 parameters, 68229632 gradients, 258.5 GFLOPs# YOLOv8.0n backbone
backbone:# [from, repeats, module, args]- [-1, 1, Conv, [64, 3, 2]]  # 0-P1/2- [-1, 1, Conv, [128, 3, 2]]  # 1-P2/4- [-1, 3, C2f, [128, True]]- [-1, 1, Conv, [256, 3, 2]]  # 3-P3/8- [-1, 6, C2f, [256, True]]- [-1, 1, Conv, [512, 3, 2]]  # 5-P4/16- [-1, 6, C2f, [512, True]]- [-1, 1, Conv, [1024, 3, 2]]  # 7-P5/32- [-1, 3, C2f, [1024, True]]- [-1, 1, SPPF, [1024, 5]]  # 9# YOLOv8.0n head
head:- [-1, 1, nn.Upsample, [None, 2, 'nearest']]- [[-1, 6], 1, Concat, [1]]  # cat backbone P4- [-1, 3, C2f, [512]]  # 12- [-1, 1, nn.Upsample, [None, 2, 'nearest']]- [[-1, 4], 1, Concat, [1]]  # cat backbone P3- [-1, 3, C2f, [256]]  # 15 (P3/8-small)- [-1, 1, Conv, [256, 3, 2]]- [[-1, 12], 1, Concat, [1]]  # cat head P4- [-1, 3, C2f, [512]]  # 18 (P4/16-medium)- [-1, 1, Conv, [512, 3, 2]]- [[-1, 9], 1, Concat, [1]]  # cat head P5- [-1, 3, C2f, [1024]]  # 21 (P5/32-large)- [[15, 18, 21], 1, Detect, [nc]]  # Detect(P3, P4, P5)

注意力机制改进

在改进过程中,要注意网络中是C2f还是C3卷积层。不能拿带有C3的卷积层和YOLOv8原始模型比较,因为yolov8原始模型是C2f。
而且yolov5添加注意力机制的通道数和yolov8的添加注意力机制的通道数好像不太一样,注意修改。

注意力机制改进一般都是在自己需要的地方进行插入,并将对应的模块载入即可。
以NAM注意力机制为例,
NAM注意力机制改进
在head最后一层加入一行,同时在整个yaml文件中修改21->22,因为我们多添加了一层。
同时在nn/models/conv.py文件夹中载入NAMAttention类,在__init__.py中声明。在task.py文件中调用,并导入即可。

主干改进

主要就是改进backbone里面的一些模块,具体修改看个人而定。


错误修改

1、key error

这是最常见的错误,可能由于ultralytics在虚拟环境和本地的包冲突,导致在ultralytics下面的包进行修改无效,还是找不到修改后的模块,导致key error
然后,又发现一个比较头疼的问题,上一次改完还能用,换个新模块就会key error,重新执行一下方法2中的两句代码即可

方法1:将nn/models这个文件夹复制到/path/.conda/envs/yolov8/lib/python3.8/site-packages/ultralytics/nn下
方法2:卸载ultralytics这个包。执行以下命令:

pip unstall ultralytics
python setup.py install

setup.py文件在8.1版本的yolov8中没有,需要自己创建(这个代码是我在yolov8的网页中找到的)

import re
from pathlib import Path
import pkg_resources as pkg
from setuptools import find_packages, setup
# Settings
FILE = Path(__file__).resolve()
ROOT = FILE.parent  # root directory
README = (ROOT / "README.md").read_text(encoding="utf-8")
REQUIREMENTS = [f'{x.name}{x.specifier}' for x in pkg.parse_requirements((ROOT / 'requirements.txt').read_text())]
def get_version():file = ROOT / 'ultralytics/__init__.py'return re.search(r'^__version__ = [\'"]([^\'"]*)[\'"]', file.read_text(), re.M)[1]
setup(name="ultralytics",  # name of pypi packageversion=get_version(),  # version of pypi packagepython_requires=">=3.7.0",license='GPL-3.0',description='Ultralytics YOLOv8 and HUB',long_description=README,long_description_content_type="text/markdown",# url="https://github.com/ultralytics/ultralytics",url="https://github.com/ultralytics/ultralytics",project_urls={'Bug Reports': 'https://github.com/ultralytics/ultralytics/issues','Funding': 'https://ultralytics.com','Source': 'https://github.com/ultralytics/ultralytics',},author="Ultralytics",author_email='hello@ultralytics.com',packages=find_packages(),  # requiredinclude_package_data=True,install_requires=REQUIREMENTS,extras_require={'dev': ['check-manifest'],'test': ['pytest', 'pytest-cov', 'coverage'],},classifiers=["Intended Audience :: Developers", "Intended Audience :: Science/Research","License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Programming Language :: Python :: 3","Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10","Topic :: Software Development", "Topic :: Scientific/Engineering","Topic :: Scientific/Engineering :: Artificial Intelligence","Topic :: Scientific/Engineering :: Image Recognition", "Operating System :: POSIX :: Linux","Operating System :: MacOS", "Operating System :: Microsoft :: Windows"],keywords="machine-learning, deep-learning, vision, ML, DL, AI, YOLO, YOLOv3, YOLOv5, YOLOv8, HUB, Ultralytics")

可能会需要安装其他的包,因为ultralytics将其他的依赖集成了,卸载ultralytics可能需要下载其他外部包。
requirements.txt(忘了从谁那里找的了,反正能用,博主看到以后私聊我一下,我在这里声明一下你的名字)

# Ultralytics requirements
# Example: pip install -r requirements.txt# Base ----------------------------------------
matplotlib>=3.3.0
numpy>=1.22.2 # pinned by Snyk to avoid a vulnerability
opencv-python>=4.6.0
pillow>=7.1.2
pyyaml>=5.3.1
requests>=2.23.0
scipy>=1.4.1
torch>=1.8.0
torchvision>=0.9.0
tqdm>=4.64.0# Logging -------------------------------------
# tensorboard>=2.13.0
# dvclive>=2.12.0
# clearml
# comet# Plotting ------------------------------------
pandas>=1.1.4
seaborn>=0.11.0# Export --------------------------------------
# coremltools>=7.0  # CoreML export
# onnx>=1.12.0  # ONNX export
# onnxsim>=0.4.1  # ONNX simplifier
# nvidia-pyindex  # TensorRT export
# nvidia-tensorrt  # TensorRT export
# scikit-learn==0.19.2  # CoreML quantization
# tensorflow>=2.4.1,<=2.13.1  # TF exports (-cpu, -aarch64, -macos)
# tflite-support
# tensorflowjs>=3.9.0  # TF.js export
# openvino-dev>=2023.0  # OpenVINO export# Extras --------------------------------------
psutil  # system utilization
py-cpuinfo  # display CPU info
thop>=0.1.1  # FLOPs computation
# ipython  # interactive notebook
# albumentations>=1.0.3  # training augmentations
# pycocotools>=2.0.6  # COCO mAP
# roboflow

安装这个文件即可。

方法3::在创建虚拟环境时就直接不安装ultralytics包,转而安装需要的其他包,安装上述的requirements.txt文件。
在train.py中,最上面加入以下两行代码:

import sys
sys.path.append('/你的绝对路径/ultralytics') #这个ultralytics是第一层ultralytics

反正看哪个能用用哪个。实在不行结合着用,我的就是掺着用的,已经解决问题了。

2、no module named ultralytics

这个问题和上面那个问题一样。如果你不修改yolov8,直接pip install ultralytics 就可以了。修改,那就按照第一个问题解决就行。

3、尺度不匹配问题,这个错误细节我忘了叫啥名了,反正你看到就能认出来

这个尺度不匹配最暴力的方法就是修改尺度。
比如你的报错信息中,提示新添加的一层网络是256 to 1024,直接将1024改成256就行。(当然这是对一般的注意力机制来说是管用的,对其他的,还是老老实实计算输入输出吧)


本文记录本人学习中的问题,大家可以一起交流,有问题可以指出,我看到了会修改的。

转载本文记得声明一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/512885.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

循环队列:一道使数据结构萌新知道什么是“愁滋味“的题目

这破题目肝了我一天半才搞明白,也正是因为这道题目,我才豁然明白了李煜所说的"剪不断,理还乱...别是一般滋味在心头"到底是什么"滋味".在完全搞明白之前,真的是放有放不下,理也理不清... 但是理解之后你会发现,嘛い---,也就那么个回事嘛O(∩_∩)O 目录 1…

CAN总线中隐性与显性问题

初学CAN总线时&#xff0c;对于CAN总线中的隐性为逻辑“1”&#xff0c;显性为逻辑“0”的疑惑一直令人困扰。在工控应用中&#xff0c;我们通常将有电压信号称为逻辑“1”&#xff0c;没有电压信号称为逻辑“0”&#xff0c;这与CAN总线的定义看起来不太一致。下面对这个问题进…

第1章:绪论 1.1数据库系统概述

文章目录 1.1 数据库系统概述1.1.1 数据库的4个基本概念1.1.2 数据管理技术的产生和发展1.1.3 数据库系统的特点 1.1 数据库系统概述 1.1.1 数据库的4个基本概念 数据(Data) 是数据库中存储的基本对象 数据的定义&#xff1a;描述事物的符号记录 数据的种类&#xff1a;文本、…

RabbitMQ(控制台模拟收发消息与数据隔离)

1.RabbitMQ架构图 publisher&#xff1a;生产者&#xff0c;也就是发送消息的一方 consumer&#xff1a;消费者&#xff0c;也就是消费消息的一方 queue&#xff1a;队列&#xff0c;存储消息。生产者投递的消息会暂存在消息队列中&#xff0c;等待消费者处理 exchange&…

基于java的宠物常规护理知识管理系统

项目源码&#xff1a;https://gitee.com/oklongmm/biye2 在设计一个宠物常规护理知识管理系统时&#xff0c;我们需要考虑系统的可扩展性&#xff0c;易用性和稳定性。以下是系统设计的功能模块&#xff1a; 一、用户模块&#xff1a; 1. 注册与登录&#xff1a;用户可以通过…

【面试题】webpack的五大核心、构建流程、性能优化

【面试题】webpack的五大核心、webpack的构建流程、webpack的性能优化 webpack是什么?webpack的五大核心webpack的构建流程webpack性能优化 webpack是什么? js静态模块打包工具。 功能 将多个文件打包成更小的文件&#xff0c;(压缩)翻译 babal-loader es6进行降级兼容。 …

HarmonyOS—开启AOT编译模式

AOT&#xff08;Ahead Of Time&#xff09;即提前编译&#xff0c;能够在Host端&#xff08;即运行DevEco Studio的电脑&#xff09;将字节码提前编译成Target端&#xff08;即运行应用的设备&#xff09;可运行的机器码&#xff0c;这样字节码可以获得充分编译优化&#xff0c…

Geeker Admin添加若以分离版本的后台作为后台

添加验证码 下载若依赖前后端分离版本&#xff0c;配置好自己数据库&#xff0c;redis连接地址 登录添加验证码 配置自己的若依后端连接地址 添加验证码请求方法 登录页面登录输入框添加验证码&#xff0c;uuid,调用的验证码刷新方法 注意&#xff1a;这里要用响应式定义验证…

CTP-API开发系列之各版本更新说明(持续更新)(值得收藏)

CTP-API开发系列之各版本更新说明&#xff08;持续更新&#xff09;&#xff08;值得收藏&#xff09; CTP-API开发系列之各版本更新说明&#xff08;持续更新&#xff09;&#xff08;值得收藏&#xff09;v6.7.2v6.7.1v6.7.0&#xff08;推荐&#xff0c;主用&#xff09;v6.…

Crossover24版现已上线!附免费升级攻略 Crossover软件下载使用方法

好久不见啦&#xff0c;最近一直在忙着研究Mac玩游戏&#xff0c;什么幻兽帕鲁、女神异闻录之类的&#xff0c;有些沉迷了&#xff0c;实在对不住大家… 不过今天还是给大家带来了好消息&#xff01;那就是让Mac玩游戏不再是笑话的神器&#xff0c;CodeWeavers公司正式发布了C…

禅道:提bug、管理case 7.0

一、禅道的介绍 &#xff08;1&#xff09;定义禅道是一个项目管理工具&#xff0c;也是一个bug管理工具&#xff0c;还是一个用例管理工具。 &#xff08;2&#xff09;作用&#xff1a;为了解决众多企业在管理中出现混乱&#xff0c;无序的现象&#xff0c;开发出来 &…