Spaces:
Running
on
Zero
Running
on
Zero
Upload 197 files
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .gitattributes +74 -0
- LICENSE.txt +21 -0
- app.py +207 -0
- assets/teaserv6.png +3 -0
- assets/test/0.png +3 -0
- assets/test/1.png +3 -0
- assets/test/10.png +3 -0
- assets/test/11.png +3 -0
- assets/test/12.png +3 -0
- assets/test/13.png +3 -0
- assets/test/14.png +3 -0
- assets/test/15.png +3 -0
- assets/test/16.png +3 -0
- assets/test/17.png +3 -0
- assets/test/18.png +3 -0
- assets/test/19.png +3 -0
- assets/test/2.png +3 -0
- assets/test/20.png +3 -0
- assets/test/21.png +3 -0
- assets/test/22.png +3 -0
- assets/test/23.png +3 -0
- assets/test/24.png +3 -0
- assets/test/25.png +3 -0
- assets/test/26.png +3 -0
- assets/test/27.png +3 -0
- assets/test/28.png +3 -0
- assets/test/29.png +3 -0
- assets/test/3.png +3 -0
- assets/test/30.png +3 -0
- assets/test/31.png +3 -0
- assets/test/32.png +3 -0
- assets/test/33.png +3 -0
- assets/test/34.png +3 -0
- assets/test/35.png +3 -0
- assets/test/36.png +3 -0
- assets/test/37.png +3 -0
- assets/test/38.png +3 -0
- assets/test/39.png +3 -0
- assets/test/4.png +3 -0
- assets/test/40.png +3 -0
- assets/test/41.png +3 -0
- assets/test/42.png +3 -0
- assets/test/43.png +3 -0
- assets/test/44.png +3 -0
- assets/test/45.png +3 -0
- assets/test/46.png +3 -0
- assets/test/47.png +3 -0
- assets/test/48.png +3 -0
- assets/test/49.png +3 -0
- assets/test/5.png +3 -0
.gitattributes
CHANGED
@@ -33,3 +33,77 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
+
assets/teaserv6.png filter=lfs diff=lfs merge=lfs -text
|
37 |
+
assets/test/0.png filter=lfs diff=lfs merge=lfs -text
|
38 |
+
assets/test/1.png filter=lfs diff=lfs merge=lfs -text
|
39 |
+
assets/test/10.png filter=lfs diff=lfs merge=lfs -text
|
40 |
+
assets/test/11.png filter=lfs diff=lfs merge=lfs -text
|
41 |
+
assets/test/12.png filter=lfs diff=lfs merge=lfs -text
|
42 |
+
assets/test/13.png filter=lfs diff=lfs merge=lfs -text
|
43 |
+
assets/test/14.png filter=lfs diff=lfs merge=lfs -text
|
44 |
+
assets/test/15.png filter=lfs diff=lfs merge=lfs -text
|
45 |
+
assets/test/16.png filter=lfs diff=lfs merge=lfs -text
|
46 |
+
assets/test/17.png filter=lfs diff=lfs merge=lfs -text
|
47 |
+
assets/test/18.png filter=lfs diff=lfs merge=lfs -text
|
48 |
+
assets/test/19.png filter=lfs diff=lfs merge=lfs -text
|
49 |
+
assets/test/2.png filter=lfs diff=lfs merge=lfs -text
|
50 |
+
assets/test/20.png filter=lfs diff=lfs merge=lfs -text
|
51 |
+
assets/test/21.png filter=lfs diff=lfs merge=lfs -text
|
52 |
+
assets/test/22.png filter=lfs diff=lfs merge=lfs -text
|
53 |
+
assets/test/23.png filter=lfs diff=lfs merge=lfs -text
|
54 |
+
assets/test/24.png filter=lfs diff=lfs merge=lfs -text
|
55 |
+
assets/test/25.png filter=lfs diff=lfs merge=lfs -text
|
56 |
+
assets/test/26.png filter=lfs diff=lfs merge=lfs -text
|
57 |
+
assets/test/27.png filter=lfs diff=lfs merge=lfs -text
|
58 |
+
assets/test/28.png filter=lfs diff=lfs merge=lfs -text
|
59 |
+
assets/test/29.png filter=lfs diff=lfs merge=lfs -text
|
60 |
+
assets/test/3.png filter=lfs diff=lfs merge=lfs -text
|
61 |
+
assets/test/30.png filter=lfs diff=lfs merge=lfs -text
|
62 |
+
assets/test/31.png filter=lfs diff=lfs merge=lfs -text
|
63 |
+
assets/test/32.png filter=lfs diff=lfs merge=lfs -text
|
64 |
+
assets/test/33.png filter=lfs diff=lfs merge=lfs -text
|
65 |
+
assets/test/34.png filter=lfs diff=lfs merge=lfs -text
|
66 |
+
assets/test/35.png filter=lfs diff=lfs merge=lfs -text
|
67 |
+
assets/test/36.png filter=lfs diff=lfs merge=lfs -text
|
68 |
+
assets/test/37.png filter=lfs diff=lfs merge=lfs -text
|
69 |
+
assets/test/38.png filter=lfs diff=lfs merge=lfs -text
|
70 |
+
assets/test/39.png filter=lfs diff=lfs merge=lfs -text
|
71 |
+
assets/test/4.png filter=lfs diff=lfs merge=lfs -text
|
72 |
+
assets/test/40.png filter=lfs diff=lfs merge=lfs -text
|
73 |
+
assets/test/41.png filter=lfs diff=lfs merge=lfs -text
|
74 |
+
assets/test/42.png filter=lfs diff=lfs merge=lfs -text
|
75 |
+
assets/test/43.png filter=lfs diff=lfs merge=lfs -text
|
76 |
+
assets/test/44.png filter=lfs diff=lfs merge=lfs -text
|
77 |
+
assets/test/45.png filter=lfs diff=lfs merge=lfs -text
|
78 |
+
assets/test/46.png filter=lfs diff=lfs merge=lfs -text
|
79 |
+
assets/test/47.png filter=lfs diff=lfs merge=lfs -text
|
80 |
+
assets/test/48.png filter=lfs diff=lfs merge=lfs -text
|
81 |
+
assets/test/49.png filter=lfs diff=lfs merge=lfs -text
|
82 |
+
assets/test/5.png filter=lfs diff=lfs merge=lfs -text
|
83 |
+
assets/test/50.png filter=lfs diff=lfs merge=lfs -text
|
84 |
+
assets/test/51.png filter=lfs diff=lfs merge=lfs -text
|
85 |
+
assets/test/52.png filter=lfs diff=lfs merge=lfs -text
|
86 |
+
assets/test/53.png filter=lfs diff=lfs merge=lfs -text
|
87 |
+
assets/test/54.png filter=lfs diff=lfs merge=lfs -text
|
88 |
+
assets/test/55.png filter=lfs diff=lfs merge=lfs -text
|
89 |
+
assets/test/56.png filter=lfs diff=lfs merge=lfs -text
|
90 |
+
assets/test/57.png filter=lfs diff=lfs merge=lfs -text
|
91 |
+
assets/test/58.png filter=lfs diff=lfs merge=lfs -text
|
92 |
+
assets/test/59.png filter=lfs diff=lfs merge=lfs -text
|
93 |
+
assets/test/6.png filter=lfs diff=lfs merge=lfs -text
|
94 |
+
assets/test/60.png filter=lfs diff=lfs merge=lfs -text
|
95 |
+
assets/test/61.png filter=lfs diff=lfs merge=lfs -text
|
96 |
+
assets/test/62.png filter=lfs diff=lfs merge=lfs -text
|
97 |
+
assets/test/63.png filter=lfs diff=lfs merge=lfs -text
|
98 |
+
assets/test/64.png filter=lfs diff=lfs merge=lfs -text
|
99 |
+
assets/test/65.png filter=lfs diff=lfs merge=lfs -text
|
100 |
+
assets/test/66.png filter=lfs diff=lfs merge=lfs -text
|
101 |
+
assets/test/67.png filter=lfs diff=lfs merge=lfs -text
|
102 |
+
assets/test/7.png filter=lfs diff=lfs merge=lfs -text
|
103 |
+
assets/test/8.png filter=lfs diff=lfs merge=lfs -text
|
104 |
+
assets/test/9.png filter=lfs diff=lfs merge=lfs -text
|
105 |
+
third_party/voxelize/build/lib.linux-x86_64-3.10/udf_ext.cpython-310-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text
|
106 |
+
third_party/voxelize/build/temp.linux-x86_64-3.10/.ninja_deps filter=lfs diff=lfs merge=lfs -text
|
107 |
+
third_party/voxelize/build/temp.linux-x86_64-3.10/src/udf_cuda.o filter=lfs diff=lfs merge=lfs -text
|
108 |
+
third_party/voxelize/build/temp.linux-x86_64-3.10/src/udf_kernel.o filter=lfs diff=lfs merge=lfs -text
|
109 |
+
third_party/voxelize/udf_ext.cpython-310-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text
|
LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
MIT License
|
2 |
+
|
3 |
+
Copyright (c) 2025 DreamTechAI
|
4 |
+
|
5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6 |
+
of this software and associated documentation files (the "Software"), to deal
|
7 |
+
in the Software without restriction, including without limitation the rights
|
8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9 |
+
copies of the Software, and to permit persons to whom the Software is
|
10 |
+
furnished to do so, subject to the following conditions:
|
11 |
+
|
12 |
+
The above copyright notice and this permission notice shall be included in all
|
13 |
+
copies or substantial portions of the Software.
|
14 |
+
|
15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21 |
+
SOFTWARE.
|
app.py
ADDED
@@ -0,0 +1,207 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
import torch
|
3 |
+
import trimesh
|
4 |
+
import datetime
|
5 |
+
import argparse
|
6 |
+
import numpy as np
|
7 |
+
from torchvision import transforms
|
8 |
+
from direct3d_s2.utils.rembg import BiRefNet
|
9 |
+
from direct3d_s2.pipeline import Direct3DS2Pipeline
|
10 |
+
from direct3d_s2.utils.fill_hole import postprocess_mesh
|
11 |
+
|
12 |
+
import os
|
13 |
+
from PIL import Image
|
14 |
+
from typing import Any
|
15 |
+
|
16 |
+
import gradio as gr
|
17 |
+
from gradio.themes.utils import colors, fonts, sizes
|
18 |
+
|
19 |
+
# -----------------------------------------------------------------------------
|
20 |
+
# THEME ▸ a soft glass-like dark theme with a vibrant primary accent
|
21 |
+
# -----------------------------------------------------------------------------
|
22 |
+
class Glass(gr.themes.Soft):
|
23 |
+
def __init__(self):
|
24 |
+
super().__init__(
|
25 |
+
primary_hue=colors.emerald,
|
26 |
+
secondary_hue=colors.indigo,
|
27 |
+
neutral_hue=colors.zinc,
|
28 |
+
text_size=sizes.text_md,
|
29 |
+
spacing_size=sizes.spacing_md,
|
30 |
+
radius_size=sizes.radius_lg,
|
31 |
+
font=fonts.GoogleFont("Inter"),
|
32 |
+
)
|
33 |
+
|
34 |
+
def style(self):
|
35 |
+
super().style()
|
36 |
+
self.set(
|
37 |
+
background_fill="var(--neutral-950)",
|
38 |
+
border_color_primary="rgba(255,255,255,.12)",
|
39 |
+
border_width="1px",
|
40 |
+
shadow_drop="0 10px 38px -10px rgba(0,0,0,.65)",
|
41 |
+
shadow_drop_lg="0 10px 38px -10px rgba(0,0,0,.65)",
|
42 |
+
)
|
43 |
+
return self
|
44 |
+
|
45 |
+
def check_input_image(input_image):
|
46 |
+
if input_image is None:
|
47 |
+
raise gr.Error("No image uploaded!")
|
48 |
+
|
49 |
+
# -----------------------------------------------------------------------------
|
50 |
+
# PLACEHOLDER BACK-END HOOKS ▸ replace with your real logic
|
51 |
+
# -----------------------------------------------------------------------------
|
52 |
+
def image2mesh(
|
53 |
+
image: Any,
|
54 |
+
resolution: str = '1024',
|
55 |
+
simplify: bool = True,
|
56 |
+
simplify_ratio: float = 0.95,
|
57 |
+
output_path: str = 'outputs/web'
|
58 |
+
):
|
59 |
+
|
60 |
+
torch.cuda.empty_cache()
|
61 |
+
|
62 |
+
if not os.path.exists(output_path):
|
63 |
+
os.makedirs(output_path)
|
64 |
+
|
65 |
+
uid = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
|
66 |
+
image.save(os.path.join(output_path, uid + '.png'))
|
67 |
+
|
68 |
+
pipe = Direct3DS2Pipeline.from_pretrained('wushuang98/Direct3D-S2', subfolder="direct3d-s2-v-1-1")
|
69 |
+
pipe.to("cuda:0")
|
70 |
+
|
71 |
+
mesh = pipe(
|
72 |
+
image,
|
73 |
+
sdf_resolution=int(resolution),
|
74 |
+
mc_threshold=0.2,
|
75 |
+
remesh=simplify,
|
76 |
+
simplify_ratio=simplify_ratio,
|
77 |
+
)["mesh"]
|
78 |
+
|
79 |
+
mesh_path = os.path.join(output_path, f'{uid}.obj')
|
80 |
+
mesh.export(
|
81 |
+
mesh_path,
|
82 |
+
include_normals=True,
|
83 |
+
)
|
84 |
+
torch.cuda.empty_cache()
|
85 |
+
|
86 |
+
return mesh_path
|
87 |
+
|
88 |
+
# -----------------------------------------------------------------------------
|
89 |
+
# UI LAYOUT ▸ minimal glassmorphism, keyboard-first workflow
|
90 |
+
# -----------------------------------------------------------------------------
|
91 |
+
with gr.Blocks(theme=Glass(), css="""
|
92 |
+
:root { --header-height:64px }
|
93 |
+
body { background:linear-gradient(215deg,#101113 0%,#0b0c0d 60%,#0d1014 100%) }
|
94 |
+
#header { height:var(--header-height);display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem;backdrop-filter:blur(18px);background:rgba(17,17,17,.65);border-bottom:1px solid rgba(255,255,255,.08);position:sticky;top:0;z-index:999 }
|
95 |
+
#header a { color:white;font-weight:500;text-decoration:none;margin-right:1.25rem;font-size:.925rem }
|
96 |
+
#hero-title { font-size:1.35rem;font-weight:600;color:white;white-space:nowrap }
|
97 |
+
#footer { text-align:center;font-size:.8rem;color:rgba(255,255,255,.55);margin-top:1.5rem }
|
98 |
+
#mesh_viewport { aspect-ratio:1/1;width:100%;display:flex;align-items:center;justify-content:center;border:1px dashed rgba(255,255,255,.12);border-radius:12px;background:rgba(255,255,255,.03); }
|
99 |
+
.gallery-item img { border-radius:10px }
|
100 |
+
#examples_gallery { height:100%;flex:1;display:flex;flex-direction:column; }
|
101 |
+
#examples_gallery img { width:800px;}
|
102 |
+
#show_image img { height:260px;display:flex;align-items:center;justify-content:center; }
|
103 |
+
#examples { height:100%;flex:1; }
|
104 |
+
""") as demo:
|
105 |
+
|
106 |
+
# ▸ custom sticky header
|
107 |
+
with gr.Row(elem_id="header", variant="panel"):
|
108 |
+
gr.Markdown("<span id='hero-title'>Direct3D-S2 Studio</span>", elem_id="hero-title")
|
109 |
+
gr.Markdown(
|
110 |
+
"""<span>
|
111 |
+
</span>""",
|
112 |
+
elem_id="nav-links",
|
113 |
+
)
|
114 |
+
|
115 |
+
# ▸ main workspace
|
116 |
+
with gr.Row(equal_height=True):
|
117 |
+
# ---------- Controls ----------
|
118 |
+
with gr.Column(scale=3):
|
119 |
+
gr.Markdown("### Input", elem_classes="subtitle")
|
120 |
+
image_input = gr.Image(
|
121 |
+
label="Image Input",
|
122 |
+
image_mode="RGBA",
|
123 |
+
sources="upload",
|
124 |
+
type="pil",
|
125 |
+
height=260,
|
126 |
+
elem_id="show_image",
|
127 |
+
)
|
128 |
+
# gr.Markdown("<div style='text-align:center;opacity:.6'>Drag & drop or click to upload</div>")
|
129 |
+
processed_image = gr.Image(
|
130 |
+
label="Processed Image",
|
131 |
+
image_mode="RGBA",
|
132 |
+
type="pil",
|
133 |
+
interactive=False,
|
134 |
+
height=260,
|
135 |
+
elem_id="show_image",
|
136 |
+
)
|
137 |
+
with gr.Accordion("Advanced Options", open=True):
|
138 |
+
resolution = gr.Radio(choices=["512", "1024"], label="SDF Resolution", value="1024")
|
139 |
+
simplify = gr.Checkbox(label="Simplify Mesh", value=True)
|
140 |
+
reduce_ratio = gr.Slider(0.1, 0.95, step=0.05, value=0.95, label="Faces Reduction Ratio")
|
141 |
+
|
142 |
+
gen_btn = gr.Button("Generate 3D ✨", variant="primary", interactive=True)
|
143 |
+
|
144 |
+
# ---------- Viewport ----------
|
145 |
+
with gr.Column(scale=6):
|
146 |
+
gr.Markdown("### Model Viewer", elem_classes="subtitle")
|
147 |
+
# mesh_html = gr.HTML("<div id='mesh_viewport'>🌀 No mesh yet</div>")
|
148 |
+
output_model_obj = gr.Model3D(
|
149 |
+
label="Output Model (OBJ Format)",
|
150 |
+
camera_position=(90.0, 90.0, 3.5),
|
151 |
+
interactive=False,
|
152 |
+
elem_id="mesh_viewport",
|
153 |
+
)
|
154 |
+
|
155 |
+
# ---------- Gallery / Examples ----------
|
156 |
+
with gr.Column(scale=3):
|
157 |
+
gr.Markdown("### Examples", elem_classes="subtitle")
|
158 |
+
# gr.Examples(
|
159 |
+
# examples=[os.path.join("assets/test", i) for i in os.listdir("assets/test")],
|
160 |
+
# inputs=[image_input],
|
161 |
+
# examples_per_page=8,
|
162 |
+
# label="Gallery",
|
163 |
+
# elem_id="examples_gallery",
|
164 |
+
# )
|
165 |
+
with gr.Tabs(selected='tab_img_gallery') as gallery:
|
166 |
+
with gr.Tab('Image to 3D Gallery', id='tab_img_gallery') as tab_gi:
|
167 |
+
with gr.Row():
|
168 |
+
gr.Examples(
|
169 |
+
examples=[os.path.join("assets/test", i) for i in os.listdir("assets/test")],
|
170 |
+
inputs=[image_input],
|
171 |
+
label=None,
|
172 |
+
examples_per_page=24
|
173 |
+
)
|
174 |
+
# gallery = gr.Gallery(
|
175 |
+
# [os.path.join("assets/test", i) for i in os.listdir("assets/test")],
|
176 |
+
# columns=2,
|
177 |
+
# object_fit="contain",
|
178 |
+
# elem_id="examples_gallery",
|
179 |
+
# allow_preview=False,
|
180 |
+
# )
|
181 |
+
|
182 |
+
|
183 |
+
# ▸ callbacks
|
184 |
+
outputs = [output_model_obj]
|
185 |
+
rmbg = BiRefNet(device="cuda:0")
|
186 |
+
|
187 |
+
gen_btn.click(
|
188 |
+
fn=check_input_image,
|
189 |
+
inputs=[image_input]
|
190 |
+
).success(
|
191 |
+
fn=rmbg.run,
|
192 |
+
inputs=[image_input],
|
193 |
+
outputs=[processed_image]
|
194 |
+
).success(
|
195 |
+
fn=image2mesh,
|
196 |
+
inputs=[processed_image, resolution, simplify, reduce_ratio],
|
197 |
+
outputs=outputs,
|
198 |
+
api_name="generate_img2obj"
|
199 |
+
)
|
200 |
+
|
201 |
+
# -----------------------------------------------------------------------------
|
202 |
+
if __name__ == "__main__":
|
203 |
+
parser = argparse.ArgumentParser()
|
204 |
+
parser.add_argument("--cached_dir", type=str, default="outputs/web")
|
205 |
+
args = parser.parse_args()
|
206 |
+
|
207 |
+
demo.queue().launch(share=True, allowed_paths=[args.cached_dir], server_port=7860)
|
assets/teaserv6.png
ADDED
![]() |
Git LFS Details
|
assets/test/0.png
ADDED
![]() |
Git LFS Details
|
assets/test/1.png
ADDED
![]() |
Git LFS Details
|
assets/test/10.png
ADDED
![]() |
Git LFS Details
|
assets/test/11.png
ADDED
![]() |
Git LFS Details
|
assets/test/12.png
ADDED
![]() |
Git LFS Details
|
assets/test/13.png
ADDED
![]() |
Git LFS Details
|
assets/test/14.png
ADDED
![]() |
Git LFS Details
|
assets/test/15.png
ADDED
![]() |
Git LFS Details
|
assets/test/16.png
ADDED
![]() |
Git LFS Details
|
assets/test/17.png
ADDED
![]() |
Git LFS Details
|
assets/test/18.png
ADDED
![]() |
Git LFS Details
|
assets/test/19.png
ADDED
![]() |
Git LFS Details
|
assets/test/2.png
ADDED
![]() |
Git LFS Details
|
assets/test/20.png
ADDED
![]() |
Git LFS Details
|
assets/test/21.png
ADDED
![]() |
Git LFS Details
|
assets/test/22.png
ADDED
![]() |
Git LFS Details
|
assets/test/23.png
ADDED
![]() |
Git LFS Details
|
assets/test/24.png
ADDED
![]() |
Git LFS Details
|
assets/test/25.png
ADDED
![]() |
Git LFS Details
|
assets/test/26.png
ADDED
![]() |
Git LFS Details
|
assets/test/27.png
ADDED
![]() |
Git LFS Details
|
assets/test/28.png
ADDED
![]() |
Git LFS Details
|
assets/test/29.png
ADDED
![]() |
Git LFS Details
|
assets/test/3.png
ADDED
![]() |
Git LFS Details
|
assets/test/30.png
ADDED
![]() |
Git LFS Details
|
assets/test/31.png
ADDED
![]() |
Git LFS Details
|
assets/test/32.png
ADDED
![]() |
Git LFS Details
|
assets/test/33.png
ADDED
![]() |
Git LFS Details
|
assets/test/34.png
ADDED
![]() |
Git LFS Details
|
assets/test/35.png
ADDED
![]() |
Git LFS Details
|
assets/test/36.png
ADDED
![]() |
Git LFS Details
|
assets/test/37.png
ADDED
![]() |
Git LFS Details
|
assets/test/38.png
ADDED
![]() |
Git LFS Details
|
assets/test/39.png
ADDED
![]() |
Git LFS Details
|
assets/test/4.png
ADDED
![]() |
Git LFS Details
|
assets/test/40.png
ADDED
![]() |
Git LFS Details
|
assets/test/41.png
ADDED
![]() |
Git LFS Details
|
assets/test/42.png
ADDED
![]() |
Git LFS Details
|
assets/test/43.png
ADDED
![]() |
Git LFS Details
|
assets/test/44.png
ADDED
![]() |
Git LFS Details
|
assets/test/45.png
ADDED
![]() |
Git LFS Details
|
assets/test/46.png
ADDED
![]() |
Git LFS Details
|
assets/test/47.png
ADDED
![]() |
Git LFS Details
|
assets/test/48.png
ADDED
![]() |
Git LFS Details
|
assets/test/49.png
ADDED
![]() |
Git LFS Details
|
assets/test/5.png
ADDED
![]() |
Git LFS Details
|