| import pathlib |
| from typing import List |
|
|
| from diffusers.utils import export_to_video |
| from PIL import Image |
|
|
| from finetrainers.data.dataset import COMMON_CAPTION_FILES, COMMON_IMAGE_FILES, COMMON_VIDEO_FILES |
|
|
|
|
| def create_dummy_directory_structure( |
| directory_structure: List[str], tmpdir, num_data_files: int, caption: str, metadata_extension: str |
| ): |
| for item in directory_structure: |
| |
| if item in COMMON_CAPTION_FILES: |
| data_file = pathlib.Path(tmpdir.name) / item |
| with open(data_file.as_posix(), "w") as f: |
| for _ in range(num_data_files): |
| f.write(f"{caption}\n") |
| elif item in COMMON_IMAGE_FILES: |
| data_file = pathlib.Path(tmpdir.name) / item |
| with open(data_file.as_posix(), "w") as f: |
| for i in range(num_data_files): |
| f.write(f"images/{i}.jpg\n") |
| elif item in COMMON_VIDEO_FILES: |
| data_file = pathlib.Path(tmpdir.name) / item |
| with open(data_file.as_posix(), "w") as f: |
| for i in range(num_data_files): |
| f.write(f"videos/{i}.mp4\n") |
| elif item == "metadata.csv": |
| data_file = pathlib.Path(tmpdir.name) / item |
| with open(data_file.as_posix(), "w") as f: |
| f.write("file_name,caption\n") |
| for i in range(num_data_files): |
| f.write(f"{i}.{metadata_extension},{caption}\n") |
| elif item == "metadata.jsonl": |
| data_file = pathlib.Path(tmpdir.name) / item |
| with open(data_file.as_posix(), "w") as f: |
| for i in range(num_data_files): |
| f.write(f'{{"file_name": "{i}.{metadata_extension}", "caption": "{caption}"}}\n') |
| elif item.endswith(".txt"): |
| data_file = pathlib.Path(tmpdir.name) / item |
| with open(data_file.as_posix(), "w") as f: |
| f.write(caption) |
| elif item.endswith(".jpg") or item.endswith(".png"): |
| data_file = pathlib.Path(tmpdir.name) / item |
| Image.new("RGB", (64, 64)).save(data_file.as_posix()) |
| elif item.endswith(".mp4"): |
| data_file = pathlib.Path(tmpdir.name) / item |
| export_to_video([Image.new("RGB", (64, 64))] * 4, data_file.as_posix(), fps=2) |
| else: |
| data_file = pathlib.Path(tmpdir.name, item) |
| data_file.mkdir(exist_ok=True, parents=True) |
|
|