mirror of
https://github.com/YaoFANGUK/video-subtitle-remover.git
synced 2026-05-22 06:13:24 +08:00
init
This commit is contained in:
76
backend/inpaint/lama/bin/side_by_side.py
Executable file
76
backend/inpaint/lama/bin/side_by_side.py
Executable file
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import random
|
||||
|
||||
import cv2
|
||||
import numpy as np
|
||||
|
||||
from saicinpainting.evaluation.data import PrecomputedInpaintingResultsDataset
|
||||
from saicinpainting.evaluation.utils import load_yaml
|
||||
from saicinpainting.training.visualizers.base import visualize_mask_and_images
|
||||
|
||||
|
||||
def main(args):
|
||||
config = load_yaml(args.config)
|
||||
|
||||
datasets = [PrecomputedInpaintingResultsDataset(args.datadir, cur_predictdir, **config.dataset_kwargs)
|
||||
for cur_predictdir in args.predictdirs]
|
||||
assert len({len(ds) for ds in datasets}) == 1
|
||||
len_first = len(datasets[0])
|
||||
|
||||
indices = list(range(len_first))
|
||||
if len_first > args.max_n:
|
||||
indices = sorted(random.sample(indices, args.max_n))
|
||||
|
||||
os.makedirs(args.outpath, exist_ok=True)
|
||||
|
||||
filename2i = {}
|
||||
|
||||
keys = ['image'] + [i for i in range(len(datasets))]
|
||||
for img_i in indices:
|
||||
try:
|
||||
mask_fname = os.path.basename(datasets[0].mask_filenames[img_i])
|
||||
if mask_fname in filename2i:
|
||||
filename2i[mask_fname] += 1
|
||||
idx = filename2i[mask_fname]
|
||||
mask_fname_only, ext = os.path.split(mask_fname)
|
||||
mask_fname = f'{mask_fname_only}_{idx}{ext}'
|
||||
else:
|
||||
filename2i[mask_fname] = 1
|
||||
|
||||
cur_vis_dict = datasets[0][img_i]
|
||||
for ds_i, ds in enumerate(datasets):
|
||||
cur_vis_dict[ds_i] = ds[img_i]['inpainted']
|
||||
|
||||
vis_img = visualize_mask_and_images(cur_vis_dict, keys,
|
||||
last_without_mask=False,
|
||||
mask_only_first=True,
|
||||
black_mask=args.black)
|
||||
vis_img = np.clip(vis_img * 255, 0, 255).astype('uint8')
|
||||
|
||||
out_fname = os.path.join(args.outpath, mask_fname)
|
||||
|
||||
|
||||
|
||||
vis_img = cv2.cvtColor(vis_img, cv2.COLOR_RGB2BGR)
|
||||
cv2.imwrite(out_fname, vis_img)
|
||||
except Exception as ex:
|
||||
print(f'Could not process {img_i} due to {ex}')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import argparse
|
||||
|
||||
aparser = argparse.ArgumentParser()
|
||||
aparser.add_argument('--max-n', type=int, default=100, help='Maximum number of images to print')
|
||||
aparser.add_argument('--black', action='store_true', help='Whether to fill mask on GT with black')
|
||||
aparser.add_argument('config', type=str, help='Path to evaluation config (e.g. configs/eval1.yaml)')
|
||||
aparser.add_argument('outpath', type=str, help='Where to put results')
|
||||
aparser.add_argument('datadir', type=str,
|
||||
help='Path to folder with images and masks')
|
||||
aparser.add_argument('predictdirs', type=str,
|
||||
nargs='+',
|
||||
help='Path to folders with predicts')
|
||||
|
||||
|
||||
main(aparser.parse_args())
|
||||
Reference in New Issue
Block a user