{"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/ikol-inverse-kinematics-optimization-layer","title":"IKOL: Inverse kinematics optimization layer for 3D human pose and shape estimation via Gauss-Newton differentiation","arxiv_id":"2302.01058","date":"2023-02-02","proceeding":null,"authors":["Juze Zhang","Ye Shi","Yuexin Ma","Lan Xu","Jingyi Yu","Jingya Wang"],"abstract":"This paper presents an inverse kinematic optimization layer (IKOL) for 3D human pose and shape estimation that leverages the strength of both optimization- and regression-based methods within an end-to-end framework. IKOL involves a nonconvex optimization that establishes an implicit mapping from an image's 3D keypoints and body shapes to the relative body-part rotations. The 3D keypoints and the body shapes are the inputs and the relative body-part rotations are the solutions. However, this procedure is implicit and hard to make differentiable. So, to overcome this issue, we designed a Gauss-Newton differentiation (GN-Diff) procedure to differentiate IKOL. GN-Diff iteratively linearizes the nonconvex objective function to obtain Gauss-Newton directions with closed form solutions. Then, an automatic differentiation procedure is directly applied to generate a Jacobian matrix for end-to-end training. Notably, the GN-Diff procedure works fast because it does not rely on a time-consuming implicit differentiation procedure. The twist rotation and shape parameters are learned from the neural networks and, as a result, IKOL has a much lower computational overhead than most existing optimization-based methods. Additionally, compared to existing regression-based methods, IKOL provides a more accurate mesh-image correspondence. This is because it iteratively reduces the distance between the keypoints and also enhances the reliability of the pose structures. Extensive experiments demonstrate the superiority of our proposed framework over a wide range of 3D human pose and shape estimation methods.","url_abs":"https://arxiv.org/abs/2302.01058v2","url_pdf":"https://arxiv.org/pdf/2302.01058v2.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":"ikol-inverse-kinematics-optimization-layer","repo_url":"https://github.com/juzezhang/ikol","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"3d-human-pose-estimation","task_name":"3D Human Pose Estimation"},{"task_slug":"3d-human-pose-and-shape-estimation","task_name":"3D human pose and shape estimation"},{"task_slug":"regression-1","task_name":"regression"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/3d-human-pose-estimation-on-3dpw","task":"3D Human Pose Estimation","dataset":"3DPW","model":"IKOL","rank_in_archive_order":28,"of":119,"metrics":{"MPJPE":"71.1","MPVPE":"84.1","PA-MPJPE":"44.5"},"uses_additional_data":false},{"leaderboard":"/sota/3d-human-pose-estimation-on-mpi-inf-3dhp","task":"3D Human Pose Estimation","dataset":"MPI-INF-3DHP","model":"IKOL","rank_in_archive_order":45,"of":108,"metrics":{"AUC":"48.1","MPJPE":"88.8","PCK":"87.9"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2302.01058","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2302.01058"}},"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/juzezhang/ikol","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"deterministic:regex_extraction","url":"https://github.com/Juzezhang/IKOL","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":7},"by_repo_kind":{"official":{"samples":7,"ran":0,"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":"7a9043e33d67fc2d","entry":"compute_similarity_transform","repo":"Juzezhang/IKOL","repo_kind":"official","path":"ikol/core/evaluation/mesh_eval.py","file_url":"https://github.com/Juzezhang/IKOL/blob/HEAD/ikol/core/evaluation/mesh_eval.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":"7a9043e33d67fc2d"}},{"code_sha256_prefix":"a34a91ed922317b3","entry":"keypoint_accel_error","repo":"Juzezhang/IKOL","repo_kind":"official","path":"ikol/core/evaluation/eval_utils.py","file_url":"https://github.com/Juzezhang/IKOL/blob/HEAD/ikol/core/evaluation/eval_utils.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":"a34a91ed922317b3"}},{"code_sha256_prefix":"70b980eea5c0c4af","entry":"keypoint_mpjpe","repo":"Juzezhang/IKOL","repo_kind":"official","path":"ikol/core/evaluation/eval_utils.py","file_url":"https://github.com/Juzezhang/IKOL/blob/HEAD/ikol/core/evaluation/eval_utils.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":"70b980eea5c0c4af"}},{"code_sha256_prefix":"a828d7ddc0f76aac","entry":"norm_heatmap","repo":"Juzezhang/IKOL","repo_kind":"official","path":"ikol/models/IKOL24.py","file_url":"https://github.com/Juzezhang/IKOL/blob/HEAD/ikol/models/IKOL24.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":"a828d7ddc0f76aac"}},{"code_sha256_prefix":"ff9bfb70377fb976","entry":"vertice_pve","repo":"Juzezhang/IKOL","repo_kind":"official","path":"ikol/core/evaluation/eval_utils.py","file_url":"https://github.com/Juzezhang/IKOL/blob/HEAD/ikol/core/evaluation/eval_utils.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":"ff9bfb70377fb976"}},{"code_sha256_prefix":"ec26782c7a888141","entry":"vis_keypoints","repo":"Juzezhang/IKOL","repo_kind":"official","path":"ikol/models/IKOL24.py","file_url":"https://github.com/Juzezhang/IKOL/blob/HEAD/ikol/models/IKOL24.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":"ec26782c7a888141"}},{"code_sha256_prefix":"3b94245b39283e5c","entry":"weighted_l1_loss","repo":"Juzezhang/IKOL","repo_kind":"official","path":"ikol/models/criterion.py","file_url":"https://github.com/Juzezhang/IKOL/blob/HEAD/ikol/models/criterion.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":"3b94245b39283e5c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}