GFPGAN源代码分析(五)

2021SC@SDUSC

一、分析的代码片段

1.代码展示

# downsample
        in_channels = channels[f{first_out_size}]
        self.conv_body_down = nn.ModuleList()
        for i in range(self.log_size, 2, -1):
            out_channels = channels[f{2**(i - 1)}]
            self.conv_body_down.append(ResBlock(in_channels, out_channels, mode=down))
            in_channels = out_channels

        self.final_conv = nn.Conv2d(in_channels, channels[4], 3, 1, 1)
        
 # upsample
        in_channels = channels[4]
        self.conv_body_up = nn.ModuleList()
        for i in range(3, self.log_size + 1):
            out_channels = channels[f{2**i}]
            self.conv_body_up.append(ResBlock(in_channels, out_channels, mode=up))
            in_channels = out_channels
            
# to RGB
        self.toRGB = nn.ModuleList()
        for i in range(3, self.log_size + 1):
            self.toRGB.append(nn.Conv2d(channels[f{2**i}], 3, 1))

2.代码作用分析

输入图片的通道数

in_channels = channels[f{first_out_size}]

创建ModuleList容器

self.conv_body_down = nn.ModuleList()

i从self.log_size(9)->3 :7次循环

for i in range(self.log_size, 2, -1):
    out_channels = channels[f{2 ** (i - 1)}]
    #调用ResBlock残差网络做下采样,并将该module添加到设置的ModuleList
    self.conv_body_down.append(ResBlock(in_channels, out_channels, mode=down))
    #这一层的输出管道数作为下一层输入的管道数
    in_channels = out_channels

二、具体应用

1.下采样

# 输入图片的通道数(实际为32)
in_channels = channels[f{first_out_size}] 
#创建ModuleList容器
self.conv_body_down = nn.ModuleList()
# i从self.log_size(9)->3      :7次循环
for i in range(self.log_size, 2, -1):
    out_channels = channels[f{2 ** (i - 1)}]
    #调用ResBlock残差网络做下采样,并将该module添加到设置的ModuleList
    self.conv_body_down.append(ResBlock(in_channels, out_channels, mode=down))
    #这一层的输出管道数作为下一层输入的管道数

2.上采样

in_channels = channels[4]
        self.conv_body_up = nn.ModuleList()
        for i in range(3, self.log_size + 1):
            out_channels = channels[f{2**i}]
            self.conv_body_up.append(ResBlock(in_channels, out_channels, mode=up))
            in_channels = out_channels
经验分享 程序员 微信小程序 职场和发展