24yearsold's picture
update: add ComfyUI Node Extension mention to description
b55a1fc verified
import sys
import os.path as osp
import os
import argparse
sys.path.append(osp.dirname(osp.dirname(osp.abspath(__file__))))
from utils.cv import batch_load_masks
import os.path as osp
from utils.visualize import visualize_segs, visualize_segs_with_labels
from live2d.scrap_model import VALID_BODY_PARTS_V2
from utils.io_utils import find_all_imgs, imglist2imgrid
import numpy as np
from tqdm import tqdm
from PIL import Image
src_dir = 'workspace/datasets/testcase'
mask_dir = 'workspace/datasets/evalsam_iter0'
VALID_BODY_PARTS_V1 = [
'hair', 'headwear', 'face', 'eyes', 'eyewear', 'ears', 'earwear', 'nose', 'beard', 'mouth', 'neck', 'neckwear',
'skin', 'topwear', 'handwear',
'bottomwear', 'legwear', 'footwear',
'tail', 'wings'
]
VALID_BODY_PARTS_V2 = [
'hair', 'headwear', 'face', 'eyes', 'eyewear', 'ears', 'earwear', 'nose', 'mouth',
'neck', 'neckwear', 'topwear', 'handwear', 'bottomwear', 'legwear', 'footwear',
'tail', 'wings', 'objects'
]
# mask_valid = []
# reind_mask = not mask_dir.endswith('_iter2')
# for srcp in tqdm(find_all_imgs(src_dir, abs_path=True)):
# maskp = osp.join(mask_dir, osp.basename(srcp) + '_masks.json')
# masks = batch_load_masks(maskp)
# if reind_mask:
# mask_reind = []
# for t in VALID_BODY_PARTS_V2:
# if t in VALID_BODY_PARTS_V1:
# mask_reind.append(masks[VALID_BODY_PARTS_V1.index(t)])
# else:
# mask_reind.append(np.zeros_like(masks[0]))
# masks = mask_reind
# masks[-4] = np.zeros_like(masks[-4])
# img = np.array(Image.open(srcp).convert('RGB'))
# Image.fromarray(visualize_segs(masks, img, image_weight=0.2, )).save(osp.join(mask_dir, osp.basename(srcp) + '.png'))
# compose_grid
src_list = ['workspace/datasets/evalsam_iter0', 'workspace/datasets/evalsam_iter1', 'workspace/datasets/evalsam_iter2']
save_dir = 'workspace/datasets/sam_visual_comparison'
os.makedirs(save_dir, exist_ok=True)
imgw = 768
for imgn in tqdm(find_all_imgs(src_list[0])):
img_list = []
for d in src_list:
imgp = osp.join(d, imgn)
img = Image.open(imgp).convert('RGB')
w, h = img.width, img.height
nh = int(round(imgw / w * h))
nsize = (imgw, nh)
img = img.resize(nsize, Image.Resampling.LANCZOS)
img_list.append(np.array(img))
img = np.concatenate(img_list, axis=1)
savep = osp.join(save_dir, osp.splitext(imgn)[0] + '.png')
Image.fromarray(img).save(savep)