{"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/a2j-anchor-to-joint-regression-network-for-3d","title":"A2J: Anchor-to-Joint Regression Network for 3D Articulated Pose Estimation from a Single Depth Image","arxiv_id":"1908.09999","date":"2019-08-27","proceeding":"ICCV 2019 10","authors":["Fu Xiong","Boshen Zhang","Yang Xiao","Zhiguo Cao","Taidong Yu","Joey Tianyi Zhou","Junsong Yuan"],"abstract":"For 3D hand and body pose estimation task in depth image, a novel anchor-based approach termed Anchor-to-Joint regression network (A2J) with the end-to-end learning ability is proposed. Within A2J, anchor points able to capture global-local spatial context information are densely set on depth image as local regressors for the joints. They contribute to predict the positions of the joints in ensemble way to enhance generalization ability. The proposed 3D articulated pose estimation paradigm is different from the state-of-the-art encoder-decoder based FCN, 3D CNN and point-set based manners. To discover informative anchor points towards certain joint, anchor proposal procedure is also proposed for A2J. Meanwhile 2D CNN (i.e., ResNet-50) is used as backbone network to drive A2J, without using time-consuming 3D convolutional or deconvolutional layers. The experiments on 3 hand datasets and 2 body datasets verify A2J's superiority. Meanwhile, A2J is of high running speed around 100 FPS on single NVIDIA 1080Ti GPU.","url_abs":"https://arxiv.org/abs/1908.09999v1","url_pdf":"https://arxiv.org/pdf/1908.09999v1.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":"a2j-anchor-to-joint-regression-network-for-3d","repo_url":"https://github.com/zhangboshen/A2J","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"a2j-anchor-to-joint-regression-network-for-3d","repo_url":"https://github.com/bo-zhang-cs/CACNet-Pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"3d-pose-estimation","task_name":"3D Pose Estimation"},{"task_slug":"decoder","task_name":"Decoder"},{"task_slug":"depth-estimation","task_name":"Depth Estimation"},{"task_slug":null,"task_name":"GPU"},{"task_slug":"hand-pose-estimation","task_name":"Hand Pose Estimation"},{"task_slug":"pose-estimation","task_name":"Pose Estimation"}],"methods":[{"method_slug":"convolution","method_name":"Convolution"},{"method_slug":"fcn","method_name":"FCN"},{"method_slug":"max-pooling","method_name":"Max Pooling"},{"method_slug":"speed","method_name":"SPEED"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/3d-pose-estimation-on-k2hpd","task":"3D Pose Estimation","dataset":"K2HPD","model":"A2J","rank_in_archive_order":1,"of":1,"metrics":{"FPS":"93.78"},"uses_additional_data":false},{"leaderboard":"/sota/depth-estimation-on-nyu-depth-v2","task":"Depth Estimation","dataset":"NYU-Depth V2","model":"A2J","rank_in_archive_order":17,"of":17,"metrics":{"mAP":"8.61"},"uses_additional_data":false},{"leaderboard":"/sota/hand-pose-estimation-on-hands-2017","task":"Hand Pose Estimation","dataset":"HANDS 2017","model":"A2J","rank_in_archive_order":3,"of":9,"metrics":{"Average 3D Error":"8.57"},"uses_additional_data":false},{"leaderboard":"/sota/hand-pose-estimation-on-icvl-hands","task":"Hand Pose Estimation","dataset":"ICVL Hands","model":"A2J","rank_in_archive_order":9,"of":15,"metrics":{"Average 3D Error":"6.461","FPS":"105.06"},"uses_additional_data":false},{"leaderboard":"/sota/hand-pose-estimation-on-k2hpd","task":"Hand Pose Estimation","dataset":"K2HPD","model":"A2J","rank_in_archive_order":1,"of":1,"metrics":{"PDJ@5mm":"76.3"},"uses_additional_data":false},{"leaderboard":"/sota/hand-pose-estimation-on-nyu-hands","task":"Hand Pose Estimation","dataset":"NYU Hands","model":"A2J","rank_in_archive_order":9,"of":17,"metrics":{"Average 3D Error":"8.61","FPS":"105.06"},"uses_additional_data":false},{"leaderboard":"/sota/pose-estimation-on-itop-front-view","task":"Pose Estimation","dataset":"ITOP front-view","model":"A2J","rank_in_archive_order":5,"of":7,"metrics":{"Mean mAP":"88.0"},"uses_additional_data":false}],"syntology":{"syntology_url":"https://syntology.ai/paper/1908.09999","atlas_url":"https://app.syntology.ai/?focus=1908.09999","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1908.09999"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/bo-zhang-cs/CACNet-Pytorch","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/zhangboshen/A2J","reach":null}],"summary":{"ran":2,"ran_fixture":6,"unverified":1},"by_repo_kind":{"official":{"samples":6,"ran":6,"repositories":1},"listed":{"samples":3,"ran":2,"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":0,"samples":[{"code_sha256_prefix":"bb3c1b55b1637a8c","entry":"generate_anchors","repo":"bo-zhang-cs/CACNet-Pytorch","repo_kind":"listed","path":"CACNet.py","file_url":"https://github.com/bo-zhang-cs/CACNet-Pytorch/blob/HEAD/CACNet.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"bb3c1b55b1637a8c"}},{"code_sha256_prefix":"040d92a92b91bba4","entry":"pixel2world","repo":"zhangboshen/A2J","repo_kind":"official","path":"src/hands2017.py","file_url":"https://github.com/zhangboshen/A2J/blob/HEAD/src/hands2017.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"040d92a92b91bba4"}},{"code_sha256_prefix":"cc10e1b8037e9967","entry":"pixel2world","repo":"zhangboshen/A2J","repo_kind":"official","path":"src/nyu.py","file_url":"https://github.com/zhangboshen/A2J/blob/HEAD/src/nyu.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"cc10e1b8037e9967"}},{"code_sha256_prefix":"806361daca45ffd7","entry":"pixel2world","repo":"zhangboshen/A2J","repo_kind":"official","path":"src/icvl.py","file_url":"https://github.com/zhangboshen/A2J/blob/HEAD/src/icvl.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"806361daca45ffd7"}},{"code_sha256_prefix":"e6e5c583560a04b3","entry":"rescale_bbox","repo":"bo-zhang-cs/CACNet-Pytorch","repo_kind":"listed","path":"Cropping_dataset.py","file_url":"https://github.com/bo-zhang-cs/CACNet-Pytorch/blob/HEAD/Cropping_dataset.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e6e5c583560a04b3"}},{"code_sha256_prefix":"fa0aecbc15dfc1b2","entry":"world2pixel","repo":"zhangboshen/A2J","repo_kind":"official","path":"src/hands2017.py","file_url":"https://github.com/zhangboshen/A2J/blob/HEAD/src/hands2017.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fa0aecbc15dfc1b2"}},{"code_sha256_prefix":"f14c24a9b48287f6","entry":"world2pixel","repo":"zhangboshen/A2J","repo_kind":"official","path":"src/nyu.py","file_url":"https://github.com/zhangboshen/A2J/blob/HEAD/src/nyu.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f14c24a9b48287f6"}},{"code_sha256_prefix":"023b8783def26837","entry":"world2pixel","repo":"zhangboshen/A2J","repo_kind":"official","path":"src/icvl.py","file_url":"https://github.com/zhangboshen/A2J/blob/HEAD/src/icvl.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"023b8783def26837"}},{"code_sha256_prefix":"5c866a97bb0ce1d9","entry":"shift","repo":"bo-zhang-cs/CACNet-Pytorch","repo_kind":"listed","path":"CACNet.py","file_url":"https://github.com/bo-zhang-cs/CACNet-Pytorch/blob/HEAD/CACNet.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5c866a97bb0ce1d9"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}