예제 #1
0
def post_update_opt(opt):
    """
    Post update the configurations based on the results of preprocessing.
    Args:
        opt:

    Returns:

    """

    meta_src_proc = opt.meta_data["meta_src"]
    valid_meta_src_proc = []

    cur_num_source = 1
    for meta_proc in meta_src_proc:
        process_info = ProcessInfo(meta_proc)
        process_info.deserialize()

        # check it has been processed successfully
        if process_info.check_has_been_processed(process_info.vid_infos,
                                                 verbose=False):
            valid_meta_src_proc.append(meta_proc)
            num_source = process_info.num_sources()
            cur_num_source = max(cur_num_source, num_source)
        else:
            # otherwise, clean this inputs
            process_info.declare()

    meta_ref_proc = opt.meta_data["meta_ref"]
    valid_meta_ref_proc = []
    for meta_proc in meta_ref_proc:
        if meta_proc.check_has_been_processed(verbose=False):
            valid_meta_ref_proc.append(meta_proc)

    ## 3.1 update the personalization.txt
    checkpoints_dir = opt.meta_data["checkpoints_dir"]
    with open(os.path.join(checkpoints_dir, "personalization.txt"),
              "w") as writer:
        for meta_src in valid_meta_src_proc:
            writer.write(meta_src.primitives_dir + "\n")

    # update the number sources
    print(f"the current number of sources are {cur_num_source}, "
          f"while the pre-defined number of sources are {opt.num_source}. ")
    opt.num_source = min(cur_num_source, opt.num_source)

    # update the source information
    opt.meta_data["meta_src"] = valid_meta_src_proc

    # update the reference information
    opt.meta_data["meta_ref"] = valid_meta_ref_proc

    return opt
def merge_all_source_processed_info(opt, meta_src_proc):
    # merge all source processed information
    vid_info_list = []
    for i, meta_src in enumerate(meta_src_proc):
        """
        meta_input:
                path: /p300/tpami/neuralAvatar/sources/fange_1/fange_1_ns=2
                bg_path: /p300/tpami/neuralAvatar/sources/fange_1/IMG_7225.JPG
                name: fange_1
        primitives_dir: ../tests/debug/primitives/fange_1
        processed_dir: ../tests/debug/primitives/fange_1/processed
        vid_info_path: ../tests/debug/primitives/fange_1/processed/vid_info.pkl
        """
        src_proc_info = ProcessInfo(meta_src)
        src_proc_info.deserialize()

        src_info = src_proc_info.convert_to_src_info(num_source=src_proc_info.num_sources())
        vid_info_list.append(src_info)

    src_info_for_inference = get_src_info_for_swapper_inference(opt, vid_info_list)

    # return src_info_for_inference
    return src_info_for_inference