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
上一篇:
JS实现多线程数据分片下载
下一篇:
ubuntu彻底卸载Nvidia显卡驱动