Skip to content

Repository files navigation

Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)

CVPR 2024

Tsu-Ching Hsiao Hao-Wei Chen Hsuan-Kung Yang Chun-Yi Lee
Elsa Lab, National Tsing Hua University

| Paper | arXiv | Project |

se3-diffusion-cover-gt-right-1

Official re-implementation in JAX.

Abstract

Addressing pose ambiguity in 6D object pose estimation from single RGB images presents a significant challenge, particularly due to object symmetries or occlusions. In response, we introduce a novel score-based diffusion method applied to the SE(3) group, marking the first application of diffusion models to SE(3) within the image domain, specifically tailored for pose estimation tasks. Extensive evaluations demonstrate the method's efficacy in handling pose ambiguity, mitigating perspective-induced ambiguity, and showcasing the robustness of our surrogate Stein score formulation on SE(3). This formulation not only improves the convergence of denoising process but also enhances computational efficiency. Thus, we pioneer a promising strategy for 6D object pose estimation.

Updates

  • 2024/05/14: Code released.

Videos

set_all_low.mp4
Click here to see the SYMSOL-T demos
output.mp4
output.mp4
output.mp4
output.mp4
output.mp4

Table of Contents

Installation

Requirements

Ensure your system meets the following requirements:

  • Linux (only tested on Ubuntu 20.04)
  • nvidia-docker
  • CUDA 12.2 or higher

Setup

  1. Clone this repo with the following command:
git clone git@github.com:Ending2015a/liepose-diffusion.git
  1. Download datasets. This will download the TLESS dataset and VOC2012 dataset.
cd liepose-diffusion
make download

NOTE if the datasets do not download correctly, you can download them from the links provided in Datasets section.

  1. Build the docker image and start the container
make build
make run
# inside the docker
cd /workspace
  1. Now you are ready to run the experiments. See Experiments.

Experiments

SYMSOL

SO(3)

python3 -m liepose.exp.symsol.run

The result is located at logs/experiments/symsol-score-flat/.../inference_400000/summary.json.

SYMSOL-T

SE(3)

python3 -m liepose.exp.symsolt.run "lie_type=[se3]"

R3SO(3)

python3 -m liepose.exp.symsolt.run "lie_type=[r3so3]"

The result is located at logs/experiments/symsolt-score-flat/.../inference_800000/summary.json. The ... depends on the given parameters, e.g. lie_type=se3+repr_type=tan+....

T-LESS

SE(3)

python3 -m liepose.exp.bop.run "lie_type=[se3]"

R3SO(3)

python3 -m liepose.exp.bop.run "lie_type=[r3so3]"

The result is located at logs/experiments/bop-tless-score-flat/.../inference_400000/summary.json. The ... depends on the given parameters, e.g. lie_type=se3+repr_type=tan+....

Metrics

SYMSOL and SYMSOL-T

In summary.json, you will see the format like

{
"final_metrics": {
"rot": 0.007605713326483965,
"rot(deg)": 0.4357752501964569,
"rot_2": 99.59599999999999,
"rot_5": 99.88,
"rot_10": 99.94,
"rot_id0": 0.007878238335251808,
"rot(deg)_id0": 0.45138978958129883,
"rot_2_id0": 99.98,
"rot_5_id0": 100.0,
...
},
...
}

The meaning and the shapes' ID is listed as follows:

MetricsMeaning
rotaverage rotation errors in radians
rot(deg)average rotation errors in degrees
rot_2the percentage (%) of the samples rotation errors less than 2 degrees
rot_5the percentage (%) of the samples rotation errors less than 5 degrees
rot_10the percentage (%) of the samples rotation errors less than 10 degrees
tranaverage translation errors (distance)
tran_0.02the percentage (%) of the samples translation errors less than 0.02
tran_0.05the percentage (%) of the samples translation errors less than 0.05
tran_0.1the percentage (%) of the samples translation errors less than 0.1
addaverage distance of two point clouds (ADD)
add_0.02the percentage (%) of the samples average distance less than 0.02
add_0.05the percentage (%) of the samples average distance less than 0.05
add_0.1the percentage (%) of the samples average distance less than 0.1
geoaverage geodesic distance on SE(3)
geo_0.02the percentage (%) of the samples geodesic distance less than 0.02
geo_0.05the percentage (%) of the samples geodesic distance less than 0.05
geo_0.1the percentage (%) of the samples geodesic distance less than 0.1
{metric}_id*the metrics for each shape, e.g. rot_id0, tran_id2, ...
IDShape
0tetrahedron
1cube
2icosahedron
3cone
4cylinder

Datasets

We use the following datasets in our experiments:

Download
SYMSOLtfds*1
SYMSOL-Tgdrive*2
T-LESSgdrive
VOC2012gdrive

*1 SYMSOL is downloaded automatically via tensorflow-datasets during the first run.

*2 We also provide the scripts for synthesizing SYMSOL-T dataset.

# You need to enable the screen/display before `make run`
export DISPLAY=:0
make run
# Make your own SYMSOL-T (25000 samples) = (5 shapes) * (5k per shape)
python3 liepose.data.symsolt.synth --path "dataset/symsolt/my-symsolt-5k" "num_samples=25000"

For more configs, see the script.

Multi-GPUs Training

In default, single-GPU is used for training as we set the CUDA_VISIBLE_DEVICES='0' inside the Makefile. You can enable multi-GPU training simply by setting the CUDA_VISIBLE_DEVICES to multiple devices. The framework will automatically switch to the parallel training mode. For example, export CUDA_VISIBLE_DEVICES='0,1,2', will use 3 devices for training, and the batch_size is divided by 3 for each device.

Citation

@inproceedings{hsiao2024confronting,
title={Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)},
author={Hsiao, Tsu-Ching and Chen, Hao-Wei and Yang, Hsuan-Kung and Lee, Chun-Yi},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={352--362},
year={2024}
}

About

[CVPR 2024] Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)

Topics

Resources

Stars

44 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - Ending2015a/liepose-diffusion: [CVPR 2024] Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3) · GitHub
Skip to content

Repository files navigation

Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)

CVPR 2024

Tsu-Ching Hsiao Hao-Wei Chen Hsuan-Kung Yang Chun-Yi Lee
Elsa Lab, National Tsing Hua University

| Paper | arXiv | Project |

se3-diffusion-cover-gt-right-1

Official re-implementation in JAX.

Abstract

Addressing pose ambiguity in 6D object pose estimation from single RGB images presents a significant challenge, particularly due to object symmetries or occlusions. In response, we introduce a novel score-based diffusion method applied to the SE(3) group, marking the first application of diffusion models to SE(3) within the image domain, specifically tailored for pose estimation tasks. Extensive evaluations demonstrate the method's efficacy in handling pose ambiguity, mitigating perspective-induced ambiguity, and showcasing the robustness of our surrogate Stein score formulation on SE(3). This formulation not only improves the convergence of denoising process but also enhances computational efficiency. Thus, we pioneer a promising strategy for 6D object pose estimation.

Updates

  • 2024/05/14: Code released.

Videos

set_all_low.mp4
Click here to see the SYMSOL-T demos
output.mp4
output.mp4
output.mp4
output.mp4
output.mp4

Table of Contents

Installation

Requirements

Ensure your system meets the following requirements:

  • Linux (only tested on Ubuntu 20.04)
  • nvidia-docker
  • CUDA 12.2 or higher

Setup

  1. Clone this repo with the following command:
git clone git@github.com:Ending2015a/liepose-diffusion.git
  1. Download datasets. This will download the TLESS dataset and VOC2012 dataset.
cd liepose-diffusion
make download

NOTE if the datasets do not download correctly, you can download them from the links provided in Datasets section.

  1. Build the docker image and start the container
make build
make run
# inside the docker
cd /workspace
  1. Now you are ready to run the experiments. See Experiments.

Experiments

SYMSOL

SO(3)

python3 -m liepose.exp.symsol.run

The result is located at logs/experiments/symsol-score-flat/.../inference_400000/summary.json.

SYMSOL-T

SE(3)

python3 -m liepose.exp.symsolt.run "lie_type=[se3]"

R3SO(3)

python3 -m liepose.exp.symsolt.run "lie_type=[r3so3]"

The result is located at logs/experiments/symsolt-score-flat/.../inference_800000/summary.json. The ... depends on the given parameters, e.g. lie_type=se3+repr_type=tan+....

T-LESS

SE(3)

python3 -m liepose.exp.bop.run "lie_type=[se3]"

R3SO(3)

python3 -m liepose.exp.bop.run "lie_type=[r3so3]"

The result is located at logs/experiments/bop-tless-score-flat/.../inference_400000/summary.json. The ... depends on the given parameters, e.g. lie_type=se3+repr_type=tan+....

Metrics

SYMSOL and SYMSOL-T

In summary.json, you will see the format like

{
"final_metrics": {
"rot": 0.007605713326483965,
"rot(deg)": 0.4357752501964569,
"rot_2": 99.59599999999999,
"rot_5": 99.88,
"rot_10": 99.94,
"rot_id0": 0.007878238335251808,
"rot(deg)_id0": 0.45138978958129883,
"rot_2_id0": 99.98,
"rot_5_id0": 100.0,
...
},
...
}

The meaning and the shapes' ID is listed as follows:

MetricsMeaning
rotaverage rotation errors in radians
rot(deg)average rotation errors in degrees
rot_2the percentage (%) of the samples rotation errors less than 2 degrees
rot_5the percentage (%) of the samples rotation errors less than 5 degrees
rot_10the percentage (%) of the samples rotation errors less than 10 degrees
tranaverage translation errors (distance)
tran_0.02the percentage (%) of the samples translation errors less than 0.02
tran_0.05the percentage (%) of the samples translation errors less than 0.05
tran_0.1the percentage (%) of the samples translation errors less than 0.1
addaverage distance of two point clouds (ADD)
add_0.02the percentage (%) of the samples average distance less than 0.02
add_0.05the percentage (%) of the samples average distance less than 0.05
add_0.1the percentage (%) of the samples average distance less than 0.1
geoaverage geodesic distance on SE(3)
geo_0.02the percentage (%) of the samples geodesic distance less than 0.02
geo_0.05the percentage (%) of the samples geodesic distance less than 0.05
geo_0.1the percentage (%) of the samples geodesic distance less than 0.1
{metric}_id*the metrics for each shape, e.g. rot_id0, tran_id2, ...
IDShape
0tetrahedron
1cube
2icosahedron
3cone
4cylinder

Datasets

We use the following datasets in our experiments:

Download
SYMSOLtfds*1
SYMSOL-Tgdrive*2
T-LESSgdrive
VOC2012gdrive

*1 SYMSOL is downloaded automatically via tensorflow-datasets during the first run.

*2 We also provide the scripts for synthesizing SYMSOL-T dataset.

# You need to enable the screen/display before `make run`
export DISPLAY=:0
make run
# Make your own SYMSOL-T (25000 samples) = (5 shapes) * (5k per shape)
python3 liepose.data.symsolt.synth --path "dataset/symsolt/my-symsolt-5k" "num_samples=25000"

For more configs, see the script.

Multi-GPUs Training

In default, single-GPU is used for training as we set the CUDA_VISIBLE_DEVICES='0' inside the Makefile. You can enable multi-GPU training simply by setting the CUDA_VISIBLE_DEVICES to multiple devices. The framework will automatically switch to the parallel training mode. For example, export CUDA_VISIBLE_DEVICES='0,1,2', will use 3 devices for training, and the batch_size is divided by 3 for each device.

Citation

@inproceedings{hsiao2024confronting,
title={Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)},
author={Hsiao, Tsu-Ching and Chen, Hao-Wei and Yang, Hsuan-Kung and Lee, Chun-Yi},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={352--362},
year={2024}
}

About

[CVPR 2024] Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)

Topics

Resources

Stars

44 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Ending2015a/liepose-diffusion: [CVPR 2024] Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3) · GitHub
Skip to content

Repository files navigation

Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)

CVPR 2024

Tsu-Ching Hsiao Hao-Wei Chen Hsuan-Kung Yang Chun-Yi Lee
Elsa Lab, National Tsing Hua University

| Paper | arXiv | Project |

se3-diffusion-cover-gt-right-1

Official re-implementation in JAX.

Abstract

Addressing pose ambiguity in 6D object pose estimation from single RGB images presents a significant challenge, particularly due to object symmetries or occlusions. In response, we introduce a novel score-based diffusion method applied to the SE(3) group, marking the first application of diffusion models to SE(3) within the image domain, specifically tailored for pose estimation tasks. Extensive evaluations demonstrate the method's efficacy in handling pose ambiguity, mitigating perspective-induced ambiguity, and showcasing the robustness of our surrogate Stein score formulation on SE(3). This formulation not only improves the convergence of denoising process but also enhances computational efficiency. Thus, we pioneer a promising strategy for 6D object pose estimation.

Updates

  • 2024/05/14: Code released.

Videos

set_all_low.mp4
Click here to see the SYMSOL-T demos
output.mp4
output.mp4
output.mp4
output.mp4
output.mp4

Table of Contents

Installation

Requirements

Ensure your system meets the following requirements:

  • Linux (only tested on Ubuntu 20.04)
  • nvidia-docker
  • CUDA 12.2 or higher

Setup

  1. Clone this repo with the following command:
git clone git@github.com:Ending2015a/liepose-diffusion.git
  1. Download datasets. This will download the TLESS dataset and VOC2012 dataset.
cd liepose-diffusion
make download

NOTE if the datasets do not download correctly, you can download them from the links provided in Datasets section.

  1. Build the docker image and start the container
make build
make run
# inside the docker
cd /workspace
  1. Now you are ready to run the experiments. See Experiments.

Experiments

SYMSOL

SO(3)

python3 -m liepose.exp.symsol.run

The result is located at logs/experiments/symsol-score-flat/.../inference_400000/summary.json.

SYMSOL-T

SE(3)

python3 -m liepose.exp.symsolt.run "lie_type=[se3]"

R3SO(3)

python3 -m liepose.exp.symsolt.run "lie_type=[r3so3]"

The result is located at logs/experiments/symsolt-score-flat/.../inference_800000/summary.json. The ... depends on the given parameters, e.g. lie_type=se3+repr_type=tan+....

T-LESS

SE(3)

python3 -m liepose.exp.bop.run "lie_type=[se3]"

R3SO(3)

python3 -m liepose.exp.bop.run "lie_type=[r3so3]"

The result is located at logs/experiments/bop-tless-score-flat/.../inference_400000/summary.json. The ... depends on the given parameters, e.g. lie_type=se3+repr_type=tan+....

Metrics

SYMSOL and SYMSOL-T

In summary.json, you will see the format like

{
"final_metrics": {
"rot": 0.007605713326483965,
"rot(deg)": 0.4357752501964569,
"rot_2": 99.59599999999999,
"rot_5": 99.88,
"rot_10": 99.94,
"rot_id0": 0.007878238335251808,
"rot(deg)_id0": 0.45138978958129883,
"rot_2_id0": 99.98,
"rot_5_id0": 100.0,
...
},
...
}

The meaning and the shapes' ID is listed as follows:

MetricsMeaning
rotaverage rotation errors in radians
rot(deg)average rotation errors in degrees
rot_2the percentage (%) of the samples rotation errors less than 2 degrees
rot_5the percentage (%) of the samples rotation errors less than 5 degrees
rot_10the percentage (%) of the samples rotation errors less than 10 degrees
tranaverage translation errors (distance)
tran_0.02the percentage (%) of the samples translation errors less than 0.02
tran_0.05the percentage (%) of the samples translation errors less than 0.05
tran_0.1the percentage (%) of the samples translation errors less than 0.1
addaverage distance of two point clouds (ADD)
add_0.02the percentage (%) of the samples average distance less than 0.02
add_0.05the percentage (%) of the samples average distance less than 0.05
add_0.1the percentage (%) of the samples average distance less than 0.1
geoaverage geodesic distance on SE(3)
geo_0.02the percentage (%) of the samples geodesic distance less than 0.02
geo_0.05the percentage (%) of the samples geodesic distance less than 0.05
geo_0.1the percentage (%) of the samples geodesic distance less than 0.1
{metric}_id*the metrics for each shape, e.g. rot_id0, tran_id2, ...
IDShape
0tetrahedron
1cube
2icosahedron
3cone
4cylinder

Datasets

We use the following datasets in our experiments:

Download
SYMSOLtfds*1
SYMSOL-Tgdrive*2
T-LESSgdrive
VOC2012gdrive

*1 SYMSOL is downloaded automatically via tensorflow-datasets during the first run.

*2 We also provide the scripts for synthesizing SYMSOL-T dataset.

# You need to enable the screen/display before `make run`
export DISPLAY=:0
make run
# Make your own SYMSOL-T (25000 samples) = (5 shapes) * (5k per shape)
python3 liepose.data.symsolt.synth --path "dataset/symsolt/my-symsolt-5k" "num_samples=25000"

For more configs, see the script.

Multi-GPUs Training

In default, single-GPU is used for training as we set the CUDA_VISIBLE_DEVICES='0' inside the Makefile. You can enable multi-GPU training simply by setting the CUDA_VISIBLE_DEVICES to multiple devices. The framework will automatically switch to the parallel training mode. For example, export CUDA_VISIBLE_DEVICES='0,1,2', will use 3 devices for training, and the batch_size is divided by 3 for each device.

Citation

@inproceedings{hsiao2024confronting,
title={Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)},
author={Hsiao, Tsu-Ching and Chen, Hao-Wei and Yang, Hsuan-Kung and Lee, Chun-Yi},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={352--362},
year={2024}
}

About

[CVPR 2024] Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)

Topics

Resources

Stars

44 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Repository files navigation

Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)

CVPR 2024

Tsu-Ching Hsiao Hao-Wei Chen Hsuan-Kung Yang Chun-Yi Lee
Elsa Lab, National Tsing Hua University

| Paper | arXiv | Project |

se3-diffusion-cover-gt-right-1

Official re-implementation in JAX.

Abstract

Addressing pose ambiguity in 6D object pose estimation from single RGB images presents a significant challenge, particularly due to object symmetries or occlusions. In response, we introduce a novel score-based diffusion method applied to the SE(3) group, marking the first application of diffusion models to SE(3) within the image domain, specifically tailored for pose estimation tasks. Extensive evaluations demonstrate the method's efficacy in handling pose ambiguity, mitigating perspective-induced ambiguity, and showcasing the robustness of our surrogate Stein score formulation on SE(3). This formulation not only improves the convergence of denoising process but also enhances computational efficiency. Thus, we pioneer a promising strategy for 6D object pose estimation.

Updates

  • 2024/05/14: Code released.

Videos

set_all_low.mp4
Click here to see the SYMSOL-T demos
output.mp4
output.mp4
output.mp4
output.mp4
output.mp4

Table of Contents

Installation

Requirements

Ensure your system meets the following requirements:

  • Linux (only tested on Ubuntu 20.04)
  • nvidia-docker
  • CUDA 12.2 or higher

Setup

  1. Clone this repo with the following command:
git clone git@github.com:Ending2015a/liepose-diffusion.git
  1. Download datasets. This will download the TLESS dataset and VOC2012 dataset.
cd liepose-diffusion
make download

NOTE if the datasets do not download correctly, you can download them from the links provided in Datasets section.

  1. Build the docker image and start the container
make build
make run
# inside the docker
cd /workspace
  1. Now you are ready to run the experiments. See Experiments.

Experiments

SYMSOL

SO(3)

python3 -m liepose.exp.symsol.run

The result is located at logs/experiments/symsol-score-flat/.../inference_400000/summary.json.

SYMSOL-T

SE(3)

python3 -m liepose.exp.symsolt.run "lie_type=[se3]"

R3SO(3)

python3 -m liepose.exp.symsolt.run "lie_type=[r3so3]"

The result is located at logs/experiments/symsolt-score-flat/.../inference_800000/summary.json. The ... depends on the given parameters, e.g. lie_type=se3+repr_type=tan+....

T-LESS

SE(3)

python3 -m liepose.exp.bop.run "lie_type=[se3]"

R3SO(3)

python3 -m liepose.exp.bop.run "lie_type=[r3so3]"

The result is located at logs/experiments/bop-tless-score-flat/.../inference_400000/summary.json. The ... depends on the given parameters, e.g. lie_type=se3+repr_type=tan+....

Metrics

SYMSOL and SYMSOL-T

In summary.json, you will see the format like

{
"final_metrics": {
"rot": 0.007605713326483965,
"rot(deg)": 0.4357752501964569,
"rot_2": 99.59599999999999,
"rot_5": 99.88,
"rot_10": 99.94,
"rot_id0": 0.007878238335251808,
"rot(deg)_id0": 0.45138978958129883,
"rot_2_id0": 99.98,
"rot_5_id0": 100.0,
...
},
...
}

The meaning and the shapes' ID is listed as follows:

MetricsMeaning
rotaverage rotation errors in radians
rot(deg)average rotation errors in degrees
rot_2the percentage (%) of the samples rotation errors less than 2 degrees
rot_5the percentage (%) of the samples rotation errors less than 5 degrees
rot_10the percentage (%) of the samples rotation errors less than 10 degrees
tranaverage translation errors (distance)
tran_0.02the percentage (%) of the samples translation errors less than 0.02
tran_0.05the percentage (%) of the samples translation errors less than 0.05
tran_0.1the percentage (%) of the samples translation errors less than 0.1
addaverage distance of two point clouds (ADD)
add_0.02the percentage (%) of the samples average distance less than 0.02
add_0.05the percentage (%) of the samples average distance less than 0.05
add_0.1the percentage (%) of the samples average distance less than 0.1
geoaverage geodesic distance on SE(3)
geo_0.02the percentage (%) of the samples geodesic distance less than 0.02
geo_0.05the percentage (%) of the samples geodesic distance less than 0.05
geo_0.1the percentage (%) of the samples geodesic distance less than 0.1
{metric}_id*the metrics for each shape, e.g. rot_id0, tran_id2, ...
IDShape
0tetrahedron
1cube
2icosahedron
3cone
4cylinder

Datasets

We use the following datasets in our experiments:

Download
SYMSOLtfds*1
SYMSOL-Tgdrive*2
T-LESSgdrive
VOC2012gdrive

*1 SYMSOL is downloaded automatically via tensorflow-datasets during the first run.

*2 We also provide the scripts for synthesizing SYMSOL-T dataset.

# You need to enable the screen/display before `make run`
export DISPLAY=:0
make run
# Make your own SYMSOL-T (25000 samples) = (5 shapes) * (5k per shape)
python3 liepose.data.symsolt.synth --path "dataset/symsolt/my-symsolt-5k" "num_samples=25000"

For more configs, see the script.

Multi-GPUs Training

In default, single-GPU is used for training as we set the CUDA_VISIBLE_DEVICES='0' inside the Makefile. You can enable multi-GPU training simply by setting the CUDA_VISIBLE_DEVICES to multiple devices. The framework will automatically switch to the parallel training mode. For example, export CUDA_VISIBLE_DEVICES='0,1,2', will use 3 devices for training, and the batch_size is divided by 3 for each device.

Citation

@inproceedings{hsiao2024confronting,
title={Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)},
author={Hsiao, Tsu-Ching and Chen, Hao-Wei and Yang, Hsuan-Kung and Lee, Chun-Yi},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={352--362},
year={2024}
}

About

[CVPR 2024] Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)

Topics

Resources

Stars

44 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Repository files navigation

Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)

CVPR 2024

Tsu-Ching Hsiao Hao-Wei Chen Hsuan-Kung Yang Chun-Yi Lee
Elsa Lab, National Tsing Hua University

| Paper | arXiv | Project |

se3-diffusion-cover-gt-right-1

Official re-implementation in JAX.

Abstract

Addressing pose ambiguity in 6D object pose estimation from single RGB images presents a significant challenge, particularly due to object symmetries or occlusions. In response, we introduce a novel score-based diffusion method applied to the SE(3) group, marking the first application of diffusion models to SE(3) within the image domain, specifically tailored for pose estimation tasks. Extensive evaluations demonstrate the method's efficacy in handling pose ambiguity, mitigating perspective-induced ambiguity, and showcasing the robustness of our surrogate Stein score formulation on SE(3). This formulation not only improves the convergence of denoising process but also enhances computational efficiency. Thus, we pioneer a promising strategy for 6D object pose estimation.

Updates

  • 2024/05/14: Code released.

Videos

set_all_low.mp4
Click here to see the SYMSOL-T demos
output.mp4
output.mp4
output.mp4
output.mp4
output.mp4

Table of Contents

Installation

Requirements

Ensure your system meets the following requirements:

  • Linux (only tested on Ubuntu 20.04)
  • nvidia-docker
  • CUDA 12.2 or higher

Setup

  1. Clone this repo with the following command:
git clone git@github.com:Ending2015a/liepose-diffusion.git
  1. Download datasets. This will download the TLESS dataset and VOC2012 dataset.
cd liepose-diffusion
make download

NOTE if the datasets do not download correctly, you can download them from the links provided in Datasets section.

  1. Build the docker image and start the container
make build
make run
# inside the docker
cd /workspace
  1. Now you are ready to run the experiments. See Experiments.

Experiments

SYMSOL

SO(3)

python3 -m liepose.exp.symsol.run

The result is located at logs/experiments/symsol-score-flat/.../inference_400000/summary.json.

SYMSOL-T

SE(3)

python3 -m liepose.exp.symsolt.run "lie_type=[se3]"

R3SO(3)

python3 -m liepose.exp.symsolt.run "lie_type=[r3so3]"

The result is located at logs/experiments/symsolt-score-flat/.../inference_800000/summary.json. The ... depends on the given parameters, e.g. lie_type=se3+repr_type=tan+....

T-LESS

SE(3)

python3 -m liepose.exp.bop.run "lie_type=[se3]"

R3SO(3)

python3 -m liepose.exp.bop.run "lie_type=[r3so3]"

The result is located at logs/experiments/bop-tless-score-flat/.../inference_400000/summary.json. The ... depends on the given parameters, e.g. lie_type=se3+repr_type=tan+....

Metrics

SYMSOL and SYMSOL-T

In summary.json, you will see the format like

{
"final_metrics": {
"rot": 0.007605713326483965,
"rot(deg)": 0.4357752501964569,
"rot_2": 99.59599999999999,
"rot_5": 99.88,
"rot_10": 99.94,
"rot_id0": 0.007878238335251808,
"rot(deg)_id0": 0.45138978958129883,
"rot_2_id0": 99.98,
"rot_5_id0": 100.0,
...
},
...
}

The meaning and the shapes' ID is listed as follows:

MetricsMeaning
rotaverage rotation errors in radians
rot(deg)average rotation errors in degrees
rot_2the percentage (%) of the samples rotation errors less than 2 degrees
rot_5the percentage (%) of the samples rotation errors less than 5 degrees
rot_10the percentage (%) of the samples rotation errors less than 10 degrees
tranaverage translation errors (distance)
tran_0.02the percentage (%) of the samples translation errors less than 0.02
tran_0.05the percentage (%) of the samples translation errors less than 0.05
tran_0.1the percentage (%) of the samples translation errors less than 0.1
addaverage distance of two point clouds (ADD)
add_0.02the percentage (%) of the samples average distance less than 0.02
add_0.05the percentage (%) of the samples average distance less than 0.05
add_0.1the percentage (%) of the samples average distance less than 0.1
geoaverage geodesic distance on SE(3)
geo_0.02the percentage (%) of the samples geodesic distance less than 0.02
geo_0.05the percentage (%) of the samples geodesic distance less than 0.05
geo_0.1the percentage (%) of the samples geodesic distance less than 0.1
{metric}_id*the metrics for each shape, e.g. rot_id0, tran_id2, ...
IDShape
0tetrahedron
1cube
2icosahedron
3cone
4cylinder

Datasets

We use the following datasets in our experiments:

Download
SYMSOLtfds*1
SYMSOL-Tgdrive*2
T-LESSgdrive
VOC2012gdrive

*1 SYMSOL is downloaded automatically via tensorflow-datasets during the first run.

*2 We also provide the scripts for synthesizing SYMSOL-T dataset.

# You need to enable the screen/display before `make run`
export DISPLAY=:0
make run
# Make your own SYMSOL-T (25000 samples) = (5 shapes) * (5k per shape)
python3 liepose.data.symsolt.synth --path "dataset/symsolt/my-symsolt-5k" "num_samples=25000"

For more configs, see the script.

Multi-GPUs Training

In default, single-GPU is used for training as we set the CUDA_VISIBLE_DEVICES='0' inside the Makefile. You can enable multi-GPU training simply by setting the CUDA_VISIBLE_DEVICES to multiple devices. The framework will automatically switch to the parallel training mode. For example, export CUDA_VISIBLE_DEVICES='0,1,2', will use 3 devices for training, and the batch_size is divided by 3 for each device.

Citation

@inproceedings{hsiao2024confronting,
title={Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)},
author={Hsiao, Tsu-Ching and Chen, Hao-Wei and Yang, Hsuan-Kung and Lee, Chun-Yi},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={352--362},
year={2024}
}

About

[CVPR 2024] Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)

Topics

Resources

Stars

44 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Ending2015a/liepose-diffusion: [CVPR 2024] Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3) · GitHub
Skip to content

Repository files navigation

Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)

CVPR 2024

Tsu-Ching Hsiao Hao-Wei Chen Hsuan-Kung Yang Chun-Yi Lee
Elsa Lab, National Tsing Hua University

| Paper | arXiv | Project |

se3-diffusion-cover-gt-right-1

Official re-implementation in JAX.

Abstract

Addressing pose ambiguity in 6D object pose estimation from single RGB images presents a significant challenge, particularly due to object symmetries or occlusions. In response, we introduce a novel score-based diffusion method applied to the SE(3) group, marking the first application of diffusion models to SE(3) within the image domain, specifically tailored for pose estimation tasks. Extensive evaluations demonstrate the method's efficacy in handling pose ambiguity, mitigating perspective-induced ambiguity, and showcasing the robustness of our surrogate Stein score formulation on SE(3). This formulation not only improves the convergence of denoising process but also enhances computational efficiency. Thus, we pioneer a promising strategy for 6D object pose estimation.

Updates

  • 2024/05/14: Code released.

Videos

set_all_low.mp4
Click here to see the SYMSOL-T demos
output.mp4
output.mp4
output.mp4
output.mp4
output.mp4

Table of Contents

Installation

Requirements

Ensure your system meets the following requirements:

  • Linux (only tested on Ubuntu 20.04)
  • nvidia-docker
  • CUDA 12.2 or higher

Setup

  1. Clone this repo with the following command:
git clone git@github.com:Ending2015a/liepose-diffusion.git
  1. Download datasets. This will download the TLESS dataset and VOC2012 dataset.
cd liepose-diffusion
make download

NOTE if the datasets do not download correctly, you can download them from the links provided in Datasets section.

  1. Build the docker image and start the container
make build
make run
# inside the docker
cd /workspace
  1. Now you are ready to run the experiments. See Experiments.

Experiments

SYMSOL

SO(3)

python3 -m liepose.exp.symsol.run

The result is located at logs/experiments/symsol-score-flat/.../inference_400000/summary.json.

SYMSOL-T

SE(3)

python3 -m liepose.exp.symsolt.run "lie_type=[se3]"

R3SO(3)

python3 -m liepose.exp.symsolt.run "lie_type=[r3so3]"

The result is located at logs/experiments/symsolt-score-flat/.../inference_800000/summary.json. The ... depends on the given parameters, e.g. lie_type=se3+repr_type=tan+....

T-LESS

SE(3)

python3 -m liepose.exp.bop.run "lie_type=[se3]"

R3SO(3)

python3 -m liepose.exp.bop.run "lie_type=[r3so3]"

The result is located at logs/experiments/bop-tless-score-flat/.../inference_400000/summary.json. The ... depends on the given parameters, e.g. lie_type=se3+repr_type=tan+....

Metrics

SYMSOL and SYMSOL-T

In summary.json, you will see the format like

{
"final_metrics": {
"rot": 0.007605713326483965,
"rot(deg)": 0.4357752501964569,
"rot_2": 99.59599999999999,
"rot_5": 99.88,
"rot_10": 99.94,
"rot_id0": 0.007878238335251808,
"rot(deg)_id0": 0.45138978958129883,
"rot_2_id0": 99.98,
"rot_5_id0": 100.0,
...
},
...
}

The meaning and the shapes' ID is listed as follows:

MetricsMeaning
rotaverage rotation errors in radians
rot(deg)average rotation errors in degrees
rot_2the percentage (%) of the samples rotation errors less than 2 degrees
rot_5the percentage (%) of the samples rotation errors less than 5 degrees
rot_10the percentage (%) of the samples rotation errors less than 10 degrees
tranaverage translation errors (distance)
tran_0.02the percentage (%) of the samples translation errors less than 0.02
tran_0.05the percentage (%) of the samples translation errors less than 0.05
tran_0.1the percentage (%) of the samples translation errors less than 0.1
addaverage distance of two point clouds (ADD)
add_0.02the percentage (%) of the samples average distance less than 0.02
add_0.05the percentage (%) of the samples average distance less than 0.05
add_0.1the percentage (%) of the samples average distance less than 0.1
geoaverage geodesic distance on SE(3)
geo_0.02the percentage (%) of the samples geodesic distance less than 0.02
geo_0.05the percentage (%) of the samples geodesic distance less than 0.05
geo_0.1the percentage (%) of the samples geodesic distance less than 0.1
{metric}_id*the metrics for each shape, e.g. rot_id0, tran_id2, ...
IDShape
0tetrahedron
1cube
2icosahedron
3cone
4cylinder

Datasets

We use the following datasets in our experiments:

Download
SYMSOLtfds*1
SYMSOL-Tgdrive*2
T-LESSgdrive
VOC2012gdrive

*1 SYMSOL is downloaded automatically via tensorflow-datasets during the first run.

*2 We also provide the scripts for synthesizing SYMSOL-T dataset.

# You need to enable the screen/display before `make run`
export DISPLAY=:0
make run
# Make your own SYMSOL-T (25000 samples) = (5 shapes) * (5k per shape)
python3 liepose.data.symsolt.synth --path "dataset/symsolt/my-symsolt-5k" "num_samples=25000"

For more configs, see the script.

Multi-GPUs Training

In default, single-GPU is used for training as we set the CUDA_VISIBLE_DEVICES='0' inside the Makefile. You can enable multi-GPU training simply by setting the CUDA_VISIBLE_DEVICES to multiple devices. The framework will automatically switch to the parallel training mode. For example, export CUDA_VISIBLE_DEVICES='0,1,2', will use 3 devices for training, and the batch_size is divided by 3 for each device.

Citation

@inproceedings{hsiao2024confronting,
title={Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)},
author={Hsiao, Tsu-Ching and Chen, Hao-Wei and Yang, Hsuan-Kung and Lee, Chun-Yi},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={352--362},
year={2024}
}

About

[CVPR 2024] Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)

Topics

Resources

Stars

44 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - Ending2015a/liepose-diffusion: [CVPR 2024] Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3) · GitHub
Skip to content

Repository files navigation

Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)

CVPR 2024

Tsu-Ching Hsiao Hao-Wei Chen Hsuan-Kung Yang Chun-Yi Lee
Elsa Lab, National Tsing Hua University

| Paper | arXiv | Project |

se3-diffusion-cover-gt-right-1

Official re-implementation in JAX.

Abstract

Addressing pose ambiguity in 6D object pose estimation from single RGB images presents a significant challenge, particularly due to object symmetries or occlusions. In response, we introduce a novel score-based diffusion method applied to the SE(3) group, marking the first application of diffusion models to SE(3) within the image domain, specifically tailored for pose estimation tasks. Extensive evaluations demonstrate the method's efficacy in handling pose ambiguity, mitigating perspective-induced ambiguity, and showcasing the robustness of our surrogate Stein score formulation on SE(3). This formulation not only improves the convergence of denoising process but also enhances computational efficiency. Thus, we pioneer a promising strategy for 6D object pose estimation.

Updates

  • 2024/05/14: Code released.

Videos

set_all_low.mp4
Click here to see the SYMSOL-T demos
output.mp4
output.mp4
output.mp4
output.mp4
output.mp4

Table of Contents

Installation

Requirements

Ensure your system meets the following requirements:

  • Linux (only tested on Ubuntu 20.04)
  • nvidia-docker
  • CUDA 12.2 or higher

Setup

  1. Clone this repo with the following command:
git clone git@github.com:Ending2015a/liepose-diffusion.git
  1. Download datasets. This will download the TLESS dataset and VOC2012 dataset.
cd liepose-diffusion
make download

NOTE if the datasets do not download correctly, you can download them from the links provided in Datasets section.

  1. Build the docker image and start the container
make build
make run
# inside the docker
cd /workspace
  1. Now you are ready to run the experiments. See Experiments.

Experiments

SYMSOL

SO(3)

python3 -m liepose.exp.symsol.run

The result is located at logs/experiments/symsol-score-flat/.../inference_400000/summary.json.

SYMSOL-T

SE(3)

python3 -m liepose.exp.symsolt.run "lie_type=[se3]"

R3SO(3)

python3 -m liepose.exp.symsolt.run "lie_type=[r3so3]"

The result is located at logs/experiments/symsolt-score-flat/.../inference_800000/summary.json. The ... depends on the given parameters, e.g. lie_type=se3+repr_type=tan+....

T-LESS

SE(3)

python3 -m liepose.exp.bop.run "lie_type=[se3]"

R3SO(3)

python3 -m liepose.exp.bop.run "lie_type=[r3so3]"

The result is located at logs/experiments/bop-tless-score-flat/.../inference_400000/summary.json. The ... depends on the given parameters, e.g. lie_type=se3+repr_type=tan+....

Metrics

SYMSOL and SYMSOL-T

In summary.json, you will see the format like

{
"final_metrics": {
"rot": 0.007605713326483965,
"rot(deg)": 0.4357752501964569,
"rot_2": 99.59599999999999,
"rot_5": 99.88,
"rot_10": 99.94,
"rot_id0": 0.007878238335251808,
"rot(deg)_id0": 0.45138978958129883,
"rot_2_id0": 99.98,
"rot_5_id0": 100.0,
...
},
...
}

The meaning and the shapes' ID is listed as follows:

MetricsMeaning
rotaverage rotation errors in radians
rot(deg)average rotation errors in degrees
rot_2the percentage (%) of the samples rotation errors less than 2 degrees
rot_5the percentage (%) of the samples rotation errors less than 5 degrees
rot_10the percentage (%) of the samples rotation errors less than 10 degrees
tranaverage translation errors (distance)
tran_0.02the percentage (%) of the samples translation errors less than 0.02
tran_0.05the percentage (%) of the samples translation errors less than 0.05
tran_0.1the percentage (%) of the samples translation errors less than 0.1
addaverage distance of two point clouds (ADD)
add_0.02the percentage (%) of the samples average distance less than 0.02
add_0.05the percentage (%) of the samples average distance less than 0.05
add_0.1the percentage (%) of the samples average distance less than 0.1
geoaverage geodesic distance on SE(3)
geo_0.02the percentage (%) of the samples geodesic distance less than 0.02
geo_0.05the percentage (%) of the samples geodesic distance less than 0.05
geo_0.1the percentage (%) of the samples geodesic distance less than 0.1
{metric}_id*the metrics for each shape, e.g. rot_id0, tran_id2, ...
IDShape
0tetrahedron
1cube
2icosahedron
3cone
4cylinder

Datasets

We use the following datasets in our experiments:

Download
SYMSOLtfds*1
SYMSOL-Tgdrive*2
T-LESSgdrive
VOC2012gdrive

*1 SYMSOL is downloaded automatically via tensorflow-datasets during the first run.

*2 We also provide the scripts for synthesizing SYMSOL-T dataset.

# You need to enable the screen/display before `make run`
export DISPLAY=:0
make run
# Make your own SYMSOL-T (25000 samples) = (5 shapes) * (5k per shape)
python3 liepose.data.symsolt.synth --path "dataset/symsolt/my-symsolt-5k" "num_samples=25000"

For more configs, see the script.

Multi-GPUs Training

In default, single-GPU is used for training as we set the CUDA_VISIBLE_DEVICES='0' inside the Makefile. You can enable multi-GPU training simply by setting the CUDA_VISIBLE_DEVICES to multiple devices. The framework will automatically switch to the parallel training mode. For example, export CUDA_VISIBLE_DEVICES='0,1,2', will use 3 devices for training, and the batch_size is divided by 3 for each device.

Citation

@inproceedings{hsiao2024confronting,
title={Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)},
author={Hsiao, Tsu-Ching and Chen, Hao-Wei and Yang, Hsuan-Kung and Lee, Chun-Yi},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={352--362},
year={2024}
}

About

[CVPR 2024] Confronting Ambiguity in 6D Object Pose Estimation via Score-Based Diffusion on SE(3)

Topics

Resources

Stars

44 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages