添加数据增强方案以及扩散生成模型的想法

This commit is contained in:
Jiao77
2025-10-20 21:14:03 +08:00
parent d6d00cf088
commit 08f488f0d8
22 changed files with 1903 additions and 190 deletions

View File

@@ -0,0 +1,46 @@
#!/usr/bin/env python3
"""
Prepare raster patch dataset and optional condition maps for diffusion training.
Planned inputs:
- --src_dirs: one or more directories containing PNG layout images
- --out_dir: output root for images/ and conditions/
- --size: patch size (e.g., 256)
- --stride: sliding stride for patch extraction
- --min_fg_ratio: minimum foreground ratio to keep a patch (0-1)
- --make_conditions: flags to generate edge/skeleton/distance maps
Current status: CLI skeleton and TODOs only.
"""
from __future__ import annotations
import argparse
from pathlib import Path
def main() -> None:
parser = argparse.ArgumentParser(description="Prepare patch dataset for diffusion training (skeleton)")
parser.add_argument("--src_dirs", type=str, nargs="+", help="Source PNG dirs for layouts")
parser.add_argument("--out_dir", type=str, required=True, help="Output root directory")
parser.add_argument("--size", type=int, default=256, help="Patch size")
parser.add_argument("--stride", type=int, default=256, help="Patch stride")
parser.add_argument("--min_fg_ratio", type=float, default=0.02, help="Min foreground ratio to keep a patch")
parser.add_argument("--make_edge", action="store_true", help="Generate edge map conditions (e.g., Sobel/Canny)")
parser.add_argument("--make_skeleton", action="store_true", help="Generate morphological skeleton condition")
parser.add_argument("--make_dist", action="store_true", help="Generate distance transform condition")
args = parser.parse_args()
out_root = Path(args.out_dir)
out_root.mkdir(parents=True, exist_ok=True)
(out_root / "images").mkdir(exist_ok=True)
(out_root / "conditions").mkdir(exist_ok=True)
# TODO: implement extraction loop over src_dirs, crop patches, filter by min_fg_ratio,
# and save into images/; generate optional condition maps into conditions/ mirroring filenames.
# Keep file naming consistent: images/xxx.png, conditions/xxx_edge.png, etc.
print("[TODO] Implement patch extraction and condition map generation.")
if __name__ == "__main__":
main()