class C3(nn.Module):
# CSP Bottleneck with 3 convolutions
def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5):
super().__init__()
c_ = int(c2 * e)
self.cv1 = Conv(c1, c_, 1, 1)
self.cv2 = Conv(c1, c_, 1, 1)
self.cv3 = Conv(2 * c_, c2, 1)
self.m = nn.Sequential(*(Bottleneck(c_, c_, shortcut, g, e=1.0) for _ in range(n)))
def forward(self, x):
return self.cv3(torch.cat((self.m(self.cv1(x)), self.cv2(x)), 1))
这是 YOLOv5 中最核心的 C3 模块,是 BottleneckCSP 的简化版,采用\”三卷积+CSP\”设计,在性能和效率之间取得了优雅平衡。
核心架构
输入 x (c1 通道)
├──────────────┐
↓ ↓
┌──

