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 ์†Œ์Šค)๋ฅผ ๋Œ€์กฐํ•ด ์ž‘์„ฑํ–ˆ์ง€๋งŒ, ์ฒ˜์Œ
์‹คํ–‰ํ•  ๋•Œ ์บก์…”๋„ˆ ์ชฝ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋ฉด ๊ทธ ๋ถ€๋ถ„๋ถ€ํ„ฐ ํ™•์ธํ•  ๊ฒƒ.