[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-hawor-hand-motion-mano-params-zh":3,"article-related-hawor-hand-motion-mano-params-zh":30,"series-research-b67223ce-e3cb-4161-9df6-b384e364eb87":73},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":22,"views":26,"created_at":27,"published_at":28,"topic_cluster_id":29},"b67223ce-e3cb-4161-9df6-b384e364eb87","hawor-hand-motion-mano-params-zh","HaWoR 把手部重建收斂成 MANO","\u003Cp data-speakable=\"summary\">HaWoR 把手部重建收斂成 MANO 參數預測，重點不是網格，而是輸出契約。\u003C\u002Fp>\u003Cp>我看手部重建 pipeline 看久了，最煩的就是大家嘴上都說「重建手」，實際上每個人心裡想的東西根本不同。有人在想 3D mesh，有人在想關節點，有人在想相機座標，還有人把 temporal smoothing 包一包就當自己解完了。我自己也踩過這種坑：模型接好了、影片跑得動、demo 也能轉，但一遇到遮擋、側手、手指交疊，整個輸出就開始像在亂猜。最讓我火大的是，很多時候不是模型不行，是你一開始就選錯表示法，後面再多補丁都只是補洞。\u003C\u002Fp>\u003Cp>這次讓我停下來重看一遍的，是這篇 \u003Ca href=\"https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F2052772139519026722\">Zhihu 上的 HaWoR 解讀\u003C\u002Fa>。它沒有把事情講得很花俏，反而直接把核心丟出來：這類方法最後都繞回 \u003Ca href=\"https:\u002F\u002Fmano.is.tue.mpg.de\u002F\">MANO\u003C\u002Fa>。我覺得這種講法很實在，因為它把「看起來很複雜的手重建」拉回到一個很乾脆的問題：你到底是在預測什麼輸出？\u003C\u002Fp>\u003Ch2>先別盯著 mesh，看你到底在預測什麼\u003C\u002Fh2>\u003Cblockquote>MANO（Model of Articulated and Non-rigid deformations）是手部重建領域最常用的參數化模型，很多方法最後都在預測 MANO 參數。\u003C\u002Fblockquote>\u003Cp>白話翻譯一下就是：大多數手部重建系統不是在憑空生出一個自由形狀的手網格，而是在預測一組 MANO 參數，再讓 MANO 把手 mesh 解碼出來。這差很多。前者像叫模型自己畫一隻手，後者像叫模型填表格，表格填對了，手自然長出來。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782705793656-d9q2.png\" alt=\"HaWoR 把手部重建收斂成 MANO\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>我以前很愛直接看 vertex error，覺得數字最誠實。後來才發現這招很容易把自己搞瘋。因為你根本不知道誤差是來自 pose、shape，還是 camera transform。等你改成看 MANO pose、shape、global transform，問題就變得可拆了。這不是學術上的優雅，這是工程上的省命。\u003C\u002Fp>\u003Cp>如果你要抓原始脈絡，MANO 官方頁面 \u003Ca href=\"https:\u002F\u002Fmano.is.tue.mpg.de\u002F\">mano.is.tue.mpg.de\u003C\u002Fa> 還是最直接的入口；如果你想看它\u003Ca href=\"\u002Fnews\u002Fanthropic-965b-valuation-ai-stocks-exposure-zh\">怎麼\u003C\u002Fa>被包進更大的身體模型系統裡，\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvchoutas\u002Fsmplx\">SMPL-X\u003C\u002Fa> 也很值得翻。這兩個連起來看，你會更明白為什麼很多方法最後都不是在「發明新手」，而是在「對齊同一個手模型接口」。\u003C\u002Fp>\u003Cp>實操上我會這樣做：先把模型輸出寫死成 pose、shape、transform 三塊，再去談 renderer 和 evaluation。不要先讓模型吐 mesh，然後再回頭猜它到底錯在哪。那樣 debug 會很痛苦，而且常常痛錯地方。\u003C\u002Fp>\u003Cul>\u003Cli>Pose 負責手指怎麼彎。\u003C\u002Fli>\u003Cli>Shape 負責這個人的手長什麼樣。\u003C\u002Fli>\u003Cli>Transform 負責手在畫面或世界座標裡在哪裡。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>MANO 其實是大家默默遵守的合約\u003C\u002Fh2>\u003Cp>我看 \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2302.08027\">HaMeR\u003C\u002Fa> 這類方法時，最有感的不是它 backbone 多漂亮，而是它們都在同一個輸出格式裡玩。這就是 MANO 的價值：它不是單純的\u003Ca href=\"\u002Fnews\u002Fmistral-ocr-4-citation-ready-structured-output-zh\">資料\u003C\u002Fa>格式，它是一張大家都默認簽過的合約。你只要說自己輸出 MANO，後面的 fitting、rendering、evaluation、跨方法比較，整套就有了共同語言。\u003C\u002Fp>\u003Cp>翻譯一下就是：如果你今天做一個手重建系統，輸出是 mesh、另一個方法輸出是 joint、第三個方法輸出是 MANO parameter，然後你還想把三個東西直接比，這根本是在自找麻煩。不是不能比，是你在比三種不同世界的東西。很多團隊卡住，不是因為模型不夠強，是因為 output contract 根本沒先談好。\u003C\u002Fp>\u003Cp>我自己以前也做過類似的事：前端 demo 看起來很順，後端卻要接一堆轉換腳本，最後每次改模型都像在拆地雷。後來我學乖了，先把 representation 固定，再來談 architecture。這樣至少測試、視覺化、離線分析都能共用同一條管線，不會每個人都發明自己的手語。\u003C\u002Fp>\u003Cp>實操寫法很簡單：如果 MANO 是 final output，就讓 evaluation 直接吃 MANO；如果 MANO 只是 internal representation，就把轉換步驟寫清楚，別藏在某個神秘 utility 裡。你越早把這個接口講明白，後面越少人半夜在 log 裡找手指漂移的原因。\u003C\u002Fp>\u003Cul>\u003Cli>用 MANO 的好處是跨論文、跨資料集比較方便。\u003C\u002Fli>\u003Cli>用 MANO 的代價是你得接受它的表達範圍。\u003C\u002Fli>\u003Cli>把 MANO 藏太深，只會讓除錯變成猜謎。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>HaWoR 真正在意的是 motion，不是表面細節\u003C\u002Fh2>\u003Cp>HaWoR 的重點其實就寫在名字裡：world-space hand motion reconstruction。也就是說，它關心的是手在世界座標裡怎麼動，不是只看某一幀裡這隻手長得漂不漂亮。這個差別很大。因為一旦你把任務定義成 motion reconstruction，你就不能只盯單幀幾何，還得處理跨時間的穩定性、軌跡連續性、以及遮擋時的合理補全。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782705801716-gq06.png\" alt=\"HaWoR 把手部重建收斂成 MANO\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>我以前碰過那種只看單幀的系統，demo 時超順，影片一拉長就開始抖。手一離開畫面中心，或手掌轉個角度，模型就像突然失憶。那種感覺很像你以為自己在做 3D，結果其實只是把 2D 假裝成 3D。HaWoR 這種 framing 比較誠實，因為它直接承認：你要先把 motion 站穩，mesh 才有意義。\u003C\u002Fp>\u003Cp>白話翻譯一下就是：世界座標的重建是在追求時間上的一致性。手從左邊移到右邊，不應該每一幀都像重新抽一次籤。MANO 在這裡的作用不是神奇魔法，而是把形狀空間收窄，讓模型可以把算力花在 motion 上，而不是每幀都重新發明一隻手。\u003C\u002Fp>\u003Cp>實操上我會把問題拆兩層：第一層先解「手在哪裡、怎麼移動」，第二層再解「這隻手長什麼樣」。你如果一開始就把 motion 和 shape 全混在一起，最後很難知道到底是 drift、scale error，還是 pose 崩掉。拆開之後，問題會老實很多。\u003C\u002Fp>\u003Cp>如果你想看更廣的手部追蹤工具鏈，我會順手翻 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fhand_tracking_toolkit\">Facebook Research 的 hand tracking toolkit\u003C\u002Fa>。不是因為它跟 HaWoR 一樣，而是因為同樣的 representation tradeoff 到處都在重演，早點看別人的坑比較省事。\u003C\u002Fp>\u003Ch2>真正值錢的不是模型，是 prior\u003C\u002Fh2>\u003Cp>很多人講 hand reconstruction，愛講「更準的預測」。我反而覺得真正值錢的是 prior。MANO 的本質就是把解空間收起來，告訴模型哪些手是合理的、哪些手一看就不對勁。這件事很土，但很有用。沒有 prior，你的模型可以在訓練集上看起來很漂亮，一遇到遮擋或分佈偏移就開始扭成奇怪形狀。\u003C\u002Fp>\u003Cp>我吃過這種虧：數值指標看起來不差，render 出來卻像手指被橡皮筋拉歪。後來我才懂，低 error 不代表低荒謬。MANO 這種 prior 的價值，就是至少把模型拉回「看起來像手」的範圍。不是完美，是比較不丟臉。\u003C\u002Fp>\u003Cp>也就是說，MANO 不只是輸出格式，它還在做 regularization。它逼模型留在一個學過的 hand manifold 裡面。代價也很明顯：如果你要處理很極端的手勢、厚手套、複雜物體互動，MANO 不一定夠用。這不是它壞掉，是它本來就不是為了無限制表達所有手部狀態設計的。\u003C\u002Fp>\u003Cp>實操寫法我會這樣定：評估時不要只看 vertex error，還要看三件事，第一是遮擋下的合理性，第二是 finger ordering 有沒有亂掉，第三是 temporal smoothness 有沒有崩。這三個比單一數字更接近你在意的真實效果。\u003C\u002Fp>\u003Cp>相關參考我會一起放著：\u003Ca href=\"https:\u002F\u002Fmano.is.tue.mpg.de\u002F\">MANO 官方頁\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvchoutas\u002Fsmplx\">SMPL-X repo\u003C\u002Fa>，還有 \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2302.08027\">HaMeR\u003C\u002Fa>，因為它們都在同一條方法論上，只是包裝方式不同。\u003C\u002Fp>\u003Ch2>架構可以吵，輸出空間不能亂\u003C\u002Fh2>\u003Cp>我現在看手部重建論文，最先問的不是 backbone 是什麼，而是 output space 是什麼。因為架構可以後補，輸出空間選錯，整個系統就會一直怪。你今天堆 transformer、明天加 temporal module、後天再來一層 attention，結果如果你根本沒定義好要預測什麼，最後也只是把錯誤包裝得比較精緻。\u003C\u002Fp>\u003Cp>翻譯一下就是：很多所謂的「方法優化」，其實只是建立在一個比較穩的 representation 上。HaWoR 這篇讓我覺得有價值的地方，不是它講了多少新招，而是它提醒你：手部重建最核心的不是把像素變成像素，而是把影像訊息轉成一組能被解碼、能被比較、能被 debug 的結構化參數。\u003C\u002Fp>\u003Cp>我之前做過一個 prototype，中心手看起來很漂亮，側手直接炸裂。後來回頭看，問題不完全在模型，而是在我們把幾何問題硬當成影像回歸問題。等我把輸出改成 structured hand model，很多 bug 反而一眼就能看出來。這就是 representation 的力量：它讓錯誤變得可見。\u003C\u002Fp>\u003Cp>實操上我建議你在碰 architecture 之前，先在白板上寫三個問題：這個輸出能不能表達我在意的 motion？我能不能很乾淨地評估它？我能不能把它 render 回人眼看得懂的東西？如果其中一題答不出來，先別急著加層數，先修 representation。\u003C\u002Fp>\u003Ch2>我會怎麼把這套直接抄進自己的 pipeline\u003C\u002Fh2>\u003Cp>如果是我今天重做一個 hand reconstruction 系統，我不會先發明自己的 mesh head。那條路很容易把時間浪費在 representation bug 上，最後還以為是模型不夠大。我的做法會很保守：先用 MANO 當輸出契約，把 world-space motion 定義清楚，再來談 backbone 要多花俏。\u003C\u002Fp>\u003Cp>白話翻譯一下就是：把該 boring 的地方弄 boring。network 可以很 fancy，但輸出 contract 不要亂。模型負責預測 MANO parameters，renderer 負責把它變回 mesh，evaluation 負責檢查 motion consistency 和 plausibility。這樣整個系統才不會變成一堆彼此不認識的 post-process 腳本。\u003C\u002Fp>\u003Cp>實操寫法我會要求幾件事：一份 config 明確寫 pose dim、shape dim、transform；validation 時一定存 MANO parameters；rendering pipeline 要固定；debug 時先看參數，再看 mesh，最後才看影片。這順序很重要，因為你要先知道數字哪裡歪，再去看畫面為什麼歪。\u003C\u002Fp>\u003Cp>我還是要吐槽\u003Ca href=\"\u002Fnews\u002Fopenmontage-one-prompt-to-full-video-zh\">一句\u003C\u002Fa>：很多 demo 都太會騙人了。手看起來動得很順，不代表 representation 是對的。只要你把輸出空間定穩，很多看似神秘的問題，其實都只是參數沒有對齊。\u003C\u002Fp>\u003Ch2>可抄的模板\u003C\u002Fh2>\u003Cpre>\u003Ccode># Hand reconstruction pipeline using MANO as the output contract\n\n## Goal\nReconstruct hand motion in world space while keeping the final output in MANO parameters.\n\n## Representation\n- Pose: MANO pose parameters\n- Shape: MANO shape coefficients\n- Transform: camera or world-space hand transform\n- Mesh: decoded from MANO only for visualization and evaluation\n\n## Design rules\n1. Predict structured parameters, not raw vertices.\n2. Keep world-space motion explicit.\n3. Render every validation run back into a mesh.\n4. Debug pose, shape, and transform separately.\n5. Treat MANO as the interface between the network and the rest of the pipeline.\n\n## Practical checklist\n- [ ] Load the official MANO model\n- [ ] Confirm pose dimensions match your implementation\n- [ ] Confirm shape coefficients are stable across frames\n- [ ] Verify world-space motion does not drift\n- [ ] Compare rendered meshes frame by frame\n- [ ] Check plausibility under occlusion and side views\n\n## Minimal pseudo-config\nmodel:\n  output_representation: mano\n  pose_dim: &lt;set_from_mano&gt;\n  shape_dim: &lt;set_from_mano&gt;\n  space: world\n\ntraining:\n  supervise_pose: true\n  supervise_shape: true\n  supervise_transform: true\n  render_validation_meshes: true\n\n## Debug workflow\n1. Inspect MANO parameters first.\n2. Render the mesh second.\n3. Check temporal consistency third.\n4. Only then tune the backbone.\n\n## Copy note\nThis template is my practical rewrite based on the HaWoR Zhihu post and the MANO model it references.\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>這篇的原始觸發點是 \u003Ca href=\"https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F2052772139519026722\">HaWoR: World-Space Hand Motion Reconstruction\u003C\u002Fa> 這篇 Zhihu 文章。上面對 MANO、representation、debug workflow 的整理，是我根據原文延伸出的實作版，不是逐字搬運。\u003C\u002Fp>","我拆 HaWoR 之後，只剩一個重點：它不是在猜手的網格，而是在預測 MANO 參數，整個 pipeline 會乾淨很多。","zhuanlan.zhihu.com","https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F2052772139519026722",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782705793656-d9q2.png","research","zh","ce859659-0b28-456b-8641-63f6d4c47cf9",[17,18,19,20,21],"HaWoR","MANO","hand reconstruction","world-space motion","representation",[23,24,25],"手部重建的核心不是 mesh 本身，而是先選對輸出表示法。","MANO 不只是模型格式，它是大家共享的輸出契約與先驗。","把 motion、shape、transform 拆開，debug 會比盯著 vertex 更有效。",0,"2026-06-29T04:02:46.420535+00:00","2026-06-29T04:02:46.408+00:00","0c35a120-52fc-41fc-afa3-d404eb934158",{"tags":31,"relatedLang":32,"relatedPosts":36},[],{"id":15,"slug":33,"title":34,"language":35},"hawor-hand-motion-mano-params-en","HaWoR turns hand motion into MANO params","en",[37,43,49,55,61,67],{"id":38,"slug":39,"title":40,"cover_image":41,"image_url":41,"created_at":42,"category":13},"6f5be102-5764-44f1-ab3f-722fc5c32c23","google-deepmind-turns-science-into-tools-zh","Google DeepMind把AI變研究工具","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782721105628-g4op.png","2026-06-29T08:17:57.716568+00:00",{"id":44,"slug":45,"title":46,"cover_image":47,"image_url":47,"created_at":48,"category":13},"c649adb7-c8ae-4ade-a092-2c0d53beeb71","measuring-llm-behavior-portability-zh","LLM 行為不一定可移植","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782717472977-na8g.png","2026-06-29T07:17:29.597679+00:00",{"id":50,"slug":51,"title":52,"cover_image":53,"image_url":53,"created_at":54,"category":13},"637c3016-e364-4bfe-904e-5e60a18ed678","prompt-injection-ai-security-problem-zh","Prompt injection 已是 AI 資安問題","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782716580916-m1nm.png","2026-06-29T07:02:36.173749+00:00",{"id":56,"slug":57,"title":58,"cover_image":59,"image_url":59,"created_at":60,"category":13},"118680f5-6212-4535-986a-50c4a0e71699","solver-choice-nash-equilibrium-selection-zh","求解器會改變納許均衡","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782714784181-t42d.png","2026-06-29T06:32:31.062308+00:00",{"id":62,"slug":63,"title":64,"cover_image":65,"image_url":65,"created_at":66,"category":13},"f303e5bb-372c-48f6-bfc3-f7a73a1e678b","proper-positive-only-learning-characterization-zh","正向樣本學習的完整界線","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782713880760-9ang.png","2026-06-29T06:17:33.749889+00:00",{"id":68,"slug":69,"title":70,"cover_image":71,"image_url":71,"created_at":72,"category":13},"89159fcf-2fbb-4b72-9e05-7928e609a925","dexcompose-reuses-dexterous-policies-across-tasks-zh","DexCompose 讓手部技能可重用","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782712975186-mj1e.png","2026-06-29T06:02:28.144402+00:00",[74,79,84,89,94,99,104,109,114,119],{"id":75,"slug":76,"title":77,"created_at":78},"f18dbadb-8c59-4723-84a4-6ad22746c77a","deepmind-bets-on-continuous-learning-ai-2026-zh","DeepMind 押注 2026 連續學習 AI","2026-03-26T08:16:02.367355+00:00",{"id":80,"slug":81,"title":82,"created_at":83},"f4a106cb-02a6-4508-8f39-9720a0a93cee","ml-papers-of-the-week-github-research-desk-zh","每週 ML 論文清單，為何紅到 GitHub","2026-03-27T01:11:39.284175+00:00",{"id":85,"slug":86,"title":87,"created_at":88},"c4f807ca-4e5f-47f1-a48c-961cf3fc44dc","ai-ml-conferences-to-watch-in-2026-zh","2026 AI 研討會投稿時程整理","2026-03-27T01:51:53.874432+00:00",{"id":90,"slug":91,"title":92,"created_at":93},"cf046742-efb2-4753-aef9-caed5da5e32e","adaptive-block-scaled-data-types-zh","IF4：神經網路量化的聰明選擇","2026-03-31T06:00:36.990273+00:00",{"id":95,"slug":96,"title":97,"created_at":98},"53a0dc54-0371-4e40-8d5e-74e94a73840c","geometry-aware-similarity-metrics-for-neural-representations-zh","超越距離測量：用微分幾何重新理解神經網路","2026-03-31T06:01:01.241968+00:00",{"id":100,"slug":101,"title":102,"created_at":103},"fee7d472-a775-4b1d-bbc2-1e8bca1bbf8b","on-the-fly-repulsion-in-the-contextual-space-for-rich-divers-zh","讓AI繪圖更有創意：用排斥力提升生成多樣性","2026-03-31T06:01:25.439673+00:00",{"id":105,"slug":106,"title":107,"created_at":108},"a9901203-d69b-447b-8854-15d14eab32b4","vision-aided-beam-prediction-cnn-eca-zh","影像輔助波束預測升級 CNN","2026-04-01T10:00:25.8073+00:00",{"id":110,"slug":111,"title":112,"created_at":113},"b55e7dd4-0a24-4b3d-804d-b0309a03f498","triple-band-fss-mimo-antenna-sub-6-ghz-zh","三頻 FSS MIMO 天線瞄準 sub-6 GHz","2026-04-01T13:18:36.857305+00:00",{"id":115,"slug":116,"title":117,"created_at":118},"f68290bd-e7f3-4b30-ba22-dcd4e0130a66","openclaw-1299-repos-eight-weeks-analysis-zh","OpenClaw 1299 個 Repo 的資料解讀","2026-04-02T05:03:45.208411+00:00",{"id":120,"slug":121,"title":122,"created_at":123},"ed9f80eb-eb02-4d35-8ad4-0ddf428751dd","beam-coherence-aware-combining-mmwave-mimo-zh","毫米波 MIMO 的雙階合併法","2026-04-02T05:27:26.897188+00:00"]