【保姆级教程|YOLOv8改进】【6】快速涨点,SPD-Conv助力低分辨率与小目标检测

本文主要是介绍【保姆级教程|YOLOv8改进】【6】快速涨点,SPD-Conv助力低分辨率与小目标检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《博主简介》

小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。
更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~
👍感谢小伙伴们点赞、关注!

《------往期经典推荐------》

一、AI应用软件开发实战专栏【链接】

项目名称项目名称
1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】
3.【手势识别系统开发】4.【人脸面部活体检测系统开发】
5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】
7.【YOLOv8多目标识别与自动标注软件开发】8.【基于YOLOv8深度学习的行人跌倒检测系统】
9.【基于YOLOv8深度学习的PCB板缺陷检测系统】10.【基于YOLOv8深度学习的生活垃圾分类目标检测系统】
11.【基于YOLOv8深度学习的安全帽目标检测系统】12.【基于YOLOv8深度学习的120种犬类检测与识别系统】
13.【基于YOLOv8深度学习的路面坑洞检测系统】14.【基于YOLOv8深度学习的火焰烟雾检测系统】
15.【基于YOLOv8深度学习的钢材表面缺陷检测系统】16.【基于YOLOv8深度学习的舰船目标分类检测系统】
17.【基于YOLOv8深度学习的西红柿成熟度检测系统】18.【基于YOLOv8深度学习的血细胞检测与计数系统】
19.【基于YOLOv8深度学习的吸烟/抽烟行为检测系统】20.【基于YOLOv8深度学习的水稻害虫检测与识别系统】
21.【基于YOLOv8深度学习的高精度车辆行人检测与计数系统】22.【基于YOLOv8深度学习的路面标志线检测与识别系统】
23.【基于YOLOv8深度学习的智能小麦害虫检测识别系统】24.【基于YOLOv8深度学习的智能玉米害虫检测识别系统】
25.【基于YOLOv8深度学习的200种鸟类智能检测与识别系统】26.【基于YOLOv8深度学习的45种交通标志智能检测与识别系统】
27.【基于YOLOv8深度学习的人脸面部表情识别系统】28.【基于YOLOv8深度学习的苹果叶片病害智能诊断系统】
29.【基于YOLOv8深度学习的智能肺炎诊断系统】30.【基于YOLOv8深度学习的葡萄簇目标检测系统】
31.【基于YOLOv8深度学习的100种中草药智能识别系统】32.【基于YOLOv8深度学习的102种花卉智能识别系统】
33.【基于YOLOv8深度学习的100种蝴蝶智能识别系统】34.【基于YOLOv8深度学习的水稻叶片病害智能诊断系统】
35.【基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统】

二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】持续更新中~~

《------正文------》

前言

论文发表时间:2022.08.07

github地址:https://github.com/LabSAINT/SPD-Conv
paper地址:https://arxiv.org/pdf/2208.03641v1.pdf

在这里插入图片描述

文章提出了一个新的CNN构建模块称为SPD-Conv,用来替换每个步长卷转层和每个池化层(从而完全消除它们)。SPD-Conv由一个空间到深度(SPD)层和一个非步长卷积(Conv)层组成。本文详细介绍了如何在yolov8中引入SPD-Conv,助力助力低分辨率与小目标检测,并且使用修改后的yolov8进行目标检测训练与推理本文提供了所有源码免费供小伙伴们学习参考,需要的可以通过文末方式自行下载。

本文改进使用的ultralytics版本为:ultralytics == 8.0.227

目录

  • 前言
  • 1.SPD-Conv简介
    • 1.1 网络结构
    • 1.2 性能对比
  • 2.YOLOv8添加SPD-Conv
    • YOLOv8网络结构前后对比
    • 定义FasterNet相关类
    • 修改指定文件
  • 3.加载配置文件并训练
  • 4.模型推理
  • 【源码免费获取】
  • 结束语

1.SPD-Conv简介

在这里插入图片描述

摘要:卷积神经网络(CNN)在许多计算机视觉任务中取得了显著的成功,例如图像分类和目标检测。然而,它们的性能在图像分辨率低或对象较小的更艰难任务中会急剧下降。在本文中,我们指出这一问题源于现有CNN架构中一个有缺陷但常见的设计,即使用步长卷积和/或池化层,这导致了细微信息的丢失和较少有效特征表示的学习。为此,我们提出了一个新的CNN构建模块称为SPD-Conv,用来替换每个步长卷转层和每个池化层(从而完全消除它们)。SPD-Conv由一个空间到深度(SPD)层和一个非步长卷积(Conv)层组成,可以应用于大部分(如果不是全部的话)CNN架构。我们在两个最有代表性的计算机视觉任务下解释了这种新设计:目标检测和图像分类。然后,我们通过将SPD-Conv应用于YOLOv5和ResNet创建了新的CNN架构,并通过实验证明,我们的方法显著优于最先进的深度学习模型,尤其是在图像分辨率低和对象较小的更艰难任务上。

论文主要亮点如下:

  • 我们发现了现有CNN架构中一个有缺陷但常见的设计,并提出了一种新的构建模块,称为SPD-Conv,以取代旧的设计。SPD-Conv在不丢失可学习信息的情况下下采样特征图,彻底抛弃了如今广泛使用的带步长的卷积和池化操作。
  • SPD-Conv代表一种通用且统一的方法,可以很容易地应用于大部分(如果不是全部的话)基于深度学习的计算机视觉任务。
  • 使用两个最具代表性的计算机视觉任务,目标检测和图像分类,来评估SPD-Conv的性能。具体来说,我们构建了YOLOv5-SPD、ResNet18-SPD和ResNet50-SPD,并在COCO-2017、Tiny ImageNet和CIFAR-10数据集上与几种最先进的深度学习模型进行了比较。结果显示在AP和top-1精度上都有显著的性能提升,特别是在小物体和低分辨率图像上。

1.1 网络结构

在这里插入图片描述

1.2 性能对比

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.YOLOv8添加SPD-Conv

YOLOv8网络结构前后对比

在这里插入图片描述

定义FasterNet相关类

ultralytics/nn/modules/block.py中添加如下代码块,为space_to_depth模块代码:
在这里插入图片描述

并在ultralytics/nn/modules/block.py中最上方添加如下代码:
在这里插入图片描述

修改指定文件

ultralytics/nn/modules/__init__.py文件中的添加如下代码:
在这里插入图片描述

ultralytics/nn/tasks.py 上方导入相应类名,并在parse_model解析函数中添加如下代码:
在这里插入图片描述

       elif m is space_to_depth:c2 = 4 * ch[f]

在这里插入图片描述

ultralytics/cfg/models/v8文件夹下新建yolov8-FasterNet.yaml文件,内容如下:

# 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, 1]]  # 0-P1/2- [-1, 1, Conv, [128, 3, 1]]  # 1-P2/4- [-1, 1, space_to_depth, [1]]  # 2 -P2/4- [-1, 3, C2f, [128, True]]- [-1, 1, Conv, [256, 3, 1]]  # 4-P3/8- [-1, 1, space_to_depth, [1]]- [-1, 6, C2f, [256, True]]- [-1, 1, Conv, [512, 3, 1]]  # 7-P4/16- [-1, 1, space_to_depth, [1]]- [-1, 6, C2f, [512, True]]- [-1, 1, Conv, [1024, 3, 1]]  # 10-P5/32- [-1, 1, space_to_depth, [1]]- [-1, 3, C2f, [1024, True]]- [-1, 1, SPPF, [1024, 5]]  # 13# YOLOv8.0n head
head:- [-1, 1, nn.Upsample, [None, 2, 'nearest']]- [[-1, 8], 1, Concat, [1]]  # cat backbone P4- [-1, 3, C2f, [512]]  # 16- [-1, 1, nn.Upsample, [None, 2, 'nearest']]- [[-1, 5], 1, Concat, [1]]  # cat backbone P3- [-1, 3, C2f, [256]]  # 19 (P3/8-small)- [-1, 1, Conv, [256, 3, 1]]- [-1, 1, space_to_depth, [1]]- [[-1, 16], 1, Concat, [1]]  # cat head P4- [-1, 3, C2f, [512]]  # 23 (P4/16-medium)- [-1, 1, Conv, [512, 3, 1]]- [-1, 1, space_to_depth, [1]]- [[-1, 13], 1, Concat, [1]]  # cat head P5- [-1, 3, C2f, [1024]]  # 27 (P5/32-large)- [ [ 19, 23, 27 ], 1, Detect, [ nc ] ]  # Detect(P3, P4, P5)

3.加载配置文件并训练

加载yolov8-BiLevelRoutingAttention.yaml配置文件,并运行train.py训练代码:

#coding:utf-8
from ultralytics import YOLOif __name__ == '__main__':model = YOLO('ultralytics/cfg/models/v8/yolov8-SPD-Conv.yaml')model.load('yolov8n.pt') # loading pretrain weightsmodel.train(data='datasets/TomatoData/data.yaml', epochs=50, batch=4)

注意观察,打印出的网络结构是否正常修改,如下图所示:
在这里插入图片描述

4.模型推理

模型训练完成后,我们使用训练好的模型对图片进行检测:

#coding:utf-8
from ultralytics import YOLO
import cv2# 所需加载的模型目录
# path = 'models/best2.pt'
path = 'runs/detect/train/weights/best.pt'
# 需要检测的图片地址
img_path = "TestFiles/Riped tomato_8.jpeg"# 加载预训练模型
# conf	0.25	object confidence threshold for detection
# iou	0.7	intersection over union (IoU) threshold for NMS
model = YOLO(path, task='detect')# 检测图片
results = model(img_path)
res = results[0].plot()
# res = cv2.resize(res,dsize=None,fx=2,fy=2,interpolation=cv2.INTER_LINEAR)
cv2.imshow("YOLOv8 Detection", res)
cv2.waitKey(0)

在这里插入图片描述

【源码免费获取】

为了小伙伴们能够,更好的学习实践,本文已将所有代码、示例数据集、论文等相关内容打包上传,供小伙伴们学习。获取方式如下:

关注下方名片G-Z-H:【阿旭算法与机器学习】,发送【yolov8改进】即可免费获取

在这里插入图片描述


结束语

关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

觉得不错的小伙伴,感谢点赞、关注加收藏哦!

这篇关于【保姆级教程|YOLOv8改进】【6】快速涨点,SPD-Conv助力低分辨率与小目标检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

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

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

客户案例:安全海外中继助力知名家电企业化解海外通邮困境

1、客户背景 广东格兰仕集团有限公司(以下简称“格兰仕”),成立于1978年,是中国家电行业的领军企业之一。作为全球最大的微波炉生产基地,格兰仕拥有多项国际领先的家电制造技术,连续多年位列中国家电出口前列。格兰仕不仅注重业务的全球拓展,更重视业务流程的高效与顺畅,以确保在国际舞台上的竞争力。 2、需求痛点 随着格兰仕全球化战略的深入实施,其海外业务快速增长,电子邮件成为了关键的沟通工具。

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

hdu 4565 推倒公式+矩阵快速幂

题意 求下式的值: Sn=⌈ (a+b√)n⌉%m S_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m 其中: 0<a,m<215 0< a, m < 2^{15} 0<b,n<231 0 < b, n < 2^{31} (a−1)2<b<a2 (a-1)^2< b < a^2 解析 令: An=(a+b√)n A_n = (a +

v0.dev快速开发

探索v0.dev:次世代开发者之利器 今之技艺日新月异,开发者之工具亦随之进步不辍。v0.dev者,新兴之开发者利器也,迅速引起众多开发者之瞩目。本文将引汝探究v0.dev之基本功能与优势,助汝速速上手,提升开发之效率。 何谓v0.dev? v0.dev者,现代化之开发者工具也,旨在简化并加速软件开发之过程。其集多种功能于一体,助开发者高效编写、测试及部署代码。无论汝为前端开发者、后端开发者