{"id":28516747,"url":"https://github.com/mit-spark/crisp","last_synced_at":"2025-08-12T17:42:01.551Z","repository":{"id":281056565,"uuid":"919176709","full_name":"MIT-SPARK/CRISP","owner":"MIT-SPARK","description":"[CVPR 2025] CRISP: Object Pose and Shape Estimation with Test-Time Adaptation ","archived":false,"fork":false,"pushed_at":"2025-03-22T17:12:05.000Z","size":8980,"stargazers_count":45,"open_issues_count":1,"forks_count":3,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-06-09T04:15:48.653Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MIT-SPARK.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-19T22:11:39.000Z","updated_at":"2025-05-27T15:57:40.000Z","dependencies_parsed_at":"2025-03-06T19:35:51.851Z","dependency_job_id":null,"html_url":"https://github.com/MIT-SPARK/CRISP","commit_stats":null,"previous_names":["mit-spark/crisp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MIT-SPARK/CRISP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MIT-SPARK%2FCRISP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MIT-SPARK%2FCRISP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MIT-SPARK%2FCRISP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MIT-SPARK%2FCRISP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MIT-SPARK","download_url":"https://codeload.github.com/MIT-SPARK/CRISP/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MIT-SPARK%2FCRISP/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270108470,"owners_count":24528759,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-12T02:00:09.011Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-09T04:12:40.643Z","updated_at":"2025-08-12T17:42:01.530Z","avatar_url":"https://github.com/MIT-SPARK.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CRISP: Object Pose and Shape Estimation with Test-Time Adaptation\n**Accepted to :zap: CVPR 2025 :zap: .**\n\nThis is the project repo for the paper [CRISP: Object Pose and Shape Estimation with Test-Time Adaptation](https://arxiv.org/abs/2412.01052), which is accepted to CVPR 2025.\nIn this paper, we consider the problem of estimating object pose and shape from an RGB-D image. \n\nOur first contribution is to introduce CRISP, a category-agnostic object pose and shape estimation pipeline. The pipeline implements an encoder-decoder model for shape estimation. It uses FiLM-conditioning for implicit shape reconstruction and a DPT-based network for estimating pose-normalized points for pose estimation.\n\n![Pipeline overview](media/pipeline-overview.png)\n\nAs a second contribution, we propose an optimization-based pose and shape corrector that can correct estimation errors caused by a domain gap. Observing that the shape decoder is well behaved in the convex hull of known shapes, we approximate the shape decoder with an active shape model, and show that this reduces the shape correction problem to a constrained linear least squares problem, which can be solved efficiently by an interior point algorithm.\n\n|                  |                                            |                                            |                                            |\n| ---              | ---                                        | ---                                        | ---                                        |\n| Gradient Descent | ![obj10](media/corrector/out_obj10_gd.gif) | ![obj13](media/corrector/out_obj13_gd.gif) | ![obj20](media/corrector/out_obj20_gd.gif) |\n| Ours (BCD)       | ![obj10](media/corrector/out_obj10.gif)    | ![obj13](media/corrector/out_obj13.gif)    | ![obj20](media/corrector/out_obj20.gif)    |\n\nThird, we introduce a self-training pipeline to perform self-supervised domain adaptation of CRISP. The self-training is based on a correct-and-certify approach, which leverages the corrector to generate pseudo-labels at test time, and uses them to self-train CRISP. We demonstrate CRISP (and the self-training) on YCBV, SPE3R, and NOCS datasets. CRISP shows high performance on all the datasets. Moreover, our self-training is capable of bridging a large domain gap. Finally, CRISP also shows an ability to generalize to unseen objects.\n\nBelow are some qualitative results on YCBV, SPE3R and NOCS:\n| Dataset | Qualitative Results |\n|---------|-------------------|\n| YCBV | ![YCBV Qualitative results](media/ycbv_grid.gif) |\n| SPE3R | ![SPE3R Qualitative results](media/spe3r_grid.gif) |\n| NOCS | ![NOCS Qualitative results](media/nocs_grid.gif) |\n\nIf you use this project in your research, pleace cite:\n```\n@article{Shi24arxiv-crisp,\n  title={CRISP: Object Pose and Shape Estimation with Test-Time Adaptation},\n  author={Shi, Jingnan and Talak, Rajat and Zhang, Harry and Jin, David and Carlone, Luca},\n  journal={arXiv preprint arXiv:2412.01052},\n  year={2024}\n}\n```\n\n## Installing Dependencies\nWe recommend using Mamba to manage your environment. Run the following command to create a new environment with the required dependencies:\n```bash\nmamba env create -f env.yml\n```\n\nIn addition, you need to compile and install PyTorch3D and xformers from source.\nFor PyTorch3D, build it from source:\n```bash \nMAX_JOBS=N pip install -v \"git+https://github.com/facebookresearch/pytorch3d.git@stable\"\n```\nwhere you can set N to be the maximum number of workers used for ninja to compile files.\n\nMake sure to have `CUDA_HOME` to the path of your CUDA installation.\nIn addition, you may need to set `FORCE_CUDA=1`. \n\nFor xformers, clone it locally and compile:\n```bash \nMAX_JOBS=N CUDA_HOME=/PATH_TO_CONDA_VIRTUAL_ENV python -m pip install -v git+https://github.com/facebookresearch/xformers.git@v0.0.23.post1#egg=xformers\n```\nwhere you can set N to be the maximum number of workers used for ninja to compile files.\nNote that the compilation of xformers may take a long time.\n\n## Running Experiments\nExperimental code are kept in `experiments`.\nMake sure to include `src` in your `PYTHONPATH` environmental variable to be able to import all the modules.\nYou can do something like this:\n```bash\nexport PYTHONPATH=\"${PYTHONPATH}:${CRISP-Path}/src\"\n```\nwhere `${CRISP-Path}` is the absolute path to this repo.\n\n## Models\n| Dataset   | Model Name         | Note                                                                  | URL                                                                                           |\n| -------   | ----------         | ---                                                                   | ----                                                                                          |\n| YCBV      | CRISP-Real         | Supervised on the real train set                                      | [Link](https://drive.google.com/file/d/1NV-kn4uzVVbgvoEitl8Y2VadgaUbQs6L/view?usp=drive_link) |\n| YCBV Syn  | CRISP-Syn          | Supervised on our generated synthetic dataset                         | [Link](https://drive.google.com/file/d/1eYDLXI82me5aSd4QCKoaDfHkXZuLvLkK/view?usp=drive_link) |\n| YCBV      | CRISP-Syn-ST (LSQ) | CRISP-Syn after test-time adaptation on the test set w/ LSQ corrector | [Link](https://drive.google.com/file/d/1htAxdRGU3NRezSwJXVspPnmDLp4IZV0S/view?usp=drive_link) |\n| YCBV      | CRISP-Syn-ST (BCD) | CRISP-Syn after test-time adaptation on the test set w/ BCD corrector | [Link](https://drive.google.com/file/d/1JcnVaT5WmiTB4XE0sRylmqBWCKYrvMqT/view?usp=drive_link) |\n| SPE3R     | CRISP              | Supervised on the train set                                           | [Link](https://drive.google.com/file/d/1nsaEMUejojXXX-l0PLipDoL8Xbw9cX4F/view?usp=drive_link) |\n| SPE3R Syn | CRISP              | Supervised on our generated synthetic dataset                         | [Link](https://drive.google.com/file/d/1nsaEMUejojXXX-l0PLipDoL8Xbw9cX4F/view?usp=drive_link) |\n| SPE3R     | CRISP-ST (BCD)     | Test-time adaptation on the test set                                  | [Link](https://drive.google.com/file/d/1_q1PdXI1EZEd7ojg6wQbty4gsY1Q6CuH/view?usp=drive_link) |\n| NOCS      | CRISP              | Supervised on REAL and CAMERA                                         | [Link](https://drive.google.com/file/d/1GH4sJ5_1vNdbxi1V_n_Sm6593_MqRtZB/view?usp=drive_link) |\n\nHyperparameters used for each model are included in the zip files as `config.yaml`.\n\n## Demo\nA small demo with an image from YCBV is provided in the `experiments/demo` folder.\nTo run the demo, first modify the `ckpt_path` variable to point towards the checkpoint downloaded on your PC.\nThen, run it with Python with the correct dependencies already installed:\n```\npython demo.py\n```\nYou should see first an visualization of the meshes (in their canonical frames so they will overlap), \nthen visualizations for the shape reconstructions transformed with the estimated transforms.\nSee the screenshot below:\n\n![Demo screenshot](media/demo_screenshot.png)\n\n## Datasets\nWe test on YCBV, SPE3R and NOCS datasets.\n\n### YCBV\nWe follow the setup in the [BOP Challenge](https://bop.felk.cvut.cz/challenges/), which provides consistent formats and conventions across multiple object pose estimation datasets.\nDownload YCBV from [this page](https://bop.felk.cvut.cz/datasets/#YCB-V), and follow their instruction to unzip everything.\nThe final folder structure should look something like this:\n```\nbop_datasets\n└── ycbv\n    ├── camera_cmu.json\n    ├── camera_uw.json\n    ├── dataset_info.md\n    ├── models\n    ├── models_bop-compat\n    ├── models_bop-compat_eval\n    ├── models_eval\n    ├── models_fine\n    ├── object_images\n    ├── test\n    ├── test_targets_bop19.json\n    ├── train_pbr\n    ├── train_real\n```\n\n### SPE3R\nThe SPE3R dataset is a satellite pose estimation dataset based on photorealistic renders of real-world satellites. \nDownload the dataset from [this page](https://purl.stanford.edu/pk719hm4806).\nNote that v1 of the dataset has some bugs in the annotations --- please use v1.1 (see [here](https://github.com/tpark94/sat-sq-recon)).\nYou will then need to follow the steps detailed in the [README](https://github.com/tpark94/sat-sq-recon) to prepare the dataset.\nThe structure should look like this:\n```\nspe3r\n├── camera.json\n├── splits.csv\n├── LICENSE.md\n├── README.md\n├── UPDATES.md\n├── acrimsat_final\n├── apollo_soyuz_carbajal\n├── aqua\n├── aquarius_dep\n├── aquarius_ud\n├── ... and more satellite folders\n```\n\nIn addition, you need to run some preprocessing steps to generate the depth and NOCS data for training our models. \nThe scripts are available in our forked repo: [sat-sq-recon](https://github.com/jingnanshi/sat-sq-recon/tree/main).\nIn particular, you will need to run the [preprocess_depth.py](https://github.com/jingnanshi/sat-sq-recon/blob/main/tools/preprocess_depth.py) script to generate the depth and NOCS data.\nWe also provide a [helper script](https://github.com/jingnanshi/sat-sq-recon/blob/main/tools/gen_preprocess_depth_script.py) to generate commands for running the script with GNU parallel to speed up the generation process.\n\n### NOCS\nTo set up the NOCS dataset, download zip files from [this page](https://github.com/hughw19/NOCS_CVPR2019) and follow their instructions.\nIn addition, download the segmentation results from [this link](https://drive.google.com/file/d/1RwAbFWw2ITX9mXzLUEBjPy_g-MNdyHET/view?usp=sharing) (the same result used in [DualPoseNet](https://github.com/Gorilla-Lab-SCUT/DualPoseNet)) and unzip into the same folder.\nThe final folder structure should look like this:\n```\nNOCS\n├── camera\n├── camera_full_depths\n├── gt_results\n├── obj_models\n├── real\n└── segmentation_results\n```\n\n### Rendered Images\nFor the YCBV experiments, we also generate our own rendered images forming a simulated train set to test our ability to bridge the sim-to-real gap.\nYou can download it [here](https://drive.google.com/file/d/11tsTWR3eqf7WSMN3oyfeBX7WGV8UWSXl/view?usp=sharing).\n\n## Training\nHere are the details for training our models on YCBV, SPE3R and NOCS dataset.\nHyperparameters used for each dataset's models are included in the zip files of the checkpoints as `config.yaml` (see table above).\n\n### YCBV\nTo train models on the YCBV dataset, note that we have two subfolders in the `experiments` folder that are relevant.\nFor supervised training, `experiments/ycbv_supervised` contains the necessary scripts.\nA typical training command should look something like this:\n```\npython train.py --dataset_dir=/home/\"$(whoami)\"/datasets/unified_renders/ycbv_0830_v2 \\\n  --bop_data_dir=/home/\"$(whoami)\"/datasets/bop/bop_datasets \\\n  --preload_to_mem=False \\\n  --nocs_network_type=dpt_gnfusion_gnnocs \\\n  --nocs_lateral_layers_type=spaced \\\n  --normalized_recons=False \\\n  --nocs_loss_weight=5e3 \\\n  --recons_loss_weight=0.1 \\\n  --batch_size=10 \\\n  --dataloader_workers=5 \\\n  --num_epochs=50 \n```\nwhere `dataset_dir` is the path to our generated synthetic data and `bop_data_dir` is the path to the folder containing the YCBV dataset.\nWe assume it is in the `ycbv` folder and follows BOP convention.\n\nFor test-time adaptation (self-supervised), take a look at `experiments/ycbv_ssl`.\nRun the following command (modify the relevant parameters to fit your own setup):\n```\npython train.py --checkpoint_path=$CKPT_FOLDER/checkpoint.pth \\\n  --bop_ds_dir=$DATASET_PATH/bop_datasets \\\n  --scenes_mode=\"mixed\" \\\n  --num_epochs=100 \\\n  --pose_noise_scale=0 \\\n  --dataloader_batch_size=3 \\\n  --ssl_batch_size=3 \\\n  --gen_mesh_for_test=False \\\n  --visualize_rgb=False \\\n  --pipeline_no_grad_model_forward=True \\\n  --use_corrector=True \\\n  --use_mf_shape_code_corrector=False \\\n  --use_mf_geometric_shape_corrector=True \\\n  --mf_geometric_corrector_type=\"PROJ_GD\" \\\n  --mf_geometric_corrector_lr=5e-4 \\\n  --shape_code_library_path=$DATASET_PATH/shape_code_lib.pkl \\\n  --mf_corrector_min_buffer_size=25 \\\n  --mf_geometric_corrector_nocs_sample_size=1000 \\\n  --mf_geometric_corrector_mnfld_weight=3e3 \\\n  --mf_geometric_corrector_inter_weight=1e2 \\\n  --mf_corrector_rolling_window_size=50 \\\n  --frame_corrector_mode=\"nocs-only-inv-depths-sdf-input-nocs-scale-free\" \\\n  --ssl_recons_lr=3e-4 \\\n  --use_torch_compile=False \\\n  --corrector_algo=\"torch-adam\" \\\n  --corrector_sdf_input_loss_weight=10 \\\n  --corrector_sdf_nocs_loss_weight=1 \\\n  --corrector_nocs_correction_lr=1e-3 \\\n  --corrector_shape_correction_lr=5e-5 \\\n  --corrector_max_iters=50 \\\n  --use_torch_compile=False \\\n  --normalized_recons=False \\\n  --cert_depths_quantile=0.98 \\\n  --cert_depths_eps=0.01 \\\n  --objects_info_path=$DATASET_PATH/unified_renders/ycbv_0830_v2/objects_info.yaml \\\n  --unified_ds_dir=$DATASET_PATH/unified_renders/ycbv_0830_v2 \\\n  --fixed_random_seed=False\n```\nThe important parameters are:\n- `checkpoint_path`: Path to the checkpoint file to start test-time adaptation on (usually a model trained on synthetic data).\n- `unified_ds_dir`: Path to our generated synthetic dataset with ground truth meshes and SDFs (only used for visualization). \n- `bop_ds_dir`: Path to the folder containing YCBV dataset (in a folder named `ycbv` following the BOP conventions).\n- `objects_info_path`: Path to a YAML file containing GT objects info (for error metrics only).\n- `shape_code_library_path`: Path to the PKL file containing latent shape codes for our correctors (see below on how to generate these codes).\n\n### SPE3R\nThe scripts relevant for the SPE3R experiment can be found in `experiments/satellite`.\nTo run supervised training, run the following command (after modifying the arguments):\n```\npython train.py \\\n  --dataset_dir=/home/\"$(whoami)\"/datasets/spe3r \\\n  --spe3r_unified_objects_dataset_dir=/home/\"$(whoami)\"/datasets/unified_renders/spe3r_train_objs_0709 \\\n  --preload_to_mem=False \\\n  --nocs_network_type=dpt_gnfusion_gnnocs \\\n  --nocs_lateral_layers_type=spaced \\\n  --normalized_recons=False \\\n  --lr=1e-4 \\\n  --nocs_lr=1e-4 \\\n  --recons_lr=1e-4 \\\n  --weight_decay=1e-6 \\\n  --cosine_anneal_T_mult=1 \\\n  --checkpoint_path=/home/\"$(whoami)\"/code/CRISP/experiments/unified_model/model_ckpts/202407091738_OREEM/checkpoint.pth \\\n  --resume_from_ckpt=True \\\n  --batch_size=16 \\\n  --validate_per_n_epochs=20 \\\n  --num_epochs=100 \\\n  --dataloader_workers=5\n```\nThe important arguments are:\n- `dataset_dir`: Directory of the SPE3R dataset.\n- `spe3r_unified_objects_dataset_dir`: Directory of our generated synthetic dataset (for object SDFs)\n\nTo run test-time adaptation, run the following command:\n```\npython train.py \\\n  --dataset_dir=/home/\"$(whoami)\"/datasets/spe3r \\\n  --spe3r_unified_objects_dataset_dir=/home/\"$(whoami)\"/datasets/unified_renders/spe3r_0228 \\\n  --preload_to_mem=False \\\n  --nocs_network_type=dpt_gnfusion_gnnocs \\\n  --nocs_lateral_layers_type=spaced \\\n  --normalized_recons=False \\\n  --checkpoint_path=/home/\"$(whoami)\"/code/CRISP/experiments/satellite/model_ckpts/202407150923_6OOGB/checkpoint.pth \\\n  --resume_from_ckpt=True \\\n  --optimizer=sgd \\\n  --batch_size=16 \\\n  --num_epochs=20 \\\n  --dataloader_workers=5 \\\n  --num_devices=1 \\\n  --num_nodes=1 \\\n  --train_mode=ssl \\\n  --test_split=test \\\n  --train_split=test \\\n  --model_type=pipeline \\\n  --cert_depths_quantile=0.97 \\\n  --cert_depths_eps=0.02 \\\n  --pipeline_nr_downsample_before_corrector=2000 \\\n  --use_corrector=True \\\n  --frame_corrector_mode=\"nocs-only-inv-depths-sdf-input-nocs-scale-free\" \\\n  --corrector_algo=\"torch-adam\" \\\n  --corrector_sdf_input_loss_weight=1 \\\n  --corrector_sdf_nocs_loss_weight=1 \\\n  --corrector_nocs_correction_lr=5e-4 \\\n  --corrector_shape_correction_lr=5e-5 \\\n  --corrector_max_iters=50 \\\n  --use_mf_shape_code_corrector=False \\\n  --use_mf_geometric_shape_corrector=True \\\n  --mf_geometric_corrector_type=\"PROJ_GD\" \\\n  --mf_geometric_corrector_lr=5e-3 \\\n  --shape_code_library_path=/home/gridsan/\"$(whoami)\"/datasets/shape_code_libraries/spe3r/202407150923_6OOGB/shape_code_lib.pkl \\\n  --mf_corrector_min_buffer_size=25 \\\n  --mf_corrector_rolling_window_size=50 \\\n  --mf_geometric_corrector_nocs_sample_size=2000 \\\n  --mf_geometric_corrector_mnfld_weight=3e3 \\\n  --mf_geometric_corrector_inter_weight=1e2 \\\n  --mf_geometric_corrector_nonmnfld_points_voxel_res=32\n```\nThe important parameters are:\n- `dataset_dir`: Directory of the SPE3R dataset.\n- `spe3r_unified_objects_dataset_dir`: Directory of our generated synthetic dataset (for object SDFs)\n- `checkpoint_path`: Path to the checkpoint file to start test-time adaptation on (usually a model trained on synthetic or rendered data).\n- `shape_code_library_path`: Path to the PKL file containing latent shape codes for our correctors (see below on how to generate these codes).\n\n### NOCS\nTo train a supervised model on NOCS, take a look at the `experiments/nocs` folder.\nThe training command should be similar to the one below:\n```\npython train.py \\\n  --dataset_dir=/home/gridsan/\"$(whoami)\"/datasets/NOCS \\\n  --nocs_unified_objects_dir=/home/gridsan/\"$(whoami)\"/datasets/unified_renders/nocs_camera_real_train \\\n  --subsets=[camera,real] \\\n  --split=train \\\n  --preload_to_mem=False \\\n  --nocs_network_type=dpt_gnfusion_gnnocs \\\n  --nocs_lateral_layers_type=spaced \\\n  --normalized_recons=False \\\n  --lr=1e-4 \\\n  --nocs_lr=1e-4 \\\n  --recons_lr=1e-4 \\\n  --weight_decay=1e-6 \\\n  --cosine_anneal_T_mult=1 \\\n  --batch_size=16 \\\n  --num_epochs=50 \\\n  --dataloader_workers=10 \\\n```\nThe key arguments are:\n- `dataset_dir`: Path to the folder containing all NOCS data.\n- `nocs_unified_objects_dir`: Path to the folder containing objects' infos for NOCS.\n\n### Generating Shape Code Libraries\nTo generate the shape code libraries used for test-time adaptation, take a look at `experiments/latent_code` folder.\nBasically, you need to run `X_object_codes_interpolate.py` to collect latent codes for dataset `X`,\nthen you need to run `make_shape_code_library.py` to essentially take the average of the latent codes for each learned shape and generate a .pkl file. \nYou can find the pregenerated shape code libraries [here](https://drive.google.com/drive/folders/1YVn4G8Ys2xjbfQBnsJmy7IHlPdBK3oFB?usp=sharing).\n\n### Using SLURM\nOur training scripts supports SLURM through PyTorch Lightning.\nFor example, for training supervised models on YCBV, a typical training script should look something like this:\n```\n#!/bin/bash\n#SBATCH --job-name ycbv_real_train\n#SBATCH -N 2\n#SBATCH --ntasks-per-node=2\n#SBATCH --gres=gpu:volta:2\n#SBATCH --cpus-per-task=20\n#SBATCH --distribution=nopack\n\nsource /etc/profile\n# Load your dependencies/modules ...\n\nexport OMP_NUM_THREADS=20\nsrun python train.py --dataset_dir=/home/\"$(whoami)\"/datasets/unified_renders/ycbv_0830_v2 \\\n  --bop_data_dir=/home/\"$(whoami)\"/datasets/bop/bop_datasets \\\n  --preload_to_mem=False \\\n  --nocs_network_type=dpt_gnfusion_gnnocs \\\n  --nocs_lateral_layers_type=spaced \\\n  --normalized_recons=False \\\n  --nocs_loss_weight=5e3 \\\n  --recons_loss_weight=0.1 \\\n  --batch_size=10 \\\n  --dataloader_workers=5 \\\n  --num_epochs=50 \\\n  --num_devices=2 \\\n  --num_nodes=2\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmit-spark%2Fcrisp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmit-spark%2Fcrisp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmit-spark%2Fcrisp/lists"}