YOLOv8魔改核心-模型yaml文件解析与网络结构打印

前言

本篇文章主要用于记录学习YOLOv8中网络模型yaml文件,我们一般只知道如何去训练模型,和配置yaml文件,但是对于yaml文件是如何输入到模型里,模型如何将yaml文件解析出来的确是不知道的,下面我们从yaml文件来讲解,并打印出网络结构参数。

往期回顾

1、YOLOv8入门-训练TT100K数据集实践

目录

  • 一、yaml文件的定义
  • 二、模型结构图
  • 三、模型结构解析
  • 四、模型结构打印
  • 五、查看详细网络结构

一、yaml文件的定义

文件位置:./ultralytics/cfg/models/v8/yolov8.yaml,文件详解:

# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv8 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect# Parameters
nc: 80  # 类别数目,nc代表"number of classes",即模型用于检测的对象类别总数。 80表示该模型配置用于检测80种不同的对象。由于默认使用COCO数据集,这里nc=80;
scales: # 模型复合缩放常数,用于定义模型的不同尺寸和复杂度。例如 'model=yolov8n.yaml' 将调用带有 'n' 缩放的 yolov8.yaml# [depth, width, max_channels]n: [0.33, 0.25, 1024]  # YOLOv8n概览:225层, 3157200参数, 3157184梯度, 8.9 GFLOPss: [0.33, 0.50, 1024]  # YOLOv8s概览:225层, 11166560参数, 11166544梯度, 28.8 GFLOPsm: [0.67, 0.75, 768]   # YOLOv8m概览:295层, 25902640参数, 25902624梯度, 79.3 GFLOPsl: [1.00, 1.00, 512]   # YOLOv8l概览:365层, 43691520参数, 43691504梯度, 165.7 GFLOPsx: [1.00, 1.25, 512]   # YOLOv8x概览:365层, 68229648参数, 68229632梯度, 258.5 GFLOPs# YOLOv8.0n backbone 骨干层
backbone:# [from, repeats, module, args]- [-1, 1, Conv, [64, 3, 2]]  # 0-P1/2 第0层,-1代表将上层的输出作为本层的输入。第0层的输入是640*640*3的图像。Conv代表卷积层,相应的参数:64代表输出通道数,3代表卷积核大小k,2代表stride步长。卷积后输出的特征图尺寸为320*320*64,长宽为初始图片的1/2- [-1, 1, Conv, [128, 3, 2]]  # 1-P2/4 第1层,本层和上一层是一样的操作(128代表输出通道数,3代表卷积核大小k,2代表stride步长)。卷积后输出的特征图尺寸为160*160*128,长宽为初始图片的1/4- [-1, 3, C2f, [128, True]] # 第2层,本层是C2f模块,3代表本层重复3次。128代表输出通道数,True表示Bottleneck有shortcut。输出的特征图尺寸为160*160*128。- [-1, 1, Conv, [256, 3, 2]]  # 3-P3/8 第3层,进行卷积操作(256代表输出通道数,3代表卷积核大小k,2代表stride步长),输出特征图尺寸为80*80*256(卷积的参数都没变,所以都是长宽变成原来的1/2,和之前一样),特征图的长宽已经变成输入图像的1/8。- [-1, 6, C2f, [256, True]] # 第4层,本层是C2f模块,可以参考第2层的讲解。6代表本层重复6次。256代表输出通道数,True表示Bottleneck有shortcut。经过这层之后,特征图尺寸依旧是80*80*256。- [-1, 1, Conv, [512, 3, 2]]  # 5-P4/16 第5层,进行卷积操作(512代表输出通道数,3代表卷积核大小k,2代表stride步长),输出特征图尺寸为40*40*512(卷积的参数都没变,所以都是长宽变成原来的1/2,和之前一样),特征图的长宽已经变成输入图像的1/16。- [-1, 6, C2f, [512, True]] # 第6层,本层是C2f模块,可以参考第2层的讲解。6代表本层重复6次。512代表输出通道数,True表示Bottleneck有shortcut。经过这层之后,特征图尺寸依旧是40*40*512。- [-1, 1, Conv, [1024, 3, 2]]  # 7-P5/32 第7层,进行卷积操作(1024代表输出通道数,3代表卷积核大小k,2代表stride步长),输出特征图尺寸为20*20*1024(卷积的参数都没变,所以都是长宽变成原来的1/2,和之前一样),特征图的长宽已经变成输入图像的1/32。- [-1, 3, C2f, [1024, True]] #第8层,本层是C2f模块,可以参考第2层的讲解。3代表本层重复3次。1024代表输出通道数,True表示Bottleneck有shortcut。经过这层之后,特征图尺寸依旧是20*20*1024。- [-1, 1, SPPF, [1024, 5]]  # 9 第9层,本层是快速空间金字塔池化层(SPPF)。1024代表输出通道数,5代表池化核大小k。结合模块结构图和代码可以看出,最后concat得到的特征图尺寸是20*20*(512*4),经过一次Conv得到20*20*1024。# YOLOv8.0n head 头部层
head:- [-1, 1, nn.Upsample, [None, 2, 'nearest']] # 第10层,本层是上采样层。-1代表将上层的输出作为本层的输入。None代表上采样的size=None(输出尺寸)不指定。2代表scale_factor=2,表示输出的尺寸是输入尺寸的2倍。mode=nearest代表使用的上采样算法为最近邻插值算法。经过这层之后,特征图的长和宽变成原来的两倍,通道数不变,所以最终尺寸为40*40*1024。- [[-1, 6], 1, Concat, [1]]  # cat backbone P4 第11层,本层是concat层,[-1, 6]代表将上层和第6层的输出作为本层的输入。[1]代表concat拼接的维度是1。从上面的分析可知,上层的输出尺寸是40*40*1024,第6层的输出是40*40*512,最终本层的输出尺寸为40*40*1536。- [-1, 3, C2f, [512]]  # 12 第12层,本层是C2f模块,可以参考第2层的讲解。3代表本层重复3次。512代表输出通道数。与Backbone中C2f不同的是,此处的C2f的bottleneck模块的shortcut=False。- [-1, 1, nn.Upsample, [None, 2, 'nearest']] # 第13层,本层也是上采样层(参考第10层)。经过这层之后,特征图的长和宽变成原来的两倍,通道数不变,所以最终尺寸为80*80*512。- [[-1, 4], 1, Concat, [1]]  # cat backbone P3 第14层,本层是concat层,[-1, 4]代表将上层和第4层的输出作为本层的输入。[1]代表concat拼接的维度是1。从上面的分析可知,上层的输出尺寸是80*80*512,第6层的输出是80*80*256,最终本层的输出尺寸为80*80*768。- [-1, 3, C2f, [256]]  # 15 (P3/8-small) 第15层,本层是C2f模块,可以参考第2层的讲解。3代表本层重复3次。256代表输出通道数。经过这层之后,特征图尺寸变为80*80*256,特征图的长宽已经变成输入图像的1/8。- [-1, 1, Conv, [256, 3, 2]] # 第16层,进行卷积操作(256代表输出通道数,3代表卷积核大小k,2代表stride步长),输出特征图尺寸为40*40*256(卷积的参数都没变,所以都是长宽变成原来的1/2,和之前一样)。- [[-1, 12], 1, Concat, [1]]  # cat head P4 第17层,本层是concat层,[-1, 12]代表将上层和第12层的输出作为本层的输入。[1]代表concat拼接的维度是1。从上面的分析可知,上层的输出尺寸是40*40*256,第12层的输出是40*40*512,最终本层的输出尺寸为40*40*768。- [-1, 3, C2f, [512]]  # 18 (P4/16-medium) 第18层,本层是C2f模块,可以参考第2层的讲解。3代表本层重复3次。512代表输出通道数。经过这层之后,特征图尺寸变为40*40*512,特征图的长宽已经变成输入图像的1/16。- [-1, 1, Conv, [512, 3, 2]] # 第19层,进行卷积操作(512代表输出通道数,3代表卷积核大小k,2代表stride步长),输出特征图尺寸为20*20*512(卷积的参数都没变,所以都是长宽变成原来的1/2,和之前一样)。- [[-1, 9], 1, Concat, [1]]  # cat head P5 第20层,本层是concat层,[-1, 9]代表将上层和第9层的输出作为本层的输入。[1]代表concat拼接的维度是1。从上面的分析可知,上层的输出尺寸是20*20*512,第9层的输出是20*20*1024,最终本层的输出尺寸为20*20*1536。- [-1, 3, C2f, [1024]]  # 21 (P5/32-large) 第21层,本层是C2f模块,可以参考第2层的讲解。3代表本层重复3次。1024代表输出通道数。经过这层之后,特征图尺寸变为20*20*1024,特征图的长宽已经变成输入图像的1/32。- [[15, 18, 21], 1, Detect, [nc]]  # Detect(P3, P4, P5) 第20层,本层是Detect层,[15, 18, 21]代表将第15、18、21层的输出(分别是80*80*256、40*40*512、20*20*1024)作为本层的输入。nc是数据集的类别数。

1、参数配置

在这里插入图片描述

nc:80 # 数据集的类别数,默认coco是80类别(yolov8的权重也是基于此数据集训练出来的),nc此处其实不需要修改,模型会自动根据我们数据集的yaml文件获取此处的数量

scales:# 包含了不同模型配置的尺度参数,调整模型的规模,通过尺度参数可以实现不同复杂度的模型设计。YOLOv8n、YOLOv8s、YOLOv8m、YOLOv8l、YOLOv8x五种模型的区别在于depth、width、max_channels这三个参数的不同。

#model compound scaling constants, i.e. ‘model=yolov8n.yaml’ will call yolov8.yaml with scale ‘n’
#此处的含义大概就是如果我们在训练的指令时候使用model=yolov8.yaml 则对应的是v8n,如果使用model=yolov8s.yaml则对应的是v8s

[depth, width, max_channels]
depth:深度,控制子模块的数量
width: 宽度,控制卷积核的数量
max_channels: 最大通道数

2、backbone模块

在这里插入图片描述
[from, repeats, module, args]
from: 有三种可能的值分别是 -1、具体的数值、list存放数值。
(1)-1代表此层的输入就是上一层的输出
(2)如果是具体的某个数字4则代表本层的输入来自于模型的第四层
(3)有的层是list存在两个值可能是多个值,则代表对应两个值的输出为本层的输入

repeats: 这个参数是为了c2f设置的,其他模块用不到,代表着C2f中Bottleneck重复的次数,当我们的模型用到的是1时候,repeats=3那么则代表C2f当中的Bottleneck串行3个。

module:模块类名,通过这个类名在common.py中寻找相应的类,进行模块化的搭建网络。

args:以conv[64, 3, 2]为例,分别对应[channel, kernel, stride] 。channel是输出feature map的通道数,kernel是卷积核的个数, stride是卷积核移动步幅。此处代表输入到对应模块的参数,此处和parse_model函数中的定义方法有关,对于C2f来说传入的参数->第一个参数是上一个模型的输出通道数,第二个参数就是args的第一个参数,然后以此类推。

在这里插入图片描述

以C2f[128,true]为例,128是输出feature map的通道数,True代表Bottleneck模块中的shortcut=True,m没有写代表False。
以SPPF[1024,5]为例,1024是输出feature map的通道数,5是SPPF模块中池化核的尺寸。
以nn.upsample为例,None表示不指定输出尺寸,2表示输出尺寸为输入尺寸的2倍,“nearest”表示上采样差值方式为最近邻差值。

3、head模块

在这里插入图片描述

head用于将主干网络(backbone)的特征图(feature maps)转化为目标检测的输出结果,head部分定义了模型的检测头,即用于最终目标检测的网络结构。头部网络的主要作用是进行目标分类和定位。它根据颈部网络提供的融合特征图,对每个特征点进行分类(目标类别预测)和定位(边界框预测)。

关键组成:
nn.Upsample:表示上采样层,用于放大特征图。
Concat:表示连接层,用于合并来自不同层的特征。
C2f:层再次出现,可能用于进一步处理合并后的特征。
Detect:层是最终的检测层,负责输出检测结果。

二、模型结构图

YOLOv8(You Only Look Once version 8)目标检测模型的结构图。它展示了模型的三个主要部分:Backbone(主干网络)、Neck(颈部网络)和 Head(头部网络),以及它们的子模块和连接方式。
在这里插入图片描述

概述
提供全新SOTA模型,包括640(P5)和1280(P6)分辨率的目标检测网络和基于YOLACT的实例分割模型。

  • Backbone:骨干网络和neck部分参考了YOLOv7 ELAN的设计思想,将YOLOv5的C3结构换成了梯度流更丰富的C2f结构,并对不同尺度模型调整了不同通道数。
  • Head:Head部分较yolov5而言有两大改进:(1)换成了目前主流的解耦头结构(Decoupled-Head),将分类与检测头分离 (2)将Anchor-Based换成Anchor-Free
  • Loss:YOLOv8抛弃以往IOU匹配或者单边比例的分配方法,使用了Task-Aligned Assigner正负样本匹配方式。2)并引入了 Distribution Focal Loss(DFL)
  • Train:训练的数据增强部分引入了 YOLOX 中的最后 10 epoch 关闭 Mosiac 增强的操作,有效地提升精度

三、模型结构解析

ultralytics/nn/modules.py文件中定义了yolov8网络中的卷积神经单元,也是后续网络魔改的主要文件。

四、模型结构打印

每次进行YOLOv8模型训练前,都会打印相应的模型结构信息,如下图。

在这里插入图片描述

通过查看源码发现,信息是在源码DetectionModel类中,打印出来的。因此我们直接使用该类,传入我们自己的模型配置文件,运行该类即可。

第一步:进入./ultralytics/nn/tasks.py文件,找到DetectionModel类

代码如下:

class DetectionModel(BaseModel):"""YOLOv8 detection model."""def __init__(self, cfg="yolov8n.yaml", ch=3, nc=None, verbose=True):  # model, input channels, number of classes"""Initialize the YOLOv8 detection model with the given config and parameters."""super().__init__()self.yaml = cfg if isinstance(cfg, dict) else yaml_model_load(cfg)  # cfg dictif self.yaml["backbone"][0][2] == "Silence":LOGGER.warning("WARNING ⚠️ YOLOv9 `Silence` module is deprecated in favor of nn.Identity. ""Please delete local *.pt file and re-download the latest model checkpoint.")self.yaml["backbone"][0][2] = "nn.Identity"# Define modelch = self.yaml["ch"] = self.yaml.get("ch", ch)  # input channelsif nc and nc != self.yaml["nc"]:LOGGER.info(f"Overriding model.yaml nc={self.yaml['nc']} with nc={nc}")self.yaml["nc"] = nc  # override YAML valueself.model, self.save = parse_model(deepcopy(self.yaml), ch=ch, verbose=verbose)  # model, savelistself.names = {i: f"{i}" for i in range(self.yaml["nc"])}  # default names dictself.inplace = self.yaml.get("inplace", True)self.end2end = getattr(self.model[-1], "end2end", False)# Build stridesm = self.model[-1]  # Detect()if isinstance(m, Detect):  # includes all Detect subclasses like Segment, Pose, OBB, WorldDetects = 256  # 2x min stridem.inplace = self.inplacedef _forward(x):"""Performs a forward pass through the model, handling different Detect subclass types accordingly."""if self.end2end:return self.forward(x)["one2many"]return self.forward(x)[0] if isinstance(m, (Segment, Pose, OBB)) else self.forward(x)m.stride = torch.tensor([s / x.shape[-2] for x in _forward(torch.zeros(1, ch, s, s))])  # forwardself.stride = m.stridem.bias_init()  # only run onceelse:self.stride = torch.Tensor([32])  # default stride for i.e. RTDETR# Init weights, biasesinitialize_weights(self)if verbose:self.info()LOGGER.info("")def _predict_augment(self, x):"""Perform augmentations on input image x and return augmented inference and train outputs."""if getattr(self, "end2end", False):LOGGER.warning("WARNING ⚠️ End2End model does not support 'augment=True' prediction. ""Reverting to single-scale prediction.")return self._predict_once(x)img_size = x.shape[-2:]  # height, widths = [1, 0.83, 0.67]  # scalesf = [None, 3, None]  # flips (2-ud, 3-lr)y = []  # outputsfor si, fi in zip(s, f):xi = scale_img(x.flip(fi) if fi else x, si, gs=int(self.stride.max()))yi = super().predict(xi)[0]  # forwardyi = self._descale_pred(yi, fi, si, img_size)y.append(yi)y = self._clip_augmented(y)  # clip augmented tailsreturn torch.cat(y, -1), None  # augmented inference, train

第二步:在task.py文件下添加以下代码

# 模型网络结构配置文件路径
yaml_path = 'ultralytics/cfg/models/v8/yolov8n.yaml'
# 改进的模型结构路径
# yaml_path = 'ultralytics/cfg/models/v8/yolov8n-CBAM.yaml'  
# 传入模型网络结构配置文件cfg, nc为模型检测类别数
DetectionModel(cfg=yaml_path,nc=5)

第三步:运行task.py文件即可打印网络参数

效果如下:

在这里插入图片描述

模型配置文件一共有23行,params为每一层的参数量大小,module为每一层的结构名称,arguments为每一层结构需要传入的参数。最后一行summary为总的信息参数,模型一共有25层,参数量(parameters)为:3011823 ,计算量GFLOPs为:8.2

五、查看详细网络结构

第一步:新建tools/DetectModel.py文件

代码如下:

from ultralytics import YOLO
# 加载训练好的模型或者网络结构配置文件
#model = YOLO('best.pt')
model = YOLO('ultralytics/cfg/models/v8/yolov8.yaml')
# 打印模型参数信息
print(model.info())
print(model.info(detailed=True))

第二步:运行DetectModel.py

打印出了模型每一层网络结构的名字、参数量以及该层的结构形状。

layer                                     name  gradient   parameters                shape         mu      sigma0                      model.0.conv.weight      True          432        [16, 3, 3, 3]    -0.0018      0.112 torch.float321                        model.0.bn.weight      True           16                 [16]          1          0 torch.float322                          model.0.bn.bias      True           16                 [16]          0          0 torch.float323                      model.1.conv.weight      True         4608       [32, 16, 3, 3]  -5.27e-05     0.0479 torch.float324                        model.1.bn.weight      True           32                 [32]          1          0 torch.float325                          model.1.bn.bias      True           32                 [32]          0          0 torch.float326                  model.2.cv1.conv.weight      True         1024       [32, 32, 1, 1]    0.00697      0.104 torch.float327                    model.2.cv1.bn.weight      True           32                 [32]          1          0 torch.float328                      model.2.cv1.bn.bias      True           32                 [32]          0          0 torch.float329                  model.2.cv2.conv.weight      True         1536       [32, 48, 1, 1]    0.00101     0.0828 torch.float3210                    model.2.cv2.bn.weight      True           32                 [32]          1          0 torch.float3211                      model.2.cv2.bn.bias      True           32                 [32]          0          0 torch.float3212              model.2.m.0.cv1.conv.weight      True         2304       [16, 16, 3, 3]  -0.000518     0.0479 torch.float3213                model.2.m.0.cv1.bn.weight      True           16                 [16]          1          0 torch.float3214                  model.2.m.0.cv1.bn.bias      True           16                 [16]          0          0 torch.float3215              model.2.m.0.cv2.conv.weight      True         2304       [16, 16, 3, 3]     0.0003     0.0483 torch.float3216                model.2.m.0.cv2.bn.weight      True           16                 [16]          1          0 torch.float3217                  model.2.m.0.cv2.bn.bias      True           16                 [16]          0          0 torch.float3218                      model.3.conv.weight      True        18432       [64, 32, 3, 3]  -2.67e-05      0.034 torch.float3219                        model.3.bn.weight      True           64                 [64]          1          0 torch.float3220                          model.3.bn.bias      True           64                 [64]          0          0 torch.float3221                  model.4.cv1.conv.weight      True         4096       [64, 64, 1, 1]   -0.00063      0.072 torch.float3222                    model.4.cv1.bn.weight      True           64                 [64]          1          0 torch.float3223                      model.4.cv1.bn.bias      True           64                 [64]          0          0 torch.float3224                  model.4.cv2.conv.weight      True         8192      [64, 128, 1, 1]   0.000625     0.0512 torch.float3225                    model.4.cv2.bn.weight      True           64                 [64]          1          0 torch.float3226                      model.4.cv2.bn.bias      True           64                 [64]          0          0 torch.float3227              model.4.m.0.cv1.conv.weight      True         9216       [32, 32, 3, 3]   0.000206     0.0341 torch.float3228                model.4.m.0.cv1.bn.weight      True           32                 [32]          1          0 torch.float3229                  model.4.m.0.cv1.bn.bias      True           32                 [32]          0          0 torch.float3230              model.4.m.0.cv2.conv.weight      True         9216       [32, 32, 3, 3]  -7.44e-05      0.034 torch.float3231                model.4.m.0.cv2.bn.weight      True           32                 [32]          1          0 torch.float3232                  model.4.m.0.cv2.bn.bias      True           32                 [32]          0          0 torch.float3233              model.4.m.1.cv1.conv.weight      True         9216       [32, 32, 3, 3]  -0.000666     0.0342 torch.float3234                model.4.m.1.cv1.bn.weight      True           32                 [32]          1          0 torch.float3235                  model.4.m.1.cv1.bn.bias      True           32                 [32]          0          0 torch.float3236              model.4.m.1.cv2.conv.weight      True         9216       [32, 32, 3, 3]   6.18e-05     0.0341 torch.float3237                model.4.m.1.cv2.bn.weight      True           32                 [32]          1          0 torch.float3238                  model.4.m.1.cv2.bn.bias      True           32                 [32]          0          0 torch.float3239                      model.5.conv.weight      True        73728      [128, 64, 3, 3]   -6.7e-05     0.0241 torch.float3240                        model.5.bn.weight      True          128                [128]          1          0 torch.float3241                          model.5.bn.bias      True          128                [128]          0          0 torch.float3242                  model.6.cv1.conv.weight      True        16384     [128, 128, 1, 1]  -0.000304      0.051 torch.float3243                    model.6.cv1.bn.weight      True          128                [128]          1          0 torch.float3244                      model.6.cv1.bn.bias      True          128                [128]          0          0 torch.float3245                  model.6.cv2.conv.weight      True        32768     [128, 256, 1, 1]   4.06e-05      0.036 torch.float3246                    model.6.cv2.bn.weight      True          128                [128]          1          0 torch.float3247                      model.6.cv2.bn.bias      True          128                [128]          0          0 torch.float3248              model.6.m.0.cv1.conv.weight      True        36864       [64, 64, 3, 3]  -0.000123     0.0241 torch.float3249                model.6.m.0.cv1.bn.weight      True           64                 [64]          1          0 torch.float3250                  model.6.m.0.cv1.bn.bias      True           64                 [64]          0          0 torch.float3251              model.6.m.0.cv2.conv.weight      True        36864       [64, 64, 3, 3]  -6.25e-05      0.024 torch.float3252                model.6.m.0.cv2.bn.weight      True           64                 [64]          1          0 torch.float3253                  model.6.m.0.cv2.bn.bias      True           64                 [64]          0          0 torch.float3254              model.6.m.1.cv1.conv.weight      True        36864       [64, 64, 3, 3]   2.97e-05     0.0241 torch.float3255                model.6.m.1.cv1.bn.weight      True           64                 [64]          1          0 torch.float3256                  model.6.m.1.cv1.bn.bias      True           64                 [64]          0          0 torch.float3257              model.6.m.1.cv2.conv.weight      True        36864       [64, 64, 3, 3]   0.000165     0.0241 torch.float3258                model.6.m.1.cv2.bn.weight      True           64                 [64]          1          0 torch.float3259                  model.6.m.1.cv2.bn.bias      True           64                 [64]          0          0 torch.float3260                      model.7.conv.weight      True       294912     [256, 128, 3, 3]  -1.75e-05      0.017 torch.float3261                        model.7.bn.weight      True          256                [256]          1          0 torch.float3262                          model.7.bn.bias      True          256                [256]          0          0 torch.float3263                  model.8.cv1.conv.weight      True        65536     [256, 256, 1, 1]   0.000161      0.036 torch.float3264                    model.8.cv1.bn.weight      True          256                [256]          1          0 torch.float3265                      model.8.cv1.bn.bias      True          256                [256]          0          0 torch.float3266                  model.8.cv2.conv.weight      True        98304     [256, 384, 1, 1]   0.000193     0.0295 torch.float3267                    model.8.cv2.bn.weight      True          256                [256]          1          0 torch.float3268                      model.8.cv2.bn.bias      True          256                [256]          0          0 torch.float3269              model.8.m.0.cv1.conv.weight      True       147456     [128, 128, 3, 3]   5.85e-05      0.017 torch.float3270                model.8.m.0.cv1.bn.weight      True          128                [128]          1          0 torch.float3271                  model.8.m.0.cv1.bn.bias      True          128                [128]          0          0 torch.float3272              model.8.m.0.cv2.conv.weight      True       147456     [128, 128, 3, 3]  -3.18e-05      0.017 torch.float3273                model.8.m.0.cv2.bn.weight      True          128                [128]          1          0 torch.float3274                  model.8.m.0.cv2.bn.bias      True          128                [128]          0          0 torch.float3275                  model.9.cv1.conv.weight      True        32768     [128, 256, 1, 1]   9.07e-05      0.036 torch.float3276                    model.9.cv1.bn.weight      True          128                [128]          1          0 torch.float3277                      model.9.cv1.bn.bias      True          128                [128]          0          0 torch.float3278                  model.9.cv2.conv.weight      True       131072     [256, 512, 1, 1]  -6.56e-05     0.0255 torch.float3279                    model.9.cv2.bn.weight      True          256                [256]          1          0 torch.float3280                      model.9.cv2.bn.bias      True          256                [256]          0          0 torch.float3281                 model.12.cv1.conv.weight      True        49152     [128, 384, 1, 1]   3.35e-05     0.0295 torch.float3282                   model.12.cv1.bn.weight      True          128                [128]          1          0 torch.float3283                     model.12.cv1.bn.bias      True          128                [128]          0          0 torch.float3284                 model.12.cv2.conv.weight      True        24576     [128, 192, 1, 1]   0.000263     0.0417 torch.float3285                   model.12.cv2.bn.weight      True          128                [128]          1          0 torch.float3286                     model.12.cv2.bn.bias      True          128                [128]          0          0 torch.float3287             model.12.m.0.cv1.conv.weight      True        36864       [64, 64, 3, 3]  -9.72e-05     0.0241 torch.float3288               model.12.m.0.cv1.bn.weight      True           64                 [64]          1          0 torch.float3289                 model.12.m.0.cv1.bn.bias      True           64                 [64]          0          0 torch.float3290             model.12.m.0.cv2.conv.weight      True        36864       [64, 64, 3, 3]   4.32e-05     0.0241 torch.float3291               model.12.m.0.cv2.bn.weight      True           64                 [64]          1          0 torch.float3292                 model.12.m.0.cv2.bn.bias      True           64                 [64]          0          0 torch.float3293                 model.15.cv1.conv.weight      True        12288      [64, 192, 1, 1]  -0.000269     0.0416 torch.float3294                   model.15.cv1.bn.weight      True           64                 [64]          1          0 torch.float3295                     model.15.cv1.bn.bias      True           64                 [64]          0          0 torch.float3296                 model.15.cv2.conv.weight      True         6144       [64, 96, 1, 1]   0.000311     0.0588 torch.float3297                   model.15.cv2.bn.weight      True           64                 [64]          1          0 torch.float3298                     model.15.cv2.bn.bias      True           64                 [64]          0          0 torch.float3299             model.15.m.0.cv1.conv.weight      True         9216       [32, 32, 3, 3]   6.21e-05     0.0341 torch.float32100               model.15.m.0.cv1.bn.weight      True           32                 [32]          1          0 torch.float32101                 model.15.m.0.cv1.bn.bias      True           32                 [32]          0          0 torch.float32102             model.15.m.0.cv2.conv.weight      True         9216       [32, 32, 3, 3]   0.000244     0.0336 torch.float32103               model.15.m.0.cv2.bn.weight      True           32                 [32]          1          0 torch.float32104                 model.15.m.0.cv2.bn.bias      True           32                 [32]          0          0 torch.float32105                     model.16.conv.weight      True        36864       [64, 64, 3, 3]   -0.00011      0.024 torch.float32106                       model.16.bn.weight      True           64                 [64]          1          0 torch.float32107                         model.16.bn.bias      True           64                 [64]          0          0 torch.float32108                 model.18.cv1.conv.weight      True        24576     [128, 192, 1, 1]   0.000266     0.0417 torch.float32109                   model.18.cv1.bn.weight      True          128                [128]          1          0 torch.float32110                     model.18.cv1.bn.bias      True          128                [128]          0          0 torch.float32111                 model.18.cv2.conv.weight      True        24576     [128, 192, 1, 1]   0.000163     0.0416 torch.float32112                   model.18.cv2.bn.weight      True          128                [128]          1          0 torch.float32113                     model.18.cv2.bn.bias      True          128                [128]          0          0 torch.float32114             model.18.m.0.cv1.conv.weight      True        36864       [64, 64, 3, 3]   -6.7e-05      0.024 torch.float32115               model.18.m.0.cv1.bn.weight      True           64                 [64]          1          0 torch.float32116                 model.18.m.0.cv1.bn.bias      True           64                 [64]          0          0 torch.float32117             model.18.m.0.cv2.conv.weight      True        36864       [64, 64, 3, 3]  -0.000178      0.024 torch.float32118               model.18.m.0.cv2.bn.weight      True           64                 [64]          1          0 torch.float32119                 model.18.m.0.cv2.bn.bias      True           64                 [64]          0          0 torch.float32120                     model.19.conv.weight      True       147456     [128, 128, 3, 3]  -4.19e-05      0.017 torch.float32121                       model.19.bn.weight      True          128                [128]          1          0 torch.float32122                         model.19.bn.bias      True          128                [128]          0          0 torch.float32123                 model.21.cv1.conv.weight      True        98304     [256, 384, 1, 1]   -3.8e-05     0.0294 torch.float32124                   model.21.cv1.bn.weight      True          256                [256]          1          0 torch.float32125                     model.21.cv1.bn.bias      True          256                [256]          0          0 torch.float32126                 model.21.cv2.conv.weight      True        98304     [256, 384, 1, 1]   1.01e-05     0.0294 torch.float32127                   model.21.cv2.bn.weight      True          256                [256]          1          0 torch.float32128                     model.21.cv2.bn.bias      True          256                [256]          0          0 torch.float32129             model.21.m.0.cv1.conv.weight      True       147456     [128, 128, 3, 3]  -6.31e-05      0.017 torch.float32130               model.21.m.0.cv1.bn.weight      True          128                [128]          1          0 torch.float32131                 model.21.m.0.cv1.bn.bias      True          128                [128]          0          0 torch.float32132             model.21.m.0.cv2.conv.weight      True       147456     [128, 128, 3, 3]   1.04e-05      0.017 torch.float32133               model.21.m.0.cv2.bn.weight      True          128                [128]          1          0 torch.float32134                 model.21.m.0.cv2.bn.bias      True          128                [128]          0          0 torch.float32135             model.22.cv2.0.0.conv.weight      True        36864       [64, 64, 3, 3]  -0.000182     0.0241 torch.float32136               model.22.cv2.0.0.bn.weight      True           64                 [64]          1          0 torch.float32137                 model.22.cv2.0.0.bn.bias      True           64                 [64]          0          0 torch.float32138             model.22.cv2.0.1.conv.weight      True        36864       [64, 64, 3, 3]   0.000133     0.0241 torch.float32139               model.22.cv2.0.1.bn.weight      True           64                 [64]          1          0 torch.float32140                 model.22.cv2.0.1.bn.bias      True           64                 [64]          0          0 torch.float32141                  model.22.cv2.0.2.weight      True         4096       [64, 64, 1, 1]  -0.000657     0.0724 torch.float32142                    model.22.cv2.0.2.bias      True           64                 [64]          1          0 torch.float32143             model.22.cv2.1.0.conv.weight      True        73728      [64, 128, 3, 3]  -6.36e-06     0.0171 torch.float32144               model.22.cv2.1.0.bn.weight      True           64                 [64]          1          0 torch.float32145                 model.22.cv2.1.0.bn.bias      True           64                 [64]          0          0 torch.float32146             model.22.cv2.1.1.conv.weight      True        36864       [64, 64, 3, 3]  -0.000187      0.024 torch.float32147               model.22.cv2.1.1.bn.weight      True           64                 [64]          1          0 torch.float32148                 model.22.cv2.1.1.bn.bias      True           64                 [64]          0          0 torch.float32149                  model.22.cv2.1.2.weight      True         4096       [64, 64, 1, 1]  -0.000317     0.0718 torch.float32150                    model.22.cv2.1.2.bias      True           64                 [64]          1          0 torch.float32151             model.22.cv2.2.0.conv.weight      True       147456      [64, 256, 3, 3]  -2.29e-05      0.012 torch.float32152               model.22.cv2.2.0.bn.weight      True           64                 [64]          1          0 torch.float32153                 model.22.cv2.2.0.bn.bias      True           64                 [64]          0          0 torch.float32154             model.22.cv2.2.1.conv.weight      True        36864       [64, 64, 3, 3]  -0.000249     0.0241 torch.float32155               model.22.cv2.2.1.bn.weight      True           64                 [64]          1          0 torch.float32156                 model.22.cv2.2.1.bn.bias      True           64                 [64]          0          0 torch.float32157                  model.22.cv2.2.2.weight      True         4096       [64, 64, 1, 1]   -0.00175     0.0713 torch.float32158                    model.22.cv2.2.2.bias      True           64                 [64]          1          0 torch.float32159             model.22.cv3.0.0.conv.weight      True        36864       [64, 64, 3, 3]   8.05e-05     0.0241 torch.float32160               model.22.cv3.0.0.bn.weight      True           64                 [64]          1          0 torch.float32161                 model.22.cv3.0.0.bn.bias      True           64                 [64]          0          0 torch.float32162             model.22.cv3.0.1.conv.weight      True        36864       [64, 64, 3, 3]  -0.000122     0.0241 torch.float32163               model.22.cv3.0.1.bn.weight      True           64                 [64]          1          0 torch.float32164                 model.22.cv3.0.1.bn.bias      True           64                 [64]          0          0 torch.float32165                  model.22.cv3.0.2.weight      True         2880       [45, 64, 1, 1]  -0.000135     0.0724 torch.float32166                    model.22.cv3.0.2.bias      True           45                 [45]        -11   9.64e-07 torch.float32167             model.22.cv3.1.0.conv.weight      True        73728      [64, 128, 3, 3]  -1.51e-05      0.017 torch.float32168               model.22.cv3.1.0.bn.weight      True           64                 [64]          1          0 torch.float32169                 model.22.cv3.1.0.bn.bias      True           64                 [64]          0          0 torch.float32170             model.22.cv3.1.1.conv.weight      True        36864       [64, 64, 3, 3]    4.7e-05      0.024 torch.float32171               model.22.cv3.1.1.bn.weight      True           64                 [64]          1          0 torch.float32172                 model.22.cv3.1.1.bn.bias      True           64                 [64]          0          0 torch.float32173                  model.22.cv3.1.2.weight      True         2880       [45, 64, 1, 1]     -0.003      0.072 torch.float32174                    model.22.cv3.1.2.bias      True           45                 [45]      -9.57   9.64e-07 torch.float32175             model.22.cv3.2.0.conv.weight      True       147456      [64, 256, 3, 3]  -3.16e-05      0.012 torch.float32176               model.22.cv3.2.0.bn.weight      True           64                 [64]          1          0 torch.float32177                 model.22.cv3.2.0.bn.bias      True           64                 [64]          0          0 torch.float32178             model.22.cv3.2.1.conv.weight      True        36864       [64, 64, 3, 3]  -7.14e-05     0.0241 torch.float32179               model.22.cv3.2.1.bn.weight      True           64                 [64]          1          0 torch.float32180                 model.22.cv3.2.1.bn.bias      True           64                 [64]          0          0 torch.float32181                  model.22.cv3.2.2.weight      True         2880       [45, 64, 1, 1]  -0.000625     0.0719 torch.float32182                    model.22.cv3.2.2.bias      True           45                 [45]      -8.19          0 torch.float32183                 model.22.dfl.conv.weight     False           16        [1, 16, 1, 1]        7.5       4.76 torch.float32
YOLOv8 summary: 225 layers, 3,019,623 parameters, 3,019,607 gradients, 8.2 GFLOPs
(225, 3019623, 3019607, 8.2414592)

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

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

相关文章

C语言同时在一行声明指针和整型变量

如果这么写, int *f, g; 并没有声明2个指针,编译器自己会识别,f是一个指针,g是一个整型变量; void CTszbView::OnDraw(CDC* pDC) {CTszbDoc* pDoc GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for nat…

Java算法之递归算法-如何计算阶乘的值

上一篇学了递归之后,练习一下递归算法。 题目:使用递归算法计算阶乘的值,也就是5!5*4*3*2*1,直接使用循环是非常简单的,这边练习一下递归算法。 先写一下两个条件 基线条件:等于1的时候返回1…

学习C语言第十四天(指针练习)

1.第一题C 2.第二题C 3.第三题 00345 short类型解引用一次访问两个字节 4.第四题 6,12 5.第五题C 6.第六题 下面代码结果是0x11223300 7.第七题 int main() {int a 0;int n 0;scanf("%d %d",&a,&n);int i 0;int k 0;int sum 0;for (i 0;…

Docker 搭建Elasticsearch详细步骤

本章教程使用Docker搭建Elasticsearch环境。 一、拉取镜像 docker pull docker.elastic.co/elasticsearch/elasticsearch:8.8.2二、运行容器 docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-n

【Rust】所有权OwnerShip

什么是所有权 rust使用由编译器检查的一些规则构成的所有权系统来管理内存。且这不会影响程序的运行效率。 所有权规则 rust中每一个每一个值都有一个owner。在同一时刻,只能有一个owner。当这个owner超过范围,则该值会被丢弃。 String类型 为什么需…

kitti数据集转为bag

下载原始的数据集后,通过终端来运行: unzip 2011_10_03_calib.zip和 unzip 2011_10_03_drive_0047_sync.zip这样这个文件夹才算准备好: 然后去下载kitti2bag工具: pip install kitti2bag然后去2011_10_03文件夹下执行&#xf…

photoshop学习笔记——选区3 选区的变化

选区制作完成之后可以对选区进行变化 主要有: 反选:shift ctrl I 变换 修改: 边界 设置选区的边界大小 类似 CSS中的borderSize平滑 对选区的角进行平滑扩展 向外扩展选区收缩 向内收缩选区羽化 让边界变得过渡透明度 设置…

python安装python-bioformats库教程

在python中安装python-bioformats库,可能并不是那么顺利,需要注意一下细节问题。 过程中主要遇到以下报错信息: error: subprocess-exited-with-error python setup.py egg_info did not run successfully.│ exit code: 1╰─> [10 lines of output]Traceback (most rec…

Hello 算法:动画图解、一键运行的数据结构与算法教程

Hello 算法 《Hello 算法》是一份开源、免费的数据结构与算法入门教程,特别适合新手。全书采用动画图解,内容清晰易懂,学习曲线平滑,引导初学者探索数据结构与算法的知识地图。源代码可以一键运行,帮助读者通过练习提…

yolov5-7在opencv里跑自己的onnx模型

先把模型放在如下目录 运行如下代码 import cv2 import numpy as npclass Onnx_clf:def __init__(self, onnx:strdnn_model1/plane02.onnx, img_size640, classlist:list[plane]) -> None: func: 读取onnx模型,并进行目标识别para onnx:模型路径img_size:输出图片大小,和模…

智慧校园班级信息基础数据维护功能概述

在智慧校园的基础平台管理中,班级信息管理为所有的业务模块提供了最小单位的基础数据。它不仅是连接学生、教师与学校管理层的桥梁,更是优化教育资源分配、提升教学质量的催化剂。智慧校园通过融合一系列智能化工具,实现了对班级信息的精细化…

HarmonyOS 质量、测试、上架速浏

1.应用质量要求: 1. 应用体验质量建议: 功能数据完备 功能完备 数据完备 基础体验要求 基础约束 兼容性 稳定性 性能 功耗 安全…

JavaScript(17)——事件监听

什么是事件? 事件是在编程时系统内发生的动作或发生的事情,比如用户在网页上单击一个按钮 什么是事件监听? 就是让程序检测是否有事件产生,一旦有事件触发,就立刻调用一个函数做出响应,也称为绑定事件或…

扫雷小游戏纯后端版

package com.wind;import java.util.Random; import java.util.Scanner;public class ResultLei {static Random random new Random();public static void main(String[] args) {boolean end true;while (end) {System.out.println("请输入你选择的难度对应的数字&#…

MySQL大框架总结

1.DDL,DML,DQL,DCL的区别 (由于DCL是关乎用户的,以下内容重点讲述数据库,表与数据的操作,所以对DCL不详细赘述) DDL DML DQL DCL 中文/英文 数据库定义语言 data definition language 数据库操作语言 data mani…

区块链技术如何重塑医疗健康行业未来?

区块链在医疗领域的应用日益广泛,主要体现在以下几个方面: 一、医疗数据管理 电子病历管理: 区块链技术可以用于构建去中心化的电子病历系统,确保病历数据的不可篡改性和安全性。患者可以通过区块链平台安全地管理自己的电子病历…

向量数据库:大模型的海量记忆体

🏖前言 在大模型爆发以后,有越来越多的公司需要用到专有的数据库,来存放百亿级甚至是千亿级的数据。在此基础上,纷纷涌现出一些企业去探索相关数据库的落地方案。在下面的文章中,就将来聊聊,关于大模型在向…

高并发内存池——链表设计

自由链表类的设计 由于申请的空间块经过对齐之后大小至少为8,因此可以考虑在未被使用的内存块中取前8字节存储下一个空间的地址 FreeList类初步声明 class FreeList { private:void* _freelistnullptr; //自由链表头指针size_t _size0; //自由链表的长度size_t …

硅纪元AI应用推荐 | 豆包整容成了浏览器,让你的电脑秒变AI PC

“硅纪元AI应用推荐”栏目,为您精选最新、最实用的人工智能应用,无论您是AI发烧友还是新手,都能在这里找到提升生活和工作的利器。与我们一起探索AI的无限可能,开启智慧新时代! 亲爱的技术宅们、办公高手们&#xff0c…

Spring源码-从源码层面讲FactoryBean接口的使用

一般情况下,Spring通过反射机制利用bean的class属性指定实现类来实例化bean。在某些情况下,实例化bean过程比较复杂,如果按照传统的方式,则需要在标签中提供大量的配置信息,配置方式的灵活性是受限的。为此&#xff0c…