Spaces:
Sleeping
Sleeping
| from torch import nn | |
| import torch | |
| class UpsamplingLayer(nn.Module): | |
| def __init__(self, in_channels, out_channels, leaky=True): | |
| super(UpsamplingLayer, self).__init__() | |
| self.layer = nn.Sequential( | |
| nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1), | |
| nn.LeakyReLU() if leaky else nn.ReLU(), | |
| nn.UpsamplingBilinear2d(scale_factor=2) | |
| ) | |
| def forward(self, x): | |
| return self.layer(x) | |
| class DensityMapRegressor(nn.Module): | |
| def __init__(self, in_channels, reduction): | |
| super(DensityMapRegressor, self).__init__() | |
| if reduction == 8: | |
| self.regressor = nn.Sequential( | |
| UpsamplingLayer(in_channels, 128), | |
| UpsamplingLayer(128, 64), | |
| UpsamplingLayer(64, 32), | |
| nn.Conv2d(32, 1, kernel_size=1), | |
| nn.LeakyReLU() | |
| ) | |
| elif reduction == 16: | |
| self.regressor = nn.Sequential( | |
| UpsamplingLayer(in_channels, 128), | |
| UpsamplingLayer(128, 64), | |
| UpsamplingLayer(64, 32), | |
| UpsamplingLayer(32, 16), | |
| nn.Conv2d(16, 1, kernel_size=1), | |
| nn.LeakyReLU() | |
| ) | |
| self.reset_parameters() | |
| def forward(self, x): | |
| return self.regressor(x) | |
| def reset_parameters(self): | |
| for module in self.modules(): | |
| if isinstance(module, nn.Conv2d): | |
| nn.init.normal_(module.weight, std=0.01) | |
| if module.bias is not None: | |
| nn.init.constant_(module.bias, 0) | |
| class DensityMapRegressor_(nn.Module): | |
| def __init__(self, in_channels, reduction): | |
| super(DensityMapRegressor, self).__init__() | |
| if reduction == 8: | |
| self.regressor = nn.Sequential( | |
| UpsamplingLayer(in_channels, 128), | |
| UpsamplingLayer(128, 64), | |
| UpsamplingLayer(64, 32), | |
| nn.Conv2d(32, 1, kernel_size=1), | |
| nn.LeakyReLU() | |
| ) | |
| elif reduction == 16: | |
| self.regressor = nn.Sequential( | |
| UpsamplingLayer(in_channels, 128), | |
| UpsamplingLayer(128, 64), | |
| UpsamplingLayer(64, 32), | |
| UpsamplingLayer(32, 16), | |
| nn.Conv2d(16, 1, kernel_size=1), | |
| nn.LeakyReLU() | |
| ) | |
| self.reset_parameters() | |
| def forward(self, x): | |
| return self.regressor(x) | |
| def reset_parameters(self): | |
| for module in self.modules(): | |
| if isinstance(module, nn.Conv2d): | |
| nn.init.normal_(module.weight, std=0.01) | |
| if module.bias is not None: | |
| nn.init.constant_(module.bias, 0) | |