Repository files navigation

ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces

Qianyi Wu · Kaisiyuan Wang · Kejie Li · Jianmin Zheng · Jianfei Cai

ICCV 2023

Logo

TL; DR: We propose an occlusion-aware opacity rendering formulation to better use the instance mask supervision. Together with an object-distinction regularization term, the proposed ObjectSDF++ produces more accurate surface reconstruction at both scene and object levels.


Setup

Installation

This code has been tested on Ubuntu 22.02 with torch 2.0 & CUDA 11.7 on a RTX 3090. Clone the repository and create an anaconda environment named objsdf

git clone https://github.com/QianyiWu/objectsdf_plus.git
cd objectsdf_plus
conda create -y -n objsdf python=3.9
conda activate object
pip install -r requirements.txt

The hash encoder will be compiled on the fly when running the code.

Dataset

For downloading the preprocessed data, run the following script. The data for the Replica and ScanNet is adapted from MonoSDF, vMAP.

bash scripts/download_dataset.sh

Training

Run the following command to train ObjectSDF++:

cd ./code
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf CONFIG --scan_id SCAN_ID

where CONFIG is the config file in code/confs, and SCAN_ID is the id of the scene to reconstruct.

We provide example commands for training Replica dataset as follows:

# Replica scan 1 (room0)
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf confs/replica_objsdfplus.conf --scan_id 1
# ScanNet scan 1 (scene_0050_00)
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf confs/scannet_objsdfplus.conf --scan_id 1

The intermediate results and checkpoints will be saved in exps folder.

Evaluations

Replica

Evaluate one scene (take scan 1 room0 for example)

cd replica_eval
python evaluate_single_scene.py --input_mesh replica_scan1_mesh.ply --scan_id 1 --output_dir replica_scan1

We also provided scripts for evaluating all Replica scenes and objects:

cd replica_eval
python evaluate.py # scene-level evaluation
python evaluate_3D_obj.py # object-level evaluation

please check the script for more details. For obtaining the object groundtruth, you can refer to here for more details.

ScanNet

cd scannet_eval
python evaluate.py

please check the script for more details.

Acknowledgements

This project is built upon MonoSDF. The monocular depth and normal images are obtained by Omnidata. The evaluation of object reconstruction is inspired by vMAP. Cuda implementation of Multi-Resolution hash encoding is heavily based on torch-ngp. Kudos to these researchers.

Citation

If you find our code or paper useful, please cite the series of ObjectSDF works.

@inproceedings{wu2022object,
title = {Object-compositional neural implicit surfaces},
author = {Wu, Qianyi and Liu, Xian and Chen, Yuedong and Li, Kejie and Zheng, Chuanxia and Cai, Jianfei and Zheng, Jianmin},
booktitle = {European Conference on Computer Vision},
year = {2022},
}
@inproceedings{wu2023objsdfplus,
author = {Wu, Qianyi and Wang, Kaisiyuan and Li, Kejie and Zheng, Jianmin and Cai, Jianfei},
title = {ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces},
booktitle = {ICCV},
year = {2023},
}

About

🌓 [ICCV'23] Pytorch implementation of "ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces"

Resources

Stars

157 stars

Watchers

5 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces

Qianyi Wu · Kaisiyuan Wang · Kejie Li · Jianmin Zheng · Jianfei Cai

ICCV 2023

Logo

TL; DR: We propose an occlusion-aware opacity rendering formulation to better use the instance mask supervision. Together with an object-distinction regularization term, the proposed ObjectSDF++ produces more accurate surface reconstruction at both scene and object levels.


Setup

Installation

This code has been tested on Ubuntu 22.02 with torch 2.0 & CUDA 11.7 on a RTX 3090. Clone the repository and create an anaconda environment named objsdf

git clone https://github.com/QianyiWu/objectsdf_plus.git
cd objectsdf_plus
conda create -y -n objsdf python=3.9
conda activate object
pip install -r requirements.txt

The hash encoder will be compiled on the fly when running the code.

Dataset

For downloading the preprocessed data, run the following script. The data for the Replica and ScanNet is adapted from MonoSDF, vMAP.

bash scripts/download_dataset.sh

Training

Run the following command to train ObjectSDF++:

cd ./code
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf CONFIG --scan_id SCAN_ID

where CONFIG is the config file in code/confs, and SCAN_ID is the id of the scene to reconstruct.

We provide example commands for training Replica dataset as follows:

# Replica scan 1 (room0)
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf confs/replica_objsdfplus.conf --scan_id 1
# ScanNet scan 1 (scene_0050_00)
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf confs/scannet_objsdfplus.conf --scan_id 1

The intermediate results and checkpoints will be saved in exps folder.

Evaluations

Replica

Evaluate one scene (take scan 1 room0 for example)

cd replica_eval
python evaluate_single_scene.py --input_mesh replica_scan1_mesh.ply --scan_id 1 --output_dir replica_scan1

We also provided scripts for evaluating all Replica scenes and objects:

cd replica_eval
python evaluate.py # scene-level evaluation
python evaluate_3D_obj.py # object-level evaluation

please check the script for more details. For obtaining the object groundtruth, you can refer to here for more details.

ScanNet

cd scannet_eval
python evaluate.py

please check the script for more details.

Acknowledgements

This project is built upon MonoSDF. The monocular depth and normal images are obtained by Omnidata. The evaluation of object reconstruction is inspired by vMAP. Cuda implementation of Multi-Resolution hash encoding is heavily based on torch-ngp. Kudos to these researchers.

Citation

If you find our code or paper useful, please cite the series of ObjectSDF works.

@inproceedings{wu2022object,
title = {Object-compositional neural implicit surfaces},
author = {Wu, Qianyi and Liu, Xian and Chen, Yuedong and Li, Kejie and Zheng, Chuanxia and Cai, Jianfei and Zheng, Jianmin},
booktitle = {European Conference on Computer Vision},
year = {2022},
}
@inproceedings{wu2023objsdfplus,
author = {Wu, Qianyi and Wang, Kaisiyuan and Li, Kejie and Zheng, Jianmin and Cai, Jianfei},
title = {ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces},
booktitle = {ICCV},
year = {2023},
}

About

🌓 [ICCV'23] Pytorch implementation of "ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces"

Resources

Stars

157 stars

Watchers

5 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces

Qianyi Wu · Kaisiyuan Wang · Kejie Li · Jianmin Zheng · Jianfei Cai

ICCV 2023

Logo

TL; DR: We propose an occlusion-aware opacity rendering formulation to better use the instance mask supervision. Together with an object-distinction regularization term, the proposed ObjectSDF++ produces more accurate surface reconstruction at both scene and object levels.


Setup

Installation

This code has been tested on Ubuntu 22.02 with torch 2.0 & CUDA 11.7 on a RTX 3090. Clone the repository and create an anaconda environment named objsdf

git clone https://github.com/QianyiWu/objectsdf_plus.git
cd objectsdf_plus
conda create -y -n objsdf python=3.9
conda activate object
pip install -r requirements.txt

The hash encoder will be compiled on the fly when running the code.

Dataset

For downloading the preprocessed data, run the following script. The data for the Replica and ScanNet is adapted from MonoSDF, vMAP.

bash scripts/download_dataset.sh

Training

Run the following command to train ObjectSDF++:

cd ./code
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf CONFIG --scan_id SCAN_ID

where CONFIG is the config file in code/confs, and SCAN_ID is the id of the scene to reconstruct.

We provide example commands for training Replica dataset as follows:

# Replica scan 1 (room0)
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf confs/replica_objsdfplus.conf --scan_id 1
# ScanNet scan 1 (scene_0050_00)
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf confs/scannet_objsdfplus.conf --scan_id 1

The intermediate results and checkpoints will be saved in exps folder.

Evaluations

Replica

Evaluate one scene (take scan 1 room0 for example)

cd replica_eval
python evaluate_single_scene.py --input_mesh replica_scan1_mesh.ply --scan_id 1 --output_dir replica_scan1

We also provided scripts for evaluating all Replica scenes and objects:

cd replica_eval
python evaluate.py # scene-level evaluation
python evaluate_3D_obj.py # object-level evaluation

please check the script for more details. For obtaining the object groundtruth, you can refer to here for more details.

ScanNet

cd scannet_eval
python evaluate.py

please check the script for more details.

Acknowledgements

This project is built upon MonoSDF. The monocular depth and normal images are obtained by Omnidata. The evaluation of object reconstruction is inspired by vMAP. Cuda implementation of Multi-Resolution hash encoding is heavily based on torch-ngp. Kudos to these researchers.

Citation

If you find our code or paper useful, please cite the series of ObjectSDF works.

@inproceedings{wu2022object,
title = {Object-compositional neural implicit surfaces},
author = {Wu, Qianyi and Liu, Xian and Chen, Yuedong and Li, Kejie and Zheng, Chuanxia and Cai, Jianfei and Zheng, Jianmin},
booktitle = {European Conference on Computer Vision},
year = {2022},
}
@inproceedings{wu2023objsdfplus,
author = {Wu, Qianyi and Wang, Kaisiyuan and Li, Kejie and Zheng, Jianmin and Cai, Jianfei},
title = {ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces},
booktitle = {ICCV},
year = {2023},
}

About

🌓 [ICCV'23] Pytorch implementation of "ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces"

Resources

Stars

157 stars

Watchers

5 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces

Qianyi Wu · Kaisiyuan Wang · Kejie Li · Jianmin Zheng · Jianfei Cai

ICCV 2023

Logo

TL; DR: We propose an occlusion-aware opacity rendering formulation to better use the instance mask supervision. Together with an object-distinction regularization term, the proposed ObjectSDF++ produces more accurate surface reconstruction at both scene and object levels.


Setup

Installation

This code has been tested on Ubuntu 22.02 with torch 2.0 & CUDA 11.7 on a RTX 3090. Clone the repository and create an anaconda environment named objsdf

git clone https://github.com/QianyiWu/objectsdf_plus.git
cd objectsdf_plus
conda create -y -n objsdf python=3.9
conda activate object
pip install -r requirements.txt

The hash encoder will be compiled on the fly when running the code.

Dataset

For downloading the preprocessed data, run the following script. The data for the Replica and ScanNet is adapted from MonoSDF, vMAP.

bash scripts/download_dataset.sh

Training

Run the following command to train ObjectSDF++:

cd ./code
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf CONFIG --scan_id SCAN_ID

where CONFIG is the config file in code/confs, and SCAN_ID is the id of the scene to reconstruct.

We provide example commands for training Replica dataset as follows:

# Replica scan 1 (room0)
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf confs/replica_objsdfplus.conf --scan_id 1
# ScanNet scan 1 (scene_0050_00)
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf confs/scannet_objsdfplus.conf --scan_id 1

The intermediate results and checkpoints will be saved in exps folder.

Evaluations

Replica

Evaluate one scene (take scan 1 room0 for example)

cd replica_eval
python evaluate_single_scene.py --input_mesh replica_scan1_mesh.ply --scan_id 1 --output_dir replica_scan1

We also provided scripts for evaluating all Replica scenes and objects:

cd replica_eval
python evaluate.py # scene-level evaluation
python evaluate_3D_obj.py # object-level evaluation

please check the script for more details. For obtaining the object groundtruth, you can refer to here for more details.

ScanNet

cd scannet_eval
python evaluate.py

please check the script for more details.

Acknowledgements

This project is built upon MonoSDF. The monocular depth and normal images are obtained by Omnidata. The evaluation of object reconstruction is inspired by vMAP. Cuda implementation of Multi-Resolution hash encoding is heavily based on torch-ngp. Kudos to these researchers.

Citation

If you find our code or paper useful, please cite the series of ObjectSDF works.

@inproceedings{wu2022object,
title = {Object-compositional neural implicit surfaces},
author = {Wu, Qianyi and Liu, Xian and Chen, Yuedong and Li, Kejie and Zheng, Chuanxia and Cai, Jianfei and Zheng, Jianmin},
booktitle = {European Conference on Computer Vision},
year = {2022},
}
@inproceedings{wu2023objsdfplus,
author = {Wu, Qianyi and Wang, Kaisiyuan and Li, Kejie and Zheng, Jianmin and Cai, Jianfei},
title = {ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces},
booktitle = {ICCV},
year = {2023},
}

About

🌓 [ICCV'23] Pytorch implementation of "ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces"

Resources

Stars

157 stars

Watchers

5 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces

Qianyi Wu · Kaisiyuan Wang · Kejie Li · Jianmin Zheng · Jianfei Cai

ICCV 2023

Logo

TL; DR: We propose an occlusion-aware opacity rendering formulation to better use the instance mask supervision. Together with an object-distinction regularization term, the proposed ObjectSDF++ produces more accurate surface reconstruction at both scene and object levels.


Setup

Installation

This code has been tested on Ubuntu 22.02 with torch 2.0 & CUDA 11.7 on a RTX 3090. Clone the repository and create an anaconda environment named objsdf

git clone https://github.com/QianyiWu/objectsdf_plus.git
cd objectsdf_plus
conda create -y -n objsdf python=3.9
conda activate object
pip install -r requirements.txt

The hash encoder will be compiled on the fly when running the code.

Dataset

For downloading the preprocessed data, run the following script. The data for the Replica and ScanNet is adapted from MonoSDF, vMAP.

bash scripts/download_dataset.sh

Training

Run the following command to train ObjectSDF++:

cd ./code
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf CONFIG --scan_id SCAN_ID

where CONFIG is the config file in code/confs, and SCAN_ID is the id of the scene to reconstruct.

We provide example commands for training Replica dataset as follows:

# Replica scan 1 (room0)
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf confs/replica_objsdfplus.conf --scan_id 1
# ScanNet scan 1 (scene_0050_00)
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf confs/scannet_objsdfplus.conf --scan_id 1

The intermediate results and checkpoints will be saved in exps folder.

Evaluations

Replica

Evaluate one scene (take scan 1 room0 for example)

cd replica_eval
python evaluate_single_scene.py --input_mesh replica_scan1_mesh.ply --scan_id 1 --output_dir replica_scan1

We also provided scripts for evaluating all Replica scenes and objects:

cd replica_eval
python evaluate.py # scene-level evaluation
python evaluate_3D_obj.py # object-level evaluation

please check the script for more details. For obtaining the object groundtruth, you can refer to here for more details.

ScanNet

cd scannet_eval
python evaluate.py

please check the script for more details.

Acknowledgements

This project is built upon MonoSDF. The monocular depth and normal images are obtained by Omnidata. The evaluation of object reconstruction is inspired by vMAP. Cuda implementation of Multi-Resolution hash encoding is heavily based on torch-ngp. Kudos to these researchers.

Citation

If you find our code or paper useful, please cite the series of ObjectSDF works.

@inproceedings{wu2022object,
title = {Object-compositional neural implicit surfaces},
author = {Wu, Qianyi and Liu, Xian and Chen, Yuedong and Li, Kejie and Zheng, Chuanxia and Cai, Jianfei and Zheng, Jianmin},
booktitle = {European Conference on Computer Vision},
year = {2022},
}
@inproceedings{wu2023objsdfplus,
author = {Wu, Qianyi and Wang, Kaisiyuan and Li, Kejie and Zheng, Jianmin and Cai, Jianfei},
title = {ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces},
booktitle = {ICCV},
year = {2023},
}

About

🌓 [ICCV'23] Pytorch implementation of "ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces"

Resources

Stars

157 stars

Watchers

5 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces

Qianyi Wu · Kaisiyuan Wang · Kejie Li · Jianmin Zheng · Jianfei Cai

ICCV 2023

Logo

TL; DR: We propose an occlusion-aware opacity rendering formulation to better use the instance mask supervision. Together with an object-distinction regularization term, the proposed ObjectSDF++ produces more accurate surface reconstruction at both scene and object levels.


Setup

Installation

This code has been tested on Ubuntu 22.02 with torch 2.0 & CUDA 11.7 on a RTX 3090. Clone the repository and create an anaconda environment named objsdf

git clone https://github.com/QianyiWu/objectsdf_plus.git
cd objectsdf_plus
conda create -y -n objsdf python=3.9
conda activate object
pip install -r requirements.txt

The hash encoder will be compiled on the fly when running the code.

Dataset

For downloading the preprocessed data, run the following script. The data for the Replica and ScanNet is adapted from MonoSDF, vMAP.

bash scripts/download_dataset.sh

Training

Run the following command to train ObjectSDF++:

cd ./code
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf CONFIG --scan_id SCAN_ID

where CONFIG is the config file in code/confs, and SCAN_ID is the id of the scene to reconstruct.

We provide example commands for training Replica dataset as follows:

# Replica scan 1 (room0)
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf confs/replica_objsdfplus.conf --scan_id 1
# ScanNet scan 1 (scene_0050_00)
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf confs/scannet_objsdfplus.conf --scan_id 1

The intermediate results and checkpoints will be saved in exps folder.

Evaluations

Replica

Evaluate one scene (take scan 1 room0 for example)

cd replica_eval
python evaluate_single_scene.py --input_mesh replica_scan1_mesh.ply --scan_id 1 --output_dir replica_scan1

We also provided scripts for evaluating all Replica scenes and objects:

cd replica_eval
python evaluate.py # scene-level evaluation
python evaluate_3D_obj.py # object-level evaluation

please check the script for more details. For obtaining the object groundtruth, you can refer to here for more details.

ScanNet

cd scannet_eval
python evaluate.py

please check the script for more details.

Acknowledgements

This project is built upon MonoSDF. The monocular depth and normal images are obtained by Omnidata. The evaluation of object reconstruction is inspired by vMAP. Cuda implementation of Multi-Resolution hash encoding is heavily based on torch-ngp. Kudos to these researchers.

Citation

If you find our code or paper useful, please cite the series of ObjectSDF works.

@inproceedings{wu2022object,
title = {Object-compositional neural implicit surfaces},
author = {Wu, Qianyi and Liu, Xian and Chen, Yuedong and Li, Kejie and Zheng, Chuanxia and Cai, Jianfei and Zheng, Jianmin},
booktitle = {European Conference on Computer Vision},
year = {2022},
}
@inproceedings{wu2023objsdfplus,
author = {Wu, Qianyi and Wang, Kaisiyuan and Li, Kejie and Zheng, Jianmin and Cai, Jianfei},
title = {ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces},
booktitle = {ICCV},
year = {2023},
}

About

🌓 [ICCV'23] Pytorch implementation of "ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces"

Resources

Stars

157 stars

Watchers

5 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces

Qianyi Wu · Kaisiyuan Wang · Kejie Li · Jianmin Zheng · Jianfei Cai

ICCV 2023

Logo

TL; DR: We propose an occlusion-aware opacity rendering formulation to better use the instance mask supervision. Together with an object-distinction regularization term, the proposed ObjectSDF++ produces more accurate surface reconstruction at both scene and object levels.


Setup

Installation

This code has been tested on Ubuntu 22.02 with torch 2.0 & CUDA 11.7 on a RTX 3090. Clone the repository and create an anaconda environment named objsdf

git clone https://github.com/QianyiWu/objectsdf_plus.git
cd objectsdf_plus
conda create -y -n objsdf python=3.9
conda activate object
pip install -r requirements.txt

The hash encoder will be compiled on the fly when running the code.

Dataset

For downloading the preprocessed data, run the following script. The data for the Replica and ScanNet is adapted from MonoSDF, vMAP.

bash scripts/download_dataset.sh

Training

Run the following command to train ObjectSDF++:

cd ./code
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf CONFIG --scan_id SCAN_ID

where CONFIG is the config file in code/confs, and SCAN_ID is the id of the scene to reconstruct.

We provide example commands for training Replica dataset as follows:

# Replica scan 1 (room0)
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf confs/replica_objsdfplus.conf --scan_id 1
# ScanNet scan 1 (scene_0050_00)
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf confs/scannet_objsdfplus.conf --scan_id 1

The intermediate results and checkpoints will be saved in exps folder.

Evaluations

Replica

Evaluate one scene (take scan 1 room0 for example)

cd replica_eval
python evaluate_single_scene.py --input_mesh replica_scan1_mesh.ply --scan_id 1 --output_dir replica_scan1

We also provided scripts for evaluating all Replica scenes and objects:

cd replica_eval
python evaluate.py # scene-level evaluation
python evaluate_3D_obj.py # object-level evaluation

please check the script for more details. For obtaining the object groundtruth, you can refer to here for more details.

ScanNet

cd scannet_eval
python evaluate.py

please check the script for more details.

Acknowledgements

This project is built upon MonoSDF. The monocular depth and normal images are obtained by Omnidata. The evaluation of object reconstruction is inspired by vMAP. Cuda implementation of Multi-Resolution hash encoding is heavily based on torch-ngp. Kudos to these researchers.

Citation

If you find our code or paper useful, please cite the series of ObjectSDF works.

@inproceedings{wu2022object,
title = {Object-compositional neural implicit surfaces},
author = {Wu, Qianyi and Liu, Xian and Chen, Yuedong and Li, Kejie and Zheng, Chuanxia and Cai, Jianfei and Zheng, Jianmin},
booktitle = {European Conference on Computer Vision},
year = {2022},
}
@inproceedings{wu2023objsdfplus,
author = {Wu, Qianyi and Wang, Kaisiyuan and Li, Kejie and Zheng, Jianmin and Cai, Jianfei},
title = {ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces},
booktitle = {ICCV},
year = {2023},
}

About

🌓 [ICCV'23] Pytorch implementation of "ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces"

Resources

Stars

157 stars

Watchers

5 watching

Forks

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces

Qianyi Wu · Kaisiyuan Wang · Kejie Li · Jianmin Zheng · Jianfei Cai

ICCV 2023

Logo

TL; DR: We propose an occlusion-aware opacity rendering formulation to better use the instance mask supervision. Together with an object-distinction regularization term, the proposed ObjectSDF++ produces more accurate surface reconstruction at both scene and object levels.


Setup

Installation

This code has been tested on Ubuntu 22.02 with torch 2.0 & CUDA 11.7 on a RTX 3090. Clone the repository and create an anaconda environment named objsdf

git clone https://github.com/QianyiWu/objectsdf_plus.git
cd objectsdf_plus
conda create -y -n objsdf python=3.9
conda activate object
pip install -r requirements.txt

The hash encoder will be compiled on the fly when running the code.

Dataset

For downloading the preprocessed data, run the following script. The data for the Replica and ScanNet is adapted from MonoSDF, vMAP.

bash scripts/download_dataset.sh

Training

Run the following command to train ObjectSDF++:

cd ./code
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf CONFIG --scan_id SCAN_ID

where CONFIG is the config file in code/confs, and SCAN_ID is the id of the scene to reconstruct.

We provide example commands for training Replica dataset as follows:

# Replica scan 1 (room0)
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf confs/replica_objsdfplus.conf --scan_id 1
# ScanNet scan 1 (scene_0050_00)
CUDA_VISIBLE_DEVICES=0 torchrun --nproc_per_node=1 --nnodes=1 --node_rank=0 training/exp_runner.py --conf confs/scannet_objsdfplus.conf --scan_id 1

The intermediate results and checkpoints will be saved in exps folder.

Evaluations

Replica

Evaluate one scene (take scan 1 room0 for example)

cd replica_eval
python evaluate_single_scene.py --input_mesh replica_scan1_mesh.ply --scan_id 1 --output_dir replica_scan1

We also provided scripts for evaluating all Replica scenes and objects:

cd replica_eval
python evaluate.py # scene-level evaluation
python evaluate_3D_obj.py # object-level evaluation

please check the script for more details. For obtaining the object groundtruth, you can refer to here for more details.

ScanNet

cd scannet_eval
python evaluate.py

please check the script for more details.

Acknowledgements

This project is built upon MonoSDF. The monocular depth and normal images are obtained by Omnidata. The evaluation of object reconstruction is inspired by vMAP. Cuda implementation of Multi-Resolution hash encoding is heavily based on torch-ngp. Kudos to these researchers.

Citation

If you find our code or paper useful, please cite the series of ObjectSDF works.

@inproceedings{wu2022object,
title = {Object-compositional neural implicit surfaces},
author = {Wu, Qianyi and Liu, Xian and Chen, Yuedong and Li, Kejie and Zheng, Chuanxia and Cai, Jianfei and Zheng, Jianmin},
booktitle = {European Conference on Computer Vision},
year = {2022},
}
@inproceedings{wu2023objsdfplus,
author = {Wu, Qianyi and Wang, Kaisiyuan and Li, Kejie and Zheng, Jianmin and Cai, Jianfei},
title = {ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces},
booktitle = {ICCV},
year = {2023},
}

About

🌓 [ICCV'23] Pytorch implementation of "ObjectSDF++: Improved Object-Compositional Neural Implicit Surfaces"

Resources

Stars

157 stars

Watchers

5 watching

Forks

Used by

Contributors

Languages