Spaces:
Runtime error
Runtime error
| from argparse import ArgumentParser | |
| import os | |
| from os.path import join as pjoin | |
| from subprocess import run | |
| import numpy as np | |
| import cv2 | |
| from tqdm import tqdm | |
| def create_skin_mask(anno_dir, mask_dir, skin_thresh=13, include_hair=False): | |
| names = os.listdir(anno_dir) | |
| names = [n for n in names if n.endswith('.png')] | |
| os.makedirs(mask_dir, exist_ok=True) | |
| for name in tqdm(names): | |
| anno = cv2.imread(pjoin(anno_dir, name), 0) | |
| mask = np.logical_and(0 < anno, anno <= skin_thresh) | |
| if include_hair: | |
| mask |= anno == 17 | |
| cv2.imwrite(pjoin(mask_dir, name), mask * 255) | |
| def main(args): | |
| FACE_PARSING_DIR = 'third_party/face_parsing' | |
| main_env = os.getcwd() | |
| os.chdir(FACE_PARSING_DIR) | |
| tmp_parse_dir = pjoin(args.out_dir, 'face_parsing') | |
| cmd = [ | |
| 'python', | |
| 'test.py', | |
| args.in_dir, | |
| tmp_parse_dir, | |
| ] | |
| print(' '.join(cmd)) | |
| run(cmd) | |
| create_skin_mask(tmp_parse_dir, args.out_dir, include_hair=args.include_hair) | |
| os.chdir(main_env) | |
| def parse_args(args=None, namespace=None): | |
| parser = ArgumentParser("Face Parsing and generate skin (& hair) mask") | |
| parser.add_argument('in_dir') | |
| parser.add_argument('out_dir') | |
| parser.add_argument('--include_hair', action="store_true", help="include hair in the mask") | |
| return parser.parse_args(args=args, namespace=namespace) | |
| if __name__ == "__main__": | |
| main(parse_args()) | |