Beispiel #1
0
 def process_extract(arguments):
     from mainscripts import Extractor
     Extractor.main(arguments.input_dir,
                    arguments.output_dir,
                    arguments.debug_dir,
                    arguments.detector,
                    arguments.manual_fix,
                    arguments.manual_output_debug_fix,
                    arguments.manual_window_size,
                    face_type=arguments.face_type,
                    device_args={
                        'cpu_only': arguments.cpu_only,
                        'multi_gpu': arguments.multi_gpu,
                    })
Beispiel #2
0
 def process_extract(arguments):
     osex.set_process_lowest_prio()
     from mainscripts import Extractor
     Extractor.main( detector                = arguments.detector,
                     input_path              = Path(arguments.input_dir),
                     output_path             = Path(arguments.output_dir),
                     output_debug            = arguments.output_debug,
                     manual_fix              = arguments.manual_fix,
                     manual_output_debug_fix = arguments.manual_output_debug_fix,
                     manual_window_size      = arguments.manual_window_size,
                     face_type               = arguments.face_type,
                     cpu_only                = arguments.cpu_only,
                     force_gpu_idxs          = [ int(x) for x in arguments.force_gpu_idxs.split(',') ] if arguments.force_gpu_idxs is not None else None,
                   )
Beispiel #3
0
 def process_extract(arguments):
     os_utils.set_process_lowest_prio()
     from mainscripts import Extractor
     Extractor.main(arguments.input_dir,
                    arguments.output_dir,
                    arguments.debug_dir,
                    arguments.detector,
                    arguments.manual_fix,
                    arguments.manual_output_debug_fix,
                    arguments.manual_window_size,
                    face_type=arguments.face_type,
                    device_args={
                        'cpu_only': arguments.cpu_only,
                        'multi_gpu': arguments.multi_gpu,
                    },
                    min_pixel=arguments.min_pixel)
Beispiel #4
0
def SPExtractFaceLab(context):
    args = context.args

    Extractor.main(
        args.inputData,
        args.outputData,
        debug_dir=None,
        detector=args.detector,
        manual_fix=False,
        manual_output_debug_fix=False,
        manual_window_size=1368,
        image_size=256,
        face_type=args.faceType,
        device_args={
            "cpu_only": args.cpuOnly,
            "multi_gpu": args.multiGpu
        },
    )

    return args.outputData
Beispiel #5
0
def fanseg(align_dir):
    from mainscripts import Extractor
    Extractor.extract_fanseg(align_dir)
Beispiel #6
0
def extract():
    import os
    import shutil
    from mainscripts import VideoEd
    from mainscripts import Extractor
    from interact import interact as io

    root_dir = get_root_path()
    extract_workspace = os.path.join(root_dir, "extract_workspace")
    target_dir = os.path.join(extract_workspace, "aligned_")

    valid_exts = [".mp4", ".avi", ".wmv", ".mkv"]

    fps = io.input_int(
        "Enter FPS ( ?:help skip:fullfps ) : ",
        0,
        help_message=
        "How many frames of every second of the video will be extracted.")
    min_pixel = io.input_int("Enter Min Pixel ( ?:help skip: 512) : ",
                             512,
                             help_message="Min Pixel")

    def file_filter(file):
        if os.path.isdir(os.path.join(extract_workspace, file)):
            return False
        ext = os.path.splitext(file)[-1]
        if ext not in valid_exts:
            return False
        return True

    files = list(filter(file_filter, os.listdir(extract_workspace)))
    files.sort()
    pos = 0
    for file in files:
        pos += 1
        io.log_info("@@@@@  Start Process %s, %d / %d" %
                    (file, pos, len(files)))
        # 提取图片
        input_file = os.path.join(extract_workspace, file)
        output_dir = os.path.join(extract_workspace, "extract_images")
        if not os.path.exists(output_dir):
            os.mkdir(output_dir)
        for f in os.listdir(output_dir):
            os.remove(os.path.join(output_dir, f))
        VideoEd.extract_video(input_file,
                              output_dir,
                              output_ext="png",
                              fps=fps)
        io.log_info("@@@@@  Start Extract %s, %d / %d" %
                    (file, pos, len(files)))
        # 提取人脸
        input_dir = output_dir
        output_dir = os.path.join(extract_workspace, "_current")
        debug_dir = os.path.join(extract_workspace, "debug")
        Extractor.main(input_dir,
                       output_dir,
                       debug_dir,
                       "s3fd",
                       min_pixel=min_pixel)
        # fanseg
        io.log_info("@@@@@  Start FanSeg %s, %d / %d" %
                    (file, pos, len(files)))
        Extractor.extract_fanseg(output_dir)
        # 复制到结果集
        io.log_info("@@@@@  Start Move %s, %d / %d" % (file, pos, len(files)))
        if not os.path.exists(target_dir):
            os.mkdir(target_dir)
        ts = get_time_str()
        for f in os.listdir(output_dir):
            src = os.path.join(output_dir, f)
            dst = os.path.join(target_dir, "%s_%s" % (ts, f))
            shutil.move(src, dst)
        # 全部做完,删除该文件
        io.log_info("@@@@@  Finish %s, %d / %d" % (file, pos, len(files)))
        os.remove(os.path.join(extract_workspace, file))
        os.rmdir(output_dir)