| import torch.nn as nn | |
| import torch.nn.functional as F | |
| class Encoder(nn.Module): | |
| def __init__(self): | |
| super(Encoder, self).__init__() | |
| self.maxpool = nn.MaxPool2d(kernel_size=2, stride=2, ceil_mode=True) | |
| self.conv_featmap_1 = nn.Sequential( | |
| nn.Conv2d(in_channels=3, out_channels=16, kernel_size=1, bias=True), | |
| nn.ReLU(), | |
| nn.Conv2d(in_channels=16, out_channels=16, kernel_size=3, padding=1, bias=True), | |
| nn.ReLU(), | |
| nn.Conv2d(in_channels=16, out_channels=16, kernel_size=3, padding=1, bias=True), | |
| nn.ReLU(), | |
| ) | |
| self.conv_featmap_2 = nn.Sequential( | |
| nn.Conv2d(in_channels=16, out_channels=32, kernel_size=1, bias=True), | |
| nn.ReLU(), | |
| nn.Conv2d(in_channels=32, out_channels=32, kernel_size=3, padding=1, bias=True), | |
| nn.ReLU(), | |
| nn.Conv2d(in_channels=32, out_channels=32, kernel_size=3, padding=1, bias=True), | |
| nn.ReLU(), | |
| ) | |
| self.conv_featmap_3 = nn.Sequential( | |
| nn.Conv2d(in_channels=32, out_channels=64, kernel_size=1, bias=True), | |
| nn.ReLU(), | |
| nn.Conv2d(in_channels=64, out_channels=64, kernel_size=3, padding=1, bias=True), | |
| nn.ReLU(), | |
| nn.Conv2d(in_channels=64, out_channels=64, kernel_size=3, padding=1, bias=True), | |
| nn.ReLU(), | |
| ) | |
| def forward(self, img): | |
| featmap_1 = self.conv_featmap_1(img) | |
| featmap_1_down = self.maxpool(featmap_1) | |
| featmap_2 = self.conv_featmap_2(featmap_1_down) | |
| featmap_2_down = self.maxpool(featmap_2) | |
| featmap_3 = self.conv_featmap_3(featmap_2_down) | |
| return featmap_3 | |
| class Encoder_RRDB(nn.Module): | |
| def __init__(self, num_feat=16): | |
| super(Encoder_RRDB, self).__init__() | |
| self.conv_featmap = nn.Sequential( | |
| nn.Conv2d(in_channels=3, out_channels=num_feat, kernel_size=3, padding=1, bias=True), | |
| nn.LeakyReLU(negative_slope=0.2, inplace=True), | |
| nn.Conv2d(in_channels=num_feat, out_channels=num_feat, kernel_size=3, padding=1, bias=True), | |
| nn.LeakyReLU(negative_slope=0.2, inplace=True), | |
| nn.Conv2d(in_channels=num_feat, out_channels=num_feat, kernel_size=3, padding=1, bias=True), | |
| nn.LeakyReLU(negative_slope=0.2, inplace=True), | |
| nn.Conv2d(in_channels=num_feat, out_channels=num_feat, kernel_size=3, padding=1, bias=True), | |
| nn.LeakyReLU(negative_slope=0.2, inplace=True), | |
| nn.Conv2d(in_channels=num_feat, out_channels=num_feat, kernel_size=3, padding=1, bias=True), | |
| ) | |
| def forward(self, img): | |
| featmap = self.conv_featmap(img) | |
| return featmap |