Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -14,6 +14,7 @@ import huggingface_hub
|
|
14 |
import numpy as np
|
15 |
import PIL.Image
|
16 |
import tensorflow as tf
|
|
|
17 |
|
18 |
TITLE = 'NoCrypt/DeepDanbooru_string'
|
19 |
DESCRIPTION = 'Cloned from: https://huggingface.co/spaces/hysts/DeepDanbooru'
|
@@ -68,9 +69,13 @@ def load_labels() -> list[str]:
|
|
68 |
labels = [line.strip() for line in f.readlines()]
|
69 |
return labels
|
70 |
|
|
|
|
|
|
|
71 |
|
72 |
def predict(image: PIL.Image.Image, score_threshold: float,
|
73 |
model: tf.keras.Model, labels: list[str]) -> dict[str, float]:
|
|
|
74 |
_, height, width, _ = model.input_shape
|
75 |
image = np.asarray(image)
|
76 |
image = tf.image.resize(image,
|
@@ -89,7 +94,41 @@ def predict(image: PIL.Image.Image, score_threshold: float,
|
|
89 |
res[label] = prob
|
90 |
b = dict(sorted(res.items(),key=lambda item:item[1], reverse=True))
|
91 |
a = ', '.join(list(b.keys())).replace('_',' ').replace('(','\(').replace(')','\)')
|
92 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
|
94 |
|
95 |
def main():
|
@@ -112,7 +151,12 @@ def main():
|
|
112 |
default=args.score_threshold,
|
113 |
label='Score Threshold'),
|
114 |
],
|
115 |
-
[
|
|
|
|
|
|
|
|
|
|
|
116 |
examples=[
|
117 |
['miku.jpg',0.5],
|
118 |
['miku2.jpg',0.5]
|
|
|
14 |
import numpy as np
|
15 |
import PIL.Image
|
16 |
import tensorflow as tf
|
17 |
+
import piexif
|
18 |
|
19 |
TITLE = 'NoCrypt/DeepDanbooru_string'
|
20 |
DESCRIPTION = 'Cloned from: https://huggingface.co/spaces/hysts/DeepDanbooru'
|
|
|
69 |
labels = [line.strip() for line in f.readlines()]
|
70 |
return labels
|
71 |
|
72 |
+
def plaintext_to_html(text):
|
73 |
+
text = "<p>" + "<br>\n".join([f"{html.escape(x)}" for x in text.split('\n')]) + "</p>"
|
74 |
+
return text
|
75 |
|
76 |
def predict(image: PIL.Image.Image, score_threshold: float,
|
77 |
model: tf.keras.Model, labels: list[str]) -> dict[str, float]:
|
78 |
+
rawimage = image
|
79 |
_, height, width, _ = model.input_shape
|
80 |
image = np.asarray(image)
|
81 |
image = tf.image.resize(image,
|
|
|
94 |
res[label] = prob
|
95 |
b = dict(sorted(res.items(),key=lambda item:item[1], reverse=True))
|
96 |
a = ', '.join(list(b.keys())).replace('_',' ').replace('(','\(').replace(')','\)')
|
97 |
+
|
98 |
+
items = rawimage.info
|
99 |
+
geninfo = ''
|
100 |
+
|
101 |
+
if "exif" in rawimage.info:
|
102 |
+
exif = piexif.load(rawimage.info["exif"])
|
103 |
+
exif_comment = (exif or {}).get("Exif", {}).get(piexif.ExifIFD.UserComment, b'')
|
104 |
+
try:
|
105 |
+
exif_comment = piexif.helper.UserComment.load(exif_comment)
|
106 |
+
except ValueError:
|
107 |
+
exif_comment = exif_comment.decode('utf8', errors="ignore")
|
108 |
+
|
109 |
+
items['exif comment'] = exif_comment
|
110 |
+
geninfo = exif_comment
|
111 |
+
|
112 |
+
for field in ['jfif', 'jfif_version', 'jfif_unit', 'jfif_density', 'dpi', 'exif',
|
113 |
+
'loop', 'background', 'timestamp', 'duration']:
|
114 |
+
items.pop(field, None)
|
115 |
+
|
116 |
+
geninfo = items.get('parameters', geninfo)
|
117 |
+
|
118 |
+
info = ''
|
119 |
+
for key, text in items.items():
|
120 |
+
info += f"""
|
121 |
+
<div>
|
122 |
+
<p><b>{plaintext_to_html(str(key))}</b></p>
|
123 |
+
<p>{plaintext_to_html(str(text))}</p>
|
124 |
+
</div>
|
125 |
+
""".strip()+"\n"
|
126 |
+
|
127 |
+
if len(info) == 0:
|
128 |
+
message = ""
|
129 |
+
info = f"<div><p>{message}<p></div>"
|
130 |
+
|
131 |
+
return (a,res,geninfo,info)
|
132 |
|
133 |
|
134 |
def main():
|
|
|
151 |
default=args.score_threshold,
|
152 |
label='Score Threshold'),
|
153 |
],
|
154 |
+
[
|
155 |
+
gr.outputs.Textbox(label='Output String'),
|
156 |
+
gr.outputs.Label(label='Output Labels'),
|
157 |
+
gr.outputs.HTML(visible=len(geninfo)!=0),
|
158 |
+
gr.outputs.HTML(visible=len(info)!=0)
|
159 |
+
],
|
160 |
examples=[
|
161 |
['miku.jpg',0.5],
|
162 |
['miku2.jpg',0.5]
|