前言:

本次引入了一种新方法 GSConv 来减轻模型的复杂度并保持准确性。GSConv 可以更好地平衡模型的准确性和速度。并且,提供了一种设计范式,Slim-Neck,以实现检测器更高的计算成本效益。在实验中,与原始网络相比,本文方法获得了最先进的结果。

论文链接:https://arxiv.org/pdf/2206.02424.pdf

1、将以下代码加入common.py

#====================================GSConv===========================================
class GSConv(nn.Module):# GSConv https://github.com/AlanLi1997/slim-neck-by-gsconvdef __init__(self, c1, c2, k=1, s=1, g=1, act=True):super().__init__()c_ = c2 // 2self.cv1 = Conv(c1, c_, k, s, None, g, act)self.cv2 = Conv(c_, c_, 5, 1, None, c_, act)def forward(self, x):x1 = self.cv1(x)x2 = torch.cat((x1, self.cv2(x1)), 1)# shuffleb, n, h, w = x2.data.size()b_n = b * n // 2y = x2.reshape(b_n, 2, h * w)y = y.permute(1, 0, 2)y = y.reshape(2, -1, n // 2, h, w)return torch.cat((y[0], y[1]), 1)class GSBottleneck(nn.Module):# GS Bottleneck https://github.com/AlanLi1997/slim-neck-by-gsconvdef __init__(self, c1, c2, k=3, s=1):super().__init__()c_ = c2 // 2# for lightingself.conv_lighting = nn.Sequential(GSConv(c1, c_, 1, 1),GSConv(c_, c2, 1, 1, act=False))# for receptive fieldself.conv = nn.Sequential(GSConv(c1, c_, 3, 1),GSConv(c_, c2, 3, 1, act=False))self.shortcut = nn.Identity()def forward(self, x):return self.conv_lighting(x)class GSBottleneck2(GSBottleneck):# GS Bottleneck https://github.com/AlanLi1997/slim-neck-by-gsconvdef __init__(self, c1, c2, k=3, s=1):super().__init__(c1, c2, k, s)def forward(self, x):return self.conv(x) + self.shortcut(x)class VoVGSCSP(nn.Module):# VoV-GSCSP https://github.com/AlanLi1997/slim-neck-by-gsconvdef __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5):super().__init__()c_ = int(c2 * e)self.cv1 = Conv(c1, c_, 1, 1)self.cv2 = Conv(2 * c_, c2, 1)self.m = nn.Sequential(*(GSBottleneck(c_, c_) for _ in range(n)))def forward(self, x):x1 = self.cv1(x)return self.cv2(torch.cat((self.m(x1), x1), dim=1))class VoVGSCSP2(VoVGSCSP):# VoV-GSCSP2 https://github.com/AlanLi1997/slim-neck-by-gsconvdef __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5):super().__init__(c1, c2, n=1, shortcut=True, g=1, e=0.5)c_ = int(c2 * e)self.m = nn.Sequential(*(GSBottleneck2(c_, c_) for _ in range(n)))
#============================================END=========================================

2、打开yolo.py文件

找到parse_model模块,加入类名 注意 有两处需要添加的地方

3、更改yolov5s.yaml

删去原有代码,把下面代码全部复制过去就行


nc: 80 # 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/32backbone:# [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]head:[[-1, 1, GSConv, [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, GSConv, [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, GSConv, [256, 3, 2]],[[-1, 14], 1, Concat, [1]],  # cat head P4[-1, 3, C3, [512, False]],  # 20 (P4/16-medium)[-1, 1, GSConv, [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)]

搞定!

YOLOV5改进||YOLOV5+GSConv+Slim Neck相关推荐

  1. YOLOv5改进之YOLOv5+GSConv+Slim Neck

    论文题目:Slim-neck by GSConv: A better design paradigm of detector architectures for autonomous vehicles ...

  2. 改进Yolov5 | 用 GSConv+Slim Neck 一步步把 Yolov5 提升到极致!!!

    点击上方"计算机视觉工坊",选择"星标" 干货第一时间送达 作者丨ChaucerG 来源丨 集智书童 目标检测是计算机视觉中一项艰巨的下游任务.对于车载边缘计算 ...

  3. 用 GSConv+Slim Neck 一步步把 Yolov5 提升到极致

    切换到yolo5 还是有优化空间啊 本次引入了一种新方法 GSConv 来减轻模型的复杂度并保持准确性.GSConv 可以更好地平衡模型的准确性和速度.并且,提供了一种设计范式,Slim-Neck,以 ...

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

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

  5. 改进YOLOv5 | Stand-Alone Self-Attention | 针对视觉任务的独立自注意力层 | 搭建纯注意力FPN+PAN结构

    改进YOLOv5 | Stand-Alone Self-Attention | 搭建纯注意力Neck结构 论文地址:https://arxiv.org/abs/1906.05909 卷积是现代计算机视 ...

  6. 目标检测算法——YOLOv5改进|增加小目标检测层

    关注"PandaCVer"公众号 >>>深度学习Tricks,第一时间送达<<< 小目标检测一直以来是CV领域的难点之一,那么,YOLOv5该如 ...

  7. 上海交大 CDNet:基于YOLOv5改进的 人行道 斑马线和汽车过线行为检测

    作者用了 Yolov5版本:V6.1也实现了一版: 公开了数据集,有比较小的模型: GitHub - WangRongsheng/CDNet-yolov5: <CDNet:一个基于YOLOv5的 ...

  8. YOLOv5改进之十三:主干网络C3替换为轻量化网络EfficientNetv2

     ​前 言:作为当前先进的深度学习目标检测算法YOLOv5,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法.此后的系列文章,将重点对YOLOv ...

  9. [智慧农业]Python基于改进YOLOv5的猕猴桃叶病害检测系统(完整源码&数据集&视频教程)

    1.背景 现如今由于农作物病虫害的多样性和复杂性,在特定的条件下其很容易在大范围内发生,导致农产品产量急剧下降.因此,预防和监测农作物病虫害已成为农业生产活动中的重要环节.当前,耕地面积逐渐减少,世界 ...

  10. YOLOv5改进之八:非极大值抑制NMS算法改进Soft-nms

    ​前 言:作为当前先进的深度学习目标检测算法YOLOv5,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法.此后的系列文章,将重点对YOLOv5 ...

最新文章

  1. ZooKeeper和Diamond有什么不同
  2. java servicefactory_Java DirectoryServiceFactory.getDirectoryService方法代碼示例
  3. Java知多少(28)super关键字
  4. 云漫圈 | 敢怼我们程序员?哼,有你好看的。。。
  5. 爱上MVC系列~过滤器实现对响应流的处理
  6. mokoid android open source HAL hacking in a picture
  7. linux 16.04系统下载,【Ubuntu1604镜像下载】乌班图系统Ubuntu 16.04 官方正式版-开心电玩...
  8. 期末前端web大作业——基于HTML当当图书网项目的设计与实现 网上书城 网上书店 在线书店网页
  9. Java截图转文字程序
  10. 那些年用过的机械键盘--游戏人生键盘风云#入坑keychron#
  11. oracle的档案软件,思源档案管理系统(WEB版)
  12. 原生android ui设计,在拟物和扁平之间寻找平衡:原生安卓UI设计进化史
  13. 惊蛰(insects awaken)
  14. windows server 2003 IE升级方法
  15. ACES 工作流 ACES Workflow
  16. VUE3 之 状态动画 - 这个系列的教程通俗易懂,适合自学
  17. Java身份证号校验
  18. 罗永浩重返科技圈,却故人难寻
  19. Linux系统下生成证书 https证书
  20. 分享一个小知识点:沟通技巧

热门文章

  1. 看一点逻辑学,试图理解一点真相
  2. 逻辑回归分类——信用卡诈骗
  3. TYVJ1356(腾讯大战360)
  4. 球员题(查询+添加+排序)
  5. 电脑通信端口带感叹号,如何解决网络适配器里黄色感叹号
  6. 电信IHO-3000机顶盒高安版 悦ME刷机固件
  7. 央行二代征信系统即将上线 有哪些变化?
  8. MySQL5.7 配置优化
  9. 未找到任何音频输出设备的解决方法
  10. 大学计算机构成课程论文,大学计算机课程论文