Spaces:
Runtime error
Runtime error
AgainstEntropy
commited on
Commit
β’
dffe42a
1
Parent(s):
3a60dca
add requirements.txt
Browse files- app.py +1 -1
- image_utils.py +68 -0
- requirements.txt +6 -0
- style.css +17 -0
app.py
CHANGED
@@ -91,7 +91,7 @@ else:
|
|
91 |
DESCRIPTION += "\n<p>This demo will get the best kanji streaming experience in localhost (or SSH forward), instead of shared link generated by Gradio.</p>"
|
92 |
|
93 |
client = InferenceClient(
|
94 |
-
"mistralai/Mixtral-8x7B-Instruct-v0.1"
|
95 |
)
|
96 |
|
97 |
def format_prompt(message, history):
|
|
|
91 |
DESCRIPTION += "\n<p>This demo will get the best kanji streaming experience in localhost (or SSH forward), instead of shared link generated by Gradio.</p>"
|
92 |
|
93 |
client = InferenceClient(
|
94 |
+
model="mistralai/Mixtral-8x7B-Instruct-v0.1",
|
95 |
)
|
96 |
|
97 |
def format_prompt(message, history):
|
image_utils.py
ADDED
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
|
3 |
+
from PIL import Image
|
4 |
+
|
5 |
+
|
6 |
+
class ImageStitcher:
|
7 |
+
def __init__(
|
8 |
+
self,
|
9 |
+
tmp_dir: str,
|
10 |
+
img_res: int = 64,
|
11 |
+
img_per_line: int = 10,
|
12 |
+
verbose: bool = False
|
13 |
+
):
|
14 |
+
self.update_tmp_dir(tmp_dir)
|
15 |
+
|
16 |
+
self.img_res = img_res if isinstance(img_res, tuple) else (img_res, img_res)
|
17 |
+
self.img_per_line = img_per_line
|
18 |
+
|
19 |
+
self.verbose = verbose
|
20 |
+
|
21 |
+
self.reset()
|
22 |
+
|
23 |
+
def reset(self):
|
24 |
+
self.cached_img = None
|
25 |
+
self.img_num = 0
|
26 |
+
self.num_lines = 1
|
27 |
+
|
28 |
+
self.total_width = self.img_res[0] * self.img_per_line
|
29 |
+
self.total_height = self.img_res[1] * self.num_lines
|
30 |
+
|
31 |
+
def update_tmp_dir(self, tmp_dir: str):
|
32 |
+
tmp_dir = os.path.abspath(tmp_dir)
|
33 |
+
os.makedirs(tmp_dir, exist_ok=True)
|
34 |
+
self.tmp_img_path_template = os.path.join(tmp_dir, "img_%03d.png")
|
35 |
+
|
36 |
+
def add(self, img: Image, text: str = None):
|
37 |
+
|
38 |
+
img = img.resize(self.img_res)
|
39 |
+
|
40 |
+
if self.cached_img is None:
|
41 |
+
new_img = Image.new('RGBA', (self.total_width, self.total_height))
|
42 |
+
new_img.paste(img, (0, 0))
|
43 |
+
else:
|
44 |
+
num_lines = self.img_num // self.img_per_line + 1
|
45 |
+
if num_lines > self.num_lines:
|
46 |
+
self.num_lines = num_lines
|
47 |
+
self.total_height = self.img_res[1] * self.num_lines
|
48 |
+
new_img = Image.new('RGBA', (self.total_width, self.total_height))
|
49 |
+
new_img.paste(self.cached_img, (0, 0))
|
50 |
+
elif num_lines == self.num_lines:
|
51 |
+
new_img = self.cached_img
|
52 |
+
|
53 |
+
y_offset = self.img_res[1] * (num_lines - 1)
|
54 |
+
x_offset = self.img_res[0] * (self.img_num % self.img_per_line)
|
55 |
+
new_img.paste(img, (x_offset, y_offset))
|
56 |
+
|
57 |
+
save_path = self.tmp_img_path_template % self.img_num
|
58 |
+
if text is not None:
|
59 |
+
save_path = save_path.replace(".png", f"_{text}.png")
|
60 |
+
new_img.save(save_path)
|
61 |
+
self.cached_img = new_img
|
62 |
+
self.img_num += 1
|
63 |
+
|
64 |
+
if self.verbose:
|
65 |
+
print(f"Saved image to {save_path}")
|
66 |
+
|
67 |
+
return save_path
|
68 |
+
|
requirements.txt
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
torch
|
2 |
+
diffusers
|
3 |
+
transformers
|
4 |
+
pillow
|
5 |
+
|
6 |
+
StreamDiffusionIO
|
style.css
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
h1 {
|
2 |
+
text-align: center;
|
3 |
+
display: block;
|
4 |
+
}
|
5 |
+
|
6 |
+
#duplicate-button {
|
7 |
+
margin: auto;
|
8 |
+
color: white;
|
9 |
+
background: #1565c0;
|
10 |
+
border-radius: 100vh;
|
11 |
+
}
|
12 |
+
|
13 |
+
.contain {
|
14 |
+
max-width: 900px;
|
15 |
+
margin: auto;
|
16 |
+
padding-top: 1.5rem;
|
17 |
+
}
|