|
|
|
|
|
|
|
|
|
import sys |
|
from pathlib import Path |
|
sys.path.append(str(Path(__file__).resolve().parents[1])) |
|
|
|
import math |
|
import torch |
|
import random |
|
import argparse |
|
import numpy as np |
|
|
|
from utils import util_image |
|
from utils import util_common |
|
|
|
from datapipe.face_degradation_testing import face_degradation |
|
|
|
parser = argparse.ArgumentParser() |
|
parser.add_argument( |
|
"-s", |
|
"--save_dir", |
|
type=str, |
|
default='/mnt/lustre/zsyue/disk/ResShift/Face/testingdata/Celeba-Test/', |
|
help="Folder to save the testing data.", |
|
) |
|
parser.add_argument( |
|
"-i", |
|
"--input_dir", |
|
type=str, |
|
default='/mnt/lustre/zsyue/datapipe/CelebA/images512x512', |
|
help="Txt file to record the image path.", |
|
) |
|
parser.add_argument( |
|
"-n", |
|
"--num_val", |
|
type=int, |
|
default=2000, |
|
help="Number of images", |
|
) |
|
parser.add_argument( |
|
"--seed", |
|
type=int, |
|
default=10000, |
|
help="Random seed.", |
|
) |
|
args = parser.parse_args() |
|
|
|
|
|
random.seed(args.seed) |
|
np.random.seed(args.seed) |
|
torch.manual_seed(args.seed) |
|
|
|
|
|
lq_dir = Path(args.save_dir) / "lq" |
|
hq_dir = Path(args.save_dir) / "hq" |
|
|
|
util_common.mkdir(lq_dir, delete=True) |
|
util_common.mkdir(hq_dir, delete=True) |
|
|
|
files_path = sorted([x for x in Path(args.input_dir).glob("*.png")]) |
|
assert args.num_val <= len(files_path) |
|
random.shuffle(files_path) |
|
files_path = files_path[:args.num_val] |
|
print(f'Number of images in validation: {args.num_val}') |
|
|
|
num_iters = 0 |
|
for ii in range(args.num_val): |
|
if (ii+1) % 100 == 0: |
|
print(f'Processing: {ii+1}/{args.num_val}') |
|
|
|
|
|
sf = random.uniform(1.0, 32) |
|
qf = random.uniform(30, 70) |
|
nf = random.uniform(1.0, 20) |
|
sig_x = random.uniform(4.0, 16) |
|
sig_y = random.uniform(4.0, 16) |
|
theta = random.random() * math.pi |
|
|
|
im_gt_path = files_path[ii] |
|
im_gt = util_image.imread(im_gt_path, chn='bgr', dtype='float32') |
|
|
|
im_lq = face_degradation( |
|
im_gt, |
|
sf=sf, |
|
sig_x=sig_x, |
|
sig_y=sig_y, |
|
theta=theta, |
|
qf=qf, |
|
nf=nf, |
|
) |
|
|
|
im_name = Path(im_gt_path).name |
|
im_save_path = lq_dir / im_name |
|
util_image.imwrite(im_lq, im_save_path, chn="bgr", dtype_in='float32') |
|
|
|
im_save_path = hq_dir / im_name |
|
util_image.imwrite(im_gt, im_save_path, chn="bgr", dtype_in='float32') |
|
|
|
|