首页 > 其他分享 >yolov5更换主干网络shufflent

yolov5更换主干网络shufflent

时间:2024-08-08 15:54:35浏览次数:10  
标签:__ 主干 yolov5 shufflent self layer v2 model x0

目录

1.网络结构解析

1.1创建yolov5s_shufflent_v2_X0_5.yaml文件

2.对common.py末尾进行添加

 3.修改yolo.py


1.网络结构解析

1.可以先看看shufflenet_v2的网络结构

import torch
from torch import nn
from torchvision import models
from torchinfo import summary


class shufflenet_v2_x0_5(nn.Module):
    def __init__(self,n):
        super().__init__()
        model = models.shufflenet_v2_x0_5(pretrained=True)
        self.model=model
    def forward(self, x):
        return self.model(x)
if __name__ == '__main__':
    x=torch.randn(1,3,640,640)
    net=shufflenet_v2_x0_5(0)
    out=net(x)
    print(out.shape)
    summary(net,(1,3,640,640))

这个是YOLOV5的网络。框出来的是yolov5的主干网络。我们用shufflenet_v2的部分替换。可以直接把shufflenet_v2的网络截取出三部分

定义

 下图的右边部分是网络shufflenet的官方网络结构,直接使用即可。

定义我们自己需要修改的shufflenet类

import torch
from torch import nn
from torchvision import models
from torchinfo import summary


class Shufflenet_v2_x0_5(nn.Module):
    def __init__(self,n):
        super().__init__()
        model = models.shufflenet_v2_x0_5(pretrained=True)
        if n==1:
            layer=[]
            layer+=[model.conv1]
            layer+=[model.maxpool]
            layer+=[model.stage2]
            self.model=nn.Sequential(*layer)
        if n==2:
            self.model=model.stage3
        if n==3:
            layer=[]
            layer+=[model.stage4]
            layer+=[model.conv5]
            self.model = nn.Sequential(*layer)
    def forward(self, x):
        return self.model(x)
if __name__ == '__main__':
    x=torch.randn(1,3,640,640)#torch.Size([1, 48, 80, 80])
    net=Shufflenet_v2_x0_5(1)
    out=net(x)
    print(out.shape)

    x1=torch.randn(1,48,80,80)#torch.Size([1, 96, 40, 40])
    net1 = Shufflenet_v2_x0_5(2)
    out1 = net1(x1)
    print(out1.shape)
    x2=torch.randn(1, 96, 40, 40)#torch.Size([1, 1024, 20, 20]
    net2 = Shufflenet_v2_x0_5(3)
    out2 = net2(x2)
    print(out2.shape)
    # summary(net,(1,3,640,640))

1.1创建yolov5s_shufflent_v2_X0_5.yaml文件

照着上面的网络对齐修改

# YOLOv5 

标签:__,主干,yolov5,shufflent,self,layer,v2,model,x0
From: https://blog.csdn.net/m0_53291740/article/details/141022127

相关文章

  • yolov5主干网络换残差18
    目录1.网络结构​编辑 1.1三层如下定义1.2在common.py后面加入如下刚刚定义的网络,就是上面的代码的一部分2. 如此修改网络的yaml文件,yolov5n_res18.yaml3. 修改yolo网络并运行1.网络结构残差18网络如下可做出如下修改 1.1三层如下定义importtorchfrom......
  • YOLOv5改进 | 主干网络 | 将backbone替换为MobileNetV2【小白必备教程+附完整代码】
    秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转......
  • yolov5 mAP计算代码分析
    前言模型训练过程中每一轮都会计算P,R,mAP,[email protected]等数值,本篇分析这些数值的计算过程,分析最核心部分。我的感受是计算的过程比想象的复杂。主要的流程在yolov5/val.py文件的process_batch处理函数中。ifnl:tbox=xywh2xyxy(labels[:,1:5])#targetboxesscale_bo......
  • 代码实现yolov3主干网络,可以直接运行
    目录 1.主干网head版本1 2.主干网head版本2 3.将网络层全部放入数组切片取输出 4.用循环写法将输入输出提取出来yaml文件 1.主干网head版本1importtorchfromtorchimportnnimporttorch.nn.functionalasFclassConvBnLeakRelu(nn.Module):de......
  • mtcnn和yolov5
    MTCNN(Multi-taskCascadedConvolutionalNetworks,多任务级联卷积网络)和YOLOv5(YouOnlyLookOnceversion5,第五代实时目标检测系统)是两种流行的计算机视觉模型,它们都用于目标检测任务,但具有不同的架构和特点:1.**MTCNN**:  -MTCNN是一种用于人脸检测的深度学习模型,由三......
  • TorchVision 对整个模型与主干模型使用预训练权重
    TorchVision检测模型有一个weights和一个weights_backbone参数。使用预训练weights是否意味着模型在幕后使用了预训练weights_backbone?我正在训练RetinaNet模型,我不确定应该使用这两个选项中的哪一个以及它们之间有什么区别。这正是......
  • 使用 YOLOv5 和 PyWin32 的游戏中鼠标移动和点击无法正常工作
    我正在开发一个AI项目,使用YOLOv5模型来检测和射击Aimlabs游戏中的物体。该代码在游戏暂停时工作正常,但在游戏运行时无法准确移动鼠标,您知道如何解决此问题吗?importcv2importtorchimportnumpyasnpimportmssfromPILimportImageimportwin32apiimportwin32c......
  • 【YOLOv5/v7改进系列】引入中心化特征金字塔的EVC模块
    一、导言现有的特征金字塔方法过于关注层间特征交互而忽视了层内特征的调控。尽管有些方法尝试通过注意力机制或视觉变换器来学习紧凑的层内特征表示,但这些方法往往忽略了对密集预测任务非常重要的被忽视的角落区域。为了解决这个问题,作者提出了CFP,它首先在最深层的特征图上......
  • 【YOLOv8改进- Backbone主干】BoTNet:基于Transformer,结合自注意力机制和卷积神经网络
    YOLOv8目标检测创新改进与实战案例专栏专栏目录:YOLOv8有效改进系列及项目实战目录包含卷积,主干注意力,检测头等创新机制以及各种目标检测分割项目实战案例专栏链接:YOLOv8基础解析+创新改进+实战案例介绍摘要我们提出了BoTNet,这是一种概念上简单但功能强大的骨干......
  • YOLOv8改进 | 主干网络 | ⭐重写星辰Rewrite the Stars⭐【CVPR2024】
     秋招面试专栏推荐:深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转......