Hotfix usage of --frame-processor face-swapper face-enhancer

This commit is contained in:
henryruhs 2023-06-10 12:14:11 +02:00
parent f278f92085
commit b5d79832a6

View File

@ -39,7 +39,7 @@ def parse_args() -> None:
parser.add_argument('-f', '--face', help='use a face image', dest='source_path')
parser.add_argument('-t', '--target', help='replace image or video with face', dest='target_path')
parser.add_argument('-o', '--output', help='save output to this file', dest='output_path')
parser.add_argument('--frame-processor', help='list of frame processors to run', dest='frame_processor', default='face-swapper', choices=['face-swapper', 'face-enhancer'])
parser.add_argument('--frame-processor', help='list of frame processors to run', dest='frame_processor', default=['face-swapper'], choices=['face-swapper', 'face-enhancer'], nargs='+')
parser.add_argument('--keep-fps', help='maintain original fps', dest='keep_fps', action='store_true', default=False)
parser.add_argument('--keep-audio', help='maintain original audio', dest='keep_audio', action='store_true', default=True)
parser.add_argument('--keep-frames', help='keep frames directory', dest='keep_frames', action='store_true', default=False)
@ -57,7 +57,7 @@ def parse_args() -> None:
roop.globals.source_path = args.source_path
roop.globals.target_path = args.target_path
roop.globals.output_path = args.output_path
roop.globals.frame_processor = args.frame_processor
roop.globals.frame_processors = args.frame_processor
roop.globals.headless = args.source_path or args.target_path or args.output_path
roop.globals.keep_fps = args.keep_fps
roop.globals.keep_audio = args.keep_audio
@ -116,6 +116,11 @@ def limit_resources() -> None:
resource.setrlimit(resource.RLIMIT_DATA, (memory, memory))
def release_resources() -> None:
if roop.globals.gpu_vendor == 'nvidia':
torch.cuda.empty_cache()
def pre_check() -> None:
if sys.version_info < (3, 9):
quit('Python version is not supported - please upgrade to 3.9 or higher.')
@ -181,16 +186,16 @@ def start() -> None:
if has_image_extention(roop.globals.target_path):
if predict_image(roop.globals.target_path) > 0.85:
destroy()
if 'face-swapper' in roop.globals.frame_processor:
if 'face-swapper' in roop.globals.frame_processors:
update_status('Swapping in progress...')
roop.swapper.process_image(roop.globals.source_path, roop.globals.target_path, roop.globals.output_path)
if roop.globals.gpu_vendor == 'nvidia' and 'face-enhancer' in roop.globals.frame_processor:
if roop.globals.gpu_vendor == 'nvidia' and 'face-enhancer' in roop.globals.frame_processors:
update_status('Enhancing in progress...')
roop.enhancer.process_image(roop.globals.source_path, roop.globals.target_path, roop.globals.output_path)
elif 'face-enhancer' in roop.globals.frame_processor:
print('face-enhancer is only supported on CUDA')
if is_image(roop.globals.target_path):
update_status('Swapping to image succeed!')
update_status('Processing to image succeed!')
else:
update_status('Swapping to image failed!')
update_status('Processing to image failed!')
return
# process image to videos
seconds, probabilities = predict_video_frames(video_path=roop.globals.target_path, frame_interval=100)
@ -201,16 +206,16 @@ def start() -> None:
update_status('Extracting frames...')
extract_frames(roop.globals.target_path)
temp_frame_paths = get_temp_frame_paths(roop.globals.target_path)
if 'face-swapper' in roop.globals.frame_processor:
if 'face-swapper' in roop.globals.frame_processors:
update_status('Swapping in progress...')
conditional_process_video(roop.globals.source_path, temp_frame_paths, roop.swapper.process_video)
if roop.globals.gpu_vendor == 'nvidia':
torch.cuda.empty_cache()
if roop.globals.gpu_vendor == 'nvidia' and 'face-enhancer' in roop.globals.frame_processor:
update_status('enhancinging in progress...')
release_resources()
# limit to one gpu thread
roop.globals.gpu_threads = 1
if roop.globals.gpu_vendor == 'nvidia' and 'face-enhancer' in roop.globals.frame_processors:
update_status('Enhancing in progress...')
conditional_process_video(roop.globals.source_path, temp_frame_paths, roop.enhancer.process_video)
elif 'face-enhancer' in roop.globals.frame_processor:
print('face-enhancer is only supported on CUDA')
release_resources()
if roop.globals.keep_fps:
update_status('Detecting fps...')
fps = detect_fps(roop.globals.target_path)
@ -229,9 +234,9 @@ def start() -> None:
move_temp(roop.globals.target_path, roop.globals.output_path)
clean_temp(roop.globals.target_path)
if is_video(roop.globals.target_path):
update_status('Swapping to video succeed!')
update_status('Processing to video succeed!')
else:
update_status('Swapping to video failed!')
update_status('Processing to video failed!')
def destroy() -> None: