【轻量化网络】实战:更改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)


相关文章
|
28天前
|
机器学习/深度学习 PyTorch 算法框架/工具
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
这篇文章介绍了如何使用PyTorch框架,结合CIFAR-10数据集,通过定义神经网络、损失函数和优化器,进行模型的训练和测试。
75 2
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
|
9天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
49 6
|
30天前
|
机器学习/深度学习 数据可视化 测试技术
YOLO11实战:新颖的多尺度卷积注意力(MSCA)加在网络不同位置的涨点情况 | 创新点如何在自己数据集上高效涨点,解决不涨点掉点等问题
本文探讨了创新点在自定义数据集上表现不稳定的问题,分析了不同数据集和网络位置对创新效果的影响。通过在YOLO11的不同位置引入MSCAAttention模块,展示了三种不同的改进方案及其效果。实验结果显示,改进方案在mAP50指标上分别提升了至0.788、0.792和0.775。建议多尝试不同配置,找到最适合特定数据集的解决方案。
221 0
|
10天前
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
34 4
|
10天前
|
网络协议 物联网 API
Python网络编程:Twisted框架的异步IO处理与实战
【10月更文挑战第26天】Python 是一门功能强大且易于学习的编程语言,Twisted 框架以其事件驱动和异步IO处理能力,在网络编程领域独树一帜。本文深入探讨 Twisted 的异步IO机制,并通过实战示例展示其强大功能。示例包括创建简单HTTP服务器,展示如何高效处理大量并发连接。
32 1
|
11天前
|
网络协议 安全 NoSQL
网络空间安全之一个WH的超前沿全栈技术深入学习之路(8-2):scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练、就怕你学成黑客啦!
scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!
网络空间安全之一个WH的超前沿全栈技术深入学习之路(8-2):scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练、就怕你学成黑客啦!
|
11天前
|
网络协议 安全 算法
网络空间安全之一个WH的超前沿全栈技术深入学习之路(9):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!
实战:WireShark 抓包及快速定位数据包技巧、使用 WireShark 对常用协议抓包并分析原理 、WireShark 抓包解决服务器被黑上不了网等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!
网络空间安全之一个WH的超前沿全栈技术深入学习之路(9):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!
|
16天前
|
机器学习/深度学习 计算机视觉 网络架构
【YOLO11改进 - C3k2融合】C3k2融合YOLO-MS的MSBlock : 分层特征融合策略,轻量化网络结构
【YOLO11改进 - C3k2融合】C3k2融合YOLO-MS的MSBlock : 分层特征融合策略,轻量化网络结构
|
9天前
|
网络协议 调度 开发者
Python网络编程:Twisted框架的异步IO处理与实战
【10月更文挑战第27天】本文介绍了Python网络编程中的Twisted框架,重点讲解了其异步IO处理机制。通过反应器模式,Twisted能够在单线程中高效处理多个网络连接。文章提供了两个实战示例:一个简单的Echo服务器和一个HTTP服务器,展示了Twisted的强大功能和灵活性。
22 0
|
11天前
|
网络协议 安全 算法
网络空间安全之一个WH的超前沿全栈技术深入学习之路(9-2):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!
实战:WireShark 抓包及快速定位数据包技巧、使用 WireShark 对常用协议抓包并分析原理 、WireShark 抓包解决服务器被黑上不了网等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!
下一篇
无影云桌面