Giter Club home page Giter Club logo

gigapose's Introduction

GigaPose: Fast and Robust Novel Object Pose Estimation

via One Correspondence

TL;DR: GigaPose is a "hybrid" template-patch correspondence approach to estimate 6D pose of novel objects in RGB images: GigaPose first uses templates, rendered images of the CAD models, to recover the out-of-plane rotation (2DoF) and then uses patch correspondences to estimate the remaining 4DoF.

The codebase is slightly modified to adapt BOP challenge 2024, if you work on BOP challenge 2023 and have any issues, please go back to previous commits:

git checkout 388e8bddd8a5443e284a7f70ad103d03f3f461c5

News 📣

  • [May 24th, 2024] We added the instructions for running on BOP challenge 2024 datasets and fixed memory requirement issues.
  • [January 19th, 2024] We released the intructions for estimating pose of novel objects from a single reference image on LM-O dataset.
  • [January 11th, 2024] We released the code for both training and testing settings. We are working on the demo for custom objects including detecting novel objects with CNOS and novel object pose estimation from a single reference image by reconstructing objects with Wonder3D. Stay tuned!

Citations

@inproceedings{nguyen2024gigaPose,
    title={GigaPose: Fast and Robust Novel Object Pose Estimation via One Correspondence},
    author={Nguyen, Van Nguyen and Groueix, Thibault and Salzmann, Mathieu and Lepetit, Vincent},
    booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
    year={2024}}

GigaPose's codebase is mainly derived from CNOS and MegaPose:

@inproceedings{nguyen2023cnos,
    title={CNOS: A Strong Baseline for CAD-based Novel Object Segmentation},
    author={Nguyen, Van Nguyen and Groueix, Thibault and Ponimatkin, Georgy and Lepetit, Vincent and Hodan, Tomas},
    booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision},
    pages={2134--2140},
    year={2023}
}

@inproceedings{labbe2022megapose,
    title     = {MegaPose: 6D Pose Estimation of Novel Objects via Render \& Compare},
    author    = {Labb\'e, Yann and Manuelli, Lucas and Mousavian, Arsalan and Tyree, Stephen and Birchfield, Stan and Tremblay, Jonathan and Carpentier, Justin and Aubry, Mathieu and Fox, Dieter and Sivic, Josef},
    booktitle = {Proceedings of the 6th Conference on Robot Learning (CoRL)},
    year      = {2022},
} 

Installation 👷

Click to expand

Environment

conda env create -f environment.yml
conda activate gigapose
bash src/scripts/install_env.sh

# to install megapose
pip install -e .

# to install bop_toolkit 
pip install git+https://github.com/thodan/bop_toolkit.git

Checkpoints

# download cnos detections for BOP'23 dataset
pip install -U "huggingface_hub[cli]"
python -m src.scripts.download_default_detections

# download gigaPose's checkpoints 
python -m src.scripts.download_gigapose

# download megapose's checkpoints
python -m src.scripts.download_megapose

Datasets

All datasets are defined in BOP format.

For BOP challenge 2024 core datasets (HOPE, HANDAL, HOT-3D), download each dataset with the following command:

pip install -U "huggingface_hub[cli]"
export DATASET_NAME=hope
python -m src.scripts.download_test_bop24 test_dataset_name=$DATASET_NAME

For BOP challenge 2023 core datasets (LMO, TLESS, TUDL, ICBIN, ITODD, HB, and TLESS), download all datasets with the following command:

# download testing images and CAD models
python -m src.scripts.download_test_bop23

For BOP challenge 2024 core datasets (HOPE, HANDAL, HOT-3D), render the templates from the CAD models:

python -m src.scripts.render_bop_templates test_dataset_name=hope

For BOP challenge 2023 core datasets (LMO, TLESS, TUDL, ICBIN, ITODD, HB, and TLESS), we provide the pre-rendered templates (from this link) and also the code to render the templates from the CAD models.

# option 1: download pre-rendered templates 
python -m src.scripts.download_bop_templates

# option 2: render templates from CAD models 
python -m src.scripts.render_bop_templates

Here is the structure of $ROOT_DIR after downloading all the above files (similar to BOP HuggingFace Hub):

├── $ROOT_DIR
    ├── datasets/ 
      ├── default_detections/  
      ├── lmo/ 
      ├── ... 
      ├── templates/
    ├── pretrained/ 
      ├── gigaPose_v1.ckpt 
      ├── megapose-models/

[Optional] We also provide the training code/datasets which is not necessary for testing purposes.

Click to expand
# download training images (> 2TB)
python -m src.scripts.download_train_metaData
python -m src.scripts.download_train_cad 
python -m src.scripts.download_train 

# render templates ( 162 imgs/obj takes ~30mins for gso, ~20hrs for shapenet)
python -m src.scripts.render_gso_templates 
python -m src.scripts.render_shapenet_templates  

If you have training datasets pre-downloaded, you can create a symlink to the folder containing the datasets by running:

ln -s /path/to/datasets/gso $ROOT/datasets/gso

[Optional] Trick for faster converging of ISTNetwork (in-plane, scale, translation): using pretrained weights of LoFTR after Kaiming initialization. Please download the weights and put them in $ROOT_DIR/pretrained/loftr_indoor_ot.ckpt.

Testing on BOP datasets 🚀

If you want to test on BOP challenge 2024 datasets, please follow the instructions below:

Click to expand
  1. Running coarse prediction on a single dataset:
# for 6D detection task
python test.py test_dataset_name=hope run_id=$NAME_RUN test_setting=detection

# for 6D localization task (for only core19 datasets)
python test.py test_dataset_name=lmo run_id=$NAME_RUN test_setting=localization
  1. Running refinement on a single dataset:
# for both 6D detection task
python refine.py test_dataset_name=hope run_id=$NAME_RUN test_setting=detection

# for 6D localization task (for only core19 datasets)
python refine.py test_dataset_name=lmo run_id=$NAME_RUN test_setting=localization

Quantitative results on 6D detection task on HOPEv2 datasets:

Method Refinement Model-based unseen
GigaPose -- 22.57
GigaPose MegaPose --
  1. Evaluating with BOP toolkit:
export INPUT_DIR=DIR_TO_YOUR_PREDICTION_FILE
export FILE_NAME=NAME_PREDICTION_FILE
cd $ROOT_DIR_OF_TOOLKIT
python scripts/eval_bop24_pose.py --results_path $INPUT_DIR --eval_path $INPUT_DIR --result_filenames=$FILE_NAME

If you want to test on BOP challenge 2023 datasets, please follow the instructions below:

Click to expand

GigaPose's coarse prediction for seven core datasets of BOP challenge 2023 is available in this link. Below are the steps to reproduce the results and evaluate with BOP toolkit.

  1. Running coarse prediction on a single dataset:
python test.py test_dataset_name=lmo run_id=$NAME_RUN
  1. Running refinement on a single dataset:
python refine.py test_dataset_name=lmo run_id=$NAME_RUN
  1. Running all steps for all 7 core datasets of BOP challenge:
python -m src.scripts.eval_bop
  1. Evaluating with BOP toolkit:
export INPUT_DIR=DIR_TO_YOUR_PREDICTION_FILE
export FILE_NAME=NAME_PREDICTION_FILE
python bop_toolkit/scripts/eval_bop19_pose.py --renderer_type=vispy --results_path $INPUT_DIR --eval_path $INPUT_DIR --result_filenames=$FILE_NAME

Pose estimation from a single image on LM-O 😺

Click to expand

If you work on this setting, please first go back to previous commits:

git checkout 388e8bddd8a5443e284a7f70ad103d03f3f461c5

Then, download CNOS's detections:

# download gigaPose's checkpoints 
python -m src.scripts.download_cnos_bop23

To relax the need of CAD models, we can reconstruct 3D models from a single image using recent works on diffusion-based 3D reconstruction such as Wonder3D, then apply the same pipeline as GigaPose to estimate object pose. Here are the steps to reproduce the results of novel object pose estimation from a single image on LM-O dataset as shown in our paper:

  • Step 1: Selecting the input reference image for each object. We provide the list of reference images in SuppMat.
  • Step 2: Cropping the input image (and save the cropping matrix for recovering the correct scale for reconstructed 3D models).
  • Step 3: Reconstructing 3D models from the reference images using Wonder3D. Note that the output 3D models are reconstructed in the coordinate frame of input image and in orthographic camera.
  • Step 4: Recovering the scale of reconstructed 3D models using the cropping matrix of Step 2.
  • Step 5: Estimating the object pose using GigaPose's pipeline.

We provide here the inputs and outputs of Wonder3D, here the reconstructed 3D models in Step 1-3 and, this script to recover 3D models in the correct scale. Here is the reconstructed 3D models in the correct scale and in the GT coordinate frame discussed below (note that the GT canonical frame is only for evaluation purposes with BOP Toolkit, while for real applications, we can use the object pose in the input reference image as the canonical frame).

Click to expand

Canonical frame for bop toolkit

For all evaluations, we use bop toolkit which requires the estimated poses defined in the same coordinate frame of GT CAD models. Therefore, there are two options:

  • Option 1: Transforming the GT CAD models to the coordinate frame of the input image and adjust the GT poses accordingly.
  • Option 2: Reconstructing the 3D models, then transforming it to the coordinate frame of GT CAD models by assuming the object pose in the input reference image is known.

Given that the metrics VSD, MSSD, MSPD employed in the bop toolkit depend on the canonical frame of the object, and for a meaningful comparison with MegaPose and GigaPose's results using GT CAD models, we opt Option 2.

Once the reconstructed 3D models are in the correct scale and in the GT coordinate frame, we can now estimate the object pose using GigaPose's pipeline in Step 5:

# download the reconstructed 3D models, test images, and test_targets_bop19.json
mkdir $ROOT_DIR/datasets/lmoWonder3d
wget https://huggingface.co/datasets/nv-nguyen/gigaPose/resolve/main/lmoWonder3d.zip -P $ROOT_DIR/datasets/lmoWonder3d
unzip -j $ROOT_DIR/datasets/lmoWonder3d/lmoWonder3d.zip -d $ROOT_DIR/datasets/lmoWonder3d/models -x "*/._*"

# treat lmoWonder3d as a new dataset by creating a symlink 
ln -s $ROOT_DIR/datasets/lmo/test $ROOT_DIR/datasets/lmoWonder3d/test
ln -s $ROOT_DIR/datasets/lmo/test_targets_bop19.json $ROOT_DIR/datasets/lmoWonder3d/test_targets_bop19.json

# Onboarding by rendering templates from reconstructed 3D models
python -m src.scripts.render_custom_templates custom_dataset_name=lmoWonder3d

# now, it can be tested as a normal dataset as in the previous section
python test.py test_dataset_name=lmoWonder3d run_id=$NAME_RUN
python refine.py test_dataset_name=lmoWonder3d run_id=$NAME_RUN

We provide here the (coarse, refined) results with reconstructed CAD models.

Training

Click to expand
# train on GSO (ID=0), ShapeNet (ID=1), or both (ID=2)
python train.py train_dataset_id=$ID

👩‍⚖️ License

Unless otherwise specified, all code in this repository is made available under MIT license.

🤝 Acknowledgments

This code is heavily borrowed from MegaPose and CNOS.

The authors thank Jonathan Tremblay, Medéric Fourmy, Yann Labbé, Michael Ramamonjisoa and Constantin Aronssohn for their help and valuable feedbacks!

gigapose's People

Contributors

nv-nguyen 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

gigapose's Issues

How many epochs did you train for each network?

Hi,

Thanks for your great work!

I find that the maximum epoch you write in cfg is 1000. I think you might stop training manually. So how many epochs do we need for saturation? If you train is_net and ae_net separately, how many epochs did you train for each network?

Looking forward to your reply.

installation error

hi,
i am a student on a master for ML and i have an assignement to findd and run some 6DPose estimation models.
i tryed to install your on windos with cuda 12 but i cannot even install the code

i get
Installing collected packages: pypng, PyOpenGL, hsluv, freetype-py, cython, vispy, bop-toolkit-lib
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
tables 3.8.0 requires blosc2~=2.0.0, which is not installed.

i tryed to install the tables and block2 but seems that there are not exist

and later in

python -m src.scripts.download_test
i get erros
ModuleNotFoundError: No module named 'hydra'

and again if try to install manually

Downloading Hydra-2.5.tar.gz (82 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 82.4/82.4 kB 386.0 kB/s eta 0:00:00
Preparing metadata (setup.py) ... done
Building wheels for collected packages: hydra
Building wheel for hydra (setup.py) ... error
error: subprocess-exited-with-error

× python setup.py bdist_wheel did not run successfully.
│ exit code: 1
╰─> [19 lines of output]
...
cl : Command line warning D9002 : ignoring unknown option '-std=gnu99'
_hydra.c
src/_hydra.c(61): fatal error C1083: Cannot open include file: 'longintrepr.h': No such file or directory
error: command 'C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\bin\HostX86\x64\cl.exe' failed with exit code 2
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for hydra
Running setup.py clean for hydra
Failed to build hydra
ERROR: Could not build wheels for hydra, which is required to install pyproject.toml-based projects

coudl you provide a way to install it

thank you in advanced

Inference with BOP Challenge 2024 HOPE Dataset - Missing keys_to_shard.json

Hi,

Thank you for your great work.

I was trying to inference your model with the BOP Challenge 2024 dataset "HOPE" but it does not seem to have the keys_to_shard.json file (possibly due to dataset version changes?).

As a result, the inference code does not work.

Is there any way or suggestions to use your model with the 2024 HOPE dataset?

If I've misunderstood something or if there are additional steps I need to follow, your guidance would be greatly appreciated.

Thank you for your help!

Sampling templates from isosphere

Hi, I'm a computer science student and I'm interested in studying your methodology. When I try to execute the create_template_poses.py using blenderproc, according to the prints in the code, it says that the camera location is parallel to tmp. Since no input are needed I guess that these warnings are not due to my setup (I hope at least). It is normal that I receive that warnings or I have to change something?

Moreover, I was investigating on the level0 and level2 that seem to be unused. I read in the paper that you decided to use 162 templates as compromise between performance and accuracy, therefore those two levels are there as residuals from the testing?

Thank you, for the attention!

Mesh template size constraint

Hi! Congrats on your acceptance to CVPR 2024!

I see that you're code is based upon MegaPose.
The MegaPose requires 3D object template to be real-world size.
I am curious whether this is also the case for GigaPose as well. I am hoping that this constraint is not applicable to GigaPose.

Looking forward to the answer!
Thanks!

Getting an error while running test.py

Hi !

Can you please help me set up the environment , as I wanted to test the gigapose algorithm for BOP challenge 2024. I followed the instructions for the data set and did set up the environment accordingly. However, when I am trying to test the algorithm using test.py :

python test.py test_dataset_name=hope run_id=$NAME_RUN test_setting=detection

I am getting some errors to load the dataset correctly :

[2024-06-26 12:08:10,711][__main__][INFO] - Initializing logger, callbacks and trainer
[2024-06-26 12:08:10,714][__main__][INFO] - Tensorboard logger initialized at ./gigaPose_datasets/results/large_/gigapose
ModelCheckpoint(save_last=True, save_top_k=-1, monitor=None) will duplicate the last checkpoint saved.
GPU available: True (cuda), used: True
TPU available: False, using: 0 TPU cores
IPU available: False, using: 0 IPUs
HPU available: False, using: 0 HPUs
[2024-06-26 12:08:10,779][__main__][INFO] - Trainer initialized!
Using cache found in /home/jcl-mj/.cache/torch/hub/facebookresearch_dinov2_main
[2024-06-26 12:08:12,627][dinov2][INFO] - using MLP layer as FFN
[2024-06-26 12:08:16,294][src.models.network.ae_net][INFO] - Initialize AENet done!
[2024-06-26 12:08:16,436][src.models.network.ist_net][INFO] - Init for Regressor with done!
[2024-06-26 12:08:16,500][src.models.network.ist_net][INFO] - Init weights for ISTNet done!
[2024-06-26 12:08:16,500][src.models.network.ist_net][INFO] - Init for ISTNet done!
[2024-06-26 12:08:16,503][src.models.gigaPose][INFO] - Initialize GigaPose done!
[2024-06-26 12:08:16,503][__main__][INFO] - Model initialized!
[2024-06-26 12:08:16,565][src.dataloader.test][INFO] - Split: test for lmo!
Error executing job with overrides: ['test_dataset_name=lmo', 'run_id=', 'test_setting=localization']
Error in call to target 'src.dataloader.test.GigaPoseTestSet':
TypeError('Cannot convert numpy.ndarray to numpy.ndarray')
full_key: data.test.dataloader

Set the environment variable HYDRA_FULL_ERROR=1 for a complete stack trace.

I also tried setting the environment variable HYDRA_FULL_ERROR=1 , but then i am getting this error :

python test.py test_dataset_name=lmo run_id=$NAME_RUN test_setting=localization
[2024-06-26 12:08:10,711][__main__][INFO] - Initializing logger, callbacks and trainer
[2024-06-26 12:08:10,714][__main__][INFO] - Tensorboard logger initialized at ./gigaPose_datasets/results/large_/gigapose
ModelCheckpoint(save_last=True, save_top_k=-1, monitor=None) will duplicate the last checkpoint saved.
GPU available: True (cuda), used: True
TPU available: False, using: 0 TPU cores
IPU available: False, using: 0 IPUs
HPU available: False, using: 0 HPUs
[2024-06-26 12:08:10,779][__main__][INFO] - Trainer initialized!
Using cache found in /home/jcl-mj/.cache/torch/hub/facebookresearch_dinov2_main
[2024-06-26 12:08:12,627][dinov2][INFO] - using MLP layer as FFN
[2024-06-26 12:08:16,294][src.models.network.ae_net][INFO] - Initialize AENet done!
[2024-06-26 12:08:16,436][src.models.network.ist_net][INFO] - Init for Regressor with done!
[2024-06-26 12:08:16,500][src.models.network.ist_net][INFO] - Init weights for ISTNet done!
[2024-06-26 12:08:16,500][src.models.network.ist_net][INFO] - Init for ISTNet done!
[2024-06-26 12:08:16,503][src.models.gigaPose][INFO] - Initialize GigaPose done!
[2024-06-26 12:08:16,503][__main__][INFO] - Model initialized!
[2024-06-26 12:08:16,565][src.dataloader.test][INFO] - Split: test for lmo!
Error executing job with overrides: ['test_dataset_name=lmo', 'run_id=', 'test_setting=localization']
Error in call to target 'src.dataloader.test.GigaPoseTestSet':
TypeError('Cannot convert numpy.ndarray to numpy.ndarray')
full_key: data.test.dataloader

Set the environment variable HYDRA_FULL_ERROR=1 for a complete stack trace.
(gigapose_new) jcl-mj@jcl-mj:~/gigapose_newenv/gigapose$ export HYDRA_FULL_ERROR=1
(gigapose_new) jcl-mj@jcl-mj:~/gigapose_newenv/gigapose$ python test.py test_dataset_name=lmo run_id=$NAME_RUN test_setting=localization
[2024-06-26 12:09:33,580][__main__][INFO] - Initializing logger, callbacks and trainer
[2024-06-26 12:09:33,583][__main__][INFO] - Tensorboard logger initialized at ./gigaPose_datasets/results/large_/gigapose
ModelCheckpoint(save_last=True, save_top_k=-1, monitor=None) will duplicate the last checkpoint saved.
GPU available: True (cuda), used: True
TPU available: False, using: 0 TPU cores
IPU available: False, using: 0 IPUs
HPU available: False, using: 0 HPUs
[2024-06-26 12:09:33,629][__main__][INFO] - Trainer initialized!
Using cache found in /home/jcl-mj/.cache/torch/hub/facebookresearch_dinov2_main
[2024-06-26 12:09:35,377][dinov2][INFO] - using MLP layer as FFN
[2024-06-26 12:09:39,100][src.models.network.ae_net][INFO] - Initialize AENet done!
[2024-06-26 12:09:39,237][src.models.network.ist_net][INFO] - Init for Regressor with done!
[2024-06-26 12:09:39,299][src.models.network.ist_net][INFO] - Init weights for ISTNet done!
[2024-06-26 12:09:39,300][src.models.network.ist_net][INFO] - Init for ISTNet done!
[2024-06-26 12:09:39,303][src.models.gigaPose][INFO] - Initialize GigaPose done!
[2024-06-26 12:09:39,303][__main__][INFO] - Model initialized!
[2024-06-26 12:09:39,360][src.dataloader.test][INFO] - Split: test for lmo!
Error executing job with overrides: ['test_dataset_name=lmo', 'run_id=', 'test_setting=localization']
Traceback (most recent call last):
  File "/home/jcl-mj/anaconda3/envs/gigapose_new/lib/python3.9/site-packages/hydra/_internal/instantiate/_instantiate2.py", line 92, in _call_target
    return _target_(*args, **kwargs)
  File "/home/jcl-mj/gigapose_newenv/gigapose/src/dataloader/test.py", line 72, in __init__
    web_dataset = WebSceneDataset(webdataset_dir / split, depth_scale=depth_scale)
  File "/home/jcl-mj/gigapose_newenv/gigapose/src/custom_megapose/web_scene_dataset.py", line 131, in __init__
    frame_index = self.load_frame_index()
  File "/home/jcl-mj/gigapose_newenv/gigapose/src/custom_megapose/web_scene_dataset.py", line 149, in load_frame_index
    frame_index = pd.DataFrame({"key": keys, "shard_fname": shard_fnames})
  File "/home/jcl-mj/anaconda3/envs/gigapose_new/lib/python3.9/site-packages/pandas/core/frame.py", line 778, in __init__
    mgr = dict_to_mgr(data, index, columns, dtype=dtype, copy=copy, typ=manager)
  File "/home/jcl-mj/anaconda3/envs/gigapose_new/lib/python3.9/site-packages/pandas/core/internals/construction.py", line 480, in dict_to_mgr
    columns = Index(keys) if keys else default_index(0)
  File "/home/jcl-mj/anaconda3/envs/gigapose_new/lib/python3.9/site-packages/pandas/core/indexes/base.py", line 565, in __new__
    arr = sanitize_array(data, None, dtype=dtype, copy=copy)
  File "/home/jcl-mj/anaconda3/envs/gigapose_new/lib/python3.9/site-packages/pandas/core/construction.py", line 654, in sanitize_array
    subarr = maybe_convert_platform(data)
  File "/home/jcl-mj/anaconda3/envs/gigapose_new/lib/python3.9/site-packages/pandas/core/dtypes/cast.py", line 139, in maybe_convert_platform
    arr = lib.maybe_convert_objects(arr)
  File "lib.pyx", line 2538, in pandas._libs.lib.maybe_convert_objects
TypeError: Cannot convert numpy.ndarray to numpy.ndarray


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/jcl-mj/gigapose_newenv/gigapose/test.py", line 87, in <module>
    run_test()
  File "/home/jcl-mj/anaconda3/envs/gigapose_new/lib/python3.9/site-packages/hydra/main.py", line 94, in decorated_main
    _run_hydra(
  File "/home/jcl-mj/anaconda3/envs/gigapose_new/lib/python3.9/site-packages/hydra/_internal/utils.py", line 394, in _run_hydra
    _run_app(
  File "/home/jcl-mj/anaconda3/envs/gigapose_new/lib/python3.9/site-packages/hydra/_internal/utils.py", line 457, in _run_app
    run_and_report(
  File "/home/jcl-mj/anaconda3/envs/gigapose_new/lib/python3.9/site-packages/hydra/_internal/utils.py", line 223, in run_and_report
    raise ex
  File "/home/jcl-mj/anaconda3/envs/gigapose_new/lib/python3.9/site-packages/hydra/_internal/utils.py", line 220, in run_and_report
    return func()
  File "/home/jcl-mj/anaconda3/envs/gigapose_new/lib/python3.9/site-packages/hydra/_internal/utils.py", line 458, in <lambda>
    lambda: hydra.run(
  File "/home/jcl-mj/anaconda3/envs/gigapose_new/lib/python3.9/site-packages/hydra/_internal/hydra.py", line 132, in run
    _ = ret.return_value
  File "/home/jcl-mj/anaconda3/envs/gigapose_new/lib/python3.9/site-packages/hydra/core/utils.py", line 260, in return_value
    raise self._return_value
  File "/home/jcl-mj/anaconda3/envs/gigapose_new/lib/python3.9/site-packages/hydra/core/utils.py", line 186, in run_job
    ret.return_value = task_function(task_cfg)
  File "/home/jcl-mj/gigapose_newenv/gigapose/test.py", line 54, in run_test
    test_dataset = instantiate(cfg.data.test.dataloader)
  File "/home/jcl-mj/anaconda3/envs/gigapose_new/lib/python3.9/site-packages/hydra/_internal/instantiate/_instantiate2.py", line 226, in instantiate
    return instantiate_node(
  File "/home/jcl-mj/anaconda3/envs/gigapose_new/lib/python3.9/site-packages/hydra/_internal/instantiate/_instantiate2.py", line 347, in instantiate_node
    return _call_target(_target_, partial, args, kwargs, full_key)
  File "/home/jcl-mj/anaconda3/envs/gigapose_new/lib/python3.9/site-packages/hydra/_internal/instantiate/_instantiate2.py", line 97, in _call_target
    raise InstantiationException(msg) from e
hydra.errors.InstantiationException: Error in call to target 'src.dataloader.test.GigaPoseTestSet':
TypeError('Cannot convert numpy.ndarray to numpy.ndarray')
full_key: data.test.dataloader

Question about key_to_shard.json file

Hi, I was examining the class GigaPoseTrainSet that implements the data loader. When loading the datasets for training, what it downloads is key_to_shard.json and the various shards. What do the values in key_to_shard.json represent?
Thank you in adavanced !

Questions about the paper

Thanks for your great work!

I am reading paper. In section 3.3 said " To recover the re�maining 2 DoFs, scale s and in-plane rotation α, we train deep networks to directly regress these values from a single 2D-2D correspondence. Since the feature extractor Fae is invariant to in-plane rotation and scaling, the corresponding features cannot be used to regress those values, hence we have to train another feature extractor we call Fist".

why? A simple Image regestring method based on SIFT descriptors, and SIFT descriptors is invariant to in-plane rotation and scaling.

AENet and ISTNet training

Hi, while I was looking to the code I noticed that the training of both AENet and ISTNet is done in gigapose.py. It couldn't be done directly in the ae_net.py and ist_net.py files? Or there is a major reason behind this choice? As you offer the possibility to train the two networks even separately, I guess that it is possible to separate the training code of the two nets from gigapose.py. That's just a curiosity since I was wondering if in my project (just to be coherent with my project's design) this split could be done without causing any misbehavior.

Best regards!

Run-time application

Hi!

I would like to ask if this would run with a camera in run-time? (if so, how would one adapt this repo to run with the webcam?)
Also, is this plausible to run on cpu-only?

Cheers!

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.