younginpiniti's picture
feat: ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œ๋˜๋Š” ๋ชจ๋“  ์ •๋ณด ๋ฉ”์‹œ์ง€๋ฅผ ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ–ˆ์Šต๋‹ˆ๋‹ค.
a11abf8
metadata
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):
{
  "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):
{
  "image_base64": "Base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ์ž…๋ ฅ ์ด๋ฏธ์ง€ (ํ•„์ˆ˜)",
  "prompt": "๋ณ€ํ™˜ํ•  ์Šคํƒ€์ผ ํ”„๋กฌํ”„ํŠธ (ํ•„์ˆ˜)",
  "negative_prompt": "์ œ์™ธํ•  ํƒœ๊ทธ (์„ ํƒ)",
  "model_name": "์‚ฌ์šฉํ•  ๋ชจ๋ธ ์ด๋ฆ„ (์„ ํƒ)",
  "strength": 0.75,
  "num_inference_steps": 25,
  "guidance_scale": 7.5,
  "seed": -1
}

3. Python ํ˜ธ์ถœ ์˜ˆ์ œ (txt2img)

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)

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 - ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ