图片来源:(侵删)
主体结构:
Backbone(骨干)、 Neck(颈部)、 Head(头部)
contact----concat
Backbone
CBS
CBS模块主要由Conv(卷积层)、BN(Batch Normalization,批归一化层)和SiLU(激活函数)三个部分组成
C3K2
通过参数 c3k
控制模块内部结构。当 c3k=True
时,使用 C3K2 模块;当 c3k=False
时,退化为标准的 Bottleneck 模块(C2F)。
SPPF
先来看看SPP
SPP和SPPF都旨在解决模型处理不同尺寸图像问题。(通过卷积池化等)
SPP图中MaxPool是不同尺寸的池化(也可以换成其他池化方式),然后结合不同尺寸的信息。
SPPF(主要通过调整池化策略,加快了计算速度)
C2PSA
Cross-Level Pyramid Slice Attention(跨层级金字塔切片注意力)
C2PSA结合了PSA(Pointwise Spatial Attention)块,用于增强特征提取和注意力机制。通过在标准 C2f
模块中引入 PSA 块,实现了更强大的注意力机制,从而提高了模型对重要特征的捕捉能力。
Split操作是将输入张量沿指定维度拆分为多个子张量,比如将一个64通道拆分为4个16通道。(可以指定每个子张量的维度,可以不同)
Attention使用多头注意力
Neck
Upsample
上采样就不多说了,什么池化等等。
concat
拼接层,主要是把多个张量(通常是特征图)沿某个维度(通常是通道维度)拼接在一起。这个主要作用是信息整合。
还有一个信息整合 add ,这个是把多个张量按元素相加起来。
C3K2--CBS
同骨干网络的结构
Head
CBS
同骨干网络的结构
DSC
深度可分离卷积层(Depthwise Separable Convolution)
先深度卷积,再逐点卷积。
Conv2d
卷积
模型超参
核心训练超参数:
lr0
(初始学习率):- 决定了模型权重更新的初始步长。
- 影响收敛速度和稳定性。
- 建议:通常在0.01到0.001之间,根据数据集和模型大小调整。
lrf
(最终学习率):- 训练结束时的学习率,通常远小于
lr0
。 - 有助于模型在后期进行微调。
- 建议:通常设置为
lr0
的十分之一或更小。
- 训练结束时的学习率,通常远小于
batch
(批次大小):- 每次迭代处理的图像数量。
- 影响梯度估计的准确性和内存消耗。
- 建议:根据GPU内存调整,尽可能使用较大的批次大小。
epochs
(训练轮数):- 模型遍历整个训练数据集的次数。
- 影响模型的训练程度。
- 建议:根据数据集大小和模型复杂度调整。
imgsz
(图像尺寸):- 输入图像的大小。
- 影响模型的检测精度和速度。
- 建议:根据目标大小和计算资源调整。
optimizer
(优化器):- 用于更新模型权重的算法。
- 影响收敛速度和稳定性。
- 建议:常用的有Adam、SGD等,Adam通常是较好的默认选择。
device
(设备):- 指定用于训练或推理的设备(例如,GPU或CPU)。
- 建议:尽可能使用GPU进行训练。
weight_decay
(权重衰减):- 用于防止过拟合,通过在损失函数中添加正则化项。
momentum
(动量):- 在SGD优化器中,用于加速收敛并防止陷入局部最小值。
2. 数据增强超参数:
mosaic
:- 启用Mosaic数据增强,将四张图像拼接在一起。
- 提高模型对小目标的检测能力。
mixup
:- 启用MixUp数据增强,将两张图像及其标签进行混合。
- 提高模型的泛化能力。
flipud
(上下翻转):- 增加上下翻转的数据增强
fliplr
(左右翻转):- 增加左右翻转的数据增强
hsv_h
,hsv_s
,hsv_v
(HSV增强):- 调整图像的色调、饱和度和亮度。
degrees
(旋转角度):- 随机旋转图像的角度。
translate
(平移):- 随机平移图像。
scale
(缩放):- 随机缩放图像。
shear
(错切):- 随机错切图像。
3. 其他重要参数:
conf
(置信度阈值):- 用于过滤检测结果的置信度阈值。
iou
(IoU阈值):- 用于非极大值抑制(NMS)的IoU阈值。
single_cls
:- 将多类目标检测问题简化为单类问题。
resume
:- 从上次中断的地方恢复训练。
name
:- 给本次训练任务起一个名字。
损失
分类损失、边框损失、置信度损失