YOLOv8改进:融合Gold-YOLO Neck(RepGDNeck)

2024-03-26 02:10

本文主要是介绍YOLOv8改进:融合Gold-YOLO Neck(RepGDNeck),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 非常重要
  • 讲解视频链接(2024.1.22更新)
  • 前言
  • 一、ultralytics\ultralytics\nn\modules
  • 二、ultralytics\ultralytics\nn
  • 三、ultralytics\cfg\models\v8
  • 四、训练
  • Neck visio
  • 资源下载
  • 参考资料
  • 实验结果(23.11.28更新)


非常重要

由于ulralytics在不断更新,所以下列直接替换可能会导致一系列的错误,所以建议大家在尝试之前先新建一个虚拟环境,然后安装ultralytics 8.0.164版本的,最新版本安装后续会出错。因为咱新建了一个新虚拟环境,所以咱没必要备份,直接跳过备份做下面,但别忘了先引入mmcv库。

讲解视频链接(2024.1.22更新)

基于YOLOV8,从零开始搭建的GOLD-YOLO颈部的一个视频讲解(但是讲解能力有限,可能讲解的并不是太好)
https://space.bilibili.com/368873460/channel/seriesdetail?sid=3921374

前言

备份!备份!备份!!!
替换文件前记得先备份
例如:
在这里插入图片描述


一、ultralytics\ultralytics\nn\modules

在这里插入图片描述
gold_yolo.py复制到ultralytics\ultralytics\nn\modules下,_init_.py进行替换(该备份备份)
复制后的文件夹目录
在这里插入图片描述

from mmcv.cnn import ConvModule, build_norm_layer

由于gold_yolo中存在这一句代码,我们需要引入mmcv库

pip install -U openmim
mim install mmcv

二、ultralytics\ultralytics\nn

tasks.py复制到该ultralytics\ultralytics\nn下
在这里插入图片描述

三、ultralytics\cfg\models\v8

yolov8n_gold_yolo_neck_v2.yaml复制到该ultralytics\cfg\models\v8下
注意:记得先改文件中的nc参数,改为你的数据集的类别
在这里插入图片描述
在这里插入图片描述

四、训练

from ultralytics import YOLOif __name__ == '__main__':model = YOLO('yolov8n_gold_yolo_neck_v2.yaml')results = model.train(data='coco128.yaml', epochs=5, deterministic=False)

deterministic设置为False,不然会报下面的警告

D:\anaconda3\envs\yolov8\lib\site-packages\torch\autograd\__init__.py:200: UserWarning: upsample_bilinear2d_backward_out_cuda does not have a deterministic implementation, but you set 'torch.use_deterministic_algorithms(True, warn_only=True)'. You can file an issue at https://github.com/pytorch/pytorch/issues to help us prioritize adding deterministic support for this operation. (Triggered internally at C:\actions-runner\_work\pytorch\pytorch\builder\windows\pytorch\aten\src\ATen\Context.cpp:75.)Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
D:\anaconda3\envs\yolov8\lib\site-packages\torch\autograd\__init__.py:200: UserWarning: adaptive_avg_pool2d_backward_cuda does not have a deterministic implementation, but you set 'torch.use_deterministic_algorithms(True, warn_only=True)'. You can file an issue at https://github.com/pytorch/pytorch/issues to help us prioritize adding deterministic support for this operation. (Triggered internally at C:\actions-runner\_work\pytorch\pytorch\builder\windows\pytorch\aten\src\ATen\Context.cpp:75.)Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass

意思是upsample_bilinear2d_backward_out_cuda和adaptive_avg_pool2d_backward_cuda都不是采用一个确定性的算法实现对应gold_yolo.py中的nn.functional.adaptive_avg_pool2d和F.interpolate(xxx, size=(H, W), mode='bilinear', align_corners=False)也就是说,结果不可复现,代码每次运行的结果都有所不同,但最终结果是差不多的。

                   from  n    params  module                                       arguments                     0                  -1  1       464  ultralytics.nn.modules.conv.Conv             [3, 16, 3, 2]                 1                  -1  1      4672  ultralytics.nn.modules.conv.Conv             [16, 32, 3, 2]                2                  -1  1      7360  ultralytics.nn.modules.block.C2f             [32, 32, 1, True]             3                  -1  1     18560  ultralytics.nn.modules.conv.Conv             [32, 64, 3, 2]                4                  -1  2     49664  ultralytics.nn.modules.block.C2f             [64, 64, 2, True]             5                  -1  1     73984  ultralytics.nn.modules.conv.Conv             [64, 128, 3, 2]               6                  -1  2    197632  ultralytics.nn.modules.block.C2f             [128, 128, 2, True]           7                  -1  1    295424  ultralytics.nn.modules.conv.Conv             [128, 256, 3, 2]              8                  -1  1    460288  ultralytics.nn.modules.block.C2f             [256, 256, 1, True]           9                  -1  1    164608  ultralytics.nn.modules.block.SPPF            [256, 256, 5]                 10       [2, 4, 6, -1]  1         0  ultralytics.nn.modules.gold_yolo.Low_FAM     []                            11                  -1  1    343296  ultralytics.nn.modules.gold_yolo.Low_IFM     [480, 96, 3, 192]             12                  -1  1         0  ultralytics.nn.modules.gold_yolo.Split       [[128, 64]]                   13                   9  1     33024  ultralytics.nn.modules.gold_yolo.SimConv     [256, 128, 1, 1]              14          [4, 6, -1]  1     57856  ultralytics.nn.modules.gold_yolo.Low_LAF     [128, 128]                    15            [-1, 12]  1     49920  ultralytics.nn.modules.gold_yolo.Inject      [128, 128, 0]                 16                  -1  1    658432  ultralytics.nn.modules.gold_yolo.RepBlock    [128, 128, 4]                 17                  -1  1      8320  ultralytics.nn.modules.gold_yolo.SimConv     [128, 64, 1, 1]               18          [2, 4, -1]  1     14592  ultralytics.nn.modules.gold_yolo.Low_LAF     [64, 64]                      19            [-1, 12]  1     12672  ultralytics.nn.modules.gold_yolo.Inject      [64, 64, 1]                   20                  -1  1    165376  ultralytics.nn.modules.gold_yolo.RepBlock    [64, 64, 4]                   21         [-1, 16, 9]  1         0  ultralytics.nn.modules.gold_yolo.High_FAM    [1, 'torch']                  22                  -1  1    989696  ultralytics.nn.modules.gold_yolo.High_IFM    [2, 448, 8, 4, 1, 2, 0, 0, [0.1, 2]]23                  -1  1    172416  torch.nn.modules.conv.Conv2d                 [448, 384, 1, 1, 0]           24                  -1  1         0  ultralytics.nn.modules.gold_yolo.Split       [[128, 256]]                  25            [20, 17]  1         0  ultralytics.nn.modules.gold_yolo.High_LAF    []                            26            [-1, 24]  1     49920  ultralytics.nn.modules.gold_yolo.Inject      [128, 128, 0]                 27                  -1  1    658432  ultralytics.nn.modules.gold_yolo.RepBlock    [128, 128, 4]                 28            [-1, 13]  1         0  ultralytics.nn.modules.gold_yolo.High_LAF    []                            29            [-1, 24]  1    198144  ultralytics.nn.modules.gold_yolo.Inject      [256, 256, 1]                 30                  -1  1   2627584  ultralytics.nn.modules.gold_yolo.RepBlock    [256, 256, 4]                 31        [20, 27, 30]  1    897664  ultralytics.nn.modules.head.Detect           [80, [64, 128, 256]]          
YOLOv8n_gold_YOLO_neck_v2 summary: 498 layers, 8210000 parameters, 8209984 gradients

Neck visio

这里附上一张Neck部分执行流程图。
在这里插入图片描述
进一步了解Neck部分各个模块可参考: Gold-YOLO RepGDNeck类解析

资源下载

戳这里下载blog中所需资源

参考资料

(1)Gold-YOLO源码
(1)Gold-YOLO论文
(3)YOLO v8源码
(4)ModuleNotFoundError: No module named ‘mmcv‘

实验结果(23.11.28更新)

这里阐明下我自己的实验结果
数据集TT100K_2021数据集(这是一个交通标志数据集,原本有232类交通标志。但是原始交通标志类别数目极不均衡,我只提取了大于等于100个实例数的交通标志,共有45类)
用于对比的模型配置文件YOLOv8n_tt100k_mt100_P2.yaml(解释一下哈:YOLOv8n:采用YOLOv8n做基准,tt100k_mt100:选择大于等于100(more than 100)的实例数的tt100k数据集,P2: 这个其实很简单的,原本的YOLOv8n.yaml不是输出P3/P4/P5嘛,就在上面一层仿照弄一个P2层,最后多输出一个P2,因为tt100k数据集的图片都是2048*2048的,交通标志大都比较小,多输出P2,就是为了得到更大的特征图,保留小目标的特征。
在这里插入图片描述

model cfgbatchimgszprecisionrecallmap50map50-95GPU
YOLOv8n_tt100k_mt100_P2326400.80.70.7840.5982080Ti,11G
YOLOv8n_tt100k_mt100_P2420480.9090.8850.9440.7492080Ti,11G
yolov8n_gold_yolo_neck_v2486400.7570.6260.7140.5472080Ti,11G
yolov8n_gold_yolo_neck_v21620480.9410.9120.9620.766A40,48G

由于显存的原因,这里并没有严格按照单一变量原则来。

这篇关于YOLOv8改进:融合Gold-YOLO Neck(RepGDNeck)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

韦季李输入法_输入法和鼠标的深度融合

在数字化输入的新纪元,传统键盘输入方式正悄然进化。以往,面对实体键盘,我们常需目光游离于屏幕与键盘之间,以确认指尖下的精准位置。而屏幕键盘虽直观可见,却常因占据屏幕空间,迫使我们在操作与视野间做出妥协,频繁调整布局以兼顾输入与界面浏览。 幸而,韦季李输入法的横空出世,彻底颠覆了这一现状。它不仅对输入界面进行了革命性的重构,更巧妙地将鼠标这一传统外设融入其中,开创了一种前所未有的交互体验。 想象

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

[数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2757 标注数量(xml文件个数):2757 标注数量(txt文件个数):2757 标注类别数:4 标注类别名称:["Platelets","RBC","WBC","sickle cell"] 每个类别标注的框数:

AI和新基建赋能智慧工地超融合管理平台解决方案

1. 项目背景与需求 电力行业的工程管理正朝着智慧化发展,但目前仍处于起步阶段。为满足数字化、网络化、智能化的发展需求,需要构建一个高效综合监控平台,实现对电力项目全过程的精益化管控。 2. 综合管理平台的构建 该平台集成了超融合实景监控、安全智能监测、公共安全防范、技术管理、人员管控和绿色施工等多个方面,通过BIM协同优化设计,提升项目质量和进度管理。 3. 安全智能监测的重要性 安全

YOLOv8/v10+DeepSORT多目标车辆跟踪(车辆检测/跟踪/车辆计数/测速/禁停区域/绘制进出线/绘制禁停区域/车道车辆统计)

01:YOLOv8 + DeepSort 车辆跟踪 该项目利用YOLOv8作为目标检测模型,DeepSort用于多目标跟踪。YOLOv8负责从视频帧中检测出车辆的位置,而DeepSort则负责关联这些检测结果,从而实现车辆的持续跟踪。这种组合使得系统能够在视频流中准确地识别并跟随特定车辆。 02:YOLOv8 + DeepSort 车辆跟踪 + 任意绘制进出线 在此基础上增加了用户

YOLOv8改进实战 | 注意力篇 | 引入CVPR2024 PKINet 上下文锚点注意力CAAttention

YOLOv8专栏导航:点击此处跳转 前言 YOLOv8 是由 YOLOv5 的发布者 Ultralytics 发布的最新版本的 YOLO。它可用于对象检测、分割、分类任务以及大型数据集的学习,并且可以在包括 CPU 和 GPU 在内的各种硬件上执行。 YOLOv8 是一种尖端的、最先进的 (SOTA) 模型,它建立在以前成功的 YOLO 版本的基础上,并引入了新的功能和改进,以

[数据集][目标检测]智慧农业草莓叶子病虫害检测数据集VOC+YOLO格式4040张9类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4040 标注数量(xml文件个数):4040 标注数量(txt文件个数):4040 标注类别数:9 标注类别名称:["acalcerosis","fertilizer","flower","fruit","grey

Banana Pi BPI-F3 进迭时空RISC-V架构下,AI融合算力及其软件栈实践

RISC-V架构下,AI融合算力及其软件栈实践 面对未来大模型(LLM)、AIGC等智能化浪潮的挑战,进迭时空在RISC-V方向全面布局,通过精心设计的RISC-V DSA架构以及软硬一体的优化策略,将全力为未来打造高效且易用的AI算力解决方案。目前,进迭时空已经取得了显著的进展,成功推出了第一个版本的智算核(带AI融合算力的智算CPU)以及配套的AI软件栈。 软件栈简介 AI算法部署旨

【YOLO 系列】基于YOLOV8的智能花卉分类检测系统【python源码+Pyqt5界面+数据集+训练代码】

前言: 花朵作为自然界中的重要组成部分,不仅在生态学上具有重要意义,也在园艺、农业以及艺术领域中占有一席之地。随着图像识别技术的发展,自动化的花朵分类对于植物研究、生物多样性保护以及园艺爱好者来说变得越发重要。为了提高花朵分类的效率和准确性,我们启动了基于YOLO V8的花朵分类智能识别系统项目。该项目利用深度学习技术,通过分析花朵图像,自动识别并分类不同种类的花朵,为用户提供一个高效的花朵识别