Safemotion Lib
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Protected Member Functions | List of all members
fastreid.modeling.backbones.resnet.ResNet Class Reference
Inheritance diagram for fastreid.modeling.backbones.resnet.ResNet:

Public Member Functions

 __init__ (self, last_stride, bn_norm, with_ibn, with_se, with_nl, block, layers, non_layers)
 
 forward (self, x)
 
 random_init (self)
 

Public Attributes

 inplanes
 
 conv1
 
 bn1
 
 relu
 
 maxpool
 
 layer1
 
 layer2
 
 layer3
 
 layer4
 
 NL_1_idx
 
 NL_1
 
 NL_2
 
 NL_2_idx
 
 NL_3
 
 NL_3_idx
 
 NL_4
 
 NL_4_idx
 

Protected Member Functions

 _make_layer (self, block, planes, blocks, stride=1, bn_norm="BN", with_ibn=False, with_se=False)
 
 _build_nonlocal (self, layers, non_layers, bn_norm)
 

Detailed Description

Definition at line 127 of file resnet.py.

Constructor & Destructor Documentation

◆ __init__()

fastreid.modeling.backbones.resnet.ResNet.__init__ ( self,
last_stride,
bn_norm,
with_ibn,
with_se,
with_nl,
block,
layers,
non_layers )

Definition at line 128 of file resnet.py.

128 def __init__(self, last_stride, bn_norm, with_ibn, with_se, with_nl, block, layers, non_layers):
129 self.inplanes = 64
130 super().__init__()
131 self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3,
132 bias=False)
133 self.bn1 = get_norm(bn_norm, 64)
134 self.relu = nn.ReLU(inplace=True)
135 self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)
136 # self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, ceil_mode=True)
137 self.layer1 = self._make_layer(block, 64, layers[0], 1, bn_norm, with_ibn, with_se)
138 self.layer2 = self._make_layer(block, 128, layers[1], 2, bn_norm, with_ibn, with_se)
139 self.layer3 = self._make_layer(block, 256, layers[2], 2, bn_norm, with_ibn, with_se)
140 self.layer4 = self._make_layer(block, 512, layers[3], last_stride, bn_norm, with_se=with_se)
141
142 self.random_init()
143
144 # fmt: off
145 if with_nl: self._build_nonlocal(layers, non_layers, bn_norm)
146 else: self.NL_1_idx = self.NL_2_idx = self.NL_3_idx = self.NL_4_idx = []
147 # fmt: on
148

Member Function Documentation

◆ _build_nonlocal()

fastreid.modeling.backbones.resnet.ResNet._build_nonlocal ( self,
layers,
non_layers,
bn_norm )
protected

Definition at line 166 of file resnet.py.

166 def _build_nonlocal(self, layers, non_layers, bn_norm):
167 self.NL_1 = nn.ModuleList(
168 [Non_local(256, bn_norm) for _ in range(non_layers[0])])
169 self.NL_1_idx = sorted([layers[0] - (i + 1) for i in range(non_layers[0])])
170 self.NL_2 = nn.ModuleList(
171 [Non_local(512, bn_norm) for _ in range(non_layers[1])])
172 self.NL_2_idx = sorted([layers[1] - (i + 1) for i in range(non_layers[1])])
173 self.NL_3 = nn.ModuleList(
174 [Non_local(1024, bn_norm) for _ in range(non_layers[2])])
175 self.NL_3_idx = sorted([layers[2] - (i + 1) for i in range(non_layers[2])])
176 self.NL_4 = nn.ModuleList(
177 [Non_local(2048, bn_norm) for _ in range(non_layers[3])])
178 self.NL_4_idx = sorted([layers[3] - (i + 1) for i in range(non_layers[3])])
179

◆ _make_layer()

fastreid.modeling.backbones.resnet.ResNet._make_layer ( self,
block,
planes,
blocks,
stride = 1,
bn_norm = "BN",
with_ibn = False,
with_se = False )
protected

Definition at line 149 of file resnet.py.

149 def _make_layer(self, block, planes, blocks, stride=1, bn_norm="BN", with_ibn=False, with_se=False):
150 downsample = None
151 if stride != 1 or self.inplanes != planes * block.expansion:
152 downsample = nn.Sequential(
153 nn.Conv2d(self.inplanes, planes * block.expansion,
154 kernel_size=1, stride=stride, bias=False),
155 get_norm(bn_norm, planes * block.expansion),
156 )
157
158 layers = []
159 layers.append(block(self.inplanes, planes, bn_norm, with_ibn, with_se, stride, downsample))
160 self.inplanes = planes * block.expansion
161 for i in range(1, blocks):
162 layers.append(block(self.inplanes, planes, bn_norm, with_ibn, with_se))
163
164 return nn.Sequential(*layers)
165

◆ forward()

fastreid.modeling.backbones.resnet.ResNet.forward ( self,
x )

Definition at line 180 of file resnet.py.

180 def forward(self, x):
181 x = self.conv1(x)
182 x = self.bn1(x)
183 x = self.relu(x)
184 x = self.maxpool(x)
185
186 NL1_counter = 0
187 if len(self.NL_1_idx) == 0:
188 self.NL_1_idx = [-1]
189 for i in range(len(self.layer1)):
190 x = self.layer1[i](x)
191 if i == self.NL_1_idx[NL1_counter]:
192 _, C, H, W = x.shape
193 x = self.NL_1[NL1_counter](x)
194 NL1_counter += 1
195 # Layer 2
196 NL2_counter = 0
197 if len(self.NL_2_idx) == 0:
198 self.NL_2_idx = [-1]
199 for i in range(len(self.layer2)):
200 x = self.layer2[i](x)
201 if i == self.NL_2_idx[NL2_counter]:
202 _, C, H, W = x.shape
203 x = self.NL_2[NL2_counter](x)
204 NL2_counter += 1
205 # Layer 3
206 NL3_counter = 0
207 if len(self.NL_3_idx) == 0:
208 self.NL_3_idx = [-1]
209 for i in range(len(self.layer3)):
210 x = self.layer3[i](x)
211 if i == self.NL_3_idx[NL3_counter]:
212 _, C, H, W = x.shape
213 x = self.NL_3[NL3_counter](x)
214 NL3_counter += 1
215 # Layer 4
216 NL4_counter = 0
217 if len(self.NL_4_idx) == 0:
218 self.NL_4_idx = [-1]
219 for i in range(len(self.layer4)):
220 x = self.layer4[i](x)
221 if i == self.NL_4_idx[NL4_counter]:
222 _, C, H, W = x.shape
223 x = self.NL_4[NL4_counter](x)
224 NL4_counter += 1
225
226 return x
227

◆ random_init()

fastreid.modeling.backbones.resnet.ResNet.random_init ( self)

Definition at line 228 of file resnet.py.

228 def random_init(self):
229 for m in self.modules():
230 if isinstance(m, nn.Conv2d):
231 n = m.kernel_size[0] * m.kernel_size[1] * m.out_channels
232 nn.init.normal_(m.weight, 0, math.sqrt(2. / n))
233 elif isinstance(m, nn.BatchNorm2d):
234 nn.init.constant_(m.weight, 1)
235 nn.init.constant_(m.bias, 0)
236
237

Member Data Documentation

◆ bn1

fastreid.modeling.backbones.resnet.ResNet.bn1

Definition at line 133 of file resnet.py.

◆ conv1

fastreid.modeling.backbones.resnet.ResNet.conv1

Definition at line 131 of file resnet.py.

◆ inplanes

fastreid.modeling.backbones.resnet.ResNet.inplanes

Definition at line 129 of file resnet.py.

◆ layer1

fastreid.modeling.backbones.resnet.ResNet.layer1

Definition at line 137 of file resnet.py.

◆ layer2

fastreid.modeling.backbones.resnet.ResNet.layer2

Definition at line 138 of file resnet.py.

◆ layer3

fastreid.modeling.backbones.resnet.ResNet.layer3

Definition at line 139 of file resnet.py.

◆ layer4

fastreid.modeling.backbones.resnet.ResNet.layer4

Definition at line 140 of file resnet.py.

◆ maxpool

fastreid.modeling.backbones.resnet.ResNet.maxpool

Definition at line 135 of file resnet.py.

◆ NL_1

fastreid.modeling.backbones.resnet.ResNet.NL_1

Definition at line 167 of file resnet.py.

◆ NL_1_idx

fastreid.modeling.backbones.resnet.ResNet.NL_1_idx

Definition at line 146 of file resnet.py.

◆ NL_2

fastreid.modeling.backbones.resnet.ResNet.NL_2

Definition at line 170 of file resnet.py.

◆ NL_2_idx

fastreid.modeling.backbones.resnet.ResNet.NL_2_idx

Definition at line 172 of file resnet.py.

◆ NL_3

fastreid.modeling.backbones.resnet.ResNet.NL_3

Definition at line 173 of file resnet.py.

◆ NL_3_idx

fastreid.modeling.backbones.resnet.ResNet.NL_3_idx

Definition at line 175 of file resnet.py.

◆ NL_4

fastreid.modeling.backbones.resnet.ResNet.NL_4

Definition at line 176 of file resnet.py.

◆ NL_4_idx

fastreid.modeling.backbones.resnet.ResNet.NL_4_idx

Definition at line 178 of file resnet.py.

◆ relu

fastreid.modeling.backbones.resnet.ResNet.relu

Definition at line 134 of file resnet.py.


The documentation for this class was generated from the following file: