--- title: Stable Diffusion WebUI emoji: ๐ŸŒธ colorFrom: pink colorTo: purple sdk: docker pinned: false --- # ๐ŸŒธ Anime Diffusion WebUI ํ—ˆ๊น…ํŽ˜์ด์Šค ์ŠคํŽ˜์ด์Šค์—์„œ ์‹คํ–‰๋˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ์Šคํƒ€์ผ ์ด๋ฏธ์ง€ ์ƒ์„ฑ๊ธฐ์ž…๋‹ˆ๋‹ค. ## โœจ ๊ธฐ๋Šฅ - **ํ…์ŠคํŠธ โ†’ ์ด๋ฏธ์ง€ (txt2img)**: ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ด๋ฏธ์ง€ ์ƒ์„ฑ - **์ด๋ฏธ์ง€ โ†’ ์ด๋ฏธ์ง€ (img2img)**: ๊ธฐ์กด ์ด๋ฏธ์ง€๋ฅผ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์Šคํƒ€์ผ๋กœ ๋ณ€ํ™˜ - **๋‹ค์–‘ํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ชจ๋ธ**: 8๊ฐ€์ง€ ์ธ๊ธฐ ๋ชจ๋ธ ์ง€์› - **๋„ค๊ฑฐํ‹ฐ๋ธŒ ํ”„๋กฌํ”„ํŠธ**: ์›ํ•˜์ง€ ์•Š๋Š” ์š”์†Œ ์ œ์™ธ - **๋ณ€ํ™˜ ๊ฐ•๋„ ์กฐ์ ˆ**: img2img์—์„œ ์›๋ณธ ์œ ์ง€ ์ •๋„ ์กฐ์ ˆ - **REST API ์ง€์›**: ์™ธ๋ถ€ ์•ฑ์—์„œ API ํ˜ธ์ถœ ๊ฐ€๋Šฅ ## ๐Ÿค– ์ง€์› ๋ชจ๋ธ | ๋ชจ๋ธ | ํŠน์ง• | |------|------| | **Mistoon Anime V3** โญ | ์นดํˆฐํ’ ์• ๋‹ˆ๋ฉ”์ด์…˜, ์„ ๋ช…ํ•œ ์ƒ‰์ƒ, ๋‘๊บผ์šด ์™ธ๊ณฝ์„  | | **Anything V5** | ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ชจ๋ธ | | **Counterfeit V3** | ๊ณ ํ’ˆ์งˆ ์• ๋‹ˆ๋ฉ”์ด์…˜/์ผ๋Ÿฌ์ŠคํŠธ | | **DreamShaper V8** | ๋‹ค์–‘ํ•œ ์Šคํƒ€์ผ ์ง€์› | | **OpenJourney V4** | Midjourney ์Šคํƒ€์ผ | | **Stable Diffusion v1.5** | ๊ธฐ๋ณธ ๋ชจ๋ธ | | **MeinaMix V11** | ๊ณ ํ€„๋ฆฌํ‹ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ | | **ReV Animated** | ์• ๋‹ˆ๋ฉ”์ด์…˜ ํŠนํ™” | ## ๐Ÿš€ ์‚ฌ์šฉ๋ฒ• 1. ๋“œ๋กญ๋‹ค์šด์—์„œ ์›ํ•˜๋Š” ๋ชจ๋ธ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค 2. ํ”„๋กฌํ”„ํŠธ ์ž…๋ ฅ์ฐฝ์— ์›ํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค 3. (์„ ํƒ) ๋„ค๊ฑฐํ‹ฐ๋ธŒ ํ”„๋กฌํ”„ํŠธ๋กœ ์›ํ•˜์ง€ ์•Š๋Š” ์š”์†Œ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค 4. ์ด๋ฏธ์ง€ ํฌ๊ธฐ์™€ ์ƒ์„ฑ ์˜ต์…˜์„ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค 5. "๐Ÿš€ ์ด๋ฏธ์ง€ ์ƒ์„ฑ" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค ## ๐Ÿ’ก ํ”„๋กฌํ”„ํŠธ ์˜ˆ์‹œ ``` 1girl, solo, long blue hair, blue eyes, school uniform, cherry blossoms, masterpiece, best quality, detailed ``` ## โš ๏ธ ์ฃผ์˜์‚ฌํ•ญ - CPU ๋ชจ๋“œ์—์„œ๋Š” ์ด๋ฏธ์ง€ ์ƒ์„ฑ์— 2-5๋ถ„ ์ •๋„ ์†Œ์š”๋ฉ๋‹ˆ๋‹ค - ์ฒซ ์‹คํ–‰ ์‹œ ๋ชจ๋ธ ๋‹ค์šด๋กœ๋“œ๋กœ ์ถ”๊ฐ€ ์‹œ๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค - GPU ์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ›จ์”ฌ ๋น ๋ฅธ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค ## ๐Ÿ”Œ REST API ์‚ฌ์šฉ๋ฒ• ์ด ํ”„๋กœ์ ํŠธ๋Š” ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ REST API๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ### 1. ํ…์ŠคํŠธ โ†’ ์ด๋ฏธ์ง€ API (txt2img) - **์—”๋“œํฌ์ธํŠธ**: `POST /api/generate` - **๋ณธ๋ฌธ ๊ตฌ์กฐ (JSON)**: ```json { "prompt": "์ƒ์„ฑํ•  ํ”„๋กฌํ”„ํŠธ (ํ•„์ˆ˜)", "negative_prompt": "์ œ์™ธํ•  ํƒœ๊ทธ (์„ ํƒ)", "model_name": "์‚ฌ์šฉํ•  ๋ชจ๋ธ ์ด๋ฆ„ (์„ ํƒ)", "width": 512, "height": 512, "num_inference_steps": 25, "guidance_scale": 7.5, "seed": -1 } ``` ### 2. ์ด๋ฏธ์ง€ โ†’ ์ด๋ฏธ์ง€ API (img2img) - **์—”๋“œํฌ์ธํŠธ**: `POST /api/img2img` - **๋ณธ๋ฌธ ๊ตฌ์กฐ (JSON)**: ```json { "image_base64": "Base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ์ž…๋ ฅ ์ด๋ฏธ์ง€ (ํ•„์ˆ˜)", "prompt": "๋ณ€ํ™˜ํ•  ์Šคํƒ€์ผ ํ”„๋กฌํ”„ํŠธ (ํ•„์ˆ˜)", "negative_prompt": "์ œ์™ธํ•  ํƒœ๊ทธ (์„ ํƒ)", "model_name": "์‚ฌ์šฉํ•  ๋ชจ๋ธ ์ด๋ฆ„ (์„ ํƒ)", "strength": 0.75, "num_inference_steps": 25, "guidance_scale": 7.5, "seed": -1 } ``` ### 3. Python ํ˜ธ์ถœ ์˜ˆ์ œ (txt2img) ```python import requests import base64 url = "https://your-space.hf.space/api/generate" payload = { "prompt": "1girl, anime, long hair, masterpiece", "negative_prompt": "bad anatomy, blurry", } response = requests.post(url, json=payload) data = response.json() if data["success"]: with open("output.png", "wb") as f: f.write(base64.b64decode(data["image_base64"])) ``` ### 4. Python ํ˜ธ์ถœ ์˜ˆ์ œ (img2img) ```python import requests import base64 # ์ด๋ฏธ์ง€๋ฅผ Base64๋กœ ์ธ์ฝ”๋”ฉ with open("input.jpg", "rb") as f: image_base64 = base64.b64encode(f.read()).decode("utf-8") url = "https://your-space.hf.space/api/img2img" payload = { "image_base64": image_base64, "prompt": "anime style, colorful, masterpiece", "strength": 0.75 } response = requests.post(url, json=payload) data = response.json() if data["success"]: with open("output.png", "wb") as f: f.write(base64.b64decode(data["image_base64"])) ``` ## ๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ - **FastAPI / Uvicorn** - REST API ์„œ๋ฒ„ - **Gradio** - ์›น ์ธํ„ฐํŽ˜์ด์Šค - **Diffusers** - ํ—ˆ๊น…ํŽ˜์ด์Šค ๋””ํ“จ์ „ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - **Docker** - ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ - **PyTorch** - ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ