Spaces:
Running
Running
# -*- coding: utf-8 -*- | |
# Author: ximing | |
# Description: misc | |
# Copyright (c) 2023, XiMing Xing. | |
# License: MPL-2.0 License | |
from datetime import datetime | |
import random | |
import pathlib | |
from typing import Any, List, Dict, Union | |
import omegaconf | |
"""Add Type""" | |
AnyPath = Union[str, pathlib.Path, 'os.PathLike'] | |
AnyList = Union[omegaconf.ListConfig, List] | |
AnyDict = Union[omegaconf.DictConfig, Dict] | |
def render_batch_wrap(cfg: omegaconf.DictConfig, | |
seed_range: List, | |
pipeline: Any, | |
**pipe_args): | |
start_time = datetime.now() | |
for idx, seed in enumerate(seed_range): | |
cfg.seed = seed # update seed | |
print(f"\n-> [{idx}/{len(seed_range)}], " | |
f"current seed: {seed}, " | |
f"current time: {datetime.now() - start_time}\n") | |
pipe = pipeline(cfg) | |
pipe.painterly_rendering(**pipe_args) | |
def get_seed_range(srange: AnyList): | |
# random sampling without specifying a range | |
start_, end_ = 1, 1000000 | |
if srange is not None: # specify range sequential sampling | |
seed_range_ = list(srange) | |
assert len(seed_range_) == 2 and int(seed_range_[1]) > int(seed_range_[0]) | |
start_, end_ = int(seed_range_[0]), int(seed_range_[1]) | |
seed_range = [i for i in range(start_, end_)] | |
else: | |
# a list of lengths 1000 sampled from the range start_ to end_ (e.g.: [1, 1000000]) | |
numbers = list(range(start_, end_)) | |
seed_range = random.sample(numbers, k=1000) | |
return seed_range | |