YOLOV5改进||YOLOV5+GSConv+Slim Neck
前言:
本次引入了一种新方法 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相关推荐
- YOLOv5改进之YOLOv5+GSConv+Slim Neck
论文题目:Slim-neck by GSConv: A better design paradigm of detector architectures for autonomous vehicles ...
- 改进Yolov5 | 用 GSConv+Slim Neck 一步步把 Yolov5 提升到极致!!!
点击上方"计算机视觉工坊",选择"星标" 干货第一时间送达 作者丨ChaucerG 来源丨 集智书童 目标检测是计算机视觉中一项艰巨的下游任务.对于车载边缘计算 ...
- 用 GSConv+Slim Neck 一步步把 Yolov5 提升到极致
切换到yolo5 还是有优化空间啊 本次引入了一种新方法 GSConv 来减轻模型的复杂度并保持准确性.GSConv 可以更好地平衡模型的准确性和速度.并且,提供了一种设计范式,Slim-Neck,以 ...
- 【目标检测论文解读复现NO.25】基于改进Yolov5的地铁隧道附属设施与衬砌表观病害检测方法
前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文,帮 ...
- 改进YOLOv5 | Stand-Alone Self-Attention | 针对视觉任务的独立自注意力层 | 搭建纯注意力FPN+PAN结构
改进YOLOv5 | Stand-Alone Self-Attention | 搭建纯注意力Neck结构 论文地址:https://arxiv.org/abs/1906.05909 卷积是现代计算机视 ...
- 目标检测算法——YOLOv5改进|增加小目标检测层
关注"PandaCVer"公众号 >>>深度学习Tricks,第一时间送达<<< 小目标检测一直以来是CV领域的难点之一,那么,YOLOv5该如 ...
- 上海交大 CDNet:基于YOLOv5改进的 人行道 斑马线和汽车过线行为检测
作者用了 Yolov5版本:V6.1也实现了一版: 公开了数据集,有比较小的模型: GitHub - WangRongsheng/CDNet-yolov5: <CDNet:一个基于YOLOv5的 ...
- YOLOv5改进之十三:主干网络C3替换为轻量化网络EfficientNetv2
前 言:作为当前先进的深度学习目标检测算法YOLOv5,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法.此后的系列文章,将重点对YOLOv ...
- [智慧农业]Python基于改进YOLOv5的猕猴桃叶病害检测系统(完整源码&数据集&视频教程)
1.背景 现如今由于农作物病虫害的多样性和复杂性,在特定的条件下其很容易在大范围内发生,导致农产品产量急剧下降.因此,预防和监测农作物病虫害已成为农业生产活动中的重要环节.当前,耕地面积逐渐减少,世界 ...
- YOLOv5改进之八:非极大值抑制NMS算法改进Soft-nms
前 言:作为当前先进的深度学习目标检测算法YOLOv5,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法.此后的系列文章,将重点对YOLOv5 ...
最新文章
- ZooKeeper和Diamond有什么不同
- java servicefactory_Java DirectoryServiceFactory.getDirectoryService方法代碼示例
- Java知多少(28)super关键字
- 云漫圈 | 敢怼我们程序员?哼,有你好看的。。。
- 爱上MVC系列~过滤器实现对响应流的处理
- mokoid android open source HAL hacking in a picture
- linux 16.04系统下载,【Ubuntu1604镜像下载】乌班图系统Ubuntu 16.04 官方正式版-开心电玩...
- 期末前端web大作业——基于HTML当当图书网项目的设计与实现 网上书城 网上书店 在线书店网页
- Java截图转文字程序
- 那些年用过的机械键盘--游戏人生键盘风云#入坑keychron#
- oracle的档案软件,思源档案管理系统(WEB版)
- 原生android ui设计,在拟物和扁平之间寻找平衡:原生安卓UI设计进化史
- 惊蛰(insects awaken)
- windows server 2003 IE升级方法
- ACES 工作流 ACES Workflow
- VUE3 之 状态动画 - 这个系列的教程通俗易懂,适合自学
- Java身份证号校验
- 罗永浩重返科技圈,却故人难寻
- Linux系统下生成证书 https证书
- 分享一个小知识点:沟通技巧