class C3(nn.Module): # CSP Bottleneck with 3 convolutions def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ch_out, number, shortcut, groups, expansion super().__init__() c_ = int(c2 * e) # hidden channels self.cv1 = Conv(c1, c_, 1, 1) self.cv2 = Conv(c1, c_, 1, 1) self.cv3 = Conv(2 * c_, c2, 1) # act=FReLU(c2) self.m = nn.Sequential(*[Bottleneck(c_, c_, shortcut, g, e=1.0) for _ in range(n)]) # self.m = nn.Sequential(*[CrossConv(c_, c_, 3, 1, g, 1.0, shortcut) for _ in range(n)]) def forward(self, x): return self.cv3(torch.cat((self.m(self.cv1(x)), self.cv2(x)), dim=1))
时间: 2023-09-30 10:11:33 浏览: 171
csp.dll.rar_CSP. DLL_CSP.d_csp_csp.dll
这是一个名为C3的类,它继承自nn.Module。这个类实现了一个具有3个卷积层的CSP Bottleneck结构。构造函数中的参数包括c1,c2,n,shortcut,g和e,分别表示输入通道数,输出通道数,模块重复次数,是否使用shortcut连接,分组数和扩展因子。在构造函数中,c_表示隐藏通道数,cv1和cv2是1x1卷积层,cv3是1x1卷积层。self.m是一个由Bottleneck模块组成的序列。在前向传播方法中,首先将输入x分别通过cv1和cv2进行卷积操作,然后将它们与经过self.m的结果在通道维度上拼接起来,最后通过cv3进行卷积操作并返回结果。
阅读全文