【轻量化网络】实战:更改SqueezeNet网络&MobileNet网络& ShuffleNet网络输出替换yolo的backbone部分

简介: 【轻量化网络】实战:更改SqueezeNet网络&MobileNet网络& ShuffleNet网络输出替换yolo的backbone部分

前言

  因此我们可以在“写(水)”论文的时候更换yolo的主干网络进行实验获取实验参数。在本文中将介绍ShuffleNetV2网络以及MobilenetV2网络更改的主干网络。

  轻量化网络相比于 YOLO 系列网络的主干网络,具有以下优势:

  1. 更快的推理速度:轻量化网络通常具有更少的参数和计算量,因此在推理时可以更快地处理输入数据。
  2. 更小的模型尺寸:轻量化网络通常具有更小的模型尺寸,这使得它们更容易部署到嵌入式设备或移动设备上。
  3. 更低的计算资源需求:轻量化网络需要更少的计算资源来运行,这使得它们更适合于在资源受限的环境中使用。
  4. 更好的泛化能力:轻量化网络通常具有更好的泛化能力,可以在小数据集上训练,并且可以更好地应对数据集的变化。
  5. 更容易优化:由于轻量化网络具有更少的参数,因此可以更容易地进行优化和调整,以在特定的任务上实现更好的性能

轻量化移植

   本文以yolov5作为例子向大家介绍如何进行轻量化替代迁移。这里我们主要是替代“三张图”

yolo5主干

  YOLOv5的主干网络采用的是CSPNet(Cross Stage Partial Network)结构,它是一种轻量级的卷积神经网络,可以有效地减少参数数量和计算量,提高模型的速度和精度。CSPNet结构的具体实现包括以下几个部分:

  1. CSPDarknet:包括多个卷积层和残差块,用于从图像中提取特征;
  2. SPP(Spatial Pyramid Pooling)模块:用于在不同尺度下对特征图进行池化操作,以提取更全局和丰富的特征信息;
  3. CSP Bottleneck Block:包括多个卷积层和残差块,用于进一步加深网络结构和提取更复杂的特征;
  4. PAN(Path Aggregation Network)模块:用于将不同层级的特征图进行融合,以提高检测精度;
  5. Detection Head:包括多个卷积层和全连接层,用于对特征图进行分类和回归,以得到目标的位置和类别。

MobilenetV2&ShuffleNetV2迁移

移植步骤:

  1. 使用torchvision.models中自带的MobilenetV2的网络当作模板进行使用;
  2. 修改YOLOv5的代码:需要将MobilenetV2的卷积层、批归一化层、激活函数等等替换为原来的CSPDarknet中的对应层次。同时,你还需要调整一些超参数,例如输入图像的大小、通道数、卷积核大小等等,以适应MobilenetV2网络的结构和特点;
  3. 加载MobilenetV2的预训练权重文件;
  4. 对新的模型进行微调.

代码示例

python

复制代码

import torch
import torchvision
from torch import nn
class MobilenetV2(nn.Module):
    def __init__(self, pretrained=False):
        super(MobilenetV2, self).__init__()
        self.model = torchvision.models.mobilenet_v2(pretrained=pretrained)
    def forward(self, x):
        out3 = self.model.features[:7](x)
        out4 = self.model.features[7:14](out3)
        out5 = self.model.features[14:18](out4)
        return out3, out4, out5
class Shufflenetv2_x0_5(nn.Module):
    def __init__(self, pretrained=False):
        super(Shufflenetv2_x0_5, self).__init__()
        self.model = torchvision.models.shufflenet_v2_x0_5(pretrained=pretrained)
    def forward(self, x):
        x1 = self.model.conv1(x)
        x2 = self.model.maxpool(x1)
        out3 = self.model.stage2(x2)
        out4 = self.model.stage3(out3)
        out5 = self.model.stage4(out4)
        return out3, out4, out5
if __name__ == "__main__":
    x = torch.zeros([1, 3, 640, 640])
    model = Shufflenetv2_x0_5()
    out3, out4, out5 = model(x)
    print(out3.shape)
    print(out4.shape)
    print(out5.shape)


相关文章
|
6天前
|
存储 安全 物联网
网络安全与信息安全:防护之道与实战策略
【5月更文挑战第30天】在数字化时代,数据是最宝贵的资产之一,而网络安全和信息安全则是维护这些资产的坚固盾牌。本文将深入探讨网络安全漏洞的概念、加密技术的应用以及提升安全意识的重要性。通过对网络威胁的剖析,我们揭示了防御机制中存在的薄弱环节,并提出了相应的强化措施。文章还将介绍当前最前沿的加密方法,以及如何通过教育和技术手段增强个人和组织的安全防护能力。
|
14天前
|
机器学习/深度学习 编解码 算法
YOLOv5改进 | 主干网络 | 用EfficientNet卷积替换backbone【教程+代码 】
在YOLOv5的GFLOPs计算量中,卷积占了其中大多数的比列,为了减少计算量,研究人员提出了用EfficientNet代替backbone。本文给大家带来的教程是**将原来的主干网络替换为EfficientNet。文章在介绍主要的原理后,将手把手教学如何进行模块的代码添加和修改,并将修改后的完整代码放在文章的最后,方便大家一键运行,小白也可轻松上手实践。以帮助您更好地学习深度学习目标检测YOLO系列的挑战。
|
15天前
|
机器学习/深度学习 编解码 边缘计算
YOLOv5改进 | 卷积模块 | 用ShuffleNetV2卷积替换Conv【轻量化网络】
本文介绍了如何在YOLOv5中用ShuffleNetV2替换卷积以减少计算量。ShuffleNetV2是一个轻量级网络,采用深度可分离卷积、通道重组和多尺度特征融合技术。文中提供了一个逐步教程,包括ShuffleNetV2模块的代码实现和在YOLOv5配置文件中的添加方法。此外,还分享了完整的代码链接和GFLOPs的比较,显示了GFLOPs的显著减少。该教程适合初学者实践,以提升深度学习目标检测技能。
YOLOv5改进 | 卷积模块 | 用ShuffleNetV2卷积替换Conv【轻量化网络】
|
20天前
|
存储 前端开发 机器人
Python网络数据抓取(6):Scrapy 实战
Python网络数据抓取(6):Scrapy 实战
33 2
|
20天前
|
机器学习/深度学习 Python
【Python实战】——神经网络识别手写数字(三)
【Python实战】——神经网络识别手写数字
|
5天前
|
监控 安全 算法
网络安全与信息安全:防护之道与实战技巧
【5月更文挑战第30天】在数字化时代,网络与信息安全已成为一个不断演进的战场。本文将深入探讨网络安全漏洞的成因、加密技术的应用以及提升安全意识的重要性。通过对常见网络威胁的分析,我们揭示了防护措施的必要性,并分享了如何通过多层次的安全策略来增强个人和组织的信息安全防线。
|
8天前
|
SQL 安全 物联网
网络安全与信息安全:防范之道与实战技巧
【5月更文挑战第27天】在数字化时代,网络安全与信息安全已成为维护个人隐私、企业资产和国家安全的重要领域。随着网络攻击手段的日益复杂化,理解并应对网络安全漏洞、掌握加密技术以及提升安全意识显得尤为重要。本文将深入探讨网络安全的核心概念、常见漏洞及其防御策略,同时分享加密技术和安全意识方面的实用知识,旨在为读者提供一份综合性的网络安全指南,以增强个人和组织在信息时代的防护能力。
|
8天前
|
安全 算法 网络安全
网络安全与信息安全:防护之道与实战策略网络防线的构筑者:网络安全与信息保护技术解析
【5月更文挑战第27天】 在数字化时代,数据成为了新的货币,而网络安全则是保护这些宝贵资产不受威胁的盾牌。本文将深入探讨网络安全漏洞的概念、加密技术的最新进展以及提升个人和企业的安全意识。通过对网络攻击者的策略进行剖析,我们不仅揭示了常见的安全漏洞,还分享了如何通过多层次防御机制来增强系统的安全性。文章的目标是为读者提供实用的知识,以便构建一个更加坚固的网络安全防线。
|
11天前
|
SQL 安全 算法
网络防御先锋:洞悉安全漏洞与应用加密技术的实战指南
【5月更文挑战第25天】在数字信息时代,网络安全和信息安全已成为维护数据完整性、确保信息传输保密性和保障系统可用性的关键。本文将深入探讨网络安全领域的重要议题——安全漏洞的识别与防护,以及加密技术的应用与实践。通过对常见安全威胁的分析,结合最新的加密方法,文章旨在提升读者对网络防御策略的理解,并增强个人及组织的安全防护意识。
|
13天前
|
机器学习/深度学习 算法 计算机视觉
YOLOv8改进 | 融合模块 | 用Resblock+CBAM卷积替换Conv【轻量化网络】
在这个教程中,介绍了如何将YOLOv8的目标检测模型改进,用Resblock+CBAM替换原有的卷积层。Resblock基于ResNet的残差学习思想,减少信息丢失,而CBAM是通道和空间注意力模块,增强网络对特征的感知。教程详细解释了ResNet和CBAM的原理,并提供了代码示例展示如何在YOLOv8中实现这一改进。此外,还给出了新增的yaml配置文件示例以及如何注册模块和执行程序。作者分享了完整的代码,并对比了改进前后的GFLOPs计算量,强调了这种改进在提升性能的同时可能增加计算需求。教程适合深度学习初学者实践和提升YOLO系列模型的性能。