Make stem layer for ResNet.
(self, in_channels, stem_channels)
| 589 | return getattr(self, self.norm1_name) |
| 590 | |
| 591 | def _make_stem_layer(self, in_channels, stem_channels): |
| 592 | """Make stem layer for ResNet.""" |
| 593 | if self.deep_stem: |
| 594 | self.stem = nn.Sequential( |
| 595 | build_conv_layer( |
| 596 | self.conv_cfg, |
| 597 | in_channels, |
| 598 | stem_channels // 2, |
| 599 | kernel_size=3, |
| 600 | stride=2, |
| 601 | padding=1, |
| 602 | bias=False), |
| 603 | build_norm_layer(self.norm_cfg, stem_channels // 2)[1], |
| 604 | nn.ReLU(inplace=True), |
| 605 | build_conv_layer( |
| 606 | self.conv_cfg, |
| 607 | stem_channels // 2, |
| 608 | stem_channels // 2, |
| 609 | kernel_size=3, |
| 610 | stride=1, |
| 611 | padding=1, |
| 612 | bias=False), |
| 613 | build_norm_layer(self.norm_cfg, stem_channels // 2)[1], |
| 614 | nn.ReLU(inplace=True), |
| 615 | build_conv_layer( |
| 616 | self.conv_cfg, |
| 617 | stem_channels // 2, |
| 618 | stem_channels, |
| 619 | kernel_size=3, |
| 620 | stride=1, |
| 621 | padding=1, |
| 622 | bias=False), |
| 623 | build_norm_layer(self.norm_cfg, stem_channels)[1], |
| 624 | nn.ReLU(inplace=True)) |
| 625 | else: |
| 626 | self.conv1 = build_conv_layer( |
| 627 | self.conv_cfg, |
| 628 | in_channels, |
| 629 | stem_channels, |
| 630 | kernel_size=7, |
| 631 | stride=2, |
| 632 | padding=3, |
| 633 | bias=False) |
| 634 | self.norm1_name, norm1 = build_norm_layer( |
| 635 | self.norm_cfg, stem_channels, postfix=1) |
| 636 | self.add_module(self.norm1_name, norm1) |
| 637 | self.relu = nn.ReLU(inplace=True) |
| 638 | self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1) |
| 639 | |
| 640 | def _freeze_stages(self): |
| 641 | """Freeze stages param and norm stats.""" |