Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
213 changes: 213 additions & 0 deletions research/PoseD-Flow/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="description"
content="Versatile and Guided Flow Matching Model of Human Pose.">
<meta name="keywords" content="PoseD-Flow">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>PoseD-Flow: Versatile and Guided Flow Matching Model of Human Pose</title>

<link href="https://fonts.googleapis.com/css?family=Google+Sans|Noto+Sans|Castoro"
rel="stylesheet">

<link rel="stylesheet" href="./static/css/bulma.min.css">
<link rel="stylesheet" href="./static/css/bulma-carousel.min.css">
<link rel="stylesheet" href="./static/css/bulma-slider.min.css">
<link rel="stylesheet" href="./static/css/fontawesome.all.min.css">
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/gh/jpswalsh/academicons@1/css/academicons.min.css">
<link rel="stylesheet" href="./static/css/index.css">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script defer src="./static/js/fontawesome.all.min.js"></script>
<script src="./static/js/bulma-carousel.min.js"></script>
<script src="./static/js/bulma-slider.min.js"></script>
<script src="./static/js/index.js"></script>
</head>
<body>

<section class="hero">
<div class="hero-body" style="padding-bottom: 0.5rem;">
<div class="container is-max-desktop">
<div class="columns is-centered">
<div class="column has-text-centered">
<h1 class="title is-1 publication-title" style="margin-bottom: 0.45rem;">PoseD-Flow: Versatile and Guided Flow Matching Model of Human Pose</h1>
<div class="is-size-4 publication-authors">
<span class="author-block">CVPR 2026</span>
</div>
<div class="is-size-4 publication-authors">
<span class="author-block">
<a href="https://scholar.google.com/citations?user=9DiuOycAAAAJ">Jebastin Nadar</a>,</span>
<span class="author-block">
<a href="https://www.simofoti.com/">Simone Foti</a>,</span>
<span class="author-block">
<a href="https://tolgabirdal.github.io/">Tolga Birdal</a>
</span>
</div>
<div class="is-size-4 publication-authors">
<span class="author-block">Imperial College London</span>
</div>

<div class="column has-text-centered">
<div class="publication-links">
<span class="link-block">
<a href=""
class="external-link button is-normal is-rounded is-dark">
<span class="icon">
<i class="fas fa-file-pdf"></i>
</span>
<span>Paper</span>
</a>
</span>
<span class="link-block">
<a href=""
class="external-link button is-normal is-rounded is-dark">
<span class="icon">
<i class="ai ai-arxiv"></i>
</span>
<span>arXiv</span>
</a>
</span>
<span class="link-block">
<a href="https://github.com/circle-group/PoseDFlow"
class="external-link button is-normal is-rounded is-dark">
<span class="icon">
<i class="fab fa-github"></i>
</span>
<span>Code</span>
</a>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</section>

<section class="section" style="padding-top: 0.5rem; padding-bottom: 1.75rem;">
<div class="container" style="max-width: var(--overview-max-width, 1000px); width: 100%;">
<div class="columns is-centered has-text-centered">
<div class="column is-full">
<div class="content has-text-justified" style="border: 1px solid #d9d9d9; border-radius: 12px; padding: 2rem; background: #fff;">
<h2 class="title is-3 has-text-centered">Overview</h2>
<p style="font-size: 1.1rem;">
Generative pose priors have recently emerged as a powerful tool for inference under occlusion or noise. Yet today's strongest generative paradigm, flow matching, remains unused for human pose due to two fundamental barriers: the absence of a pre-trained flow prior and the non-Euclidean nature of articulated poses. We overcome both by introducing <strong>PoseD-Flow</strong>, a novel framework to unify Riemannian Flow Matching (RFM) with training-free guidance for 3D human pose recovery. PoseD-Flow is composed of two contributions: (i) <strong>PoseRFM</strong>, the first RFM model of human pose, defined directly on the product manifold of joint rotations, and (ii) <strong>Riemannian D-Flow</strong>, a principled guidance mechanism that, by differentiating through its ODE sampling dynamics, conditions PoseRFM at inference without any task-specific training. Our theoretical analysis shows that the induced dynamics are shaped by data covariance and manifold curvature, yielding a bias toward realistic poses. Across pose completion, denoising, and inverse kinematics, PoseD-Flow establishes new state of the art, particularly under noise, occlusion, and partial observations.
</p>
<img id="teaser" src="./static/images/teaser_v2.png" alt="Teaser image" style="display: block; width: 100%; height: auto; margin: 1rem auto 0.75rem;">
<p style="font-size: 1.05rem; text-align: center;"><strong>PoseD-Flow</strong> framework: (top) <strong>PoseRFM</strong>, a robust human pose prior defined on the product manifold of joints using <em>Riemannian Flow Matching;</em> (bottom): <strong>Riemannian D-Flow</strong>, a flexible, geometry-aware inversion technique for flow models. Together, they provide a novel approach to solving inverse problems in human pose, achieving results competitive with SotA diffusion models.</p>
</div>
</div>
</div>
</div>
</section>

<section class="section" style="padding-top: 1.75rem;">
<div class="container is-max-desktop has-text-centered" style="margin-bottom: 1rem;">
<h2 class="title is-3">Results</h2>
</div>
<div style="width: 100%; height: 2px; background: linear-gradient(to right, rgba(0, 0, 0, 0), rgba(0, 0, 0, 1), rgba(0, 0, 0, 0));"></div>
<div class="container has-text-centered" style="max-width: var(--results-max-width, 1000px); width: 100%; margin-top: 3rem;">
<div style="margin-bottom: 3rem; border: 1px solid #d9d9d9; border-radius: 12px; padding: 1.5rem; background: #fff;">
<h3 class="title is-3">Pose Generation</h3>
<p style="font-size: 1.1rem;">We visualize the sampling trajectory for unconditional pose generation, where an initial random noise sample is gradually refined as the ODE solver advances from N=0 to N=100 function evaluations.</p>
<video id="pose_gen" autoplay controls muted loop playsinline height="100%" style="display: block; width: 100%; max-width: 960px; margin: 0 auto;">
<source src="./static/videos/pose_gen.webm"
type="video/webm">
</video>
</div>
<div style="margin-bottom: 3rem; border: 1px solid #d9d9d9; border-radius: 12px; padding: 1.5rem; background: #fff;">
<h3 class="title is-3">Pose Completion</h3>
<p style="font-size: 1.1rem;">Pose completion with <span style="color: #D1AECCFF; font-weight: 600;">occluded joints</span>. The animation shows the evolution of the final pose from N=0 to N=200 iterations optimized by PoseD-Flow.</p>
<video id="pose_comp" autoplay controls muted loop playsinline height="100%" style="display: block; width: 100%; max-width: 960px; margin: 0 auto;">
<source src="./static/videos/pose_comp.webm"
type="video/webm">
</video>
<div style="width: 100%; max-width: 960px; margin: 0.8rem auto 0; display: flex; justify-content: center; align-items: center; gap: 8.4rem; font-size: 1.25rem; font-weight: 700; line-height: 1.2;">
<span style="text-align: center;">Ground Truth</span>
<span style="text-align: center;">Completed Pose</span>
</div>
</div>
<div style="margin-bottom: 3rem; border: 1px solid #d9d9d9; border-radius: 12px; padding: 1.5rem; background: #fff;">
<h3 class="title is-3">Motion Denoising</h3>
<p style="font-size: 1.1rem;">Even though our method is not explicitly trained for motion tasks, it is still able to recover plausible motion from noisy 3D observations.</p>
<video id="motion_denoise" autoplay controls muted loop playsinline height="100%" style="display: block; width: 100%; max-width: 960px; margin: 0 auto;">
<source src="./static/videos/motion_denoise.webm"
type="video/webm">
</video>
<div style="width: 100%; max-width: 960px; margin: 0.8rem auto 0; display: flex; justify-content: space-between; align-items: center; font-size: 1.25rem; font-weight: 700; line-height: 1.2;">
<span style="text-align: center; width: 33.33%;">Ground Truth</span>
<span style="text-align: center; width: 33.33%;">Noisy Input</span>
<span style="text-align: center; width: 33.33%;">Denoised Output</span>
</div>
</div>
<div style="border: 1px solid #d9d9d9; border-radius: 12px; padding: 1.5rem; background: #fff;">
<h3 class="title is-3">Human Mesh Recovery</h3>
<p style="font-size: 1.1rem;">HMR fitting results on some in-the-wild images from 3DPW.</p>
<div style="width: 100%; max-width: 960px; margin: 0.8rem auto; display: flex; justify-content: space-between; gap: 1.5rem;">
<div style="flex: 1; display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.0rem;">
<img src="./static/images/ours_00180.png" alt="From Scratch 1" style="width: 100%; height: 95%; display: block;">
<img src="./static/images/ours_00422_cropped.png" alt="From Scratch 2" style="width: 100%; height: 95%; display: block;">
<img src="./static/images/ours_00427.png" alt="From Scratch 3" style="width: 100%; height: 95%; display: block;">
</div>
<div style="flex: 1; display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.0rem;">
<img src="./static/images/ours_00682.png" alt="Init from CLIFF 1" style="width: 100%; height: 95%; display: block;">
<img src="./static/images/ours_00305_cropped.png" alt="Init from CLIFF 2" style="width: 100%; height: 95%; display: block;">
<img src="./static/images/ours_00724_cropped.png" alt="Init from CLIFF 3" style="width: 100%; height: 95%; display: block;">
</div>
</div>
<div style="width: 100%; max-width: 960px; margin: 0.8rem auto 0; display: flex; justify-content: space-between; align-items: center; font-size: 1.25rem; font-weight: 700; line-height: 1.2;">
<span style="text-align: center; width: 50%;">From Scratch</span>
<span style="text-align: center; width: 50%;">Init. from CLIFF</span>
</div>
</div>
</div>
</section>

<section class="section" id="BibTeX" style="padding-top: 0.5rem; padding-bottom: 1.75rem;">
<div class="container is-max-desktop content">
<h2 class="title">BibTeX</h2>
<div style="position: relative;">
<button id="copy-bibtex" class="button is-small is-light" style="position: absolute; top: 0.5rem; right: 0.5rem; z-index: 1;" aria-label="Copy BibTeX" title="Copy BibTeX">
<span class="icon is-small">
<i class="fas fa-copy"></i>
</span>
</button>
<span id="copy-bibtex-popup" style="display: none; position: absolute; top: 0.5rem; right: 3rem; background: rgba(54, 54, 54, 0.95); color: #fff; font-size: 0.75rem; padding: 0.2rem 0.45rem; border-radius: 4px; z-index: 2;">Copied</span>
<pre></pre>
</div>
</div>
</section>


<footer class="footer">
<div class="container">
<div class="columns is-centered">
<div class="column is-8">
<div class="content">
<p>
This website is licensed under a <a rel="license"
href="http://creativecommons.org/licenses/by-sa/4.0/">Creative
Commons Attribution-ShareAlike 4.0 International License</a>. The template is borrowed from <a href="https://github.com/nerfies/nerfies.github.io">Nerfies</a>.
</p>
</div>
</div>
</div>
</div>
</footer>

<script>
document.getElementById('copy-bibtex').addEventListener('click', async function () {
const bibtex = document.getElementById('bibtex-code').innerText;
await navigator.clipboard.writeText(bibtex);
const popup = document.getElementById('copy-bibtex-popup');
popup.style.display = 'inline-block';
setTimeout(function () {
popup.style.display = 'none';
}, 2000);
});
</script>

</body>
</html>
1 change: 1 addition & 0 deletions research/PoseD-Flow/static/css/bulma-carousel.min.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading