File size: 4,156 Bytes
0663c69
 
c89df6e
0663c69
c89df6e
 
0663c69
 
 
c89df6e
 
 
 
 
 
a11abf8
 
 
c89df6e
a11abf8
 
c89df6e
 
 
 
 
68b551a
c89df6e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a11abf8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c89df6e
 
a11abf8
c89df6e
a11abf8
c89df6e
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
---
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** - ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ