def __init__(self, N, M, **kwargs): super().__init__() self.g_s_conv1 = deconv(M, N) self.g_s_gdn1 = GDN(N, inverse=True) self.g_s_conv2 = deconv(N, N) self.g_s_gdn2 = GDN(N, inverse=True) self.g_s_conv3 = deconv(N, N) self.g_s_gdn3 = GDN(N, inverse=True) self.g_s_conv4 = deconv(N, 3)
def __init__(self, N, M, **kwargs): super().__init__() self.g_s_conv1 = deconv(M, N) self.g_s_gdn1 = GDN(N, inverse=True) self.g_s_conv2 = deconv(N, N) self.g_s_gdn2 = GDN(N, inverse=True) self.g_s_conv3 = deconv(N, N) self.g_s_gdn3 = GDN(N, inverse=True) self.g_s_conv4 = deconv(N, 3) # self.after_gdn = GDN(3, inverse=True) self.after_conv = deconv(6, 3, stride=1) # 不缩放!
def __init__(self, N=128): super().__init__(entropy_bottleneck_channels=N) self.encode = nn.Sequential( conv(3, N, kernel_size=9, stride=4), GDN(N), conv(N, N), GDN(N), conv(N, N), ) self.decode = nn.Sequential( deconv(N, N), GDN(N, inverse=True), deconv(N, N), GDN(N, inverse=True), deconv(N, 3, kernel_size=9, stride=4), )
def __init__(self, N, M, K): #K表示GMM对应正态分布个数 super().__init__() self.N = N self.M = M self.K = K # 每个都是上采样4倍才行 self.gmm_sigma = nn.Sequential( deconv(in_channels=N, out_channels=N, kernel_size=5 ), #stride=2,padding=kernel_size//2,output_padding=stride-1 nn.ReLU(), deconv( in_channels=N, out_channels=N, kernel_size=5 ), # stride=2,padding=kernel_size//2,output_padding=stride-1 nn.ReLU(), conv(in_channels=N, out_channels=(M * K), kernel_size=5, stride=1), #padding=kernel_size//2 nn.ReLU(), ) self.gmm_means = nn.Sequential( deconv(in_channels=N, out_channels=N, kernel_size=5), # stride=2,padding=kernel_size//2,output_padding=stride-1 nn.LeakyReLU(), deconv(in_channels=N, out_channels=N, kernel_size=5), # stride=2,padding=kernel_size//2,output_padding=stride-1 nn.LeakyReLU(), conv(in_channels=N, out_channels=(M * K), kernel_size=5, stride=1), # padding=kernel_size//2 ) self.gmm_weights = nn.Sequential( deconv(in_channels=N, out_channels=N, kernel_size=5), # stride=2,padding=kernel_size//2,output_padding=stride-1 nn.LeakyReLU(), deconv(in_channels=N, out_channels=(M * K), kernel_size=5), # stride=2,padding=kernel_size//2,output_padding=stride-1 # nn.MaxPool2d(kernel_size=(H//16,W//16)), # ?? 换图像分辨率就要换模型了 spatial_pool2d(), nn.LeakyReLU(), conv(in_channels=(M * K), out_channels=(M * K), kernel_size=1, stride=1), # padding=kernel_size//2 #出去后要接一个softmax层,表示概率!! )
def __init__(self, N, M, **kwargs): super().__init__(entropy_bottleneck_channels=N, **kwargs) self.g_a_conv1 = conv(3, N) self.g_a_gdn1 = GDN(N) self.g_a_conv2 = conv(N, N) self.g_a_gdn2 = GDN(N) self.g_a_conv3 = conv(N, N) self.g_a_gdn3 = GDN(N) self.g_a_conv4 = conv(N, M) self.g_s_conv1 = deconv(M, N) self.g_s_gdn1 = GDN(N, inverse=True) self.g_s_conv2 = deconv(N, N) self.g_s_gdn2 = GDN(N, inverse=True) self.g_s_conv3 = deconv(N, N) self.g_s_gdn3 = GDN(N, inverse=True) self.g_s_conv4 = deconv(N, 3) self.h_a = nn.Sequential( conv(M, N, stride=1, kernel_size=3), nn.ReLU(inplace=True), conv(N, N), nn.ReLU(inplace=True), conv(N, N), ) self.h_s = nn.Sequential( deconv(N, N), nn.ReLU(inplace=True), deconv(N, N), nn.ReLU(inplace=True), conv(N, M, stride=1, kernel_size=3), nn.ReLU(inplace=True), ) self.gaussian_conditional = GaussianConditional(None) self.N = int(N) self.M = int(M)
def __init__(self, N=128, M=192, F=21, C=32, K=5, **kwargs): #'cuda:0' or 'cpu' super().__init__(entropy_bottleneck_channels=N, **kwargs) # super(DSIC, self).__init__() # self.entropy_bottleneck1 = CompressionModel(entropy_bottleneck_channels=N) # self.entropy_bottleneck2 = CompressionModel(entropy_bottleneck_channels=N) self.gaussian1 = GaussianMixtureConditional(K=K) self.gaussian2 = GaussianMixtureConditional(K=K) self.N = int(N) self.M = int(M) self.F = F self.C = C self.K = K #定义组件 self.encoder1 = Encoder1(N, M) # self.encoder2 = Encoder2(N,M) self.decoder1 = Decoder1(N, M) # self.decoder2 = Decoder2(N,M) # pic2 需要的组件 self.pic2_g_a_conv1 = conv(3, N) self.pic2_g_a_gdn1 = GDN(N) self.pic2_g_a_conv2 = conv(2 * N, N) self.pic2_g_a_gdn2 = GDN(N) self.pic2_g_a_conv3 = conv(2 * N, N) self.pic2_g_a_gdn3 = GDN(N) self.pic2_g_a_conv4 = conv(2 * N, M) # self.pic2_g_s_conv1 = deconv(M, N) self.pic2_g_s_gdn1 = GDN(N, inverse=True) self.pic2_g_s_conv2 = deconv(2 * N, N) self.pic2_g_s_gdn2 = GDN(N, inverse=True) self.pic2_g_s_conv3 = deconv(2 * N, N) self.pic2_g_s_gdn3 = GDN(N, inverse=True) self.pic2_g_s_conv4 = deconv(2 * N, 3) #end of pic2 ####### self._global_context = global_context(M, F, C) #scale_factor 超分辨几倍 (from H,W/16) self._cost_volume1 = cost_volume(N, 8, F, C) #最外层 self._cost_volume2 = cost_volume(N, 4, F, C) self._cost_volume3 = cost_volume(N, 2, F, C) #最里层 self._cost_volume4 = cost_volume(N, 2, F, C) # 最里层 self._cost_volume5 = cost_volume(N, 4, F, C) self._cost_volume6 = cost_volume(N, 8, F, C) # 最外层 self._warp1 = dense_warp() self._warp2 = dense_warp() self._warp3 = dense_warp() self._warp4 = dense_warp() self._warp5 = dense_warp() self._warp6 = dense_warp() #hyper self._h_a1 = encode_hyper(N=N, M=M) self._h_a2 = encode_hyper(N=N, M=M) self._h_s1 = gmm_hyper_y1(N=N, M=M, K=K) self._h_s2 = gmm_hyper_y2(N=N, M=M, K=K)
def __init__(self,N=128,M=192,K=5,**kwargs): #'cuda:0' or 'cpu' super().__init__(entropy_bottleneck_channels=N, **kwargs) # super(DSIC, self).__init__() # self.entropy_bottleneck1 = CompressionModel(entropy_bottleneck_channels=N) # self.entropy_bottleneck2 = CompressionModel(entropy_bottleneck_channels=N) self.gaussian1 = GaussianMixtureConditional(K = K) self.gaussian2 = GaussianMixtureConditional(K = K) self.N = int(N) self.M = int(M) self.K = int(K) #定义组件 self.encoder1 = Encoder1(N,M) self.encoder2 = Encoder2(N,M) self.decoder1 = Decoder1(N,M) self.decoder2 = Decoder2(N,M) # pic2 需要的组件 # #hyper # self._h_a1 = encode_hyper(N=N,M=M) # self._h_a2 = encode_hyper(N=N,M=M) # self._h_s1 = gmm_hyper_y1(N=N,M=M,K=K) # self._h_s2 = gmm_hyper_y2(N=N,M=M,K=K) ###################################################################### self.h_a1 = nn.Sequential( conv(M, N, stride=1, kernel_size=3), nn.LeakyReLU(inplace=True), conv(N, N, stride=2, kernel_size=5), nn.LeakyReLU(inplace=True), conv(N, N, stride=2, kernel_size=5), ) self.h_s1 = nn.Sequential( deconv(N, M, stride=2, kernel_size=5), nn.LeakyReLU(inplace=True), deconv(M, M * 3 // 2, stride=2, kernel_size=5), nn.LeakyReLU(inplace=True), conv(M * 3 // 2, M * 2, stride=1, kernel_size=3), ) self.entropy_parameters1 = nn.Sequential( nn.Conv2d(M * 12 // 3, M * 10 // 3, 1), nn.LeakyReLU(inplace=True), nn.Conv2d(M * 10 // 3, M * 8 // 3, 1), nn.LeakyReLU(inplace=True), nn.Conv2d(M * 8 // 3, M * 6 // 3, 1), ) self.context_prediction1 = MaskedConv2d(M, 2 * M, kernel_size=5, padding=2, stride=1) self.gaussian_conditional1 = GaussianConditional(None) self.h_a2 = nn.Sequential( conv(M, N, stride=1, kernel_size=3), nn.LeakyReLU(inplace=True), conv(N, N, stride=2, kernel_size=5), nn.LeakyReLU(inplace=True), conv(N, N, stride=2, kernel_size=5), ) self.h_s2 = nn.Sequential( deconv(N, M, stride=2, kernel_size=5), nn.LeakyReLU(inplace=True), deconv(M, M * 3 // 2, stride=2, kernel_size=5), nn.LeakyReLU(inplace=True), conv(M * 3 // 2, M * 2, stride=1, kernel_size=3), ) self.entropy_parameters2 = nn.Sequential( nn.Conv2d(M * 18 // 3, M * 10 // 3, 1), # (M * 12 // 3, M * 10 // 3, 1), nn.LeakyReLU(inplace=True), nn.Conv2d(M * 10 // 3, M * 8 // 3, 1), nn.LeakyReLU(inplace=True), nn.Conv2d(M * 8 // 3, M * 6 // 3, 1), ) self.context_prediction2 = MaskedConv2d(M, 2 * M, kernel_size=5, padding=2, stride=1) self.gaussian_conditional2 = GaussianConditional(None)