Spaces:
Running
Running
remove file after download button creation and scale image input
Browse files
app.py
CHANGED
@@ -4,15 +4,14 @@ import torch
|
|
4 |
import torch.nn as nn
|
5 |
import torch.nn.functional as F
|
6 |
from torchvision import models
|
7 |
-
from torchvision.transforms import ToTensor
|
8 |
|
9 |
import numpy as np
|
10 |
from PIL import Image
|
11 |
import math
|
12 |
from obj2html import obj2html
|
13 |
|
14 |
-
|
15 |
-
import base64
|
16 |
|
17 |
# DEPTH IMAGE TO OBJ
|
18 |
minDepth=10
|
@@ -153,7 +152,13 @@ model.load_state_dict(torch.hub.load_state_dict_from_url(path, progress=True))
|
|
153 |
model.eval()
|
154 |
|
155 |
def predict(inp):
|
156 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
images = torch_image.unsqueeze(0)
|
158 |
|
159 |
with torch.no_grad():
|
@@ -166,7 +171,7 @@ def predict(inp):
|
|
166 |
create_obj(depth, 'model.obj')
|
167 |
html_string = obj2html('model.obj', html_elements_only=True)
|
168 |
|
169 |
-
return img, html_string
|
170 |
|
171 |
|
172 |
# STREAMLIT
|
@@ -175,19 +180,21 @@ uploader = st.file_uploader('Upload your portrait here',type=['jpg','jpeg','png'
|
|
175 |
|
176 |
if uploader is not None:
|
177 |
pil_image = Image.open(uploader)
|
178 |
-
pil_depth, html_string = predict(pil_image)
|
179 |
|
180 |
components.html(html_string)
|
181 |
#st.markdown(html_string, unsafe_allow_html=True)
|
182 |
|
183 |
col1, col2, col3 = st.columns(3)
|
184 |
with col1:
|
185 |
-
st.image(
|
186 |
with col2:
|
187 |
st.image(pil_depth)
|
188 |
with col3:
|
189 |
with open('model.obj') as f:
|
190 |
st.download_button('Download model.obj', f, file_name="model.obj")
|
|
|
191 |
pil_depth.save('tmp.png')
|
192 |
with open('tmp.png', "rb") as f:
|
193 |
st.download_button('Download depth.png', f,file_name="depth.png", mime="image/png")
|
|
|
|
4 |
import torch.nn as nn
|
5 |
import torch.nn.functional as F
|
6 |
from torchvision import models
|
7 |
+
from torchvision.transforms import ToTensor, Resize
|
8 |
|
9 |
import numpy as np
|
10 |
from PIL import Image
|
11 |
import math
|
12 |
from obj2html import obj2html
|
13 |
|
14 |
+
import os
|
|
|
15 |
|
16 |
# DEPTH IMAGE TO OBJ
|
17 |
minDepth=10
|
|
|
152 |
model.eval()
|
153 |
|
154 |
def predict(inp):
|
155 |
+
width, height = inp.size
|
156 |
+
if width > height:
|
157 |
+
scale_fn = Resize((640, int((640*width)/height)))
|
158 |
+
else:
|
159 |
+
scale_fn = Resize((int((640*height)/width), 640))
|
160 |
+
res_img = scale_fn(inp)
|
161 |
+
torch_image = ToTensor()(res_img)
|
162 |
images = torch_image.unsqueeze(0)
|
163 |
|
164 |
with torch.no_grad():
|
|
|
171 |
create_obj(depth, 'model.obj')
|
172 |
html_string = obj2html('model.obj', html_elements_only=True)
|
173 |
|
174 |
+
return res_img, img, html_string
|
175 |
|
176 |
|
177 |
# STREAMLIT
|
|
|
180 |
|
181 |
if uploader is not None:
|
182 |
pil_image = Image.open(uploader)
|
183 |
+
pil_scaled, pil_depth, html_string = predict(pil_image)
|
184 |
|
185 |
components.html(html_string)
|
186 |
#st.markdown(html_string, unsafe_allow_html=True)
|
187 |
|
188 |
col1, col2, col3 = st.columns(3)
|
189 |
with col1:
|
190 |
+
st.image(pil_scaled)
|
191 |
with col2:
|
192 |
st.image(pil_depth)
|
193 |
with col3:
|
194 |
with open('model.obj') as f:
|
195 |
st.download_button('Download model.obj', f, file_name="model.obj")
|
196 |
+
os.remove('model.obj')
|
197 |
pil_depth.save('tmp.png')
|
198 |
with open('tmp.png', "rb") as f:
|
199 |
st.download_button('Download depth.png', f,file_name="depth.png", mime="image/png")
|
200 |
+
os.remove('tmp.png')
|
model.obj
DELETED
The diff for this file is too large to render.
See raw diff
|
|
tmp.png
DELETED
Binary file (9.25 kB)
|
|