yolov8涨点系列之C2f模块改进主分支

文章目录

  • C2F 模块介绍
    • 定义与基本原理
    • 应用场景
  • C2f模块修改步骤
    • (1) C2f_up模块编辑
    • (2)在__init_.py+block.py中声明
    • (3)在task.py中声明
    • yolov8引入C2f_up模块
      • yolov8.yaml
      • yolov8.yaml引入C2f_up模块
  • C2f改进对YOLOv8检测具有多方面的好处

C2F 模块介绍

定义与基本原理

  C2F(Coarse - to - Fine)模块通常是一种在计算机视觉或其他领域中,用于处理从粗糙到精细层次信息的模块。例如,在图像分割任务中,C2F 模块可能先从整个图像的大致区域划分入手(粗粒度处理),然后逐步细化分割边界和区域内部的细节(细粒度处理)。
  从网络结构角度看,它可能包含多个层次的处理单元。在早期阶段,这些单元会处理经过下采样后的低分辨率图像信息,以获取具有较大感受野的全局特征。随着网络的推进,通过上采样等操作,将早期的全局特征和经过处理的高分辨率局部特征相结合,逐步恢复细节信息,从而实现从粗到细的信息整合。

应用场景

  图像分割:在医学图像分割领域,如对脑部 MRI 图像进行组织分割时,C2F 模块可以先利用低分辨率的图像大致区分出大脑的主要区域(如白质、灰质、脑脊液等),然后在精细阶段准确划分各个组织的边界。在语义分割任务中,对于自然场景图像,C2F 模块有助于区分天空、建筑、道路等大的物体类别,并且能够很好地描绘出物体的边缘和细节,比如路边树木的轮廓等。
  目标检测:在目标检测任务中,C2F 模块可以先定位目标大致所在的区域(粗定位),然后对目标的边界框和类别进行更精确的确定(精确定位和分类)。例如在行人检测中,先找到可能包含行人的大致场景区域,再细化到行人的具体姿态、衣着细节等特征,从而更准确地识别行人个体。

C2f模块修改步骤

(1) C2f_up模块编辑

  C2f模块位置位于ultralytics/nn/modules/block.py内,如下图所示:
yolov8涨点系列之C2f模块改进主分支_第1张图片

class C2f(nn.Module):
    """Faster Implementation of CSP Bottleneck with 2 convolutions."""

    def __init__(self, c1, c2, n=1, shortcut=False, g=1, e=0.5):
        """Initialize CSP bottleneck layer with two convolutions with arguments ch_in, ch_out, number, shortcut, groups,
        expansion.
        """
        super().__init__()
        self.c = int(c2 * e)  # hidden channels
        self.cv1 = Conv(c1, 2 * self.c, 1, 1)
        self.cv2 = Conv((2 + n) * self.c, c2, 1)  # optional act=FReLU(c2)
        self.m = nn.ModuleList(Bottleneck(self.c, self.c, shortcut, g, k=((3, 3), (3, 3)), e=1.0) for _ in range(n))

    def forward(self, x):
        """Forward pass through C2f layer."""
        y = list(self.cv1(x).chunk(2, 1))
        y.extend(m(y[-1]) for m in self.m)
        return self.cv2(torch.cat(y, 1))

    def forward_split(self, x):
        """Forward pass using split() instead of chunk()."""
        y = list(self.cv1(x).split((self.c, self.c), 1))
        y.extend(m(y[-1]) for m in self.m)
        return self.cv2(torch.cat(y, 1))

改进后代码:

class C2f_up(nn.Module

你可能感兴趣的:(YOLO,目标检测)