def forward(self, lrinput, refinput, showmode=True): lr_feature = self.relu(self.lrfeature_ext1(lrinput)) lr_feature = self.relu(self.lrfeature_ext2(lr_feature)) lr_feature = self.feature_extraction_network(lr_feature) ref_feature = self.downsample_module(refinput) ref_feature = self.relu(ref_feature) ref_feature = self.feature_extraction_network(ref_feature) if showmode: showpatch(lr_feature, foldername="extracted_features_lr_image", modelname="EDSR") showpatch(ref_feature, foldername="extracted_features_ref_image", modelname="EDSR") deform_feature = self.ssen_show(lr_batch=lr_feature, init_hr_batch=ref_feature, showmode=showmode, modelname="EDST") concated_feature = torch.cat((lr_feature, deform_feature), dim=1) reconstruct_image = self.EDSR_show(x=concated_feature, lr_feature=lr_feature) return reconstruct_image
def forward(self, x, lr_feature): x = self.mhead(x) res = self.body(x) res = torch.add(res, lr_feature) showpatch(res, foldername="features_after_reconstruction_blocks", modelname="EDSR") x = self.tail(res) return x
def forward(self, lr_features, hr_features, modelname, showmode=False, num_block=None): input_offset = torch.cat((lr_features, hr_features), dim=1) estimated_offset = self.offset_estimator(input_offset) if showmode: showpatch(estimated_offset, foldername="DOE_output{}".format(num_block), modelname=modelname) showpatch(input_offset, foldername="offsetinput{}".format(num_block), modelname=modelname) estimated_offset = self.offset_conv(estimated_offset) if showmode: # showpatch(estimated_offset,foldername="extracted_offset_deformconv{}".format(num_block)) saveoffset(estimated_offset, modelname=modelname, foldername="resultoffset_deformconv{}".format(num_block), istensor=True) output = self.deformconv(x=hr_features, offset=estimated_offset) return output
def forward(self, input_lr, ref_input, showmode=False): ref_input = self.downsampling_network(ref_input) input_lr = self.lrfeature_scaler1(input_lr) input_lr = self.lrfeature_scaler2(input_lr) lr_feature_out = self.feature_extractor(input_lr) ref_feature_out = self.feature_extractor(ref_input) SSEN_out = self.SSEN_Network(lr_batch=lr_feature_out, init_hr_batch=ref_feature_out, showmode=showmode) residual_input = torch.cat((lr_feature_out, SSEN_out), dim=1) residual_input_scaled = self.preprocessing_residual_block( residual_input) out = self.residual_blocks(residual_input_scaled) out = torch.add(out, lr_feature_out) if showmode: showpatch(lr_feature_out, foldername="extracted_features_lr_image") showpatch(ref_feature_out, foldername="extracted_features_ref_image") showpatch(out, foldername="features_after_reconstruction_blocks") out = self.upscaling_4x(out) out = self.outconv(out) return out
def forward(self, lr_batch, init_hr_batch, modelname, showmode=False): hr_out1 = self.deformblock1(lr_batch, init_hr_batch, showmode=showmode, num_block=1, modelname=modelname) hr_out2 = self.deformblock2(lr_batch, hr_out1, showmode=showmode, num_block=2, modelname=modelname) hr_out3 = self.deformblock3(lr_batch, hr_out2, showmode=showmode, num_block=3, modelname=modelname) if showmode: showpatch(hr_out1, foldername="extracted_features_by_deformconv1", modelname=modelname) showpatch(hr_out2, foldername="extracted_features_by_deformconv2", modelname=modelname) showpatch(hr_out3, foldername="extracted_features_by_deformconv3", modelname=modelname) return hr_out3