还原 SAEHD 模型参数

This commit is contained in:
cszdlt 2019-12-29 01:18:27 +08:00
commit 844cfa48b0
2 changed files with 6 additions and 7 deletions

View file

@ -26,12 +26,11 @@ DEBUG = False
class ExtractSubprocessor(Subprocessor): class ExtractSubprocessor(Subprocessor):
class Data(object): class Data(object):
def __init__(self, filename=None, rects=None, landmarks = None, landmarks_accurate=True, manual=False, force_output_path=None, final_output_files = None): def __init__(self, filename=None, rects=None, landmarks = None, landmarks_accurate=True, force_output_path=None, final_output_files = None):
self.filename = filename self.filename = filename
self.rects = rects or [] self.rects = rects or []
self.rects_rotation = 0 self.rects_rotation = 0
self.landmarks_accurate = landmarks_accurate self.landmarks_accurate = landmarks_accurate
self.manual = manual
self.landmarks = landmarks or [] self.landmarks = landmarks or []
self.force_output_path = force_output_path self.force_output_path = force_output_path
self.final_output_files = final_output_files or [] self.final_output_files = final_output_files or []
@ -241,7 +240,7 @@ class ExtractSubprocessor(Subprocessor):
rect_area = mathlib.polygon_area(np.array(rect[[0,2,2,0]]), np.array(rect[[1,1,3,3]])) rect_area = mathlib.polygon_area(np.array(rect[[0,2,2,0]]), np.array(rect[[1,1,3,3]]))
landmarks_area = mathlib.polygon_area(landmarks_bbox[:,0], landmarks_bbox[:,1] ) landmarks_area = mathlib.polygon_area(landmarks_bbox[:,0], landmarks_bbox[:,1] )
if not data.manual and self.face_type <= FaceType.FULL_NO_ALIGN and landmarks_area > 4*rect_area: #get rid of faces which umeyama-landmark-area > 4*detector-rect-area if self.face_type <= FaceType.FULL_NO_ALIGN and landmarks_area > 4*rect_area: #get rid of faces which umeyama-landmark-area > 4*detector-rect-area
continue continue
if self.debug_dir is not None: if self.debug_dir is not None:
@ -765,7 +764,7 @@ def main(input_dir,
if images_found != 0: if images_found != 0:
if detector == 'manual': if detector == 'manual':
io.log_info ('Performing manual extract...') io.log_info ('Performing manual extract...')
data = ExtractSubprocessor ([ ExtractSubprocessor.Data(filename, manual=True) for filename in input_path_image_paths ], 'landmarks', image_size, face_type, debug_dir, cpu_only=cpu_only, manual=True, manual_window_size=manual_window_size).run() data = ExtractSubprocessor ([ ExtractSubprocessor.Data(filename) for filename in input_path_image_paths ], 'landmarks', image_size, face_type, debug_dir, cpu_only=cpu_only, manual=True, manual_window_size=manual_window_size).run()
else: else:
io.log_info ('Performing 1st pass...') io.log_info ('Performing 1st pass...')
data = ExtractSubprocessor ([ ExtractSubprocessor.Data(filename) for filename in input_path_image_paths ], 'rects-'+detector, image_size, face_type, debug_dir, multi_gpu=multi_gpu, cpu_only=cpu_only, manual=False, max_faces_from_image=max_faces_from_image).run() data = ExtractSubprocessor ([ ExtractSubprocessor.Data(filename) for filename in input_path_image_paths ], 'rects-'+detector, image_size, face_type, debug_dir, multi_gpu=multi_gpu, cpu_only=cpu_only, manual=False, max_faces_from_image=max_faces_from_image).run()
@ -781,7 +780,7 @@ def main(input_dir,
if all ( np.array ( [ d.faces_detected > 0 for d in data] ) == True ): if all ( np.array ( [ d.faces_detected > 0 for d in data] ) == True ):
io.log_info ('All faces are detected, manual fix not needed.') io.log_info ('All faces are detected, manual fix not needed.')
else: else:
fix_data = [ ExtractSubprocessor.Data(d.filename, manual=True) for d in data if d.faces_detected == 0 ] fix_data = [ ExtractSubprocessor.Data(d.filename) for d in data if d.faces_detected == 0 ]
io.log_info ('Performing manual fix for %d images...' % (len(fix_data)) ) io.log_info ('Performing manual fix for %d images...' % (len(fix_data)) )
fix_data = ExtractSubprocessor (fix_data, 'landmarks', image_size, face_type, debug_dir, manual=True, manual_window_size=manual_window_size).run() fix_data = ExtractSubprocessor (fix_data, 'landmarks', image_size, face_type, debug_dir, manual=True, manual_window_size=manual_window_size).run()
fix_data = ExtractSubprocessor (fix_data, 'final', image_size, face_type, debug_dir, multi_gpu=multi_gpu, cpu_only=cpu_only, manual=False, final_output_path=output_path).run() fix_data = ExtractSubprocessor (fix_data, 'final', image_size, face_type, debug_dir, multi_gpu=multi_gpu, cpu_only=cpu_only, manual=False, final_output_path=output_path).run()

View file

@ -211,7 +211,7 @@ class SAEHDModel(ModelBase):
x = Add()([x, x0]) x = Add()([x, x0])
x = LeakyReLU(0.2)(x) x = LeakyReLU(0.2)(x)
return Conv2D(output_nc, kernel_size=1, padding='same', activation='sigmoid')(x) return Conv2D(output_nc, kernel_size=5, padding='same', activation='sigmoid')(x)
return func return func
@ -325,7 +325,7 @@ class SAEHDModel(ModelBase):
x = Add()([x, x0]) x = Add()([x, x0])
x = LeakyReLU(0.2)(x) x = LeakyReLU(0.2)(x)
return Conv2D(output_nc, kernel_size=1, padding='same', activation='sigmoid')(x) return Conv2D(output_nc, kernel_size=5, padding='same', activation='sigmoid')(x)
return func return func