init project
Browse files
app.py
CHANGED
|
@@ -496,6 +496,12 @@ def get_reconstructed_scene(outdir, filelist, schedule='linear', niter=300, min_
|
|
| 496 |
then run get_3D_model_from_scene
|
| 497 |
"""
|
| 498 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 499 |
device = 'cuda' if torch.cuda.is_available() else 'cpu'
|
| 500 |
|
| 501 |
MAST3R_CKP = 'naver/MASt3R_ViTLarge_BaseDecoder_512_catmlpdpt_metric'
|
|
@@ -521,8 +527,7 @@ def get_reconstructed_scene(outdir, filelist, schedule='linear', niter=300, min_
|
|
| 521 |
YOLO8_CKP='./checkpoints/ObjectAwareModel.pt'
|
| 522 |
yolov8 = ObjectAwareModel(YOLO8_CKP)
|
| 523 |
|
| 524 |
-
|
| 525 |
-
raise gradio.Error("Please input at least 2 images.")
|
| 526 |
|
| 527 |
images = Images(filelist=filelist, device=device)
|
| 528 |
|
|
@@ -635,9 +640,13 @@ with gradio.Blocks(css=""".gradio-container {margin: 0 !important; min-width: 10
|
|
| 635 |
# scene state is save so that you can change conf_thr, cam_size... without rerunning the inference
|
| 636 |
scene = gradio.State(None)
|
| 637 |
|
| 638 |
-
gradio.HTML('<h2 style="text-align: center;">PE3R
|
|
|
|
|
|
|
| 639 |
with gradio.Column():
|
| 640 |
-
|
|
|
|
|
|
|
| 641 |
|
| 642 |
run_btn = gradio.Button("Reconstruct")
|
| 643 |
|
|
@@ -648,6 +657,16 @@ with gradio.Blocks(css=""".gradio-container {margin: 0 !important; min-width: 10
|
|
| 648 |
find_btn = gradio.Button("Find")
|
| 649 |
|
| 650 |
outmodel = gradio.Model3D()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 651 |
# events
|
| 652 |
|
| 653 |
run_btn.click(fn=recon_fun,
|
|
|
|
| 496 |
then run get_3D_model_from_scene
|
| 497 |
"""
|
| 498 |
|
| 499 |
+
if len(filelist) < 2:
|
| 500 |
+
raise gradio.Error("Please input at least 2 images.")
|
| 501 |
+
if len(filelist) > 8:
|
| 502 |
+
raise gradio.Error("Please input less than 8 images.")
|
| 503 |
+
|
| 504 |
+
|
| 505 |
device = 'cuda' if torch.cuda.is_available() else 'cpu'
|
| 506 |
|
| 507 |
MAST3R_CKP = 'naver/MASt3R_ViTLarge_BaseDecoder_512_catmlpdpt_metric'
|
|
|
|
| 527 |
YOLO8_CKP='./checkpoints/ObjectAwareModel.pt'
|
| 528 |
yolov8 = ObjectAwareModel(YOLO8_CKP)
|
| 529 |
|
| 530 |
+
|
|
|
|
| 531 |
|
| 532 |
images = Images(filelist=filelist, device=device)
|
| 533 |
|
|
|
|
| 640 |
# scene state is save so that you can change conf_thr, cam_size... without rerunning the inference
|
| 641 |
scene = gradio.State(None)
|
| 642 |
|
| 643 |
+
gradio.HTML('<h2 style="text-align: center;">PE3R: Perception-Efficient 3D Reconstruction</h2>')
|
| 644 |
+
gradio.HTML('<p style="text-align: center; font-size: 16px;">🪄 Take 2~3 photos with your phone, upload them, wait a few (3~5) minutes, and then start exploring your 3D world via text!<br>'
|
| 645 |
+
'✨ If you like this project, please consider giving us an encouraging star <a href="https://github.com/hujiecpp/PE3R" target="_blank">[github]</a>.</p>')
|
| 646 |
with gradio.Column():
|
| 647 |
+
snapshot = gradio.Image(None, visible=False)
|
| 648 |
+
|
| 649 |
+
inputfiles = gradio.File(file_count="multiple", label="Input Images")
|
| 650 |
|
| 651 |
run_btn = gradio.Button("Reconstruct")
|
| 652 |
|
|
|
|
| 657 |
find_btn = gradio.Button("Find")
|
| 658 |
|
| 659 |
outmodel = gradio.Model3D()
|
| 660 |
+
|
| 661 |
+
examples = gradio.Examples(
|
| 662 |
+
examples=[
|
| 663 |
+
["./examples/1.png", ["./examples/1.png", "./examples/2.png", "./examples/3.png", "./examples/4.png"], "Table", 0.85],
|
| 664 |
+
["./examples/5.png", ["./examples/5.png", "./examples/6.png", "./examples/7.png", "./examples/8.png"], "Christmas Tree", 0.96],
|
| 665 |
+
],
|
| 666 |
+
inputs=[snapshot, inputfiles, text_input, threshold],
|
| 667 |
+
label="Example Inputs"
|
| 668 |
+
)
|
| 669 |
+
|
| 670 |
# events
|
| 671 |
|
| 672 |
run_btn.click(fn=recon_fun,
|