SVDiff-Training-UI / utils.py
mkshing
first commit
e2a20af
from __future__ import annotations
import pathlib
def find_exp_dirs(ignore_repo: bool = False) -> list[str]:
repo_dir = pathlib.Path(__file__).parent
exp_root_dir = repo_dir / 'experiments'
if not exp_root_dir.exists():
return []
exp_dirs = sorted(exp_root_dir.glob('*'))
exp_dirs = [
exp_dir for exp_dir in exp_dirs
if (exp_dir / 'spectral_shifts.safetensors').exists()
]
if ignore_repo:
exp_dirs = [
exp_dir for exp_dir in exp_dirs if not (exp_dir / '.git').exists()
]
return [path.relative_to(repo_dir).as_posix() for path in exp_dirs]
def save_model_card(
save_dir: pathlib.Path,
base_model: str,
instance_prompt: str,
test_prompt: str = '',
test_image_dir: str = '',
) -> None:
image_str = ''
if test_prompt and test_image_dir:
image_paths = sorted((save_dir / test_image_dir).glob('*'))
if image_paths:
image_str = f'Test prompt: {test_prompt}\n'
for image_path in image_paths:
rel_path = image_path.relative_to(save_dir)
image_str += f'![{image_path.stem}]({rel_path})\n'
model_card = f'''---
license: creativeml-openrail-m
base_model: {base_model}
instance_prompt: {instance_prompt}
tags:
- stable-diffusion
- stable-diffusion-diffusers
- text-to-image
- diffusers
- lora
inference: true
---
# SVDiff-pytorch - {save_dir.name}
These are SVDiff weights for {base_model}. The weights were trained on "{instance_prompt}" using [DreamBooth](https://dreambooth.github.io/). You can find some example images in the following.
{image_str}
'''
with open(save_dir / 'README.md', 'w') as f:
f.write(model_card)