CoolFace
Apppublic

RabbitRUI/ruispace

sourceHugging Facemitupdated 3y agoView on Hugging Face
0likes
res_unet.py65 linesDownload Raw Back to audio2pose_models
1import torch2import torch.nn as nn3from src.audio2pose_models.networks import ResidualConv, Upsample4 5 6class ResUnet(nn.Module):7    def __init__(self, channel=1, filters=[32, 64, 128, 256]):8        super(ResUnet, self).__init__()9 10        self.input_layer = nn.Sequential(11            nn.Conv2d(channel, filters[0], kernel_size=3, padding=1),12            nn.BatchNorm2d(filters[0]),13            nn.ReLU(),14            nn.Conv2d(filters[0], filters[0], kernel_size=3, padding=1),15        )16        self.input_skip = nn.Sequential(17            nn.Conv2d(channel, filters[0], kernel_size=3, padding=1)18        )19 20        self.residual_conv_1 = ResidualConv(filters[0], filters[1], stride=(2,1), padding=1)21        self.residual_conv_2 = ResidualConv(filters[1], filters[2], stride=(2,1), padding=1)22 23        self.bridge = ResidualConv(filters[2], filters[3], stride=(2,1), padding=1)24 25        self.upsample_1 = Upsample(filters[3], filters[3], kernel=(2,1), stride=(2,1))26        self.up_residual_conv1 = ResidualConv(filters[3] + filters[2], filters[2], stride=1, padding=1)27 28        self.upsample_2 = Upsample(filters[2], filters[2], kernel=(2,1), stride=(2,1))29        self.up_residual_conv2 = ResidualConv(filters[2] + filters[1], filters[1], stride=1, padding=1)30 31        self.upsample_3 = Upsample(filters[1], filters[1], kernel=(2,1), stride=(2,1))32        self.up_residual_conv3 = ResidualConv(filters[1] + filters[0], filters[0], stride=1, padding=1)33 34        self.output_layer = nn.Sequential(35            nn.Conv2d(filters[0], 1, 1, 1),36            nn.Sigmoid(),37        )38 39    def forward(self, x):40        # Encode41        x1 = self.input_layer(x) + self.input_skip(x)42        x2 = self.residual_conv_1(x1)43        x3 = self.residual_conv_2(x2)44        # Bridge45        x4 = self.bridge(x3)46 47        # Decode48        x4 = self.upsample_1(x4)49        x5 = torch.cat([x4, x3], dim=1)50 51        x6 = self.up_residual_conv1(x5)52 53        x6 = self.upsample_2(x6)54        x7 = torch.cat([x6, x2], dim=1)55 56        x8 = self.up_residual_conv2(x7)57 58        x8 = self.upsample_3(x8)59        x9 = torch.cat([x8, x1], dim=1)60 61        x10 = self.up_residual_conv3(x9)62 63        output = self.output_layer(x10)64 65        return output