GithubHelp home page GithubHelp logo

nvlabs / bundlesdf Goto Github PK

View Code? Open in Web Editor NEW
891.0 15.0 96.0 14.83 MB

[CVPR 2023] BundleSDF: Neural 6-DoF Tracking and 3D Reconstruction of Unknown Objects

Home Page: https://bundlesdf.github.io/

License: Other

CMake 1.32% Shell 2.52% C++ 0.76% Python 95.40%

bundlesdf's Introduction

BundleSDF: Neural 6-DoF Tracking and 3D Reconstruction of Unknown Objects

This is an implementation of our paper published in CVPR 2023

[Arxiv] [Project page] [Supplemental video]

Abstract

We present a near real-time method for 6-DoF tracking of an unknown object from a monocular RGBD video sequence, while simultaneously performing neural 3D reconstruction of the object. Our method works for arbitrary rigid objects, even when visual texture is largely absent. The object is assumed to be segmented in the first frame only. No additional information is required, and no assumption is made about the interaction agent. Key to our method is a Neural Object Field that is learned concurrently with a pose graph optimization process in order to robustly accumulate information into a consistent 3D representation capturing both geometry and appearance. A dynamic pool of posed memory frames is automatically maintained to facilitate communication between these threads. Our approach handles challenging sequences with large pose changes, partial and full occlusion, untextured surfaces, and specular highlights. We show results on HO3D, YCBInEOAT, and BEHAVE datasets, demonstrating that our method significantly outperforms existing approaches.

Bibtex

@InProceedings{bundlesdfwen2023,
author        = {Bowen Wen and Jonathan Tremblay and Valts Blukis and Stephen Tyree and Thomas M\"{u}ller and Alex Evans and Dieter Fox and Jan Kautz and Stan Birchfield},
title         = {{BundleSDF}: {N}eural 6-{DoF} Tracking and {3D} Reconstruction of Unknown Objects},
booktitle     = {CVPR},
year          = {2023},
}

Data download

  • Download pretrained weights of segmentation network, and put it under ./BundleTrack/XMem/saves/XMem-s012.pth

  • Download pretrained weights of LoFTR outdoor_ds.ckpt, and put it under ./BundleTrack/LoFTR/weights/outdoor_ds.ckpt

  • Download HO3D data. We provide the augmented data that you can download here. Then download YCB-Video object models from here. Finally, make sure the structure is like below, and update your root path of HO3D_ROOT at the top of BundleTrack/scripts/data_reader.py

    HO3D_v3
      ├── evaluation
      ├── models
      └── masks_XMem
    

Docker/Environment setup

  • Build the docker image (this only needs to do once and can take some time).
cd docker
docker build --network host -t nvcr.io/nvidian/bundlesdf .
  • Start a docker container the first time
cd docker && bash run_container.sh

# Inside docker container, compile the packages which are machine dependent
bash build.sh

Run on your custom data

  • Prepare your RGBD video folder as below (also refer to the example milk data). You can find an example milk data here for testing.
root
  ├──rgb/    (PNG files)
  ├──depth/  (PNG files, stored in mm, uint16 format. Filename same as rgb)
  ├──masks/       (PNG files. Filename same as rgb. 0 is background. Else is foreground)
  └──cam_K.txt   (3x3 intrinsic matrix, use space and enter to delimit)

Due to license issues, we are not able to include XMem in this codebase for running segmentation online. If you are interested in doing so, please download the code separately and add a wrapper in segmentation_utils.py.

  • Run your RGBD video (specify the video_dir and your desired output path). There are 3 steps.
# 1) Run joint tracking and reconstruction
python run_custom.py --mode run_video --video_dir /home/bowen/debug/2022-11-18-15-10-24_milk --out_folder /home/bowen/debug/bundlesdf_2022-11-18-15-10-24_milk --use_segmenter 1 --use_gui 1 --debug_level 2

# 2) Run global refinement post-processing to refine the mesh
python run_custom.py --mode global_refine --video_dir /home/bowen/debug/2022-11-18-15-10-24_milk --out_folder /home/bowen/debug/bundlesdf_2022-11-18-15-10-24_milk   # Change the path to your video_directory

# 3) (Optional) If you want to draw the oriented bounding box to visualize the pose, similar to our demo
python run_custom.py --mode draw_pose --out_folder /home/bowen/debug/bundlesdf_2022-11-18-15-10-24_milk
  • Finally the results will be dumped in the out_folder, including the tracked poses stored in ob_in_cam/ and reconstructed mesh with texture textured_mesh.obj.

Run on HO3D dataset

# Run BundleSDF to get the pose and reconstruction results
python run_ho3d.py --video_dirs /mnt/9a72c439-d0a7-45e8-8d20-d7a235d02763/DATASET/HO3D_v3/evaluation/SM1 --out_dir /home/bowen/debug/ho3d_ours

# Benchmark the output results
python benchmark_ho3d.py --video_dirs /mnt/9a72c439-d0a7-45e8-8d20-d7a235d02763/DATASET/HO3D_v3/evaluation/SM1 --out_dir /home/bowen/debug/ho3d_ours

Acknowledgement

We would like to thank Jeff Smith for helping with the code release. Marco Foco and his team for providing the test data on the static scene.

Contact

For questions, please contact Bowen Wen ([email protected])

bundlesdf's People

Contributors

wenbowen123 avatar wing-kit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bundlesdf's Issues

Getting errors while running "run_container.sh"

image

The docker file was built successfully in my opinion but I run into problems when I start the docker container for the first time using the "bash run_container.sh"
I have attached the error screenshots.
Specifically, I get:
WSL (7605) errors: CreateProcessEntryCommon:577: execvpe /bin/bash failed 2

And,

CreateProcessEntryCommon:586: Create process not expected to return

Any help would be appreciated!

Debugging C++ code pieces

How can we print / log for debugging purposes in those parts of the code that are written in C++?

Specifically, I ran into the following error message (trying on different data than the milk example):

[pcl::PLYWriter::writeASCII] Input point cloud has no data!
[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!
[pcl::PLYWriter::writeASCII] Input point cloud has no data!

which I narrowed down to line 406 in bundlesdf.py:

def process_new_frame(self, frame):
  frame.invalidatePixelsByMask(frame._fg_mask)

  ...

      if frame._id==0 and np.abs(np.array(frame._pose_in_model)-np.eye(4)).max()<=1e-4:
l.406    frame.setNewInitCoordinate()

From what I understand, this function in turn is written in C++ in BundleSDF/BundleTrack/src/Frame.cpp:

void Frame::setNewInitCoordinate()
{
  const std::string debug_dir = (*yml)["debug_dir"].as<std::string>();
  PointCloudRGBNormal::Ptr cloud(new PointCloudRGBNormal);
  for (int w=0;w<_W;w++)
...

To see what's happening here, I have tried both
py::print("My debugging text"); and std::cout << "My debugging text" << std::endl;, but neither are printed in the console when running run_custom.py. I set the debugging level to 3.

So: How do I pass messages from those C++ bits to the console for debugging?

Clearer progress tracking

I think clearer progress tracking would be really helpful. With the current logging output it's hard to understand how long training will still take. The output is quite verbose, even at the least verbose debugging level (0), and the interplay of parallel optimization processes makes it even harder to keep an overview. I get that debugging output has to be verbose in order to be able to see all the components working, but I think the problem is to cram everything into one console log to begin with.

Ideally we would have something like a weights & biases (wandb) integration for tracking different progress metrics (e.g. percentage of frames already processed, losses, etc.) on top of the console log. I might look into this but no guarantees. Also, I think there are console logging libraries that fix some (e.g. global) progress bars in place so that one can keep an overview. This might also help.

Kudos to the authors though for this great project. I am only criticizing because I think this project is awesome and making it more accessible would let it come to its full potential! Thanks a lot for the project!

ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /opt/conda/envs/py38/lib/python3.8/site-packages/scipy/spatial/_ckdtree.cpython-38-x86_64-linux-gnu.so)

After building your docker from scratch, I get this error. Any hint? Do you expect it to work after the docker build is successful?

(py38) root@ard-gpu-01:/home/mona/BundleSDF# python run_custom.py --mode run_video --video_dir /milk/2022-11-18-15-10-24_milk/ --outfolder  /home/mona/BundleSDF/out_dir/ --use_segmenter 1 --use_gui 1 --debug_level 2
Traceback (most recent call last):
  File "run_custom.py", line 10, in <module>
    from bundlesdf import *
  File "/home/mona/BundleSDF/bundlesdf.py", line 10, in <module>
    from Utils import *
  File "/home/mona/BundleSDF/Utils.py", line 11, in <module>
    import open3d as o3d
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/open3d/__init__.py", line 146, in <module>
    import open3d.ml
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/open3d/ml/__init__.py", line 16, in <module>
    from . import datasets
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/open3d/ml/datasets.py", line 15, in <module>
    from open3d._ml3d.datasets import *
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/open3d/_ml3d/datasets/__init__.py", line 3, in <module>
    from .semantickitti import SemanticKITTI
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/open3d/_ml3d/datasets/semantickitti.py", line 6, in <module>
    from sklearn.neighbors import KDTree
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/sklearn/__init__.py", line 82, in <module>
    from .base import clone
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/sklearn/base.py", line 17, in <module>
    from .utils import _IS_32BIT
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/sklearn/utils/__init__.py", line 25, in <module>
    from .fixes import parse_version, threadpool_info
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/sklearn/utils/fixes.py", line 19, in <module>
    import scipy.stats
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/scipy/stats/__init__.py", line 485, in <module>
    from ._stats_py import *
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/scipy/stats/_stats_py.py", line 39, in <module>
    from scipy.spatial.distance import cdist
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/scipy/spatial/__init__.py", line 105, in <module>
    from ._kdtree import *
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/scipy/spatial/_kdtree.py", line 4, in <module>
    from ._ckdtree import cKDTree, cKDTreeNode
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /opt/conda/envs/py38/lib/python3.8/site-packages/scipy/spatial/_ckdtree.cpython-38-x86_64-linux-gnu.so)
(py38) root@ard-gpu-01:/home/mona/BundleSDF# python run_custom.py --mode run_video --video_dir /milk/2022-11-18-15-10-24_milk/ --outfolder  /home/mona/BundleSDF/out_dir/ --use_segmenter 1 --use_gui 1 --debug_level 2
Traceback (most recent call last):
  File "run_custom.py", line 10, in <module>
    from bundlesdf import *
  File "/home/mona/BundleSDF/bundlesdf.py", line 10, in <module>
    from Utils import *
  File "/home/mona/BundleSDF/Utils.py", line 11, in <module>
    import open3d as o3d
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/open3d/__init__.py", line 146, in <module>
    import open3d.ml
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/open3d/ml/__init__.py", line 16, in <module>
    from . import datasets
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/open3d/ml/datasets.py", line 15, in <module>
    from open3d._ml3d.datasets import *
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/open3d/_ml3d/datasets/__init__.py", line 3, in <module>
    from .semantickitti import SemanticKITTI
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/open3d/_ml3d/datasets/semantickitti.py", line 6, in <module>
    from sklearn.neighbors import KDTree
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/sklearn/__init__.py", line 82, in <module>
    from .base import clone
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/sklearn/base.py", line 17, in <module>
    from .utils import _IS_32BIT
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/sklearn/utils/__init__.py", line 25, in <module>
    from .fixes import parse_version, threadpool_info
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/sklearn/utils/fixes.py", line 19, in <module>
    import scipy.stats
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/scipy/stats/__init__.py", line 485, in <module>
    from ._stats_py import *
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/scipy/stats/_stats_py.py", line 39, in <module>
    from scipy.spatial.distance import cdist
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/scipy/spatial/__init__.py", line 105, in <module>
    from ._kdtree import *
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/scipy/spatial/_kdtree.py", line 4, in <module>
    from ._ckdtree import cKDTree, cKDTreeNode
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /opt/conda/envs/py38/lib/python3.8/site-packages/scipy/spatial/_ckdtree.cpython-38-x86_64-linux-gnu.so)

further I see these two as result of locate

/opt/conda/envs/py38/lib/libstdc++.so.6
/opt/conda/envs/py38/lib/libstdc++.so.6.0.29

My sys info:

(base) mona@ard-gpu-01:~$ uname -a
Linux ard-gpu-01 5.19.0-45-generic #46~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Jun 7 15:06:04 UTC 20 x86_64 x86_64 x86_64 GNU/Linux
(base) mona@ard-gpu-01:~$ lsb_release -a
LSB Version:	core-11.1.0ubuntu4-noarch:security-11.1.0ubuntu4-noarch
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.2 LTS
Release:	22.04
Codename:	jammy
(base) mona@ard-gpu-01:~$ gcc --version
gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

(base) mona@ard-gpu-01:~$ g++ --version
g++ (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

(base) mona@ard-gpu-01:~$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Jun__8_16:49:14_PDT_2022
Cuda compilation tools, release 11.7, V11.7.99
Build cuda_11.7.r11.7/compiler.31442593_0
(base) mona@ard-gpu-01:~$ nvidia-smi
Thu Jun 22 09:56:13 2023       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 530.30.02              Driver Version: 530.30.02    CUDA Version: 12.1     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                  Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf            Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce RTX 3080 L...    On | 00000000:01:00.0 Off |                  N/A |
| N/A   44C    P3               N/A /  55W|      9MiB / 16384MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
                                                                                         
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A      2538      G   /usr/lib/xorg/Xorg                            4MiB |
|    0   N/A  N/A      2995      G   ...libexec/gnome-remote-desktop-daemon        3MiB |
+---------------------------------------------------------------------------------------+

As you see 3.4.29 is not shown below

(py38) root@ard-gpu-01:/home/mona/BundleSDF# strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_DEBUG_MESSAGE_LENGTH

Modifying code for real-time tracking

Thank you for your amazing work! We are interested at applying your work to robot manipulation, specifically estimating the pose of the object that we're trying to manipulate.
While the uploaded code works well for the custom data, it seems hard to be directly applied since it jointly tracks the object and trains NERF, which causes 5~10 seconds of delay per training. However, as you mentioned at your paper, it's possible to run the online tracker and NERF trainer separately.

Screenshot 2023-07-13 at 4 07 17 PM

If I want to run only the online tracker but not NERF trainer, to achieve 10hz online tracking speed, could you tell which part of your code that should I disable? Again, thanks for your amazing work!

get_mesh mode fails -- File "run_custom.py", line 209, in <module> postprocess_mesh(out_folder=args.out_folder) File "run_custom.py", line 162, in postprocess_mesh

I successfully finished step 1 and optional step 2 for milk demo data with stride of 5 and number of frames set to 500 (as mentioned in #15 (comment)). However, I get error at step 3.
output of step 2:

(py38) root@bundlesdf:/home/azureuser/BundleSDF# python run_custom.py --mode global_refine --video_dir /home/azureuser/BundleSDF/milk/2022-11-18-15-10-24_milk  --out_folder /home/azureuser/BundleSDF/milk/out

ETC
loor'). This results in incorrect rounding for negative values. To keep the current behavior, use torch.div(a, b, rounding_mode='trunc'), or for actual floor division, use torch.div(a, b, rounding_mode='floor').  uvs_unique = torch.stack((uvs_flat_unique%(W-1), uvs_flat_unique//(W-1)), dim=-1).reshape(-1,2)
project train_images 1/50
project train_images 2/50
project train_images 3/50
project train_images 4/50
project train_images 5/50
project train_images 6/50
project train_images 7/50
project train_images 8/50
project train_images 9/50
project train_images 10/50
project train_images 11/50
project train_images 12/50
project train_images 13/50
project train_images 14/50
project train_images 15/50
project train_images 16/50
project train_images 17/50
project train_images 18/50
project train_images 19/50
project train_images 20/50
project train_images 21/50
project train_images 22/50
project train_images 23/50
project train_images 24/50
project train_images 25/50
project train_images 26/50
project train_images 27/50
project train_images 28/50
project train_images 29/50
project train_images 30/50
project train_images 31/50
project train_images 32/50
project train_images 33/50
project train_images 34/50
project train_images 35/50
project train_images 36/50
project train_images 37/50
project train_images 38/50
project train_images 39/50
project train_images 40/50
project train_images 41/50
project train_images 42/50
project train_images 43/50
project train_images 44/50
project train_images 45/50
project train_images 46/50
project train_images 47/50
project train_images 48/50
project train_images 49/50
Done
[2023-06-29 09:24:40.101] [warning] [Bundler.cpp:59] Destructor

output of step 3:

[2023-06-29 09:24:40.101] [warning] [Bundler.cpp:59] Destructor
(py38) root@bundlesdf:/home/azureuser/BundleSDF# python run_custom.py --mode get_mesh --video_dir /home/azureuser/BundleSDF/milk/2022-11-18-15-10-24_milk  --out_folder /home/azureuser/BundleSDF/milk/out
Traceback (most recent call last):
  File "run_custom.py", line 209, in <module>
    postprocess_mesh(out_folder=args.out_folder)
  File "run_custom.py", line 162, in postprocess_mesh
    print(f"Using {mesh_files[-1]}")
IndexError: list index out of range

These are the folders/files created based on time in out folder:

drwxr-xr-x   3 root root 4.0K Jun 28 08:25 1668813041189011440
drwxr-xr-x   2 root root 4.0K Jun 28 08:25 1668813041351297633
drwxr-xr-x   3 root root 4.0K Jun 28 08:25 1668813041518961901
drwxr-xr-x   2 root root 4.0K Jun 28 08:25 ob_in_cam
drwxr-xr-x   2 root root 4.0K Jun 28 08:25 color
drwxr-xr-x   2 root root 4.0K Jun 28 08:25 depth
drwxr-xr-x   2 root root 4.0K Jun 28 08:25 depth_filtered
drwxr-xr-x   2 root root 4.0K Jun 28 08:25 normal
drwxr-xr-x   2 root root 4.0K Jun 28 08:25 mask
drwxr-xr-x   2 root root 4.0K Jun 28 08:25 color_segmented
drwxr-xr-x   2 root root 4.0K Jun 28 08:25 depth_vis
drwxr-xr-x   2 root root 4.0K Jun 28 08:25 1668813041689867935
drwxr-xr-x 114 root root 4.0K Jun 28 08:33 .
-rw-r--r--   1 root root 2.5K Jun 29 09:17 config_bundletrack.yml
drwxr-xr-x   4 root root 4.0K Jun 29 09:17 final
drwxr-xr-x   2 root root 4.0K Jun 29 09:19 nerf_with_bundletrack_online
-rw-r--r--   1 root root 5.4M Jun 29 09:19 mesh_cleaned.obj
-rw-r--r--   1 root root 297K Jun 29 09:24 material_0.png
-rw-r--r--   1 root root  198 Jun 29 09:24 material.mtl
-rw-r--r--   1 root root  18M Jun 29 09:24 textured_mesh.obj

It is looking for "*normalized_space.obj" which doesn't exist:
(py38) root@bundlesdf:/home/azureuser/BundleSDF# find . -name "*normalized_space.obj"

(py38) root@bundlesdf:/home/azureuser/BundleSDF# rg "normalized_space"     
nerf_runner.py
830:          dir = os.path.join(self.cfg['save_dir'], f'step_{self.global_step:07d}_mesh_normalized_space.obj')

run_custom.py
161:  mesh_files = sorted(glob.glob(f'{out_folder}/**/nerf/*normalized_space.obj',recursive=True))

bundlesdf.py
744:    # mesh_files = sorted(glob.glob(f"{self.debug_dir}/final/nerf/step_*_mesh_normalized_space.obj"))

benchmark_ho3d.py
40:      pred_mesh_file = sorted(glob.glob(f"{dir}/**/*mesh_normalized_space.obj",recursive=True))[-1]


and

    if self.global_step % self.cfg['i_mesh'] == 0 and self.global_step > 0:
      with torch.no_grad():
        model = self.models['model_fine'] if self.models['model_fine'] is not None else self.models['model']
        mesh = self.extract_mesh(isolevel=0, voxel_size=self.cfg['mesh_resolution'])
        self.mesh = copy.deepcopy(mesh)
        if mesh is not None:
          dir = os.path.join(self.cfg['save_dir'], f'step_{self.global_step:07d}_mesh_normalized_space.obj')

File "/home/azureuser/BundleSDF/tool.py", line 93, in compute_scene_bounds pcd = pcd_all.voxel_down_sample(eps/5) AttributeError: 'NoneType' object has no attribute 'voxel_down_sample'

I have removed all the blurry RGB images or the ones that object of interest was accidentally not in frame as well as their corresponding depth and masks frames. Could you please guide why I am getting the error below?

I have 4061 remaining images, stride of 8 and

  args.stride = 8
  print("stride is: ", args.stride)
  # args.stride = 20 # Adjusts stride (can be done more elegantly)
  n_considered_frames = 500 # adjust to process more/less
  #for i in range(0,len(reader.color_files),args.stride):
  for i in range(0, n_considered_frames, args.stride):
(py38) root@bundlesdf:/home/azureuser/BundleSDF# python run_custom.py --mode run_video --video_dir /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed/ --out_folder /home/azureuser/BundleSDF/my_obj/out --use_segmenter 1 --use_gui 0 --debug_level 2
etc etc etc
[bundlesdf.py] frame_pairs: 21
[2023-07-10 12:29:17.192] [warning] [FeatureManager.cpp:2690] _raw_matches found exsting pair (0000024, 0000000)
[2023-07-10 12:29:17.192] [warning] [FeatureManager.cpp:2690] _raw_matches found exsting pair (0000144, 0000000)
[2023-07-10 12:29:17.192] [warning] [FeatureManager.cpp:2690] _raw_matches found exsting pair (0000160, 0000000)
[2023-07-10 12:29:17.192] [warning] [FeatureManager.cpp:2690] _raw_matches found exsting pair (0000364, 0000000)
[2023-07-10 12:29:17.192] [warning] [FeatureManager.cpp:2690] _raw_matches found exsting pair (0000404, 0000000)
[2023-07-10 12:29:17.196] [warning] [FeatureManager.cpp:2690] _raw_matches found exsting pair (0000204, 0000024)
[2023-07-10 12:29:17.198] [warning] [FeatureManager.cpp:2690] _raw_matches found exsting pair (0000204, 0000096)
[2023-07-10 12:29:17.203] [warning] [FeatureManager.cpp:2690] _raw_matches found exsting pair (0000204, 0000144)
[2023-07-10 12:29:17.204] [warning] [FeatureManager.cpp:2690] _raw_matches found exsting pair (0000204, 0000160)
[2023-07-10 12:29:17.206] [warning] [FeatureManager.cpp:2690] _raw_matches found exsting pair (0000324, 0000204)
[2023-07-10 12:29:17.206] [warning] [FeatureManager.cpp:2690] _raw_matches found exsting pair (0000364, 0000204)
[loftr_wrapper.py] image0: torch.Size([10, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.2003210335969925 0.9860879182815552
[loftr_wrapper.py] pair_ids (2213,)
[loftr_wrapper.py] corres: (2213, 5)
[2023-07-10 12:29:17.385] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=10
[2023-07-10 12:29:17.400] [warning] [FeatureManager.cpp:1695] after ransac, frame 0000532 and 0000000 has too few matches #0, ignore
[2023-07-10 12:29:17.401] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 0000532 0000024 #inliers=29, #prev 311
[2023-07-10 12:29:17.401] [warning] [FeatureManager.cpp:1695] after ransac, frame 0000532 and 0000096 has too few matches #1, ignore
[2023-07-10 12:29:17.401] [warning] [FeatureManager.cpp:1695] after ransac, frame 0000532 and 0000144 has too few matches #0, ignore
[2023-07-10 12:29:17.401] [warning] [FeatureManager.cpp:1695] after ransac, frame 0000532 and 0000160 has too few matches #1, ignore
[2023-07-10 12:29:17.401] [warning] [FeatureManager.cpp:1695] after ransac, frame 0000404 and 0000204 has too few matches #2, ignore
[2023-07-10 12:29:17.401] [warning] [FeatureManager.cpp:1695] after ransac, frame 0000532 and 0000204 has too few matches #0, ignore
[2023-07-10 12:29:17.401] [warning] [FeatureManager.cpp:1695] after ransac, frame 0000532 and 0000324 has too few matches #0, ignore
[2023-07-10 12:29:17.401] [warning] [FeatureManager.cpp:1695] after ransac, frame 0000532 and 0000364 has too few matches #0, ignore
[2023-07-10 12:29:17.401] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 0000532 0000404 #inliers=5, #prev 340
#optimizeGPU frames=10, #keyframes=21, #_frames=27
0000000 0000024 0000096 0000144 0000160 0000204 0000324 0000364 0000404 0000532 
[2023-07-10 12:29:17.402] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=34
global_corres=34
maxNumResiduals / maxNumberOfImages = 216034 / 10 = 21603
m_maxNumberOfImages*m_maxCorrPerImage = 10 x 34 = 340
m_solver->solve Time difference = 13.767[ms]
[2023-07-10 12:29:17.423] [warning] [Bundler.cpp:924] OptimizerGPU finish
frame 0000532 trans_diff to neighbor: 0.065557 too big, FAIL[2023-07-10 12:29:17.423] [warning] [Bundler.cpp:67] forgetting frame 0000532
[2023-07-10 12:29:17.423] [warning] [FeatureManager.cpp:469] forgetting frame 0000532
[bundlesdf.py] processNewFrame done 0000532
[bundlesdf.py] rematch_after_nerf: True
[2023-07-10 12:29:17.424] [warning] [Bundler.cpp:961] Welcome saveNewframeResult
[2023-07-10 12:29:17.461] [warning] [Bundler.cpp:1110] saveNewframeResult done
video dir is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed/
type of color files:  <class 'list'>
len of color_files:  4061
[2023-07-10 12:29:22.805] [warning] [Bundler.cpp:49] Connected to nerf_port 9999
[2023-07-10 12:29:22.806] [warning] [FeatureManager.cpp:2084] Connected to port 5555
default_cfg {'backbone_type': 'ResNetFPN', 'resolution': (8, 2), 'fine_window_size': 5, 'fine_concat_coarse_feat': True, 'resnetfpn': {'initial_dim': 128, 'block_dims': [128, 196, 256]}, 'coarse': {'d_model': 256, 'd_ffn': 256, 'nhead': 8, 'layer_names': ['self', 'cross', 'self', 'cross', 'self', 'cross', 'self', 'cross'], 'attention': 'linear', 'temp_bug_fix': False}, 'match_coarse': {'thr': 0.2, 'border_rm': 2, 'match_type': 'dual_softmax', 'dsmax_temperature': 0.1, 'skh_iters': 3, 'skh_init_bin_score': 1.0, 'skh_prefilter': True, 'train_coarse_percent': 0.4, 'train_pad_num_gt_min': 200}, 'fine': {'d_model': 128, 'd_ffn': 128, 'nhead': 8, 'layer_names': ['self', 'cross'], 'attention': 'linear'}}
[bundlesdf.py] last_stamp 0000532
[bundlesdf.py] keyframes#: 21
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000000.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000024.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000080.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000096.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000128.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000144.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000160.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000204.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000220.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000252.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000268.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000284.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000324.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000364.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000404.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000420.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000428.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000444.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000460.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000492.png
depth file name is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed//depth/0000500.png
[tool.py] compute_scene_bounds_worker start
[tool.py] compute_scene_bounds_worker done
Traceback (most recent call last):
  File "run_custom.py", line 221, in <module>
    run_one_video(video_dir=args.video_dir, out_folder=args.out_folder, use_segmenter=args.use_segmenter, use_gui=args.use_gui)
  File "run_custom.py", line 125, in run_one_video
    run_one_video_global_nerf(out_folder=out_folder)
  File "run_custom.py", line 170, in run_one_video_global_nerf
    tracker.run_global_nerf(reader=reader, get_texture=True, tex_res=512)
  File "/home/azureuser/BundleSDF/bundlesdf.py", line 725, in run_global_nerf
    sc_factor,translation,pcd_real_scale, pcd_normalized = compute_scene_bounds(None,glcam_in_obs,self.K,use_mask=True,base_dir=self.cfg_nerf['save_dir'],rgbs=np.array(rgbs),depths=np.array(depths),masks=np.array(masks), cluster=True, eps=0.01, min_samples=5, sc_factor=self.cfg_nerf['sc_factor'], translation_cvcam=self.cfg_nerf['translation'])
  File "/home/azureuser/BundleSDF/tool.py", line 93, in compute_scene_bounds
    pcd = pcd_all.voxel_down_sample(eps/5)
AttributeError: 'NoneType' object has no attribute 'voxel_down_sample'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/spawn.py", line 116, in spawn_main
    exitcode = _main(fd, parent_sentinel)
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/spawn.py", line 126, in _main
    self = reduction.pickle.load(from_parent)
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/synchronize.py", line 110, in __setstate__
    self._semlock = _multiprocessing.SemLock._rebuild(*state)
FileNotFoundError: [Errno 2] No such file or directory
[2023-07-10 12:29:27.813] [warning] [Bundler.cpp:59] Destructor
[2023-07-10 12:29:27.815] [warning] [Bundler.cpp:59] Destructor
(py38) root@bundlesdf:/home/azureuser/BundleSDF# ls my_obj/V00P00A00C00_trimmed/masks/0000500.png 
-rw-rw-r-- 1 1001 1004 1.8K Jul 10 10:50 my_obj/V00P00A00C00_trimmed/masks/0000500.png
(py38) root@bundlesdf:/home/azureuser/BundleSDF# ls my_obj/V00P00A00C00_trimmed/depth/0000500.png 
-rw-r--r-- 1 root root 65K Jul 10 10:35 my_obj/V00P00A00C00_trimmed/depth/0000500.png
(py38) root@bundlesdf:/home/azureuser/BundleSDF# ls my_obj/V00P00A00C00_trimmed/rgb/0000500.png 
-rw-r--r-- 1 1001 1004 432K Jul 10 12:22 my_obj/V00P00A00C00_trimmed/rgb/0000500.png

running bundlesdf on custom data -- image naming as well depth image format

for depth image format, do you expect a certain format?
I am getting an error for the line starting with thres:

    percentile = self.cfg_track['depth_processing']["percentile"]
    if percentile<100:   # Denoise
      logging.info("percentile denoise start")
      valid = (depth>=0.1) & (mask>0)
      thres = np.percentile(depth[valid], percentile)
      depth[depth>=thres] = 0
      logging.info("percentile denoise done")

Here's how I run it:

(py38) root@bundlesdf:/home/azureuser/BundleSDF# python run_custom.py --mode run_video --video_dir /home/azureuser/BundleSDF/my_obj/V00P00A00C00 --out_folder /home/azureuser/BundleSDF/my_obj/out --use_segmenter 1 --use_gui 0 --debug_level 2
[2023-07-03 11:28:14.424] [warning] [Bundler.cpp:49] Connected to nerf_port 9999
[2023-07-03 11:28:14.424] [warning] [FeatureManager.cpp:2084] Connected to port 5555
default_cfg {'backbone_type': 'ResNetFPN', 'resolution': (8, 2), 'fine_window_size': 5, 'fine_concat_coarse_feat': True, 'resnetfpn': {'initial_dim': 128, 'block_dims': [128, 196, 256]}, 'coarse': {'d_model': 256, 'd_ffn': 256, 'nhead': 8, 'layer_names': ['self', 'cross', 'self', 'cross', 'self', 'cross', 'self', 'cross'], 'attention': 'linear', 'temp_bug_fix': False}, 'match_coarse': {'thr': 0.2, 'border_rm': 2, 'match_type': 'dual_softmax', 'dsmax_temperature': 0.1, 'skh_iters': 3, 'skh_init_bin_score': 1.0, 'skh_prefilter': True, 'train_coarse_percent': 0.4, 'train_pad_num_gt_min': 200}, 'fine': {'d_model': 128, 'd_ffn': 128, 'nhead': 8, 'layer_names': ['self', 'cross'], 'attention': 'linear'}}
[bundlesdf.py] percentile denoise start
Traceback (most recent call last):
  File "run_custom.py", line 205, in <module>
    run_one_video(video_dir=args.video_dir, out_folder=args.out_folder, use_segmenter=args.use_segmenter, use_gui=args.use_gui)
  File "run_custom.py", line 105, in run_one_video
    tracker.run(color, depth, K, id_str, mask=mask, occ_mask=None, pose_in_model=pose_in_model)
  File "/home/azureuser/BundleSDF/bundlesdf.py", line 534, in run
    thres = np.percentile(depth[valid], percentile)
  File "<__array_function__ internals>", line 180, in percentile
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/numpy/lib/function_base.py", line 4166, in percentile
    return _quantile_unchecked(
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/numpy/lib/function_base.py", line 4424, in _quantile_unchecked
    r, k = _ureduce(a,
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/numpy/lib/function_base.py", line 3725, in _ureduce
    r = func(a, **kwargs)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/numpy/lib/function_base.py", line 4593, in _quantile_ureduce_func
    result = _quantile(arr,
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/numpy/lib/function_base.py", line 4699, in _quantile
    take(arr, indices=-1, axis=DATA_AXIS)
  File "<__array_function__ internals>", line 180, in take
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/numpy/core/fromnumeric.py", line 190, in take
    return _wrapfunc(a, 'take', indices, axis=axis, out=out, mode=mode)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/numpy/core/fromnumeric.py", line 57, in _wrapfunc
    return bound(*args, **kwds)
IndexError: cannot do a non-empty take from an empty axes.
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/spawn.py", line 116, in spawn_main
    exitcode = _main(fd, parent_sentinel)
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/spawn.py", line 126, in _main
    self = reduction.pickle.load(from_parent)
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/synchronize.py", line 110, in __setstate__
    self._semlock = _multiprocessing.SemLock._rebuild(*state)
FileNotFoundError: [Errno 2] No such file or directory
[2023-07-03 11:28:19.309] [warning] [Bundler.cpp:59] Destructor

Also, my image names are like 0004487.png for depth, rgb, masks folder. However, yours is timestamp. Is my naming format fine?

Here's an example of how my depth image looks like:
0000079

Potential broken dependency or CMakeLists.txt file -- File "/home/mona/BundleSDF/mycuda/torch_ngp_grid_encoder/grid.py", line 23, in <module> import gridencoder ModuleNotFoundError: No module named 'gridencoder'

(py38) root@ard-gpu-01:/home/mona/BundleSDF# python run_custom.py --mode run_video --video_dir /milk/2022-11-18-15-10-24_milk/ --out_folder  /home/mona/BundleSDF/out_dir/ --use_segmenter 1 --use_gui 0 --debug_level 2

txt 

[2023-06-22 19:05:17.850] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=1
[2023-06-22 19:05:17.851] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028705557007 1668813028667811894 #inliers=566, #prev 699
[bundlesdf.py] frame 1668813028705557007 pose update before
[[ 0.969 -0.184  0.168 -0.132]
 [ 0.199  0.977 -0.078 -0.07 ]
 [-0.15   0.109  0.983 -0.417]
 [ 0.     0.     0.     1.   ]]
[2023-06-22 19:05:17.853] [warning] [FeatureManager.cpp:1095] procrustesByCorrespondence err per point between 1668813028705557007 and 1668813028667811894: 0.000136082
[bundlesdf.py] frame 1668813028705557007 pose update after
[[ 0.967 -0.188  0.173 -0.136]
 [ 0.204  0.975 -0.083 -0.068]
 [-0.153  0.115  0.981 -0.416]
 [ 0.     0.     0.     1.   ]]
[2023-06-22 19:05:17.854] [warning] [Bundler.cpp:67] forgetting frame 1668813028470606334
[2023-06-22 19:05:17.854] [warning] [FeatureManager.cpp:469] forgetting frame 1668813028470606334
[bundlesdf.py] exceed window size, forget frame 1668813028470606334
[2023-06-22 19:05:17.854] [warning] [Bundler.cpp:435] total keyframes=4, want to select 10
[2023-06-22 19:05:17.854] [warning] [Bundler.cpp:793] frame 1668813028705557007 and 1668813025164826994 visible=0.878109
[2023-06-22 19:05:17.854] [warning] [Bundler.cpp:802] add frame (1668813028705557007, 1668813025164826994) into pairs
[2023-06-22 19:05:17.854] [warning] [Bundler.cpp:793] frame 1668813028705557007 and 1668813026867024573 visible=0.86201
[2023-06-22 19:05:17.854] [warning] [Bundler.cpp:802] add frame (1668813028705557007, 1668813026867024573) into pairs
[2023-06-22 19:05:17.855] [warning] [Bundler.cpp:793] frame 1668813028705557007 and 1668813028304456241 visible=0.845315
[2023-06-22 19:05:17.855] [warning] [Bundler.cpp:802] add frame (1668813028705557007, 1668813028304456241) into pairs
[2023-06-22 19:05:17.855] [warning] [Bundler.cpp:793] frame 1668813028705557007 and 1668813028571340409 visible=0.873254
[2023-06-22 19:05:17.855] [warning] [Bundler.cpp:802] add frame (1668813028705557007, 1668813028571340409) into pairs
[bundlesdf.py] frame_pairs: 4
[loftr_wrapper.py] image0: torch.Size([4, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20000934600830078 0.9887229800224304
[loftr_wrapper.py] pair_ids (1625,)
[loftr_wrapper.py] corres: (1625, 5)
[2023-06-22 19:05:18.012] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=4
[2023-06-22 19:05:18.023] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028705557007 1668813025164826994 #inliers=156, #prev 279
[2023-06-22 19:05:18.023] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028705557007 1668813026867024573 #inliers=143, #prev 294
[2023-06-22 19:05:18.023] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028705557007 1668813028304456241 #inliers=173, #prev 284
[2023-06-22 19:05:18.023] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028705557007 1668813028571340409 #inliers=361, #prev 463
#optimizeGPU frames=5, #keyframes=4, #_frames=10
1668813025164826994 1668813026867024573 1668813028304456241 1668813028571340409 1668813028705557007 
[2023-06-22 19:05:18.031] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=2962
global_corres=2962
maxNumResiduals / maxNumberOfImages = 50962 / 5 = 10192
m_maxNumberOfImages*m_maxCorrPerImage = 5 x 1313 = 6565
m_solver->solve Time difference = 10.673[ms]
[2023-06-22 19:05:18.044] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-22 19:05:18.046] [warning] [Bundler.cpp:320] Added frame 1668813028705557007 as keyframe, current #keyframe: 5
[bundlesdf.py] processNewFrame done 1668813028705557007
[bundlesdf.py] 1668813028705557007 prepare data for nerf
[bundlesdf.py] out_dir: /home/mona/BundleSDF/out_dir///1668813028705557007/nerf
[tool.py] compute_scene_bounds_worker start
[tool.py] compute_scene_bounds_worker done
[tool.py] merge pcd
[tool.py] compute_translation_scales done
translation_cvcam=[0.00949587 0.00473047 0.0066598 ], sc_factor=8.091687041886944
[bundlesdf.py] First nerf run, create Runner, latest nerf frame 1668813028705557007
[nerf_runner.py] Octree voxel dilate_radius:1
Process Process-2:
Traceback (most recent call last):
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
    self.run()
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/mona/BundleSDF/bundlesdf.py", line 219, in run_nerf
    nerf = NerfRunner(cfg_nerf,rgbs,depths=depths,masks=masks,normal_maps=normal_maps,occ_masks=occ_masks,poses=poses,K=K,build_octree_pcd=pcd_normalized)
  File "/home/mona/BundleSDF/nerf_runner.py", line 156, in __init__
    self.create_nerf()
  File "/home/mona/BundleSDF/nerf_runner.py", line 208, in create_nerf
    embed_fn, input_ch = get_embedder(self.cfg['multires'], self.cfg, i=self.cfg['i_embed'], octree_m=self.octree_m)
  File "/home/mona/BundleSDF/nerf_helpers.py", line 207, in get_embedder
    from mycuda.torch_ngp_grid_encoder.grid import GridEncoder
  File "/home/mona/BundleSDF/mycuda/torch_ngp_grid_encoder/grid.py", line 23, in <module>
    import gridencoder
ModuleNotFoundError: No module named 'gridencoder'
^CTraceback (most recent call last):
  File "run_custom.py", line 203, in <module>
    run_one_video(video_dir=args.video_dir, out_folder=args.out_folder, use_segmenter=args.use_segmenter, use_gui=args.use_gui)
  File "run_custom.py", line 103, in run_one_video
    tracker.run(color, depth, K, id_str, mask=mask, occ_mask=None, pose_in_model=pose_in_model)
  File "/home/mona/BundleSDF/bundlesdf.py", line 579, in run
    time.sleep(0.01)
KeyboardInterrupt
[2023-06-22 19:05:51.635] [warning] [Bundler.cpp:59] Destructor

Excuse me ,I can't find a file in this project

When I run the run_ho3d.py on Ubuntu terminal, I get the following error.

Traceback (most recent call last):
File "run_ho3d.py", line 10, in
from bundlesdf import *
File "/home/usopp/ccooddee/BundleSDF-master/bundlesdf.py", line 15, in
import my_cpp
ModuleNotFoundError: No module named 'my_cpp'

I apologize for the inconvenience, but I'm unable to find the my_cpp

Increasing batchsize is invalid

Thanks for your great works!
I ran run_custom.py on the milk data. I got perfect meshes, and I found a problem that my gpu memory utilization was low, I increased the batchsize by turning up "N_rand" and "netchunk".
But that didn't work, and my memory-usage maximum was still 6GB+.
I don't know whether my approach was wrong.
Please provide some methods to improve the utilization of gpu memory.
The 2nd question: To speed up convergence, is there an optimal relationship between the values of "n_step", "N_rand", "chunk" and "netchunk" or other setting values?
Looking forward to your answer.
Thanks.

after ransac, frame has too few matches #1

Hi,
I’m trying to run BundleSDF on BEHAVE 30fps dataset. I use run_behave.py script and use config_behave.yml config file.
However, while the object are moving fast, I often encounter the problem that loftr matches are too few after ransac. e.g. sequence Date03_Sub03_boxlarge.2
Is there anything I haven't noticed? Could you please share you hyperparameters of these sequences?
Thanks for your time and consideration.

command stuck inside docker? (py38) root@ard-gpu-01:/home/mona/BundleSDF# python run_custom.py --mode run_video --video_dir /milk/2022-11-18-15-10-24_milk/ --out_folder /home/mona/BundleSDF/out_dir/ --use_segmenter 1 --use_gui 1 --debug_level 2

I don't have a problem with this command outside of docker.

(base) mona@ard-gpu-01:~/BundleSDF$ glxinfo|grep OpenGL
OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) UHD Graphics (TGL GT1)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 22.2.5
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.6 (Compatibility Profile) Mesa 22.2.5
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 22.2.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:

However, inside your docker I have problem with it. Also, not sure if this command is making any progress or is stuck. Any idea? btop shows two instances of it is running and nvtop shows ~2-6G GPU memory is being used.

(py38) root@ard-gpu-01:/home/mona/BundleSDF# python run_custom.py --mode run_video --video_dir /milk/2022-11-18-15-10-24_milk/ --out_folder  /home/mona/BundleSDF/out_dir/ --use_segmenter 1 --use_gui 1 --debug_level 2
[2023-06-22 12:06:21.351] [warning] [Bundler.cpp:49] Connected to nerf_port 9999
[2023-06-22 12:06:21.351] [warning] [FeatureManager.cpp:2084] Connected to port 5555
default_cfg {'backbone_type': 'ResNetFPN', 'resolution': (8, 2), 'fine_window_size': 5, 'fine_concat_coarse_feat': True, 'resnetfpn': {'initial_dim': 128, 'block_dims': [128, 196, 256]}, 'coarse': {'d_model': 256, 'd_ffn': 256, 'nhead': 8, 'layer_names': ['self', 'cross', 'self', 'cross', 'self', 'cross', 'self', 'cross'], 'attention': 'linear', 'temp_bug_fix': False}, 'match_coarse': {'thr': 0.2, 'border_rm': 2, 'match_type': 'dual_softmax', 'dsmax_temperature': 0.1, 'skh_iters': 3, 'skh_init_bin_score': 1.0, 'skh_prefilter': True, 'train_coarse_percent': 0.4, 'train_pad_num_gt_min': 200}, 'fine': {'d_model': 128, 'd_ffn': 128, 'nhead': 8, 'layer_names': ['self', 'cross'], 'attention': 'linear'}}
GUI started
libGL error: MESA-LOADER: failed to retrieve device information
Glfw Error 65543: GLX: Failed to create context: GLXBadFBConfig
python: /home/runner/work/DearPyGui/DearPyGui/thirdparty/glfw/src/window.c:533: glfwSetWindowPos: Assertion `window != NULL' failed.

Screenshot from 2023-06-22 15-28-12
Screenshot from 2023-06-22 15-28-28

I only see the following created in out_dir

(base) mona@ard-gpu-01:~/BundleSDF$ ls /home/mona/BundleSDF/out_dir/ 
total 16K
drwxrwxr-x 11 mona mona 4.0K Jun 22 15:06 ..
-rw-r--r--  1 root root 2.5K Jun 22 15:06 config_bundletrack.yml
drwxr-xr-x  2 root root 4.0K Jun 22 15:06 .
-rw-r--r--  1 root root 2.7K Jun 22 15:06 config_nerf.yml

near real-time??

Hi @wenbowen123
I am trying to fill in the gap for my own understanding.
So, your method works for 6 DoF pose of novel objects (and novel classes) that were not in training and are only shown in inference time to the model.

However, what I don't understand why is it taking ~3 hr ish as reported by other users to just run the demo for the milk?

Also, in the paper you mention we would only need the segmentation mask for the first frame of the video, however, in the milk input data from Google Drive, the entire video has seg mask.

Any update is really great specially about novel objects of novel class 6 DoF

image

Problems with running custom sequence

Thanks for the great work!

I have tried BundleSDF with the following sequence from the BEHAVE dataset:
https://mega.nz/file/sXUg0YBT#OVmRQHPhMvpr6FdNenef2VhrtinDZxUWj0bjzAN9VSQ

I have formatted everything as indicated in the readme, as well as rescaled the images to 480x640 resolution (the pipeline would otherwise crash) and corrected the intrinsics matrix. I tested the sequence on BundleTrack and it works fine there (although with poor results).

The problem seems to be in the generation of the pointcloud from depth, as the saved pointcloud in the results folder is almost empty (apart from a few sporadic points). The demo milk sequence instead works fine. What am I doing wrong?

(the pipeline was tested on a RTX 2080ti GPU if that can be relevant)

No module named Error "vos_wrapper"

I get a vos_wrapper error when running run_ho3d.py.
Details are as follows.

Traceback (most recent call last): File "/content/drive/MyDrive/nvidia/BundleSDF-master/run_ho3d.py", line 16, in <module> from vos_wrapper import XmemRunner ModuleNotFoundError: No module named 'vos_wrapper'

The environment is Google Colaboratory.
Not use Docker

error run python run_custom.py --mode get_mesh??

After I execute the first command
python run_custom.py --mode run_video --video_dir /home/bowen/debug/2022-11-18-15-10-24_milk --out_folder /home/bowen/debug/bundlesdf_2022-11-18-15-10-24_milk --use_segmenter 1 --use_gui 0 --debug_level 2
I execute the second
python run_custom.py --mode get_mesh --video_dir /home/bowen/debug/2022-11-18-15-10-24_milk --out_folder /home/bowen/debug/bundlesdf_2022-11-18-15-10-24_milk

and i got this:
image

Looks like I'm missing something~

thanks

File "/opt/conda/envs/py38/lib/python3.8/site-packages/pyglet/canvas/xlib.py", line 88, in __init__ raise NoSuchDisplayException(f'Cannot connect to "{name}"') pyglet.canvas.xlib.NoSuchDisplayException: Cannot connect to "None"

can you please guide how to fix? I tried a bunch of things but none worked. running this on a remote server that doesn't have x forwarding enabled for ssh

(py38) root@bundlesdf:/home/azureuser/BundleSDF# time python run_custom.py --mode run_video --video_dir /home/azureuser/BundleSDF/milk/2022-11-18-15-10-24_milk  --out_folder /home/azureuser/BundleSDF/milk/out --use_segmenter 1 --use_gui 0 --debug_level 2

level 9, resolution: 85                                                                                                                                                                                   [36/1994]
level 10, resolution: 102                                                                                                                                                                                          
level 11, resolution: 123                                                                                                                                                                                          
level 12, resolution: 148                                                                                                                                                                                          
level 13, resolution: 177                                                                                                                                                                                          
level 14, resolution: 213                                                                                                                                                                                          
level 15, resolution: 256                                                                                                                                                                                          
GridEncoder: input_dim=3 n_levels=16 level_dim=2 resolution=16 -> 256 per_level_scale=1.2030 params=(20411696, 2) gridtype=hash align_corners=False                                                                
sc_factor 5.769981690399205                                                                                                                                                                                        
translation [0.01229075 0.00798761 0.01045103]                                                                                                                                                                     
[nerf_runner.py] denoise cloud                                                                                                                                                                                     
[nerf_runner.py] Denoising rays based on octree cloud                                                                                                                                                              
[nerf_runner.py] bad_mask#=83044                                                                                                                                                                                   
rays torch.Size([5595153, 12])                                                                                                                                                                                     
Start training                                                                                                                                                                                                     
[nerf_runner.py] train progress 0/2001                                                                                                                                                                             
[nerf_runner.py] Iter: 0, valid_samples: 655308/655360, valid_rays: 2048/2048, loss: 13.8135347, rgb_loss: 11.6740246, rgb0_loss: 0.0000000, fs_rgb_loss: 0.0000000, depth_loss: 0.0000000, depth_loss0: 0.0000000,
 fs_loss: 0.0766878, point_cloud_loss: 0.0000000, point_cloud_normal_loss: 0.0000000, sdf_loss: 1.9579263, eikonal_loss: 0.0000000, variation_loss: 0.0000000, truncation(meter): 0.0100000, pose_reg: 0.0000000, r
eg_features: 0.1048958,                                                                                                                                                                                            
                                                                                                                                                                                                                   
[nerf_runner.py] train progress 200/2001                                                                                                                                                                           
[nerf_runner.py] train progress 400/2001                                                                                                                                                                           
[nerf_runner.py] train progress 600/2001                                                                                                                                                                           
[nerf_runner.py] train progress 800/2001                                                                                                                                                                           
[nerf_runner.py] train progress 1000/2001                                                                                                                                                                          
[nerf_runner.py] train progress 1200/2001                                                                                                                                                                          
[nerf_runner.py] train progress 1400/2001                                                                                                                                                                          
[nerf_runner.py] train progress 1600/2001                                                                                                                                                                          
[nerf_runner.py] train progress 1800/2001                                                                                                                                                                          
[nerf_runner.py] train progress 2000/2001                                                                                                                                                                          
cp: cannot stat '/home/azureuser/BundleSDF/milk/out//nerf_with_bundletrack_online/image_step_*.png': No such file or directory                                                                                     
[nerf_runner.py] query_pts:torch.Size([5177717, 3]), valid:1260221                                                                                                                                                 
[nerf_runner.py] Running Marching Cubes                                                                                                                                                                            
[nerf_runner.py] done V:(81913, 3), F:(163188, 3)                                                                                                                                                                  
[acceleratesupport.py] OpenGL_accelerate module loaded                                                                                                                                                             
[arraydatatype.py] Using accelerated ArrayDatatype                                                                                                                                                                 
Traceback (most recent call last):                                                                                                                                                                                 
  File "run_custom.py", line 205, in <module>
    run_one_video(video_dir=args.video_dir, out_folder=args.out_folder, use_segmenter=args.use_segmenter, use_gui=args.use_gui)
  File "run_custom.py", line 109, in run_one_video
    run_one_video_global_nerf(out_folder=out_folder) 
  File "run_custom.py", line 154, in run_one_video_global_nerf
    tracker.run_global_nerf(reader=reader, get_texture=True, tex_res=512)
  File "/home/azureuser/BundleSDF/bundlesdf.py", line 763, in run_global_nerf
    mesh = nerf.mesh_texture_from_train_images(mesh, rgbs_raw=rgbs_raw, train_texture=False, tex_res=tex_res)
  File "/home/azureuser/BundleSDF/nerf_runner.py", line 1490, in mesh_texture_from_train_images
    renderer = ModelRendererOffscreen([], cam_K=self.K, H=self.H, W=self.W, zfar=self.cfg['far']*self.cfg['sc_factor'])
  File "/home/azureuser/BundleSDF/offscreen_renderer.py", line 58, in __init__
    self.r = pyrender.OffscreenRenderer(self.W, self.H)  #!NOTE version>0.1.32 not work https://github.com/mmatl/pyrender/issues/85
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/pyrender/offscreen.py", line 31, in __init__
    self._create()
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/pyrender/offscreen.py", line 149, in _create
    self._platform.init_context()
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/pyrender/platforms/pyglet_platform.py", line 50, in init_context
    self._window = pyglet.window.Window(config=conf, visible=False,
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/pyglet/window/xlib/__init__.py", line 133, in __init__
    super(XlibWindow, self).__init__(*args, **kwargs)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/pyglet/window/__init__.py", line 513, in __init__
    display = pyglet.canvas.get_display()
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/pyglet/canvas/__init__.py", line 59, in get_display
    return Display()
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/pyglet/canvas/xlib.py", line 88, in __init__
    raise NoSuchDisplayException(f'Cannot connect to "{name}"')
pyglet.canvas.xlib.NoSuchDisplayException: Cannot connect to "None"
Process Process-4:
Traceback (most recent call last):
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
    self.run()
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/azureuser/BundleSDF/bundlesdf.py", line 89, in run_nerf
    join = p_dict['join']
  File "<string>", line 2, in __getitem__
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/managers.py", line 835, in _callmethod
    kind, result = conn.recv()
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/connection.py", line 250, in recv
    buf = self._recv_bytes()
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/connection.py", line 414, in _recv_bytes
    buf = self._recv(4)
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/connection.py", line 379, in _recv
    chunk = read(handle, remaining)
ConnectionResetError: [Errno 104] Connection reset by peer
[2023-06-27 14:33:58.648] [warning] [Bundler.cpp:59] Destructor
[2023-06-27 14:33:58.650] [warning] [Bundler.cpp:59] Destructor

real    13m41.729s
user    21m32.569s
sys     1m35.842s

mesh.vertices = mesh.vertices/sc_factor - np.array(translation).reshape(1,3) -- AttributeError: 'NoneType' object has no attribute 'vertices'

Hi Bowen, could you please help with this error. I changed number of train images to 30.

(py38) root@ard-gpu-01:/home/mona/BundleSDF# time python run_custom.py --mode run_video --video_dir /milk/2022-11-18-15-10-24_milk/ --out_folder  /home/mona/BundleSDF/out_dir/ --use_segmenter 1 --use_gui 0 --debug_level 2



[2023-06-26 05:58:02.612] [warning] [Bundler.cpp:67] forgetting frame 1668813028105117130
[2023-06-26 05:58:02.612] [warning] [FeatureManager.cpp:469] forgetting frame 1668813028105117130
[bundlesdf.py] exceed window size, forget frame 1668813028105117130
[2023-06-26 05:58:02.612] [warning] [Bundler.cpp:435] total keyframes=2, want to select 10
[2023-06-26 05:58:02.613] [warning] [Bundler.cpp:793] frame 1668813028304456241 and 1668813025164826994 visible=0.927277
[2023-06-26 05:58:02.613] [warning] [Bundler.cpp:802] add frame (1668813028304456241, 1668813025164826994) into pairs
[2023-06-26 05:58:02.613] [warning] [Bundler.cpp:793] frame 1668813028304456241 and 1668813026867024573 visible=0.92396
[2023-06-26 05:58:02.613] [warning] [Bundler.cpp:802] add frame (1668813028304456241, 1668813026867024573) into pairs
[bundlesdf.py] frame_pairs: 2
[loftr_wrapper.py] image0: torch.Size([2, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20015637576580048 0.9868669509887695
[loftr_wrapper.py] pair_ids (1232,)
[loftr_wrapper.py] corres: (1232, 5)
[2023-06-26 05:58:02.713] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=2
[2023-06-26 05:58:02.714] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028304456241 1668813025164826994 #inliers=383, #prev 485
[2023-06-26 05:58:02.714] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028304456241 1668813026867024573 #inliers=382, #prev 485
#optimizeGPU frames=3, #keyframes=2, #_frames=8
1668813025164826994 1668813026867024573 1668813028304456241 
[2023-06-26 05:58:02.719] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=1265
global_corres=1265
maxNumResiduals / maxNumberOfImages = 15665 / 3 = 5221
m_maxNumberOfImages*m_maxCorrPerImage = 3 x 883 = 2649
m_solver->solve Time difference = 4.813[ms]
[2023-06-26 05:58:02.726] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-26 05:58:02.726] [warning] [Bundler.cpp:320] Added frame 1668813028304456241 as keyframe, current #keyframe: 3
[bundlesdf.py] processNewFrame done 1668813028304456241
[bundlesdf.py] 1668813028304456241 prepare data for nerf
[bundlesdf.py] rematch_after_nerf: True
[2023-06-26 05:58:02.741] [warning] [Bundler.cpp:961] Welcome saveNewframeResult
[2023-06-26 05:58:02.763] [warning] [Bundler.cpp:1110] saveNewframeResult done
[bundlesdf.py] percentile denoise start
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 1668813028338310452
[bundlesdf.py] process frame 1668813028338310452
[bundlesdf.py] frame_pairs: 1
[loftr_wrapper.py] image0: torch.Size([1, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.2001141607761383 0.9988178610801697
[loftr_wrapper.py] pair_ids (999,)
[loftr_wrapper.py] corres: (999, 5)
[2023-06-26 05:58:02.847] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=1
[2023-06-26 05:58:02.849] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028338310452 1668813028304456241 #inliers=672, #prev 743
[bundlesdf.py] frame 1668813028338310452 pose update before
[[ 0.995 -0.075  0.058 -0.077]
 [ 0.078  0.996 -0.041 -0.084]
 [-0.054  0.045  0.998 -0.422]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:02.851] [warning] [FeatureManager.cpp:1095] procrustesByCorrespondence err per point between 1668813028338310452 and 1668813028304456241: 0.000128869
[bundlesdf.py] frame 1668813028338310452 pose update after
[[ 0.995 -0.086  0.059 -0.076]
 [ 0.089  0.995 -0.041 -0.085]
 [-0.055  0.046  0.997 -0.422]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:02.851] [warning] [Bundler.cpp:435] total keyframes=3, want to select 10
[2023-06-26 05:58:02.851] [warning] [Bundler.cpp:793] frame 1668813028338310452 and 1668813025164826994 visible=0.933657
[2023-06-26 05:58:02.851] [warning] [Bundler.cpp:802] add frame (1668813028338310452, 1668813025164826994) into pairs
[2023-06-26 05:58:02.851] [warning] [Bundler.cpp:793] frame 1668813028338310452 and 1668813026867024573 visible=0.929569
[2023-06-26 05:58:02.851] [warning] [Bundler.cpp:802] add frame (1668813028338310452, 1668813026867024573) into pairs
[bundlesdf.py] frame_pairs: 2
[loftr_wrapper.py] image0: torch.Size([2, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20026452839374542 0.9857454895973206
[loftr_wrapper.py] pair_ids (1291,)
[loftr_wrapper.py] corres: (1291, 5)
[2023-06-26 05:58:02.951] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=2
[2023-06-26 05:58:02.953] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028338310452 1668813025164826994 #inliers=418, #prev 530
[2023-06-26 05:58:02.953] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028338310452 1668813026867024573 #inliers=385, #prev 482
#optimizeGPU frames=4, #keyframes=3, #_frames=9
1668813025164826994 1668813026867024573 1668813028304456241 1668813028338310452 
[2023-06-26 05:58:02.961] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=2740
global_corres=2740
maxNumResiduals / maxNumberOfImages = 31540 / 4 = 7885
m_maxNumberOfImages*m_maxCorrPerImage = 4 x 1475 = 5900
m_solver->solve Time difference = 10.294[ms]
[2023-06-26 05:58:02.974] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-26 05:58:02.974] [warning] [Bundler.cpp:302] frame 1668813028338310452 not selected as keyframe since its rot diff with frame 1668813028304456241 is 0.527861 deg
[bundlesdf.py] processNewFrame done 1668813028338310452
[bundlesdf.py] rematch_after_nerf: True
[2023-06-26 05:58:02.974] [warning] [Bundler.cpp:961] Welcome saveNewframeResult
[2023-06-26 05:58:02.996] [warning] [Bundler.cpp:1110] saveNewframeResult done
[bundlesdf.py] percentile denoise start
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 1668813028368029984
[bundlesdf.py] process frame 1668813028368029984
[bundlesdf.py] frame_pairs: 1
[loftr_wrapper.py] image0: torch.Size([1, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20050561428070068 0.9889634847640991
[loftr_wrapper.py] pair_ids (962,)
[loftr_wrapper.py] corres: (962, 5)
[2023-06-26 05:58:03.079] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=1
[2023-06-26 05:58:03.081] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028368029984 1668813028338310452 #inliers=643, #prev 753
[bundlesdf.py] frame 1668813028368029984 pose update before
[[ 0.995 -0.083  0.062 -0.078]
 [ 0.086  0.995 -0.044 -0.084]
 [-0.058  0.049  0.997 -0.422]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:03.084] [warning] [FeatureManager.cpp:1095] procrustesByCorrespondence err per point between 1668813028368029984 and 1668813028338310452: 0.000123576
[bundlesdf.py] frame 1668813028368029984 pose update after
[[ 0.994 -0.083  0.065 -0.077]
 [ 0.085  0.996 -0.033 -0.089]
 [-0.062  0.039  0.997 -0.422]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:03.085] [warning] [Bundler.cpp:67] forgetting frame 1668813028131446847
[2023-06-26 05:58:03.085] [warning] [FeatureManager.cpp:469] forgetting frame 1668813028131446847
[bundlesdf.py] exceed window size, forget frame 1668813028131446847
[2023-06-26 05:58:03.085] [warning] [Bundler.cpp:435] total keyframes=3, want to select 10
[2023-06-26 05:58:03.085] [warning] [Bundler.cpp:793] frame 1668813028368029984 and 1668813025164826994 visible=0.931693
[2023-06-26 05:58:03.085] [warning] [Bundler.cpp:802] add frame (1668813028368029984, 1668813025164826994) into pairs
[2023-06-26 05:58:03.086] [warning] [Bundler.cpp:793] frame 1668813028368029984 and 1668813026867024573 visible=0.928437
[2023-06-26 05:58:03.086] [warning] [Bundler.cpp:802] add frame (1668813028368029984, 1668813026867024573) into pairs
[2023-06-26 05:58:03.086] [warning] [Bundler.cpp:793] frame 1668813028368029984 and 1668813028304456241 visible=0.890213
[2023-06-26 05:58:03.086] [warning] [Bundler.cpp:802] add frame (1668813028368029984, 1668813028304456241) into pairs
[bundlesdf.py] frame_pairs: 3
[loftr_wrapper.py] image0: torch.Size([3, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20004504919052124 0.9957010746002197
[loftr_wrapper.py] pair_ids (2175,)
[loftr_wrapper.py] corres: (2175, 5)
[2023-06-26 05:58:03.229] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=3
[2023-06-26 05:58:03.234] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028368029984 1668813025164826994 #inliers=395, #prev 507
[2023-06-26 05:58:03.234] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028368029984 1668813026867024573 #inliers=380, #prev 489
[2023-06-26 05:58:03.234] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028368029984 1668813028304456241 #inliers=575, #prev 697
#optimizeGPU frames=4, #keyframes=3, #_frames=9
1668813025164826994 1668813026867024573 1668813028304456241 1668813028368029984 
[2023-06-26 05:58:03.243] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=2615
global_corres=2615
maxNumResiduals / maxNumberOfImages = 31415 / 4 = 7853
m_maxNumberOfImages*m_maxCorrPerImage = 4 x 1350 = 5400
m_solver->solve Time difference = 9.289[ms]
[2023-06-26 05:58:03.255] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-26 05:58:03.256] [warning] [Bundler.cpp:302] frame 1668813028368029984 not selected as keyframe since its rot diff with frame 1668813028304456241 is 0.607807 deg
[bundlesdf.py] processNewFrame done 1668813028368029984
[bundlesdf.py] rematch_after_nerf: True
[2023-06-26 05:58:03.256] [warning] [Bundler.cpp:961] Welcome saveNewframeResult
[2023-06-26 05:58:03.278] [warning] [Bundler.cpp:1110] saveNewframeResult done
[bundlesdf.py] percentile denoise start
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 1668813028402777286
[bundlesdf.py] process frame 1668813028402777286
[bundlesdf.py] frame_pairs: 1
[loftr_wrapper.py] image0: torch.Size([1, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.2002973109483719 0.9984050989151001
[loftr_wrapper.py] pair_ids (1006,)
[loftr_wrapper.py] corres: (1006, 5)
[2023-06-26 05:58:03.357] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=1
[2023-06-26 05:58:03.358] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028402777286 1668813028368029984 #inliers=642, #prev 735
[bundlesdf.py] frame 1668813028402777286 pose update before
[[ 0.995 -0.079  0.065 -0.078]
 [ 0.081  0.996 -0.034 -0.088]
 [-0.062  0.039  0.997 -0.422]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:03.361] [warning] [FeatureManager.cpp:1095] procrustesByCorrespondence err per point between 1668813028402777286 and 1668813028368029984: 0.000129398
[bundlesdf.py] frame 1668813028402777286 pose update after
[[ 0.995 -0.086  0.06  -0.075]
 [ 0.089  0.995 -0.046 -0.082]
 [-0.055  0.051  0.997 -0.423]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:03.361] [warning] [Bundler.cpp:67] forgetting frame 1668813028167110952
[2023-06-26 05:58:03.361] [warning] [FeatureManager.cpp:469] forgetting frame 1668813028167110952
[bundlesdf.py] exceed window size, forget frame 1668813028167110952
[2023-06-26 05:58:03.361] [warning] [Bundler.cpp:435] total keyframes=3, want to select 10
[2023-06-26 05:58:03.361] [warning] [Bundler.cpp:793] frame 1668813028402777286 and 1668813025164826994 visible=0.924241
[2023-06-26 05:58:03.361] [warning] [Bundler.cpp:802] add frame (1668813028402777286, 1668813025164826994) into pairs
[2023-06-26 05:58:03.362] [warning] [Bundler.cpp:793] frame 1668813028402777286 and 1668813026867024573 visible=0.919453
[2023-06-26 05:58:03.362] [warning] [Bundler.cpp:802] add frame (1668813028402777286, 1668813026867024573) into pairs
[2023-06-26 05:58:03.362] [warning] [Bundler.cpp:793] frame 1668813028402777286 and 1668813028304456241 visible=0.871056
[2023-06-26 05:58:03.362] [warning] [Bundler.cpp:802] add frame (1668813028402777286, 1668813028304456241) into pairs
[bundlesdf.py] frame_pairs: 3
[loftr_wrapper.py] image0: torch.Size([3, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20019742846488953 0.9955222606658936
[loftr_wrapper.py] pair_ids (2259,)
[loftr_wrapper.py] corres: (2259, 5)
[2023-06-26 05:58:03.508] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=3
[2023-06-26 05:58:03.511] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028402777286 1668813025164826994 #inliers=369, #prev 498
[2023-06-26 05:58:03.511] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028402777286 1668813026867024573 #inliers=426, #prev 539
[2023-06-26 05:58:03.511] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028402777286 1668813028304456241 #inliers=613, #prev 733
#optimizeGPU frames=4, #keyframes=3, #_frames=9
1668813025164826994 1668813026867024573 1668813028304456241 1668813028402777286 
[2023-06-26 05:58:03.520] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=2673
global_corres=2673
maxNumResiduals / maxNumberOfImages = 31473 / 4 = 7868
m_maxNumberOfImages*m_maxCorrPerImage = 4 x 1408 = 5632
m_solver->solve Time difference = 9.057[ms]
[2023-06-26 05:58:03.532] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-26 05:58:03.533] [warning] [Bundler.cpp:302] frame 1668813028402777286 not selected as keyframe since its rot diff with frame 1668813028304456241 is 0.646496 deg
[bundlesdf.py] processNewFrame done 1668813028402777286
[bundlesdf.py] rematch_after_nerf: True
[2023-06-26 05:58:03.533] [warning] [Bundler.cpp:961] Welcome saveNewframeResult
[2023-06-26 05:58:03.555] [warning] [Bundler.cpp:1110] saveNewframeResult done
[bundlesdf.py] percentile denoise start
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 1668813028436692512
[bundlesdf.py] process frame 1668813028436692512
[bundlesdf.py] frame_pairs: 1
[loftr_wrapper.py] image0: torch.Size([1, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20017139613628387 0.9998650550842285
[loftr_wrapper.py] pair_ids (1019,)
[loftr_wrapper.py] corres: (1019, 5)
[2023-06-26 05:58:03.637] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=1
[2023-06-26 05:58:03.638] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028436692512 1668813028402777286 #inliers=657, #prev 752
[bundlesdf.py] frame 1668813028436692512 pose update before
[[ 0.995 -0.086  0.058 -0.074]
 [ 0.089  0.995 -0.046 -0.082]
 [-0.054  0.051  0.997 -0.423]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:03.641] [warning] [FeatureManager.cpp:1095] procrustesByCorrespondence err per point between 1668813028436692512 and 1668813028402777286: 0.000105936
[bundlesdf.py] frame 1668813028436692512 pose update after
[[ 0.994 -0.093  0.059 -0.075]
 [ 0.096  0.994 -0.047 -0.082]
 [-0.054  0.052  0.997 -0.424]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:03.641] [warning] [Bundler.cpp:67] forgetting frame 1668813028197906493
[2023-06-26 05:58:03.641] [warning] [FeatureManager.cpp:469] forgetting frame 1668813028197906493
[bundlesdf.py] exceed window size, forget frame 1668813028197906493
[2023-06-26 05:58:03.641] [warning] [Bundler.cpp:435] total keyframes=3, want to select 10
[2023-06-26 05:58:03.641] [warning] [Bundler.cpp:793] frame 1668813028436692512 and 1668813025164826994 visible=0.924723
[2023-06-26 05:58:03.641] [warning] [Bundler.cpp:802] add frame (1668813028436692512, 1668813025164826994) into pairs
[2023-06-26 05:58:03.642] [warning] [Bundler.cpp:793] frame 1668813028436692512 and 1668813026867024573 visible=0.92191
[2023-06-26 05:58:03.642] [warning] [Bundler.cpp:802] add frame (1668813028436692512, 1668813026867024573) into pairs
[2023-06-26 05:58:03.642] [warning] [Bundler.cpp:793] frame 1668813028436692512 and 1668813028304456241 visible=0.876215
[2023-06-26 05:58:03.642] [warning] [Bundler.cpp:802] add frame (1668813028436692512, 1668813028304456241) into pairs
[bundlesdf.py] frame_pairs: 3
[loftr_wrapper.py] image0: torch.Size([3, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.2000163048505783 0.9990230798721313
[loftr_wrapper.py] pair_ids (2305,)
[loftr_wrapper.py] corres: (2305, 5)
[2023-06-26 05:58:03.787] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=3
[2023-06-26 05:58:03.789] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028436692512 1668813025164826994 #inliers=411, #prev 564
[2023-06-26 05:58:03.789] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028436692512 1668813026867024573 #inliers=376, #prev 517
[2023-06-26 05:58:03.789] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028436692512 1668813028304456241 #inliers=606, #prev 736
#optimizeGPU frames=4, #keyframes=3, #_frames=9
1668813025164826994 1668813026867024573 1668813028304456241 1668813028436692512 
[2023-06-26 05:58:03.798] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=2658
global_corres=2658
maxNumResiduals / maxNumberOfImages = 31458 / 4 = 7864
m_maxNumberOfImages*m_maxCorrPerImage = 4 x 1393 = 5572
m_solver->solve Time difference = 8.477[ms]
[2023-06-26 05:58:03.809] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-26 05:58:03.809] [warning] [Bundler.cpp:302] frame 1668813028436692512 not selected as keyframe since its rot diff with frame 1668813028304456241 is 1.4432 deg
[bundlesdf.py] processNewFrame done 1668813028436692512
[bundlesdf.py] rematch_after_nerf: True
[2023-06-26 05:58:03.810] [warning] [Bundler.cpp:961] Welcome saveNewframeResult
[2023-06-26 05:58:03.832] [warning] [Bundler.cpp:1110] saveNewframeResult done
[bundlesdf.py] percentile denoise start
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 1668813028470606334
[bundlesdf.py] process frame 1668813028470606334
[bundlesdf.py] frame_pairs: 1
[loftr_wrapper.py] image0: torch.Size([1, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20003794133663177 0.996128499507904
[loftr_wrapper.py] pair_ids (1010,)
[loftr_wrapper.py] corres: (1010, 5)
[2023-06-26 05:58:03.916] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=1
[2023-06-26 05:58:03.917] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028470606334 1668813028436692512 #inliers=706, #prev 780
[bundlesdf.py] frame 1668813028470606334 pose update before
[[ 0.993 -0.098  0.063 -0.076]
 [ 0.101  0.994 -0.045 -0.083]
 [-0.058  0.051  0.997 -0.424]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:03.919] [warning] [FeatureManager.cpp:1095] procrustesByCorrespondence err per point between 1668813028470606334 and 1668813028436692512: 0.000109317
[bundlesdf.py] frame 1668813028470606334 pose update after
[[ 0.993 -0.102  0.063 -0.077]
 [ 0.106  0.993 -0.054 -0.078]
 [-0.057  0.06   0.997 -0.425]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:03.919] [warning] [Bundler.cpp:67] forgetting frame 1668813028234864619
[2023-06-26 05:58:03.919] [warning] [FeatureManager.cpp:469] forgetting frame 1668813028234864619
[bundlesdf.py] exceed window size, forget frame 1668813028234864619
[2023-06-26 05:58:03.920] [warning] [Bundler.cpp:435] total keyframes=3, want to select 10
[2023-06-26 05:58:03.920] [warning] [Bundler.cpp:793] frame 1668813028470606334 and 1668813025164826994 visible=0.918705
[2023-06-26 05:58:03.920] [warning] [Bundler.cpp:802] add frame (1668813028470606334, 1668813025164826994) into pairs
[2023-06-26 05:58:03.920] [warning] [Bundler.cpp:793] frame 1668813028470606334 and 1668813026867024573 visible=0.914968
[2023-06-26 05:58:03.920] [warning] [Bundler.cpp:802] add frame (1668813028470606334, 1668813026867024573) into pairs
[2023-06-26 05:58:03.921] [warning] [Bundler.cpp:793] frame 1668813028470606334 and 1668813028304456241 visible=0.868756
[2023-06-26 05:58:03.921] [warning] [Bundler.cpp:802] add frame (1668813028470606334, 1668813028304456241) into pairs
[bundlesdf.py] frame_pairs: 3
[loftr_wrapper.py] image0: torch.Size([3, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.2001725137233734 0.999255895614624
[loftr_wrapper.py] pair_ids (2229,)
[loftr_wrapper.py] corres: (2229, 5)
[2023-06-26 05:58:04.063] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=3
[2023-06-26 05:58:04.067] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028470606334 1668813025164826994 #inliers=396, #prev 524
[2023-06-26 05:58:04.067] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028470606334 1668813026867024573 #inliers=349, #prev 470
[2023-06-26 05:58:04.067] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028470606334 1668813028304456241 #inliers=642, #prev 763
#optimizeGPU frames=4, #keyframes=3, #_frames=9
1668813025164826994 1668813026867024573 1668813028304456241 1668813028470606334 
[2023-06-26 05:58:04.075] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=2652
global_corres=2652
maxNumResiduals / maxNumberOfImages = 31452 / 4 = 7863
m_maxNumberOfImages*m_maxCorrPerImage = 4 x 1407 = 5628
m_solver->solve Time difference = 10.18[ms]
[2023-06-26 05:58:04.088] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-26 05:58:04.089] [warning] [Bundler.cpp:302] frame 1668813028470606334 not selected as keyframe since its rot diff with frame 1668813028304456241 is 1.90331 deg
[bundlesdf.py] processNewFrame done 1668813028470606334
[bundlesdf.py] rematch_after_nerf: True
[2023-06-26 05:58:04.090] [warning] [Bundler.cpp:961] Welcome saveNewframeResult
[2023-06-26 05:58:04.111] [warning] [Bundler.cpp:1110] saveNewframeResult done
[bundlesdf.py] percentile denoise start
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 1668813028507764057
[bundlesdf.py] process frame 1668813028507764057
[bundlesdf.py] frame_pairs: 1
[loftr_wrapper.py] image0: torch.Size([1, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.2001977413892746 0.9986804723739624
[loftr_wrapper.py] pair_ids (937,)
[loftr_wrapper.py] corres: (937, 5)
[2023-06-26 05:58:04.192] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=1
[2023-06-26 05:58:04.193] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028507764057 1668813028470606334 #inliers=599, #prev 701
[bundlesdf.py] frame 1668813028507764057 pose update before
[[ 0.992 -0.103  0.066 -0.078]
 [ 0.107  0.993 -0.054 -0.078]
 [-0.06   0.061  0.996 -0.425]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:04.195] [warning] [FeatureManager.cpp:1095] procrustesByCorrespondence err per point between 1668813028507764057 and 1668813028470606334: 0.000133336
[bundlesdf.py] frame 1668813028507764057 pose update after
[[ 0.991 -0.113  0.076 -0.083]
 [ 0.119  0.99  -0.078 -0.07 ]
 [-0.066  0.086  0.994 -0.425]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:04.195] [warning] [Bundler.cpp:67] forgetting frame 1668813028266074031
[2023-06-26 05:58:04.195] [warning] [FeatureManager.cpp:469] forgetting frame 1668813028266074031
[bundlesdf.py] exceed window size, forget frame 1668813028266074031
[2023-06-26 05:58:04.196] [warning] [Bundler.cpp:435] total keyframes=3, want to select 10
[2023-06-26 05:58:04.196] [warning] [Bundler.cpp:793] frame 1668813028507764057 and 1668813025164826994 visible=0.911014
[2023-06-26 05:58:04.196] [warning] [Bundler.cpp:802] add frame (1668813028507764057, 1668813025164826994) into pairs
[2023-06-26 05:58:04.196] [warning] [Bundler.cpp:793] frame 1668813028507764057 and 1668813026867024573 visible=0.90726
[2023-06-26 05:58:04.196] [warning] [Bundler.cpp:802] add frame (1668813028507764057, 1668813026867024573) into pairs
[2023-06-26 05:58:04.197] [warning] [Bundler.cpp:793] frame 1668813028507764057 and 1668813028304456241 visible=0.860677
[2023-06-26 05:58:04.197] [warning] [Bundler.cpp:802] add frame (1668813028507764057, 1668813028304456241) into pairs
[bundlesdf.py] frame_pairs: 3
[loftr_wrapper.py] image0: torch.Size([3, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20041555166244507 0.9838345050811768
[loftr_wrapper.py] pair_ids (1944,)
[loftr_wrapper.py] corres: (1944, 5)
[2023-06-26 05:58:04.336] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=3
[2023-06-26 05:58:04.340] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028507764057 1668813025164826994 #inliers=354, #prev 480
[2023-06-26 05:58:04.340] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028507764057 1668813026867024573 #inliers=317, #prev 471
[2023-06-26 05:58:04.341] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028507764057 1668813028304456241 #inliers=491, #prev 600
#optimizeGPU frames=4, #keyframes=3, #_frames=9
1668813025164826994 1668813026867024573 1668813028304456241 1668813028507764057 
[2023-06-26 05:58:04.348] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=2427
global_corres=2427
maxNumResiduals / maxNumberOfImages = 31227 / 4 = 7806
m_maxNumberOfImages*m_maxCorrPerImage = 4 x 1256 = 5024
m_solver->solve Time difference = 8.922[ms]
[2023-06-26 05:58:04.360] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-26 05:58:04.360] [warning] [Bundler.cpp:302] frame 1668813028507764057 not selected as keyframe since its rot diff with frame 1668813028304456241 is 3.37812 deg
[bundlesdf.py] processNewFrame done 1668813028507764057
[bundlesdf.py] rematch_after_nerf: True
[2023-06-26 05:58:04.361] [warning] [Bundler.cpp:961] Welcome saveNewframeResult
[2023-06-26 05:58:04.383] [warning] [Bundler.cpp:1110] saveNewframeResult done
[bundlesdf.py] percentile denoise start
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 1668813028535412549
[bundlesdf.py] process frame 1668813028535412549
[bundlesdf.py] frame_pairs: 1
[loftr_wrapper.py] image0: torch.Size([1, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20026157796382904 0.9952811002731323
[loftr_wrapper.py] pair_ids (906,)
[loftr_wrapper.py] corres: (906, 5)
[2023-06-26 05:58:04.461] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=1
[2023-06-26 05:58:04.462] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028535412549 1668813028507764057 #inliers=563, #prev 661
[bundlesdf.py] frame 1668813028535412549 pose update before
[[ 0.99  -0.115  0.079 -0.084]
 [ 0.121  0.99  -0.078 -0.07 ]
 [-0.07   0.087  0.994 -0.425]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:04.464] [warning] [FeatureManager.cpp:1095] procrustesByCorrespondence err per point between 1668813028535412549 and 1668813028507764057: 0.000132263
[bundlesdf.py] frame 1668813028535412549 pose update after
[[ 0.989 -0.12   0.084 -0.088]
 [ 0.125  0.99  -0.066 -0.076]
 [-0.075  0.076  0.994 -0.425]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:04.464] [warning] [Bundler.cpp:67] forgetting frame 1668813028338310452
[2023-06-26 05:58:04.464] [warning] [FeatureManager.cpp:469] forgetting frame 1668813028338310452
[bundlesdf.py] exceed window size, forget frame 1668813028338310452
[2023-06-26 05:58:04.465] [warning] [Bundler.cpp:435] total keyframes=3, want to select 10
[2023-06-26 05:58:04.465] [warning] [Bundler.cpp:793] frame 1668813028535412549 and 1668813025164826994 visible=0.907409
[2023-06-26 05:58:04.465] [warning] [Bundler.cpp:802] add frame (1668813028535412549, 1668813025164826994) into pairs
[2023-06-26 05:58:04.465] [warning] [Bundler.cpp:793] frame 1668813028535412549 and 1668813026867024573 visible=0.90447
[2023-06-26 05:58:04.465] [warning] [Bundler.cpp:802] add frame (1668813028535412549, 1668813026867024573) into pairs
[2023-06-26 05:58:04.466] [warning] [Bundler.cpp:793] frame 1668813028535412549 and 1668813028304456241 visible=0.871185
[2023-06-26 05:58:04.466] [warning] [Bundler.cpp:802] add frame (1668813028535412549, 1668813028304456241) into pairs
[bundlesdf.py] frame_pairs: 3
[loftr_wrapper.py] image0: torch.Size([3, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.2001340240240097 0.994535505771637
[loftr_wrapper.py] pair_ids (1786,)
[loftr_wrapper.py] corres: (1786, 5)
[2023-06-26 05:58:04.602] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=3
[2023-06-26 05:58:04.607] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028535412549 1668813025164826994 #inliers=307, #prev 437
[2023-06-26 05:58:04.607] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028535412549 1668813026867024573 #inliers=302, #prev 456
[2023-06-26 05:58:04.607] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028535412549 1668813028304456241 #inliers=416, #prev 536
#optimizeGPU frames=4, #keyframes=3, #_frames=9
1668813025164826994 1668813026867024573 1668813028304456241 1668813028535412549 
[2023-06-26 05:58:04.614] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=2290
global_corres=2290
maxNumResiduals / maxNumberOfImages = 31090 / 4 = 7772
m_maxNumberOfImages*m_maxCorrPerImage = 4 x 1190 = 4760
m_solver->solve Time difference = 7.642[ms]
[2023-06-26 05:58:04.625] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-26 05:58:04.625] [warning] [Bundler.cpp:302] frame 1668813028535412549 not selected as keyframe since its rot diff with frame 1668813028304456241 is 3.70338 deg
[bundlesdf.py] processNewFrame done 1668813028535412549
[bundlesdf.py] rematch_after_nerf: True
[2023-06-26 05:58:04.626] [warning] [Bundler.cpp:961] Welcome saveNewframeResult
[2023-06-26 05:58:04.647] [warning] [Bundler.cpp:1110] saveNewframeResult done
[bundlesdf.py] percentile denoise start
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 1668813028571340409
[bundlesdf.py] process frame 1668813028571340409
[bundlesdf.py] frame_pairs: 1
[loftr_wrapper.py] image0: torch.Size([1, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20032481849193573 0.9984725117683411
[loftr_wrapper.py] pair_ids (838,)
[loftr_wrapper.py] corres: (838, 5)
[2023-06-26 05:58:04.726] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=1
[2023-06-26 05:58:04.727] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028571340409 1668813028535412549 #inliers=536, #prev 615
[bundlesdf.py] frame 1668813028571340409 pose update before
[[ 0.988 -0.124  0.088 -0.089]
 [ 0.13   0.989 -0.069 -0.075]
 [-0.078  0.079  0.994 -0.425]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:04.729] [warning] [FeatureManager.cpp:1095] procrustesByCorrespondence err per point between 1668813028571340409 and 1668813028535412549: 0.00015808
[bundlesdf.py] frame 1668813028571340409 pose update after
[[ 0.985 -0.139  0.098 -0.096]
 [ 0.146  0.987 -0.068 -0.075]
 [-0.088  0.081  0.993 -0.424]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:04.729] [warning] [Bundler.cpp:67] forgetting frame 1668813028368029984
[2023-06-26 05:58:04.729] [warning] [FeatureManager.cpp:469] forgetting frame 1668813028368029984
[bundlesdf.py] exceed window size, forget frame 1668813028368029984
[2023-06-26 05:58:04.730] [warning] [Bundler.cpp:435] total keyframes=3, want to select 10
[2023-06-26 05:58:04.730] [warning] [Bundler.cpp:793] frame 1668813028571340409 and 1668813025164826994 visible=0.894442
[2023-06-26 05:58:04.730] [warning] [Bundler.cpp:802] add frame (1668813028571340409, 1668813025164826994) into pairs
[2023-06-26 05:58:04.730] [warning] [Bundler.cpp:793] frame 1668813028571340409 and 1668813026867024573 visible=0.888238
[2023-06-26 05:58:04.730] [warning] [Bundler.cpp:802] add frame (1668813028571340409, 1668813026867024573) into pairs
[2023-06-26 05:58:04.731] [warning] [Bundler.cpp:793] frame 1668813028571340409 and 1668813028304456241 visible=0.862904
[2023-06-26 05:58:04.731] [warning] [Bundler.cpp:802] add frame (1668813028571340409, 1668813028304456241) into pairs
[bundlesdf.py] frame_pairs: 3
[loftr_wrapper.py] image0: torch.Size([3, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20018917322158813 0.9895710945129395
[loftr_wrapper.py] pair_ids (1630,)
[loftr_wrapper.py] corres: (1630, 5)
[2023-06-26 05:58:04.865] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=3
[2023-06-26 05:58:04.871] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028571340409 1668813025164826994 #inliers=289, #prev 438
[2023-06-26 05:58:04.871] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028571340409 1668813026867024573 #inliers=279, #prev 438
[2023-06-26 05:58:04.871] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028571340409 1668813028304456241 #inliers=323, #prev 432
#optimizeGPU frames=4, #keyframes=3, #_frames=9
1668813025164826994 1668813026867024573 1668813028304456241 1668813028571340409 
[2023-06-26 05:58:04.877] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=2156
global_corres=2156
maxNumResiduals / maxNumberOfImages = 30956 / 4 = 7739
m_maxNumberOfImages*m_maxCorrPerImage = 4 x 1172 = 4688
m_solver->solve Time difference = 7.713[ms]
[2023-06-26 05:58:04.888] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-26 05:58:04.889] [warning] [Bundler.cpp:320] Added frame 1668813028571340409 as keyframe, current #keyframe: 4
[bundlesdf.py] processNewFrame done 1668813028571340409
[bundlesdf.py] 1668813028571340409 prepare data for nerf
[bundlesdf.py] rematch_after_nerf: True
[2023-06-26 05:58:04.895] [warning] [Bundler.cpp:961] Welcome saveNewframeResult
[2023-06-26 05:58:04.917] [warning] [Bundler.cpp:1110] saveNewframeResult done
[bundlesdf.py] percentile denoise start
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 1668813028603309139
[bundlesdf.py] process frame 1668813028603309139
[bundlesdf.py] frame_pairs: 1
[loftr_wrapper.py] image0: torch.Size([1, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20006100833415985 0.9935852885246277
[loftr_wrapper.py] pair_ids (857,)
[loftr_wrapper.py] corres: (857, 5)
[2023-06-26 05:58:04.998] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=1
[2023-06-26 05:58:05.000] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028603309139 1668813028571340409 #inliers=570, #prev 656
[bundlesdf.py] frame 1668813028603309139 pose update before
[[ 0.985 -0.138  0.102 -0.097]
 [ 0.146  0.986 -0.076 -0.072]
 [-0.09   0.09   0.992 -0.424]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:05.002] [warning] [FeatureManager.cpp:1095] procrustesByCorrespondence err per point between 1668813028603309139 and 1668813028571340409: 0.000151598
[bundlesdf.py] frame 1668813028603309139 pose update after
[[ 0.982 -0.152  0.109 -0.103]
 [ 0.161  0.984 -0.078 -0.071]
 [-0.095  0.095  0.991 -0.424]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:05.002] [warning] [Bundler.cpp:435] total keyframes=4, want to select 10
[2023-06-26 05:58:05.002] [warning] [Bundler.cpp:793] frame 1668813028603309139 and 1668813025164826994 visible=0.88973
[2023-06-26 05:58:05.002] [warning] [Bundler.cpp:802] add frame (1668813028603309139, 1668813025164826994) into pairs
[2023-06-26 05:58:05.003] [warning] [Bundler.cpp:793] frame 1668813028603309139 and 1668813026867024573 visible=0.882498
[2023-06-26 05:58:05.003] [warning] [Bundler.cpp:802] add frame (1668813028603309139, 1668813026867024573) into pairs
[2023-06-26 05:58:05.003] [warning] [Bundler.cpp:793] frame 1668813028603309139 and 1668813028304456241 visible=0.843614
[2023-06-26 05:58:05.003] [warning] [Bundler.cpp:802] add frame (1668813028603309139, 1668813028304456241) into pairs
[bundlesdf.py] frame_pairs: 3
[loftr_wrapper.py] image0: torch.Size([3, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20037215948104858 0.9571887850761414
[loftr_wrapper.py] pair_ids (1197,)
[loftr_wrapper.py] corres: (1197, 5)
[2023-06-26 05:58:05.133] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=3
[2023-06-26 05:58:05.139] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028603309139 1668813025164826994 #inliers=181, #prev 314
[2023-06-26 05:58:05.139] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028603309139 1668813026867024573 #inliers=192, #prev 344
[2023-06-26 05:58:05.139] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028603309139 1668813028304456241 #inliers=204, #prev 318
#optimizeGPU frames=5, #keyframes=4, #_frames=10
1668813025164826994 1668813026867024573 1668813028304456241 1668813028571340409 1668813028603309139 
[2023-06-26 05:58:05.147] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=3303
global_corres=3303
maxNumResiduals / maxNumberOfImages = 51303 / 5 = 10260
m_maxNumberOfImages*m_maxCorrPerImage = 5 x 1461 = 7305
m_solver->solve Time difference = 11.232[ms]
[2023-06-26 05:58:05.162] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-26 05:58:05.162] [warning] [Bundler.cpp:302] frame 1668813028603309139 not selected as keyframe since its rot diff with frame 1668813028571340409 is 1.12466 deg
[bundlesdf.py] processNewFrame done 1668813028603309139
[bundlesdf.py] rematch_after_nerf: True
[2023-06-26 05:58:05.163] [warning] [Bundler.cpp:961] Welcome saveNewframeResult
[2023-06-26 05:58:05.184] [warning] [Bundler.cpp:1110] saveNewframeResult done
[bundlesdf.py] percentile denoise start
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 1668813028640607722
[bundlesdf.py] process frame 1668813028640607722
[bundlesdf.py] frame_pairs: 1
[loftr_wrapper.py] image0: torch.Size([1, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20038504898548126 0.995787501335144
[loftr_wrapper.py] pair_ids (883,)
[loftr_wrapper.py] corres: (883, 5)
[2023-06-26 05:58:05.270] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=1
[2023-06-26 05:58:05.271] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028640607722 1668813028603309139 #inliers=494, #prev 630
[bundlesdf.py] frame 1668813028640607722 pose update before
[[ 0.982 -0.153  0.113 -0.105]
 [ 0.163  0.983 -0.083 -0.069]
 [-0.099  0.1    0.99  -0.423]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:05.273] [warning] [FeatureManager.cpp:1095] procrustesByCorrespondence err per point between 1668813028640607722 and 1668813028603309139: 0.000148338
[bundlesdf.py] frame 1668813028640607722 pose update after
[[ 0.976 -0.171  0.133 -0.116]
 [ 0.181  0.981 -0.065 -0.076]
 [-0.12   0.088  0.989 -0.421]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:05.273] [warning] [Bundler.cpp:67] forgetting frame 1668813028402777286
[2023-06-26 05:58:05.273] [warning] [FeatureManager.cpp:469] forgetting frame 1668813028402777286
[bundlesdf.py] exceed window size, forget frame 1668813028402777286
[2023-06-26 05:58:05.273] [warning] [Bundler.cpp:435] total keyframes=4, want to select 10
[2023-06-26 05:58:05.274] [warning] [Bundler.cpp:793] frame 1668813028640607722 and 1668813025164826994 visible=0.894387
[2023-06-26 05:58:05.274] [warning] [Bundler.cpp:802] add frame (1668813028640607722, 1668813025164826994) into pairs
[2023-06-26 05:58:05.274] [warning] [Bundler.cpp:793] frame 1668813028640607722 and 1668813026867024573 visible=0.886183
[2023-06-26 05:58:05.274] [warning] [Bundler.cpp:802] add frame (1668813028640607722, 1668813026867024573) into pairs
[2023-06-26 05:58:05.274] [warning] [Bundler.cpp:793] frame 1668813028640607722 and 1668813028304456241 visible=0.861485
[2023-06-26 05:58:05.274] [warning] [Bundler.cpp:802] add frame (1668813028640607722, 1668813028304456241) into pairs
[2023-06-26 05:58:05.274] [warning] [Bundler.cpp:793] frame 1668813028640607722 and 1668813028571340409 visible=0.878497
[2023-06-26 05:58:05.275] [warning] [Bundler.cpp:802] add frame (1668813028640607722, 1668813028571340409) into pairs
[bundlesdf.py] frame_pairs: 4
[loftr_wrapper.py] image0: torch.Size([4, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20000247657299042 0.9954982995986938
[loftr_wrapper.py] pair_ids (2037,)
[loftr_wrapper.py] corres: (2037, 5)
[2023-06-26 05:58:05.443] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=4
[2023-06-26 05:58:05.455] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028640607722 1668813025164826994 #inliers=170, #prev 302
[2023-06-26 05:58:05.456] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028640607722 1668813026867024573 #inliers=171, #prev 332
[2023-06-26 05:58:05.456] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028640607722 1668813028304456241 #inliers=168, #prev 293
[2023-06-26 05:58:05.456] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028640607722 1668813028571340409 #inliers=546, #prev 659
#optimizeGPU frames=5, #keyframes=4, #_frames=10
1668813025164826994 1668813026867024573 1668813028304456241 1668813028571340409 1668813028640607722 
[2023-06-26 05:58:05.465] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=3211
global_corres=3211
maxNumResiduals / maxNumberOfImages = 51211 / 5 = 10242
m_maxNumberOfImages*m_maxCorrPerImage = 5 x 1437 = 7185
m_solver->solve Time difference = 11.81[ms]
[2023-06-26 05:58:05.480] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-26 05:58:05.481] [warning] [Bundler.cpp:302] frame 1668813028640607722 not selected as keyframe since its rot diff with frame 1668813028571340409 is 2.73795 deg
[bundlesdf.py] processNewFrame done 1668813028640607722
[bundlesdf.py] rematch_after_nerf: True
[2023-06-26 05:58:05.481] [warning] [Bundler.cpp:961] Welcome saveNewframeResult
[2023-06-26 05:58:05.503] [warning] [Bundler.cpp:1110] saveNewframeResult done
[bundlesdf.py] percentile denoise start
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 1668813028667811894
[bundlesdf.py] process frame 1668813028667811894
[bundlesdf.py] frame_pairs: 1
[loftr_wrapper.py] image0: torch.Size([1, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20013412833213806 0.9949706196784973
[loftr_wrapper.py] pair_ids (935,)
[loftr_wrapper.py] corres: (935, 5)
[2023-06-26 05:58:05.584] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=1
[2023-06-26 05:58:05.585] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028667811894 1668813028640607722 #inliers=552, #prev 682
[bundlesdf.py] frame 1668813028667811894 pose update before
[[ 0.976 -0.171  0.137 -0.117]
 [ 0.182  0.981 -0.071 -0.074]
 [-0.122  0.094  0.988 -0.421]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:05.587] [warning] [FeatureManager.cpp:1095] procrustesByCorrespondence err per point between 1668813028667811894 and 1668813028640607722: 0.00014521
[bundlesdf.py] frame 1668813028667811894 pose update after
[[ 0.972 -0.177  0.157 -0.128]
 [ 0.19   0.979 -0.071 -0.072]
 [-0.141  0.099  0.985 -0.418]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:05.588] [warning] [Bundler.cpp:67] forgetting frame 1668813028436692512
[2023-06-26 05:58:05.588] [warning] [FeatureManager.cpp:469] forgetting frame 1668813028436692512
[bundlesdf.py] exceed window size, forget frame 1668813028436692512
[2023-06-26 05:58:05.588] [warning] [Bundler.cpp:435] total keyframes=4, want to select 10
[2023-06-26 05:58:05.588] [warning] [Bundler.cpp:793] frame 1668813028667811894 and 1668813025164826994 visible=0.89138
[2023-06-26 05:58:05.588] [warning] [Bundler.cpp:802] add frame (1668813028667811894, 1668813025164826994) into pairs
[2023-06-26 05:58:05.589] [warning] [Bundler.cpp:793] frame 1668813028667811894 and 1668813026867024573 visible=0.880467
[2023-06-26 05:58:05.589] [warning] [Bundler.cpp:802] add frame (1668813028667811894, 1668813026867024573) into pairs
[2023-06-26 05:58:05.589] [warning] [Bundler.cpp:793] frame 1668813028667811894 and 1668813028304456241 visible=0.863842
[2023-06-26 05:58:05.589] [warning] [Bundler.cpp:802] add frame (1668813028667811894, 1668813028304456241) into pairs
[2023-06-26 05:58:05.589] [warning] [Bundler.cpp:793] frame 1668813028667811894 and 1668813028571340409 visible=0.887288
[2023-06-26 05:58:05.589] [warning] [Bundler.cpp:802] add frame (1668813028667811894, 1668813028571340409) into pairs
[bundlesdf.py] frame_pairs: 4
[loftr_wrapper.py] image0: torch.Size([4, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20000247657299042 0.983616054058075
[loftr_wrapper.py] pair_ids (1871,)
[loftr_wrapper.py] corres: (1871, 5)
[2023-06-26 05:58:05.756] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=4
[2023-06-26 05:58:05.767] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028667811894 1668813025164826994 #inliers=181, #prev 314
[2023-06-26 05:58:05.767] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028667811894 1668813026867024573 #inliers=140, #prev 298
[2023-06-26 05:58:05.767] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028667811894 1668813028304456241 #inliers=218, #prev 329
[2023-06-26 05:58:05.767] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028667811894 1668813028571340409 #inliers=414, #prev 528
#optimizeGPU frames=5, #keyframes=4, #_frames=10
1668813025164826994 1668813026867024573 1668813028304456241 1668813028571340409 1668813028667811894 
[2023-06-26 05:58:05.776] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=3109
global_corres=3109
maxNumResiduals / maxNumberOfImages = 51109 / 5 = 10221
m_maxNumberOfImages*m_maxCorrPerImage = 5 x 1353 = 6765
m_solver->solve Time difference = 12.138[ms]
[2023-06-26 05:58:05.792] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-26 05:58:05.792] [warning] [Bundler.cpp:302] frame 1668813028667811894 not selected as keyframe since its rot diff with frame 1668813028571340409 is 4.98248 deg
[bundlesdf.py] processNewFrame done 1668813028667811894
[bundlesdf.py] rematch_after_nerf: True
[2023-06-26 05:58:05.793] [warning] [Bundler.cpp:961] Welcome saveNewframeResult
[2023-06-26 05:58:05.814] [warning] [Bundler.cpp:1110] saveNewframeResult done
[bundlesdf.py] percentile denoise start
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 1668813028705557007
[bundlesdf.py] process frame 1668813028705557007
[bundlesdf.py] frame_pairs: 1
[loftr_wrapper.py] image0: torch.Size([1, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20006240904331207 0.9847671389579773
[loftr_wrapper.py] pair_ids (940,)
[loftr_wrapper.py] corres: (940, 5)
[2023-06-26 05:58:05.896] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=1
[2023-06-26 05:58:05.897] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028705557007 1668813028667811894 #inliers=566, #prev 699
[bundlesdf.py] frame 1668813028705557007 pose update before
[[ 0.968 -0.186  0.17  -0.133]
 [ 0.202  0.976 -0.078 -0.07 ]
 [-0.152  0.11   0.982 -0.416]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:05.899] [warning] [FeatureManager.cpp:1095] procrustesByCorrespondence err per point between 1668813028705557007 and 1668813028667811894: 0.000136082
[bundlesdf.py] frame 1668813028705557007 pose update after
[[ 0.966 -0.19   0.175 -0.136]
 [ 0.207  0.975 -0.083 -0.068]
 [-0.155  0.117  0.981 -0.416]
 [ 0.     0.     0.     1.   ]]
[2023-06-26 05:58:05.899] [warning] [Bundler.cpp:67] forgetting frame 1668813028470606334
[2023-06-26 05:58:05.899] [warning] [FeatureManager.cpp:469] forgetting frame 1668813028470606334
[bundlesdf.py] exceed window size, forget frame 1668813028470606334
[2023-06-26 05:58:05.899] [warning] [Bundler.cpp:435] total keyframes=4, want to select 10
[2023-06-26 05:58:05.899] [warning] [Bundler.cpp:793] frame 1668813028705557007 and 1668813025164826994 visible=0.876661
[2023-06-26 05:58:05.899] [warning] [Bundler.cpp:802] add frame (1668813028705557007, 1668813025164826994) into pairs
[2023-06-26 05:58:05.900] [warning] [Bundler.cpp:793] frame 1668813028705557007 and 1668813026867024573 visible=0.861584
[2023-06-26 05:58:05.900] [warning] [Bundler.cpp:802] add frame (1668813028705557007, 1668813026867024573) into pairs
[2023-06-26 05:58:05.900] [warning] [Bundler.cpp:793] frame 1668813028705557007 and 1668813028304456241 visible=0.844634
[2023-06-26 05:58:05.900] [warning] [Bundler.cpp:802] add frame (1668813028705557007, 1668813028304456241) into pairs
[2023-06-26 05:58:05.900] [warning] [Bundler.cpp:793] frame 1668813028705557007 and 1668813028571340409 visible=0.87385
[2023-06-26 05:58:05.900] [warning] [Bundler.cpp:802] add frame (1668813028705557007, 1668813028571340409) into pairs
[bundlesdf.py] frame_pairs: 4
[loftr_wrapper.py] image0: torch.Size([4, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20003856718540192 0.9896245002746582
[loftr_wrapper.py] pair_ids (1609,)
[loftr_wrapper.py] corres: (1609, 5)
[2023-06-26 05:58:06.063] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=4
[2023-06-26 05:58:06.073] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028705557007 1668813025164826994 #inliers=153, #prev 282
[2023-06-26 05:58:06.073] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028705557007 1668813026867024573 #inliers=134, #prev 283
[2023-06-26 05:58:06.073] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028705557007 1668813028304456241 #inliers=176, #prev 277
[2023-06-26 05:58:06.073] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028705557007 1668813028571340409 #inliers=351, #prev 453
#optimizeGPU frames=5, #keyframes=4, #_frames=10
1668813025164826994 1668813026867024573 1668813028304456241 1668813028571340409 1668813028705557007 
[2023-06-26 05:58:06.081] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=2970
global_corres=2970
maxNumResiduals / maxNumberOfImages = 50970 / 5 = 10194
m_maxNumberOfImages*m_maxCorrPerImage = 5 x 1325 = 6625
m_solver->solve Time difference = 10.914[ms]
[2023-06-26 05:58:06.095] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-26 05:58:06.096] [warning] [Bundler.cpp:320] Added frame 1668813028705557007 as keyframe, current #keyframe: 5
[bundlesdf.py] processNewFrame done 1668813028705557007
[bundlesdf.py] 1668813028705557007 prepare data for nerf
[bundlesdf.py] out_dir: /home/mona/BundleSDF/out_dir///1668813028705557007/nerf
[tool.py] compute_scene_bounds_worker start
[tool.py] compute_scene_bounds_worker done
[tool.py] merge pcd
[tool.py] compute_translation_scales done
translation_cvcam=[0.00912177 0.0047836  0.00677279], sc_factor=8.092820218749138
[bundlesdf.py] First nerf run, create Runner, latest nerf frame 1668813028705557007
[nerf_runner.py] Octree voxel dilate_radius:1
level 0, resolution: 16
level 1, resolution: 32
level 2, resolution: 64
level 3, resolution: 128
GridEncoder: input_dim=3 n_levels=4 level_dim=2 resolution=16 -> 128 per_level_scale=2.0000 params=(2462192, 2) gridtype=hash align_corners=False
sc_factor 5.664974153124396
translation [0.00912177 0.0047836  0.00677279]
[nerf_runner.py] denoise cloud
[nerf_runner.py] Denoising rays based on octree cloud
[nerf_runner.py] bad_mask#=444
rays torch.Size([341220, 12])
[bundlesdf.py] Start training, latest nerf frame 1668813028705557007
[nerf_runner.py] train progress 0/11
[nerf_runner.py] Iter: 0, valid_samples: 393216/393216, valid_rays: 2048/2048, loss: 6.4799452, rgb_loss: 3.2260215, rgb0_loss: 0.0000000, fs_rgb_loss: 0.0000000, depth_loss: 0.0000000, depth_loss0: 0.0000000, fs_loss: 0.5752184, point_cloud_loss: 0.0000000, point_cloud_normal_loss: 0.0000000, sdf_loss: 2.6787052, eikonal_loss: 0.0000000, variation_loss: 0.0000000, truncation(meter): 0.0100000, pose_reg: 0.0000000, reg_features: 0.0000000, 

[nerf_runner.py] train progress 1/11
[nerf_runner.py] train progress 2/11
[nerf_runner.py] train progress 3/11
[nerf_runner.py] train progress 4/11
[nerf_runner.py] train progress 5/11
[nerf_runner.py] train progress 6/11
[nerf_runner.py] train progress 7/11
[nerf_runner.py] train progress 8/11
[nerf_runner.py] train progress 9/11
[nerf_runner.py] train progress 10/11
[bundlesdf.py] Training done, latest nerf frame 1668813028705557007
[bundlesdf.py] Getting mesh
sc_factor is:  5.664974153124396
[nerf_runner.py] query_pts:torch.Size([357911, 3]), valid:36101
[nerf_runner.py] Running Marching Cubes
[nerf_runner.py] ERROR Marching Cubes Surface level must be within volume data range.
Process Process-2:
Traceback (most recent call last):
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
    self.run()
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/mona/BundleSDF/bundlesdf.py", line 235, in run_nerf
    mesh = mesh_to_real_world(mesh, pose_offset=offset, translation=nerf.cfg['translation'], sc_factor=nerf.cfg['sc_factor'])
  File "/home/mona/BundleSDF/Utils.py", line 512, in mesh_to_real_world
    mesh.vertices = mesh.vertices/sc_factor - np.array(translation).reshape(1,3)
AttributeError: 'NoneType' object has no attribute 'vertices'

V100 GPU -- RuntimeError: Unable to find a valid cuDNN algorithm to run convolution

Could you please tell what is the minimum requirement for GPU (GPU compute capability or GPU names) for running your code?

I got this error after 72 minutes of running.

[2023-06-27 11:35:12.206] [warning] [FeatureManager.cpp:2690] _raw_matches found exsting pair (1668813085642941848, 1668813085474306823)                                                                           
[loftr_wrapper.py] image0: torch.Size([28, 1, 400, 400])                                                                                                                                                           
Traceback (most recent call last):                                                                                                                                                                                 
  File "run_custom.py", line 203, in <module>                                                                                                                                                                      
    run_one_video(video_dir=args.video_dir, out_folder=args.out_folder, use_segmenter=args.use_segmenter, use_gui=args.use_gui)                                                                                    
  File "run_custom.py", line 103, in run_one_video                                                                                                                                                                 
    tracker.run(color, depth, K, id_str, mask=mask, occ_mask=None, pose_in_model=pose_in_model)                                                                                                                    
  File "/home/azureuser/BundleSDF/bundlesdf.py", line 543, in run                                                                                                                                                  
    self.process_new_frame(frame)
  File "/home/azureuser/BundleSDF/bundlesdf.py", line 494, in process_new_frame
    self.find_corres(pairs)
  File "/home/azureuser/BundleSDF/bundlesdf.py", line 362, in find_corres
    corres = self.loftr.predict(rgbAs=imgs[::2], rgbBs=imgs[1::2])
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context
    return func(*args, **kwargs)
  File "/home/azureuser/BundleSDF/loftr_wrapper.py", line 50, in predict
    self.matcher(tmp)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/azureuser/BundleSDF/BundleTrack/LoFTR/src/loftr/loftr.py", line 49, in forward
    feats_c, feats_f = self.backbone(torch.cat([data['image0'], data['image1']], dim=0))
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/azureuser/BundleSDF/BundleTrack/LoFTR/src/loftr/backbone/resnet_fpn.py", line 116, in forward
    x1_out = self.layer1_outconv2(x1_out+x2_out_2x)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/nn/modules/container.py", line 141, in forward
    input = module(input)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/nn/modules/conv.py", line 447, in forward
    return self._conv_forward(input, self.weight, self.bias)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/nn/modules/conv.py", line 443, in _conv_forward
    return F.conv2d(input, weight, bias, self.stride,
RuntimeError: Unable to find a valid cuDNN algorithm to run convolution
Process Process-2:
Traceback (most recent call last):
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
    self.run()
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/azureuser/BundleSDF/bundlesdf.py", line 89, in run_nerf
    join = p_dict['join']
  File "<string>", line 2, in __getitem__
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/managers.py", line 835, in _callmethod

(py38) root@bundlesdf:/home/azureuser/BundleSDF# nvidia-smi
Tue Jun 27 12:02:42 2023       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.182.03   Driver Version: 470.182.03   CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla V100-PCIE...  On   | 00000001:00:00.0 Off |                    0 |
| N/A   29C    P0    40W / 250W |   2729MiB / 16160MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  Tesla V100-PCIE...  On   | 00000002:00:00.0 Off |                    0 |
| N/A   27C    P0    25W / 250W |      4MiB / 16160MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
+-----------------------------------------------------------------------------+

Is it possible to reconstruct in-the-wild videos?

Hi, thanks for your excellent work!
Is it possible to reconstruct an indoor-scene video without a ground-truth depth map and camera intrinsic parameter? Can I use the estimated depth map and camera intrinsic parameter as the input? If yes, do you have any idea about the recommended networks to estimate accurate depth map and camera intrinsic parameter for indoor scenes?

How to show bounding box

May I ask where you can find the code to display the bounding box; What steps can be taken to achieve this

BundleSDF/bundlesdf.py", line 15, in <module> import my_cpp ModuleNotFoundError: No module named 'my_cpp'

I didn't get any error building the docker but I get an error running the following:

(py38) root@ard-gpu-01:/home/mona/BundleSDF# python run_custom.py --mode run_video --video_dir /milk/2022-11-18-15-10-24_milk/ --outfolder  /home/mona/BundleSDF/out_dir/ --use_segmenter 1 --use_gui 1 --debug_level 2
Traceback (most recent call last):
  File "run_custom.py", line 10, in <module>
    from bundlesdf import *
  File "/home/mona/BundleSDF/bundlesdf.py", line 15, in <module>
    import my_cpp
ModuleNotFoundError: No module named 'my_cpp'
(py38) root@ard-gpu-01:/home/mona/BundleSDF# rg my_cpp
bundlesdf.py
15:import my_cpp
316:    yml = my_cpp.YamlLoadFile(cfg_track_dir)
317:    self.bundler = my_cpp.Bundler(yml)
344:    frame = my_cpp.Frame(color,depth,roi,pose_in_model,self.cnt,id_str,K,self.bundler.yml)
346:      frame._fg_mask = my_cpp.cvMat(mask)
348:      frame._occ_mask = my_cpp.cvMat(occ_mask)
375:      self.bundler._newframe._status = my_cpp.Frame.FAIL
412:      frame._status = my_cpp.Frame.FAIL;
423:      frame._status = my_cpp.Frame.FAIL
437:    if frame._status==my_cpp.Frame.FAIL:
446:        visible = my_cpp.computeCovisibility(frame, kf)
468:        frame._status = my_cpp.Frame.FAIL
495:    if frame._status==my_cpp.Frame.FAIL:
502:    if frame._status==my_cpp.Frame.FAIL:

BundleTrack/CMakeLists.txt
118:# pybind11_add_module(my_cpp pybind_interface/pybind_api.cpp ${MY_SRC})
119:pybind11_add_module(my_cpp pybind_interface/pybind_api.cpp ${CMAKE_SOURCE_DIR}/src/Frame.cpp)
120:target_link_libraries(my_cpp PRIVATE ${PROJECT_NAME} MY_CUDA_LIB ${YAML_CPP_LIBRARIES} ${PYTHON_LIBRARIES} ${CUDA_LIBRARIES})

BundleTrack/pybind_interface/pybind_api.cpp
23:PYBIND11_MODULE(my_cpp, m)

run 2022-11-18-15-10-24_milk example error?

thanks for your great works!

when i run script below
python run_custom.py --mode run_video --video_dir /home/bowen/debug/2022-11-18-15-10-24_milk --out_folder /home/bowen/debug/bundlesdf_2022-11-18-15-10-24_milk --use_segmenter 1 --use_gui 1 --debug_level 2
at last, it happen:
image

i dont have any other errors~

typo found and fixed

(py38) root@ard-gpu-01:/home/mona/BundleSDF# python run_custom.py --mode run_video --video_dir /milk/2022-11-18-15-10-24_milk/ --out_folder  /home/mona/BundleSDF/out_dir/ --use_segmenter 1 --use_gui 1 --debug_level 2
[2023-06-22 11:39:24.897] [warning] [Bundler.cpp:49] Connected to nerf_port 9999
[2023-06-22 11:39:24.897] [warning] [FeatureManager.cpp:2084] Connected to port 5555
default_cfg {'backbone_type': 'ResNetFPN', 'resolution': (8, 2), 'fine_window_size': 5, 'fine_concat_coarse_feat': True, 'resnetfpn': {'initial_dim': 128, 'block_dims': [128, 196, 256]}, 'coarse': {'d_model': 256, 'd_ffn': 256, 'nhead': 8, 'layer_names': ['self', 'cross', 'self', 'cross', 'self', 'cross', 'self', 'cross'], 'attention': 'linear', 'temp_bug_fix': False}, 'match_coarse': {'thr': 0.2, 'border_rm': 2, 'match_type': 'dual_softmax', 'dsmax_temperature': 0.1, 'skh_iters': 3, 'skh_init_bin_score': 1.0, 'skh_prefilter': True, 'train_coarse_percent': 0.4, 'train_pad_num_gt_min': 200}, 'fine': {'d_model': 128, 'd_ffn': 128, 'nhead': 8, 'layer_names': ['self', 'cross'], 'attention': 'linear'}}
GUI started
libGL error: MESA-LOADER: failed to retrieve device information
Glfw Error 65543: GLX: Failed to create context: GLXBadFBConfig
python: /home/runner/work/DearPyGui/DearPyGui/thirdparty/glfw/src/window.c:533: glfwSetWindowPos: Assertion `window != NULL' failed.
Traceback (most recent call last):
  File "run_custom.py", line 203, in <module>
    run_one_video(video_dir=args.video_dir, out_folder=args.out_folder, use_segmenter=args.use_segmenter, use_gui=args.use_gui)
  File "run_custom.py", line 86, in run_one_video
    mask = segmenter.run(color_file.replace('rgb','masks'))
  File "/home/mona/BundleSDF/segmentation_utils.py", line 18, in run
    return (cv2.imread(mask_file, -1)>0).astype(np.uint8)
NameError: name 'np' is not defined
Process Process-3:
Traceback (most recent call last):
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
    self.run()
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/mona/BundleSDF/bundlesdf.py", line 89, in run_nerf
    join = p_dict['join']
  File "<string>", line 2, in __getitem__
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/managers.py", line 835, in _callmethod
    kind, result = conn.recv()
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/connection.py", line 250, in recv
    buf = self._recv_bytes()
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/connection.py", line 414, in _recv_bytes
    buf = self._recv(4)
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/connection.py", line 379, in _recv
    chunk = read(handle, remaining)
ConnectionResetError: [Errno 104] Connection reset by peer
[2023-06-22 11:39:28.734] [warning] [Bundler.cpp:59] Destructor
(py38) root@ard-gpu-01:/home/mona/BundleSDF# vi /home/mona/BundleSDF/segmentation_utils.py

RuntimeError: Unable to find a valid cuDNN algorithm to run convolution

When running
python run_custom.py --mode run_video --video_dir /home/bastian/2022-11-18-15-10-24_milk --out_folder /home/bastian/output_dir/milkTest --use_segmenter 1 --use_gui 0 --debug_level 2
I get the following error after some time:

Traceback (most recent call last):
  File "run_custom.py", line 203, in <module>
    run_one_video(video_dir=args.video_dir, out_folder=args.out_folder, use_segmenter=args.use_segmenter, use_gui=args.use_gui)
  File "run_custom.py", line 103, in run_one_video
    tracker.run(color, depth, K, id_str, mask=mask, occ_mask=None, pose_in_model=pose_in_model)
  File "/home/bastian/bundlesdf.py", line 543, in run
    self.process_new_frame(frame)
  File "/home/bastian/bundlesdf.py", line 494, in process_new_frame
    self.find_corres(pairs)
  File "/home/bastian/bundlesdf.py", line 362, in find_corres
    corres = self.loftr.predict(rgbAs=imgs[::2], rgbBs=imgs[1::2])
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context
    return func(*args, **kwargs)
  File "/home/bastian/loftr_wrapper.py", line 50, in predict
    self.matcher(tmp)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/bastian/BundleTrack/LoFTR/src/loftr/loftr.py", line 49, in forward
    feats_c, feats_f = self.backbone(torch.cat([data['image0'], data['image1']], dim=0))
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/bastian/BundleTrack/LoFTR/src/loftr/backbone/resnet_fpn.py", line 116, in forward
    x1_out = self.layer1_outconv2(x1_out+x2_out_2x)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/nn/modules/container.py", line 141, in forward
    input = module(input)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/nn/modules/conv.py", line 447, in forward
    return self._conv_forward(input, self.weight, self.bias)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/nn/modules/conv.py", line 443, in _conv_forward
    return F.conv2d(input, weight, bias, self.stride,
RuntimeError: Unable to find a valid cuDNN algorithm to run convolution
Process Process-2:
Traceback (most recent call last):
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
    self.run()
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/bastian/bundlesdf.py", line 89, in run_nerf
    join = p_dict['join']
  File "<string>", line 2, in __getitem__
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/managers.py", line 835, in _callmethod
    kind, result = conn.recv()
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/connection.py", line 250, in recv
    buf = self._recv_bytes()
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/connection.py", line 414, in _recv_bytes
    buf = self._recv(4)
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/connection.py", line 379, in _recv
    chunk = read(handle, remaining)
ConnectionResetError: [Errno 104] Connection reset by peer
[2023-06-23 06:29:48.862] [warning] [Bundler.cpp:59] Destructor
Segmentation fault

nvidia-smi shows:

(py38) root@docker-desktop:/home/bastian# nvidia-smi
Fri Jun 23 06:06:26 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 515.65.01    Driver Version: 516.94       CUDA Version: 11.7     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  On   | 00000000:07:00.0  On |                  N/A |
| N/A   41C    P0    N/A /  30W |   1499MiB /  2048MiB |      4%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A        20      G   /Xwayland                       N/A      |
|    0   N/A  N/A        32      G   /Xwayland                       N/A      |
+-----------------------------------------------------------------------------+

The video card on the host is a Geforce GT 1030 with only 2GB of memory.
The host system is Windows.

Any idea how to fix this, if possible?

mportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.30' not found

[2023-06-26 12:54:21.365] [warning] [Bundler.cpp:67] forgetting frame 1668813028470606334
[2023-06-26 12:54:21.365] [warning] [FeatureManager.cpp:469] forgetting frame 1668813028470606334
[bundlesdf.py] exceed window size, forget frame 1668813028470606334
[2023-06-26 12:54:21.366] [warning] [Bundler.cpp:435] total keyframes=4, want to select 10
[2023-06-26 12:54:21.366] [warning] [Bundler.cpp:793] frame 1668813028705557007 and 1668813025164826994 visible=0.875298
[2023-06-26 12:54:21.366] [warning] [Bundler.cpp:802] add frame (1668813028705557007, 1668813025164826994) into pairs
[2023-06-26 12:54:21.366] [warning] [Bundler.cpp:793] frame 1668813028705557007 and 1668813026867024573 visible=0.861925
[2023-06-26 12:54:21.366] [warning] [Bundler.cpp:802] add frame (1668813028705557007, 1668813026867024573) into pairs
[2023-06-26 12:54:21.367] [warning] [Bundler.cpp:793] frame 1668813028705557007 and 1668813028304456241 visible=0.844804
[2023-06-26 12:54:21.367] [warning] [Bundler.cpp:802] add frame (1668813028705557007, 1668813028304456241) into pairs
[2023-06-26 12:54:21.367] [warning] [Bundler.cpp:793] frame 1668813028705557007 and 1668813028571340409 visible=0.87368
[2023-06-26 12:54:21.367] [warning] [Bundler.cpp:802] add frame (1668813028705557007, 1668813028571340409) into pairs
[bundlesdf.py] frame_pairs: 4
[loftr_wrapper.py] image0: torch.Size([4, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20005133748054504 0.9916833639144897
[loftr_wrapper.py] pair_ids (1613,)
[loftr_wrapper.py] corres: (1613, 5)
[2023-06-26 12:54:21.533] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=4
[2023-06-26 12:54:21.544] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028705557007 1668813025164826994 #inliers=153, #prev 278
[2023-06-26 12:54:21.544] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028705557007 1668813026867024573 #inliers=136, #prev 283
[2023-06-26 12:54:21.544] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028705557007 1668813028304456241 #inliers=168, #prev 280
[2023-06-26 12:54:21.544] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813028705557007 1668813028571340409 #inliers=355, #prev 457
#optimizeGPU frames=5, #keyframes=4, #_frames=10
1668813025164826994 1668813026867024573 1668813028304456241 1668813028571340409 1668813028705557007
[2023-06-26 12:54:21.551] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=2947
global_corres=2947
maxNumResiduals / maxNumberOfImages = 50947 / 5 = 10189
m_maxNumberOfImages*m_maxCorrPerImage = 5 x 1309 = 6545
m_solver->solve Time difference = 9.754[ms]
[2023-06-26 12:54:21.566] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-26 12:54:21.567] [warning] [Bundler.cpp:320] Added frame 1668813028705557007 as keyframe, current #keyframe: 5
[bundlesdf.py] processNewFrame done 1668813028705557007
[bundlesdf.py] 1668813028705557007 prepare data for nerf
[bundlesdf.py] out_dir: ./output//1668813028705557007/nerf
[tool.py] compute_scene_bounds_worker start
[tool.py] compute_scene_bounds_worker done
[tool.py] merge pcd
[tool.py] compute_translation_scales done
translation_cvcam=[0.00950763 0.00492653 0.0066628 ], sc_factor=8.09038237262584
[bundlesdf.py] First nerf run, create Runner, latest nerf frame 1668813028705557007
[nerf_runner.py] Octree voxel dilate_radius:1
level 0, resolution: 16
level 1, resolution: 32
level 2, resolution: 64
level 3, resolution: 128
GridEncoder: input_dim=3 n_levels=4 level_dim=2 resolution=16 -> 128 per_level_scale=2.0000 params=(2462192, 2) gridtype=hash align_corners=False
sc_factor 5.663267660838088
translation [0.00950763 0.00492653 0.0066628 ]
[nerf_runner.py] denoise cloud
[nerf_runner.py] Denoising rays based on octree cloud
[nerf_runner.py] bad_mask#=443
rays torch.Size([341656, 12])
[bundlesdf.py] Start training, latest nerf frame 1668813028705557007
[nerf_runner.py] train progress 0/501
[nerf_runner.py] Iter: 0, valid_samples: 393216/393216, valid_rays: 2048/2048, loss: 6.2736540, rgb_loss: 3.0207248, rgb0_loss: 0.0000000, fs_rgb_loss: 0.0000000, depth_loss: 0.0000000, depth_loss0: 0.0000000, fs_loss: 0.5849329, point_cloud_loss: 0.0000000, point_cloud_normal_loss: 0.0000000, sdf_loss: 2.6679962, eikonal_loss: 0.0000000, variation_loss: 0.0000000, truncation(meter): 0.0100000, pose_reg: 0.0000000, reg_features: 0.0000000,

[nerf_runner.py] train progress 50/501
[nerf_runner.py] train progress 100/501
[nerf_runner.py] train progress 150/501
[nerf_runner.py] train progress 200/501
[nerf_runner.py] train progress 250/501
[nerf_runner.py] train progress 300/501
[nerf_runner.py] train progress 350/501
[nerf_runner.py] train progress 400/501
[nerf_runner.py] train progress 450/501
[nerf_runner.py] train progress 500/501
[bundlesdf.py] Training done, latest nerf frame 1668813028705557007
[bundlesdf.py] Getting mesh
[nerf_runner.py] query_pts:torch.Size([357911, 3]), valid:36153
[nerf_runner.py] Running Marching Cubes
Process Process-2:
Traceback (most recent call last):
File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "/home/xye/BundleSDF/bundlesdf.py", line 234, in run_nerf
mesh = nerf.extract_mesh(isolevel=0,voxel_size=cfg_nerf['mesh_resolution'])
File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context
return func(*args, **kwargs)
File "/home/xye/BundleSDF/nerf_runner.py", line 1389, in extract_mesh
from skimage import measure
File "/opt/conda/envs/py38/lib/python3.8/site-packages/lazy_loader/init.py", line 73, in getattr
return importlib.import_module(f"{package_name}.{name}")
File "/opt/conda/envs/py38/lib/python3.8/importlib/init.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/opt/conda/envs/py38/lib/python3.8/site-packages/skimage/measure/init.py", line 5, in
from ._polygon import approximate_polygon, subdivide_polygon
File "/opt/conda/envs/py38/lib/python3.8/site-packages/skimage/measure/_polygon.py", line 2, in
from scipy import signal
File "/opt/conda/envs/py38/lib/python3.8/site-packages/scipy/signal/init.py", line 309, in
from . import _sigtools, windows
File "/opt/conda/envs/py38/lib/python3.8/site-packages/scipy/signal/windows/init.py", line 41, in
from ._windows import *
File "/opt/conda/envs/py38/lib/python3.8/site-packages/scipy/signal/windows/_windows.py", line 7, in
from scipy import linalg, special, fft as sp_fft
File "/opt/conda/envs/py38/lib/python3.8/site-packages/scipy/fft/init.py", line 91, in
from ._helper import next_fast_len
File "/opt/conda/envs/py38/lib/python3.8/site-packages/scipy/fft/_helper.py", line 3, in
from ._pocketfft import helper as _helper
File "/opt/conda/envs/py38/lib/python3.8/site-packages/scipy/fft/_pocketfft/init.py", line 3, in
from .basic import *
File "/opt/conda/envs/py38/lib/python3.8/site-packages/scipy/fft/_pocketfft/basic.py", line 6, in
from . import pypocketfft as pfft
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /opt/conda/envs/py38/lib/python3.8/site-packages/scipy/fft/_pocketfft/pypocketfft.cpython-38-x86_64-linux-gnu.so)
^CTraceback (most recent call last):

Failed to pull docker image. "authentication required"

Thank you for providing such nice work!

When I tried to run the implementation on my computer, I encountered the error below:

sudo docker pull nvcr.io/nvidian/bundlesdf
Using default tag: latest
Error response from daemon: unauthorized: authentication required

However, I can pull from dockerhub as usual. So I guess it is because of the poor network.
Could you please publish the image on dockerhub? This will help a lot. Thank you again.

[bundlesdf.py] process frame 0000000 [pcl::PLYWriter::writeASCII] Input point cloud has no data! [pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!

I am trying to run BundleSDF on my custom data that is captured using Intel RealSense D435 and have the mask created using XMem.

TLDR: my depth values range like below:
print('depth min {} and max {}'.format(np.min(depth[depth>0]), np.max(depth)))

I have:
depth min 0.001 and max 0.255

I am not sure what depth_processing should be set to.

depth_processing:
  zfar: 1.0
  erode:
    radius: 1
    diff: 0.001
    ratio: 0.8   #if ratio larger than this, depth set to 0
  bilateral_filter:
    radius: 2
    sigma_D: 2
    sigma_R: 100000
  outlier_removal:
    num: 30
    std_mul: 3
  edge_normal_thres: 10  #deg between normal and ray
  denoise_cloud: False
  percentile: 100

how do I find the values for depth_processing in ./BundleTrack/config_ho3d.yml ??

With no changes, I get this error: #31

However, if I change the depth>=0.1 to depth>=0 in bundlesdf.py, I get this other error:

(py38) root@bundlesdf:/home/azureuser/BundleSDF# python run_custom.py --mode run_video --video_dir /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed/ --out_folder /home/azureuser/BundleSDF/my_obj/out --use_segmenter 1 --use_gui 0 --debug_level 2
[2023-07-10 07:48:16.591] [warning] [Bundler.cpp:49] Connected to nerf_port 9999
[2023-07-10 07:48:16.591] [warning] [FeatureManager.cpp:2084] Connected to port 5555
default_cfg {'backbone_type': 'ResNetFPN', 'resolution': (8, 2), 'fine_window_size': 5, 'fine_concat_coarse_feat': True, 'resnetfpn': {'initial_dim': 128, 'block_dims': [128, 196, 256]}, 'coarse': {'d_model': 256, 'd_ffn': 256, 'nhead': 8, 'layer_names': ['self', 'cross', 'self', 'cross', 'self', 'cross', 'self', 'cross'], 'attention': 'linear', 'temp_bug_fix': False}, 'match_coarse': {'thr': 0.2, 'border_rm': 2, 'match_type': 'dual_softmax', 'dsmax_temperature': 0.1, 'skh_iters': 3, 'skh_init_bin_score': 1.0, 'skh_prefilter': True, 'train_coarse_percent': 0.4, 'train_pad_num_gt_min': 200}, 'fine': {'d_model': 128, 'd_ffn': 128, 'nhead': 8, 'layer_names': ['self', 'cross'], 'attention': 'linear'}}
video dir is:  /home/azureuser/BundleSDF/my_obj/V00P00A00C00_trimmed/
type of color files:  <class 'list'>
len of color_files:  4203
stride is:  5
depth.shape is (480, 640, 3) and color.shape is (480, 640, 3)
mask.shape:  (480, 640, 3)
there are some non-zero elements in the mask
non zero in mask:  73957
&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[bundlesdf.py] percentile denoise start
number of depth>=0:  921600
number of mask>0:  73957
number of True entries in valid:  73957
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 0000000
[bundlesdf.py] process frame 0000000
[pcl::PLYWriter::writeASCII] Input point cloud has no data!
[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!
[pcl::PLYWriter::writeASCII] Input point cloud has no data!
Segmentation fault (core dumped)

also if I set depth>0, I'll have:

number of depth>0:  621004
number of mask>0:  73957
number of True entries in valid:  13067
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 0000000
[bundlesdf.py] process frame 0000000
[pcl::PLYWriter::writeASCII] Input point cloud has no data!

However, if I set depth>=0.1, number of True entries in valid becomes 0:

number of depth>=0.1:  381256
number of mask>0:  73957
number of True entries in valid:  0

and for min depth val:

[bundlesdf.py] percentile denoise start
depth min 0.001 and max 0.255
number of depth>0.001:  547102
number of mask>0:  73957
number of True entries in valid:  1729
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 0000000
[bundlesdf.py] process frame 0000000
[pcl::PLYWriter::writeASCII] Input point cloud has no data!
[pcl::KdTreeFLANN::setInputCloud] Cannot create a KDTree with an empty input cloud!

Could you please guide how to fix this error?

approximate time for run_custom.py for milk and size of out_dir

could you please share how long the full execution of the following command takes for the milk zip you shared as for custom data?

python run_custom.py --mode run_video --video_dir /milk/2022-11-18-15-10-24_milk/ --out_folder /home/mona/BundleSDF/out_dir/ --use_segmenter 1 --use_gui 0 --debug_level 2

also, what's the space of out_dir for you for milk custom data once the command is finished executing?

(base) mona@ard-gpu-01:~/BundleSDF$ du -h out_dir/
1.8G	out_dir/

^^ however run is not finished yet. I see a lot of intermediary folders created and this seems like a huge space requirement.

I am using a RTX 3080 laptop GPU and 64G ram and 16 CPU cores.

Error encountered - version 'GLIBCXX_3.4.29' not found

Hi!
After starting the docker container for the first time and running the command for joint tracking and reconstruction,
An import error : /lib /x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.29' not found (required by /opt.conda/envs/py38/lib/python3.8/site-packages/scipy/spatial/_ckdtree.cpython-38-x86_64-linux-gnu.so) is encountered.

On running the command strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX, It only lists all the GLIBCXX versions up until GLIBCXX_3.4.28

Thank You
WhatsApp Image 2023-07-14 at 10 03 51

Docker build

Thank you for your excellent work.
I encountered a problem while using Docker build. It is showing me an error message saying that it cannot connect to GitHub. I have tried many solutions but still couldn't resolve it. Would you be willing to upload the BundleSDF docker images to Docker Hub if you have the time? I would greatly appreciate it.

Whether VTK is the essential 3rd party components for building OpenCV

Thanks for your great works!
I can't use Docker for some reasons, and I must configure my environment manually.
I want to know whether VTK is the essential 3rd party components for building OpenCV or not.
If the answer is no, I would like to set it to OFF in OpenCV cmake.
Looking forward to your answer.

Questions about pose estimation of symmetrical objects

Thanks to your excellent work, we can use a more stable and accurate pose estimation network.
However, when estimating a symmetric object, such as a gear with rotational symmetry, because different angles of view have the same characteristics, the X and Y axes of the coordinate system will be changed repeatedly in the actual estimation process, in other words, the X and Y axes will be changed around the rotation axis, which will lead to a sudden change in the tracking process of the robot arm. How do you solve this problem?

ValueError: zero-size array to reduction operation minimum which has no identity

I get the following error when trying to run the example milk data:
python run_custom.py --mode run_video --video_dir /home/bastian/BundleSDF/2022-11-18-15-10-24_milk --out_folder /home/bastian/BundleSDF/outdir/bundlesdf_2022-11-18-15-10-24_milk --use_segmenter 1 --use_gui 0 --debug_level 2 [2023-06-28 04:46:10.905] [warning] [Bundler.cpp:49] Connected to nerf_port 9999 [2023-06-28 04:46:10.909] [warning] [FeatureManager.cpp:2084] Connected to port 5555 default_cfg {'backbone_type': 'ResNetFPN', 'resolution': (8, 2), 'fine_window_size': 5, 'fine_concat_coarse_feat': True, 'resnetfpn': {'initial_dim': 128, 'block_dims': [128, 196, 256]}, 'coarse': {'d_model': 256, 'd_ffn': 256, 'nhead': 8, 'layer_names': ['self', 'cross', 'self', 'cross', 'self', 'cross', 'self', 'cross'], 'attention': 'linear', 'temp_bug_fix': False}, 'match_coarse': {'thr': 0.2, 'border_rm': 2, 'match_type': 'dual_softmax', 'dsmax_temperature': 0.1, 'skh_iters': 3, 'skh_init_bin_score': 1.0, 'skh_prefilter': True, 'train_coarse_percent': 0.4, 'train_pad_num_gt_min': 200}, 'fine': {'d_model': 128, 'd_ffn': 128, 'nhead': 8, 'layer_names': ['self', 'cross'], 'attention': 'linear'}} [bundlesdf.py] percentile denoise start [bundlesdf.py] percentile denoise done [bundlesdf.py] processNewFrame start 1668813025164826994 [bundlesdf.py] process frame 1668813025164826994 [2023-06-28 04:46:14.748] [warning] [Bundler.cpp:268] Added frame 1668813025164826994 as keyframe, current #keyframe: 1 [bundlesdf.py] processNewFrame done 1668813025164826994 [bundlesdf.py] 1668813025164826994 prepare data for nerf [bundlesdf.py] rematch_after_nerf: True [2023-06-28 04:46:14.759] [warning] [Bundler.cpp:961] Welcome saveNewframeResult [2023-06-28 04:46:14.880] [warning] [Bundler.cpp:1110] saveNewframeResult done [bundlesdf.py] percentile denoise start [bundlesdf.py] percentile denoise done [bundlesdf.py] processNewFrame start 1668813025193228911 [bundlesdf.py] process frame 1668813025193228911 [bundlesdf.py] frame_pairs: 1 [loftr_wrapper.py] image0: torch.Size([1, 1, 400, 400]) [loftr_wrapper.py] net forward Traceback (most recent call last): File "run_custom.py", line 203, in <module> run_one_video(video_dir=args.video_dir, out_folder=args.out_folder, use_segmenter=args.use_segmenter, use_gui=args.use_gui) File "run_custom.py", line 103, in run_one_video tracker.run(color, depth, K, id_str, mask=mask, occ_mask=None, pose_in_model=pose_in_model) File "/home/bastian/BundleSDF/bundlesdf.py", line 543, in run self.process_new_frame(frame) File "/home/bastian/BundleSDF/bundlesdf.py", line 434, in process_new_frame self.find_corres([(frame, ref_frame)]) File "/home/bastian/BundleSDF/bundlesdf.py", line 362, in find_corres corres = self.loftr.predict(rgbAs=imgs[::2], rgbBs=imgs[1::2]) File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context return func(*args, **kwargs) File "/home/bastian/BundleSDF/loftr_wrapper.py", line 68, in predict logging.info(f"mconf, {mconf.min()} {mconf.max()}") File "/opt/conda/envs/py38/lib/python3.8/site-packages/numpy/core/_methods.py", line 44, in _amin return umr_minimum(a, axis, None, out, keepdims, initial, where) ValueError: zero-size array to reduction operation minimum which has no identity Process Process-2: Traceback (most recent call last): File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap self.run() File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 108, in run self._target(*self._args, **self._kwargs) File "/home/bastian/BundleSDF/bundlesdf.py", line 89, in run_nerf join = p_dict['join'] File "<string>", line 2, in __getitem__ File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/managers.py", line 835, in _callmethod kind, result = conn.recv() File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/connection.py", line 250, in recv buf = self._recv_bytes() File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/connection.py", line 414, in _recv_bytes buf = self._recv(4) File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/connection.py", line 379, in _recv chunk = read(handle, remaining) ConnectionResetError: [Errno 104] Connection reset by peer [2023-06-28 04:46:16.693] [warning] [Bundler.cpp:59] Destructor

I followed instructions from here #15 (comment) to resolve the earlier issue, otherwise I followed the instructions from the Readme.

Also I haven't seen this error on other machines.

Any ideas?

[Missing code] TypeError: extract_mesh() got an unexpected keyword argument 'mesh_savepath' + cp: cannot stat '/home/mona/BundleSDF/out_dir///nerf_with_bundletrack_online/image_step_*.png': No such file or directory

I get this error after a very long time of running the command below:

(py38) root@ard-gpu-01:/home/mona/BundleSDF# python run_custom.py --mode run_video --video_dir /milk/2022-11-18-15-10-24_milk/ --out_folder  /home/mona/BundleSDF/out_dir/ --use_segmenter 1 --use_gui 0 --debug_level 2


[bundlesdf.py] frame_pairs: 9
[loftr_wrapper.py] image0: torch.Size([9, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20003996789455414 0.9956958889961243
[loftr_wrapper.py] pair_ids (3955,)
[loftr_wrapper.py] corres: (3955, 5)
[2023-06-22 21:42:48.881] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=9
[2023-06-22 21:42:48.903] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100776735992 1668813029097767458 #inliers=362, #prev 478
[2023-06-22 21:42:48.903] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100776735992 1668813030780872835 #inliers=260, #prev 363
[2023-06-22 21:42:48.903] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100776735992 1668813031103320518 #inliers=213, #prev 348
[2023-06-22 21:42:48.903] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100776735992 1668813031206709461 #inliers=135, #prev 286
[2023-06-22 21:42:48.903] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100776735992 1668813031312962221 #inliers=96, #prev 212
[2023-06-22 21:42:48.903] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100776735992 1668813031440876626 #inliers=72, #prev 167
[2023-06-22 21:42:48.903] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100776735992 1668813096288462014 #inliers=99, #prev 233
[2023-06-22 21:42:48.903] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100776735992 1668813096410030625 #inliers=177, #prev 311
[2023-06-22 21:42:48.903] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100776735992 1668813098026872389 #inliers=468, #prev 555
#optimizeGPU frames=10, #keyframes=328, #_frames=334
1668813029097767458 1668813030780872835 1668813031103320518 1668813031206709461 1668813031312962221 1668813031440876626 1668813096288462014 1668813096410030625 1668813098026872389 1668813100776735992
[2023-06-22 21:42:48.914] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=2951
global_corres=2951
maxNumResiduals / maxNumberOfImages = 218951 / 10 = 21895
m_maxNumberOfImages*m_maxCorrPerImage = 10 x 1882 = 18820
m_solver->solve Time difference = 18.742[ms]
[2023-06-22 21:42:48.941] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-22 21:42:48.941] [warning] [Bundler.cpp:302] frame 1668813100776735992 not selected as keyframe since its rot diff with frame 1668813029401587544 is 3.97335 deg
[bundlesdf.py] processNewFrame done 1668813100776735992
[bundlesdf.py] rematch_after_nerf: True
[2023-06-22 21:42:48.943] [warning] [Bundler.cpp:961] Welcome saveNewframeResult
[2023-06-22 21:42:48.987] [warning] [Bundler.cpp:1110] saveNewframeResult done
[bundlesdf.py] percentile denoise start
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 1668813100836743914
[bundlesdf.py] process frame 1668813100836743914
[bundlesdf.py] frame_pairs: 1
[loftr_wrapper.py] image0: torch.Size([1, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20095773041248322 0.992491602897644
[loftr_wrapper.py] pair_ids (959,)
[loftr_wrapper.py] corres: (959, 5)
[2023-06-22 21:42:49.061] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=1
[2023-06-22 21:42:49.063] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100836743914 1668813100776735992 #inliers=458, #prev 681
[bundlesdf.py] frame 1668813100836743914 pose update before
[[ 0.489 -0.622  0.612 -0.378]
 [ 0.756  0.652  0.059 -0.184]
 [-0.436  0.434  0.789 -0.421]
 [ 0.     0.     0.     1.   ]]
[2023-06-22 21:42:49.065] [warning] [FeatureManager.cpp:1095] procrustesByCorrespondence err per point between 1668813100836743914 and 1668813100776735992: 0.000207816
[bundlesdf.py] frame 1668813100836743914 pose update after
[[ 0.493 -0.648  0.581 -0.363]
 [ 0.757  0.648  0.08  -0.196]
 [-0.428  0.4    0.81  -0.433]
 [ 0.     0.     0.     1.   ]]
[2023-06-22 21:42:49.066] [warning] [Bundler.cpp:67] forgetting frame 1668813100443517728
[2023-06-22 21:42:49.066] [warning] [FeatureManager.cpp:469] forgetting frame 1668813100443517728
[bundlesdf.py] exceed window size, forget frame 1668813100443517728
[2023-06-22 21:42:49.072] [warning] [Bundler.cpp:435] total keyframes=328, want to select 10
[2023-06-22 21:42:49.113] [warning] [Bundler.cpp:516] ids#=328, max_BA_frames-frames.size()=9
[2023-06-22 21:42:49.113] [warning] [Bundler.cpp:525] frames#=10
[2023-06-22 21:42:49.114] [warning] [Bundler.cpp:793] frame 1668813100836743914 and 1668813029097767458 visible=0.930067
[2023-06-22 21:42:49.114] [warning] [Bundler.cpp:802] add frame (1668813100836743914, 1668813029097767458) into pairs
[2023-06-22 21:42:49.114] [warning] [Bundler.cpp:793] frame 1668813100836743914 and 1668813030780872835 visible=0.96094
[2023-06-22 21:42:49.114] [warning] [Bundler.cpp:802] add frame (1668813100836743914, 1668813030780872835) into pairs
[2023-06-22 21:42:49.114] [warning] [Bundler.cpp:793] frame 1668813100836743914 and 1668813031103320518 visible=0.973557
[2023-06-22 21:42:49.114] [warning] [Bundler.cpp:802] add frame (1668813100836743914, 1668813031103320518) into pairs
[2023-06-22 21:42:49.114] [warning] [Bundler.cpp:793] frame 1668813100836743914 and 1668813031206709461 visible=0.971409
[2023-06-22 21:42:49.114] [warning] [Bundler.cpp:802] add frame (1668813100836743914, 1668813031206709461) into pairs
[2023-06-22 21:42:49.114] [warning] [Bundler.cpp:793] frame 1668813100836743914 and 1668813031312962221 visible=0.955168
[2023-06-22 21:42:49.114] [warning] [Bundler.cpp:802] add frame (1668813100836743914, 1668813031312962221) into pairs
[2023-06-22 21:42:49.114] [warning] [Bundler.cpp:793] frame 1668813100836743914 and 1668813031440876626 visible=0.918121
[2023-06-22 21:42:49.114] [warning] [Bundler.cpp:802] add frame (1668813100836743914, 1668813031440876626) into pairs
[2023-06-22 21:42:49.115] [warning] [Bundler.cpp:793] frame 1668813100836743914 and 1668813096410030625 visible=0.913691
[2023-06-22 21:42:49.115] [warning] [Bundler.cpp:802] add frame (1668813100836743914, 1668813096410030625) into pairs
[2023-06-22 21:42:49.115] [warning] [Bundler.cpp:793] frame 1668813100836743914 and 1668813097558079071 visible=0.914228
[2023-06-22 21:42:49.115] [warning] [Bundler.cpp:802] add frame (1668813100836743914, 1668813097558079071) into pairs
[2023-06-22 21:42:49.115] [warning] [Bundler.cpp:793] frame 1668813100836743914 and 1668813098026872389 visible=0.92953
[2023-06-22 21:42:49.115] [warning] [Bundler.cpp:802] add frame (1668813100836743914, 1668813098026872389) into pairs
[bundlesdf.py] frame_pairs: 9
[loftr_wrapper.py] image0: torch.Size([9, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.2000865936279297 0.9870913028717041
[loftr_wrapper.py] pair_ids (4228,)
[loftr_wrapper.py] corres: (4228, 5)
[2023-06-22 21:42:49.487] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=9
[2023-06-22 21:42:49.509] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100836743914 1668813029097767458 #inliers=317, #prev 506
[2023-06-22 21:42:49.509] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100836743914 1668813030780872835 #inliers=210, #prev 354
[2023-06-22 21:42:49.509] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100836743914 1668813031103320518 #inliers=186, #prev 365
[2023-06-22 21:42:49.509] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100836743914 1668813031206709461 #inliers=124, #prev 258
[2023-06-22 21:42:49.509] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100836743914 1668813031312962221 #inliers=91, #prev 216
[2023-06-22 21:42:49.509] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100836743914 1668813031440876626 #inliers=87, #prev 170
[2023-06-22 21:42:49.509] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100836743914 1668813096410030625 #inliers=149, #prev 307
[2023-06-22 21:42:49.509] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100836743914 1668813097558079071 #inliers=349, #prev 476
[2023-06-22 21:42:49.509] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100836743914 1668813098026872389 #inliers=395, #prev 556
#optimizeGPU frames=10, #keyframes=328, #_frames=334
1668813029097767458 1668813030780872835 1668813031103320518 1668813031206709461 1668813031312962221 1668813031440876626 1668813096410030625 1668813097558079071 1668813098026872389 1668813100836743914
[2023-06-22 21:42:49.519] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=2373
global_corres=2373
maxNumResiduals / maxNumberOfImages = 218373 / 10 = 21837
m_maxNumberOfImages*m_maxCorrPerImage = 10 x 1908 = 19080
m_solver->solve Time difference = 19.08[ms]
[2023-06-22 21:42:49.546] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-22 21:42:49.546] [warning] [Bundler.cpp:302] frame 1668813100836743914 not selected as keyframe since its rot diff with frame 1668813029401587544 is 3.03215 deg
[bundlesdf.py] processNewFrame done 1668813100836743914
[bundlesdf.py] rematch_after_nerf: True
[2023-06-22 21:42:49.547] [warning] [Bundler.cpp:961] Welcome saveNewframeResult
[2023-06-22 21:42:49.591] [warning] [Bundler.cpp:1110] saveNewframeResult done
[bundlesdf.py] percentile denoise start
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 1668813100906891623
[bundlesdf.py] process frame 1668813100906891623
[bundlesdf.py] frame_pairs: 1
[loftr_wrapper.py] image0: torch.Size([1, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20006510615348816 0.9989305138587952
[loftr_wrapper.py] pair_ids (983,)
[loftr_wrapper.py] corres: (983, 5)
[2023-06-22 21:42:49.674] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=1
[2023-06-22 21:42:49.676] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100906891623 1668813100836743914 #inliers=568, #prev 692
[bundlesdf.py] frame 1668813100906891623 pose update before
[[ 0.494 -0.645  0.583 -0.364]
 [ 0.756  0.65   0.079 -0.195]
 [-0.43   0.401  0.808 -0.432]
 [ 0.     0.     0.     1.   ]]
[2023-06-22 21:42:49.678] [warning] [FeatureManager.cpp:1095] procrustesByCorrespondence err per point between 1668813100906891623 and 1668813100836743914: 0.000163631
[bundlesdf.py] frame 1668813100906891623 pose update after
[[ 0.501 -0.636  0.587 -0.373]
 [ 0.75   0.658  0.072 -0.188]
 [-0.432  0.404  0.806 -0.429]
 [ 0.     0.     0.     1.   ]]
[2023-06-22 21:42:49.679] [warning] [Bundler.cpp:67] forgetting frame 1668813100509473424
[2023-06-22 21:42:49.679] [warning] [FeatureManager.cpp:469] forgetting frame 1668813100509473424
[bundlesdf.py] exceed window size, forget frame 1668813100509473424
[2023-06-22 21:42:49.685] [warning] [Bundler.cpp:435] total keyframes=328, want to select 10
[2023-06-22 21:42:49.726] [warning] [Bundler.cpp:516] ids#=328, max_BA_frames-frames.size()=9
[2023-06-22 21:42:49.726] [warning] [Bundler.cpp:525] frames#=10
[2023-06-22 21:42:49.726] [warning] [Bundler.cpp:793] frame 1668813100906891623 and 1668813029097767458 visible=0.927597
[2023-06-22 21:42:49.726] [warning] [Bundler.cpp:802] add frame (1668813100906891623, 1668813029097767458) into pairs
[2023-06-22 21:42:49.726] [warning] [Bundler.cpp:793] frame 1668813100906891623 and 1668813030780872835 visible=0.960185
[2023-06-22 21:42:49.726] [warning] [Bundler.cpp:802] add frame (1668813100906891623, 1668813030780872835) into pairs
[2023-06-22 21:42:49.727] [warning] [Bundler.cpp:793] frame 1668813100906891623 and 1668813031103320518 visible=0.972866
[2023-06-22 21:42:49.727] [warning] [Bundler.cpp:802] add frame (1668813100906891623, 1668813031103320518) into pairs
[2023-06-22 21:42:49.727] [warning] [Bundler.cpp:793] frame 1668813100906891623 and 1668813031206709461 visible=0.967821
[2023-06-22 21:42:49.727] [warning] [Bundler.cpp:802] add frame (1668813100906891623, 1668813031206709461) into pairs
[2023-06-22 21:42:49.727] [warning] [Bundler.cpp:793] frame 1668813100906891623 and 1668813031312962221 visible=0.952686
[2023-06-22 21:42:49.727] [warning] [Bundler.cpp:802] add frame (1668813100906891623, 1668813031312962221) into pairs
[2023-06-22 21:42:49.727] [warning] [Bundler.cpp:793] frame 1668813100906891623 and 1668813031440876626 visible=0.920916
[2023-06-22 21:42:49.727] [warning] [Bundler.cpp:802] add frame (1668813100906891623, 1668813031440876626) into pairs
[2023-06-22 21:42:49.727] [warning] [Bundler.cpp:793] frame 1668813100906891623 and 1668813096410030625 visible=0.912463
[2023-06-22 21:42:49.727] [warning] [Bundler.cpp:802] add frame (1668813100906891623, 1668813096410030625) into pairs
[2023-06-22 21:42:49.727] [warning] [Bundler.cpp:793] frame 1668813100906891623 and 1668813097558079071 visible=0.90769
[2023-06-22 21:42:49.727] [warning] [Bundler.cpp:802] add frame (1668813100906891623, 1668813097558079071) into pairs
[2023-06-22 21:42:49.727] [warning] [Bundler.cpp:793] frame 1668813100906891623 and 1668813098026872389 visible=0.923643
[2023-06-22 21:42:49.727] [warning] [Bundler.cpp:802] add frame (1668813100906891623, 1668813098026872389) into pairs
[bundlesdf.py] frame_pairs: 9
[loftr_wrapper.py] image0: torch.Size([9, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.2000347226858139 0.9969505667686462
[loftr_wrapper.py] pair_ids (4435,)
[loftr_wrapper.py] corres: (4435, 5)
[2023-06-22 21:42:50.092] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=9
[2023-06-22 21:42:50.114] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100906891623 1668813029097767458 #inliers=330, #prev 504
[2023-06-22 21:42:50.114] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100906891623 1668813030780872835 #inliers=312, #prev 422
[2023-06-22 21:42:50.114] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100906891623 1668813031103320518 #inliers=250, #prev 398
[2023-06-22 21:42:50.114] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100906891623 1668813031206709461 #inliers=184, #prev 320
[2023-06-22 21:42:50.114] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100906891623 1668813031312962221 #inliers=102, #prev 224
[2023-06-22 21:42:50.114] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100906891623 1668813031440876626 #inliers=82, #prev 192
[2023-06-22 21:42:50.114] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100906891623 1668813096410030625 #inliers=154, #prev 296
[2023-06-22 21:42:50.114] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100906891623 1668813097558079071 #inliers=357, #prev 463
[2023-06-22 21:42:50.114] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100906891623 1668813098026872389 #inliers=400, #prev 516
#optimizeGPU frames=10, #keyframes=328, #_frames=334
1668813029097767458 1668813030780872835 1668813031103320518 1668813031206709461 1668813031312962221 1668813031440876626 1668813096410030625 1668813097558079071 1668813098026872389 1668813100906891623
[2023-06-22 21:42:50.125] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=2636
global_corres=2636
maxNumResiduals / maxNumberOfImages = 218636 / 10 = 21863
m_maxNumberOfImages*m_maxCorrPerImage = 10 x 2171 = 21710
m_solver->solve Time difference = 18.317[ms]
[2023-06-22 21:42:50.151] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-22 21:42:50.151] [warning] [Bundler.cpp:302] frame 1668813100906891623 not selected as keyframe since its rot diff with frame 1668813029401587544 is 2.88785 deg
[bundlesdf.py] processNewFrame done 1668813100906891623
[bundlesdf.py] rematch_after_nerf: True
[2023-06-22 21:42:50.152] [warning] [Bundler.cpp:961] Welcome saveNewframeResult
[2023-06-22 21:42:50.196] [warning] [Bundler.cpp:1110] saveNewframeResult done
[bundlesdf.py] percentile denoise start
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 1668813100979004863
[bundlesdf.py] process frame 1668813100979004863
[bundlesdf.py] frame_pairs: 1
[loftr_wrapper.py] image0: torch.Size([1, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20029717683792114 0.9911332726478577
[loftr_wrapper.py] pair_ids (866,)
[loftr_wrapper.py] corres: (866, 5)
[2023-06-22 21:42:50.270] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=1
[2023-06-22 21:42:50.271] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100979004863 1668813100906891623 #inliers=521, #prev 624
[bundlesdf.py] frame 1668813100979004863 pose update before
[[ 0.496 -0.638  0.589 -0.373]
 [ 0.753  0.654  0.073 -0.189]
 [-0.431  0.408  0.805 -0.428]
 [ 0.     0.     0.     1.   ]]
[2023-06-22 21:42:50.273] [warning] [FeatureManager.cpp:1095] procrustesByCorrespondence err per point between 1668813100979004863 and 1668813100906891623: 0.000167952
[bundlesdf.py] frame 1668813100979004863 pose update after
[[ 0.498 -0.648  0.576 -0.369]
 [ 0.754  0.651  0.08  -0.191]
 [-0.427  0.395  0.813 -0.432]
 [ 0.     0.     0.     1.   ]]
[2023-06-22 21:42:50.274] [warning] [Bundler.cpp:67] forgetting frame 1668813100572221024
[2023-06-22 21:42:50.274] [warning] [FeatureManager.cpp:469] forgetting frame 1668813100572221024
[bundlesdf.py] exceed window size, forget frame 1668813100572221024
[2023-06-22 21:42:50.280] [warning] [Bundler.cpp:435] total keyframes=328, want to select 10
[2023-06-22 21:42:50.321] [warning] [Bundler.cpp:516] ids#=328, max_BA_frames-frames.size()=9
[2023-06-22 21:42:50.321] [warning] [Bundler.cpp:525] frames#=10
[2023-06-22 21:42:50.321] [warning] [Bundler.cpp:793] frame 1668813100979004863 and 1668813029097767458 visible=0.919226
[2023-06-22 21:42:50.321] [warning] [Bundler.cpp:802] add frame (1668813100979004863, 1668813029097767458) into pairs
[2023-06-22 21:42:50.321] [warning] [Bundler.cpp:793] frame 1668813100979004863 and 1668813030780872835 visible=0.953998
[2023-06-22 21:42:50.321] [warning] [Bundler.cpp:802] add frame (1668813100979004863, 1668813030780872835) into pairs
[2023-06-22 21:42:50.321] [warning] [Bundler.cpp:793] frame 1668813100979004863 and 1668813031103320518 visible=0.975917
[2023-06-22 21:42:50.321] [warning] [Bundler.cpp:802] add frame (1668813100979004863, 1668813031103320518) into pairs
[2023-06-22 21:42:50.321] [warning] [Bundler.cpp:793] frame 1668813100979004863 and 1668813031206709461 visible=0.973346
[2023-06-22 21:42:50.321] [warning] [Bundler.cpp:802] add frame (1668813100979004863, 1668813031206709461) into pairs
[2023-06-22 21:42:50.321] [warning] [Bundler.cpp:793] frame 1668813100979004863 and 1668813031312962221 visible=0.962522
[2023-06-22 21:42:50.321] [warning] [Bundler.cpp:802] add frame (1668813100979004863, 1668813031312962221) into pairs
[2023-06-22 21:42:50.322] [warning] [Bundler.cpp:793] frame 1668813100979004863 and 1668813031440876626 visible=0.925585
[2023-06-22 21:42:50.322] [warning] [Bundler.cpp:802] add frame (1668813100979004863, 1668813031440876626) into pairs
[2023-06-22 21:42:50.322] [warning] [Bundler.cpp:793] frame 1668813100979004863 and 1668813096410030625 visible=0.90759
[2023-06-22 21:42:50.322] [warning] [Bundler.cpp:802] add frame (1668813100979004863, 1668813096410030625) into pairs
[2023-06-22 21:42:50.322] [warning] [Bundler.cpp:793] frame 1668813100979004863 and 1668813097558079071 visible=0.901908
[2023-06-22 21:42:50.322] [warning] [Bundler.cpp:802] add frame (1668813100979004863, 1668813097558079071) into pairs
[2023-06-22 21:42:50.322] [warning] [Bundler.cpp:793] frame 1668813100979004863 and 1668813098026872389 visible=0.919497
[2023-06-22 21:42:50.322] [warning] [Bundler.cpp:802] add frame (1668813100979004863, 1668813098026872389) into pairs
[bundlesdf.py] frame_pairs: 9
[loftr_wrapper.py] image0: torch.Size([9, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.2001761794090271 0.9880563020706177
[loftr_wrapper.py] pair_ids (4093,)
[loftr_wrapper.py] corres: (4093, 5)
[2023-06-22 21:42:50.701] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=9
[2023-06-22 21:42:50.723] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100979004863 1668813029097767458 #inliers=281, #prev 463
[2023-06-22 21:42:50.723] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100979004863 1668813030780872835 #inliers=227, #prev 358
[2023-06-22 21:42:50.723] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100979004863 1668813031103320518 #inliers=201, #prev 313
[2023-06-22 21:42:50.723] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100979004863 1668813031206709461 #inliers=122, #prev 265
[2023-06-22 21:42:50.723] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100979004863 1668813031312962221 #inliers=82, #prev 198
[2023-06-22 21:42:50.723] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100979004863 1668813031440876626 #inliers=56, #prev 139
[2023-06-22 21:42:50.723] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100979004863 1668813096410030625 #inliers=149, #prev 318
[2023-06-22 21:42:50.723] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100979004863 1668813097558079071 #inliers=312, #prev 444
[2023-06-22 21:42:50.723] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813100979004863 1668813098026872389 #inliers=375, #prev 560
#optimizeGPU frames=10, #keyframes=328, #_frames=334
1668813029097767458 1668813030780872835 1668813031103320518 1668813031206709461 1668813031312962221 1668813031440876626 1668813096410030625 1668813097558079071 1668813098026872389 1668813100979004863
[2023-06-22 21:42:50.732] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=2270
global_corres=2270
maxNumResiduals / maxNumberOfImages = 218270 / 10 = 21827
m_maxNumberOfImages*m_maxCorrPerImage = 10 x 1805 = 18050
m_solver->solve Time difference = 19.442[ms]
[2023-06-22 21:42:50.760] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-22 21:42:50.760] [warning] [Bundler.cpp:302] frame 1668813100979004863 not selected as keyframe since its rot diff with frame 1668813029401587544 is 2.61838 deg
[bundlesdf.py] processNewFrame done 1668813100979004863
[bundlesdf.py] rematch_after_nerf: True
[2023-06-22 21:42:50.761] [warning] [Bundler.cpp:961] Welcome saveNewframeResult
[2023-06-22 21:42:50.807] [warning] [Bundler.cpp:1110] saveNewframeResult done
[bundlesdf.py] percentile denoise start
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 1668813101044386332
[bundlesdf.py] process frame 1668813101044386332
[bundlesdf.py] frame_pairs: 1
[loftr_wrapper.py] image0: torch.Size([1, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20004989206790924 0.952591061592102
[loftr_wrapper.py] pair_ids (732,)
[loftr_wrapper.py] corres: (732, 5)
[2023-06-22 21:42:50.879] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=1
[2023-06-22 21:42:50.881] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101044386332 1668813100979004863 #inliers=441, #prev 544
[bundlesdf.py] frame 1668813101044386332 pose update before
[[ 0.501 -0.647  0.574 -0.369]
 [ 0.754  0.652  0.077 -0.189]
 [-0.424  0.395  0.815 -0.433]
 [ 0.     0.     0.     1.   ]]
[2023-06-22 21:42:50.882] [warning] [FeatureManager.cpp:1095] procrustesByCorrespondence err per point between 1668813101044386332 and 1668813100979004863: 0.000219736
[bundlesdf.py] frame 1668813101044386332 pose update after
[[ 0.502 -0.636  0.586 -0.379]
 [ 0.752  0.656  0.068 -0.18 ]
 [-0.427  0.407  0.807 -0.426]
 [ 0.     0.     0.     1.   ]]
[2023-06-22 21:42:50.883] [warning] [Bundler.cpp:67] forgetting frame 1668813100645056940
[2023-06-22 21:42:50.883] [warning] [FeatureManager.cpp:469] forgetting frame 1668813100645056940
[bundlesdf.py] exceed window size, forget frame 1668813100645056940
[2023-06-22 21:42:50.889] [warning] [Bundler.cpp:435] total keyframes=328, want to select 10
[2023-06-22 21:42:50.931] [warning] [Bundler.cpp:516] ids#=328, max_BA_frames-frames.size()=9
[2023-06-22 21:42:50.931] [warning] [Bundler.cpp:525] frames#=10
[2023-06-22 21:42:50.931] [warning] [Bundler.cpp:793] frame 1668813101044386332 and 1668813029097767458 visible=0.902596
[2023-06-22 21:42:50.931] [warning] [Bundler.cpp:802] add frame (1668813101044386332, 1668813029097767458) into pairs
[2023-06-22 21:42:50.931] [warning] [Bundler.cpp:793] frame 1668813101044386332 and 1668813030780872835 visible=0.939618
[2023-06-22 21:42:50.931] [warning] [Bundler.cpp:802] add frame (1668813101044386332, 1668813030780872835) into pairs
[2023-06-22 21:42:50.931] [warning] [Bundler.cpp:793] frame 1668813101044386332 and 1668813031103320518 visible=0.969126
[2023-06-22 21:42:50.931] [warning] [Bundler.cpp:802] add frame (1668813101044386332, 1668813031103320518) into pairs
[2023-06-22 21:42:50.931] [warning] [Bundler.cpp:793] frame 1668813101044386332 and 1668813031206709461 visible=0.972268
[2023-06-22 21:42:50.931] [warning] [Bundler.cpp:802] add frame (1668813101044386332, 1668813031206709461) into pairs
[2023-06-22 21:42:50.931] [warning] [Bundler.cpp:793] frame 1668813101044386332 and 1668813031312962221 visible=0.959973
[2023-06-22 21:42:50.931] [warning] [Bundler.cpp:802] add frame (1668813101044386332, 1668813031312962221) into pairs
[2023-06-22 21:42:50.931] [warning] [Bundler.cpp:793] frame 1668813101044386332 and 1668813031440876626 visible=0.926093
[2023-06-22 21:42:50.931] [warning] [Bundler.cpp:802] add frame (1668813101044386332, 1668813031440876626) into pairs
[2023-06-22 21:42:50.932] [warning] [Bundler.cpp:793] frame 1668813101044386332 and 1668813096288462014 visible=0.890574
[2023-06-22 21:42:50.932] [warning] [Bundler.cpp:802] add frame (1668813101044386332, 1668813096288462014) into pairs
[2023-06-22 21:42:50.932] [warning] [Bundler.cpp:793] frame 1668813101044386332 and 1668813096410030625 visible=0.891393
[2023-06-22 21:42:50.932] [warning] [Bundler.cpp:802] add frame (1668813101044386332, 1668813096410030625) into pairs
[2023-06-22 21:42:50.932] [warning] [Bundler.cpp:793] frame 1668813101044386332 and 1668813098026872389 visible=0.90041
[2023-06-22 21:42:50.932] [warning] [Bundler.cpp:802] add frame (1668813101044386332, 1668813098026872389) into pairs
[bundlesdf.py] frame_pairs: 9
[loftr_wrapper.py] image0: torch.Size([9, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20000287890434265 0.9935914278030396
[loftr_wrapper.py] pair_ids (3929,)
[loftr_wrapper.py] corres: (3929, 5)
[2023-06-22 21:42:51.308] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=9
[2023-06-22 21:42:51.330] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101044386332 1668813029097767458 #inliers=365, #prev 506
[2023-06-22 21:42:51.330] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101044386332 1668813030780872835 #inliers=330, #prev 415
[2023-06-22 21:42:51.330] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101044386332 1668813031103320518 #inliers=245, #prev 349
[2023-06-22 21:42:51.330] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101044386332 1668813031206709461 #inliers=161, #prev 308
[2023-06-22 21:42:51.330] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101044386332 1668813031312962221 #inliers=137, #prev 255
[2023-06-22 21:42:51.330] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101044386332 1668813031440876626 #inliers=74, #prev 154
[2023-06-22 21:42:51.330] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101044386332 1668813096288462014 #inliers=111, #prev 228
[2023-06-22 21:42:51.330] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101044386332 1668813096410030625 #inliers=141, #prev 282
[2023-06-22 21:42:51.330] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101044386332 1668813098026872389 #inliers=400, #prev 499
#optimizeGPU frames=10, #keyframes=328, #_frames=334
1668813029097767458 1668813030780872835 1668813031103320518 1668813031206709461 1668813031312962221 1668813031440876626 1668813096288462014 1668813096410030625 1668813098026872389 1668813101044386332
[2023-06-22 21:42:51.342] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=3033
global_corres=3033
maxNumResiduals / maxNumberOfImages = 219033 / 10 = 21903
m_maxNumberOfImages*m_maxCorrPerImage = 10 x 1964 = 19640
m_solver->solve Time difference = 19.719[ms]
[2023-06-22 21:42:51.369] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-22 21:42:51.370] [warning] [Bundler.cpp:302] frame 1668813101044386332 not selected as keyframe since its rot diff with frame 1668813029401587544 is 2.70892 deg
[bundlesdf.py] processNewFrame done 1668813101044386332
[bundlesdf.py] rematch_after_nerf: True
[2023-06-22 21:42:51.371] [warning] [Bundler.cpp:961] Welcome saveNewframeResult
[2023-06-22 21:42:51.415] [warning] [Bundler.cpp:1110] saveNewframeResult done
[bundlesdf.py] percentile denoise start
[bundlesdf.py] percentile denoise done
[bundlesdf.py] processNewFrame start 1668813101109772235
[bundlesdf.py] process frame 1668813101109772235
[bundlesdf.py] frame_pairs: 1
[loftr_wrapper.py] image0: torch.Size([1, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20034536719322205 0.9984253644943237
[loftr_wrapper.py] pair_ids (911,)
[loftr_wrapper.py] corres: (911, 5)
[2023-06-22 21:42:51.489] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=1
[2023-06-22 21:42:51.492] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101109772235 1668813101044386332 #inliers=596, #prev 680
[bundlesdf.py] frame 1668813101109772235 pose update before
[[ 0.499 -0.64   0.584 -0.377]
 [ 0.755  0.652  0.07  -0.183]
 [-0.426  0.406  0.809 -0.427]
 [ 0.     0.     0.     1.   ]]
[2023-06-22 21:42:51.494] [warning] [FeatureManager.cpp:1095] procrustesByCorrespondence err per point between 1668813101109772235 and 1668813101044386332: 0.000141906
[bundlesdf.py] frame 1668813101109772235 pose update after
[[ 0.499 -0.632  0.593 -0.383]
 [ 0.753  0.655  0.065 -0.18 ]
 [-0.429  0.414  0.803 -0.421]
 [ 0.     0.     0.     1.   ]]
[2023-06-22 21:42:51.495] [warning] [Bundler.cpp:67] forgetting frame 1668813100708052396
[2023-06-22 21:42:51.495] [warning] [FeatureManager.cpp:469] forgetting frame 1668813100708052396
[bundlesdf.py] exceed window size, forget frame 1668813100708052396
[2023-06-22 21:42:51.500] [warning] [Bundler.cpp:435] total keyframes=328, want to select 10
[2023-06-22 21:42:51.543] [warning] [Bundler.cpp:516] ids#=328, max_BA_frames-frames.size()=9
[2023-06-22 21:42:51.543] [warning] [Bundler.cpp:525] frames#=10
[2023-06-22 21:42:51.543] [warning] [Bundler.cpp:793] frame 1668813101109772235 and 1668813029097767458 visible=0.898641
[2023-06-22 21:42:51.543] [warning] [Bundler.cpp:802] add frame (1668813101109772235, 1668813029097767458) into pairs
[2023-06-22 21:42:51.543] [warning] [Bundler.cpp:793] frame 1668813101109772235 and 1668813030780872835 visible=0.936685
[2023-06-22 21:42:51.543] [warning] [Bundler.cpp:802] add frame (1668813101109772235, 1668813030780872835) into pairs
[2023-06-22 21:42:51.544] [warning] [Bundler.cpp:793] frame 1668813101109772235 and 1668813031103320518 visible=0.968478
[2023-06-22 21:42:51.544] [warning] [Bundler.cpp:802] add frame (1668813101109772235, 1668813031103320518) into pairs
[2023-06-22 21:42:51.544] [warning] [Bundler.cpp:793] frame 1668813101109772235 and 1668813031206709461 visible=0.96644
[2023-06-22 21:42:51.544] [warning] [Bundler.cpp:802] add frame (1668813101109772235, 1668813031206709461) into pairs
[2023-06-22 21:42:51.544] [warning] [Bundler.cpp:793] frame 1668813101109772235 and 1668813031312962221 visible=0.954891
[2023-06-22 21:42:51.544] [warning] [Bundler.cpp:802] add frame (1668813101109772235, 1668813031312962221) into pairs
[2023-06-22 21:42:51.544] [warning] [Bundler.cpp:793] frame 1668813101109772235 and 1668813031440876626 visible=0.9125
[2023-06-22 21:42:51.544] [warning] [Bundler.cpp:802] add frame (1668813101109772235, 1668813031440876626) into pairs
[2023-06-22 21:42:51.544] [warning] [Bundler.cpp:793] frame 1668813101109772235 and 1668813096288462014 visible=0.891033
[2023-06-22 21:42:51.544] [warning] [Bundler.cpp:802] add frame (1668813101109772235, 1668813096288462014) into pairs
[2023-06-22 21:42:51.545] [warning] [Bundler.cpp:793] frame 1668813101109772235 and 1668813096410030625 visible=0.891712
[2023-06-22 21:42:51.545] [warning] [Bundler.cpp:802] add frame (1668813101109772235, 1668813096410030625) into pairs
[2023-06-22 21:42:51.545] [warning] [Bundler.cpp:793] frame 1668813101109772235 and 1668813098026872389 visible=0.888451
[2023-06-22 21:42:51.545] [warning] [Bundler.cpp:802] add frame (1668813101109772235, 1668813098026872389) into pairs
[bundlesdf.py] frame_pairs: 9
[loftr_wrapper.py] image0: torch.Size([9, 1, 400, 400])
[loftr_wrapper.py] net forward
[loftr_wrapper.py] mconf, 0.20008862018585205 0.9952269792556763
[loftr_wrapper.py] pair_ids (3860,)
[loftr_wrapper.py] corres: (3860, 5)
[2023-06-22 21:42:51.922] [warning] [FeatureManager.cpp:1589] start multi pair ransac GPU, pairs#=9
[2023-06-22 21:42:51.944] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101109772235 1668813029097767458 #inliers=375, #prev 511
[2023-06-22 21:42:51.944] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101109772235 1668813030780872835 #inliers=270, #prev 360
[2023-06-22 21:42:51.944] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101109772235 1668813031103320518 #inliers=243, #prev 335
[2023-06-22 21:42:51.944] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101109772235 1668813031206709461 #inliers=182, #prev 342
[2023-06-22 21:42:51.944] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101109772235 1668813031312962221 #inliers=123, #prev 241
[2023-06-22 21:42:51.944] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101109772235 1668813031440876626 #inliers=90, #prev 180
[2023-06-22 21:42:51.944] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101109772235 1668813096288462014 #inliers=96, #prev 237
[2023-06-22 21:42:51.944] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101109772235 1668813096410030625 #inliers=184, #prev 326
[2023-06-22 21:42:51.944] [warning] [FeatureManager.cpp:1699] ransac makes match betwee frame 1668813101109772235 1668813098026872389 #inliers=330, #prev 427
#optimizeGPU frames=10, #keyframes=328, #_frames=334
1668813029097767458 1668813030780872835 1668813031103320518 1668813031206709461 1668813031312962221 1668813031440876626 1668813096288462014 1668813096410030625 1668813098026872389 1668813101109772235
[2023-06-22 21:42:51.955] [warning] [Bundler.cpp:920] OptimizerGPU begin, global_corres#=2962
global_corres=2962
maxNumResiduals / maxNumberOfImages = 218962 / 10 = 21896
m_maxNumberOfImages*m_maxCorrPerImage = 10 x 1893 = 18930
m_solver->solve Time difference = 20.157[ms]
[2023-06-22 21:42:51.984] [warning] [Bundler.cpp:924] OptimizerGPU finish
[2023-06-22 21:42:51.984] [warning] [Bundler.cpp:302] frame 1668813101109772235 not selected as keyframe since its rot diff with frame 1668813029401587544 is 2.95976 deg
[bundlesdf.py] processNewFrame done 1668813101109772235
[bundlesdf.py] rematch_after_nerf: True
[2023-06-22 21:42:51.985] [warning] [Bundler.cpp:961] Welcome saveNewframeResult
[2023-06-22 21:42:52.032] [warning] [Bundler.cpp:1110] saveNewframeResult done
[2023-06-22 21:42:55.695] [warning] [Bundler.cpp:49] Connected to nerf_port 9999
[2023-06-22 21:42:55.696] [warning] [FeatureManager.cpp:2084] Connected to port 5555
default_cfg {'backbone_type': 'ResNetFPN', 'resolution': (8, 2), 'fine_window_size': 5, 'fine_concat_coarse_feat': True, 'resnetfpn': {'initial_dim': 128, 'block_dims': [128, 196, 256]}, 'coarse': {'d_model': 256, 'd_ffn': 256, 'nhead': 8, 'layer_names': ['self', 'cross', 'self', 'cross', 'self', 'cross', 'self', 'cross'], 'attention': 'linear', 'temp_bug_fix': False}, 'match_coarse': {'thr': 0.2, 'border_rm': 2, 'match_type': 'dual_softmax', 'dsmax_temperature': 0.1, 'skh_iters': 3, 'skh_init_bin_score': 1.0, 'skh_prefilter': True, 'train_coarse_percent': 0.4, 'train_pad_num_gt_min': 200}, 'fine': {'d_model': 128, 'd_ffn': 128, 'nhead': 8, 'layer_names': ['self', 'cross'], 'attention': 'linear'}}
[bundlesdf.py] last_stamp 1668813101109772235
[bundlesdf.py] keyframes#: 328
[tool.py] compute_scene_bounds_worker start
[tool.py] compute_scene_bounds_worker done
[tool.py] merge pcd
[tool.py] compute_translation_scales done
translation_cvcam=[0.00942001 0.00477833 0.00672751], sc_factor=5.6659060594129675
[nerf_runner.py] Octree voxel dilate_radius:1
level 0, resolution: 16
level 1, resolution: 20
level 2, resolution: 24
level 3, resolution: 28
level 4, resolution: 34
level 5, resolution: 41
level 6, resolution: 49
level 7, resolution: 59
level 8, resolution: 71
level 9, resolution: 85
level 10, resolution: 102
level 11, resolution: 123
level 12, resolution: 148
level 13, resolution: 177
level 14, resolution: 213
level 15, resolution: 256
GridEncoder: input_dim=3 n_levels=16 level_dim=2 resolution=16 -> 256 per_level_scale=1.2030 params=(20411696, 2) gridtype=hash align_corners=False
sc_factor 5.6659060594129675
translation [0.00942001 0.00477833 0.00672751]
[nerf_runner.py] denoise cloud
[nerf_runner.py] Denoising rays based on octree cloud
[nerf_runner.py] bad_mask#=311206
rays torch.Size([30719056, 12])
Start training
[nerf_runner.py] train progress 0/2001
[nerf_runner.py] Iter: 0, valid_samples: 655021/655360, valid_rays: 2048/2048, loss: 14.3810930, rgb_loss: 12.4128227, rgb0_loss: 0.0000000, fs_rgb_loss: 0.0000000, depth_loss: 0.0000000, depth_loss0: 0.0000000, fs_loss: 0.0770879, point_cloud_loss: 0.0000000, point_cloud_normal_loss: 0.0000000, sdf_loss: 1.7854172, eikonal_loss: 0.0000000, variation_loss: 0.0000000, truncation(meter): 0.0100000, pose_reg: 0.0000000, reg_features: 0.1057650,

[nerf_runner.py] train progress 200/2001
[nerf_runner.py] train progress 400/2001
[nerf_runner.py] train progress 600/2001
[nerf_runner.py] train progress 800/2001
[nerf_runner.py] train progress 1000/2001
[nerf_runner.py] train progress 1200/2001
[nerf_runner.py] train progress 1400/2001
[nerf_runner.py] train progress 1600/2001
[nerf_runner.py] train progress 1800/2001
[nerf_runner.py] train progress 2000/2001
cp: cannot stat '/home/mona/BundleSDF/out_dir///nerf_with_bundletrack_online/image_step_*.png': No such file or directory
Traceback (most recent call last):
  File "run_custom.py", line 203, in <module>
    run_one_video(video_dir=args.video_dir, out_folder=args.out_folder, use_segmenter=args.use_segmenter, use_gui=args.use_gui)
  File "run_custom.py", line 107, in run_one_video
    run_one_video_global_nerf(out_folder=out_folder)
  File "run_custom.py", line 152, in run_one_video_global_nerf
    tracker.run_global_nerf(reader=reader, get_texture=True, tex_res=512)
  File "/home/mona/BundleSDF/bundlesdf.py", line 747, in run_global_nerf
    mesh,sigma,query_pts = nerf.extract_mesh(voxel_size=self.cfg_nerf['mesh_resolution'],isolevel=0, mesh_savepath='',return_sigma=True)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context
    return func(*args, **kwargs)
TypeError: extract_mesh() got an unexpected keyword argument 'mesh_savepath'
Process Process-4:
Traceback (most recent call last):
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
    self.run()
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/mona/BundleSDF/bundlesdf.py", line 89, in run_nerf
    join = p_dict['join']
  File "<string>", line 2, in __getitem__
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/managers.py", line 835, in _callmethod
    kind, result = conn.recv()
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/connection.py", line 250, in recv
    buf = self._recv_bytes()
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/connection.py", line 414, in _recv_bytes
    buf = self._recv(4)
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/connection.py", line 379, in _recv
    chunk = read(handle, remaining)
ConnectionResetError: [Errno 104] Connection reset by peer
[2023-06-22 21:46:16.083] [warning] [Bundler.cpp:59] Destructor
[2023-06-22 21:46:16.086] [warning] [Bundler.cpp:59] Destructor

Basically, nothing has been written at all into this folder:

(py38) root@ard-gpu-01:/home/mona/BundleSDF# ls /home/mona/BundleSDF/out_dir///nerf_with_bundletrack_online
total 76K
drwxr-xr-x 1946 root root  68K Jun 22 21:42 ..
drwxr-xr-x    2 root root 4.0K Jun 22 21:46 .

du -h out_dir shows 2.6G of storage. You know why nothing was written?

Number of level 1 directories in out_dir:

(py38) root@ard-gpu-01:/home/mona/BundleSDF/out_dir# find . -mindepth 1 -maxdepth 1 -type d -not -name '.*' -print | wc -l
1944

Which is in relation to number of RGB frames in milk:

(base) mona@ard-gpu-01:~/milk/2022-11-18-15-10-24_milk/rgb$ ls | wc -l
1935

docker pull

Hi:
when running "docker pull nvcr.io/nvidian/bundlesdf" get the error:
Error response from daemon: unauthorized: authentication required
so how to fix it?

[acceleratesupport.py] No OpenGL_accelerate module loaded: No module named 'OpenGL_accelerate' libGL error: MESA-LOADER: failed to retrieve device information

It seems this library should be added in docker?

[2023-06-23 12:39:45.507] [warning] [FeatureManager.cpp:2084] Connected to port 5555
default_cfg {'backbone_type': 'ResNetFPN', 'resolution': (8, 2), 'fine_window_size': 5, 'fine_concat_coarse_feat': True, 'resnetfpn': {'initial_dim': 128, 'block_dims': [128, 196, 256]}, 'coarse': {'d_model': 256, 'd_ffn': 256, 'nhead': 8, 'layer_names': ['self', 'cross', 'self', 'cross', 'self', 'cross', 'self', 'cross'], 'attention': 'linear', 'temp_bug_fix': False}, 'match_coarse': {'thr': 0.2, 'border_rm': 2, 'match_type': 'dual_softmax', 'dsmax_temperature': 0.1, 'skh_iters': 3, 'skh_init_bin_score': 1.0, 'skh_prefilter': True, 'train_coarse_percent': 0.4, 'train_pad_num_gt_min': 200}, 'fine': {'d_model': 128, 'd_ffn': 128, 'nhead': 8, 'layer_names': ['self', 'cross'], 'attention': 'linear'}}
[bundlesdf.py] last_stamp 1668813101109772235
[bundlesdf.py] keyframes#: 331
[tool.py] compute_scene_bounds_worker start
[tool.py] compute_scene_bounds_worker done
[tool.py] merge pcd
[tool.py] compute_translation_scales done
translation_cvcam=[0.00944415 0.00472869 0.00667144], sc_factor=5.663331958769535
[nerf_runner.py] Octree voxel dilate_radius:1
level 0, resolution: 16
level 1, resolution: 20
level 2, resolution: 24
level 3, resolution: 28
level 4, resolution: 34
level 5, resolution: 41
level 6, resolution: 49
level 7, resolution: 59
level 8, resolution: 71
level 9, resolution: 85
level 10, resolution: 102
level 11, resolution: 123
level 12, resolution: 148
level 13, resolution: 177
level 14, resolution: 213
level 15, resolution: 256
GridEncoder: input_dim=3 n_levels=16 level_dim=2 resolution=16 -> 256 per_level_scale=1.2030 params=(20411696, 2) gridtype=hash align_corners=False
sc_factor 5.663331958769535
translation [0.00944415 0.00472869 0.00667144]
[nerf_runner.py] denoise cloud
[nerf_runner.py] Denoising rays based on octree cloud
[nerf_runner.py] bad_mask#=319154
rays torch.Size([30939385, 12])
Start training
[nerf_runner.py] train progress 0/2001
[nerf_runner.py] Iter: 0, valid_samples: 654676/655360, valid_rays: 2048/2048, loss: 14.6214256, rgb_loss: 12.6975698, rgb0_loss: 0.0000000, fs_rgb_loss: 0.0000000, depth_loss: 0.0000000, depth_loss0: 0.0000000, fs_loss: 0.0750127, point_cloud_loss: 0.0000000, point_cloud_normal_loss: 0.0000000, sdf_loss: 1.7440411, eikonal_loss: 0.0000000, variation_loss: 0.0000000, truncation(meter): 0.0100000, pose_reg: 0.0000000, reg_features: 0.1048014, 

[nerf_runner.py] train progress 200/2001
[nerf_runner.py] train progress 400/2001
[nerf_runner.py] train progress 600/2001
[nerf_runner.py] train progress 800/2001
[nerf_runner.py] train progress 1000/2001
[nerf_runner.py] train progress 1200/2001
[nerf_runner.py] train progress 1400/2001
[nerf_runner.py] train progress 1600/2001
[nerf_runner.py] train progress 1800/2001
[nerf_runner.py] train progress 2000/2001
cp: cannot stat '/home/mona/BundleSDF/out_dir///nerf_with_bundletrack_online/image_step_*.png': No such file or directory
sc_factor is:  5.663331958769535
[nerf_runner.py] query_pts:torch.Size([5545233, 3]), valid:2572824
[nerf_runner.py] Running Marching Cubes
[nerf_runner.py] done V:(91315, 3), F:(182152, 3)
[acceleratesupport.py] No OpenGL_accelerate module loaded: No module named 'OpenGL_accelerate'
libGL error: MESA-LOADER: failed to retrieve device information
Traceback (most recent call last):
  File "run_custom.py", line 203, in <module>
    run_one_video(video_dir=args.video_dir, out_folder=args.out_folder, use_segmenter=args.use_segmenter, use_gui=args.use_gui)
  File "run_custom.py", line 107, in run_one_video
    run_one_video_global_nerf(out_folder=out_folder)
  File "run_custom.py", line 152, in run_one_video_global_nerf
    tracker.run_global_nerf(reader=reader, get_texture=True, tex_res=512)
  File "/home/mona/BundleSDF/bundlesdf.py", line 763, in run_global_nerf
    mesh = nerf.mesh_texture_from_train_images(mesh, rgbs_raw=rgbs_raw, train_texture=False, tex_res=tex_res)
  File "/home/mona/BundleSDF/nerf_runner.py", line 1494, in mesh_texture_from_train_images
    renderer = ModelRendererOffscreen([], cam_K=self.K, H=self.H, W=self.W, zfar=self.cfg['far']*self.cfg['sc_factor'])
  File "/home/mona/BundleSDF/offscreen_renderer.py", line 58, in __init__
    self.r = pyrender.OffscreenRenderer(self.W, self.H)  #!NOTE version>0.1.32 not work https://github.com/mmatl/pyrender/issues/85
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/pyrender/offscreen.py", line 31, in __init__
    self._create()
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/pyrender/offscreen.py", line 149, in _create
    self._platform.init_context()
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/pyrender/platforms/pyglet_platform.py", line 50, in init_context
    self._window = pyglet.window.Window(config=conf, visible=False,
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/pyglet/window/xlib/__init__.py", line 133, in __init__
    super(XlibWindow, self).__init__(*args, **kwargs)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/pyglet/window/__init__.py", line 538, in __init__
    context = config.create_context(gl.current_context)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/pyglet/gl/xlib.py", line 105, in create_context
    return XlibContext(self, share)
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/pyglet/gl/xlib.py", line 127, in __init__
    raise gl.ContextException('Could not create GL context')
pyglet.gl.ContextException: Could not create GL context
Process Process-4:
Traceback (most recent call last):
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
    self.run()
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/mona/BundleSDF/bundlesdf.py", line 89, in run_nerf
    join = p_dict['join']
  File "<string>", line 2, in __getitem__
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/managers.py", line 835, in _callmethod
    kind, result = conn.recv()
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/connection.py", line 250, in recv
    buf = self._recv_bytes()
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/connection.py", line 414, in _recv_bytes
    buf = self._recv(4)
  File "/opt/conda/envs/py38/lib/python3.8/multiprocessing/connection.py", line 379, in _recv
    chunk = read(handle, remaining)
ConnectionResetError: [Errno 104] Connection reset by peer
[2023-06-23 12:44:07.481] [warning] [Bundler.cpp:59] Destructor
[2023-06-23 12:44:07.483] [warning] [Bundler.cpp:59] Destructor
(py38) root@ard-gpu-01:/home/mona/BundleSDF# 

Solution may be

pip install PyOpenGL-accelerate

It takes very long to reproduce the error so I cannot fully confirm.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.