【YOLO-v3 SPP】yolo数据结构 + 配置文件解读 + netron 网络结构
创始人
2025-05-30 17:49:40
0

​论文名称:YOLOv3: An Incremental Improvement
论文下载地址: https://arxiv.org/abs/1804.02767
代码仓库地址:YOLOv3 SPP网络代码仓库(Pytorch版)
参考仓库地址:keras-yolo3

参考视频:
\quad YOLO系列理论视频合集
\quad YOLOv3 SPP网络源码讲解(Pytorch版)


目录

  • 1、数据文件结构 (yolo格式)
  • 2、网络结构
  • 3、配置文件 .cfg 解读
    • 1)convolutional层
    • 2)shortcut层
    • 3)maxpool层
    • 4)route层
    • 5)upsample层
    • 6)yolo层

1、数据文件结构 (yolo格式)

yolo 格式:

  • 标注数据以 .txt 文件进行存储,
  • 每个.txt 文件对应一张图像
  • .txt 文件中的每一行对应该图像中一个 object
  • 每行的格式是:class, x_center, y_center, width, height
  • 方框的坐标( x_center, y_center, width, height)必须要归一化到 0 ~ 1,如果方框以像素为单位,请将x_center和width除以图像宽度,将y_center 和 height除以图像高度。
  • 类别class 必须从0开始
    在这里插入图片描述

2、网络结构

我用 netron 可视化了网络,图像太长,我放在了文章的最后 (最最后,还附有用 pycharm 输出的网络模型)
在这里插入图片描述

网络最后的输出 (以 pascal voc 为例, 有20个类别):
1)若原图像尺寸为 512×512512 \times 512512×512 ,网络的3个尺度输出分别为(16, 16, 75), (32, 32, 75), (64, 64, 75)
2)若原图像尺寸为 416×416416 \times 416416×416 ,网络的3个尺度输出分别为(13, 13, 75), (26, 26, 75), (52, 52, 75)

3个尺度表示 原图被缩减了 8倍, 16倍, 32倍
75 表示 4个坐标信息(center_x, center_y, weight, height) + 1个置信度信息 + 20个类别的概率


3、配置文件 .cfg 解读

图片来源于:霹雳吧啦Wz 的bilibili视频讲解

1)convolutional层

注意 pad 的取值规则:pad=1 表示 padding模式为same, 即 padding=kernel_size//2 ;; pad=0 表示不添加padding

2)shortcut层

将上一层的输出与 第 -3 层的输出进行 跨层连接,也就是 add 操作,需要保证 上一层的输出与 第-3层的输出的 尺寸完全一样。

在这里插入图片描述

3)maxpool层

默认: padding = (kernel_size) // 2

在这里插入图片描述

4)route层

a、layers 只有一个值, 比如 layers=-2。  表示返回到 第-2层,或者说指向 第-2层, 后面的操作会在 第-2层的基础上继续
b、layers 有多个值, 比如 layer = -1, -3, -5, -6。  表示 拼接(concatnate) 第 -1, -3, -5, -6 层

在这里插入图片描述

5)upsample层

在这里插入图片描述

6)yolo层

classes 表示类别数, COCO 数据集的类别数为80, PASCAL VOC 类别为20
mask 是 anchors 的索引,指明用哪几个 anchors, 比如 mask=0, 1, 2, 表示使用 前3个anchors
anchors 表示 anchor 的尺寸,一共生成3个尺度的检测输出, 每个尺度的分别有 3个尺寸的 anchor。
在这里插入图片描述
在这里插入图片描述



netron 可视化 网络结构
在这里插入图片描述

** 如下,WeightedFeatureFusion 就是 shortcut;\quad FeatureConcat 就是 concatenate

ModuleList((0): Sequential((Conv2d): Conv2d(3, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(1): Sequential((Conv2d): Conv2d(32, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(2): Sequential((Conv2d): Conv2d(64, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(3): Sequential((Conv2d): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(4): WeightedFeatureFusion()(5): Sequential((Conv2d): Conv2d(64, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(6): Sequential((Conv2d): Conv2d(128, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(7): Sequential((Conv2d): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(8): WeightedFeatureFusion()(9): Sequential((Conv2d): Conv2d(128, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(10): Sequential((Conv2d): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(11): WeightedFeatureFusion()(12): Sequential((Conv2d): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(13): Sequential((Conv2d): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(14): Sequential((Conv2d): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(15): WeightedFeatureFusion()(16): Sequential((Conv2d): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(17): Sequential((Conv2d): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(18): WeightedFeatureFusion()(19): Sequential((Conv2d): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(20): Sequential((Conv2d): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(21): WeightedFeatureFusion()(22): Sequential((Conv2d): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(23): Sequential((Conv2d): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(24): WeightedFeatureFusion()(25): Sequential((Conv2d): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(26): Sequential((Conv2d): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(27): WeightedFeatureFusion()(28): Sequential((Conv2d): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(29): Sequential((Conv2d): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(30): WeightedFeatureFusion()(31): Sequential((Conv2d): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(32): Sequential((Conv2d): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(33): WeightedFeatureFusion()(34): Sequential((Conv2d): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(35): Sequential((Conv2d): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(36): WeightedFeatureFusion()(37): Sequential((Conv2d): Conv2d(256, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(38): Sequential((Conv2d): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(39): Sequential((Conv2d): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(40): WeightedFeatureFusion()(41): Sequential((Conv2d): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(42): Sequential((Conv2d): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(43): WeightedFeatureFusion()(44): Sequential((Conv2d): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(45): Sequential((Conv2d): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(46): WeightedFeatureFusion()(47): Sequential((Conv2d): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(48): Sequential((Conv2d): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(49): WeightedFeatureFusion()(50): Sequential((Conv2d): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(51): Sequential((Conv2d): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(52): WeightedFeatureFusion()(53): Sequential((Conv2d): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(54): Sequential((Conv2d): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(55): WeightedFeatureFusion()(56): Sequential((Conv2d): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(57): Sequential((Conv2d): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(58): WeightedFeatureFusion()(59): Sequential((Conv2d): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(60): Sequential((Conv2d): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(61): WeightedFeatureFusion()(62): Sequential((Conv2d): Conv2d(512, 1024, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(63): Sequential((Conv2d): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(64): Sequential((Conv2d): Conv2d(512, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(65): WeightedFeatureFusion()(66): Sequential((Conv2d): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(67): Sequential((Conv2d): Conv2d(512, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(68): WeightedFeatureFusion()(69): Sequential((Conv2d): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(70): Sequential((Conv2d): Conv2d(512, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(71): WeightedFeatureFusion()(72): Sequential((Conv2d): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(73): Sequential((Conv2d): Conv2d(512, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(74): WeightedFeatureFusion()(75): Sequential((Conv2d): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(76): Sequential((Conv2d): Conv2d(512, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(77): Sequential((Conv2d): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(78): MaxPool2d(kernel_size=5, stride=1, padding=2, dilation=1, ceil_mode=False)(79): FeatureConcat()(80): MaxPool2d(kernel_size=9, stride=1, padding=4, dilation=1, ceil_mode=False)(81): FeatureConcat()(82): MaxPool2d(kernel_size=13, stride=1, padding=6, dilation=1, ceil_mode=False)(83): FeatureConcat()(84): Sequential((Conv2d): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(85): Sequential((Conv2d): Conv2d(512, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(86): Sequential((Conv2d): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(87): Sequential((Conv2d): Conv2d(512, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(88): Sequential((Conv2d): Conv2d(1024, 75, kernel_size=(1, 1), stride=(1, 1)))(89): YOLOLayer()(90): FeatureConcat()(91): Sequential((Conv2d): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(92): Upsample(scale_factor=2.0, mode=nearest)(93): FeatureConcat()(94): Sequential((Conv2d): Conv2d(768, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(95): Sequential((Conv2d): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(96): Sequential((Conv2d): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(97): Sequential((Conv2d): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(98): Sequential((Conv2d): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(99): Sequential((Conv2d): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(100): Sequential((Conv2d): Conv2d(512, 75, kernel_size=(1, 1), stride=(1, 1)))(101): YOLOLayer()(102): FeatureConcat()(103): Sequential((Conv2d): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(104): Upsample(scale_factor=2.0, mode=nearest)(105): FeatureConcat()(106): Sequential((Conv2d): Conv2d(384, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(107): Sequential((Conv2d): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(108): Sequential((Conv2d): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(109): Sequential((Conv2d): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(110): Sequential((Conv2d): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(111): Sequential((Conv2d): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)(BatchNorm2d): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(activation): LeakyReLU(negative_slope=0.1, inplace=True))(112): Sequential((Conv2d): Conv2d(256, 75, kernel_size=(1, 1), stride=(1, 1)))(113): YOLOLayer()
)

相关内容

热门资讯

洛凯股份新增“昨日涨停”概念 2025年6月10日,洛凯股份(sh603829)新增“昨日涨停”概念。根据喜娜AI概念解读,202...
“美国出了什么问题” ——在洛... 新华社洛杉矶6月8日电(记者高山)橡皮子弹与催泪弹齐飞,刺耳警笛与高声怒骂交织。洛杉矶警方和美国国民...
金山办公完成2024年限制性股... 来源:中访网财观中访网数据  北京金山办公软件股份有限公司(证券代码:688111,简称:金山办公)...
国足“荣誉战”仅一条路可选 所谓“不谋万事者不足谋一时,不谋全局者不足谋一域”。当中国队客以场0∶1不敌印尼队、提前无缘美加墨世...
一本90页的科普故事,已经看了... 一本90页的科普故事,已经看了42页,剩下的每天看8页。可以提什么问题?快点 第一个问题,还剩多少页...
首开股份拟为常熟虞茂1.56亿... 来源:中访网财观中访网数据  北京首都开发股份有限公司(600376.SH)于6月6日召开董事会,审...
健康有序发展平台经济 转自:衢州日报  健康有序发展平台经济国家市场监管总局近日发布《网络交易平台收费行为合规指南(征求意...
金佛山藏着一个“海螺沟” □重庆晨报特约撰稿 余道勇 在金佛山东麓,贵州道真与重庆南川边界处有一条美丽的小溪流,叫石梁河。石梁...
北方长龙:6月9日召开董事会会... 北方长龙6月9日晚间发布公告称,公司第二届第十二次董事会会议于2025年6月9日以现场与通讯相结合的...
综艺股份:6月9日召开董事会会... 综艺股份6月9日晚间发布公告称,公司第十一届第十九次董事会会议于2025年6月9日以现场会议结合通讯...
重庆电动车主首获“售电”收益 转自:衢州日报  新华社重庆6月9日电 (记者 黄兴) 电动汽车“化身”储能单元,向电网反向“售电”...
纽约联储调查:关税战降温背景下... 财联社6月10日讯(编辑 牛占林)当地时间周一,纽约联储公布的一项调查显示,随着关税战的降温,5月份...
警民合力救助世界濒危动物白颈乌... 本报讯(记者 宁亚琴)“警察同志,我家阳台上飞来了一只奇怪的鸟,我从来没见过,可能是什么保护动物,你...
蚂蚁公主为什么不播了 蚂蚁公主为什么不播了不知道。蚂蚁公主是2010年在少儿频道上播放的一部动画片,讲述的都是动物森林里小...
天神卡好还是米粉卡好?联通信号... 天神卡好还是米粉卡好?联通信号好吗?我想换号,但是中国移动网太慢了,相识是联通。中国移动上网非常慢,...
我男朋友今天突然跟我说有一个女... 我男朋友今天突然跟我说有一个女生在追他,他是什么意思?他在欲擒故纵叫你爱他多点s在一起多久了
我的世界手机版怎么找地图 我的世界手机版怎么找地图基本上来说,手机版和电脑版的合成表都是一样的地图都是8张纸加一个指南针,在工...
小时候看的动画片90后,大家谁... 小时候看的动画片90后,大家谁能帮我回忆起来么长袜子皮皮主人公皮皮是个奇怪而有趣的小姑娘。她有一个奇...
汪浚熙今年几岁 汪浚熙今年几岁14岁tf家族四代汪俊熙上初二年级。王俊熙上初二了汪浚熙于2008年出生,后被时代俊峰...
刺客信条2,追杀的任务,求简便... 刺客信条2,追杀的任务,求简便方法,详细请点击在原来城镇的禁区里,把卫兵干掉,然后那个黑衣服黑帽子的...