bjooo's picture
Upload folder using huggingface_hub
9c98083 verified
|
Raw History Blame Contribute Delete
4.77 kB

Wan 2.2 LoRA Dataset Builder

์ž„์˜์˜ ์ด๋ฏธ์ง€/์˜์ƒ ํด๋”๋ฅผ ๋„ฃ์œผ๋ฉด ํ”ผ์‚ฌ์ฒด ์ค‘์‹ฌ์œผ๋กœ ํฌ๋กญํ•˜๊ณ  ๋กœ์ปฌ VLM์œผ๋กœ ์บก์…˜์„ ๋‹ฌ์•„, LoRA ํ•™์Šต ์Šคํฌ๋ฆฝํŠธ(musubi-tuner ๋“ฑ)์— ๋ฐ”๋กœ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” images/, videos/, .txt ์บก์…˜, dataset.toml ์ดˆ์•ˆ์„ ์ƒ์„ฑํ•˜๋Š” ๋…๋ฆฝ CLI ๋„๊ตฌ.

ComfyUI ๋…ธ๋“œ๊ฐ€ ์•„๋‹˜ โ€” __init__.py์—์„œ importํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ComfyUI ๋…ธ๋“œ ๋กœ๋”ฉ์— ๊ด€์—ฌํ•˜์ง€ ์•Š๊ณ , python_embeded\python.exe๋กœ ์ง์ ‘ ์‹คํ–‰ํ•œ๋‹ค.

์‚ฌ์šฉ ์ „์ œ: ํ•™์Šต ๋Œ€์ƒ ์ธ๋ฌผ/์บ๋ฆญํ„ฐ๊ฐ€ ๋ช…๋ฐฑํžˆ ์„ฑ์ธ์ด์–ด์•ผ ํ•จ. ๋‚˜์ด๊ฐ€ ๋ถˆ๋ช…ํ™•ํ•˜๊ฑฐ๋‚˜ ์•ณ๋ผ ๋ณด์ด๋Š” ์ธ๋ฌผ์˜ ์„ฑ์  ์ฝ˜ํ…์ธ  ๋ฐ์ดํ„ฐ์…‹ ๊ตฌ์ถ•์—๋Š” ์ด ๋„๊ตฌ๋ฅผ ์“ฐ์ง€ ๋ง ๊ฒƒ.

์‚ฌ์šฉ๋ฒ•

D:\SD\ComfyUI_windows_portable\python_embeded\python.exe ^
  dataset_builder\build.py ^
  --input "D:\raw_media" ^
  --output "D:\wan_lora_dataset" ^
  --trigger "ohwx man" ^
  --captioner joycaption

--input ํด๋”๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ์Šค์บ”ํ•ด ์ด๋ฏธ์ง€(jpg/png/webp/bmp)์™€ ์˜์ƒ(mp4/mov/mkv/avi/webm)์„ ์ž๋™ ๋ถ„๋ฅ˜ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•œ๋‹ค.

ํŒŒ์ดํ”„๋ผ์ธ

  1. ํ”ผ์‚ฌ์ฒด ๊ฐ์ง€: mediapipe ์–ผ๊ตด ๊ฒ€์ถœ โ†’ (์‹คํŒจ ์‹œ) OpenCV Haar cascade ์–ผ๊ตด ๊ฒ€์ถœ โ†’ (๊ทธ๋ž˜๋„ ์‹คํŒจ ์‹œ) ultralytics YOLOv8n ์‚ฌ๋žŒ ๊ฒ€์ถœ โ†’ (๊ทธ๋ž˜๋„ ์—†์œผ๋ฉด) ์ „์ฒด ํ”„๋ ˆ์ž„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ. ์‚ฌ๋žŒ์ด ์•„๋‹Œ ์‚ฌ๋ฌผ/์žฅ๋ฉด LoRA๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ "์ „์ฒด ํ”„๋ ˆ์ž„" ๊ฒฝ๋กœ๋กœ ๋น ์ง„๋‹ค.
  2. ๋ฒ„ํ‚ท ๋งค์นญ + ํฌ๋กญ: ๊ฐ์ง€๋œ bbox๋ฅผ ์–ผ๊ตด 2.2๋ฐฐ / ์‚ฌ๋žŒ 1.3๋ฐฐ๋กœ ํŒจ๋”ฉํ•œ ๋’ค, Wan 480p/720p/1080p ร— (๊ฐ€๋กœ/์„ธ๋กœ/์ •์‚ฌ๊ฐ) ๋ฒ„ํ‚ท ์ค‘ ์ข…ํšก๋น„๊ฐ€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฒƒ์„ ๊ณจ๋ผ ๊ทธ ํ•ด์ƒ๋„๋กœ ํฌ๋กญ+๋ฆฌ์‚ฌ์ด์ฆˆ(16 ๋ฐฐ์ˆ˜ ์ •๋ ฌ). ์›๋ณธ ํ•ด์ƒ๋„๋ณด๋‹ค ์ปค์ง€๋Š”(์—…์Šค์ผ€์ผ) ๋ฒ„ํ‚ท์€ ์ž๋™์œผ๋กœ ๊ฑด๋„ˆ๋›ด๋‹ค โ€” --max-tier๋กœ ์ƒํ•œ๋งŒ ์ง€์ •.
  3. ์˜์ƒ ์”ฌ ๋ถ„ํ• : OpenCV ํžˆ์Šคํ† ๊ทธ๋žจ ์ฐจ๋ถ„์œผ๋กœ ์ปท ์ง€์ ์„ ์ฐพ๊ณ , --clip-min-sec ~ --clip-max-sec ๋ฒ”์œ„๋กœ ํด๋ฆฝ์„ ๋‚˜๋ˆˆ๋‹ค. ํด๋ฆฝ๋งˆ๋‹ค ๋Œ€ํ‘œ ํ”„๋ ˆ์ž„ ๋ช‡ ์žฅ์˜ bbox ์ค‘์•™๊ฐ’์œผ๋กœ ํฌ๋กญ์„ ๊ณ ์ •ํ•˜๊ณ (ํ”„๋ ˆ์ž„ ํ”๋“ค๋ฆผ ๋ฐฉ์ง€), --video-fps๋กœ ๋ฆฌ์ƒ˜ํ”Œ, 4n+1 ํ”„๋ ˆ์ž„ ์ˆ˜๋กœ ํŠธ๋ฆฌ๋ฐ, optical flow ํ‰๊ท  ํฌ๊ธฐ๋กœ "static/subtle/moderate/fast motion" ํƒœ๊ทธ๋ฅผ ์บก์…˜์— ๋ง๋ถ™์ธ๋‹ค.
  4. ์บก์…”๋‹ (--captioner):
    • joycaption (๊ธฐ๋ณธ) โ€” fancyfeast/llama-joycaption-beta-one-hf-llava. ์ฃผ์˜: HuggingFace ๋ชจ๋ธ ์นด๋“œ์— "ํ•™์Šต์šฉ ์บก์…˜" ์ „์šฉ ํ”„๋กฌํ”„ํŠธ ๋ฌธ์ž์—ด์ด ๊ณต์‹ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์ง€ ์•Š์•„, ์—ฌ๊ธฐ ์“ฐ์ธ ์ง€์‹œ๋ฌธ(caption.py์˜ DEFAULT_PROMPT)์€ ์ž์ฒด ์ž‘์„ฑํ•œ ๊ธฐ๋ณธ๊ฐ’์ด๋‹ค. ์›ํ•˜๋Š” ์Šคํƒ€์ผ์ด ์žˆ์œผ๋ฉด --caption-prompt๋กœ ๋ฐ”๊ฟ”๋ผ.
    • florence2 โ€” microsoft/Florence-2-large, ๊ฐ€๋ณ๊ณ  ๋น ๋ฆ„(~0.77B).
    • wd14 โ€” SmilingWolf/wd-vit-tagger-v3 (onnx), booru ํƒœ๊ทธ ์Šคํƒ€์ผ.
    • ๊ณตํ†ต: --trigger๋กœ ๋„˜๊ธด ํŠธ๋ฆฌ๊ฑฐ ์›Œ๋“œ๋ฅผ ์บก์…˜ ๋งจ ์•ž์— ์ž๋™ ์‚ฝ์ž….

์ถœ๋ ฅ

output_dir/
  images/0001.jpg, 0001.txt, ...
  videos/0001.mp4, 0001.txt, ...
  dataset.toml   # musubi-tuner ์Šคํƒ€์ผ ์ดˆ์•ˆ โ€” ์‹ค์ œ ํŠธ๋ ˆ์ด๋„ˆ ๋ฒ„์ „ ๋ฌธ์„œ์™€ ๋Œ€์กฐ ํ›„ ์‚ฌ์šฉ

๋ชจ๋ธ ๋‹ค์šด๋กœ๋“œ / VRAM ์ฐธ๊ณ 

  • ์ตœ์ดˆ ์‹คํ–‰ ์‹œ HuggingFace์—์„œ ์บก์…”๋„ˆ ๊ฐ€์ค‘์น˜(JoyCaption 16GB, Florence-2-large ~1.5GB, WD14 ~์ˆ˜๋ฐฑMB)์™€ ultralytics yolov8n.pt(6MB)๋ฅผ ์ž๋™ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค. ๋„คํŠธ์›Œํฌ/๋””์Šคํฌ ์šฉ๋Ÿ‰ ํ™•์ธ ํ›„ ์‹คํ–‰ํ•  ๊ฒƒ.
  • RTX 5090 32GB ๊ธฐ์ค€, ComfyUI๊ฐ€ ์ด๋ฏธ VRAM์„ ์ ์œ  ์ค‘์ด๋ฉด JoyCaption(8B, bf16 ๊ธฐ์ค€ ~16GB)์ด ๋ถ€์กฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ --load-in-4bit(bitsandbytes)๋กœ ์ค„์ด๊ฑฐ๋‚˜, ComfyUI ์„œ๋ฒ„๋ฅผ ์ž ์‹œ ๋‚ด๋ ค๋‘๊ณ  ์‹คํ–‰ํ•  ๊ฒƒ.

์•Œ๋ ค์ง„ ํ™˜๊ฒฝ ํŠน์ด์‚ฌํ•ญ

  • ์ด embedded Python ํ™˜๊ฒฝ์€ import torch๋งŒ ํ•ด๋„ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์ข…๋ฃŒ ์‹œ ๋น„์ •์ƒ ์ข…๋ฃŒ ์ฝ”๋“œ(์˜ˆ: -1073740791)๋ฅผ ๋‚ธ๋‹ค. dataset_builder์™€ ๋ฌด๊ด€ํ•œ ๊ธฐ์กด ํ™˜๊ฒฝ ์ด์Šˆ์ด๋ฉฐ, ์‹ค์ œ ์ž‘์—…(ํŒŒ์ผ ์ €์žฅ)์€ ๊ทธ ์ „์— ์ด๋ฏธ ๋๋‚œ ๋’ค ๋ฐœ์ƒํ•˜๋Š” ์ข…๋ฃŒ ์‹œ์  ํฌ๋ž˜์‹œ๋ผ ๊ฒฐ๊ณผ๋ฌผ์—๋Š” ์˜ํ–ฅ ์—†์Œ. ๋ฐฐ์น˜ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ข…๋ฃŒ ์ฝ”๋“œ๋กœ ์„ฑ๊ณต/์‹คํŒจ๋ฅผ ํŒ๋‹จํ•˜์ง€ ๋ง๊ณ  ์ฝ˜์†” ๋กœ๊ทธ์˜ Done. ์ค„๋กœ ํ™•์ธํ•  ๊ฒƒ.

๊ฒ€์ฆ๋œ ๊ฒƒ / ์•ˆ ๋œ ๊ฒƒ

  • crop_resize.py(๋ฒ„ํ‚ท ๋งค์นญ ์ˆ˜ํ•™), detect.py(๋‹ค๋‹จ๊ณ„ ํด๋ฐฑ), scene_split.py (์”ฌ ์ปท + ํด๋ฆฝ ์ถ”์ถœ + 4n+1 ํŠธ๋ฆฌ๋ฐ + ๋ชจ์…˜ ํƒœ๊ทธ)๋Š” ์‹ค์ œ ์ƒ˜ํ”Œ ์ด๋ฏธ์ง€/์˜์ƒ์œผ๋กœ ์Šค๋ชจํฌ ํ…Œ์ŠคํŠธ ์™„๋ฃŒ.
  • caption.py(JoyCaption/Florence-2/WD14 ์‹ค์ œ ์ถ”๋ก  ํ˜ธ์ถœ)๋Š” ๋ชจ๋ธ ๊ฐ€์ค‘์น˜ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์ปค์„œ ์ด๋ฒˆ ์„ธ์…˜์—์„œ end-to-end๋กœ ๋Œ๋ ค๋ณด์ง€ ์•Š์•˜๋‹ค. ํด๋ž˜์Šค/์ „์ฒ˜๋ฆฌ๋Š” ๊ฐ ๋ชจ๋ธ์˜ ๊ณต์‹ ๋ฌธ์„œ(HF ๋ชจ๋ธ ์นด๋“œ, wd-tagger Space ์†Œ์Šค)๋ฅผ ๋Œ€์กฐํ•ด ์ž‘์„ฑํ–ˆ์ง€๋งŒ, ์ฒ˜์Œ ์‹คํ–‰ํ•  ๋•Œ ์บก์…”๋„ˆ ์ชฝ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋ฉด ๊ทธ ๋ถ€๋ถ„๋ถ€ํ„ฐ ํ™•์ธํ•  ๊ฒƒ.