0


YOLOv7-tiny网络结构图及yaml文件 详细备注

YOLOv7-tiny

整体网络结构图

在这里插入图片描述

yolov7-tiny.yaml

# parameters
nc:80# number of classes
depth_multiple:1.0# model depth multiple
width_multiple:1.0# layer channel multiple# anchors
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# yolov7-tiny backbone
backbone:# [from, number, module, args] ch_out, k=1, s=1, p=None, g=1, act=True[[-1,1, Conv,[32,3,2,None,1, nn.LeakyReLU(0.1)]],# 0-P1/2  [-1,1, Conv,[64,3,2,None,1, nn.LeakyReLU(0.1)]],# 1-P2/4    [-1,1, Conv,[32,1,1,None,1, nn.LeakyReLU(0.1)]],#MCB[-2,1, Conv,[32,1,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, Conv,[32,3,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, Conv,[32,3,1,None,1, nn.LeakyReLU(0.1)]],[[-1,-2,-3,-4],1, Concat,[1]],[-1,1, Conv,[64,1,1,None,1, nn.LeakyReLU(0.1)]],# 7[-1,1, MP,[]],# 8-P3/8[-1,1, Conv,[64,1,1,None,1, nn.LeakyReLU(0.1)]],[-2,1, Conv,[64,1,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, Conv,[64,3,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, Conv,[64,3,1,None,1, nn.LeakyReLU(0.1)]],[[-1,-2,-3,-4],1, Concat,[1]],[-1,1, Conv,[128,1,1,None,1, nn.LeakyReLU(0.1)]],# 14[-1,1, MP,[]],# 15-P4/16[-1,1, Conv,[128,1,1,None,1, nn.LeakyReLU(0.1)]],[-2,1, Conv,[128,1,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, Conv,[128,3,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, Conv,[128,3,1,None,1, nn.LeakyReLU(0.1)]],[[-1,-2,-3,-4],1, Concat,[1]],[-1,1, Conv,[256,1,1,None,1, nn.LeakyReLU(0.1)]],# 21[-1,1, MP,[]],# 22-P5/32[-1,1, Conv,[256,1,1,None,1, nn.LeakyReLU(0.1)]],[-2,1, Conv,[256,1,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, Conv,[256,3,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, Conv,[256,3,1,None,1, nn.LeakyReLU(0.1)]],[[-1,-2,-3,-4],1, Concat,[1]],[-1,1, Conv,[512,1,1,None,1, nn.LeakyReLU(0.1)]],# 28]# yolov7-tiny head
head:#SPPCSP[[-1,1, Conv,[256,1,1,None,1, nn.LeakyReLU(0.1)]],[-2,1, Conv,[256,1,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, SP,[5]],[-2,1, SP,[9]],[-3,1, SP,[13]],[[-1,-2,-3,-4],1, Concat,[1]],[-1,1, Conv,[256,1,1,None,1, nn.LeakyReLU(0.1)]],[[-1,-7],1, Concat,[1]],[-1,1, Conv,[256,1,1,None,1, nn.LeakyReLU(0.1)]],# 37[-1,1, Conv,[128,1,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, nn.Upsample,[None,2,'nearest']],[21,1, Conv,[128,1,1,None,1, nn.LeakyReLU(0.1)]],# route backbone P4[[-1,-2],1, Concat,[1]],[-1,1, Conv,[64,1,1,None,1, nn.LeakyReLU(0.1)]],[-2,1, Conv,[64,1,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, Conv,[64,3,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, Conv,[64,3,1,None,1, nn.LeakyReLU(0.1)]],[[-1,-2,-3,-4],1, Concat,[1]],[-1,1, Conv,[128,1,1,None,1, nn.LeakyReLU(0.1)]],# 47[-1,1, Conv,[64,1,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, nn.Upsample,[None,2,'nearest']],[14,1, Conv,[64,1,1,None,1, nn.LeakyReLU(0.1)]],# route backbone P3[[-1,-2],1, Concat,[1]],[-1,1, Conv,[32,1,1,None,1, nn.LeakyReLU(0.1)]],[-2,1, Conv,[32,1,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, Conv,[32,3,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, Conv,[32,3,1,None,1, nn.LeakyReLU(0.1)]],[[-1,-2,-3,-4],1, Concat,[1]],[-1,1, Conv,[64,1,1,None,1, nn.LeakyReLU(0.1)]],# 57[-1,1, Conv,[128,3,2,None,1, nn.LeakyReLU(0.1)]],[[-1,47],1, Concat,[1]],[-1,1, Conv,[64,1,1,None,1, nn.LeakyReLU(0.1)]],[-2,1, Conv,[64,1,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, Conv,[64,3,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, Conv,[64,3,1,None,1, nn.LeakyReLU(0.1)]],[[-1,-2,-3,-4],1, Concat,[1]],[-1,1, Conv,[128,1,1,None,1, nn.LeakyReLU(0.1)]],# 65[-1,1, Conv,[256,3,2,None,1, nn.LeakyReLU(0.1)]],[[-1,37],1, Concat,[1]],[-1,1, Conv,[128,1,1,None,1, nn.LeakyReLU(0.1)]],[-2,1, Conv,[128,1,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, Conv,[128,3,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, Conv,[128,3,1,None,1, nn.LeakyReLU(0.1)]],[[-1,-2,-3,-4],1, Concat,[1]],[-1,1, Conv,[256,1,1,None,1, nn.LeakyReLU(0.1)]],# 73[57,1, Conv,[128,3,1,None,1, nn.LeakyReLU(0.1)]],[65,1, Conv,[256,3,1,None,1, nn.LeakyReLU(0.1)]],[73,1, Conv,[512,3,1,None,1, nn.LeakyReLU(0.1)]],[[74,75,76],1, IDetect,[nc, anchors]],# Detect(P3, P4, P5)]

组件模块

MX

池化层,默认表示两倍下采样,

classMP(nn.Module):def__init__(self, k=2):super(MP, self).__init__()
        self.m = nn.MaxPool2d(kernel_size=k, stride=k)defforward(self, x):return self.m(x)
[-1,1, MP,[]],# 8-P3/8

CBL

就是表示Conv+BN+LeakyReLU
[-1, 1, Conv, [256, 1, 1, None, 1, nn.LeakyReLU(0.1)]]

classConv(nn.Module):# Standard convolutiondef__init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True):# ch_in, ch_out, kernel, stride, padding, groupssuper(Conv, self).__init__()
        self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p), groups=g, bias=False)
        self.bn = nn.BatchNorm2d(c2)
        self.act = nn.SiLU()if act isTrueelse(act ifisinstance(act, nn.Module)else nn.Identity())defforward(self, x):return self.act(self.bn(self.conv(x)))deffuseforward(self, x):return self.act(self.conv(x))

SPPCSP

结构图

在这里插入图片描述

yaml

yaml文件中如下表示,直接看最后一层输出通道数,尺寸不会变化,SP模块默认设置卷积Pading为卷积核的一半大小

#SPPCSP[[-1,1, Conv,[256,1,1,None,1, nn.LeakyReLU(0.1)]],#20*20*256[-2,1, Conv,[256,1,1,None,1, nn.LeakyReLU(0.1)]],#20*20*256[-1,1, SP,[5]],[-2,1, SP,[9]],[-3,1, SP,[13]],[[-1,-2,-3,-4],1, Concat,[1]],#20*20*512[-1,1, Conv,[256,1,1,None,1, nn.LeakyReLU(0.1)]],#20*20*256[[-1,-7],1, Concat,[1]],#20*20*512[-1,1, Conv,[256,1,1,None,1, nn.LeakyReLU(0.1)]],#20  #20*20*256

构建代码

yaml文件中的SP表示如下

# i+2p-kclassSP(nn.Module):def__init__(self, k=3, s=1):super(SP, self).__init__()
        self.m = nn.MaxPool2d(kernel_size=k, stride=s, padding=k //2)defforward(self, x):return self.m(x)

MCB

结构图

在这里插入图片描述

yaml文件表示

直接看最后一层输出的通道数看Concat后变化,

[-1,1, Conv,[64,1,1,None,1, nn.LeakyReLU(0.1)]],#40*40*64[-2,1, Conv,[64,1,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, Conv,[64,3,1,None,1, nn.LeakyReLU(0.1)]],[-1,1, Conv,[64,3,1,None,1, nn.LeakyReLU(0.1)]],[[-1,-2,-3,-4],1, Concat,[1]],[-1,1, Conv,[128,1,1,None,1, nn.LeakyReLU(0.1)]],# 30       #40*40*128

common.py代码

通过Conv函数构建即可

参考

yolov7-tiny网络结构图
https://blog.csdn.net/weixin_51346544/article/details/129322706


本文转载自: https://blog.csdn.net/qq_41398619/article/details/129742953
版权归原作者 创不了浩 所有, 如有侵权,请联系我们删除。

“YOLOv7-tiny网络结构图及yaml文件 详细备注”的评论:

还没有评论