(self, pretrained=False, advprop=False, verbose=True)
| 719 | return NotImplemented |
| 720 | |
| 721 | def init_weights(self, pretrained=False, advprop=False, verbose=True): |
| 722 | if pretrained: |
| 723 | url_map_ = url_map_advprop if advprop else url_map |
| 724 | state_dict = model_zoo.load_url(url_map_[self.model_name]) |
| 725 | self.load_state_dict(state_dict, strict=False) |
| 726 | |
| 727 | # Initialize weights for Deconvolution Layer |
| 728 | if self._global_params.include_hm_decoder: |
| 729 | if self.efpn or self.tfpn: |
| 730 | deconv_layers = [self.deconv_1, self.deconv_2, self.deconv_3, self.deconv_4] |
| 731 | else: |
| 732 | deconv_layers = self.deconv_layers |
| 733 | |
| 734 | for layer in deconv_layers: |
| 735 | for _, m in layer.named_modules(): |
| 736 | if isinstance(m, nn.ConvTranspose2d): |
| 737 | n = m.kernel_size[0] * m.kernel_size[1] * m.out_channels |
| 738 | m.weight.data.normal_(0, math.sqrt(2. / n)) |
| 739 | if self.deconv_with_bias: |
| 740 | nn.init.constant_(m.bias, 0) |
| 741 | elif isinstance(m, nn.BatchNorm2d): |
| 742 | nn.init.constant_(m.weight, 1) |
| 743 | nn.init.constant_(m.bias, 0) |
| 744 | |
| 745 | # Init head parameters |
| 746 | for head in self.heads: |
| 747 | final_layer = self.__getattr__(head) |
| 748 | for i, m in enumerate(final_layer.modules()): |
| 749 | if isinstance(m, nn.Conv2d): |
| 750 | if m.weight.shape[0] == self.heads[head]: |
| 751 | if 'hm' in head: |
| 752 | nn.init.constant_(m.bias, -2.19) |
| 753 | else: |
| 754 | # nn.init.normal_(m.weight, std=0.001) |
| 755 | n = m.kernel_size[0] * m.kernel_size[1] * m.out_channels |
| 756 | m.weight.data.normal_(0, math.sqrt(2. / n)) |
| 757 | nn.init.constant_(m.bias, 0) |
| 758 | |
| 759 | self._change_in_channels(in_channels=self.in_channels) |
| 760 | if verbose: |
| 761 | print('Loaded pretrained weights for {}'.format(self.model_name)) |
| 762 | |
| 763 | |
| 764 | if __name__ == '__main__': |
no test coverage detected