Converter: added Apply super resolution? (y/n skip:n) : , Enhance details by applying DCSCN network.

refactorings
This commit is contained in:
iperov 2019-03-28 21:50:27 +04:00
parent 4683c362ac
commit 85c01e3b4a
12 changed files with 271 additions and 77 deletions

View file

@ -33,12 +33,16 @@ class Model(ModelBase):
]
self.load_weights_safe(weights_to_load)
self.autoencoder_src = Model([ae_input_layer,mask_layer], self.decoder_src(self.encoder(ae_input_layer)))
self.autoencoder_dst = Model([ae_input_layer,mask_layer], self.decoder_dst(self.encoder(ae_input_layer)))
rec_src = self.decoder_src(self.encoder(ae_input_layer))
rec_dst = self.decoder_dst(self.encoder(ae_input_layer))
self.autoencoder_src = Model([ae_input_layer,mask_layer], rec_src)
self.autoencoder_dst = Model([ae_input_layer,mask_layer], rec_dst)
self.autoencoder_src.compile(optimizer=Adam(lr=5e-5, beta_1=0.5, beta_2=0.999), loss=[DSSIMMSEMaskLoss(mask_layer, is_mse=self.options['pixel_loss']), 'mse'] )
self.autoencoder_dst.compile(optimizer=Adam(lr=5e-5, beta_1=0.5, beta_2=0.999), loss=[DSSIMMSEMaskLoss(mask_layer, is_mse=self.options['pixel_loss']), 'mse'] )
self.convert = K.function([ae_input_layer], rec_src)
if self.is_training_mode:
f = SampleProcessor.TypeFlags
self.set_training_data_generators ([
@ -103,21 +107,14 @@ class Model(ModelBase):
return [ ('DF', np.concatenate ( st, axis=0 ) ) ]
def predictor_func (self, face):
face_128_bgr = face[...,0:3]
face_128_mask = np.expand_dims(face[...,3],-1)
x, mx = self.autoencoder_src.predict ( [ np.expand_dims(face_128_bgr,0), np.expand_dims(face_128_mask,0) ] )
x, mx = x[0], mx[0]
return np.concatenate ( (x,mx), -1 )
x, mx = self.convert ( [ face[np.newaxis,...] ] )
return x[0], mx[0][...,0]
#override
def get_converter(self):
from converters import ConverterMasked
return ConverterMasked(self.predictor_func,
predictor_input_size=128,
output_size=128,
face_type=FaceType.FULL,
base_erode_mask_modifier=30,
base_blur_mask_modifier=0)