Spaces:
Running
on
Zero
Running
on
Zero
tokenid
commited on
Commit
·
0e18ab2
1
Parent(s):
c12c627
more examples & fix scales
Browse files- app.py +51 -43
- data/gradio_demo/arc_0.png +0 -0
- data/gradio_demo/arc_1.png +0 -0
- data/gradio_demo/christ_0.png +0 -0
- data/gradio_demo/christ_1.png +0 -0
- data/gradio_demo/cybertruck_0.png +0 -0
- data/gradio_demo/cybertruck_1.png +0 -0
- data/gradio_demo/elon_0.png +0 -0
- data/gradio_demo/elon_1.png +0 -0
- data/gradio_demo/ferrari_0.png +0 -0
- data/gradio_demo/ferrari_1.png +0 -0
- data/gradio_demo/husky_0.png +0 -0
- data/gradio_demo/husky_1.png +0 -0
- data/gradio_demo/plane_0.png +0 -0
- data/gradio_demo/plane_1.png +0 -0
- data/gradio_demo/ride_horse_0.png +0 -0
- data/gradio_demo/ride_horse_1.png +0 -0
app.py
CHANGED
|
@@ -69,13 +69,13 @@ def group_recenter(images, ratio=1.5, mask_thres=127, bkg_color=[255, 255, 255,
|
|
| 69 |
y0, y1 = yy.min(), yy.max()
|
| 70 |
x0, x1 = xx.min(), xx.max()
|
| 71 |
|
| 72 |
-
ws.append(x1 - x0)
|
| 73 |
-
hs.append(y1 - y0)
|
| 74 |
|
| 75 |
sz_w = np.max(ws)
|
| 76 |
sz_h = np.max(hs)
|
| 77 |
|
| 78 |
-
sz =
|
| 79 |
|
| 80 |
out_rgbs = []
|
| 81 |
|
|
@@ -93,16 +93,14 @@ def group_recenter(images, ratio=1.5, mask_thres=127, bkg_color=[255, 255, 255,
|
|
| 93 |
cy = (y0 + y1) // 2
|
| 94 |
cx = (x0 + x1) // 2
|
| 95 |
|
| 96 |
-
y0 = cy - int(np.floor(sz / 2))
|
| 97 |
-
y1 = cy + int(np.ceil(sz / 2))
|
| 98 |
-
x0 = cx - int(np.floor(sz / 2))
|
| 99 |
-
x1 = cx + int(np.ceil(sz / 2))
|
| 100 |
out = rgba[ max(y0, 0) : min(y1, height) , max(x0, 0) : min(x1, width), : ].copy()
|
| 101 |
pads = [(max(0-y0, 0), max(y1-height, 0)), (max(0-x0, 0), max(x1-width, 0)), (0, 0)]
|
| 102 |
out = np.pad(out, pads, mode='constant', constant_values=0)
|
| 103 |
|
| 104 |
-
assert(out.shape[:2] == (sz, sz))
|
| 105 |
-
|
| 106 |
out[:, :, :3] = out[:, :, :3] * (out[..., 3:]/255.) + np.array(bkg_color)[None, None, :3] * (1-out[..., 3:]/255.)
|
| 107 |
out[:, :, -1] = bkg_color[-1]
|
| 108 |
|
|
@@ -148,7 +146,7 @@ def run_pose_exploration(cam_vis, image1, image2, probe_bsz, adj_bsz, adj_iters,
|
|
| 148 |
cam_vis.set_images([np.asarray(image1, dtype=np.uint8), np.asarray(image2, dtype=np.uint8)])
|
| 149 |
|
| 150 |
image1 = image_to_tensor(image1).to(_device_)
|
| 151 |
-
image2 = image_to_tensor(image2).to(_device_)
|
| 152 |
|
| 153 |
images = [image1, image2]
|
| 154 |
|
|
@@ -158,29 +156,33 @@ def run_pose_exploration(cam_vis, image1, image2, probe_bsz, adj_bsz, adj_iters,
|
|
| 158 |
matcher_ckpt_path=_matcher_ckpt_path_
|
| 159 |
)
|
| 160 |
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 181 |
|
| 182 |
-
theta, azimuth, radius = result_poses[0]
|
| 183 |
-
anchor_polar = aux_data['elev'][0]
|
| 184 |
if anchor_polar is None:
|
| 185 |
anchor_polar = np.pi/2
|
| 186 |
|
|
@@ -245,8 +247,8 @@ _HEADER_ = '''
|
|
| 245 |
'''
|
| 246 |
|
| 247 |
_FOOTER_ = '''
|
| 248 |
-
|
| 249 |
-
|
| 250 |
'''
|
| 251 |
|
| 252 |
_CITE_ = r"""
|
|
@@ -321,37 +323,43 @@ def run_demo():
|
|
| 321 |
['data/gradio_demo/duck_0.png', 'data/gradio_demo/duck_1.png'],
|
| 322 |
['data/gradio_demo/chair_0.png', 'data/gradio_demo/chair_1.png'],
|
| 323 |
['data/gradio_demo/foosball_0.png', 'data/gradio_demo/foosball_1.png'],
|
|
|
|
|
|
|
| 324 |
],
|
| 325 |
inputs=[input_image1, input_image2],
|
| 326 |
-
label='Examples (
|
| 327 |
cache_examples=False,
|
| 328 |
-
examples_per_page=
|
| 329 |
)
|
| 330 |
|
| 331 |
with gr.Column(min_width=200):
|
| 332 |
gr.Examples(
|
| 333 |
examples = [
|
| 334 |
-
['data/gradio_demo/
|
| 335 |
-
['data/gradio_demo/
|
| 336 |
-
['data/gradio_demo/
|
|
|
|
|
|
|
| 337 |
],
|
| 338 |
inputs=[input_image1, input_image2],
|
| 339 |
-
label='Examples (
|
| 340 |
cache_examples=False,
|
| 341 |
-
examples_per_page=
|
| 342 |
)
|
| 343 |
|
| 344 |
with gr.Column(min_width=200):
|
| 345 |
gr.Examples(
|
| 346 |
examples = [
|
| 347 |
['data/gradio_demo/status_0.png', 'data/gradio_demo/status_1.png'],
|
| 348 |
-
['data/gradio_demo/bag_0.png', 'data/gradio_demo/bag_1.png'],
|
| 349 |
['data/gradio_demo/cat_0.png', 'data/gradio_demo/cat_1.png'],
|
|
|
|
|
|
|
|
|
|
| 350 |
],
|
| 351 |
inputs=[input_image1, input_image2],
|
| 352 |
label='Examples (Generated)',
|
| 353 |
cache_examples=False,
|
| 354 |
-
examples_per_page=
|
| 355 |
)
|
| 356 |
|
| 357 |
cam_vis = CameraVisualizer([np.eye(4), np.eye(4)], ['Image 1', 'Image 2'], ['red', 'blue'])
|
|
|
|
| 69 |
y0, y1 = yy.min(), yy.max()
|
| 70 |
x0, x1 = xx.min(), xx.max()
|
| 71 |
|
| 72 |
+
ws.append(float(x1 - x0) / img.shape[0])
|
| 73 |
+
hs.append(float(y1 - y0) / img.shape[1])
|
| 74 |
|
| 75 |
sz_w = np.max(ws)
|
| 76 |
sz_h = np.max(hs)
|
| 77 |
|
| 78 |
+
sz = max(ratio*sz_w, ratio*sz_h)
|
| 79 |
|
| 80 |
out_rgbs = []
|
| 81 |
|
|
|
|
| 93 |
cy = (y0 + y1) // 2
|
| 94 |
cx = (x0 + x1) // 2
|
| 95 |
|
| 96 |
+
y0 = cy - int(np.floor(sz * rgba.shape[0] / 2))
|
| 97 |
+
y1 = cy + int(np.ceil(sz * rgba.shape[0] / 2))
|
| 98 |
+
x0 = cx - int(np.floor(sz * rgba.shape[1] / 2))
|
| 99 |
+
x1 = cx + int(np.ceil(sz * rgba.shape[1] / 2))
|
| 100 |
out = rgba[ max(y0, 0) : min(y1, height) , max(x0, 0) : min(x1, width), : ].copy()
|
| 101 |
pads = [(max(0-y0, 0), max(y1-height, 0)), (max(0-x0, 0), max(x1-width, 0)), (0, 0)]
|
| 102 |
out = np.pad(out, pads, mode='constant', constant_values=0)
|
| 103 |
|
|
|
|
|
|
|
| 104 |
out[:, :, :3] = out[:, :, :3] * (out[..., 3:]/255.) + np.array(bkg_color)[None, None, :3] * (1-out[..., 3:]/255.)
|
| 105 |
out[:, :, -1] = bkg_color[-1]
|
| 106 |
|
|
|
|
| 146 |
cam_vis.set_images([np.asarray(image1, dtype=np.uint8), np.asarray(image2, dtype=np.uint8)])
|
| 147 |
|
| 148 |
image1 = image_to_tensor(image1).to(_device_)
|
| 149 |
+
image2 = image_to_tensor(image2).to(_device_)
|
| 150 |
|
| 151 |
images = [image1, image2]
|
| 152 |
|
|
|
|
| 156 |
matcher_ckpt_path=_matcher_ckpt_path_
|
| 157 |
)
|
| 158 |
|
| 159 |
+
anchor_polar = elevs[0]
|
| 160 |
+
|
| 161 |
+
if torch.mean(torch.abs(image1 - image2)) < 0.005:
|
| 162 |
+
theta = azimuth = radius = 0
|
| 163 |
+
print('Identical images found!')
|
| 164 |
+
else:
|
| 165 |
+
noise = np.random.randn(probe_bsz, 4, 32, 32)
|
| 166 |
+
result_poses, aux_data = estimate_poses(
|
| 167 |
+
_model_, images,
|
| 168 |
+
seed_cand_num=8,
|
| 169 |
+
explore_type='triangular',
|
| 170 |
+
refine_type='triangular',
|
| 171 |
+
probe_ts_range=[0.2, 0.21],
|
| 172 |
+
ts_range=[0.2, 0.21],
|
| 173 |
+
probe_bsz=probe_bsz,
|
| 174 |
+
adjust_factor=10.0,
|
| 175 |
+
adjust_iters=adj_iters,
|
| 176 |
+
adjust_bsz=adj_bsz,
|
| 177 |
+
refine_factor=1.0,
|
| 178 |
+
refine_iters=0,
|
| 179 |
+
refine_bsz=4,
|
| 180 |
+
noise=noise,
|
| 181 |
+
elevs=elevs,
|
| 182 |
+
elev_ranges=elev_ranges
|
| 183 |
+
)
|
| 184 |
+
theta, azimuth, radius = result_poses[0]
|
| 185 |
|
|
|
|
|
|
|
| 186 |
if anchor_polar is None:
|
| 187 |
anchor_polar = np.pi/2
|
| 188 |
|
|
|
|
| 247 |
'''
|
| 248 |
|
| 249 |
_FOOTER_ = '''
|
| 250 |
+
[Project Page](https://xt4d.github.io/id-pose-web/) | ⭐ [Github](https://github.com/xt4d/id-pose) ⭐ [](https://github.com/xt4d/id-pose)
|
| 251 |
+
---
|
| 252 |
'''
|
| 253 |
|
| 254 |
_CITE_ = r"""
|
|
|
|
| 323 |
['data/gradio_demo/duck_0.png', 'data/gradio_demo/duck_1.png'],
|
| 324 |
['data/gradio_demo/chair_0.png', 'data/gradio_demo/chair_1.png'],
|
| 325 |
['data/gradio_demo/foosball_0.png', 'data/gradio_demo/foosball_1.png'],
|
| 326 |
+
['data/gradio_demo/bunny_0.png', 'data/gradio_demo/bunny_1.png'],
|
| 327 |
+
['data/gradio_demo/circo_0.png', 'data/gradio_demo/circo_1.png'],
|
| 328 |
],
|
| 329 |
inputs=[input_image1, input_image2],
|
| 330 |
+
label='Examples (Captured)',
|
| 331 |
cache_examples=False,
|
| 332 |
+
examples_per_page=5
|
| 333 |
)
|
| 334 |
|
| 335 |
with gr.Column(min_width=200):
|
| 336 |
gr.Examples(
|
| 337 |
examples = [
|
| 338 |
+
['data/gradio_demo/arc_0.png', 'data/gradio_demo/arc_1.png'],
|
| 339 |
+
['data/gradio_demo/husky_0.png', 'data/gradio_demo/husky_1.png'],
|
| 340 |
+
['data/gradio_demo/cybertruck_0.png', 'data/gradio_demo/cybertruck_1.png'],
|
| 341 |
+
['data/gradio_demo/plane_0.png', 'data/gradio_demo/plane_1.png'],
|
| 342 |
+
['data/gradio_demo/christ_0.png', 'data/gradio_demo/christ_1.png'],
|
| 343 |
],
|
| 344 |
inputs=[input_image1, input_image2],
|
| 345 |
+
label='Examples (Internet)',
|
| 346 |
cache_examples=False,
|
| 347 |
+
examples_per_page=5
|
| 348 |
)
|
| 349 |
|
| 350 |
with gr.Column(min_width=200):
|
| 351 |
gr.Examples(
|
| 352 |
examples = [
|
| 353 |
['data/gradio_demo/status_0.png', 'data/gradio_demo/status_1.png'],
|
|
|
|
| 354 |
['data/gradio_demo/cat_0.png', 'data/gradio_demo/cat_1.png'],
|
| 355 |
+
['data/gradio_demo/ferrari_0.png', 'data/gradio_demo/ferrari_1.png'],
|
| 356 |
+
['data/gradio_demo/elon_0.png', 'data/gradio_demo/elon_1.png'],
|
| 357 |
+
['data/gradio_demo/ride_horse_0.png', 'data/gradio_demo/ride_horse_1.png'],
|
| 358 |
],
|
| 359 |
inputs=[input_image1, input_image2],
|
| 360 |
label='Examples (Generated)',
|
| 361 |
cache_examples=False,
|
| 362 |
+
examples_per_page=5
|
| 363 |
)
|
| 364 |
|
| 365 |
cam_vis = CameraVisualizer([np.eye(4), np.eye(4)], ['Image 1', 'Image 2'], ['red', 'blue'])
|
data/gradio_demo/arc_0.png
ADDED
|
data/gradio_demo/arc_1.png
ADDED
|
data/gradio_demo/christ_0.png
ADDED
|
data/gradio_demo/christ_1.png
ADDED
|
data/gradio_demo/cybertruck_0.png
ADDED
|
data/gradio_demo/cybertruck_1.png
ADDED
|
data/gradio_demo/elon_0.png
ADDED
|
data/gradio_demo/elon_1.png
ADDED
|
data/gradio_demo/ferrari_0.png
ADDED
|
data/gradio_demo/ferrari_1.png
ADDED
|
data/gradio_demo/husky_0.png
ADDED
|
data/gradio_demo/husky_1.png
ADDED
|
data/gradio_demo/plane_0.png
ADDED
|
data/gradio_demo/plane_1.png
ADDED
|
data/gradio_demo/ride_horse_0.png
ADDED
|
data/gradio_demo/ride_horse_1.png
ADDED
|