python基于融合spd-conv改进yolov5与原生yolov5模型实践路面裂痕裂缝检测

Together_CZ Together_CZ     2023-04-13     461

关键词:

SPD-Conv源于2022年一篇专门针对于小目标和低分辨率图像研究提出来的新技术,可以用于目标检测任务,能够一定程度提升模型的检测效果,今天正好有时间就想基于SPD融合yolov5s模型来开发路面裂痕裂缝检测模型,同时与原生的yolov5s模型进行对比分析,首先看下效果图。

接下来看下数据情况。

标注文件如下:

原生yolov5s模型文件如下:

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license

# Parameters
nc: 1  # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple
anchors:
  - [10,13, 16,30, 33,23]  # P3/8
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32

# YOLOv5 v6.0 backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2
   [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4
   [-1, 3, C3, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
   [-1, 6, C3, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 9, C3, [512]],
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 3, C3, [1024]],
   [-1, 1, SPPF, [1024, 5]],  # 9
  ]

# YOLOv5 v6.0 head
head:
  [[-1, 1, Conv, [512, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 1, Concat, [1]],  # cat backbone P4
   [-1, 3, C3, [512, False]],  # 13

   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],  # cat backbone P3
   [-1, 3, C3, [256, False]],  # 17 (P3/8-small)

   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 14], 1, Concat, [1]],  # cat head P4
   [-1, 3, C3, [512, False]],  # 20 (P4/16-medium)

   [-1, 1, Conv, [512, 3, 2]],
   [[-1, 10], 1, Concat, [1]],  # cat head P5
   [-1, 3, C3, [1024, False]],  # 23 (P5/32-large)

   [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
  ]

融合 SPD-Conv模型文件如下:

# Parameters
nc: 1  # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple
anchors:
  - [10,13, 16,30, 33,23]  # P3/8
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32


backbone:
  [[-1, 1, Focus, [64, 3]],     # 0-P1/2
   [-1, 1, Conv, [128, 3, 1]],  # 1
   [-1,1,space_to_depth,[1]],   # 2 -P2/4
   [-1, 3, C3, [128]],          # 3
   [-1, 1, Conv, [256, 3, 1]],  # 4
   [-1,1,space_to_depth,[1]],   # 5 -P3/8
   [-1, 6, C3, [256]],          # 6
   [-1, 1, Conv, [512, 3, 1]],  # 7-P4/16
   [-1,1,space_to_depth,[1]],   # 8 -P4/16
   [-1, 9, C3, [512]],          # 9
   [-1, 1, Conv, [1024, 3, 1]], # 10-P5/32
   [-1,1,space_to_depth,[1]],   # 11 -P5/32
   [-1, 3, C3, [1024]],         # 12
   [-1, 1, SPPF, [1024, 5]],    # 13
  ]


head:
  [[-1, 1, Conv, [512, 1, 1]],                    # 14
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],    # 15
   [[-1, 9], 1, Concat, [1]],                     # 16
   [-1, 3, C3, [512, False]],                     # 17
   [-1, 1, Conv, [256, 1, 1]],                    # 18
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],    # 19
   [[-1, 6], 1, Concat, [1]],                     # 20
   [-1, 3, C3, [256, False]],                     # 21
   [-1, 1, Conv, [256, 3, 1]],                    # 22
   [-1,1,space_to_depth,[1]],                     # 23
   [[-1, 18], 1, Concat, [1]],                    # 24
   [-1, 3, C3, [512, False]],                     # 25
   [-1, 1, Conv, [512, 3, 1]],                    # 26
   [-1,1,space_to_depth,[1]],                     # 27
   [[-1, 14], 1, Concat, [1]],                    # 28
   [-1, 3, C3, [1024, False]],                    # 29
   [[21, 25, 29], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
  ]

默认在相同的数据配置下,均执行100次epoch的迭代计算,接下来看下模型的实际表现。

yolov5s结果输出:

spd结果输出:

从训练结果输出上面来看:spd的结果要优于原生的YOLOv5s模型的,在训练时间上直观来看spd的训练时长达到了yolov5s的两倍,实际则不然,因为训练原生yolov5s的时候是独占显卡的,但是训练yolov5s-spd模型的时候因为有其他的模型训练在并行进行,所以时长消耗被拉长了。

接下来看下结果详情对比。

混淆矩阵:

F1值曲线:

PR曲线:

综合对比可以看到:SPD模型都是要优于原生模型的。

LABEL可视化:

batch计算实例如下:

最终基于专门的界面实现可视化推理,样例如下:

简单实践记录一下,关于spd的介绍在我之前的文章中有详细的介绍,本文主要是以应用为主就没有再赘述了。

芒果改进yolov7系列:首发改进特征融合网络bifpn结构,融合更多有效特征

查看详情

改进yolov7-tiny系列:首发改进结合bifpn结构的特征融合网络,网络融合更多有效特征,高效涨点

查看详情

yolov8改进策略:internimage与yolov8深度融合,动态卷积dcnv3大显神威

文章目录摘要“书生2.5”的应用1.图像模态任务性能2.图文跨模态任务性能核心技术改进方法结果对比摘要他来了!他来了!他带着氩弧焊的光芒过来了!作为CV的大模型,InternImage的光芒太强了。2023年3月14日: 查看详情

芒果改进yolov7系列:全网首发最新mobilevitv3系列最强改进版本|轻量化transformer视觉转换器,简单有效地融合了本地全局和输入特征,高效涨点

查看详情

yoloair,一个基于pytorch的yolo工具箱...

点击机器学习算法与Python学习,选择加星标精彩内容不迷路机器之心编辑部YOLOAir算法代码库是一个基于PyTorch的YOLO系列目标检测开源工具箱。使用统一模型代码框架、统一应用方式、统一调参,该库包含大量的改进模块&#... 查看详情

目标检测tph-yolov5:基于transformer的改进yolov5的无人机目标检测(代码片段)

简介最近在使用VisDrone作为目标检测任务的数据集,看到了这个TPH-YOLOv5这个模型在VisDrone2021testset-challenge数据集上的检测效果排到了第五,mAP达到39.18%。于是开始阅读它的论文,并跑一跑的它的代码。论文地址:ht... 查看详情

改进yolov5系列:增加swin-transformer小目标检测头(代码片段)

...低改进难度,改进点包含【Backbone特征主干】、【Neck特征融合】、【Head检测头】、【注意力机制】、【IoU损失函数】、【NMS】、【Loss计算方式】、【自注意力机制】、【数据增强部分】、【标签分配策略】、【激活函数】等各个... 查看详情

yolov5yolov添加asff,网络改进优化(代码片段)

...正。文章目录前言一、ASFF来源及功能二、ASFF代码二、ASFF融合Yolov5网络三、构建使用ASFF的网络四、查看效果一、ASFF来源及功能ASFF:AdaptivelySpatialFeatureFusion(自适应空间特征融合)论文来源:LearningSpatialFusionforSingle-ShotObjectD... 查看详情

yolov3算法的详细说明

...详细说明YOLOv3没有太多的创新,主要是借鉴一些好的方案融合到YOLO里面。不过效果还是不错的,在保持速度优势的前提下,提升了预测精度,尤其是加强了对小物体的识别能力。本文主要讲v3的改进,由于是以v1和v2为基础,关... 查看详情

yolov5改进yolov7改进iou损失函数:yolov7涨点trick,改进添加siou损失函数eiou损失函数giou损失函数α-iou损失函数(代码片段)

...有文章都是全网首发原创改进内容🚀💡本篇文章基于YOLOv5、YOLOv7芒果改进YOLO系列:YOLOv7改进IoU损失函数:YOLOv7涨点Trick,改进添加SIoU损失函数、EIoU损失函数、GIoU损失函数、α-IoU损失函数、打造全新YOLOv7检测... 查看详情

目标检测论文解读复现no.25基于改进yolov5的地铁隧道附属设施与衬砌表观病害检测方法

前言此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标... 查看详情

yolov3算法的详细说明

YOLOv3没有太多的创新,主要是借鉴一些好的方案融合到YOLO里面。不过效果还是不错的,在保持速度优势的前提下,提升了预测精度,尤其是加强了对小物体的识别能力。本文主要讲v3的改进,由于是以v1和v2为基础,关于YOLO1和YOL... 查看详情

改进yolov5系列:8.增加acmix结构的修改,自注意力和卷积集成(代码片段)

...集改进🏆、创新点改进👇💡YOLOAir项目:基于YOLOv5代码框架,结合不同模块来构建不同的YOLO目标检测模型。🌟本项目包含大量的改进方式,降低改进难度,改进点包含Backbone、Neck、Head、注意力机制、IoU损失... 查看详情

全网独家首发|极致版yolov7改进大提升(推荐)网络配置文件仅24层!更清晰更方便更快的改进yolov7网络模型(代码片段)

...力,数层数都要数很久,还很容易出错,而且基于YOLOv5代码架构,Debug起来也确实比较费时,所以博主对YOLOv7网络配置进行了一个结构改造,一个🚀极致简洁直观的YOLOv7网络配置结构🚀(强烈... 查看详情

目标检测论文解读复现之八:基于yolov5s的滑雪人员检测研究

前言   此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新... 查看详情

yolov5改进技巧详解(代码片段)

本文以yolov5-7.0的代码进行讲解yolov5的改进技巧。1.使用yolov5-p6以及yolov5-p7模型yolov5官方实现的代码,提供了多种架构的模型配置文件,包括:yolov3-spp,yolov5-bifpn,yolov5-p6,yolov5-p7,yolov5-panet,yolov5-transformer如果想训练不同架构的模型,... 查看详情

yolov5/v7/v8改进最新主干系列biformer:顶会cvpr2023即插即用,小目标检测涨点必备,首发原创改进,基于动态查询感知的稀疏注意力机制构建高效金字塔网络架构,打造高精度检测器

查看详情

芒果改进目录一览|改进yolov5yolov7等yolo模型全系列目录(代码片段)

芒果改进系列必读🔥博客内的改进文章,内均包含多种模型改进方式,均适用于YOLOv5系列以及YOLOv7系列改进(重点)!!!🔥专栏创新点教程均有不少同学反应和我说已经在自己的数据集上有... 查看详情