83 stride=1, downsample=None, reduction=16):
84 super(Bottleneck, self).__init__()
85 self.conv1 = nn.Conv2d(inplanes, planes, kernel_size=1, bias=False)
86 if with_ibn:
87 self.bn1 = IBN(planes, bn_norm)
88 else:
89 self.bn1 = get_norm(bn_norm, planes)
90 self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, stride=stride,
91 padding=1, bias=False)
92 self.bn2 = get_norm(bn_norm, planes)
93 self.conv3 = nn.Conv2d(planes, planes * self.expansion, kernel_size=1, bias=False)
94 self.bn3 = get_norm(bn_norm, planes * self.expansion)
95 self.relu = nn.ReLU(inplace=True)
96 if with_se:
97 self.se = SELayer(planes * self.expansion, reduction)
98 else:
99 self.se = nn.Identity()
100 self.downsample = downsample
101 self.stride = stride
102