yolov8 的C2f结构
时间: 2025-01-20 14:08:18 浏览: 52
### YOLOv8 中 C2f 架构详解
#### 配置参数解析
配置项 `[-1, 3, C2f, [128, True]]` 描述了 Block 2 (即C2f模块) 的具体设置。其中,第一个元素 `-1` 表示输入通道数继承自前一层;第二个元素 `3` 是重复次数;第三个元素 `C2f` 明确指出了该层使用的组件名称;最后一个列表 `[128, True]` 则包含了隐藏层数量以及是否启用激活函数的信息[^1]。
#### 初始化过程分析
对于 C2f 模块而言,在其初始化过程中会执行如下操作:
- 计算隐含层的通道数目:通过乘以前向传播宽度系数 \(e\) 来调整基础通道数量 \(c_2\), 即 \(\text{self}.c = \lfloor c_2 * e \rfloor\)。
- 定义卷积层 cv1 和 cv2:
- **cv1**: 使用大小为1×1的标准卷积核将输入特征图映射到两倍于当前计算得出的隐含层维度的空间上;
- **cv2**: 同样采用1×1的小型滤波器来融合来自多个路径的数据流,并最终输出具有指定目标尺寸\(c_2\)的结果。这里还涉及到额外n个分支带来的影响[(2+n)*self.c],这表明除了主要处理外还有其他辅助性的并行运算存在[^2].
```python
class C2f(nn.Module):
def __init__(self, c1, c2, n=1, shortcut=False, g=1, e=0.5):
super().__init__()
self.c = int(c2 * e) # hidden channels
self.cv1 = Conv(c1, 2 * self.c, k=1)
self.cv2 = Conv((2 + n) * self.c, c2, k=1) # optional activation function FReLU can be applied here.
```
阅读全文
相关推荐


















