{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/handgcat-occlusion-robust-3d-hand-mesh","title":"HandGCAT: Occlusion-Robust 3D Hand Mesh Reconstruction from Monocular Images","arxiv_id":"2403.07912","date":"2024-02-27","proceeding":null,"authors":["Shuaibing Wang","Shunli Wang","Dingkang Yang","Mingcheng Li","Ziyun Qian","Liuzhen Su","Lihua Zhang"],"abstract":"We propose a robust and accurate method for reconstructing 3D hand mesh from monocular images. This is a very challenging problem, as hands are often severely occluded by objects. Previous works often have disregarded 2D hand pose information, which contains hand prior knowledge that is strongly correlated with occluded regions. Thus, in this work, we propose a novel 3D hand mesh reconstruction network HandGCAT, that can fully exploit hand prior as compensation information to enhance occluded region features. Specifically, we designed the Knowledge-Guided Graph Convolution (KGC) module and the Cross-Attention Transformer (CAT) module. KGC extracts hand prior information from 2D hand pose by graph convolution. CAT fuses hand prior into occluded regions by considering their high correlation. Extensive experiments on popular datasets with challenging hand-object occlusions, such as HO3D v2, HO3D v3, and DexYCB demonstrate that our HandGCAT reaches state-of-the-art performance. The code is available at https://github.com/heartStrive/HandGCAT.","url_abs":"https://arxiv.org/abs/2403.07912v1","url_pdf":"https://arxiv.org/pdf/2403.07912v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"handgcat-occlusion-robust-3d-hand-mesh","repo_url":"https://github.com/heartstrive/handgcat","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[],"methods":[{"method_slug":"absolute-position-encodings","method_name":"Absolute Position Encodings"},{"method_slug":"adam","method_name":"Adam"},{"method_slug":"attention","method_name":"Attention"},{"method_slug":"bpe","method_name":"BPE"},{"method_slug":"convolution","method_name":"Convolution"},{"method_slug":"dense-connections","method_name":"Dense Connections"},{"method_slug":"dropout","method_name":"Dropout"},{"method_slug":"label-smoothing","method_name":"Label Smoothing"},{"method_slug":"layer-normalization","method_name":"Layer Normalization"},{"method_slug":"linear-layer","method_name":"Linear Layer"},{"method_slug":"multi-head-attention","method_name":"Multi-Head Attention"},{"method_slug":"position-wise-feed-forward-layer","method_name":"Position-Wise Feed-Forward Layer"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"transformer","method_name":"Transformer"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2403.07912","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2403.07912"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/heartstrive/handgcat","reach":{"status":"ok"}}],"summary":{"ran":6,"ran_draft_wrong":3},"by_repo_kind":{"official":{"samples":9,"ran":9,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":9,"samples":[{"code_sha256_prefix":"849f989bd754317e","entry":"batch_rodrigues","repo":"heartstrive/handgcat","repo_kind":"official","path":"common/nets/mano_head.py","file_url":"https://github.com/heartstrive/handgcat/blob/HEAD/common/nets/mano_head.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"849f989bd754317e"}},{"code_sha256_prefix":"4711f9277f0b013f","entry":"build_adj","repo":"heartstrive/handgcat","repo_kind":"official","path":"common/nets/graph_utils.py","file_url":"https://github.com/heartstrive/handgcat/blob/HEAD/common/nets/graph_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4711f9277f0b013f"}},{"code_sha256_prefix":"583f9780bdd00a45","entry":"conv3x3","repo":"heartstrive/handgcat","repo_kind":"official","path":"common/nets/backbone.py","file_url":"https://github.com/heartstrive/handgcat/blob/HEAD/common/nets/backbone.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"583f9780bdd00a45"}},{"code_sha256_prefix":"022a99b7b7c271a9","entry":"graph_conv_cheby","repo":"heartstrive/handgcat","repo_kind":"official","path":"common/nets/graph_utils.py","file_url":"https://github.com/heartstrive/handgcat/blob/HEAD/common/nets/graph_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"022a99b7b7c271a9"}},{"code_sha256_prefix":"47f52b03d406c315","entry":"laplacian","repo":"heartstrive/handgcat","repo_kind":"official","path":"common/nets/graph_utils.py","file_url":"https://github.com/heartstrive/handgcat/blob/HEAD/common/nets/graph_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"47f52b03d406c315"}},{"code_sha256_prefix":"7abfa32a2f1d7424","entry":"logsumexp_2d","repo":"heartstrive/handgcat","repo_kind":"official","path":"common/nets/cbam.py","file_url":"https://github.com/heartstrive/handgcat/blob/HEAD/common/nets/cbam.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7abfa32a2f1d7424"}},{"code_sha256_prefix":"40dc9f5943418548","entry":"quat2aa","repo":"heartstrive/handgcat","repo_kind":"official","path":"common/nets/mano_head.py","file_url":"https://github.com/heartstrive/handgcat/blob/HEAD/common/nets/mano_head.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"40dc9f5943418548"}},{"code_sha256_prefix":"be0f652ebe3d9098","entry":"quat2mat","repo":"heartstrive/handgcat","repo_kind":"official","path":"common/nets/mano_head.py","file_url":"https://github.com/heartstrive/handgcat/blob/HEAD/common/nets/mano_head.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"be0f652ebe3d9098"}},{"code_sha256_prefix":"44f94971456665a3","entry":"resnet50","repo":"heartstrive/handgcat","repo_kind":"official","path":"common/nets/backbone.py","file_url":"https://github.com/heartstrive/handgcat/blob/HEAD/common/nets/backbone.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"44f94971456665a3"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}