-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathffhq_sample.py
More file actions
54 lines (42 loc) · 1.76 KB
/
Copy pathffhq_sample.py
File metadata and controls
54 lines (42 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import matplotlib.pyplot as plt
import argparse
import os, sys
from datetime import datetime
sys.path.append("..")
sys.path.append("ALAE/")
from pathlib import Path
import logging
from fsbm.plotting import *
from fsbm.utils import get_repo_path, restore_model
from fsbm.dataset import get_dist_boundary
from alae_ffhq_inference import load_model, encode, decode
from torchvision.utils import save_image
torch.backends.cudnn.benchmark = True
log = logging.getLogger(__name__)
BASE_DIR = Path("outputs//afhq")
date_str = datetime.now().strftime("%Y-%m-%d")
time_str = datetime.now().strftime("%H-%M-%S")
def main(opt, log):
log(opt)
## Load model
model, cfg = restore_model(opt.ckpt_file, device=opt.device)
model.eval()
_, _, p0_val, p1_val = get_dist_boundary(cfg)
samples = 2048
default_config = (str(get_repo_path()) + '/ALAE/configs/ffhq.yaml')
training_artifacts_dir = (str(get_repo_path()) + f"/ALAE/training_artifacts/{cfg.name}/")
alae_model = load_model(default_config, training_artifacts_dir=training_artifacts_dir)
output = model.sample(p0_val(samples), log_steps=20, nfe=1000, direction='fwd')
dir = f'outputs/sample/{opt.experiment}/fsbm_outputs/{date_str}/{time_str}/'
os.makedirs(dir, exist_ok=True)
for i in range(samples):
decoded_inp = decode(alae_model, output['xs'][i, -1].unsqueeze(0).cpu()) * 0.5 + 0.5
save_image(decoded_inp, os.path.join(dir, f'generated_p1_{i}.png'))
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--ckpt_file", type=Path, default=None)
parser.add_argument("--experiment", type=str, default=None, required=True)
parser.add_argument("--device", type=str, default="cpu")
opt = parser.parse_args()
log = print
main(opt, log)