YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
feed_pipeline
ํ์คํธ ์๋ฃ ๋ฉ์์ง + ์บ๋ฆญํฐ ๋๋ผ ์ด๋ฏธ์ง โ ๋ชฝ๊ธ๋ง์ ํฝ์ ์ํธ ํผ๋ ์ด๋ฏธ์ง ์์ฑ ํจํค์ง.
ํด๋ ๊ตฌ์กฐ
feed_pipeline/
โโโ __init__.py โ ํต์ฌ ํจ์ export
โโโ pipeline.py โ ํต์ฌ ๋ก์ง (์บ๋ฆญํฐ ์์ฑ + ๋ฐฐ๊ฒฝ ์์ฑ + ํฉ์ฑ)
โโโ run.py โ CLI ์ง์
์
โโโ README.md โ ์ด ํ์ผ
๊ฒฐ๊ณผ๋ outputs/feed/{name}/ ์ ์ ์ฅ๋ฉ๋๋ค.
ํ์ดํ๋ผ์ธ ํ๋ฆ
result_nobg.png (image_pipeline ๊ฒฐ๊ณผ๋ฌผ) + ํ๊ตญ์ด ํ์คํธ ๋ฉ์์ง
โ
โผ
[STEP 0] Qwen2-VL โ ํ์คํธ ๋ฒ์ญ
โ action: ์บ๋ฆญํฐ ํฌ์ฆ ์ค๋ช
(์: "running with arms swinging")
โ scene: ๋ฐฐ๊ฒฝ ํ๊ฒฝ ์ค๋ช
(์: "fluffy cloud meadow path")
โ
โผ
[STEP 1] img2img (strength=0.75)
result_nobg.png โ ํฝ์
์ํธ ์บ๋ฆญํฐ (ํฐ ๋ฐฐ๊ฒฝ)
์บ๋ฆญํฐ LoRA + action ํ๋กฌํํธ + appearance.json ์ธํ ์ ๋ณด
โ
โผ
[STEP 2] rembg โ ํฝ์
์ํธ ์บ๋ฆญํฐ ๋๋ผ
โ
โผ
[STEP 3] text2img โ ํ์คํธ ๋ฐฐ๊ฒฝ ์ฅ๋ฉด ์์ฑ
๋ฐฐ๊ฒฝ LoRA + scene ํ๋กฌํํธ + ๋๋ค ์๋ (์ด๋ฏธ์ง๋ง๋ค ๋ค๋ฅธ ๋ฐฐ๊ฒฝ)
โ
โผ
[STEP 4] ํฉ์ฑ โ ์บ๋ฆญํฐ๋ฅผ ๋ฐฐ๊ฒฝ ์์ ๋ฐฐ์น (๊ทธ๋ฆผ์ ํฌํจ)
โ
โผ
[STEP 5] ์ธํ์ธํ
๋ธ๋ ๋ฉ โ ์บ๋ฆญํฐ ๊ฒฝ๊ณ ์์ฐ์ค๋ฝ๊ฒ ์ฒ๋ฆฌ
โ
โผ
{name}_feed.png โ
์ต์ข
๊ฒฐ๊ณผ
์ฌ์ฉ ๋ชจ๋ธ
HuggingFace ์๋ ๋ค์ด๋ก๋ (์ฒซ ์คํ ์ ์บ์์ ์ ์ฅ):
| ๋ชจ๋ธ | ์ฉ๋ | VRAM |
|---|---|---|
stabilityai/stable-diffusion-xl-base-1.0 |
๊ธฐ๋ฐ ์์ฑ ๋ชจ๋ธ | ~8GB |
latent-consistency/lcm-lora-sdxl |
8์คํ ๋น ๋ฅธ ์์ฑ | (LoRA) |
Hadimeeee/mongle-character-lora |
๋ชฝ๊ธ ํฝ์ ์ํธ ์บ๋ฆญํฐ ์คํ์ผ LoRA | (LoRA) |
Hadimeeee/mongle-bg-lora |
๋ชฝ๊ธ ํฝ์ ์ํธ ๋ฐฐ๊ฒฝ ์คํ์ผ LoRA | (LoRA) |
Qwen/Qwen2-VL-7B-Instruct |
ํ์คํธ ํโ์ ๋ฒ์ญ | ~8GB (8bit) |
๋ก์ปฌ์ ๋ชจ๋ธ ํด๋๊ฐ ์์ด๋ ๋ฉ๋๋ค. ๋ชจ๋ HuggingFace์์ ์๋์ผ๋ก ๋ฐ์์ต๋๋ค.
ํ๊ฒฝ ์๊ตฌ์ฌํญ
- Python 3.10+
- CUDA GPU (VRAM 12GB ์ด์ ๊ถ์ฅ)
pip install torch diffusers transformers accelerate
pip install rembg pillow numpy
pip install bitsandbytes qwen-vl-utils
pip install huggingface_hub
์คํ ๋ฐฉ๋ฒ
CLI
# ๋ฐฐ์น โ ํด๋ ์ result_nobg.png ์ ์ฒด ์ฒ๋ฆฌ
python -m feed_pipeline.run --batch path/to/folder --quest "์ค๋ ๋์๊ด์์ ์ฑ
ํ ๊ถ์ ๋ค ์ฝ์์ด์" --name run_01
# ๋จ์ผ ์ด๋ฏธ์ง
python -m feed_pipeline.run --input path/to/result_nobg.png --quest "๊ณต์์์ 30๋ถ ๋ฌ๋ฆฌ๊ธฐ๋ฅผ ์๋ฃํ์ด์"
# ์์ด ์ง์ ์
๋ ฅ (VLM ๋ฒ์ญ ์๋ต, ๋น ๋ฆ)
python -m feed_pipeline.run --batch path/to/folder --quest-en "running in the park" --name run_02
# ์ฒ์ n์ฅ๋ง ํ
์คํธ
python -m feed_pipeline.run --batch path/to/folder --quest "..." --limit 3 --name test_01
python -m feed_pipeline.run์ ๋ ํฌ ๋ฃจํธ์์ ์คํํฉ๋๋ค.
์ ๋ ฅ ํด๋ ๊ตฌ์กฐ
--batch ํด๋ ์์ ์๋์ฒ๋ผ result_nobg.png ๊ฐ ์์ผ๋ฉด ๋ฉ๋๋ค.appearance.json ์ด ๊ฐ์ ํด๋์ ์์ผ๋ฉด ์บ๋ฆญํฐ ์ธํ ์ ๋ณด๋ก ์๋ ๋ฐ์๋ฉ๋๋ค.
batch_folder/
โโโ 01/
โ โโโ result_nobg.png โ ํ์ (image_pipeline ๊ฒฐ๊ณผ๋ฌผ)
โ โโโ appearance.json โ ์ ํ (์ธํ ์๋ ๋ฐ์)
โโโ 02/
โ โโโ result_nobg.png
โ โโโ appearance.json
โโโ ...
๊ฒฐ๊ณผ ํ์ผ
outputs/feed/{name}/
โโโ {ํด๋๋ช
}_char.png โ STEP 1 ํฝ์
์ํธ ์บ๋ฆญํฐ (ํฐ ๋ฐฐ๊ฒฝ)
โโโ {ํด๋๋ช
}_feed.png โ ์ต์ข
ํผ๋ ์ด๋ฏธ์ง โ
โโโ {ํด๋๋ช
}_compare.png โ ์๋ณธ / ์บ๋ฆญํฐ / ๋ฐฐ๊ฒฝ / ๊ฒฐ๊ณผ 4๋จ ๋น๊ต
ํ๋ผ๋ฏธํฐ ์์ธ
| ํ๋ผ๋ฏธํฐ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
|---|---|---|
--strength |
0.75 |
์บ๋ฆญํฐ img2img ๊ฐ๋. ๋์์๋ก ์๋ณธ์์ ๋ง์ด ๋ณํ๋จ |
--char-scale |
1.0 |
์บ๋ฆญํฐ LoRA ๊ฐ๋ |
--bg-scale |
1.0 |
๋ฐฐ๊ฒฝ LoRA ๊ฐ๋ |
--inpaint-str |
0.35 |
๋ธ๋ ๋ฉ ๊ฐ๋. ๋ฎ์์๋ก ํฉ์ฑ ๊ฒฝ๊ณ๋ง ์ด์ง ์ฒ๋ฆฌ |
--blend-mode |
inpaint |
inpaint=๊ฒฝ๊ณ๋ง / img2img=์ ์ฒด ์ด๋ฏธ์ง ๋ธ๋ ๋ฉ |
--steps |
8 |
์ถ๋ก ์คํ ์ (LCM 8์คํ ๊ธฐ๋ณธ) |
--seed |
42 |
์บ๋ฆญํฐ ์์ฑ ์๋ (๋ฐฐ๊ฒฝ์ ์ด๋ฏธ์ง๋ง๋ค ์๋ ๋๋ค) |
--limit |
0 |
๋ฐฐ์น ์ฒ๋ฆฌ ์ต๋ ์ฅ์ (0=์ ์ฒด) |
--name |
run_01 |
์ถ๋ ฅ ํด๋ ์ด๋ฆ |
์ฃผ์ ํ์ผ ์ค๋ช
pipeline.py
ํต์ฌ ์์ฑ ํจ์๋ค์ด ์ ์๋ ํ์ผ์ ๋๋ค.
load_pipelines()โ SDXL txt2img + img2img + inpaint ํ์ดํ๋ผ์ธ ๋ก๋ (UNet ๊ณต์ ๋ก VRAM ์ ์ฝ)generate_character()โ img2img๋ก ํฝ์ ์ํธ ์บ๋ฆญํฐ ์์ฑremove_bg()โ rembg๋ก ์บ๋ฆญํฐ ๋๋ผgenerate_background()โ text2img๋ก ๋ฐฐ๊ฒฝ ์ฅ๋ฉด ์์ฑcomposite()โ ์บ๋ฆญํฐ๋ฅผ ๋ฐฐ๊ฒฝ ์์ ํฉ์ฑ (๊ทธ๋ฆผ์ ํฌํจ, ํฌ๊ธฐ ์๋ ์กฐ์ )inpaint_blend()โ ์บ๋ฆญํฐ ๊ฒฝ๊ณ ์ธํ์ธํ ๋ธ๋ ๋ฉimg2img_blend()โ ์ ์ฒด ์ด๋ฏธ์ง img2img ๋ธ๋ ๋ฉ (๋์)
run.py
python -m feed_pipeline.run ์ผ๋ก ์คํํ๋ CLI ์ง์
์ ์
๋๋ค.
__init__.py
pipeline.py ์ ํต์ฌ ํจ์๋ค์ ํจํค์ง ๋ ๋ฒจ๋ก exportํฉ๋๋ค.
์ฃผ์์ฌํญ
result_nobg.png๋image_pipeline์ ์ถ๋ ฅ๋ฌผ์ ์ฌ์ฉํฉ๋๋ค.- ๋ฐฐ๊ฒฝ์ ์ด๋ฏธ์ง๋ง๋ค ๋๋ค ์๋๊ฐ ์ ์ฉ๋์ด ํญ์ ๋ค๋ฅธ ๋ฐฐ๊ฒฝ์ด ์์ฑ๋ฉ๋๋ค.
- ์ฒซ ์คํ ์ ๋ชจ๋ธ ๋ค์ด๋ก๋๋ก ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค (ํฉ๊ณ ์ฝ 15~20GB).
- LCM ๋ชจ๋์์
guidance_scale์ ์๋์ผ๋ก 1.5 ์ ์ฉ๋ฉ๋๋ค.