<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://psw1023.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://psw1023.github.io/" rel="alternate" type="text/html" /><updated>2026-06-10T13:18:42+00:00</updated><id>https://psw1023.github.io/feed.xml</id><title type="html">EHAK</title><subtitle>어서오세요. 이학의 블로그 입니다.</subtitle><author><name>EHAK</name></author><entry><title type="html">나가하마만게츠 광안리점 - 부산 라멘 맛집</title><link href="https://psw1023.github.io/blog/2026/06/09/nagahamamangetsu-restaurant-review/" rel="alternate" type="text/html" title="나가하마만게츠 광안리점 - 부산 라멘 맛집" /><published>2026-06-09T00:00:00+00:00</published><updated>2026-06-09T00:00:00+00:00</updated><id>https://psw1023.github.io/blog/2026/06/09/nagahamamangetsu-restaurant-review</id><content type="html" xml:base="https://psw1023.github.io/blog/2026/06/09/nagahamamangetsu-restaurant-review/"><![CDATA[<p>안녕하세요, 이학입니다. <br />
오늘은 지난 주말 다녀온 라멘 맛집! <strong>[ 나가하마만게츠 광안리점 ]</strong> 리뷰글이에요.</p>

<h2 id="정보">정보</h2>

<iframe src="https://map.naver.com/p/entry/place/2006033247?placePath=%2Fhome" width="100%" height="400" frameborder="0" style="border:2px solid var(--border); display:block;" title="나가하마만게츠 광안리점">
</iframe>

<p>자세한 위치 및 운영시간 등의 정보는 위의 네이버지도를 참고하시면 되겠습니다. :)</p>

<p>우선 나가하마만게츠는 미슐랭 빕구르망에 선정된 부산 라멘집으로 유명합니다! 아마 지금 후기나 리뷰글을 검색하고 계신 분들도 다 아는 사실일건데요.. ㅎㅎ <br />
원래 해운대점이 본점이고 해운대점만 있을때는 웨이팅도 어마어마하다고 들어서 언젠간 가봐야지.. 생각만 하던 곳이긴 합니다. <br />
근데 최근 광안리점이 2호점으로 생겼다고 하고 웨이팅도 본점에 비해서는 덜하다고도 해서, 저희 가족도 큰 맘 먹고! 가보기로 결정했습니다.</p>

<p><img src="https://i.imgur.com/ZRBZw4T.png" alt="1번" /></p>

<p><strong>웨이팅 및 예약</strong>은 캐치테이블로 할 수 있는데요. <br />
우선 가게 오픈은 오전 11시이지만, 오전 10시부터 미리 현장 캐치테이블 예약이 가능합니다. 그 후, 오픈 시간인 11시부터는 온라인으로도 가능하다고 해요. <br />
저희는 토요일에 갔는데 이왕 오픈런 뛸 거 현장예약 하자 결심해서, 9시 40분쯤 도착했는데 <strong>첫번째</strong>여서 완전 나이스 했습니다. 어차피 예약해두고 광안리 바닷가 구경 잠시하다가 오면 되니까요. ㅎㅎ <br />
그리고 11시 입장할때는 저희 뒤에 추가로 15팀정도 있었고, 회전율도 빠른 편이라 생각보다 광안점은 오픈런 하는 기준으로 웨이팅 할만한거 같더라구요!!</p>

<p><strong>주차장</strong>은 가게 앞에는 별도의 주차장은 없지만 주변에 여러 주차장이 있는 것으로 알아서 주차하구 조금 걸어오시면 될 것 같습니다. <br />
저희도 주변 주차장에 대고 왔습니다.</p>

<h2 id="테이블-및-서비스">테이블 및 서비스</h2>

<p><img src="https://i.imgur.com/C1OJDxn.png" alt="정보" /></p>

<p>테이블 앞에는 가게 역사와 먹는법 및 팁들이 적혀있습니다. <br />
아래에서도 추가로 말씀드리겠지만 면 삶기 단계에 대해서도 적혀있고, 다시마 식초나 특제매운소스, 마늘 토핑이나 교자 간장 만드는 법 등 여러가지 꿀팁들이 적혀있으니 라멘 기다리는 동안 읽어보시면 좋습니다.</p>

<p><img src="https://i.imgur.com/RfihzyT.png" alt="토핑" /></p>

<p>여러가지 라멘에 곁들여 먹을 소스류 및 토핑들이 잘 담겨있네요.</p>

<p>그리고 딱 자리에 앉으면 앞치마와 안경 쓴 사람들에게는 안경클리너도 사용하라고 주십니다. 꼭 사용하진 않더라도 먼저 챙겨주는 이런 사소한 부분이 기분 좋게 만들어주더라구요.</p>

<p>가게 내부도 모두 다찌석인데도 정말 널찍하고 확실히 엄청 깨끗합니다. 아마 비슷한 규모의 식당이면 여기가 훨씬 쾌적하다고 느낄만한 그런 느낌. 확실히 이런 부분들도 먹는 내내 편안하게 만들어 주는 것 같습니다.</p>

<h2 id="메뉴">메뉴</h2>

<p><img src="https://i.imgur.com/hgOvpyY.png" alt="라멘1" />
<img src="https://i.imgur.com/lUSGWU0.png" alt="라멘2" /></p>

<p>나가하마만게츠의 메인 메뉴인 돈코츠 “나가하마라멘” 입니다. <br />
단품은 11,000원, 라멘+교자세트는 18,000원, 차슈추가 +4,000원, 면추가 +3,000원 이었습니다. 특히, 단품기준으로도 웨이팅하는 맛집인데도 저렴한 것 같습니다. <br />
사진은 <strong>차슈 추가</strong>가 들어간 상태입니다. 특히, 두번째 사진을 보시면 차슈가 정말 큼직하고 맛있습니다. <br />
라멘이 올라가있는 나무 트레이에도 가게 이름이 새겨져 있네요. ㅎㅎ</p>

<p>라멘과 관련한 추가 정보들을 몇 가지 적어보자면,</p>
<ul>
  <li>처음 가게에 입장하면 우선 키오스크에서 주문을 하고 교환권 출력받습니다.</li>
  <li>그 후에, 안내받은 자리에 앉고 교환권을 제출하면 셰프님께서 면 삶기 단계를 먼저 여쭤봐주십니다. (면 삶기 단계를 바꿀 때 따로 말하는 것이 아니라 여쭤봐주는 점은 정말 좋은 것 같습니다.)</li>
  <li>그리고 <strong>면 추가</strong>가 정말 혁신(?)적이었는데요. 주문할 때 면 추가를 하면 처음부터 면을 더 넣어주거나 면만 따로 더 주는 방식이 아닌, 처음에 기본 라멘을 먹다가 면을 다 먹고 셰프님께 말씀드리면 아예 새 육수에 면을 추가로 넣어서 한 그릇을 추가로 줍니다! (아무래도 기본 라멘 육수 세팅에 면을 더 넣으면 맛이 달라질 수 밖에 없을텐데, 이렇게 하는 점이 정말 좋은 것 같습니다. 새 그릇을 받았다는 생각에 저희같은 손님 입장에서도 덩달아 기분 좋아지구요. ㅎㅎ)</li>
</ul>

<p>저는 기본(꼬들한 면) 단계 면으로 먹었는데 다른 단계는 안 먹어봤지만 일단 기본 단계가 확실히 무난하게 좋은 것 같아요. 면이 얇은데도 탄탄해서 든든한 돈코츠라멘에 잘 어울립니다. 그리고 저는 반쯤먹고 특제 매운소스를 살짝 넣어서 먹었는데 엄청 맵진 않으니 다들 드시다가 슬쩍 넣어서 드시면 좋을 것 같아요!</p>

<p>나가하마만게츠에는 위의 돈코츠라멘과 야끼라멘 두 종류가 있는데 돈코츠라멘이 메인이라고 보시면 될 것 같습니다.(야끼라멘에 대해서는 저도 자세힌 모르는데 다른 리뷰들도 보면 돈코츠가 메인인 것 같더라구요!)</p>

<p><img src="https://i.imgur.com/3zCkMus.png" alt="교자" /></p>

<p><strong>교자</strong>는 사진에는 두 점인데 원래는 당연히 더 길게 나옵니다. 가족끼리 나누고 사진을 찍어서..ㅎㅎ <br />
저희는 라멘+교자 세트 하나랑 라멘 단품 2개를 시켰는데, 교자를 드실 분들은 세트를 주문하면 1,000원 더 저렴합니다! 혹시 모르니 이건 현장 키오스크에 가시면 한번 더 확인하시면 좋을 것 같네요. <br />
저는 원래 교자류는 별로 안 좋아하는데(그래서 보통 교자랑 가라아게가 둘 다 사이드로 있는 라멘집에 가면 가라아게를 시킵니다.), 여기 교자 먹고 생각이 바꼈습니다. ㅋㅋㅋ 바삭부드러운 느낌이 정말 절묘해요. 분명 바삭한데 부드러운… 처음 방문하시면 사이드로 교자는 꼭 시켜드시는 걸 추천합니다.</p>

<p><img src="https://i.imgur.com/7tAP98w.png" alt="공기밥" /></p>

<p><strong>공깃밥</strong>은 밥만 나오는 게 아니라 사진처럼 고기가 위에 올려 나옵니다. 보통 라멘집 가면 있는 미니차슈덮밥 느낌이죠. <br />
가격은 1,500원으로 굉장히 저렴합니다. <br />
밥에는 따로 간이 없어서 돈코츠 국물에 말아먹기 딱 좋은 상태구요! 개인적으로 ‘라멘 면추가만’ or ‘라멘 기본 + 공깃밥’ 조합중에 고민이라면 ‘라멘 기본 + 공깃밥’이 베스트인 것 같습니다! 면추가도 좋지만 공깃밥은 무조건 라멘먹고 추가로 먹어야 한다고 생각해요.ㅎㅎ</p>

<p><img src="https://i.imgur.com/0SYiirX.png" alt="디저트치즈" /></p>

<p>라멘을 맛있게 먹다보면 디저트로 먹을 <strong>크림치즈</strong>를 서비스로 주십니다. 마지막에 입가심으로 좋았고, 치즈인데 제 기준으로 우유푸딩 맛이 나서 맛있게 먹었습니다. <br />
포장용으로도 팔던데 개인적으로는 따로 구매할 정도는 아니어서 후식으로 맛나게 먹었습니다.ㅎㅎ</p>

<p>이상, 웨이팅해서라도 최소 한번은 먹어볼만한 <strong>나가하마만게츠 광안리점</strong> 후기였습니다.</p>]]></content><author><name>EHAK</name></author><category term="맛집" /><summary type="html"><![CDATA[부산 광안리에 위치한 라멘 맛집. 특히, 미슐랭 빕구르망에 계속해서 선정되는 곳으로 유명한 '나가하마만게츠' 리뷰입니다.]]></summary></entry><entry xml:lang="en"><title type="html">[Paper Review] Depth Any Panoramas: A Foundation Model for Panoramic Depth Estimation (CVPR 2026)</title><link href="https://psw1023.github.io/blog/2026/06/03/depth-any-panoramas-paper-review-en/" rel="alternate" type="text/html" title="[Paper Review] Depth Any Panoramas: A Foundation Model for Panoramic Depth Estimation (CVPR 2026)" /><published>2026-06-03T00:00:00+00:00</published><updated>2026-06-03T00:00:00+00:00</updated><id>https://psw1023.github.io/blog/2026/06/03/depth-any-panoramas-paper-review-en</id><content type="html" xml:base="https://psw1023.github.io/blog/2026/06/03/depth-any-panoramas-paper-review-en/"><![CDATA[<blockquote>
  <p><strong>Paper:</strong> Depth Any Panoramas: A Foundation Model for Panoramic Depth Estimation<br />
<strong>Venue:</strong> CVPR 2026<br />
<strong>Authors:</strong> Xin Lin, Meixi Song, Dizhe Zhang, Wenxuan Lu, Haodong Li, Bo Du, Ming-Hsuan Yang, Truong Nguyen, Lu Qi<br />
<strong>Affiliations:</strong> Insta360 Research Team, Wuhan University, UC Merced, UC San Diego<br />
<strong>arXiv:</strong> <a href="https://arxiv.org/abs/2512.16913">2512.16913</a><br />
<strong>GitHub:</strong> <a href="https://github.com/Insta360-Research-Team/DAP">Insta360-Research-Team/DAP</a></p>
</blockquote>

<hr />

<h2 id="one-line-summary">One-Line Summary</h2>

<p>The first foundation model for panoramic depth estimation. Combines a <strong>2M+ panoramic dataset</strong>, a <strong>three-stage pseudo-label pipeline</strong>, and a <strong>plug-and-play range mask head</strong> to achieve metric consistency across diverse indoor and outdoor scenes.</p>

<hr />

<p><img src="https://i.imgur.com/CWQ1pfT.png" alt="dap-fig1" /></p>
<figcaption align="center">Figure 1: DAP overview. Precise metric depth is predicted from diverse indoor and outdoor panoramas regardless of scene distance. Consistent depth estimation is demonstrated from close-range indoor spaces to outdoor scenes spanning hundreds of meters.</figcaption>

<hr />

<h2 id="1-background-and-problem-statement">1. Background and Problem Statement</h2>

<h3 id="what-is-panoramic-depth-estimation">What is Panoramic Depth Estimation?</h3>

<p>Panoramic depth estimation is the task of predicting per-pixel depth values from 360-degree (omnidirectional) images. Unlike standard pinhole cameras, these images are represented in <strong>Equirectangular Projection (ERP)</strong> format, which introduces severe distortion near the poles and discontinuities at the image boundaries.</p>

<p>Panoramic depth estimation is a key building block for VR/AR, indoor navigation, spatial understanding, and 360-degree 3D reconstruction.</p>

<h3 id="limitations-of-existing-methods">Limitations of Existing Methods</h3>

<p>Applying general-purpose monocular depth models (DepthAnything V2, UniDepth, etc.) to panoramic images leads to a significant performance drop. Three fundamental reasons:</p>

<p><strong>① Poor handling of geometric distortion</strong>: ERP’s nonlinear distortion — especially near the poles — is incompatible with pinhole camera assumptions, causing accumulated depth prediction errors.</p>

<p><strong>② Distance range mismatch</strong>: No existing metric depth model handles both indoor (a few meters) and outdoor (hundreds of meters) ranges simultaneously. Existing panorama-specific models overfit to a particular range.</p>

<p><strong>③ Data scarcity</strong>: Ground-truth per-pixel depth for panoramic images is extremely expensive to collect. No large-scale training dataset existed, so no prior work had achieved foundation-model-level generalization.</p>

<hr />

<h2 id="2-core-ideas">2. Core Ideas</h2>

<p>Three contributions working in concert.</p>

<h3 id="-large-scale-panoramic-dataset-dap-2m">① Large-Scale Panoramic Dataset (DAP-2M)</h3>

<p>A 2M+ sample panoramic dataset is constructed. Rather than collecting labeled data alone, a <strong>pseudo-label pipeline</strong> converts large volumes of unlabeled web images and generated images into training data, enabling scale.</p>

<h3 id="-three-stage-pseudo-label-pipeline">② Three-Stage Pseudo-Label Pipeline</h3>

<p>A training pipeline that progressively bridges the synthetic-to-real domain gap and the indoor-to-outdoor distance range gap. A <strong>PatchGAN-based discriminator</strong> filters out low-confidence pseudo-labels, ensuring only high-quality samples enter training.</p>

<h3 id="-plug-and-play-range-mask-head">③ Plug-and-Play Range Mask Head</h3>

<p>To handle the large difference in depth range between indoor and outdoor scenes, an auxiliary head <strong>predicts a binary range mask</strong> that classifies each pixel by a distance threshold. This classification informs the metric depth prediction. The head is independently attachable to existing architectures — hence plug-and-play.</p>

<hr />

<h2 id="3-dataset-construction-dap-2m">3. Dataset Construction: DAP-2M</h2>

<h3 id="data-composition">Data Composition</h3>

<p><img src="https://i.imgur.com/AydPPEB.png" alt="dap-tab2" /></p>
<figcaption align="center">Table 2: DAP-2M dataset composition. 18,298 labeled samples from Structured3D, 90K labeled synthetic outdoor samples from UE5, and 1.9M unlabeled web-collected/DiT360-generated panoramas. Total: ~2.1M panoramic samples.</figcaption>

<table>
  <thead>
    <tr>
      <th>Source</th>
      <th>Domain</th>
      <th>GT Label</th>
      <th>Samples</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Structured3D</td>
      <td>Indoor (synthetic)</td>
      <td>✓</td>
      <td>18,298</td>
    </tr>
    <tr>
      <td>UE5 Synthetic (DAP-2M-Labeled)</td>
      <td>Outdoor (synthetic)</td>
      <td>✓</td>
      <td>~90,000</td>
    </tr>
    <tr>
      <td>Web / DiT360 (DAP-2M-Unlabeled)</td>
      <td>Indoor + Outdoor</td>
      <td>✗</td>
      <td>~1.9M</td>
    </tr>
    <tr>
      <td><strong>Total</strong></td>
      <td> </td>
      <td> </td>
      <td><strong>~2.1M</strong></td>
    </tr>
  </tbody>
</table>

<p><strong>Labeled data (108K):</strong></p>
<ul>
  <li><strong>Structured3D</strong>: Indoor synthetic panoramas with pixel-level depth GT.</li>
  <li><strong>UE5 Synthetic Outdoor</strong>: Panoramas rendered in Unreal Engine 5, filling the outdoor gap left by Structured3D.</li>
</ul>

<p><strong>Unlabeled data (1.9M):</strong></p>
<ul>
  <li><strong>Web-collected real panoramas</strong>: Real 360-degree images scraped from the internet.</li>
  <li><strong>DiT360-generated panoramas</strong>: Diverse synthetic scenes generated by a text-to-image diffusion model.</li>
</ul>

<h3 id="three-stage-pseudo-label-pipeline">Three-Stage Pseudo-Label Pipeline</h3>

<p><img src="https://i.imgur.com/0iZCwVT.png" alt="dap-fig3" /></p>
<figcaption align="center">Figure 3: Three-stage pseudo-label pipeline. Stage 1: Scene-Invariant Labeler initialized on synthetic data. Stage 2: Realism-Invariant Labeler selects 600K high-confidence pseudo-labels using a PatchGAN discriminator. Stage 3: Full DAP trained on all 2.1M samples.</figcaption>

<p><strong>Stage 1 — Scene-Invariant Labeler</strong></p>

<ul>
  <li>Training data: 20K synthetic indoor + 90K synthetic outdoor UE5 (110K total, all with GT)</li>
  <li>Goal: Build a base model that generalizes across indoor and outdoor scene types</li>
  <li>Result: Strong scene-type generalization, but a synthetic-to-real domain gap remains</li>
</ul>

<p><strong>Stage 2 — Realism-Invariant Labeler</strong></p>

<ul>
  <li>Apply Stage 1 model to generate pseudo-labels for 1.9M unlabeled images</li>
  <li><strong>PatchGAN discriminator</strong>: Trained to distinguish synthetic vs. real domain predictions</li>
  <li>Top-scoring samples selected: <strong>300K indoor + 300K outdoor = 600K high-confidence pseudo-labels</strong></li>
  <li>Low-quality pseudo-labels are filtered out before they can corrupt training</li>
</ul>

<p><strong>Stage 3 — Full DAP Training</strong></p>

<ul>
  <li>Training data: 108K labeled + 600K pseudo-labeled + additional semi-supervised = <strong>full 2.1M</strong></li>
  <li>Initialized from Stage 2 model, trained with large-scale semi-supervised learning</li>
  <li>Final DAP foundation model</li>
</ul>

<hr />

<h2 id="4-architecture">4. Architecture</h2>

<p><img src="https://i.imgur.com/NcNpuu1.png" alt="dap-fig2" /></p>
<figcaption align="center">Figure 2: DAP architecture. Three modules: DINOv3-Large backbone encoder, distortion-aware depth decoder, and plug-and-play range mask head. The range mask classifies each scene's depth range, guiding the metric depth prediction.</figcaption>

<h3 id="backbone-dinov3-large">Backbone: DINOv3-Large</h3>

<p>DINOv3-Large is used as the encoder, providing powerful pre-trained visual representations. Its global and local feature capture capabilities are well-suited for panoramic imagery’s diverse spatial scales.</p>

<h3 id="distortion-aware-depth-decoder">Distortion-Aware Depth Decoder</h3>

<p>A decoder that explicitly accounts for ERP geometric distortion. Pixels near the poles subtend a small solid angle in 3D space despite appearing stretched in the image; the decoder corrects for this discrepancy.</p>

<h3 id="plug-and-play-range-mask-head">Plug-and-Play Range Mask Head</h3>

<p>One of the key contributions. It first answers: <strong>“What is the depth range of this scene?”</strong> — then feeds that classification back into the depth prediction.</p>

<ul>
  <li><strong>Range mask M</strong>: Binary classification of pixels as near/far relative to threshold τ</li>
  <li><strong>Threshold τ selection</strong>: Experiments with 10m / 20m / 50m / 100m — <strong>100m is optimal</strong></li>
  <li><strong>Mask loss</strong>: <code class="language-plaintext highlighter-rouge">ℒ_mask = ||M - M_gt||² + 0.5·ℒ_Dice(M, M_gt)</code></li>
  <li>Attachable to existing architectures without modification</li>
</ul>

<hr />

<h2 id="5-loss-functions">5. Loss Functions</h2>

<p>Five loss terms designed for panoramic imagery’s unique properties:</p>

\[\mathcal{L}_{total} = M_{distort} \odot (\lambda_1 \mathcal{L}_{SILog} + \lambda_2 \mathcal{L}_{DF} + \lambda_3 \mathcal{L}_{grad} + \lambda_4 \mathcal{L}_{normal} + \lambda_5 \mathcal{L}_{pts} + \lambda_6 \mathcal{L}_{mask})\]

<p><strong>M_distort</strong>: ERP distortion weight map. Downweights pixels near the poles where distortion is severe, preventing high-distortion regions from dominating the loss.</p>

<table>
  <thead>
    <tr>
      <th>Loss</th>
      <th>Weight</th>
      <th>Purpose</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>ℒ_SILog</td>
      <td>λ₁=1.0</td>
      <td>Scale-Invariant Log loss. Overall depth scale alignment</td>
    </tr>
    <tr>
      <td>ℒ_DF</td>
      <td>λ₂=0.4</td>
      <td>DF-Gram loss. Matches depth distribution statistics across 12 icosahedron patches (global geometric consistency)</td>
    </tr>
    <tr>
      <td>ℒ_grad</td>
      <td>λ₃=5.0</td>
      <td>Gradient loss. Preserves sharpness at boundaries and surface transitions</td>
    </tr>
    <tr>
      <td>ℒ_normal</td>
      <td>λ₄=2.0</td>
      <td>Normal loss. Matches surface normals derived from predicted depth to GT normals</td>
    </tr>
    <tr>
      <td>ℒ_pts</td>
      <td>λ₅=2.0</td>
      <td>Point-Cloud loss. Minimizes Euclidean distance between predicted and GT 3D point clouds</td>
    </tr>
    <tr>
      <td>ℒ_mask</td>
      <td>λ₆=2.0</td>
      <td>Supervised loss for the range mask head</td>
    </tr>
  </tbody>
</table>

<p><strong>ℒ_DF (DF-Gram) detail</strong>: The sphere is partitioned into 12 icosahedron patches. For each patch k, the Gram matrix of depth values is computed and compared with the GT Gram matrix. This enforces global geometric consistency while being relatively robust to ERP distortion.</p>

\[\mathcal{L}_{DF} = \frac{1}{N}\sum_{k}\|D_{pred}^{(k)}\odot D_{pred}^{(k)T} - D_{gt}^{(k)}\odot D_{gt}^{(k)T}\|_F^2\]

<hr />

<h2 id="6-training-configuration">6. Training Configuration</h2>

<table>
  <thead>
    <tr>
      <th>Setting</th>
      <th>Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Input resolution</td>
      <td>512×1024 (ERP)</td>
    </tr>
    <tr>
      <td>Optimizer</td>
      <td>Adam</td>
    </tr>
    <tr>
      <td>Backbone learning rate</td>
      <td>5e-6</td>
    </tr>
    <tr>
      <td>Decoder learning rate</td>
      <td>5e-5</td>
    </tr>
    <tr>
      <td>Hardware</td>
      <td>NVIDIA H20 GPUs</td>
    </tr>
    <tr>
      <td>Data augmentation</td>
      <td>Color jittering, horizontal translation, horizontal flipping</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="7-experimental-results">7. Experimental Results</h2>

<h3 id="zero-shot-benchmarks-table-3">Zero-Shot Benchmarks (Table 3)</h3>

<p><img src="https://i.imgur.com/6wLKxp4.png" alt="dap-tab3" /></p>
<figcaption align="center">Table 3: Zero-shot benchmark results. DAP outperforms all prior methods on Stanford2D3D (indoor), Matterport3D (indoor), and Deep360 (outdoor). Both adapted pinhole models (DepthAnything V2, UniDepth) and panorama-specific methods fall well short of DAP.</figcaption>

<p><strong>Stanford2D3D (indoor, not seen during training):</strong></p>

<table>
  <thead>
    <tr>
      <th>Method</th>
      <th>AbsRel ↓</th>
      <th>RMSE ↓</th>
      <th>δ₁ ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>DepthAnything V2</td>
      <td>0.1822</td>
      <td>0.7340</td>
      <td>0.7691</td>
    </tr>
    <tr>
      <td>UniDepth</td>
      <td>0.1654</td>
      <td>0.6893</td>
      <td>0.8012</td>
    </tr>
    <tr>
      <td>PanDA</td>
      <td>0.1135</td>
      <td>0.4210</td>
      <td>0.8901</td>
    </tr>
    <tr>
      <td><strong>DAP</strong></td>
      <td><strong>0.0921</strong></td>
      <td><strong>0.3820</strong></td>
      <td><strong>0.9135</strong></td>
    </tr>
  </tbody>
</table>

<p><strong>Matterport3D (indoor):</strong></p>

<table>
  <thead>
    <tr>
      <th>Method</th>
      <th>AbsRel ↓</th>
      <th>RMSE ↓</th>
      <th>δ₁ ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>DAP</strong></td>
      <td><strong>0.1186</strong></td>
      <td><strong>0.7510</strong></td>
      <td><strong>0.8518</strong></td>
    </tr>
  </tbody>
</table>

<p><strong>Deep360 (outdoor):</strong></p>

<table>
  <thead>
    <tr>
      <th>Method</th>
      <th>AbsRel ↓</th>
      <th>RMSE ↓</th>
      <th>δ₁ ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>DAP</strong></td>
      <td><strong>0.0659</strong></td>
      <td><strong>5.224</strong></td>
      <td><strong>0.9525</strong></td>
    </tr>
  </tbody>
</table>

<h3 id="dap-test-benchmark-table-4">DAP-Test Benchmark (Table 4)</h3>

<p><img src="https://i.imgur.com/hsJk14x.png" alt="dap-tab4" /></p>
<figcaption align="center">Table 4: DAP-Test benchmark results. On the DAP-curated test set covering both indoor and outdoor scenes, DAP achieves 69% AbsRel reduction, 35.7% RMSE reduction, and 53.8% δ₁ increase over the previous best (Unik3D).</figcaption>

<table>
  <thead>
    <tr>
      <th>Method</th>
      <th>AbsRel ↓</th>
      <th>RMSE ↓</th>
      <th>δ₁ ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>DAC</td>
      <td>0.3197</td>
      <td>8.799</td>
      <td>0.5193</td>
    </tr>
    <tr>
      <td>Unik3D</td>
      <td>0.2517</td>
      <td>10.56</td>
      <td>0.6086</td>
    </tr>
    <tr>
      <td><strong>DAP</strong></td>
      <td><strong>0.0781</strong></td>
      <td><strong>6.804</strong></td>
      <td><strong>0.9370</strong></td>
    </tr>
  </tbody>
</table>

<p>DAP vs. Unik3D:</p>
<ul>
  <li>AbsRel: 0.2517 → 0.0781 (<strong>69% reduction</strong>)</li>
  <li>RMSE: 10.56 → 6.804 (<strong>35.7% reduction</strong>)</li>
  <li>δ₁: 0.6086 → 0.9370 (<strong>53.8% improvement</strong>)</li>
</ul>

<h3 id="qualitative-results">Qualitative Results</h3>

<p><img src="https://i.imgur.com/D0KvM1X.png" alt="dap-fig4" /></p>
<figcaption align="center">Figure 4: Qualitative comparison. DAP (rightmost) significantly outperforms DAC and Unik3D in boundary sharpness, distant region accuracy, and global geometric consistency. Even at panorama edges and near the poles, DAP maintains stable depth predictions.</figcaption>

<p><img src="https://i.imgur.com/ibo2Sgo.png" alt="dap-fig5" /></p>
<figcaption align="center">Figure 5: DAP depth estimates on diverse real-world panoramas. Consistent metric depth across urban streets, indoor spaces, natural environments, and complex structures. The range mask head automatically adapts to each scene's depth range.</figcaption>

<hr />

<h2 id="8-ablation-studies">8. Ablation Studies</h2>

<h3 id="component-analysis-table-5">Component Analysis (Table 5)</h3>

<p><img src="https://i.imgur.com/2Ls8rMR.png" alt="dap-tab5" /></p>
<figcaption align="center">Table 5: Component ablation. Distortion-awareness, geometric consistency, and sharpness are added incrementally. All three components contribute meaningfully on both Stanford2D3D and Deep360.</figcaption>

<table>
  <thead>
    <tr>
      <th>Distortion</th>
      <th>Geometry</th>
      <th>Sharpness</th>
      <th>Stanford AbsRel ↓</th>
      <th>Stanford δ₁ ↑</th>
      <th>Deep360 AbsRel ↓</th>
      <th>Deep360 δ₁ ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>✗</td>
      <td>✗</td>
      <td>✗</td>
      <td>0.1166</td>
      <td>0.8409</td>
      <td>0.0942</td>
      <td>0.8396</td>
    </tr>
    <tr>
      <td>✓</td>
      <td>✗</td>
      <td>✗</td>
      <td>0.1149</td>
      <td>0.8440</td>
      <td>0.0926</td>
      <td>0.8423</td>
    </tr>
    <tr>
      <td>✓</td>
      <td>✓</td>
      <td>✗</td>
      <td>0.1112</td>
      <td>0.8509</td>
      <td>0.0880</td>
      <td>0.8592</td>
    </tr>
    <tr>
      <td>✓</td>
      <td>✓</td>
      <td>✓</td>
      <td><strong>0.1084</strong></td>
      <td><strong>0.8576</strong></td>
      <td><strong>0.0862</strong></td>
      <td><strong>0.8719</strong></td>
    </tr>
  </tbody>
</table>

<p>Each component’s role:</p>
<ul>
  <li><strong>Distortion-awareness</strong>: M_distort weight map reduces loss contribution of high-distortion pole pixels</li>
  <li><strong>Geometric consistency</strong>: ℒ_DF, ℒ_normal, ℒ_pts losses improve 3D structural accuracy</li>
  <li><strong>Sharpness</strong>: ℒ_grad loss enforces sharp object boundaries and surface transitions</li>
</ul>

<h3 id="range-mask-threshold-analysis-table-6">Range Mask Threshold Analysis (Table 6)</h3>

<p><img src="https://i.imgur.com/X5Vltdb.png" alt="dap-tab6" /></p>
<figcaption align="center">Table 6: Range mask threshold ablation. Among thresholds of 10m, 20m, 50m, 100m, and no mask, 100m achieves the best performance on both DAP-2M and Deep360. The mask itself is essential — removing it (None) consistently hurts performance.</figcaption>

<table>
  <thead>
    <tr>
      <th>Threshold τ</th>
      <th>DAP-2M AbsRel ↓</th>
      <th>DAP-2M δ₁ ↑</th>
      <th>Deep360 AbsRel ↓</th>
      <th>Deep360 δ₁ ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>10m</td>
      <td>0.0801</td>
      <td>0.9315</td>
      <td>0.0934</td>
      <td>0.8493</td>
    </tr>
    <tr>
      <td>20m</td>
      <td>0.0823</td>
      <td>0.9164</td>
      <td>0.0873</td>
      <td>0.8668</td>
    </tr>
    <tr>
      <td>50m</td>
      <td>0.0864</td>
      <td>0.9104</td>
      <td>0.0843</td>
      <td>0.8594</td>
    </tr>
    <tr>
      <td><strong>100m</strong></td>
      <td><strong>0.0793</strong></td>
      <td><strong>0.9353</strong></td>
      <td><strong>0.0862</strong></td>
      <td><strong>0.8719</strong></td>
    </tr>
    <tr>
      <td>None</td>
      <td>0.0832</td>
      <td>0.9042</td>
      <td>0.0938</td>
      <td>0.8411</td>
    </tr>
  </tbody>
</table>

<p><strong>Why 100m?</strong> Experiments reveal that 100m is the practical boundary that separates indoor/near-urban scenes from large-scale outdoor environments. Lower thresholds (10m, 20m) misclassify mid-range outdoor scenes; no mask consistently underperforms 100m, confirming that range classification is a necessary component.</p>

<hr />

<h2 id="9-comparison-with-prior-work">9. Comparison with Prior Work</h2>

<table>
  <thead>
    <tr>
      <th>Aspect</th>
      <th>Pinhole Depth Models (DAV2, etc.)</th>
      <th>Panorama-Specific (PanDA, etc.)</th>
      <th><strong>DAP</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Geometric distortion handling</td>
      <td>✗ (pinhole assumption)</td>
      <td>✓</td>
      <td>✓ (distortion-aware)</td>
    </tr>
    <tr>
      <td>Metric depth</td>
      <td>△ (relative)</td>
      <td>△</td>
      <td>✓ (absolute metric)</td>
    </tr>
    <tr>
      <td>Indoor + outdoor</td>
      <td>△</td>
      <td>✗ (mostly indoor)</td>
      <td>✓</td>
    </tr>
    <tr>
      <td>Training data scale</td>
      <td>Large (pinhole)</td>
      <td>Small</td>
      <td>2M+ panoramas</td>
    </tr>
    <tr>
      <td>Zero-shot generalization</td>
      <td>Low</td>
      <td>Medium</td>
      <td>High</td>
    </tr>
    <tr>
      <td>Range adaptation</td>
      <td>✗</td>
      <td>✗</td>
      <td>✓ (mask head)</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="10-limitations">10. Limitations</h2>

<ul>
  <li><strong>Pseudo-label error propagation</strong>: The three-stage pipeline depends on Stage 1 quality. Errors in the initial labeler can accumulate into later stages.</li>
  <li><strong>Extreme pole distortion</strong>: M_distort mitigates but does not fully resolve severe distortion at the poles of ERP images.</li>
  <li><strong>High-resolution cost</strong>: Designed for 512×1024 input. Processing higher-resolution panoramas increases memory and latency substantially.</li>
  <li><strong>Outdoor GT scarcity</strong>: All outdoor labeled training data comes from UE5 synthetic rendering. Validation against real LiDAR GT for outdoor scenes is limited.</li>
</ul>

<hr />

<h2 id="11-summary">11. Summary</h2>

<p>DAP is the first work to successfully apply the foundation model paradigm to panoramic depth estimation. The core message:</p>

<blockquote>
  <p><strong>“Data scale + domain-bridging pipeline + panorama-aware design = metric depth for any panorama”</strong></p>
</blockquote>

<p>Where pinhole depth models fail on panoramas due to geometric incompatibility, and where prior panorama-specific models overfit to indoor ranges, DAP overcomes both with a 2M+ diverse dataset, a staged pseudo-label pipeline, and a range mask head that elegantly handles the indoor-outdoor depth range discrepancy.</p>

<p>It is also noteworthy that this work comes from Insta360 — a 360-degree camera hardware company — signaling a clear path from research to real-world product deployment.</p>]]></content><author><name>EHAK</name></author><category term="논문리뷰" /><summary type="html"><![CDATA[Paper review of Depth Any Panoramas (CVPR 2026). A foundation model for panoramic depth estimation from Insta360 Research Team, Wuhan University, UC Merced, and UC San Diego.]]></summary></entry><entry xml:lang="ko"><title type="html">[논문리뷰] Depth Any Panoramas: A Foundation Model for Panoramic Depth Estimation (CVPR 2026)</title><link href="https://psw1023.github.io/blog/2026/06/03/depth-any-panoramas-paper-review/" rel="alternate" type="text/html" title="[논문리뷰] Depth Any Panoramas: A Foundation Model for Panoramic Depth Estimation (CVPR 2026)" /><published>2026-06-03T00:00:00+00:00</published><updated>2026-06-03T00:00:00+00:00</updated><id>https://psw1023.github.io/blog/2026/06/03/depth-any-panoramas-paper-review</id><content type="html" xml:base="https://psw1023.github.io/blog/2026/06/03/depth-any-panoramas-paper-review/"><![CDATA[<blockquote>
  <p><strong>논문:</strong> Depth Any Panoramas: A Foundation Model for Panoramic Depth Estimation<br />
<strong>학회:</strong> CVPR 2026<br />
<strong>저자:</strong> Xin Lin, Meixi Song, Dizhe Zhang, Wenxuan Lu, Haodong Li, Bo Du, Ming-Hsuan Yang, Truong Nguyen, Lu Qi<br />
<strong>소속:</strong> Insta360 Research Team, Wuhan University, UC Merced, UC San Diego<br />
<strong>arXiv:</strong> <a href="https://arxiv.org/abs/2512.16913">2512.16913</a><br />
<strong>GitHub:</strong> <a href="https://github.com/Insta360-Research-Team/DAP">Insta360-Research-Team/DAP</a></p>
</blockquote>

<hr />

<h2 id="한-줄-요약">한 줄 요약</h2>

<p>파노라마 깊이 추정의 첫 파운데이션 모델. <strong>2M+ 규모의 파노라마 데이터셋</strong>과 <strong>3단계 수도 레이블 파이프라인</strong>, <strong>플러그앤플레이 레인지 마스크 헤드</strong>를 결합해 실내외 다양한 거리 범위에서 metric 일관성을 달성했다.</p>

<hr />

<p><img src="https://i.imgur.com/CWQ1pfT.png" alt="dap-fig1" /></p>
<figcaption align="center">Figure 1: DAP 개요. 다양한 실내외 파노라마 이미지에 대해 거리 범위에 무관하게 정밀한 metric 깊이를 예측한다. 가까운 실내 공간부터 수백 미터 이상의 야외 장면까지 일관된 깊이 추정을 보여준다.</figcaption>

<hr />

<h2 id="1-배경과-문제-정의">1. 배경과 문제 정의</h2>

<h3 id="파노라마-깊이-추정이란">파노라마 깊이 추정이란?</h3>

<p>360도 카메라로 촬영된 전방위(omnidirectional) 이미지에서 픽셀 단위의 깊이값을 예측하는 태스크다. 일반 핀홀 카메라와 달리 <strong>등장방형(Equirectangular Projection, ERP)</strong> 포맷으로 표현되며, 이 과정에서 극점 근처의 왜곡이 심하고 이미지 경계에서 불연속이 발생한다.</p>

<p>파노라마 깊이 추정은 VR/AR, 실내 네비게이션, 공간 이해, 360도 3D 재건 등 다양한 분야에서 핵심 역할을 한다.</p>

<h3 id="기존-방법의-한계">기존 방법의 한계</h3>

<p>일반 핀홀 카메라 기반 깊이 추정 모델(DepthAnything V2, UniDepth 등)은 파노라마 이미지에 그대로 적용하면 성능이 크게 떨어진다. 세 가지 근본적인 이유가 있다.</p>

<p><strong>① 기하 왜곡 처리 미흡</strong>: ERP 특유의 비선형 왜곡(특히 극점 근처)을 핀홀 카메라 가정으로 처리하면 깊이 예측 오류가 누적된다.</p>

<p><strong>② 거리 범위 불일치</strong>: 실내(수 미터)와 실외(수백 미터)를 동시에 처리하는 metric 깊이 모델이 없다. 기존 파노라마 전용 모델은 특정 범위에 과적합된다.</p>

<p><strong>③ 데이터 부재</strong>: 파노라마 이미지에 pixel-level depth GT를 취득하는 비용이 매우 높다. 대규모 학습 데이터가 존재하지 않아 파운데이션 모델 수준의 일반화를 달성한 연구가 없었다.</p>

<hr />

<h2 id="2-핵심-아이디어">2. 핵심 아이디어</h2>

<p>세 가지 기여가 맞물린다.</p>

<h3 id="-대규모-파노라마-데이터셋-dap-2m">① 대규모 파노라마 데이터셋 (DAP-2M)</h3>

<p>2M+ 샘플로 구성된 파노라마 데이터셋을 구축한다. 단순히 데이터를 모으는 것이 아니라, 레이블이 없는 대량의 웹 이미지와 생성 이미지를 <strong>수도 레이블로 변환</strong>하는 파이프라인을 설계해 규모를 확장했다.</p>

<h3 id="-3단계-수도-레이블-파이프라인">② 3단계 수도 레이블 파이프라인</h3>

<p>합성-실제 간 도메인 갭, 실내-실외 간 거리 범위 차이를 단계적으로 브리징하는 학습 파이프라인. 품질 낮은 수도 레이블이 학습에 악영향을 주는 것을 막기 위해 <strong>PatchGAN 기반 판별기</strong>로 고신뢰도 샘플만 선별한다.</p>

<h3 id="-플러그앤플레이-레인지-마스크-헤드">③ 플러그앤플레이 레인지 마스크 헤드</h3>

<p>실내/실외의 깊이 범위가 크게 다른 문제를 해결하기 위해, <strong>거리 임계값(range threshold)을 예측하는 보조 헤드</strong>를 추가한다. 이 헤드는 scene의 깊이 범위를 먼저 분류한 뒤, 해당 정보를 metric 깊이 예측에 반영한다. 기존 아키텍처에 독립적으로 추가 가능한 플러그앤플레이 방식이다.</p>

<hr />

<h2 id="3-데이터셋-구축-dap-2m">3. 데이터셋 구축: DAP-2M</h2>

<h3 id="데이터-구성">데이터 구성</h3>

<p><img src="https://i.imgur.com/AydPPEB.png" alt="dap-tab2" /></p>
<figcaption align="center">Table 2: DAP-2M 데이터셋 구성. Structured3D 레이블 데이터 18,298개, UE5 합성 야외 데이터 90K, 웹 수집 및 DiT360 생성 비레이블 데이터 1.9M으로 구성된다. 총 2.1M개 이상의 파노라마 샘플이다.</figcaption>

<table>
  <thead>
    <tr>
      <th>소스</th>
      <th>실내/실외</th>
      <th>GT 레이블</th>
      <th>샘플 수</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Structured3D</td>
      <td>실내</td>
      <td>✓</td>
      <td>18,298</td>
    </tr>
    <tr>
      <td>UE5 합성 (DAP-2M-Labeled)</td>
      <td>실외</td>
      <td>✓</td>
      <td>~90,000</td>
    </tr>
    <tr>
      <td>웹/DiT360 생성 (DAP-2M-Unlabeled)</td>
      <td>실내+실외</td>
      <td>✗</td>
      <td>~1.9M</td>
    </tr>
    <tr>
      <td><strong>합계</strong></td>
      <td> </td>
      <td> </td>
      <td><strong>~2.1M</strong></td>
    </tr>
  </tbody>
</table>

<p><strong>레이블 데이터 (108K)</strong>:</p>
<ul>
  <li><strong>Structured3D</strong>: 실내 합성 데이터. pixel-level 깊이 GT 제공.</li>
  <li><strong>UE5 합성 야외</strong>: Unreal Engine 5 시뮬레이터로 렌더링한 야외 파노라마. 실내 GT만 있던 Structured3D의 야외 부재를 보완.</li>
</ul>

<p><strong>비레이블 데이터 (1.9M)</strong>:</p>
<ul>
  <li><strong>웹 수집 실제 파노라마</strong>: 인터넷에서 수집한 실제 360도 이미지</li>
  <li><strong>DiT360 생성 파노라마</strong>: 텍스트-이미지 생성 모델로 생성한 다양한 장면의 파노라마</li>
</ul>

<h3 id="3단계-수도-레이블-파이프라인">3단계 수도 레이블 파이프라인</h3>

<p><img src="https://i.imgur.com/0iZCwVT.png" alt="dap-fig3" /></p>
<figcaption align="center">Figure 3: 3단계 수도 레이블 파이프라인. Stage 1: Scene-Invariant Labeler가 합성 데이터로 초기화. Stage 2: Realism-Invariant Labeler가 PatchGAN 판별기로 고신뢰도 수도 레이블 600K 선별. Stage 3: 전체 2.1M 데이터로 DAP 최종 학습.</figcaption>

<p><strong>Stage 1 — Scene-Invariant Labeler (장면 불변 레이블러)</strong></p>

<ul>
  <li>학습 데이터: UE5 합성 실내 20K + 합성 야외 90K (총 110K, 모두 GT 레이블)</li>
  <li>목적: 실내/실외 장면에 무관하게 안정적인 깊이를 예측할 수 있는 기초 모델 학습</li>
  <li>결과: 합성 데이터 기반으로 강한 장면 일반화, 하지만 실제 이미지와 도메인 갭 존재</li>
</ul>

<p><strong>Stage 2 — Realism-Invariant Labeler (현실성 불변 레이블러)</strong></p>

<ul>
  <li>Stage 1 모델로 1.9M 비레이블 이미지에 수도 레이블 생성</li>
  <li><strong>PatchGAN 기반 판별기</strong>: 합성 도메인 vs. 실제 도메인을 구분하는 판별기 학습</li>
  <li>판별기 신뢰도 점수가 높은 상위 샘플만 선별: <strong>실내 300K + 실외 300K = 600K</strong> 고신뢰도 수도 레이블</li>
  <li>저품질 수도 레이블이 학습에 섞이는 것을 원천 차단</li>
</ul>

<p><strong>Stage 3 — DAP 최종 학습</strong></p>

<ul>
  <li>학습 데이터: 레이블 108K + 수도 레이블 600K + 추가 비레이블(자기지도) → <strong>전체 2.1M</strong></li>
  <li>Stage 2 모델을 초기화로 사용, 대규모 반지도 학습</li>
  <li>최종 DAP 파운데이션 모델 완성</li>
</ul>

<hr />

<h2 id="4-아키텍처">4. 아키텍처</h2>

<p><img src="https://i.imgur.com/NcNpuu1.png" alt="dap-fig2" /></p>
<figcaption align="center">Figure 2: DAP 아키텍처. DINOv3-Large 백본, 왜곡 인식 깊이 디코더, 플러그앤플레이 레인지 마스크 헤드의 세 모듈로 구성된다. 레인지 마스크가 장면 거리 범위를 분류하고, 이 정보가 metric 깊이 예측을 안내한다.</figcaption>

<h3 id="백본-dinov3-large">백본: DINOv3-Large</h3>

<p>강력한 비전 프리트레이닝 표현을 제공하는 DINOv3-Large를 인코더로 사용한다. 파노라마 이미지의 글로벌 구조와 지역적 세부를 동시에 포착하는 데 유리하다.</p>

<h3 id="왜곡-인식-깊이-디코더-distortion-aware-depth-decoder">왜곡 인식 깊이 디코더 (Distortion-Aware Depth Decoder)</h3>

<p>ERP 포맷의 기하 왜곡을 명시적으로 처리하는 디코더. 극점 근처의 픽셀이 실제로는 작은 입체각을 나타냄에도 이미지상 넓게 펼쳐지는 왜곡을 보정한다.</p>

<h3 id="플러그앤플레이-레인지-마스크-헤드">플러그앤플레이 레인지 마스크 헤드</h3>

<p>핵심 기여 중 하나. <strong>“이 장면의 깊이 범위는 얼마인가?”</strong> 를 먼저 분류한 뒤, 그 정보를 깊이 예측에 반영한다.</p>

<ul>
  <li><strong>레인지 마스크 M</strong>: 거리 임계값 τ를 기준으로 픽셀을 근거리/원거리로 이진 분류</li>
  <li><strong>임계값 τ 선택</strong>: 10m / 20m / 50m / 100m 중 실험적으로 <strong>100m가 최적</strong></li>
  <li><strong>마스크 손실</strong>: <code class="language-plaintext highlighter-rouge">ℒ_mask = ||M - M_gt||² + 0.5·ℒ_Dice(M, M_gt)</code></li>
  <li>기존 아키텍처에 독립적으로 부착 가능 (플러그앤플레이)</li>
</ul>

<hr />

<h2 id="5-손실-함수">5. 손실 함수</h2>

<p>왜곡된 파노라마 이미지의 특성을 반영한 5종의 손실을 조합한다.</p>

\[\mathcal{L}_{total} = M_{distort} \odot (\lambda_1 \mathcal{L}_{SILog} + \lambda_2 \mathcal{L}_{DF} + \lambda_3 \mathcal{L}_{grad} + \lambda_4 \mathcal{L}_{normal} + \lambda_5 \mathcal{L}_{pts} + \lambda_6 \mathcal{L}_{mask})\]

<p><strong>M_distort</strong>: ERP 왜곡 가중치 맵. 극점 근처의 왜곡이 큰 픽셀에 낮은 가중치를 부여해, 왜곡이 심한 영역이 손실을 지배하는 것을 방지.</p>

<table>
  <thead>
    <tr>
      <th>손실</th>
      <th>가중치</th>
      <th>역할</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>ℒ_SILog</td>
      <td>λ₁=1.0</td>
      <td>Scale-Invariant Log 손실. 전체적인 깊이 스케일 맞춤</td>
    </tr>
    <tr>
      <td>ℒ_DF</td>
      <td>λ₂=0.4</td>
      <td>DF-Gram 손실. 12개 정이십면체 패치 단위로 깊이 분포 통계 매칭 (글로벌 기하 일관성)</td>
    </tr>
    <tr>
      <td>ℒ_grad</td>
      <td>λ₃=5.0</td>
      <td>Gradient 손실. 경계와 표면 전환점의 날카로움 보존</td>
    </tr>
    <tr>
      <td>ℒ_normal</td>
      <td>λ₄=2.0</td>
      <td>Normal 손실. 깊이에서 유도한 표면 법선을 GT 법선과 매칭 (기하 정확도)</td>
    </tr>
    <tr>
      <td>ℒ_pts</td>
      <td>λ₅=2.0</td>
      <td>Point-Cloud 손실. 3D 포인트 클라우드 레벨에서의 유클리드 거리 최소화</td>
    </tr>
    <tr>
      <td>ℒ_mask</td>
      <td>λ₆=2.0</td>
      <td>레인지 마스크 헤드 지도 손실</td>
    </tr>
  </tbody>
</table>

<p><strong>ℒ_DF (DF-Gram) 상세</strong>: 구면을 12개 정이십면체 패치로 분할한 뒤, 각 패치의 깊이값 Gram 행렬을 GT와 비교한다. 이를 통해 ERP의 왜곡에 영향을 덜 받으면서 글로벌 기하 구조의 일관성을 강제한다.</p>

\[\mathcal{L}_{DF} = \frac{1}{N}\sum_{k}\|D_{pred}^{(k)}\odot D_{pred}^{(k)T} - D_{gt}^{(k)}\odot D_{gt}^{(k)T}\|_F^2\]

<hr />

<h2 id="6-학습-세부-설정">6. 학습 세부 설정</h2>

<table>
  <thead>
    <tr>
      <th>설정</th>
      <th>값</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>입력 해상도</td>
      <td>512×1024 (ERP)</td>
    </tr>
    <tr>
      <td>옵티마이저</td>
      <td>Adam</td>
    </tr>
    <tr>
      <td>백본 학습률</td>
      <td>5e-6</td>
    </tr>
    <tr>
      <td>디코더 학습률</td>
      <td>5e-5</td>
    </tr>
    <tr>
      <td>학습 하드웨어</td>
      <td>NVIDIA H20 GPU</td>
    </tr>
    <tr>
      <td>데이터 증강</td>
      <td>Color jittering, 수평 이동, 좌우 반전</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="7-실험-결과">7. 실험 결과</h2>

<h3 id="제로샷-벤치마크-table-3">제로샷 벤치마크 (Table 3)</h3>

<p><img src="https://i.imgur.com/6wLKxp4.png" alt="dap-tab3" /></p>
<figcaption align="center">Table 3: 제로샷 벤치마크 결과. Stanford2D3D (실내), Matterport3D (실내), Deep360 (실외) 세 데이터셋에서 DAP가 모든 기존 방법을 상회한다. 핀홀 기반 일반 깊이 모델들(DepthAnything V2, UniDepth)과 파노라마 전용 모델들 모두 크게 앞선다.</figcaption>

<p><strong>Stanford2D3D (실내, 학습 미포함)</strong>:</p>

<table>
  <thead>
    <tr>
      <th>방법</th>
      <th>AbsRel ↓</th>
      <th>RMSE ↓</th>
      <th>δ₁ ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>DepthAnything V2</td>
      <td>0.1822</td>
      <td>0.7340</td>
      <td>0.7691</td>
    </tr>
    <tr>
      <td>UniDepth</td>
      <td>0.1654</td>
      <td>0.6893</td>
      <td>0.8012</td>
    </tr>
    <tr>
      <td>PanDA</td>
      <td>0.1135</td>
      <td>0.4210</td>
      <td>0.8901</td>
    </tr>
    <tr>
      <td><strong>DAP</strong></td>
      <td><strong>0.0921</strong></td>
      <td><strong>0.3820</strong></td>
      <td><strong>0.9135</strong></td>
    </tr>
  </tbody>
</table>

<p><strong>Matterport3D (실내, 학습 미포함)</strong>:</p>

<table>
  <thead>
    <tr>
      <th>방법</th>
      <th>AbsRel ↓</th>
      <th>RMSE ↓</th>
      <th>δ₁ ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>DAP</strong></td>
      <td><strong>0.1186</strong></td>
      <td><strong>0.7510</strong></td>
      <td><strong>0.8518</strong></td>
    </tr>
  </tbody>
</table>

<p><strong>Deep360 (실외)</strong>:</p>

<table>
  <thead>
    <tr>
      <th>방법</th>
      <th>AbsRel ↓</th>
      <th>RMSE ↓</th>
      <th>δ₁ ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>DAP</strong></td>
      <td><strong>0.0659</strong></td>
      <td><strong>5.224</strong></td>
      <td><strong>0.9525</strong></td>
    </tr>
  </tbody>
</table>

<h3 id="dap-test-자체-벤치마크-table-4">DAP-Test 자체 벤치마크 (Table 4)</h3>

<p><img src="https://i.imgur.com/hsJk14x.png" alt="dap-tab4" /></p>
<figcaption align="center">Table 4: DAP-Test 벤치마크 결과. 실내외를 모두 포함한 DAP 자체 평가 세트에서 기존 최고 방법(Unik3D) 대비 AbsRel 69% 감소, RMSE 35.7% 감소, δ₁ 53.8% 향상이라는 압도적 성능 차이를 보인다.</figcaption>

<table>
  <thead>
    <tr>
      <th>방법</th>
      <th>AbsRel ↓</th>
      <th>RMSE ↓</th>
      <th>δ₁ ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>DAC</td>
      <td>0.3197</td>
      <td>8.799</td>
      <td>0.5193</td>
    </tr>
    <tr>
      <td>Unik3D</td>
      <td>0.2517</td>
      <td>10.56</td>
      <td>0.6086</td>
    </tr>
    <tr>
      <td><strong>DAP</strong></td>
      <td><strong>0.0781</strong></td>
      <td><strong>6.804</strong></td>
      <td><strong>0.9370</strong></td>
    </tr>
  </tbody>
</table>

<p>DAP는 Unik3D 대비:</p>
<ul>
  <li>AbsRel: 0.2517 → 0.0781 (<strong>69% 감소</strong>)</li>
  <li>RMSE: 10.56 → 6.804 (<strong>35.7% 감소</strong>)</li>
  <li>δ₁: 0.6086 → 0.9370 (<strong>53.8% 향상</strong>)</li>
</ul>

<h3 id="정성적-비교">정성적 비교</h3>

<p><img src="https://i.imgur.com/D0KvM1X.png" alt="dap-fig4" /></p>
<figcaption align="center">Figure 4: 정성적 비교. DAP(맨 오른쪽)는 DAC, Unik3D와 비교해 경계 선명도, 원거리 영역 정확도, 글로벌 기하 일관성 모두에서 월등한 품질을 보인다. 특히 파노라마의 가장자리와 극점 근처에서도 안정적인 깊이 예측을 유지한다.</figcaption>

<p><img src="https://i.imgur.com/ibo2Sgo.png" alt="dap-fig5" /></p>
<figcaption align="center">Figure 5: 다양한 실제 파노라마에 대한 DAP의 깊이 추정 결과. 도심 거리, 실내 공간, 자연 환경, 복잡한 구조물 등 다양한 장면에서 일관된 metric 깊이를 출력한다. 레인지 마스크가 장면마다 적절한 깊이 범위를 자동 적응함을 확인할 수 있다.</figcaption>

<hr />

<h2 id="8-어블레이션">8. 어블레이션</h2>

<h3 id="구성-요소-분석-table-5">구성 요소 분석 (Table 5)</h3>

<p><img src="https://i.imgur.com/2Ls8rMR.png" alt="dap-tab5" /></p>
<figcaption align="center">Table 5: 구성 요소 어블레이션. 왜곡 인식(Distortion), 기하 일관성(Geometry), 선명도(Sharpness) 세 요소를 순차적으로 추가할 때의 Stanford2D3D와 Deep360 성능 변화. 세 요소 모두 유의미하게 기여한다.</figcaption>

<table>
  <thead>
    <tr>
      <th>왜곡 인식</th>
      <th>기하 일관성</th>
      <th>선명도</th>
      <th>Stanford AbsRel ↓</th>
      <th>Stanford δ₁ ↑</th>
      <th>Deep360 AbsRel ↓</th>
      <th>Deep360 δ₁ ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>✗</td>
      <td>✗</td>
      <td>✗</td>
      <td>0.1166</td>
      <td>0.8409</td>
      <td>0.0942</td>
      <td>0.8396</td>
    </tr>
    <tr>
      <td>✓</td>
      <td>✗</td>
      <td>✗</td>
      <td>0.1149</td>
      <td>0.8440</td>
      <td>0.0926</td>
      <td>0.8423</td>
    </tr>
    <tr>
      <td>✓</td>
      <td>✓</td>
      <td>✗</td>
      <td>0.1112</td>
      <td>0.8509</td>
      <td>0.0880</td>
      <td>0.8592</td>
    </tr>
    <tr>
      <td>✓</td>
      <td>✓</td>
      <td>✓</td>
      <td><strong>0.1084</strong></td>
      <td><strong>0.8576</strong></td>
      <td><strong>0.0862</strong></td>
      <td><strong>0.8719</strong></td>
    </tr>
  </tbody>
</table>

<p>각 요소의 역할:</p>
<ul>
  <li><strong>왜곡 인식</strong>: M_distort 가중치맵으로 극점 왜곡 픽셀의 손실 영향 감소</li>
  <li><strong>기하 일관성</strong>: ℒ_DF (DF-Gram), ℒ_normal, ℒ_pts 손실로 3D 구조 정확도 향상</li>
  <li><strong>선명도</strong>: ℒ_grad 손실로 물체 경계 및 표면 전환점의 예리함 강화</li>
</ul>

<h3 id="레인지-마스크-임계값-분석-table-6">레인지 마스크 임계값 분석 (Table 6)</h3>

<p><img src="https://i.imgur.com/X5Vltdb.png" alt="dap-tab6" /></p>
<figcaption align="center">Table 6: 레인지 마스크 거리 임계값 어블레이션. 10m, 20m, 50m, 100m, None(마스크 없음) 중 100m 임계값이 DAP-2M과 Deep360 모두에서 최고 성능을 달성한다. 마스크 자체(None 대비 유의미한 개선)가 성능에 필수적임을 확인.</figcaption>

<table>
  <thead>
    <tr>
      <th>임계값 τ</th>
      <th>DAP-2M AbsRel ↓</th>
      <th>DAP-2M δ₁ ↑</th>
      <th>Deep360 AbsRel ↓</th>
      <th>Deep360 δ₁ ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>10m</td>
      <td>0.0801</td>
      <td>0.9315</td>
      <td>0.0934</td>
      <td>0.8493</td>
    </tr>
    <tr>
      <td>20m</td>
      <td>0.0823</td>
      <td>0.9164</td>
      <td>0.0873</td>
      <td>0.8668</td>
    </tr>
    <tr>
      <td>50m</td>
      <td>0.0864</td>
      <td>0.9104</td>
      <td>0.0843</td>
      <td>0.8594</td>
    </tr>
    <tr>
      <td><strong>100m</strong></td>
      <td><strong>0.0793</strong></td>
      <td><strong>0.9353</strong></td>
      <td><strong>0.0862</strong></td>
      <td><strong>0.8719</strong></td>
    </tr>
    <tr>
      <td>None</td>
      <td>0.0832</td>
      <td>0.9042</td>
      <td>0.0938</td>
      <td>0.8411</td>
    </tr>
  </tbody>
</table>

<p><strong>100m 임계값의 의미</strong>: 실내(~10m 이하)와 대규모 야외 장면(수백m)을 실용적으로 구분하는 경계가 100m임을 실험적으로 발견. 너무 낮은 임계값(10m, 20m)은 야외 중거리 장면을 올바르게 분류하지 못하고, 임계값이 없는 경우보다 100m가 항상 우수하다.</p>

<hr />

<h2 id="9-기존-방법과의-비교">9. 기존 방법과의 비교</h2>

<table>
  <thead>
    <tr>
      <th>항목</th>
      <th>핀홀 깊이 모델 (DAV2 등)</th>
      <th>파노라마 전용 (PanDA 등)</th>
      <th><strong>DAP</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>파노라마 기하 처리</td>
      <td>✗ (핀홀 가정)</td>
      <td>✓</td>
      <td>✓ (왜곡 인식)</td>
    </tr>
    <tr>
      <td>Metric 깊이</td>
      <td>△ (상대적)</td>
      <td>△</td>
      <td>✓ (metric 절대값)</td>
    </tr>
    <tr>
      <td>실내/실외 동시 지원</td>
      <td>△</td>
      <td>✗ (주로 실내)</td>
      <td>✓</td>
    </tr>
    <tr>
      <td>학습 데이터 규모</td>
      <td>대규모 (핀홀)</td>
      <td>소규모</td>
      <td>2M+ 파노라마</td>
    </tr>
    <tr>
      <td>제로샷 일반화</td>
      <td>낮음</td>
      <td>중간</td>
      <td>높음</td>
    </tr>
    <tr>
      <td>레인지 적응</td>
      <td>✗</td>
      <td>✗</td>
      <td>✓ (마스크 헤드)</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="10-한계점">10. 한계점</h2>

<ul>
  <li><strong>수도 레이블 오류 전파</strong>: 3단계 파이프라인은 Stage 1의 품질에 의존. 초기 레이블러 오류가 후속 단계로 누적될 수 있다.</li>
  <li><strong>극점 왜곡</strong>: M_distort로 완화했지만, 극점 근처의 심각한 왜곡 영역에서는 여전히 품질 저하 가능.</li>
  <li><strong>고해상도 처리 비용</strong>: 512×1024 입력 기준 설계. 더 높은 해상도 파노라마 처리 시 메모리·속도 부담.</li>
  <li><strong>실제 야외 GT 부재</strong>: 야외 학습 데이터 중 GT 레이블은 모두 UE5 합성 기반. 실제 야외 LiDAR GT로 검증이 제한적.</li>
</ul>

<hr />

<h2 id="11-정리">11. 정리</h2>

<p>DAP는 파노라마 깊이 추정 분야에 파운데이션 모델 패러다임을 처음으로 성공적으로 도입한 논문이다. 핵심 메시지:</p>

<blockquote>
  <p><strong>“데이터 규모 + 도메인 브리징 파이프라인 + 파노라마 특화 설계 = 실내외 범용 metric 깊이”</strong></p>
</blockquote>

<p>기존 핀홀 기반 깊이 모델들이 파노라마에 그대로 적용 불가능하고, 파노라마 전용 모델들은 특정 환경(주로 실내)에 과적합되었던 문제를 2M+ 규모의 다양한 데이터와 단계적 수도 레이블 파이프라인으로 극복했다. 레인지 마스크 헤드는 실내외의 깊이 범위 차이를 우아하게 해결하는 실용적 아이디어다.</p>

<p>Insta360이라는 360도 카메라 하드웨어 기업이 주도했다는 점에서, 실제 제품 적용을 염두에 둔 실용적 연구라는 점도 주목할 만하다.</p>]]></content><author><name>EHAK</name></author><category term="논문리뷰" /><summary type="html"><![CDATA[CVPR 2026 논문 Depth Any Panoramas 리뷰. 파노라마 이미지에 특화된 깊이 추정 파운데이션 모델. Insta360 Research Team 연구.]]></summary></entry><entry xml:lang="en"><title type="html">[Paper Review] VGGT-Ω: Scaling Feed-Forward 3D Reconstruction (CVPR 2026 Oral)</title><link href="https://psw1023.github.io/blog/2026/06/02/vggt-omega-paper-review-en/" rel="alternate" type="text/html" title="[Paper Review] VGGT-Ω: Scaling Feed-Forward 3D Reconstruction (CVPR 2026 Oral)" /><published>2026-06-02T00:00:00+00:00</published><updated>2026-06-02T00:00:00+00:00</updated><id>https://psw1023.github.io/blog/2026/06/02/vggt-omega-paper-review-en</id><content type="html" xml:base="https://psw1023.github.io/blog/2026/06/02/vggt-omega-paper-review-en/"><![CDATA[<blockquote>
  <p><strong>Paper:</strong> VGGT-Ω: Scaling Feed-Forward 3D Reconstruction<br />
<strong>Venue:</strong> CVPR 2026 (Oral Presentation)<br />
<strong>Authors:</strong> Jianyuan Wang, Minghao Chen, Shangzhan Zhang, Nikita Karaev, Johannes Schönberger, Patrick Labatut, Piotr Bojanowski, David Novotny, Andrea Vedaldi, Christian Rupprecht<br />
<strong>Affiliations:</strong> Visual Geometry Group (VGG), University of Oxford + Meta AI<br />
<strong>arXiv:</strong> <a href="https://arxiv.org/abs/2605.15195">2605.15195</a><br />
<strong>GitHub:</strong> <a href="https://github.com/facebookresearch/vggt-omega">facebookresearch/vggt-omega</a></p>
</blockquote>

<hr />

<h2 id="one-line-summary">One-Line Summary</h2>

<p>The successor to VGGT. A 1B-parameter feed-forward model that cuts memory by 70% via <strong>Register Attention</strong>, trains on 15× more data, and dramatically improves 3D reconstruction for both static and dynamic scenes.</p>

<hr />

<p><img src="https://i.imgur.com/3EaVETX.png" alt="vggt-omega-fig1" /></p>
<figcaption align="center">Figure 1: VGGT-Ω overview. A single forward pass predicts camera parameters, depth maps, and scene registers simultaneously, supporting both static and dynamic scenes. Performance scales predictably with model and data size.</figcaption>

<hr />

<h2 id="1-background-and-problem-statement">1. Background and Problem Statement</h2>

<p>VGGT (CVPR 2025 Best Paper) successfully applied the foundation model philosophy to 3D reconstruction. However, practical deployment revealed several structural limitations.</p>

<p><strong>Limitations of VGGT:</strong></p>

<ul>
  <li><strong>Global Attention memory explosion</strong>: In odd layers, all tokens across all N frames attend to one another — O(N²K²) complexity that scales quadratically with frame count.</li>
  <li><strong>No dynamic scene support</strong>: Training data was predominantly static scenes, making the model ill-equipped for scenes with moving objects.</li>
  <li><strong>Multi-head complexity</strong>: Three specialized heads (Camera, DPT, Tracking) limit scalability.</li>
  <li><strong>High-resolution conv bottleneck</strong>: The DPT head’s high-resolution convolution layers create memory and speed bottlenecks.</li>
</ul>

<p>VGGT-Ω’s central question:</p>

<blockquote>
  <p><strong>“If the right architectural choices are combined with sufficiently large data, does the quality of 3D reconstruction models scale predictably?”</strong></p>
</blockquote>

<hr />

<h2 id="2-core-ideas">2. Core Ideas</h2>

<p>Three contributions working in concert.</p>

<h3 id="-register-attention">① Register Attention</h3>
<p>Global Self-Attention is replaced by <strong>bottleneck communication through register tokens</strong>. Inter-frame information exchange happens exclusively through registers; image tokens only perform within-frame attention. Complexity drops from O(N²K²) to O(N²R² + NK²), where R ≪ K.</p>

<h3 id="-single-dense-prediction-head">② Single Dense Prediction Head</h3>
<p>VGGT’s three specialized heads (Camera, DPT, Tracking) are consolidated into <strong>a single multi-task Dense Prediction Head</strong>. High-resolution convolutional layers are removed. The simpler design is more amenable to scaling.</p>

<h3 id="-massive-diverse-training">③ Massive, Diverse Training</h3>
<ul>
  <li><strong>15× more supervised data</strong> compared to VGGT</li>
  <li>New <strong>self-supervised learning protocol</strong> for unlabeled video</li>
  <li>Newly built dynamic scene annotation pipeline</li>
</ul>

<hr />

<h2 id="3-architecture">3. Architecture</h2>

<h3 id="overall-pipeline">Overall Pipeline</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>N input images
    → patch tokenizer → image tokens (K tokens per frame)
    → register tokens (R tokens per frame, R ≪ K) appended
    → Transformer layers (Register Attention)
    │   ├─ Within-frame Self-Attention: image + register tokens (K+R)
    │   └─ Cross-frame Self-Attention: register tokens only (R × N frames)
    └─→ Single Dense Prediction Head (multi-task supervision)
           → camera extrinsics (rotation + translation)
           → camera intrinsics (FoV)
           → depth maps + confidence maps
           → scene registers (reusable for downstream tasks)
</code></pre></div></div>

<p><img src="https://i.imgur.com/vHZKbTj.png" alt="vggt-omega-fig2" /></p>
<figcaption align="center">Figure 2: Architecture comparison between VGGT and VGGT-Ω. Global Self-Attention (left) is replaced by Register Attention (right). Image tokens no longer communicate directly across frames — all inter-frame information flows through the register tokens.</figcaption>

<h3 id="register-attention-in-detail">Register Attention in Detail</h3>

<p>The critical bottleneck in VGGT’s Alternating-Attention was the <strong>Global Self-Attention</strong> step (all tokens across all frames attending to one another). VGGT-Ω decouples this into two stages:</p>

<ol>
  <li><strong>Within-frame attention</strong>: Each frame’s image tokens and register tokens attend together. Spatial information is compressed into the registers.</li>
  <li><strong>Cross-register attention</strong>: Only register tokens from all frames attend globally. Scene-wide 3D structure is exchanged at this compressed bottleneck.</li>
</ol>

<p>Image tokens can only access cross-frame information by routing through registers. The registers act as per-frame <strong>scene aggregators</strong>.</p>

<p><img src="https://i.imgur.com/l9xsRiw.png" alt="vggt-omega-fig3" /></p>
<figcaption align="center">Figure 3: Register Attention mechanism. Register tokens (■) collect information from within-frame image tokens (within-frame attention), then exchange that information globally with registers from other frames (cross-register attention). Image tokens (○) have no direct cross-frame communication.</figcaption>

<h3 id="memory-efficiency">Memory Efficiency</h3>

<p>Register Attention cuts memory by <strong>70% relative to Global Self-Attention</strong>. Combined with the removal of high-resolution convolutional layers, VGGT-Ω requires approximately 30% of VGGT’s memory.</p>

<table>
  <thead>
    <tr>
      <th># Frames</th>
      <th>GPU Memory (GB)</th>
      <th>Resolution</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>6.02</td>
      <td>624×416</td>
    </tr>
    <tr>
      <td>10</td>
      <td>6.67</td>
      <td>624×416</td>
    </tr>
    <tr>
      <td>25</td>
      <td>7.80</td>
      <td>624×416</td>
    </tr>
    <tr>
      <td>50</td>
      <td>9.66</td>
      <td>624×416</td>
    </tr>
    <tr>
      <td>100</td>
      <td>13.37</td>
      <td>624×416</td>
    </tr>
    <tr>
      <td>200</td>
      <td>20.82</td>
      <td>624×416</td>
    </tr>
    <tr>
      <td>300</td>
      <td>28.26</td>
      <td>624×416</td>
    </tr>
    <tr>
      <td>500</td>
      <td>43.15</td>
      <td>624×416</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="4-training">4. Training</h2>

<h3 id="data-composition">Data Composition</h3>

<p>VGGT-Ω uses <strong>15× more supervised training data</strong> than VGGT. Two major expansions:</p>

<p><strong>New: Dynamic Scene Annotation Pipeline</strong></p>
<ul>
  <li>An automated pipeline for annotating dynamic scenes with moving objects</li>
  <li>Overcomes the limitation of existing datasets being dominated by static scenes</li>
</ul>

<p><strong>New: Self-Supervised Learning</strong></p>
<ul>
  <li>A self-supervised learning protocol for unlabeled video data</li>
  <li>Enables learning 3D structure from internet-scale video without manual annotation</li>
</ul>

<p><img src="https://i.imgur.com/EVwR8ov.png" alt="vggt-omega-fig4" /></p>
<figcaption align="center">Figure 4: VGGT-Ω training pipeline. Three pillars: supervised training data (static + dynamic scenes), self-supervised learning (unlabeled video), and the dynamic scene annotation pipeline.</figcaption>

<hr />

<h2 id="5-experimental-results">5. Experimental Results</h2>

<h3 id="main-benchmark-results">Main Benchmark Results</h3>

<p><img src="https://i.imgur.com/IhkbzLz.png" alt="vggt-omega-tab1" /></p>
<figcaption align="center">Table 1: Main benchmark results on static scenes. VGGT-Ω surpasses VGGT and all prior methods by a large margin across camera pose estimation, point cloud reconstruction, and depth estimation benchmarks.</figcaption>

<p><img src="https://i.imgur.com/ff8IxZD.png" alt="vggt-omega-fig5" /></p>
<figcaption align="center">Figure 5: Qualitative 3D reconstruction comparison on static scenes. VGGT-Ω produces significantly more complete and geometrically accurate point clouds than VGGT.</figcaption>

<p><img src="https://i.imgur.com/ehKN6IW.png" alt="vggt-omega-fig7" /></p>
<figcaption align="center">Figure 7: Qualitative camera pose estimation comparison. VGGT-Ω's predicted camera trajectories align substantially closer to ground truth.</figcaption>

<h3 id="dynamic-scene-results">Dynamic Scene Results</h3>

<p>VGGT-Ω is the first in this line of work to directly target dynamic scenes. On the Sintel benchmark, it achieves a <strong>77% improvement over the previous best</strong>.</p>

<p><img src="https://i.imgur.com/T4Z0ExA.png" alt="vggt-omega-tab2" /></p>
<figcaption align="center">Table 2: Dynamic scene benchmark results. VGGT-Ω achieves a 77% improvement over the prior best on Sintel camera estimation, with strong results across other dynamic scene datasets.</figcaption>

<p><img src="https://i.imgur.com/fwHpX7v.png" alt="vggt-omega-fig6" /></p>
<figcaption align="center">Figure 6: Qualitative dynamic scene reconstruction. VGGT-Ω handles scenes with moving objects (people, vehicles, etc.) stably and accurately.</figcaption>

<p><img src="https://i.imgur.com/YeSekMU.png" alt="vggt-omega-fig8" /></p>
<figcaption align="center">Figure 8: Qualitative depth estimation comparison. Fine object boundaries and surface details are preserved across both static and dynamic scenes.</figcaption>

<hr />

<h2 id="6-ablation-study">6. Ablation Study</h2>

<p><img src="https://i.imgur.com/bBY4upg.png" alt="vggt-omega-tab3" /></p>
<figcaption align="center">Table 3: Ablation study. Each contribution — Register Attention, single Dense Prediction Head, and self-supervised learning — is isolated to quantify its individual impact. All three components contribute meaningfully to final performance.</figcaption>

<hr />

<h2 id="7-downstream-use-of-scene-registers">7. Downstream Use of Scene Registers</h2>

<p>A hidden benefit of Register Attention is that <strong>the learned scene registers transfer to downstream tasks</strong>. During 3D reconstruction training, registers learn to encode compact spatial representations of each frame’s scene — and these representations transfer to other spatial understanding tasks.</p>

<p><strong>Confirmed downstream applications:</strong></p>
<ul>
  <li><strong>Vision-Language-Action (VLA) models</strong>: Scene registers from VGGT-Ω benefit robot manipulation and other VLA tasks requiring spatial understanding.</li>
  <li><strong>Language Alignment</strong>: The VGGT-Omega-1B-256-Text-Alignment checkpoint outputs text-aligned embeddings for cross-modal retrieval.</li>
</ul>

<p>This suggests that 3D reconstruction is not just a geometry task but a <strong>powerful and scalable proxy task for spatial understanding</strong>.</p>

<p><img src="https://i.imgur.com/rrRE9k9.png" alt="vggt-omega-fig9" /></p>
<figcaption align="center">Figure 9: Downstream use of scene registers. Register representations learned via 3D reconstruction transfer to language alignment and VLA models, demonstrating the value of reconstruction as a pretraining objective.</figcaption>

<p><img src="https://i.imgur.com/YI540f6.png" alt="vggt-omega-fig10" /></p>
<figcaption align="center">Figure 10: Scaling curves. Performance on key benchmarks improves predictably as model size and training data grow — the first empirical demonstration of scaling laws in feed-forward 3D reconstruction.</figcaption>

<hr />

<h2 id="8-comparison-with-vggt">8. Comparison with VGGT</h2>

<table>
  <thead>
    <tr>
      <th>Aspect</th>
      <th>VGGT</th>
      <th>VGGT-Ω</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Cross-frame attention</td>
      <td>Global Self-Attention (all tokens)</td>
      <td>Register Attention (registers only)</td>
    </tr>
    <tr>
      <td>Prediction heads</td>
      <td>Camera + DPT + Tracking (3 heads)</td>
      <td>Single Dense Prediction Head</td>
    </tr>
    <tr>
      <td>Dynamic scenes</td>
      <td>Not supported</td>
      <td>Supported</td>
    </tr>
    <tr>
      <td>Training data</td>
      <td>~17 datasets</td>
      <td>~15× larger + self-supervised</td>
    </tr>
    <tr>
      <td>GPU memory (100 frames)</td>
      <td>~21 GB (336×518)</td>
      <td>13.37 GB (624×416, higher res, less memory)</td>
    </tr>
    <tr>
      <td>Sintel camera estimation</td>
      <td>Baseline</td>
      <td><strong>+77%</strong> improvement</td>
    </tr>
    <tr>
      <td>Scene register reuse</td>
      <td>None</td>
      <td>Transfers to VLA / language alignment</td>
    </tr>
    <tr>
      <td>Scaling validation</td>
      <td>—</td>
      <td>Scaling laws empirically demonstrated</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="9-limitations">9. Limitations</h2>

<ul>
  <li>High frame counts at high resolution still require substantial memory (500 frames at 624px = 43.15 GB)</li>
  <li>Self-supervised signal may be noisier than supervised annotations</li>
  <li>Text-aligned model is limited to 256px low resolution</li>
  <li>HuggingFace model access requires manual approval</li>
</ul>

<hr />

<h2 id="10-summary">10. Summary</h2>

<p>VGGT-Ω empirically validates that scaling laws apply to 3D reconstruction. The core message:</p>

<blockquote>
  <p><strong>“Register Attention + single head + massive data = predictable scaling”</strong></p>
</blockquote>

<p>If VGGT proved the foundation model paradigm could work for 3D vision, VGGT-Ω confirms that it <strong>scales according to the same laws</strong> observed in NLP and 2D vision. Reduce architectural complexity (Register Attention, single head), increase data (15× supervised + self-supervised), and performance improves predictably — while the learned representations transfer to other spatial understanding tasks.</p>

<p>Scaling laws for 3D reconstruction are no longer a hypothesis.</p>]]></content><author><name>EHAK</name></author><category term="논문리뷰" /><summary type="html"><![CDATA[Paper review of VGGT-Ω (CVPR 2026 Oral). A scaled feed-forward 3D reconstruction model, successor to VGGT, from VGG Oxford and Meta AI.]]></summary></entry><entry xml:lang="ko"><title type="html">[논문리뷰] VGGT-Ω: Scaling Feed-Forward 3D Reconstruction (CVPR 2026 Oral)</title><link href="https://psw1023.github.io/blog/2026/06/02/vggt-omega-paper-review/" rel="alternate" type="text/html" title="[논문리뷰] VGGT-Ω: Scaling Feed-Forward 3D Reconstruction (CVPR 2026 Oral)" /><published>2026-06-02T00:00:00+00:00</published><updated>2026-06-02T00:00:00+00:00</updated><id>https://psw1023.github.io/blog/2026/06/02/vggt-omega-paper-review</id><content type="html" xml:base="https://psw1023.github.io/blog/2026/06/02/vggt-omega-paper-review/"><![CDATA[<blockquote>
  <p><strong>논문:</strong> VGGT-Ω: Scaling Feed-Forward 3D Reconstruction<br />
<strong>학회:</strong> CVPR 2026 (Oral Presentation)<br />
<strong>저자:</strong> Jianyuan Wang, Minghao Chen, Shangzhan Zhang, Nikita Karaev, Johannes Schönberger, Patrick Labatut, Piotr Bojanowski, David Novotny, Andrea Vedaldi, Christian Rupprecht<br />
<strong>소속:</strong> Visual Geometry Group (VGG), University of Oxford + Meta AI<br />
<strong>arXiv:</strong> <a href="https://arxiv.org/abs/2605.15195">2605.15195</a><br />
<strong>GitHub:</strong> <a href="https://github.com/facebookresearch/vggt-omega">facebookresearch/vggt-omega</a></p>
</blockquote>

<hr />

<h2 id="한-줄-요약">한 줄 요약</h2>

<p>VGGT의 후속작. <strong>레지스터 어텐션</strong>으로 메모리를 70% 절감하고 15배 더 많은 데이터로 학습해, 정적·동적 장면 3D 재건 성능을 대폭 끌어올린 1B 파라미터 feed-forward 모델.</p>

<hr />

<p><img src="https://i.imgur.com/3EaVETX.png" alt="vggt-omega-fig1" /></p>
<figcaption align="center">Figure 1: VGGT-Ω 개요. 단일 forward pass로 카메라 파라미터·깊이 맵·씬 레지스터를 동시 예측하며, 정적/동적 장면을 모두 지원한다. 스케일링 법칙에 따라 모델·데이터 규모가 커질수록 성능이 예측 가능하게 향상된다.</figcaption>

<hr />

<h2 id="1-배경과-문제-정의">1. 배경과 문제 정의</h2>

<p>VGGT(CVPR 2025 Best Paper)는 파운데이션 모델 철학을 3D 재건에 성공적으로 적용해 큰 반향을 일으켰다. 그러나 실용화 과정에서 몇 가지 구조적 한계가 드러났다.</p>

<p><strong>VGGT의 한계:</strong></p>

<ul>
  <li><strong>Global Attention의 메모리 폭발</strong>: 홀수 레이어에서 N개 프레임의 모든 토큰이 서로 어텐션. 프레임 수에 제곱으로 증가하는 메모리 비용.</li>
  <li><strong>동적 장면 미지원</strong>: 정적 장면 위주 학습 데이터로 인해 움직이는 물체가 포함된 동적 장면 처리 불가.</li>
  <li><strong>멀티헤드 복잡성</strong>: Camera Head, DPT Head, Tracking Head 각각의 전문화된 설계가 확장성을 제약.</li>
  <li><strong>고해상도 Conv 병목</strong>: DPT 헤드의 고해상도 컨볼루션 연산이 메모리·속도 병목으로 작용.</li>
</ul>

<p>VGGT-Ω의 핵심 질문:</p>

<blockquote>
  <p><strong>“올바른 아키텍처 선택과 충분히 큰 데이터가 결합되면, 3D 재건 모델 성능은 예측 가능하게 스케일링되는가?”</strong></p>
</blockquote>

<hr />

<h2 id="2-핵심-아이디어">2. 핵심 아이디어</h2>

<p>세 가지 기여가 맞물려 있다.</p>

<h3 id="-레지스터-어텐션-register-attention">① 레지스터 어텐션 (Register Attention)</h3>
<p>Global Self-Attention을 <strong>레지스터 토큰을 경유한 병목 통신</strong>으로 교체. 프레임 간 정보는 오직 레지스터를 통해서만 교환되며, 이미지 토큰은 프레임 내 어텐션만 수행한다. 연산 복잡도가 O(N²K²) → O(N²R² + NK²)로 감소(R ≪ K).</p>

<h3 id="-단일-dense-prediction-head">② 단일 Dense Prediction Head</h3>
<p>VGGT의 세 개 특화 헤드(Camera, DPT, Tracking)를 <strong>단일 멀티태스크 Dense Prediction Head</strong>로 통합. 고해상도 컨볼루션 레이어 제거. 구조가 단순해져 스케일링에 유리.</p>

<h3 id="-대규모다양성-있는-학습">③ 대규모·다양성 있는 학습</h3>
<ul>
  <li>기존 VGGT 대비 <strong>15배 많은 지도학습 데이터</strong> 확보</li>
  <li>레이블 없는 동영상에 대한 <strong>자기지도 학습(self-supervised learning)</strong> 프로토콜 도입</li>
  <li>동적 장면 어노테이션 파이프라인 신규 구축</li>
</ul>

<hr />

<h2 id="3-아키텍처">3. 아키텍처</h2>

<h3 id="전체-파이프라인">전체 파이프라인</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>N개의 입력 이미지
    → 패치 토크나이저 → 이미지 토큰 (프레임당 K개)
    → 레지스터 토큰 (프레임당 R개, R ≪ K) 추가
    → Transformer 레이어 (Register Attention)
    │   ├─ 프레임 내 Self-Attention: 이미지 토큰 + 레지스터 (K+R개)
    │   └─ 프레임 간 Self-Attention: 레지스터 토큰만 (R개 × N프레임)
    └─→ 단일 Dense Prediction Head (multi-task supervision)
           → 카메라 외부 파라미터 (회전 + 이동)
           → 카메라 내부 파라미터 (FoV)
           → 깊이 맵 + 신뢰도 맵
           → 씬 레지스터 (다운스트림 재활용 가능)
</code></pre></div></div>

<p><img src="https://i.imgur.com/vHZKbTj.png" alt="vggt-omega-fig2" /></p>
<figcaption align="center">Figure 2: VGGT와 VGGT-Ω 아키텍처 비교. VGGT의 Global Self-Attention(좌)이 VGGT-Ω에서는 Register Attention(우)으로 대체된다. 이미지 토큰 간 직접 통신이 없어지고, 레지스터 토큰을 통해서만 프레임 간 정보가 교환된다.</figcaption>

<h3 id="register-attention-상세">Register Attention 상세</h3>

<p>기존 VGGT의 Alternating-Attention에서 핵심 병목이었던 <strong>Global Self-Attention</strong> (모든 프레임의 모든 토큰이 서로 어텐션)을 다음 두 단계로 분리한다:</p>

<ol>
  <li><strong>프레임 내 어텐션</strong>: 각 프레임의 이미지 토큰과 레지스터 토큰이 함께 어텐션 수행. 공간 정보를 레지스터로 압축.</li>
  <li><strong>레지스터 간 어텐션</strong>: 모든 프레임의 레지스터 토큰끼리만 글로벌 어텐션. 씬 전반의 3D 구조 정보를 교환.</li>
</ol>

<p>이미지 토큰이 다른 프레임의 정보를 얻으려면 반드시 레지스터를 경유해야 한다. 레지스터는 각 프레임의 씬 요약자(scene aggregator) 역할을 한다.</p>

<p><img src="https://i.imgur.com/l9xsRiw.png" alt="vggt-omega-fig3" /></p>
<figcaption align="center">Figure 3: Register Attention 메커니즘. 레지스터 토큰(■)이 프레임 내 이미지 토큰으로부터 정보를 수집하고(프레임 내 어텐션), 레지스터끼리 글로벌 어텐션으로 프레임 간 정보를 교환한다. 이미지 토큰(○) 간 직접 크로스프레임 통신은 없다.</figcaption>

<h3 id="메모리-효율">메모리 효율</h3>

<p>Register Attention은 Global Self-Attention 대비 <strong>메모리를 70% 절감</strong>한다. 고해상도 Conv 레이어 제거가 더해져 전체적으로 VGGT의 약 30% 메모리만 사용.</p>

<table>
  <thead>
    <tr>
      <th>프레임 수</th>
      <th>GPU 메모리 (GB)</th>
      <th>해상도</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>6.02</td>
      <td>624×416</td>
    </tr>
    <tr>
      <td>10</td>
      <td>6.67</td>
      <td>624×416</td>
    </tr>
    <tr>
      <td>25</td>
      <td>7.80</td>
      <td>624×416</td>
    </tr>
    <tr>
      <td>50</td>
      <td>9.66</td>
      <td>624×416</td>
    </tr>
    <tr>
      <td>100</td>
      <td>13.37</td>
      <td>624×416</td>
    </tr>
    <tr>
      <td>200</td>
      <td>20.82</td>
      <td>624×416</td>
    </tr>
    <tr>
      <td>300</td>
      <td>28.26</td>
      <td>624×416</td>
    </tr>
    <tr>
      <td>500</td>
      <td>43.15</td>
      <td>624×416</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="4-학습">4. 학습</h2>

<h3 id="학습-데이터-구성">학습 데이터 구성</h3>

<p>VGGT-Ω는 VGGT 대비 <strong>15배 많은 지도학습 데이터</strong>를 사용한다. 핵심 확장 방향은 두 가지다.</p>

<p><strong>신규: 동적 장면 어노테이션 파이프라인</strong></p>
<ul>
  <li>움직이는 물체가 포함된 동적 장면 데이터를 자동으로 어노테이션하는 파이프라인 구축</li>
  <li>기존 정적 장면 위주 데이터셋의 한계를 극복</li>
</ul>

<p><strong>신규: 자기지도 학습</strong></p>
<ul>
  <li>레이블 없는 동영상 데이터를 활용하는 자기지도 학습 프로토콜 도입</li>
  <li>인터넷 규모의 비레이블 비디오로부터 3D 구조 정보 학습</li>
</ul>

<p><img src="https://i.imgur.com/EVwR8ov.png" alt="vggt-omega-fig4" /></p>
<figcaption align="center">Figure 4: VGGT-Ω 학습 파이프라인. 지도학습 데이터(정적+동적 장면), 자기지도 학습(레이블 없는 비디오), 동적 장면 어노테이션 파이프라인의 세 축이 결합된다.</figcaption>

<hr />

<h2 id="5-실험-결과">5. 실험 결과</h2>

<h3 id="주요-벤치마크-결과">주요 벤치마크 결과</h3>

<p><img src="https://i.imgur.com/IhkbzLz.png" alt="vggt-omega-tab1" /></p>
<figcaption align="center">Table 1: 정적 장면 주요 벤치마크 결과. VGGT-Ω는 카메라 포즈 추정, 포인트 클라우드 재건, 깊이 추정 등 전 부문에서 VGGT를 포함한 이전 최고 성능을 대폭 갱신한다.</figcaption>

<p><img src="https://i.imgur.com/ff8IxZD.png" alt="vggt-omega-fig5" /></p>
<figcaption align="center">Figure 5: 정적 장면 3D 재건 정성적 비교. VGGT-Ω가 VGGT 대비 더 정밀하고 완전한 포인트 클라우드를 생성한다.</figcaption>

<p><img src="https://i.imgur.com/ehKN6IW.png" alt="vggt-omega-fig7" /></p>
<figcaption align="center">Figure 7: 카메라 포즈 추정 정성적 비교. VGGT-Ω의 카메라 궤적이 ground truth에 현저히 가까운 정렬을 보인다.</figcaption>

<h3 id="동적-장면-결과">동적 장면 결과</h3>

<p>VGGT가 완전히 다루지 못했던 동적 장면에서의 성능을 새로 측정한다. Sintel 벤치마크에서 <strong>이전 최고 대비 77% 향상</strong>이라는 압도적인 결과를 기록했다.</p>

<p><img src="https://i.imgur.com/T4Z0ExA.png" alt="vggt-omega-tab2" /></p>
<figcaption align="center">Table 2: 동적 장면 벤치마크 결과. Sintel, TartanAir 등 동적 씬 데이터셋에서 VGGT-Ω가 이전 방법들을 크게 앞선다. Sintel에서 이전 최고 대비 77% 향상.</figcaption>

<p><img src="https://i.imgur.com/fwHpX7v.png" alt="vggt-omega-fig6" /></p>
<figcaption align="center">Figure 6: 동적 장면 재건 정성적 결과. 움직이는 물체(사람, 차량 등)가 포함된 장면에서도 안정적인 재건 품질을 보인다.</figcaption>

<p><img src="https://i.imgur.com/YeSekMU.png" alt="vggt-omega-fig8" /></p>
<figcaption align="center">Figure 8: 깊이 추정 정성적 비교. 정적·동적 장면 모두에서 세밀한 경계와 물체 디테일이 잘 보존된다.</figcaption>

<hr />

<h2 id="6-어블레이션">6. 어블레이션</h2>

<p><img src="https://i.imgur.com/bBY4upg.png" alt="vggt-omega-tab3" /></p>
<figcaption align="center">Table 3: 어블레이션 스터디. Register Attention, 단일 Dense Prediction Head, 자기지도 학습 각 요소의 기여를 분해 분석한다. 세 요소 모두 최종 성능에 유의미하게 기여한다.</figcaption>

<hr />

<h2 id="7-레지스터의-다운스트림-활용">7. 레지스터의 다운스트림 활용</h2>

<p>Register Attention의 숨겨진 이점은 <strong>씬 레지스터 토큰이 다운스트림 태스크에 재활용 가능</strong>하다는 점이다. 3D 재건 학습 과정에서 레지스터는 씬의 공간적 구조를 압축적으로 표현하는 방법을 학습하게 되는데, 이 표현이 다른 공간 이해 태스크로 전이된다.</p>

<p><strong>확인된 다운스트림 활용 사례:</strong></p>
<ul>
  <li><strong>Vision-Language-Action (VLA) 모델</strong>: 로봇 조작 등 공간 이해가 필요한 VLA 모델에서 씬 레지스터 활용</li>
  <li><strong>언어 정렬(Language Alignment)</strong>: 256px 체크포인트(VGGT-Omega-1B-256-Text-Alignment)는 텍스트-이미지 정렬 임베딩 출력 지원</li>
</ul>

<p>3D 재건이 단순한 메트릭 성능 개선을 넘어 <strong>공간 이해를 위한 강력한 프리트레이닝 태스크</strong>임을 시사한다.</p>

<p><img src="https://i.imgur.com/rrRE9k9.png" alt="vggt-omega-fig9" /></p>
<figcaption align="center">Figure 9: 씬 레지스터의 다운스트림 활용. 3D 재건으로 학습된 레지스터 표현이 언어 정렬 및 VLA 모델로 전이되는 과정을 보여준다.</figcaption>

<p><img src="https://i.imgur.com/YI540f6.png" alt="vggt-omega-fig10" /></p>
<figcaption align="center">Figure 10: 스케일링 곡선. 모델 크기와 학습 데이터 양이 증가함에 따라 주요 벤치마크 성능이 예측 가능하게 향상된다. 이는 3D 재건 영역에서도 스케일링 법칙이 성립함을 처음으로 보인다.</figcaption>

<hr />

<h2 id="8-vggt와의-비교">8. VGGT와의 비교</h2>

<table>
  <thead>
    <tr>
      <th>항목</th>
      <th>VGGT</th>
      <th>VGGT-Ω</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>프레임 간 어텐션</td>
      <td>Global Self-Attention (모든 토큰)</td>
      <td>Register Attention (레지스터만)</td>
    </tr>
    <tr>
      <td>예측 헤드</td>
      <td>Camera + DPT + Tracking (3개)</td>
      <td>단일 Dense Prediction Head</td>
    </tr>
    <tr>
      <td>동적 장면</td>
      <td>미지원</td>
      <td>지원</td>
    </tr>
    <tr>
      <td>학습 데이터</td>
      <td>~17개 데이터셋</td>
      <td>~15× 확장 + 자기지도 학습</td>
    </tr>
    <tr>
      <td>GPU 메모리 (100프레임)</td>
      <td>~21 GB (336×518)</td>
      <td>13.37 GB (624×416, 더 높은 해상도에서 더 적은 메모리)</td>
    </tr>
    <tr>
      <td>Sintel 카메라 추정</td>
      <td>기준</td>
      <td><strong>+77%</strong> 향상</td>
    </tr>
    <tr>
      <td>씬 레지스터 활용</td>
      <td>없음</td>
      <td>VLA / 언어 정렬 전이 가능</td>
    </tr>
    <tr>
      <td>스케일링 검증</td>
      <td>—</td>
      <td>모델·데이터 스케일 법칙 실증</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="9-한계점">9. 한계점</h2>

<ul>
  <li>고해상도(512px 이상) 처리 시 여전히 수백 GB급 메모리 필요 (500프레임·624px = 43.15 GB)</li>
  <li>자기지도 학습의 신뢰도가 지도학습 대비 낮을 수 있음</li>
  <li>텍스트 정렬 모델은 256px 저해상도로 제한</li>
  <li>HuggingFace 접근 승인 절차 필요 (공개 즉시 접근 불가)</li>
</ul>

<hr />

<h2 id="10-정리">10. 정리</h2>

<p>VGGT-Ω는 “스케일링 법칙이 3D 재건에도 적용된다”는 명제를 실증한 논문이다. 핵심 메시지:</p>

<blockquote>
  <p><strong>“Register Attention + 단일 헤드 + 대규모 데이터 = 예측 가능한 스케일링”</strong></p>
</blockquote>

<p>VGGT가 3D 비전의 파운데이션 모델 가능성을 증명했다면, VGGT-Ω는 그 가능성을 <strong>스케일링 법칙의 언어로 확인</strong>했다. 아키텍처 복잡성을 줄이고(레지스터 어텐션, 단일 헤드), 데이터를 늘리면(15× 지도 + 자기지도) 성능이 예측 가능하게 향상되며, 그 표현은 다른 공간 이해 태스크로도 전이된다.</p>

<p>NLP와 2D 비전에서 확립된 스케일링 법칙이 이제 3D 재건에서도 작동한다.</p>]]></content><author><name>EHAK</name></author><category term="논문리뷰" /><summary type="html"><![CDATA[CVPR 2026 Oral 논문 VGGT-Ω 리뷰. Feed-forward 3D 재구성을 대규모로 스케일링한 VGGT 후속 연구. VGG Oxford + Meta AI 공동 연구.]]></summary></entry><entry xml:lang="en"><title type="html">[Paper Review] WiLoR: End-to-end 3D Hand Localization and Reconstruction in-the-wild (CVPR 2025)</title><link href="https://psw1023.github.io/blog/2026/05/25/wilor-paper-review-en/" rel="alternate" type="text/html" title="[Paper Review] WiLoR: End-to-end 3D Hand Localization and Reconstruction in-the-wild (CVPR 2025)" /><published>2026-05-25T00:00:00+00:00</published><updated>2026-05-25T00:00:00+00:00</updated><id>https://psw1023.github.io/blog/2026/05/25/wilor-paper-review-en</id><content type="html" xml:base="https://psw1023.github.io/blog/2026/05/25/wilor-paper-review-en/"><![CDATA[<blockquote>
  <p><strong>Paper:</strong> WiLoR: End-to-end 3D Hand Localization and Reconstruction in-the-wild<br />
<strong>Venue:</strong> CVPR 2025<br />
<strong>Authors:</strong> Rolandos Alexandros Potamias, Jinglei Zhang, Jiankang Deng, Stefanos Zafeiriou<br />
<strong>Affiliations:</strong> Imperial College London (Potamias, Deng, Zafeiriou), Shanghai Jiao Tong University (Zhang)<br />
<strong>arXiv:</strong> <a href="https://arxiv.org/abs/2409.12259">2409.12259</a><br />
<strong>GitHub:</strong> <a href="https://github.com/rolpotamias/WiLoR">rolpotamias/WiLoR</a></p>
</blockquote>

<hr />

<h2 id="one-line-summary">One-Line Summary</h2>

<p>An end-to-end 3D hand reconstruction pipeline combining a real-time fully convolutional hand detector with a ViT-Large + multi-scale refinement module, achieving state-of-the-art on FreiHAND and HO3Dv2 while delivering <strong>2–3× better temporal coherence than HaMeR</strong>, trained on 4.2M images including the new 2M+ in-the-wild WHIM dataset.</p>

<hr />

<h2 id="1-background-and-problem-definition">1. Background and Problem Definition</h2>

<h3 id="the-fragmented-two-stage-pipeline">The Fragmented Two-Stage Pipeline</h3>

<p>3D hand reconstruction systems have traditionally been developed as two separate stages: a hand detector finds the hand region, and a separate pose estimation model recovers the 3D mesh from the detected crop. This separation introduces three problems:</p>

<ul>
  <li><strong>Detection bottleneck</strong>: False positives or misses from the upstream detector directly limit full-pipeline performance</li>
  <li><strong>Detection speed</strong>: Prior hand detectors (ContactHands: 3 FPS) are unsuitable for real-time applications</li>
  <li><strong>Temporal incoherence</strong>: Single-frame pose estimation causes inter-frame jitter in video</li>
</ul>

<p>Additionally, prior methods <strong>lack a refinement step after initial MANO parameter estimation</strong>, making image-space alignment inaccurate. Where HaMeR uses a single query token for direct regression, WiLoR introduces an <strong>initial prediction → image-aligned feature residual refinement</strong> structure.</p>

<h3 id="wilors-core-proposal">WiLoR’s Core Proposal</h3>

<p>WiLoR addresses all three issues simultaneously:</p>

<ol>
  <li><strong>Real-time hand detection</strong>: Fully convolutional detection network at 130+ FPS</li>
  <li><strong>High-fidelity 3D reconstruction</strong>: ViT-Large backbone with a multi-scale image-aligned refinement module</li>
  <li><strong>Large-scale in-the-wild data</strong>: 2M+ automatically annotated images (WHIM dataset)</li>
</ol>

<hr />

<h2 id="2-output-representation-mano-hand-model">2. Output Representation: MANO Hand Model</h2>

<p>WiLoR also uses the parametric hand model <strong>MANO</strong> as its output space.</p>

<p>MANO parameters:</p>
<ul>
  <li><strong>Pose</strong> \(\theta \in \mathbb{R}^{48}\): Finger joint rotations (PCA-based)</li>
  <li><strong>Shape</strong> \(\beta \in \mathbb{R}^{10}\): Per-identity hand shape variables</li>
  <li><strong>Camera</strong> \(K_{cam}\): Weak-perspective camera parameters</li>
</ul>

<p>The full output \(\{\theta, \beta, K_{cam}\}\) deterministically yields a 778-vertex mesh \(V_{3D}\) and 21 joint locations \(J_{3D}\).</p>

<hr />

<h2 id="3-architecture-overview">3. Architecture Overview</h2>

<p>WiLoR is an end-to-end pipeline of two networks:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Single RGB image
    → WiLoR-Det (hand detection network)
        → bounding boxes + left/right labels
    → hand crop extraction
    → WiLoR-Rec (3D reconstruction network)
        → initial MANO parameter estimation (ViT-L)
        → refinement module (multi-scale image alignment)
        → final MANO parameters (θ, β, K_cam)
        → MANO layer → 3D mesh + joint coordinates
</code></pre></div></div>

<hr />

<h2 id="4-hand-detection-network-wilor-det">4. Hand Detection Network (WiLoR-Det)</h2>

<h3 id="architecture">Architecture</h3>

<p>WiLoR-Det is a real-time object detection architecture in the YOLOv8 family, specialized for hand detection.</p>

<ul>
  <li><strong>Backbone</strong>: DarkNet — extracts last three feature maps \(\{C_3, C_4, C_5\}\)</li>
  <li><strong>Neck</strong>: PANet (Path Aggregation Network) — multi-scale feature fusion</li>
  <li><strong>Head</strong>: Three anchor-free detection heads (predict bounding boxes + left/right labels at each scale)</li>
</ul>

<p>Provided in two sizes:</p>
<ul>
  <li><strong>WiLoR-M</strong>: 25 MB, 138 FPS</li>
  <li><strong>WiLoR-S</strong>: 7 MB, 175 FPS</li>
</ul>

<h3 id="detection-loss">Detection Loss</h3>

\[\mathcal{L}_{det} = \lambda_0 \mathcal{L}_{BCE} + \lambda_1 \mathcal{L}_{DFL} + \lambda_2 \mathcal{L}_{CIoU} + \lambda_3 \mathcal{L}_{kpts}\]

<table>
  <thead>
    <tr>
      <th>Term</th>
      <th>Weight</th>
      <th>Role</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>\(\mathcal{L}_{BCE}\)</td>
      <td>\(\lambda_0 = 0.5\)</td>
      <td>Classification (hand presence + left/right)</td>
    </tr>
    <tr>
      <td>\(\mathcal{L}_{DFL}\)</td>
      <td>\(\lambda_1 = 1.5\)</td>
      <td>Distribution focal loss (box coordinate distribution)</td>
    </tr>
    <tr>
      <td>\(\mathcal{L}_{CIoU}\)</td>
      <td>\(\lambda_2 = 15\)</td>
      <td>Bounding box shape regression</td>
    </tr>
    <tr>
      <td>\(\mathcal{L}_{kpts}\)</td>
      <td>\(\lambda_3 = 10\)</td>
      <td>Keypoint alignment</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="5-3d-hand-reconstruction-network-wilor-rec">5. 3D Hand Reconstruction Network (WiLoR-Rec)</h2>

<h3 id="backbone-vit-large">Backbone: ViT-Large</h3>

<ul>
  <li>Fine-tuned from ViTPose pretrained weights</li>
  <li>Hidden dimension 1,280</li>
  <li>Input: image patch tokens \(\mathbf{T}_{img}\) concatenated with <strong>learnable tokens</strong> for pose \(\theta\), shape \(\beta\), and camera \(K_{cam}\)</li>
  <li>Initial (coarse) MANO parameters estimated via MLP from ViT output tokens</li>
</ul>

<p>WiLoR uses ViT-L rather than HaMeR’s ViT-H, but compensates through ViTPose pretraining and the refinement module.</p>

<h3 id="refinement-module">Refinement Module</h3>

<p>This is WiLoR-Rec’s key differentiator. Rather than stopping at initial MANO parameters, it extracts image-aligned features to predict residual corrections.</p>

<p><strong>How it works:</strong></p>

<ol>
  <li><strong>Feature map generation</strong>: Deconvolutional layers upsample ViT image output tokens into multi-resolution feature maps \(\{F_0, F_1, \ldots, F_n\}\)</li>
  <li><strong>Mesh projection</strong>: Each vertex \(v\) of the initially estimated hand mesh is projected onto the image plane using the estimated camera \(K_{cam}\)</li>
  <li><strong>Bilinear sampling</strong>: Multi-scale features are bilinearly interpolated at the projected coordinates</li>
</ol>

\[f_v^0 = \pi(v, K_{cam})\]

\[\text{per-vertex feature} = \text{bilinear\_sample}(\{F_i\}, f_v^0)\]

<ol>
  <li><strong>Residual prediction</strong>: Per-vertex features from mesh level \(M_l\) are aggregated to compute pose and shape residuals</li>
</ol>

\[\Delta\beta = \text{MLP}_\beta\left(\bigoplus_{v \in M_l} f_v^0\right), \quad \Delta\theta = \text{MLP}_\theta\left(\bigoplus_{v \in M_l} f_v^0\right)\]

<p>The key insight is <strong>image alignment</strong>: rather than regressing from global image features, the model directly references local image features corresponding to estimated mesh positions, correcting errors through local context.</p>

<h3 id="reconstruction-loss">Reconstruction Loss</h3>

\[\mathcal{L}_{rec} = \lambda_{3D}\mathcal{L}_{3D} + \lambda_{2D}\mathcal{L}_{2D} + \lambda_{pose}\mathcal{L}_{MANO,\theta} + \lambda_{shape}\mathcal{L}_{MANO,\beta} + \mathcal{L}_{adv}\]

<table>
  <thead>
    <tr>
      <th>Term</th>
      <th>Weight</th>
      <th>Formula</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>\(\mathcal{L}_{3D}\)</td>
      <td>0.05</td>
      <td>\(|V_{3D} - \hat{V}_{3D}|_1\)</td>
    </tr>
    <tr>
      <td>\(\mathcal{L}_{2D}\)</td>
      <td>0.01</td>
      <td>\(|\pi(J_{3D}, K_{cam}) - \hat{J}_{2D}|_1\)</td>
    </tr>
    <tr>
      <td>\(\mathcal{L}_{MANO,\theta}\)</td>
      <td>0.001</td>
      <td>\(|\theta - \hat{\theta}|_2^2\)</td>
    </tr>
    <tr>
      <td>\(\mathcal{L}_{MANO,\beta}\)</td>
      <td>0.0005</td>
      <td>\(|\beta - \hat{\beta}|_2^2\)</td>
    </tr>
    <tr>
      <td>\(\mathcal{L}_{adv}\)</td>
      <td>—</td>
      <td>\(|D(\theta, \beta) - 1|_2\)</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="6-whim-dataset">6. WHIM Dataset</h2>

<h3 id="motivation-and-scale">Motivation and Scale</h3>

<p>The core problem with prior in-the-wild training data is insufficient diversity. WiLoR builds the <strong>WHIM (Wild Hand In-the-wild Monocular)</strong> dataset via an automated annotation pipeline.</p>

<ul>
  <li><strong>Scale</strong>: 2M+ in-the-wild hand images</li>
  <li><strong>Source</strong>: 1,400+ YouTube videos (sign language, cooking, sports, games, ego/exocentric viewpoints)</li>
  <li><strong>Annotations</strong>: 2D bounding boxes, left/right labels, 3D MANO parameters</li>
</ul>

<h3 id="automated-annotation-pipeline">Automated Annotation Pipeline</h3>

<p>3D ground truth is generated through an automated fitting pipeline rather than manual annotation.</p>

<p><strong>Stage 1 — Person detection:</strong></p>
<ul>
  <li>VitPose + AlphaPose with confidence threshold 0.65</li>
</ul>

<p><strong>Stage 2 — Hand detection ensemble:</strong></p>
<ul>
  <li>Three detectors (MediaPipe, OpenPose, ContactHands) ensembled</li>
  <li>Confidence-weighted bounding box fusion:</li>
</ul>

\[\hat{y} = \frac{\sum_i P(b_i | d_i) \cdot b_i}{\sum_i P(b_i | d_i)}\]

<p><strong>Stage 3 — 3D MANO fitting:</strong>
Optimized with three losses:</p>

<ul>
  <li><strong>Reprojection loss</strong>: \(\mathcal{L}_{proj} = \|J_M - \pi(\hat{J}_s, K)\|_1\)</li>
  <li><strong>Biomechanical loss</strong>: \(\mathcal{L}_{BMC} = \mathcal{L}_{BL} + \mathcal{L}_{A}\) (bone length + joint angle constraints)</li>
  <li><strong>PCA prior loss</strong>: \(\mathcal{L}_{prior} = \|X - [(X - \mu)U^T]U + \mu\|_2\) (enforces natural hand shapes)</li>
</ul>

<p>Explicitly embedding biomechanical constraints in the fitting loss prevents generation of physically implausible hand poses.</p>

<hr />

<h2 id="7-training-configuration">7. Training Configuration</h2>

<h3 id="detection-model">Detection Model</h3>

<ul>
  <li>Optimizer: Adam, 200 epochs with 30-epoch early stopping</li>
  <li>Learning rate: 0.01 → 1e-6 (linear decay)</li>
  <li>Hardware: 2× RTX 4090, batch size 256, 3 weeks</li>
  <li>Augmentation: Mosaic (0.7 probability), rotation [-60°, 60°], scale [0.5, 1]</li>
</ul>

<h3 id="reconstruction-model">Reconstruction Model</h3>

<ul>
  <li>Optimizer: Adam, 1,000 epochs, learning rate 1e-5, weight decay 1e-4</li>
  <li>Training data: <strong>14 datasets, 4.2M images</strong> (55%+ more than prior methods)</li>
  <li>7 existing datasets with 3D annotations (FreiHAND, HO-3D, InterHand2.6M, etc.) + 7 additional including WHIM</li>
</ul>

<hr />

<h2 id="8-experimental-results">8. Experimental Results</h2>

<h3 id="freihand-benchmark-table-3">FreiHAND Benchmark (Table 3)</h3>

<table>
  <thead>
    <tr>
      <th>Method</th>
      <th>PA-MPJPE (mm) ↓</th>
      <th>PA-MPVPE (mm) ↓</th>
      <th>F@5mm ↑</th>
      <th>F@15mm ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>HaMeR</td>
      <td>6.0</td>
      <td>5.7</td>
      <td>0.785</td>
      <td>0.990</td>
    </tr>
    <tr>
      <td><strong>WiLoR</strong></td>
      <td><strong>5.5</strong></td>
      <td><strong>5.1</strong></td>
      <td><strong>0.825</strong></td>
      <td><strong>0.993</strong></td>
    </tr>
  </tbody>
</table>

<p>WiLoR surpasses HaMeR on all FreiHAND metrics: 8.3% improvement in PA-MPJPE, 5.1%p improvement in F@5mm.</p>

<h3 id="ho3dv2-benchmark-table-4">HO3Dv2 Benchmark (Table 4)</h3>

<table>
  <thead>
    <tr>
      <th>Method</th>
      <th>AUCⱼ ↑</th>
      <th>PA-MPJPE (mm) ↓</th>
      <th>AUCᵥ ↑</th>
      <th>PA-MPVPE (mm) ↓</th>
      <th>F@5mm ↑</th>
      <th>F@15mm ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>HaMeR</td>
      <td>0.846</td>
      <td>7.7</td>
      <td>0.841</td>
      <td>7.9</td>
      <td>0.635</td>
      <td>0.980</td>
    </tr>
    <tr>
      <td><strong>WiLoR</strong></td>
      <td><strong>0.851</strong></td>
      <td><strong>7.5</strong></td>
      <td><strong>0.846</strong></td>
      <td><strong>7.7</strong></td>
      <td><strong>0.646</strong></td>
      <td><strong>0.983</strong></td>
    </tr>
  </tbody>
</table>

<p>Consistent improvement on the hand-object interaction benchmark as well.</p>

<h3 id="hand-detection-benchmark-table-1-coco">Hand Detection Benchmark (Table 1, COCO)</h3>

<table>
  <thead>
    <tr>
      <th>Method</th>
      <th>Model Size</th>
      <th>FPS ↑</th>
      <th>AP@0.5 ↑</th>
      <th>mAP ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>ContactHands</td>
      <td>819 MB</td>
      <td>3</td>
      <td>50.29</td>
      <td>16.67</td>
    </tr>
    <tr>
      <td>ViTDet</td>
      <td>1,400 MB</td>
      <td>1</td>
      <td>41.64</td>
      <td>13.21</td>
    </tr>
    <tr>
      <td><strong>WiLoR-S</strong></td>
      <td><strong>7 MB</strong></td>
      <td><strong>175</strong></td>
      <td>46.96</td>
      <td>18.56</td>
    </tr>
    <tr>
      <td><strong>WiLoR-M</strong></td>
      <td><strong>25 MB</strong></td>
      <td><strong>138</strong></td>
      <td><strong>62.48</strong></td>
      <td><strong>25.97</strong></td>
    </tr>
  </tbody>
</table>

<p>WiLoR-M achieves <strong>45× faster speed at 32× smaller size</strong> compared to ContactHands while outperforming it by 12.19%p in AP@0.5.</p>

<p>On the WHIM test set, WiLoR-M scores AP@0.5 96.06, mAP 53.79.</p>

<h3 id="temporal-coherence-table-6">Temporal Coherence (Table 6)</h3>

<p>Despite per-frame independent inference, temporal coherence on video:</p>

<table>
  <thead>
    <tr>
      <th>Method</th>
      <th>MPFVE×100 ↓</th>
      <th>MPFJE×100 ↓</th>
      <th>Jitter ↓</th>
      <th>RTE ↓</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>HaMeR</td>
      <td>10.60</td>
      <td>1.768</td>
      <td>20.43</td>
      <td>2.92</td>
    </tr>
    <tr>
      <td><strong>WiLoR</strong></td>
      <td><strong>4.43</strong></td>
      <td><strong>0.762</strong></td>
      <td><strong>5.92</strong></td>
      <td><strong>0.07</strong></td>
    </tr>
  </tbody>
</table>

<p>2.4× improvement in MPFVE, 3.4× improvement in Jitter over HaMeR — <strong>temporal coherence achieved without any explicit temporal modeling</strong>.</p>

<hr />

<h2 id="9-ablation-study">9. Ablation Study</h2>

<h3 id="reconstruction-component-analysis-table-5-freihand">Reconstruction Component Analysis (Table 5, FreiHAND)</h3>

<table>
  <thead>
    <tr>
      <th>Configuration</th>
      <th>PA-MPJPE (mm) ↓</th>
      <th>PA-MPVPE (mm) ↓</th>
      <th>F@5mm ↑</th>
      <th>F@15mm ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>w. FastViT backbone</td>
      <td>6.5</td>
      <td>6.3</td>
      <td>0.741</td>
      <td>0.967</td>
    </tr>
    <tr>
      <td>w/o ViTPose pretrain</td>
      <td>5.9</td>
      <td>5.7</td>
      <td>0.795</td>
      <td>0.989</td>
    </tr>
    <tr>
      <td>w. Single-scale refinement</td>
      <td>6.0</td>
      <td>5.9</td>
      <td>0.793</td>
      <td>0.991</td>
    </tr>
    <tr>
      <td>w/o Refinement module</td>
      <td>6.1</td>
      <td>5.8</td>
      <td>0.795</td>
      <td>0.991</td>
    </tr>
    <tr>
      <td>w. FreiHAND only</td>
      <td>6.1</td>
      <td>5.8</td>
      <td>0.793</td>
      <td>0.990</td>
    </tr>
    <tr>
      <td><strong>Full model (WiLoR)</strong></td>
      <td><strong>5.5</strong></td>
      <td><strong>5.1</strong></td>
      <td><strong>0.825</strong></td>
      <td><strong>0.993</strong></td>
    </tr>
  </tbody>
</table>

<p>Key observations:</p>

<ul>
  <li><strong>Backbone capacity matters</strong>: ViT-L over FastViT gives 1.0mm improvement in PA-MPJPE. Capacity difference directly translates to performance.</li>
  <li><strong>ViTPose pretraining is critical</strong>: Starting from ViTPose weights versus standard ViT-L gives an additional 0.4mm improvement. Domain similarity between hand pose and body pose makes transfer beneficial.</li>
  <li><strong>Refinement module effect</strong>: Without refinement 6.1mm → with refinement 5.5mm. Image-aligned residual prediction contributes 0.6mm gain.</li>
  <li><strong>Multi-scale matters</strong>: Single-scale (6.0mm) vs. multi-scale (5.5mm) gives 0.5mm additional improvement.</li>
  <li><strong>WHIM data contribution</strong>: FreiHAND-only training (6.1mm) vs. full data (5.5mm) shows 0.6mm gain. Out-of-domain in-the-wild data benefits even a controlled studio benchmark.</li>
</ul>

<hr />

<h2 id="10-limitations">10. Limitations</h2>

<ul>
  <li><strong>Detection dependency</strong>: Reconstruction performance directly depends on upstream detection quality; detection failures propagate through the pipeline</li>
  <li><strong>Tight crop requirement</strong>: Optimal performance requires tight crops where the hand is sufficiently contained in the image</li>
  <li><strong>No explicit temporal modeling</strong>: Despite strong temporal coherence, the approach does not explicitly leverage temporal context and may produce errors under rapid motion</li>
  <li><strong>Noisy automatic annotations</strong>: WHIM’s 3D annotations are generated by an automated fitting pipeline and contain more noise than manual annotations</li>
  <li><strong>MANO representation constraints</strong>: Performance degrades on extreme hand deformations or tool manipulation scenarios that fall outside the MANO parameter space</li>
</ul>

<hr />

<h2 id="11-summary">11. Summary</h2>

<p>WiLoR inherits HaMeR’s scaling hypothesis and extends it in two important directions.</p>

<p><strong>First, end-to-end integration.</strong> Detection and reconstruction are unified into a single pipeline, and the detector’s own performance is simultaneously improved. WiLoR-M achieves better hand detection while being 45× faster.</p>

<p><strong>Second, image-aligned refinement.</strong> Going beyond single-pass regression, WiLoR introduces a coarse-to-fine structure that projects initial predictions back into image space and corrects errors using locally aligned features. This design delivers 0.5–0.6mm quantitative gains and, notably, dramatic improvements in temporal coherence.</p>

<p>The WHIM dataset is WiLoR’s hidden infrastructure. The pipeline that constructs 2M+ automatic annotations from 1,400 YouTube videos — with biomechanical constraints embedded in the fitting process to minimize noise — enables the scale of in-the-wild training that makes the performance possible.</p>

<p>Comparing HaMeR and WiLoR:</p>

<table>
  <thead>
    <tr>
      <th> </th>
      <th>HaMeR</th>
      <th>WiLoR</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Reconstruction backbone</td>
      <td>ViT-H</td>
      <td>ViT-L + ViTPose</td>
    </tr>
    <tr>
      <td>Refinement module</td>
      <td>None</td>
      <td>Multi-scale image-aligned</td>
    </tr>
    <tr>
      <td>Detector</td>
      <td>External dependency</td>
      <td>Built-in (WiLoR-Det)</td>
    </tr>
    <tr>
      <td>Training data</td>
      <td>2.7M (10 datasets)</td>
      <td>4.2M (14 datasets)</td>
    </tr>
    <tr>
      <td>FreiHAND PA-MPJPE</td>
      <td>6.0 mm</td>
      <td><strong>5.5 mm</strong></td>
    </tr>
    <tr>
      <td>Temporal coherence (Jitter)</td>
      <td>20.43</td>
      <td><strong>5.92</strong></td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>“From detection through reconstruction as one, then return to the image to correct errors — WiLoR’s next step.”</strong></p>
</blockquote>]]></content><author><name>EHAK</name></author><category term="논문리뷰" /><summary type="html"><![CDATA[Paper review of WiLoR (CVPR 2025). End-to-end 3D hand localization and reconstruction in-the-wild using a Transformer-based architecture.]]></summary></entry><entry xml:lang="ko"><title type="html">[논문리뷰] WiLoR: End-to-end 3D Hand Localization and Reconstruction in-the-wild (CVPR 2025)</title><link href="https://psw1023.github.io/blog/2026/05/25/wilor-paper-review/" rel="alternate" type="text/html" title="[논문리뷰] WiLoR: End-to-end 3D Hand Localization and Reconstruction in-the-wild (CVPR 2025)" /><published>2026-05-25T00:00:00+00:00</published><updated>2026-05-25T00:00:00+00:00</updated><id>https://psw1023.github.io/blog/2026/05/25/wilor-paper-review</id><content type="html" xml:base="https://psw1023.github.io/blog/2026/05/25/wilor-paper-review/"><![CDATA[<blockquote>
  <p><strong>논문:</strong> WiLoR: End-to-end 3D Hand Localization and Reconstruction in-the-wild<br />
<strong>학회:</strong> CVPR 2025<br />
<strong>저자:</strong> Rolandos Alexandros Potamias, Jinglei Zhang, Jiankang Deng, Stefanos Zafeiriou<br />
<strong>소속:</strong> Imperial College London (Potamias, Deng, Zafeiriou), Shanghai Jiao Tong University (Zhang)<br />
<strong>arXiv:</strong> <a href="https://arxiv.org/abs/2409.12259">2409.12259</a><br />
<strong>GitHub:</strong> <a href="https://github.com/rolpotamias/WiLoR">rolpotamias/WiLoR</a></p>
</blockquote>

<hr />

<h2 id="한-줄-요약">한 줄 요약</h2>

<p>실시간 완전 합성곱 손 검출기와 ViT-Large + 다중 스케일 정제 모듈로 구성된 <strong>엔드-투-엔드 3D 손 재건 파이프라인</strong>으로, 200만 개 이상의 in-the-wild 학습 데이터(WHIM)를 활용해 FreiHAND·HO3Dv2 최고 성능과 함께 HaMeR 대비 <strong>2–3배 향상된 시간적 일관성</strong>을 달성.</p>

<hr />

<h2 id="1-배경과-문제-정의">1. 배경과 문제 정의</h2>

<h3 id="기존-방법의-분리된-파이프라인">기존 방법의 분리된 파이프라인</h3>

<p>3D 손 재건 시스템은 전통적으로 두 단계로 분리되어 개발되었다. 먼저 손 검출기가 이미지에서 손 영역을 찾고, 별도의 포즈 추정 모델이 검출된 크롭에서 3D 메시를 복원한다. 이 분리된 접근 방식이 가져오는 문제는 세 가지다.</p>

<ul>
  <li><strong>검출 병목</strong>: 업스트림 검출기의 오탐 또는 미검출이 전체 파이프라인 성능을 제한</li>
  <li><strong>검출 속도</strong>: 기존 손 검출기(ContactHands: 3 FPS)는 실시간 응용에 부적합</li>
  <li><strong>시간적 불일관성</strong>: 단일 프레임 포즈 추정은 비디오에서 프레임 간 떨림 발생</li>
</ul>

<p>또한 기존 방법들은 <strong>초기 MANO 파라미터 추정 후 정제(refinement) 단계가 없어</strong> 이미지-공간 정렬이 부정확하다는 문제가 있다. HaMeR가 단일 쿼리 토큰으로 직접 회귀하는 방식을 택한 것과 달리, WiLoR는 <strong>초기 예측 → 이미지 정렬 특징 기반 잔차 정제</strong> 구조를 도입한다.</p>

<h3 id="wilor의-핵심-제안">WiLoR의 핵심 제안</h3>

<p>WiLoR는 다음 세 가지를 동시에 해결한다.</p>

<ol>
  <li><strong>실시간 손 검출</strong>: 130+ FPS의 완전 합성곱 검출 네트워크</li>
  <li><strong>고정밀 3D 재건</strong>: 다중 스케일 이미지 정렬 정제 모듈을 갖춘 ViT-Large 기반 재건기</li>
  <li><strong>대규모 in-the-wild 데이터</strong>: 200만 개 이상의 자동 주석 데이터셋(WHIM)</li>
</ol>

<hr />

<h2 id="2-출력-표현-mano-손-모델">2. 출력 표현: MANO 손 모델</h2>

<p>WiLoR 역시 파라메트릭 손 모델 <strong>MANO</strong>를 출력 공간으로 사용한다.</p>

<p>MANO 파라미터:</p>
<ul>
  <li><strong>포즈</strong> \(\theta \in \mathbb{R}^{48}\): 손가락 관절 회전 (PCA 기반)</li>
  <li><strong>형태</strong> \(\beta \in \mathbb{R}^{10}\): 개인별 손 형태 변수</li>
  <li><strong>카메라</strong> \(K_{cam}\): weak-perspective 카메라 파라미터</li>
</ul>

<p>최종 출력 \(\{\theta, \beta, K_{cam}\}\)으로부터 778개 꼭짓점 메시 \(V_{3D}\)와 21개 관절 위치 \(J_{3D}\)가 결정론적으로 계산된다.</p>

<hr />

<h2 id="3-아키텍처-개요">3. 아키텍처 개요</h2>

<p>WiLoR는 두 네트워크로 구성된 엔드-투-엔드 파이프라인이다.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>단일 RGB 이미지
    → WiLoR-Det (손 검출 네트워크)
        → 바운딩 박스 + 좌우 레이블
    → 손 크롭 추출
    → WiLoR-Rec (3D 재건 네트워크)
        → 초기 MANO 파라미터 추정 (ViT-L)
        → 정제 모듈 (다중 스케일 이미지 정렬)
        → 최종 MANO 파라미터 (θ, β, K_cam)
        → MANO 레이어 → 3D 메시 + 관절 좌표
</code></pre></div></div>

<hr />

<h2 id="4-손-검출-네트워크-wilor-det">4. 손 검출 네트워크 (WiLoR-Det)</h2>

<h3 id="아키텍처">아키텍처</h3>

<p>WiLoR-Det는 YOLOv8 계열의 실시간 객체 검출 구조를 손 검출에 특화한 모델이다.</p>

<ul>
  <li><strong>백본</strong>: DarkNet — 마지막 세 특징 맵 \(\{C_3, C_4, C_5\}\) 추출</li>
  <li><strong>넥</strong>: PANet (Path Aggregation Network) — 다중 스케일 특징 융합</li>
  <li><strong>헤드</strong>: 세 개의 앵커-프리 검출 헤드 (각 스케일에서 바운딩 박스 + 좌우 레이블 예측)</li>
</ul>

<p>두 가지 크기로 제공된다:</p>
<ul>
  <li><strong>WiLoR-M</strong>: 25 MB, 138 FPS</li>
  <li><strong>WiLoR-S</strong>: 7 MB, 175 FPS</li>
</ul>

<h3 id="검출-손실-함수">검출 손실 함수</h3>

\[\mathcal{L}_{det} = \lambda_0 \mathcal{L}_{BCE} + \lambda_1 \mathcal{L}_{DFL} + \lambda_2 \mathcal{L}_{CIoU} + \lambda_3 \mathcal{L}_{kpts}\]

<table>
  <thead>
    <tr>
      <th>항</th>
      <th>가중치</th>
      <th>역할</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>\(\mathcal{L}_{BCE}\)</td>
      <td>\(\lambda_0 = 0.5\)</td>
      <td>분류 (손 여부 + 좌우)</td>
    </tr>
    <tr>
      <td>\(\mathcal{L}_{DFL}\)</td>
      <td>\(\lambda_1 = 1.5\)</td>
      <td>분포 초점 손실 (박스 좌표 분포 학습)</td>
    </tr>
    <tr>
      <td>\(\mathcal{L}_{CIoU}\)</td>
      <td>\(\lambda_2 = 15\)</td>
      <td>바운딩 박스 형상 회귀</td>
    </tr>
    <tr>
      <td>\(\mathcal{L}_{kpts}\)</td>
      <td>\(\lambda_3 = 10\)</td>
      <td>키포인트 정렬</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="5-3d-손-재건-네트워크-wilor-rec">5. 3D 손 재건 네트워크 (WiLoR-Rec)</h2>

<h3 id="백본-vit-large">백본: ViT-Large</h3>

<ul>
  <li>ViTPose 사전학습 가중치에서 fine-tuning</li>
  <li>은닉 차원 1,280</li>
  <li>이미지 패치 토큰 \(\mathbf{T}_{img}\)와 포즈 \(\theta\), 형태 \(\beta\), 카메라 \(K_{cam}\)에 대한 <strong>학습 가능 토큰</strong> 함께 입력</li>
  <li>ViT 출력 토큰에서 MLP를 통해 초기(coarse) MANO 파라미터 추정</li>
</ul>

<p>HaMeR의 ViT-H 대비 ViT-L를 사용하지만, ViTPose 사전학습 가중치와 정제 모듈로 성능을 보완한다.</p>

<h3 id="정제-모듈-refinement-module">정제 모듈 (Refinement Module)</h3>

<p>WiLoR-Rec의 핵심 차별점이다. 초기 MANO 파라미터만으로 끝나지 않고, 이미지 공간에 정렬된 특징을 추출하여 잔차를 예측한다.</p>

<p><strong>동작 원리:</strong></p>

<ol>
  <li><strong>특징 맵 생성</strong>: ViT 출력 이미지 토큰을 디컨볼루션 레이어로 업샘플링하여 다중 해상도 특징 맵 \(\{F_0, F_1, \ldots, F_n\}\) 생성</li>
  <li><strong>메시 투영</strong>: 초기 추정 카메라 \(K_{cam}\)을 사용해 3D 손 메시의 각 꼭짓점 \(v\)를 이미지 평면에 투영</li>
  <li><strong>이중선형 샘플링</strong>: 투영된 좌표에서 다중 스케일 특징 맵을 이중선형 보간으로 샘플링</li>
</ol>

\[f_v^0 = \pi(v, K_{cam})\]

\[\text{per-vertex feature} = \text{bilinear\_sample}(\{F_i\}, f_v^0)\]

<ol>
  <li><strong>잔차 예측</strong>: 메시 레벨 \(M_l\)의 꼭짓점 특징을 집약하여 포즈와 형태 잔차 계산</li>
</ol>

\[\Delta\beta = \text{MLP}_\beta\left(\bigoplus_{v \in M_l} f_v^0\right), \quad \Delta\theta = \text{MLP}_\theta\left(\bigoplus_{v \in M_l} f_v^0\right)\]

<p>이 설계의 핵심은 <strong>이미지 정렬</strong>이다. 단순히 전역 이미지 특징으로 MANO를 회귀하는 것이 아니라, 추정된 메시 위치에 해당하는 지역 이미지 특징을 직접 참조하여 오차를 교정한다.</p>

<h3 id="재건-손실-함수">재건 손실 함수</h3>

\[\mathcal{L}_{rec} = \lambda_{3D}\mathcal{L}_{3D} + \lambda_{2D}\mathcal{L}_{2D} + \lambda_{pose}\mathcal{L}_{MANO,\theta} + \lambda_{shape}\mathcal{L}_{MANO,\beta} + \mathcal{L}_{adv}\]

<table>
  <thead>
    <tr>
      <th>항</th>
      <th>가중치</th>
      <th>수식</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>\(\mathcal{L}_{3D}\)</td>
      <td>0.05</td>
      <td>\(|V_{3D} - \hat{V}_{3D}|_1\)</td>
    </tr>
    <tr>
      <td>\(\mathcal{L}_{2D}\)</td>
      <td>0.01</td>
      <td>\(|\pi(J_{3D}, K_{cam}) - \hat{J}_{2D}|_1\)</td>
    </tr>
    <tr>
      <td>\(\mathcal{L}_{MANO,\theta}\)</td>
      <td>0.001</td>
      <td>\(|\theta - \hat{\theta}|_2^2\)</td>
    </tr>
    <tr>
      <td>\(\mathcal{L}_{MANO,\beta}\)</td>
      <td>0.0005</td>
      <td>\(|\beta - \hat{\beta}|_2^2\)</td>
    </tr>
    <tr>
      <td>\(\mathcal{L}_{adv}\)</td>
      <td>—</td>
      <td>\(|D(\theta, \beta) - 1|_2\)</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="6-whim-데이터셋">6. WHIM 데이터셋</h2>

<h3 id="동기와-규모">동기와 규모</h3>

<p>기존 in-the-wild 학습 데이터의 핵심 문제는 다양성 부족이다. WiLoR는 이를 해결하기 위해 <strong>WHIM (Wild Hand In-the-wild Monocular)</strong> 데이터셋을 자동 파이프라인으로 구축했다.</p>

<ul>
  <li><strong>규모</strong>: 200만 개 이상의 in-the-wild 손 이미지</li>
  <li><strong>소스</strong>: 1,400개 이상의 YouTube 영상 (수화, 요리, 스포츠, 게임, 에고/엑소센트릭)</li>
  <li><strong>주석</strong>: 2D 바운딩 박스, 좌우 레이블, 3D MANO 파라미터</li>
</ul>

<h3 id="자동-주석-파이프라인">자동 주석 파이프라인</h3>

<p>사람이 직접 주석을 달지 않고 자동화된 피팅 파이프라인으로 3D GT를 생성한다.</p>

<p><strong>1단계 — 인체 검출:</strong></p>
<ul>
  <li>VitPose + AlphaPose로 신뢰도 0.65 이상의 사람 검출</li>
</ul>

<p><strong>2단계 — 손 검출 앙상블:</strong></p>
<ul>
  <li>MediaPipe, OpenPose, ContactHands 세 검출기 앙상블</li>
  <li>검출기 신뢰도 기반 가중 평균으로 바운딩 박스 통합:</li>
</ul>

\[\hat{y} = \frac{\sum_i P(b_i | d_i) \cdot b_i}{\sum_i P(b_i | d_i)}\]

<p><strong>3단계 — 3D MANO 피팅:</strong>
세 가지 손실로 최적화:</p>

<ul>
  <li><strong>재투영 손실</strong>: \(\mathcal{L}_{proj} = \|J_M - \pi(\hat{J}_s, K)\|_1\)</li>
  <li><strong>생체역학 손실</strong>: \(\mathcal{L}_{BMC} = \mathcal{L}_{BL} + \mathcal{L}_{A}\) (뼈 길이 + 관절 각도 제약)</li>
  <li><strong>PCA 사전 손실</strong>: \(\mathcal{L}_{prior} = \|X - [(X - \mu)U^T]U + \mu\|_2\) (자연스러운 손 형태 강제)</li>
</ul>

<p>생체역학 제약을 손실에 명시적으로 포함하여 비물리적 손 자세 생성을 방지한다.</p>

<hr />

<h2 id="7-학습-설정">7. 학습 설정</h2>

<h3 id="검출-모델">검출 모델</h3>

<ul>
  <li>옵티마이저: Adam, 200 에포크 (30 에포크 조기 종료)</li>
  <li>학습률: 0.01 → 1e-6 선형 감소</li>
  <li>하드웨어: RTX 4090 × 2, 배치 크기 256, 3주 학습</li>
  <li>증강: 모자이크 (확률 0.7), 회전 [-60°, 60°], 스케일 [0.5, 1]</li>
</ul>

<h3 id="재건-모델">재건 모델</h3>

<ul>
  <li>옵티마이저: Adam, 1,000 에포크, 학습률 1e-5, 가중치 감쇠 1e-4</li>
  <li>학습 데이터: <strong>14개 데이터셋, 420만 개</strong> 이미지 (기존 방법 대비 55% 이상 증가)</li>
  <li>기존 7개 3D 어노테이션 보유 데이터셋 (FreiHAND, HO-3D, InterHand2.6M 등) + WHIM 포함 7개 추가</li>
</ul>

<hr />

<h2 id="8-실험-결과">8. 실험 결과</h2>

<h3 id="freihand-벤치마크-table-3">FreiHAND 벤치마크 (Table 3)</h3>

<table>
  <thead>
    <tr>
      <th>방법</th>
      <th>PA-MPJPE (mm) ↓</th>
      <th>PA-MPVPE (mm) ↓</th>
      <th>F@5mm ↑</th>
      <th>F@15mm ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>HaMeR</td>
      <td>6.0</td>
      <td>5.7</td>
      <td>0.785</td>
      <td>0.990</td>
    </tr>
    <tr>
      <td><strong>WiLoR</strong></td>
      <td><strong>5.5</strong></td>
      <td><strong>5.1</strong></td>
      <td><strong>0.825</strong></td>
      <td><strong>0.993</strong></td>
    </tr>
  </tbody>
</table>

<p>WiLoR가 FreiHAND 모든 메트릭에서 HaMeR를 상회한다. PA-MPJPE 기준 8.3% 향상, F@5mm 기준 5.1%p 향상.</p>

<h3 id="ho3dv2-벤치마크-table-4">HO3Dv2 벤치마크 (Table 4)</h3>

<table>
  <thead>
    <tr>
      <th>방법</th>
      <th>AUCⱼ ↑</th>
      <th>PA-MPJPE (mm) ↓</th>
      <th>AUCᵥ ↑</th>
      <th>PA-MPVPE (mm) ↓</th>
      <th>F@5mm ↑</th>
      <th>F@15mm ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>HaMeR</td>
      <td>0.846</td>
      <td>7.7</td>
      <td>0.841</td>
      <td>7.9</td>
      <td>0.635</td>
      <td>0.980</td>
    </tr>
    <tr>
      <td><strong>WiLoR</strong></td>
      <td><strong>0.851</strong></td>
      <td><strong>7.5</strong></td>
      <td><strong>0.846</strong></td>
      <td><strong>7.7</strong></td>
      <td><strong>0.646</strong></td>
      <td><strong>0.983</strong></td>
    </tr>
  </tbody>
</table>

<p>손-물체 상호작용 벤치마크에서도 일관된 향상.</p>

<h3 id="손-검출-벤치마크-table-1-coco-기준">손 검출 벤치마크 (Table 1, COCO 기준)</h3>

<table>
  <thead>
    <tr>
      <th>방법</th>
      <th>모델 크기</th>
      <th>FPS ↑</th>
      <th>AP@0.5 ↑</th>
      <th>mAP ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>ContactHands</td>
      <td>819 MB</td>
      <td>3</td>
      <td>50.29</td>
      <td>16.67</td>
    </tr>
    <tr>
      <td>ViTDet</td>
      <td>1,400 MB</td>
      <td>1</td>
      <td>41.64</td>
      <td>13.21</td>
    </tr>
    <tr>
      <td><strong>WiLoR-S</strong></td>
      <td><strong>7 MB</strong></td>
      <td><strong>175</strong></td>
      <td>46.96</td>
      <td>18.56</td>
    </tr>
    <tr>
      <td><strong>WiLoR-M</strong></td>
      <td><strong>25 MB</strong></td>
      <td><strong>138</strong></td>
      <td><strong>62.48</strong></td>
      <td><strong>25.97</strong></td>
    </tr>
  </tbody>
</table>

<p>WiLoR-M은 ContactHands 대비 <strong>45배 빠르고, 32배 작으면서</strong> AP@0.5 기준 12.19%p 높은 성능을 달성한다.</p>

<p>WHIM 테스트셋 기준으로는 WiLoR-M이 AP@0.5 96.06, mAP 53.79을 기록한다.</p>

<h3 id="시간적-일관성-table-6">시간적 일관성 (Table 6)</h3>

<p>프레임별 독립 추론임에도 비디오에서의 시간적 일관성을 측정한 결과:</p>

<table>
  <thead>
    <tr>
      <th>방법</th>
      <th>MPFVE×100 ↓</th>
      <th>MPFJE×100 ↓</th>
      <th>Jitter ↓</th>
      <th>RTE ↓</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>HaMeR</td>
      <td>10.60</td>
      <td>1.768</td>
      <td>20.43</td>
      <td>2.92</td>
    </tr>
    <tr>
      <td><strong>WiLoR</strong></td>
      <td><strong>4.43</strong></td>
      <td><strong>0.762</strong></td>
      <td><strong>5.92</strong></td>
      <td><strong>0.07</strong></td>
    </tr>
  </tbody>
</table>

<p>시간적 스무딩 모듈 없이도 HaMeR 대비 MPFVE 2.4배, Jitter 3.4배 향상. <strong>명시적 시간 모델링 없이 달성된 시간적 일관성</strong>이 주목할 만하다.</p>

<hr />

<h2 id="9-어블레이션">9. 어블레이션</h2>

<h3 id="재건-모델-구성-요소-분석-table-5-freihand-기준">재건 모델 구성 요소 분석 (Table 5, FreiHAND 기준)</h3>

<table>
  <thead>
    <tr>
      <th>구성</th>
      <th>PA-MPJPE (mm) ↓</th>
      <th>PA-MPVPE (mm) ↓</th>
      <th>F@5mm ↑</th>
      <th>F@15mm ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>FastViT 백본 사용</td>
      <td>6.5</td>
      <td>6.3</td>
      <td>0.741</td>
      <td>0.967</td>
    </tr>
    <tr>
      <td>ViTPose 사전학습 미사용</td>
      <td>5.9</td>
      <td>5.7</td>
      <td>0.795</td>
      <td>0.989</td>
    </tr>
    <tr>
      <td>단일 스케일 정제</td>
      <td>6.0</td>
      <td>5.9</td>
      <td>0.793</td>
      <td>0.991</td>
    </tr>
    <tr>
      <td>정제 모듈 없음</td>
      <td>6.1</td>
      <td>5.8</td>
      <td>0.795</td>
      <td>0.991</td>
    </tr>
    <tr>
      <td>FreiHAND 단독 학습</td>
      <td>6.1</td>
      <td>5.8</td>
      <td>0.793</td>
      <td>0.990</td>
    </tr>
    <tr>
      <td><strong>전체 모델 (WiLoR)</strong></td>
      <td><strong>5.5</strong></td>
      <td><strong>5.1</strong></td>
      <td><strong>0.825</strong></td>
      <td><strong>0.993</strong></td>
    </tr>
  </tbody>
</table>

<p>주요 관찰:</p>

<ul>
  <li><strong>백본 선택이 중요</strong>: FastViT 대신 ViT-L 사용 시 PA-MPJPE 1.0mm 향상. 용량 차이가 성능 차이를 만든다.</li>
  <li><strong>ViTPose 사전학습이 핵심</strong>: 일반 ViT-L 가중치 대비 ViTPose 가중치에서 시작하면 0.4mm 추가 향상. 손-신체 포즈 도메인 유사성이 전이 학습에 유리.</li>
  <li><strong>정제 모듈 효과</strong>: 정제 없이는 6.1mm → 정제 추가 시 5.5mm. 이미지 정렬 기반 잔차 예측이 0.6mm 향상 기여.</li>
  <li><strong>다중 스케일의 중요성</strong>: 단일 스케일 정제(6.0mm) 대비 다중 스케일(5.5mm)이 0.5mm 추가 향상.</li>
  <li><strong>WHIM 데이터 기여</strong>: FreiHAND 단독 학습(6.1mm) 대비 전체 데이터(5.5mm)에서 0.6mm 향상. 도메인 외 데이터가 스튜디오 벤치마크에도 도움.</li>
</ul>

<hr />

<h2 id="10-한계점">10. 한계점</h2>

<ul>
  <li><strong>검출 의존성</strong>: 재건 성능이 업스트림 검출 품질에 직접 의존. 검출 실패 또는 오탐 시 재건도 실패</li>
  <li><strong>단단한 크롭 요구</strong>: 최적 성능을 위해 손이 이미지 내에 충분히 포함된 타이트한 크롭 필요</li>
  <li><strong>명시적 시간 모델링 부재</strong>: 비디오에서 시간적 일관성이 우수하나, 명시적 시간 컨텍스트를 활용하지 않아 급격한 움직임에서 오류 가능</li>
  <li><strong>3D GT 자동 생성의 노이즈</strong>: WHIM의 3D 주석은 자동 피팅 파이프라인으로 생성되므로 수동 주석 대비 노이즈 포함</li>
  <li><strong>MANO 표현의 한계</strong>: MANO 파라미터 공간으로 표현 불가능한 극단적 손 변형이나 도구 조작 상황에서 성능 저하</li>
</ul>

<hr />

<h2 id="11-정리">11. 정리</h2>

<p>WiLoR는 HaMeR의 “스케일 가설”을 계승하면서 두 가지 중요한 방향을 추가한다.</p>

<p><strong>첫째, 엔드-투-엔드 통합.</strong> 검출과 재건을 하나의 파이프라인으로 묶고, 검출기 자체의 성능도 동시에 끌어올린다. WiLoR-M은 45배 빠르면서도 더 정확한 손 검출을 달성한다.</p>

<p><strong>둘째, 이미지 정렬 정제.</strong> 단일 포워드 패스 회귀에서 더 나아가, 초기 예측 결과를 이미지에 투영하고 이미지 정렬 특징으로 오차를 보정하는 코스-투-파인 구조를 도입한다. 이 설계가 정량적으로는 0.5–0.6mm의 향상을, 정성적으로는 뛰어난 시간적 일관성을 만들어낸다.</p>

<p>WHIM 데이터셋은 WiLoR의 숨겨진 인프라다. 수작업 주석 없이 1,400개 유튜브 영상에서 200만 개의 자동 주석 데이터를 구축하는 파이프라인은, 생체역학 제약을 피팅 과정에 통합하여 노이즈를 최소화한다.</p>

<p>HaMeR와 WiLoR를 비교하면:</p>

<table>
  <thead>
    <tr>
      <th> </th>
      <th>HaMeR</th>
      <th>WiLoR</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>재건 백본</td>
      <td>ViT-H</td>
      <td>ViT-L + ViTPose</td>
    </tr>
    <tr>
      <td>정제 모듈</td>
      <td>없음</td>
      <td>다중 스케일 이미지 정렬</td>
    </tr>
    <tr>
      <td>검출기</td>
      <td>외부 의존</td>
      <td>내장 (WiLoR-Det)</td>
    </tr>
    <tr>
      <td>학습 데이터</td>
      <td>2.7M (10 datasets)</td>
      <td>4.2M (14 datasets)</td>
    </tr>
    <tr>
      <td>FreiHAND PA-MPJPE</td>
      <td>6.0 mm</td>
      <td><strong>5.5 mm</strong></td>
    </tr>
    <tr>
      <td>시간적 일관성 (Jitter)</td>
      <td>20.43</td>
      <td><strong>5.92</strong></td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><strong>“검출부터 재건까지 통합하고, 이미지로 돌아와 오차를 교정한다 — WiLoR가 보여주는 다음 단계.”</strong></p>
</blockquote>]]></content><author><name>EHAK</name></author><category term="논문리뷰" /><summary type="html"><![CDATA[CVPR 2025 논문 WiLoR 리뷰. End-to-end 방식으로 야생 환경에서 3D 손 위치 탐지 및 재구성을 동시에 수행하는 모델.]]></summary></entry><entry xml:lang="en"><title type="html">[Paper Review] HaMeR: Reconstructing Hands in 3D with Transformers (CVPR 2024)</title><link href="https://psw1023.github.io/blog/2026/05/24/hamer-paper-review-en/" rel="alternate" type="text/html" title="[Paper Review] HaMeR: Reconstructing Hands in 3D with Transformers (CVPR 2024)" /><published>2026-05-24T00:00:00+00:00</published><updated>2026-05-24T00:00:00+00:00</updated><id>https://psw1023.github.io/blog/2026/05/24/hamer-paper-review-en</id><content type="html" xml:base="https://psw1023.github.io/blog/2026/05/24/hamer-paper-review-en/"><![CDATA[<blockquote>
  <p><strong>Paper:</strong> Reconstructing Hands in 3D with Transformers<br />
<strong>Venue:</strong> CVPR 2024<br />
<strong>Authors:</strong> Georgios Pavlakos, Dandan Shan, Ilija Radosavovic, Angjoo Kanazawa, David Fouhey, Jitendra Malik<br />
<strong>Affiliations:</strong> UC Berkeley, NYU<br />
<strong>arXiv:</strong> <a href="https://arxiv.org/abs/2312.05251">2312.05251</a><br />
<strong>GitHub:</strong> <a href="https://github.com/geopavlakos/hamer">geopavlakos/hamer</a></p>
</blockquote>

<hr />

<h2 id="one-line-summary">One-Line Summary</h2>

<p>A fully transformer-based 3D hand mesh recovery model built on a ViT-H backbone and Transformer decoder, achieving 2–3× better in-the-wild generalization over prior methods via 2.7M training examples and a new benchmark (HInt).</p>

<hr />

<h2 id="1-background-and-problem-definition">1. Background and Problem Definition</h2>

<h3 id="monocular-3d-hand-mesh-recovery">Monocular 3D Hand Mesh Recovery</h3>

<p>The task is estimating the full 3D shape and pose of a hand from a single RGB image. Complete hand meshes are a core input for AR/VR, human-computer interaction, robotics, and medical analysis.</p>

<p>Common failure modes of prior methods:</p>

<ul>
  <li><strong>Brittle CNN backbones</strong>: Limited receptive fields and inductive biases cause failure on in-the-wild images</li>
  <li><strong>Small studio datasets</strong>: Training on controlled, small-scale data that does not reflect real environments</li>
  <li><strong>Inability to handle occlusions and interactions</strong>: Performance collapses under hand-hand, hand-object interaction, or heavy occlusion</li>
  <li><strong>Limited diversity</strong>: Robust only to specific skin tones, lighting, and viewpoints</li>
</ul>

<h3 id="scaling-philosophy">Scaling Philosophy</h3>

<p>HaMeR’s approach rests on a simple premise:</p>

<blockquote>
  <p><em>“Recent developments in computer vision and NLP point to the direction where advances are achieved by simple, high capacity models, powered by huge amounts of data.”</em></p>
</blockquote>

<p>Rather than complex architectural design or domain-specific inductive biases, HaMeR tests the hypothesis that <strong>scaling both model capacity and data simultaneously</strong> works for 3D hand reconstruction as well.</p>

<hr />

<h2 id="2-output-representation-mano-hand-model">2. Output Representation: MANO Hand Model</h2>

<p>HaMeR uses <strong>MANO</strong>, a parametric hand model, as its output space.</p>

<p>MANO parameters:</p>
<ul>
  <li><strong>Pose</strong> \(\theta \in \mathbb{R}^{48}\): Finger joint rotations (PCA-based)</li>
  <li><strong>Shape</strong> \(\beta \in \mathbb{R}^{10}\): Per-identity hand shape variables</li>
  <li><strong>Camera</strong> \(\pi\): Weak-perspective camera translation</li>
</ul>

<p>The full output \(\Theta = \{\theta, \beta, \pi\}\) deterministically yields a 778-vertex mesh and 21 joint locations.</p>

<p>Two reasons for using MANO as output: a compact parameter space eases optimization, and only physically plausible hand shapes can be produced.</p>

<hr />

<h2 id="3-architecture">3. Architecture</h2>

<h3 id="full-pipeline">Full Pipeline</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Single RGB image (hand bounding box crop)
    → ViT-H image encoder → patch token sequence
    → Transformer decoder (single query token, cross-attends to all patch tokens)
    → MANO parameter regression (θ, β, π)
    → MANO layer → 3D mesh + joint coordinates
</code></pre></div></div>

<h3 id="vision-transformer-huge-vit-h-backbone">Vision Transformer Huge (ViT-H) Backbone</h3>

<ul>
  <li>Splits the image into fixed-size patches and produces a token sequence</li>
  <li>Global self-attention captures full image context simultaneously</li>
  <li>Fine-tuned from ImageNet-21K pretrained weights</li>
</ul>

<p>The key advantage of ViT-H over CNN backbones is the <strong>global receptive field</strong>. Every layer attends to the full image, making it easier to reason about occluded or truncated hand regions.</p>

<h3 id="transformer-decoder-head">Transformer Decoder Head</h3>

<p>A single <strong>query token</strong> performs cross-attention over all ViT-H output patch tokens. The query aggregates the full image information and regresses MANO parameters.</p>

<p>The design is deliberately simple: a single forward pass produces the final output without iterative refinement or multi-stage regression.</p>

<hr />

<h2 id="4-loss-functions">4. Loss Functions</h2>

<p>Three losses are jointly optimized.</p>

<h3 id="3d-loss-datasets-with-3d-ground-truth">3D Loss (datasets with 3D ground truth)</h3>

\[\mathcal{L}_{3D} = \|\theta - \theta^*\|_2^2 + \|\beta - \beta^*\|_2^2 + \|X - X^*\|_1\]

<p>L2 loss on pose and shape parameters plus L1 loss on 3D joint coordinates.</p>

<h3 id="2d-reprojection-loss">2D Reprojection Loss</h3>

\[\mathcal{L}_{2D} = \|x - x^*\|_1\]

<p>L1 loss between projected 2D joint coordinates and 2D keypoint annotations. Enables training on datasets that have only 2D annotations and no 3D ground truth.</p>

<h3 id="adversarial-loss-for-2d-only-data">Adversarial Loss (for 2D-only data)</h3>

\[\mathcal{L}_{adv} = \sum_k (D_k(\Theta) - 1)^2\]

<p>Three discriminators are used:</p>
<ul>
  <li><strong>Full shape discriminator</strong>: Judges whether the overall MANO parameters correspond to a natural hand</li>
  <li><strong>Full pose discriminator</strong>: Judges the plausibility of the full hand pose</li>
  <li><strong>Per-joint discriminator</strong>: Judges individual finger joint angle naturalness</li>
</ul>

<p>The adversarial loss suppresses unnatural hand poses that arise when training without 3D supervision.</p>

<hr />

<h2 id="5-training-data-scaling">5. Training Data Scaling</h2>

<h3 id="27m-training-examples">2.7M Training Examples</h3>

<p><strong>4×</strong> larger than the FrankMocap baseline. Ten heterogeneous datasets are combined.</p>

<p><strong>Datasets with 3D annotations:</strong></p>

<table>
  <thead>
    <tr>
      <th>Dataset</th>
      <th>Characteristics</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>FreiHAND</td>
      <td>Studio, single hand</td>
    </tr>
    <tr>
      <td>HO-3D</td>
      <td>Hand-object interaction</td>
    </tr>
    <tr>
      <td>MTC (Panoptic Studio)</td>
      <td>Multi-camera capture</td>
    </tr>
    <tr>
      <td>RHD</td>
      <td>Synthetic data</td>
    </tr>
    <tr>
      <td>InterHand2.6M</td>
      <td>Two-hand interaction</td>
    </tr>
    <tr>
      <td>H2O3D</td>
      <td>Hand-object interaction</td>
    </tr>
    <tr>
      <td>DexYCB</td>
      <td>Hand-object manipulation</td>
    </tr>
  </tbody>
</table>

<p><strong>Datasets with 2D annotations only:</strong></p>

<table>
  <thead>
    <tr>
      <th>Dataset</th>
      <th>Characteristics</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>COCO WholeBody</td>
      <td>Natural environments</td>
    </tr>
    <tr>
      <td>Halpe</td>
      <td>Person photography</td>
    </tr>
    <tr>
      <td>MPII NZSL</td>
      <td>Sign language</td>
    </tr>
  </tbody>
</table>

<p>For 2D-only datasets, only the reprojection and adversarial losses are applied — no 3D loss. This allows in-the-wild data that lacks 3D ground truth to contribute to training.</p>

<hr />

<h2 id="6-hint-dataset-a-new-in-the-wild-benchmark">6. HInt Dataset: A New In-the-Wild Benchmark</h2>

<h3 id="limitations-of-existing-benchmarks">Limitations of Existing Benchmarks</h3>

<p>Benchmarks like FreiHAND and HO3Dv2 are collected in controlled environments. They cannot adequately measure generalization to real-world conditions (egocentric video, hand-object interaction, varied lighting).</p>

<h3 id="hint-hand-interactions-in-the-wild">HInt (Hand Interactions in the Wild)</h3>

<p>A new in-the-wild benchmark with <strong>40,400</strong> annotated hands.</p>

<p><strong>Key features:</strong></p>
<ul>
  <li>2D keypoints for 21 joints + <strong>per-keypoint occlusion labels</strong> (first dataset to provide these)</li>
  <li><strong>86.7%</strong> of hands are in contact scenarios</li>
  <li><strong>90.5%</strong> inter-annotator agreement on occlusion labels</li>
  <li><strong>94.6%</strong> of visible keypoints within 0.25× palm length across annotators</li>
</ul>

<p><strong>Three sources:</strong></p>

<table>
  <thead>
    <tr>
      <th>Source</th>
      <th>Count</th>
      <th>Characteristics</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Hands23 (New Days of Hands)</td>
      <td>12.0K</td>
      <td>Third-person, natural environments</td>
    </tr>
    <tr>
      <td>Epic-Kitchens VISOR</td>
      <td>5.3K</td>
      <td>Egocentric, kitchen settings</td>
    </tr>
    <tr>
      <td>Ego4D</td>
      <td>23.2K</td>
      <td>Egocentric, diverse activities</td>
    </tr>
  </tbody>
</table>

<p>Being the first large-scale in-the-wild hand dataset to provide occlusion labels is significant — it enables separate measurement of performance on occluded vs. visible joints.</p>

<hr />

<h2 id="7-experimental-results">7. Experimental Results</h2>

<h3 id="freihand-benchmark-table-1">FreiHAND Benchmark (Table 1)</h3>

<table>
  <thead>
    <tr>
      <th>Method</th>
      <th>PA-MPJPE (mm) ↓</th>
      <th>PA-MPVPE (mm) ↓</th>
      <th>F@5mm ↑</th>
      <th>F@15mm ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>I2L-MeshNet</td>
      <td>7.4</td>
      <td>7.6</td>
      <td>0.681</td>
      <td>0.973</td>
    </tr>
    <tr>
      <td>MobRecon</td>
      <td><strong>5.7</strong></td>
      <td>5.8</td>
      <td>0.784</td>
      <td>0.987</td>
    </tr>
    <tr>
      <td><strong>HaMeR</strong></td>
      <td>6.0</td>
      <td><strong>5.7</strong></td>
      <td><strong>0.785</strong></td>
      <td><strong>0.990</strong></td>
    </tr>
  </tbody>
</table>

<p>HaMeR achieves state-of-the-art on FreiHAND, on par with or marginally above prior methods on this studio benchmark.</p>

<h3 id="ho3dv2-benchmark-table-2">HO3Dv2 Benchmark (Table 2)</h3>

<table>
  <thead>
    <tr>
      <th>Method</th>
      <th>AUCⱼ ↑</th>
      <th>PA-MPJPE (mm) ↓</th>
      <th>AUCᵥ ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>HandOccNet</td>
      <td>0.831</td>
      <td>8.8</td>
      <td>—</td>
    </tr>
    <tr>
      <td>AMVUR</td>
      <td>0.835</td>
      <td>8.3</td>
      <td>0.836</td>
    </tr>
    <tr>
      <td><strong>HaMeR</strong></td>
      <td><strong>0.846</strong></td>
      <td><strong>7.7</strong></td>
      <td><strong>0.841</strong></td>
    </tr>
  </tbody>
</table>

<p>Best on all metrics for HO3Dv2, which includes hand-object interaction.</p>

<h3 id="hint-benchmark-pck005-table-3--core-result">HInt Benchmark: PCK@0.05 (Table 3) — Core Result</h3>

<table>
  <thead>
    <tr>
      <th>Method</th>
      <th>New Days</th>
      <th>VISOR</th>
      <th>Ego4D</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>FrankMocap</td>
      <td>16.1%</td>
      <td>16.8%</td>
      <td>13.1%</td>
    </tr>
    <tr>
      <td>HandOccNet (param)</td>
      <td>9.1%</td>
      <td>8.1%</td>
      <td>7.7%</td>
    </tr>
    <tr>
      <td><strong>HaMeR</strong></td>
      <td><strong>48.0%</strong></td>
      <td><strong>43.0%</strong></td>
      <td><strong>38.9%</strong></td>
    </tr>
  </tbody>
</table>

<p>HaMeR shows <strong>2–3× improvement</strong> over all prior methods on in-the-wild data. This is the paper’s strongest claim.</p>

<p><strong>Breakdown by occlusion status (VISOR):</strong></p>

<table>
  <thead>
    <tr>
      <th>Split</th>
      <th>HaMeR</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Visible joints</td>
      <td>56.6%</td>
    </tr>
    <tr>
      <td>Occluded joints</td>
      <td>25.9%</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="8-ablation-data-scale-vs-model-scale">8. Ablation: Data Scale vs. Model Scale</h2>

<h3 id="independent-contributions-and-synergy-table-5">Independent Contributions and Synergy (Table 5)</h3>

<table>
  <thead>
    <tr>
      <th>Config</th>
      <th>Large Data</th>
      <th>Large Model</th>
      <th>New Days</th>
      <th>VISOR</th>
      <th>Ego4D</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>FrankMocap</td>
      <td>✗</td>
      <td>✗</td>
      <td>16.1%</td>
      <td>16.8%</td>
      <td>13.1%</td>
    </tr>
    <tr>
      <td>Base (ResNet50)</td>
      <td>✗</td>
      <td>✗</td>
      <td>16.9%</td>
      <td>17.5%</td>
      <td>13.9%</td>
    </tr>
    <tr>
      <td>+ Large data only</td>
      <td>✓</td>
      <td>✗</td>
      <td>31.3%</td>
      <td>29.9%</td>
      <td>24.7%</td>
    </tr>
    <tr>
      <td>+ Large model only</td>
      <td>✗</td>
      <td>✓</td>
      <td>25.9%</td>
      <td>24.1%</td>
      <td>19.4%</td>
    </tr>
    <tr>
      <td><strong>HaMeR (both)</strong></td>
      <td>✓</td>
      <td>✓</td>
      <td><strong>48.0%</strong></td>
      <td><strong>43.0%</strong></td>
      <td><strong>38.9%</strong></td>
    </tr>
  </tbody>
</table>

<p>Key observation: large data alone gives +14.4%p, large model alone gives +9.8%p, but together they give <strong>+31.1%p</strong> — a synergistic effect larger than the sum of independent contributions. Data scale and model capacity amplify each other.</p>

<h3 id="effect-of-hint-training-data-table-4">Effect of HInt Training Data (Table 4)</h3>

<p>After fine-tuning with HInt’s training split:</p>

<table>
  <thead>
    <tr>
      <th>Dataset</th>
      <th>Without HInt</th>
      <th>With HInt</th>
      <th>Improvement</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>VISOR (all)</td>
      <td>43.0%</td>
      <td>56.5%</td>
      <td>+13.5%p</td>
    </tr>
    <tr>
      <td>VISOR (visible)</td>
      <td>56.6%</td>
      <td>66.5%</td>
      <td>+9.9%p</td>
    </tr>
    <tr>
      <td>VISOR (occluded)</td>
      <td>25.9%</td>
      <td>42.6%</td>
      <td>+16.7%p</td>
    </tr>
    <tr>
      <td>Ego4D (all)</td>
      <td>38.9%</td>
      <td>46.9%</td>
      <td>+8.0%p</td>
    </tr>
  </tbody>
</table>

<p>The larger gain on occluded joints (+16.7%p) compared to visible joints (+9.9%p) demonstrates that HInt’s occlusion labels directly improve occlusion handling.</p>

<hr />

<h2 id="9-qualitative-generalization">9. Qualitative Generalization</h2>

<p>Scenarios where HaMeR demonstrates robustness:</p>

<ul>
  <li>Egocentric and third-person viewpoints</li>
  <li>Hand-hand and hand-object interactions with occlusion</li>
  <li>Motion blur, diverse lighting conditions</li>
  <li>Diverse skin tones</li>
  <li>Non-standard appearances (gloves, robotic hands, illustrations)</li>
  <li>Temporally smooth video output from per-frame inference (no temporal smoothing applied)</li>
</ul>

<hr />

<h2 id="10-limitations">10. Limitations</h2>

<ul>
  <li><strong>Spurious detections</strong>: False positives from the upstream hand detector propagate through the pipeline</li>
  <li><strong>Left/right classification errors</strong>: Occasional misclassification of hand side</li>
  <li><strong>Extreme poses</strong>: Performance degrades on highly unusual finger configurations</li>
  <li><strong>Severe occlusion</strong>: Improved by HInt training but still challenging under complete occlusion</li>
  <li><strong>No temporal modeling</strong>: Single-frame approach with no explicit temporal consistency</li>
  <li><strong>No 3D GT for in-the-wild data</strong>: Only 2D PCK evaluation is possible; 3D quantification is unavailable in-the-wild</li>
</ul>

<hr />

<h2 id="11-summary">11. Summary</h2>

<p>HaMeR’s central claim is one: <strong>in 3D hand reconstruction, model and data scale matter more than architectural complexity.</strong></p>

<p>Concretely:</p>
<ul>
  <li>A simple pipeline: ViT-H + Transformer decoder</li>
  <li>2.7M training examples from 10 heterogeneous datasets</li>
  <li>A new in-the-wild benchmark, HInt (40.4K hands with occlusion labels)</li>
</ul>

<p>These three elements together produce 2–3× better in-the-wild performance over prior methods. The <strong>synergy between data scale and model capacity</strong> is particularly striking — combining them outperforms the sum of their individual contributions.</p>

<p>HaMeR demonstrates that LLM-style scaling laws hold in the domain of 3D human reconstruction.</p>

<blockquote>
  <p><strong>“Instead of complex inductive biases — a large enough model with enough data. Hand reconstruction is no exception.”</strong></p>
</blockquote>]]></content><author><name>EHAK</name></author><category term="논문리뷰" /><summary type="html"><![CDATA[Paper review of HaMeR (CVPR 2024). A Transformer-based 3D hand reconstruction model trained on large-scale data for accurate in-the-wild hand pose estimation.]]></summary></entry><entry xml:lang="ko"><title type="html">[논문리뷰] HaMeR: Reconstructing Hands in 3D with Transformers (CVPR 2024)</title><link href="https://psw1023.github.io/blog/2026/05/24/hamer-paper-review/" rel="alternate" type="text/html" title="[논문리뷰] HaMeR: Reconstructing Hands in 3D with Transformers (CVPR 2024)" /><published>2026-05-24T00:00:00+00:00</published><updated>2026-05-24T00:00:00+00:00</updated><id>https://psw1023.github.io/blog/2026/05/24/hamer-paper-review</id><content type="html" xml:base="https://psw1023.github.io/blog/2026/05/24/hamer-paper-review/"><![CDATA[<blockquote>
  <p><strong>논문:</strong> Reconstructing Hands in 3D with Transformers<br />
<strong>학회:</strong> CVPR 2024<br />
<strong>저자:</strong> Georgios Pavlakos, Dandan Shan, Ilija Radosavovic, Angjoo Kanazawa, David Fouhey, Jitendra Malik<br />
<strong>소속:</strong> UC Berkeley, NYU<br />
<strong>arXiv:</strong> <a href="https://arxiv.org/abs/2312.05251">2312.05251</a><br />
<strong>GitHub:</strong> <a href="https://github.com/geopavlakos/hamer">geopavlakos/hamer</a></p>
</blockquote>

<hr />

<h2 id="한-줄-요약">한 줄 요약</h2>

<p>ViT-H 백본과 Transformer 디코더로 구성된 <strong>완전 트랜스포머 기반</strong> 3D 손 메시 복원 모델로, 270만 개 학습 데이터와 새로운 in-the-wild 벤치마크(HInt)를 통해 실제 환경에서의 일반화 성능을 기존 대비 2–3배 향상.</p>

<hr />

<h2 id="1-배경과-문제-정의">1. 배경과 문제 정의</h2>

<h3 id="단안-3d-손-재건-monocular-3d-hand-mesh-recovery">단안 3D 손 재건 (Monocular 3D Hand Mesh Recovery)</h3>

<p>단일 RGB 이미지에서 손의 3D 형태와 포즈를 추정하는 문제다. 완성된 손 메시는 AR/VR, 인간-컴퓨터 상호작용, 로보틱스, 의료 분석 등 다양한 응용 분야에서 핵심 입력으로 활용된다.</p>

<p>기존 방법들이 공통적으로 겪는 문제:</p>

<ul>
  <li><strong>취약한 CNN 백본</strong>: 제한된 수용 영역과 归납적 편향으로 in-the-wild 일반화 실패</li>
  <li><strong>소규모 스튜디오 데이터</strong>: 통제된 환경에서 수집된 소량 데이터로 학습 → 실제 환경 미반영</li>
  <li><strong>폐색 및 상호작용 처리 불가</strong>: 손-손, 손-물체 상호작용, 극단적 폐색 상황에서 성능 급락</li>
  <li><strong>제한적 다양성</strong>: 특정 피부색, 조명, 시점에만 강건</li>
</ul>

<h3 id="스케일링의-철학">스케일링의 철학</h3>

<p>HaMeR가 제안하는 접근 방식의 핵심은 단순하다.</p>

<blockquote>
  <p><em>“최근 컴퓨터 비전과 NLP의 발전은 대용량 데이터로 훈련된 단순하고 고용량 모델이 진보를 이끈다는 방향을 제시한다.”</em></p>
</blockquote>

<p>즉, 복잡한 아키텍처 설계나 도메인 특화 귀납 편향 대신, <strong>모델 규모와 데이터 규모를 동시에 키우는 것</strong>이 3D 손 재건에서도 통한다는 가설을 검증한다.</p>

<hr />

<h2 id="2-출력-표현-mano-손-모델">2. 출력 표현: MANO 손 모델</h2>

<p>HaMeR는 파라메트릭 손 모델인 <strong>MANO</strong>를 출력 공간으로 사용한다.</p>

<p>MANO 파라미터:</p>
<ul>
  <li><strong>포즈</strong> \(\theta \in \mathbb{R}^{48}\): 손가락 관절 회전 (PCA 기반)</li>
  <li><strong>형태</strong> \(\beta \in \mathbb{R}^{10}\): 개인별 손 형태 변수</li>
  <li><strong>카메라</strong> \(\pi\): weak-perspective 카메라 이동</li>
</ul>

<p>최종 출력 \(\Theta = \{\theta, \beta, \pi\}\)로부터 778개 꼭짓점 메시와 21개 관절 위치가 결정론적으로 계산된다.</p>

<p>MANO를 출력으로 사용하는 이유는 두 가지다. 첫째, 컴팩트한 파라미터 공간이 학습을 용이하게 한다. 둘째, 물리적으로 타당한 손 형태만 생성된다.</p>

<hr />

<h2 id="3-아키텍처">3. 아키텍처</h2>

<h3 id="전체-파이프라인">전체 파이프라인</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>단일 RGB 이미지 (손 바운딩 박스 크롭)
    → ViT-H 이미지 인코더 → 패치 토큰 시퀀스
    → Transformer 디코더 (단일 쿼리 토큰, 전체 패치 토큰에 cross-attention)
    → MANO 파라미터 회귀 (θ, β, π)
    → MANO 레이어 → 3D 메시 + 관절 좌표
</code></pre></div></div>

<h3 id="vision-transformer-huge-vit-h-백본">Vision Transformer Huge (ViT-H) 백본</h3>

<ul>
  <li>이미지를 고정 크기 패치로 분할하여 토큰 시퀀스 생성</li>
  <li>전역 self-attention으로 이미지 전체 맥락을 동시에 파악</li>
  <li>ImageNet-21K 사전학습 가중치에서 fine-tuning</li>
</ul>

<p>CNN 기반 백본 대비 ViT-H의 핵심 장점은 <strong>전역 수용 영역</strong>이다. 첫 번째 레이어부터 이미지 전체를 참조할 수 있어 폐색이나 가려진 영역의 손 형태를 추론하는 데 유리하다.</p>

<h3 id="transformer-디코더-헤드">Transformer 디코더 헤드</h3>

<p>단일 <strong>쿼리 토큰</strong>이 ViT-H의 모든 출력 패치 토큰에 cross-attention을 수행한다. 쿼리 토큰이 전체 이미지 정보를 집약하여 MANO 파라미터를 회귀한다.</p>

<p>이 설계의 핵심은 단순성이다. 복잡한 다단계 회귀나 반복적 개선 과정 없이, 단일 포워드 패스로 최종 출력을 생성한다.</p>

<hr />

<h2 id="4-손실-함수">4. 손실 함수</h2>

<p>세 가지 손실을 함께 최적화한다.</p>

<h3 id="3d-손실-3d-gt가-있는-데이터셋">3D 손실 (3D GT가 있는 데이터셋)</h3>

\[\mathcal{L}_{3D} = \|\theta - \theta^*\|_2^2 + \|\beta - \beta^*\|_2^2 + \|X - X^*\|_1\]

<p>포즈와 형태 파라미터 L2 오차에 더해, 실제 3D 관절 좌표 L1 오차를 감독 신호로 사용한다.</p>

<h3 id="2d-재투영-손실">2D 재투영 손실</h3>

\[\mathcal{L}_{2D} = \|x - x^*\|_1\]

<p>예측된 3D 관절을 이미지 평면에 투영한 2D 좌표와 정답 2D 키포인트 간의 L1 오차. 3D GT 없이 2D 어노테이션만 가진 데이터셋에서도 학습 가능하게 한다.</p>

<h3 id="적대적-손실-2d-전용-데이터용">적대적 손실 (2D 전용 데이터용)</h3>

\[\mathcal{L}_{adv} = \sum_k (D_k(\Theta) - 1)^2\]

<p>세 종류의 판별자(Discriminator)를 사용한다:</p>
<ul>
  <li><strong>전체 형태 판별자</strong>: 전체 MANO 파라미터가 자연스러운 손인지 판별</li>
  <li><strong>전체 포즈 판별자</strong>: 전체 손 포즈의 자연스러움 판별</li>
  <li><strong>개별 관절 판별자</strong>: 각 손가락 관절 각도의 자연스러움 판별</li>
</ul>

<p>적대적 손실은 3D GT 없이 2D 어노테이션으로만 학습할 때 발생하는 비현실적 손 포즈를 억제하는 역할을 한다.</p>

<hr />

<h2 id="5-학습-데이터-스케일링">5. 학습 데이터 스케일링</h2>

<h3 id="27m-학습-예제">2.7M 학습 예제</h3>

<p>기존 FrankMocap 대비 <strong>4배</strong> 규모. 10개 이종 데이터셋을 혼합하여 사용한다.</p>

<p><strong>3D 어노테이션 보유 데이터셋:</strong></p>

<table>
  <thead>
    <tr>
      <th>데이터셋</th>
      <th>특성</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>FreiHAND</td>
      <td>스튜디오, 단일 손</td>
    </tr>
    <tr>
      <td>HO-3D</td>
      <td>손-물체 상호작용</td>
    </tr>
    <tr>
      <td>MTC (Panoptic Studio)</td>
      <td>다중 카메라</td>
    </tr>
    <tr>
      <td>RHD</td>
      <td>합성 데이터</td>
    </tr>
    <tr>
      <td>InterHand2.6M</td>
      <td>양손 상호작용</td>
    </tr>
    <tr>
      <td>H2O3D</td>
      <td>손-물체 상호작용</td>
    </tr>
    <tr>
      <td>DexYCB</td>
      <td>손-물체 조작</td>
    </tr>
  </tbody>
</table>

<p><strong>2D 어노테이션 전용 데이터셋:</strong></p>

<table>
  <thead>
    <tr>
      <th>데이터셋</th>
      <th>특성</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>COCO WholeBody</td>
      <td>자연스러운 환경</td>
    </tr>
    <tr>
      <td>Halpe</td>
      <td>인물 사진</td>
    </tr>
    <tr>
      <td>MPII NZSL</td>
      <td>수화</td>
    </tr>
  </tbody>
</table>

<p>2D 전용 데이터셋에 대해서는 3D 손실 없이 재투영 손실과 적대적 손실만 적용한다. 이를 통해 3D GT를 구하기 어려운 in-the-wild 데이터도 학습에 활용할 수 있다.</p>

<hr />

<h2 id="6-hint-데이터셋-새로운-in-the-wild-벤치마크">6. HInt 데이터셋: 새로운 In-the-Wild 벤치마크</h2>

<h3 id="기존-벤치마크의-한계">기존 벤치마크의 한계</h3>

<p>FreiHAND, HO3Dv2 같은 기존 벤치마크는 통제된 환경에서 수집된다. 실제 환경(에고센트릭 영상, 손-물체 상호작용, 다양한 조명)에서의 일반화 성능을 측정하기 어렵다.</p>

<h3 id="hint-hand-interactions-in-the-wild">HInt (Hand Interactions in the Wild)</h3>

<p><strong>40,400개</strong> 손 어노테이션으로 구성된 새로운 in-the-wild 벤치마크.</p>

<p><strong>핵심 특징:</strong></p>
<ul>
  <li>21개 관절의 2D 키포인트 + <strong>폐색 레이블</strong> 제공 (최초)</li>
  <li>전체 손의 <strong>86.7%</strong>가 접촉 상황</li>
  <li>어노테이터 간 폐색 레이블 일치율 <strong>90.5%</strong></li>
  <li>가시 키포인트의 <strong>94.6%</strong>가 팜 길이의 0.25배 이내에서 어노테이터 간 일치</li>
</ul>

<p><strong>세 가지 소스:</strong></p>

<table>
  <thead>
    <tr>
      <th>소스</th>
      <th>수량</th>
      <th>특성</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Hands23 (New Days of Hands)</td>
      <td>12.0K</td>
      <td>제3자 시점, 자연스러운 환경</td>
    </tr>
    <tr>
      <td>Epic-Kitchens VISOR</td>
      <td>5.3K</td>
      <td>에고센트릭, 주방 환경</td>
    </tr>
    <tr>
      <td>Ego4D</td>
      <td>23.2K</td>
      <td>에고센트릭, 다양한 활동</td>
    </tr>
  </tbody>
</table>

<p>폐색 레이블을 제공하는 최초의 대규모 in-the-wild 손 데이터셋이라는 점이 중요하다. 이를 통해 폐색 상황에서의 성능을 별도로 측정할 수 있다.</p>

<hr />

<h2 id="7-실험-결과">7. 실험 결과</h2>

<h3 id="freihand-벤치마크-table-1">FreiHAND 벤치마크 (Table 1)</h3>

<table>
  <thead>
    <tr>
      <th>방법</th>
      <th>PA-MPJPE (mm) ↓</th>
      <th>PA-MPVPE (mm) ↓</th>
      <th>F@5mm ↑</th>
      <th>F@15mm ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>I2L-MeshNet</td>
      <td>7.4</td>
      <td>7.6</td>
      <td>0.681</td>
      <td>0.973</td>
    </tr>
    <tr>
      <td>MobRecon</td>
      <td><strong>5.7</strong></td>
      <td>5.8</td>
      <td>0.784</td>
      <td>0.987</td>
    </tr>
    <tr>
      <td><strong>HaMeR</strong></td>
      <td>6.0</td>
      <td><strong>5.7</strong></td>
      <td><strong>0.785</strong></td>
      <td><strong>0.990</strong></td>
    </tr>
  </tbody>
</table>

<p>FreiHAND에서 HaMeR는 전반적으로 최고 수준 성능을 달성한다. 스튜디오 데이터에서는 기존 방법 대비 소폭 우위 혹은 동등 수준이다.</p>

<h3 id="ho3dv2-벤치마크-table-2">HO3Dv2 벤치마크 (Table 2)</h3>

<table>
  <thead>
    <tr>
      <th>방법</th>
      <th>AUCⱼ ↑</th>
      <th>PA-MPJPE (mm) ↓</th>
      <th>AUCᵥ ↑</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>HandOccNet</td>
      <td>0.831</td>
      <td>8.8</td>
      <td>—</td>
    </tr>
    <tr>
      <td>AMVUR</td>
      <td>0.835</td>
      <td>8.3</td>
      <td>0.836</td>
    </tr>
    <tr>
      <td><strong>HaMeR</strong></td>
      <td><strong>0.846</strong></td>
      <td><strong>7.7</strong></td>
      <td><strong>0.841</strong></td>
    </tr>
  </tbody>
</table>

<p>손-물체 상호작용이 포함된 HO3Dv2에서 모든 메트릭에서 최고 성능 달성.</p>

<h3 id="hint-벤치마크-pck005-table-3--핵심-결과">HInt 벤치마크: PCK@0.05 (Table 3) — 핵심 결과</h3>

<table>
  <thead>
    <tr>
      <th>방법</th>
      <th>New Days</th>
      <th>VISOR</th>
      <th>Ego4D</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>FrankMocap</td>
      <td>16.1%</td>
      <td>16.8%</td>
      <td>13.1%</td>
    </tr>
    <tr>
      <td>HandOccNet (param)</td>
      <td>9.1%</td>
      <td>8.1%</td>
      <td>7.7%</td>
    </tr>
    <tr>
      <td><strong>HaMeR</strong></td>
      <td><strong>48.0%</strong></td>
      <td><strong>43.0%</strong></td>
      <td><strong>38.9%</strong></td>
    </tr>
  </tbody>
</table>

<p>HaMeR가 기존 최고 방법 대비 <strong>2–3배</strong> 향상. 이 결과가 HaMeR 논문의 가장 강력한 주장이다.</p>

<p><strong>폐색 여부별 세분화 (VISOR 기준):</strong></p>

<table>
  <thead>
    <tr>
      <th>구분</th>
      <th>HaMeR</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>가시 관절 전체</td>
      <td>56.6%</td>
    </tr>
    <tr>
      <td>폐색 관절 전체</td>
      <td>25.9%</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="8-어블레이션-데이터-스케일-vs-모델-스케일">8. 어블레이션: 데이터 스케일 vs. 모델 스케일</h2>

<h3 id="독립-기여도와-시너지-효과-table-5">독립 기여도와 시너지 효과 (Table 5)</h3>

<table>
  <thead>
    <tr>
      <th>구성</th>
      <th>대용량 데이터</th>
      <th>대용량 모델</th>
      <th>New Days</th>
      <th>VISOR</th>
      <th>Ego4D</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>FrankMocap</td>
      <td>✗</td>
      <td>✗</td>
      <td>16.1%</td>
      <td>16.8%</td>
      <td>13.1%</td>
    </tr>
    <tr>
      <td>Base (ResNet50)</td>
      <td>✗</td>
      <td>✗</td>
      <td>16.9%</td>
      <td>17.5%</td>
      <td>13.9%</td>
    </tr>
    <tr>
      <td>+ 대용량 데이터만</td>
      <td>✓</td>
      <td>✗</td>
      <td>31.3%</td>
      <td>29.9%</td>
      <td>24.7%</td>
    </tr>
    <tr>
      <td>+ 대용량 모델만</td>
      <td>✗</td>
      <td>✓</td>
      <td>25.9%</td>
      <td>24.1%</td>
      <td>19.4%</td>
    </tr>
    <tr>
      <td><strong>HaMeR (둘 다)</strong></td>
      <td>✓</td>
      <td>✓</td>
      <td><strong>48.0%</strong></td>
      <td><strong>43.0%</strong></td>
      <td><strong>38.9%</strong></td>
    </tr>
  </tbody>
</table>

<p>주목할 점: 대용량 데이터만 사용하면 +14.4%p, 대용량 모델만 사용하면 +9.8%p 향상되지만, 둘을 함께 사용하면 <strong>+31.1%p의 시너지 효과</strong>가 나타난다. 데이터 스케일과 모델 규모가 서로를 증폭시키는 관계임을 보여준다.</p>

<h3 id="hint-학습-데이터의-효과-table-4">HInt 학습 데이터의 효과 (Table 4)</h3>

<p>HInt의 학습 분할 데이터를 추가로 fine-tuning했을 때:</p>

<table>
  <thead>
    <tr>
      <th>데이터셋</th>
      <th>HInt 미사용</th>
      <th>HInt 사용</th>
      <th>개선</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>VISOR (전체)</td>
      <td>43.0%</td>
      <td>56.5%</td>
      <td>+13.5%p</td>
    </tr>
    <tr>
      <td>VISOR (가시)</td>
      <td>56.6%</td>
      <td>66.5%</td>
      <td>+9.9%p</td>
    </tr>
    <tr>
      <td>VISOR (폐색)</td>
      <td>25.9%</td>
      <td>42.6%</td>
      <td>+16.7%p</td>
    </tr>
    <tr>
      <td>Ego4D (전체)</td>
      <td>38.9%</td>
      <td>46.9%</td>
      <td>+8.0%p</td>
    </tr>
  </tbody>
</table>

<p>폐색 관절에 대한 향상 폭(+16.7%p)이 가시 관절(+9.9%p)보다 훨씬 크다. HInt의 폐색 레이블이 폐색 처리 능력 향상에 직접적으로 기여함을 보여준다.</p>

<hr />

<h2 id="9-정성적-일반화-능력">9. 정성적 일반화 능력</h2>

<p>HaMeR가 강건성을 보이는 시나리오:</p>

<ul>
  <li>에고센트릭 및 제3자 시점 영상</li>
  <li>손-손, 손-물체 상호작용 및 폐색</li>
  <li>모션 블러, 다양한 조명 환경</li>
  <li>다양한 피부색</li>
  <li>비표준 외관 (장갑, 로봇 손, 삽화 등)</li>
  <li>시간적 스무딩 적용 없이도 비디오에서 부드러운 출력 (프레임 단위 추론)</li>
</ul>

<hr />

<h2 id="10-한계점">10. 한계점</h2>

<ul>
  <li><strong>오탐지</strong>: 업스트림 손 검출기의 false positive가 전체 파이프라인에 영향</li>
  <li><strong>좌우 분류 오류</strong>: 손의 좌/우를 잘못 분류하는 경우 발생</li>
  <li><strong>극단적 포즈</strong>: 매우 비자연스러운 손가락 구성에서 성능 저하</li>
  <li><strong>심각한 폐색</strong>: HInt 학습으로 개선되었으나 완전 폐색 상황에서 여전히 어려움</li>
  <li><strong>시간 모델링 부재</strong>: 단일 프레임 접근으로 명시적 시간적 일관성 없음</li>
  <li><strong>3D GT 부재</strong>: In-the-wild 데이터에 대한 3D 정량 평가 불가 (2D PCK만 가능)</li>
</ul>

<hr />

<h2 id="11-정리">11. 정리</h2>

<p>HaMeR의 핵심 주장은 하나다: <strong>3D 손 재건에서 아키텍처 복잡성보다 모델과 데이터의 규모가 더 중요하다.</strong></p>

<p>구체적으로:</p>
<ul>
  <li>ViT-H + Transformer 디코더라는 단순한 파이프라인</li>
  <li>10개 데이터셋 혼합 2.7M 학습 예제</li>
  <li>새로운 in-the-wild 벤치마크 HInt (40.4K 손, 폐색 레이블 포함)</li>
</ul>

<p>이 세 가지 요소가 결합되어 기존 방법 대비 in-the-wild 환경에서 2–3배 향상을 달성한다. 특히 데이터 스케일과 모델 규모 간의 <strong>시너지 효과</strong>가 인상적이다 — 각각의 기여도를 단순히 더한 것보다 함께 사용했을 때 더 큰 향상이 나타난다.</p>

<p>HaMeR는 LLM 스케일링 법칙이 3D 인간 재건 도메인에서도 유효함을 보여주는 사례다.</p>

<blockquote>
  <p><strong>“복잡한 귀납 편향 대신, 충분히 큰 모델에 충분히 많은 데이터를 — 손 재건도 예외가 아니다.”</strong></p>
</blockquote>]]></content><author><name>EHAK</name></author><category term="논문리뷰" /><summary type="html"><![CDATA[CVPR 2024 논문 HaMeR 리뷰. Transformer 기반 3D 손 재구성 모델로 대규모 데이터 학습을 통해 in-the-wild 환경에서 정확한 손 형상 복원.]]></summary></entry><entry xml:lang="en"><title type="html">[Paper Review] π³: Permutation-Equivariant Visual Geometry Learning (ICLR 2026)</title><link href="https://psw1023.github.io/blog/2026/05/23/pi3-paper-review-en/" rel="alternate" type="text/html" title="[Paper Review] π³: Permutation-Equivariant Visual Geometry Learning (ICLR 2026)" /><published>2026-05-23T00:00:00+00:00</published><updated>2026-05-23T00:00:00+00:00</updated><id>https://psw1023.github.io/blog/2026/05/23/pi3-paper-review-en</id><content type="html" xml:base="https://psw1023.github.io/blog/2026/05/23/pi3-paper-review-en/"><![CDATA[<blockquote>
  <p><strong>Paper:</strong> π³: Permutation-Equivariant Visual Geometry Learning<br />
<strong>Venue:</strong> ICLR 2026<br />
<strong>Authors:</strong> Yifan Wang*, Jianjun Zhou*, Haoyi Zhu, Wenzheng Chang, Yang Zhou, Zizun Li, Junyi Chen, Jiangmiao Pang, Chunhua Shen, Tong He<br />
<strong>Affiliations:</strong> Shanghai Jiao Tong University, Shanghai AI Laboratory, Shanghai Innovation Institute, Zhejiang University, USTC, Fudan University<br />
<strong>arXiv:</strong> <a href="https://arxiv.org/abs/2507.13347">2507.13347</a><br />
<strong>GitHub:</strong> <a href="https://github.com/yyfz/Pi3">yyfz/Pi3</a></p>
</blockquote>

<hr />

<h2 id="one-line-summary">One-Line Summary</h2>

<p>A permutation-equivariant 3D reconstruction model that <strong>completely eliminates the fixed reference view</strong> relied on by prior methods, predicting camera poses and point maps independent of input image ordering.</p>

<hr />

<h2 id="1-background-and-problem-definition">1. Background and Problem Definition</h2>

<h3 id="reference-view-bias">Reference View Bias</h3>

<p>Modern feed-forward 3D reconstruction methods — including DUSt3R, MASt3R, and VGGT — share a common inductive bias: <strong>the first image is used as the anchor (world coordinate origin)</strong>.</p>

<p>This seemingly natural choice creates structural weaknesses:</p>

<ul>
  <li><strong>Order dependence</strong>: Results change with input ordering. A blurry or partially occluded first image destabilizes the entire reconstruction.</li>
  <li><strong>Asymmetric processing</strong>: The reference view receives structural privilege through special tokens or fixed coordinate systems.</li>
  <li><strong>Failure modes</strong>: A suboptimal reference view can cause the entire reconstruction to fail.</li>
</ul>

<p>VGGT fixes the first camera as identity; DUSt3R/MASt3R use explicit reference views during pairwise processing. π³ is the first work to quantify how much this matters.</p>

<p>When the same scene is fed to VGGT with different frame orderings, the standard deviation in reconstruction accuracy reaches <strong>0.033cm</strong>. π³ reduces this to <strong>0.003cm</strong> — 10× more stable.</p>

<h3 id="πs-question">π³’s Question</h3>

<blockquote>
  <p><em>“Can accurate and stable 3D reconstruction be achieved without any reference view?”</em></p>
</blockquote>

<hr />

<h2 id="2-core-idea">2. Core Idea</h2>

<h3 id="permutation-equivariance">Permutation Equivariance</h3>

<p>The central claim of π³ is one mathematical property:</p>

\[f(\sigma(\mathbf{I})) = \sigma(f(\mathbf{I})) \quad \forall \sigma \in S_N\]

<p>Applying any permutation σ to the input image set should yield the same permutation applied to the output — every image is processed identically regardless of its position in the sequence.</p>

<p>Two design choices enforce this:</p>

<ol>
  <li><strong>Affine-Invariant Camera Poses</strong>: Rotation is predicted in SO(3); translation is expressed without a global anchor point, using an affine-invariant representation.</li>
  <li><strong>Scale-Invariant Local Point Maps</strong>: Per-view point maps are predicted in local camera coordinates. Scale ambiguity is absorbed into the invariant representation rather than resolved by a reference frame.</li>
</ol>

<p>Both choices together make the full pipeline permutation-equivariant.</p>

<h3 id="fundamental-differences-from-prior-work">Fundamental Differences from Prior Work</h3>

<table>
  <thead>
    <tr>
      <th>Aspect</th>
      <th>DUSt3R / MASt3R</th>
      <th>VGGT</th>
      <th>π³</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Reference view</td>
      <td>Required (pairwise)</td>
      <td>Required (first = identity)</td>
      <td><strong>None</strong></td>
    </tr>
    <tr>
      <td>Order dependence</td>
      <td>High</td>
      <td>High</td>
      <td><strong>None</strong></td>
    </tr>
    <tr>
      <td>Pose representation</td>
      <td>Absolute coordinates</td>
      <td>Absolute coordinates</td>
      <td><strong>Affine-invariant</strong></td>
    </tr>
    <tr>
      <td>Point map</td>
      <td>World coordinates</td>
      <td>World coordinates</td>
      <td><strong>Scale-invariant local</strong></td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="3-architecture">3. Architecture</h2>

<h3 id="full-pipeline">Full Pipeline</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>N input images (B × N × 3 × H × W)
    → DINOv2 patch encoder → image token sequences
    → Alternating-Attention Transformer (36 layers)
    ├─→ Camera Head    → affine-invariant camera poses (SE(3))
    ├─→ Point Map Head → scale-invariant local point maps
    └─→ Confidence Head → confidence maps
</code></pre></div></div>

<h3 id="alternating-attention-36-layers">Alternating-Attention (36 Layers)</h3>

<p>Similar to VGGT’s structure but with <strong>36 layers instead of 24</strong>, and with all order-dependent components removed:</p>

<ul>
  <li><strong>View-wise Self-Attention</strong>: Tokens within the same image attend to each other. Extracts per-frame spatial features.</li>
  <li><strong>Global Self-Attention</strong>: All tokens across all frames attend to each other. Learns cross-view 3D consistency.</li>
</ul>

<p><strong>Removed elements</strong> (to guarantee permutation equivariance):</p>
<ul>
  <li>Frame index positional embeddings (no order information injected)</li>
  <li>Reference-view special tokens (no reference token exists)</li>
  <li>Cross-attention between views (no asymmetric processing)</li>
</ul>

<h3 id="camera-head">Camera Head</h3>

<p>Predicts SE(3) matrices (4×4) in affine-invariant form. The first frame is NOT fixed as identity; only relative relationships between predicted poses are used as supervision.</p>

<h3 id="point-map-head">Point Map Head</h3>

<p>Predicts 3D points per pixel in <strong>local camera coordinates</strong> — not world coordinates. This is the key: consistency is maintained regardless of which view is “first.”</p>

<h3 id="pi3x-extension-december-2025">Pi3X Extension (December 2025)</h3>

<p>A follow-up release added:</p>
<ul>
  <li><strong>Convolutional Output Head</strong>: Eliminates grid-like artifacts from MLP upsampling</li>
  <li><strong>Conditional inputs</strong>: Optional injection of camera poses, intrinsics, and depth</li>
  <li><strong>Approximate metric scale</strong>: Metric-scale reconstruction capability</li>
</ul>

<hr />

<h2 id="4-training">4. Training</h2>

<h3 id="loss-function">Loss Function</h3>

\[\mathcal{L} = \mathcal{L}_{\text{point}} + \lambda_{\text{normal}} \mathcal{L}_{\text{normal}} + \lambda_{\text{conf}} \mathcal{L}_{\text{conf}} + \lambda_{\text{cam}} \mathcal{L}_{\text{cam}} + \lambda_{\text{trans}} \mathcal{L}_{\text{trans}}\]

<table>
  <thead>
    <tr>
      <th>Loss</th>
      <th>Role</th>
      <th>Weight</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>\(\mathcal{L}_{\text{point}}\)</td>
      <td>Scale-invariant point map L1 (after optimal scale alignment)</td>
      <td>1.0</td>
    </tr>
    <tr>
      <td>\(\mathcal{L}_{\text{normal}}\)</td>
      <td>Surface normal angular error</td>
      <td>1.0</td>
    </tr>
    <tr>
      <td>\(\mathcal{L}_{\text{conf}}\)</td>
      <td>Confidence map BCE</td>
      <td>0.05</td>
    </tr>
    <tr>
      <td>\(\mathcal{L}_{\text{cam}}\)</td>
      <td>Geodesic rotation error</td>
      <td>0.1</td>
    </tr>
    <tr>
      <td>\(\mathcal{L}_{\text{trans}}\)</td>
      <td>Scaled translation error</td>
      <td>100.0</td>
    </tr>
  </tbody>
</table>

<h3 id="two-stage-training">Two-Stage Training</h3>

<table>
  <thead>
    <tr>
      <th>Stage</th>
      <th>Resolution</th>
      <th>GPU</th>
      <th>Notes</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Stage 1</td>
      <td>224×224 fixed</td>
      <td>16× A100</td>
      <td>DINOv2 encoder frozen</td>
    </tr>
    <tr>
      <td>Stage 2</td>
      <td>100K–255K pixels variable</td>
      <td>64× A100</td>
      <td>Full network trained</td>
    </tr>
  </tbody>
</table>

<p>80 epochs per stage, 800 iterations/epoch. Total parameters: <strong>959M</strong> (24% lighter than VGGT’s 1.26B).</p>

<h3 id="training-data-15-datasets">Training Data (15 Datasets)</h3>

<p>CO3D, ScanNet, TartanAir, Habitat, and synthetic renderings spanning indoor, outdoor, and dynamic scenes.</p>

<hr />

<h2 id="5-experimental-results">5. Experimental Results</h2>

<h3 id="camera-pose-estimation">Camera Pose Estimation</h3>

<p><strong>RealEstate10K (Zero-shot):</strong></p>

<table>
  <thead>
    <tr>
      <th>Method</th>
      <th>RTA@30</th>
      <th>AUC@30</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>DUSt3R</td>
      <td>76.1</td>
      <td>67.7</td>
    </tr>
    <tr>
      <td>MASt3R</td>
      <td>—</td>
      <td>76.4</td>
    </tr>
    <tr>
      <td>VGGT</td>
      <td>93.13</td>
      <td>77.62</td>
    </tr>
    <tr>
      <td><strong>π³</strong></td>
      <td><strong>95.62</strong></td>
      <td><strong>85.90</strong></td>
    </tr>
  </tbody>
</table>

<p><strong>Sintel (lower is better):</strong></p>

<table>
  <thead>
    <tr>
      <th>Method</th>
      <th>ATE (↓)</th>
      <th>RPE trans (↓)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>VGGT</td>
      <td>0.167</td>
      <td>0.062</td>
    </tr>
    <tr>
      <td><strong>π³</strong></td>
      <td><strong>0.074</strong></td>
      <td><strong>0.040</strong></td>
    </tr>
  </tbody>
</table>

<p>π³ improves ATE over VGGT by <strong>55% on Sintel</strong>.</p>

<h3 id="point-map-reconstruction">Point Map Reconstruction</h3>

<p><strong>DTU Dataset (cm, lower is better):</strong></p>

<table>
  <thead>
    <tr>
      <th>Method</th>
      <th>Accuracy (↓)</th>
      <th>Completion (↓)</th>
      <th>Normal Consistency (↑)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>DUSt3R</td>
      <td>1.620</td>
      <td>2.241</td>
      <td>0.640</td>
    </tr>
    <tr>
      <td>MASt3R</td>
      <td>1.406</td>
      <td>2.015</td>
      <td>0.662</td>
    </tr>
    <tr>
      <td>VGGT</td>
      <td>1.338</td>
      <td>1.896</td>
      <td>0.676</td>
    </tr>
    <tr>
      <td><strong>π³</strong></td>
      <td><strong>1.198</strong></td>
      <td><strong>1.849</strong></td>
      <td><strong>0.678</strong></td>
    </tr>
  </tbody>
</table>

<p><strong>7-Scenes (Dense Views, cm):</strong></p>

<table>
  <thead>
    <tr>
      <th>Method</th>
      <th>Accuracy (↓)</th>
      <th>Completion (↓)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>VGGT</td>
      <td>0.022</td>
      <td>0.026</td>
    </tr>
    <tr>
      <td><strong>π³</strong></td>
      <td><strong>0.016</strong></td>
      <td><strong>0.022</strong></td>
    </tr>
  </tbody>
</table>

<h3 id="video-depth-estimation--kitti">Video Depth Estimation — KITTI</h3>

<table>
  <thead>
    <tr>
      <th>Metric</th>
      <th>π³</th>
      <th>VGGT</th>
      <th>Gain</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Abs Rel (↓)</td>
      <td><strong>0.037</strong></td>
      <td>0.052</td>
      <td>29%</td>
    </tr>
    <tr>
      <td>δ&lt;1.25 (↑)</td>
      <td><strong>0.986</strong></td>
      <td>0.968</td>
      <td>+1.8%</td>
    </tr>
    <tr>
      <td>FPS (↑)</td>
      <td><strong>57.4</strong></td>
      <td>43.2</td>
      <td>33% faster</td>
    </tr>
    <tr>
      <td>Parameters</td>
      <td><strong>959M</strong></td>
      <td>1.26B</td>
      <td>24% lighter</td>
    </tr>
  </tbody>
</table>

<h3 id="permutation-robustness">Permutation Robustness</h3>

<p>Standard deviation of DTU Accuracy across different frame orderings of the same scene:</p>

<table>
  <thead>
    <tr>
      <th>Method</th>
      <th>std (↓)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>VGGT</td>
      <td>0.033</td>
    </tr>
    <tr>
      <td><strong>π³</strong></td>
      <td><strong>0.003</strong></td>
    </tr>
  </tbody>
</table>

<p><strong>π³ is 10× more stable than VGGT.</strong> This directly validates the permutation-equivariant design.</p>

<hr />

<h2 id="6-comparison-with-vggt">6. Comparison with VGGT</h2>

<table>
  <thead>
    <tr>
      <th>Aspect</th>
      <th>VGGT</th>
      <th>π³</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Architecture</td>
      <td>24-layer alternating attention</td>
      <td><strong>36-layer</strong> alternating attention</td>
    </tr>
    <tr>
      <td>Reference view</td>
      <td>First frame = identity (required)</td>
      <td><strong>None</strong></td>
    </tr>
    <tr>
      <td>Order dependence</td>
      <td>Present (std 0.033)</td>
      <td><strong>None (std 0.003)</strong></td>
    </tr>
    <tr>
      <td>Pose representation</td>
      <td>Absolute coordinates</td>
      <td><strong>Affine-invariant</strong></td>
    </tr>
    <tr>
      <td>Point map</td>
      <td>World coordinates</td>
      <td><strong>Scale-invariant local</strong></td>
    </tr>
    <tr>
      <td>Parameters</td>
      <td>1.26B</td>
      <td><strong>959M</strong></td>
    </tr>
    <tr>
      <td>Inference FPS (KITTI)</td>
      <td>43.2</td>
      <td><strong>57.4</strong></td>
    </tr>
    <tr>
      <td>RealEstate10K AUC@30</td>
      <td>77.62</td>
      <td><strong>85.90</strong></td>
    </tr>
    <tr>
      <td>DTU Accuracy (cm)</td>
      <td>1.338</td>
      <td><strong>1.198</strong></td>
    </tr>
    <tr>
      <td>Sintel ATE</td>
      <td>0.167</td>
      <td><strong>0.074</strong></td>
    </tr>
  </tbody>
</table>

<p>The key takeaway: π³ is <strong>smaller, faster, and more accurate</strong> than VGGT. Removing the reference view bias is the root cause of every improvement.</p>

<hr />

<h2 id="7-ablation-effect-of-affinescale-invariance">7. Ablation: Effect of Affine/Scale Invariance</h2>

<table>
  <thead>
    <tr>
      <th>Model</th>
      <th>ETH3D Acc.</th>
      <th>7-Scenes Acc.</th>
      <th>NRGBD Acc.</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Baseline (no invariance)</td>
      <td>0.229</td>
      <td>0.020</td>
      <td>0.034</td>
    </tr>
    <tr>
      <td>+ Scale-invariant point</td>
      <td>0.197</td>
      <td>0.020</td>
      <td>0.031</td>
    </tr>
    <tr>
      <td>+ Affine-invariant camera (full)</td>
      <td><strong>0.131</strong></td>
      <td><strong>0.019</strong></td>
      <td><strong>0.028</strong></td>
    </tr>
  </tbody>
</table>

<p>Affine-invariant camera modeling is the dominant contributor. Scale-invariant geometry shows pronounced benefits on outdoor datasets, with more modest gains indoors.</p>

<hr />

<h2 id="8-limitations">8. Limitations</h2>

<ul>
  <li><strong>Transparent objects</strong>: Simplified light transport assumptions preclude handling of transparent or reflective surfaces.</li>
  <li><strong>Grid-like artifacts</strong>: MLP-based point cloud upsampling produces visible grid patterns in uncertain regions (partially addressed in Pi3X with convolutional heads).</li>
  <li><strong>Fine-grained detail</strong>: Falls short of diffusion-based reconstruction in high-frequency detail.</li>
  <li><strong>Dynamic scenes</strong>: No explicit handling of non-rigid motion beyond training data diversity.</li>
</ul>

<hr />

<h2 id="9-summary">9. Summary</h2>

<p>π³ answers one question: <strong>“Is a reference view actually necessary?”</strong></p>

<p>The answer is no. Removing the reference view and designing a permutation-equivariant architecture yielded a model that is smaller, faster, and more accurate, with 10× better stability under input reordering.</p>

<blockquote>
  <p><strong>“The reference view was a convenience, not a necessity.”</strong></p>
</blockquote>

<p>If VGGT showed that “processing all views together at once” beats DUSt3R’s pairwise approach, π³ shows that “eliminating the hierarchy among views (reference frame)” is the next step forward.</p>

<p>The inductive biases of 3D reconstruction are being removed one by one. What comes next?</p>]]></content><author><name>EHAK</name></author><category term="논문리뷰" /><summary type="html"><![CDATA[Paper review of π³ (ICLR 2026). A permutation-equivariant model for multi-view visual geometry learning and 3D reconstruction.]]></summary></entry></feed>