YOLOv5更换骨干网络之 PP-LCNet

news2024/11/16 3:37:01

在这里插入图片描述
在这里插入图片描述
论文地址:https://arxiv.org/abs/2109.15099
代码地址:https://github.com/ngnquan/PP-LCNet

我们提出了一种基于MKLDNN加速策略的轻量级CPU网络,名为PP LCNet,它提高了轻量级模型在多个任务上的性能。本文列出了在延迟几乎不变的情况下可以提高网络准确性的技术。通过这些改进,PP LCNet的精度可以在相同的分类推理时间下大大超过以前的网络结构。如图1所示,它优于最先进的模型。对于计算机视觉的下游任务,它也表现得很好,例如对象检测、语义分割等。我们所有的实验都是基于PaddlePaddle1实现的。PaddleClas2提供代码和预训练模型。


PP-LCNet网路结构

在这里插入图片描述
将YOLOv5主干网络替换为PP-LCNet:
yolov5lPP-LC.yaml

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license

# Parameters
nc: 80  # number of classes
depth_multiple: 1.0  # model depth multiple
width_multiple: 1.0  # 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

#  PP-LCNet backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Conv, [16, 3, 2, 1]],              # 0-P1/2  ch_out, kernel, stride, padding
   [-1, 1, DepthSepConv, [32, 3, 1, False]],  # 1

   [-1, 1, DepthSepConv, [64, 3, 2, False]],  # 2-P2/4
   [-1, 1, DepthSepConv, [64, 3, 1, False]],  # 3

   [-1, 1, DepthSepConv, [128, 3, 2, False]], # 4-P3/8
   [-1, 1, DepthSepConv, [128, 3, 1, False]], # 5

   [-1, 1, DepthSepConv, [256, 3, 2, False]], # 6-P4/16
   [-1, 5, DepthSepConv, [256, 5, 1, False]], # 7

   [-1, 1, DepthSepConv, [512, 5, 2, True]],  # 8-P5/32
   [-1, 1, DepthSepConv, [512, 5, 1, True]],  # 9
  ]

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

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

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

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

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

在YOLOv5项目中添加方式:

common.py中加入以下代码:

class DepthSepConv(nn.Module):
    def __init__(self, inp, oup, dw_size, stride, use_se):
        super(DepthSepConv, self).__init__()
        self.stride = stride
        self.inp = inp
        self.oup = oup
        self.dw_size = dw_size
        self.dw_sp = nn.Sequential(
            nn.Conv2d(self.inp, self.inp, kernel_size=self.dw_size, stride=self.stride, padding=(dw_size - 1) // 2, groups=self.inp, bias=False),
            nn.BatchNorm2d(self.inp),
            nn.Hardswish(),

            SeBlock(self.inp, reduction=16) if use_se else nn.Sequential(),

            nn.Conv2d(self.inp, self.oup, kernel_size=1, stride=1, padding=0, bias=False),
            nn.BatchNorm2d(self.oup),
            nn.Hardswish())

    def forward(self, x):
        y = self.dw_sp(x)
        return y

yolo.py中添加如下代码:
在这里插入图片描述


本人更多YOLOv5实战内容导航🍀🌟🚀

  1. 手把手带你调参Yolo v5 (v6.2)(推理)🌟强烈推荐

  2. 手把手带你调参Yolo v5 (v6.2)(训练)🚀

  3. 手把手带你调参Yolo v5 (v6.2)(验证)

  4. 如何快速使用自己的数据集训练Yolov5模型

  5. 手把手带你Yolov5 (v6.2)添加注意力机制(一)(并附上30多种顶会Attention原理图)🌟强烈推荐🍀新增8种

  6. 手把手带你Yolov5 (v6.2)添加注意力机制(二)(在C3模块中加入注意力机制)

  7. Yolov5如何更换激活函数?

  8. Yolov5如何更换BiFPN?

  9. Yolov5 (v6.2)数据增强方式解析

  10. Yolov5更换上采样方式( 最近邻 / 双线性 / 双立方 / 三线性 / 转置卷积)

  11. Yolov5如何更换EIOU / alpha IOU / SIoU?

  12. Yolov5更换主干网络之《旷视轻量化卷积神经网络ShuffleNetv2》

  13. YOLOv5应用轻量级通用上采样算子CARAFE

  14. 空间金字塔池化改进 SPP / SPPF / SimSPPF / ASPP / RFB / SPPCSPC / SPPFCSPC🚀

  15. 用于低分辨率图像和小物体的模块SPD-Conv

  16. GSConv+Slim-neck 减轻模型的复杂度同时提升精度🍀

  17. 头部解耦 | 将YOLOX解耦头添加到YOLOv5 | 涨点杀器🍀

  18. Stand-Alone Self-Attention | 搭建纯注意力FPN+PAN结构🍀

  19. YOLOv5模型剪枝实战🚀

  20. YOLOv5知识蒸馏实战🚀

  21. YOLOv7知识蒸馏实战🚀

  22. 改进YOLOv5 | 引入密集连接卷积网络DenseNet思想 | 搭建密集连接模块🍀

  23. YOLOv5 框架引入 Google 轻量化网络 MobileNet V3🍀

  24. YOLOv5更换骨干网络之 EfficientNet-B0🍀


参考文献:

https://github.com/Gumpest/YOLOv5-Multibackbone-Compression

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/134408.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv5更换骨干网络之 EfficientNet-B0

论文地址:https://arxiv.org/abs/1905.11946 代码地址:https://githeb.com/TensorFlow/tpu/tree/master/Models/Offical/Efficientnet 卷积神经网络(ConvNet)通常是在固定的资源预算下开发的,如果有更多的资源可用,则…

如何从macOS ventura降级到 macOS Monterey?这两大方法可以帮到你

苹果发布了macOS 13 Ventura的正式版系统,增加了许多实用性的功能,大家纷纷下载更新最新版本的系统。但根据许多已安装ventura的用户反馈,这个版本的MacOS系统还不够成熟,应该有不少bug还没有修复过来,从而求助小编分享…

c#入门-泛型约束

泛型约束 使用泛型时会假设泛型占位符是任何类型。 但因为它被假设是任何类型,所以使用起来有很大的限制。只有所有类型都有的功能,他才能用。 为了满足所有的可能类型,可用的操作非常少。 为此我们可以为泛型占位符添加约束。虽然会让能兼…

大型项目迭代流程

一、回顾目标 总目标: 年底上线完成100% 结果: 年底上线并开量验证过成功,完成率100% 阶段目标A: 10月底项目全流程开发完成,并提测出票前流程 结果:10月21日项目开发完成100%,10月25日前…

基于残差神经网络的交通标志识别算法研究与应用实现

问题: 从图像中识别交通标志对于自动驾驶至关重要。要想实现自动驾驶,车辆必须了解并遵守所有交通规则。当前,特斯拉、谷歌、梅赛德斯-奔驰、丰田、福特、奥迪等许多大公司都在研究自动驾驶。因此,为了实现这项技术的准确性&…

pandas的series创建和pandans的dataFrame创建

一:series和读取外部数据 1.1pandas的series的了解 1.1.1 为什么要学习pandas numpy能够帮我们处理处理数值型数据,但是这还不够。很多时候,我们的数据除了数值之外,还有字符串,还有时间序列等 比如:我们通…

显式利用用户画像的多兴趣建模

显式利用用户画像的多兴趣建模 目前在多兴趣建模中,用户侧的特征包括用户基础画像特征(年龄、性别、地域等)、用户在当前场景的静态兴趣画像特征(短期兴趣画像、长期兴趣画像)、交互的历史正向行为序列特征&#xff0…

【Javassist】快速入门系列13 使用Javassist获取注解

系列文章目录 01 在方法体的开头或结尾插入代码 02 使用Javassist实现方法执行时间统计 03 使用Javassist实现方法异常处理 04 使用Javassist更改整个方法体 05 当有指定方法调用时替换方法调用的内容 06 当有构造方法调用时替换方法调用的内容 07 当检测到字段被访问时使用语…

MySQL性能优化三 一条SQL在MySQL中执行的过程

一 MySQL的内部组件结构 大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。 1.1 service层 主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学…

Easy-Captcha验证码 生成以及校验(简单易懂)

目录说明pom引入详解参数类使用easy-captcha 中提供了下面几种类源码说明Captcha使用验证图解源码测试GitHub说明 Java图形验证码&#xff0c;支持gif、中文、算术等类型&#xff0c;可用于Java Web、JavaSE等项目 pom引入 <dependency><groupId>com.github.whvc…

【C++】 bitset(位图)的使用

目录 一、bitset的基本介绍 1. 位图的概念 2. 位图的应用 二、biset的基本使用 1. bitset的成员函数 2. 基本使用介绍 1. 定义方式 2. 成员函数的使用 一、bitset的基本介绍 1. 位图的概念 所谓位图&#xff0c;就是用每一位来存放某种状态&#xff0c;适用于海量数…

win系统一台电脑安装两个不同版本的mysql教程

1.mysql下载zip包&#xff08;地址&#xff09;MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/ 2.解压在你的电脑上&#xff08;不要再C盘和带中文的路径&#xff09; data和my.ini是没有的。 3.创建my.ini文件 创建记事本改变后缀名就可以 …

【5G RRC】小区搜索(Cell Search)和系统捕获(System Acquisition)流程

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

环境变量?拿来把你!

文章目录环境变量直接运行程序的第一种方法&#xff1a;把程序移动到系统目录底下echo $环境变量&#xff1a;查看环境变量PATH:指定命令的搜索路径export 定义一个新的环境变量export PATH旧路径&#xff1a;新路径getenv&#xff1a;获取环境变量—获取环境变量的第一种方式s…

车载诊断协议UDS——读写服务Service 22/2E

在UDS协议中,对于服务常用有两种格式: 1、Service (服务) + Subfunction( 子服务) 子服务可理解为对服务的功能补充,比如会话模式Service 10服务,子服务可以分为不同的会话模式(默认会话模式、扩展会话模式、编程会话模式等等),用来区分服务的执行权限。 2、Servi…

[OC学习笔记]启动流程(objc部分)

先回顾下这张图&#xff0c;回顾下整体流程。现在分析下在此流程中objc4源码&#xff08;818.2&#xff09;的处理逻辑。 _objc_init解析 我们在上图可以看出&#xff0c;dyld在main函数之前&#xff08;pre-main&#xff09;会间接调用到objc的_objc_init&#xff0c;其中使…

洛谷—— AT_abc157_a [ABC157A] Duplex Printing

文章目录[ABC157A] Duplex Printing题面翻译题目描述输入格式输出格式说明提示题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1样例 #2样例输入 #2样例输出 #2样例 #3样例输入 #3样例输出 #3提示制約Sample Explanation 1AC代码[ABC157A] Duplex Printing 题面翻译 题…

GC调优

GC调优一、新生代调优二、幸存区调优三、老年代调优四、GC调优案例案例一&#xff1a;Full GC和Minor GC频繁案例二&#xff1a;请求高峰期发生Full GC&#xff0c;单次暂停时间特别长&#xff08;CMS&#xff09;案例三&#xff1a;老年代充裕情况下&#xff0c;发生Full GC&a…

SQL中灵活的视图

文章目录视图的创建、嵌套及特性创建视图查询视图视图的嵌套常见的8个使用场景场景一&#xff1a;仅提供需要的数据场景二&#xff1a;对特定的用户仅开放特定的数据&#xff0c;达到保护敏感数据的目的&#xff0c;提升了数据安全性&#xff1b;仅筛选需要的数据场景四&#x…

迭代器模式 实现ES大量数据查询

目录 项目需求 要求 普通策略 升级策略&#xff1a;使用迭代器模式 迭代器模式组成 代码实现 查询实体 返回实体 实现类 代码测试 mock的ES返回结果json数据 第一次返回结果 第二次返回结果 第三次返回结果 postMan请求, 控制台打印结果 项目需求 数据从Mysq…