{"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/a-dual-augmentor-framework-for-domain","title":"A Dual-Augmentor Framework for Domain Generalization in 3D Human Pose Estimation","arxiv_id":"2403.11310","date":"2024-03-17","proceeding":"CVPR 2024 1","authors":["Qucheng Peng","Ce Zheng","Chen Chen"],"abstract":"3D human pose data collected in controlled laboratory settings present challenges for pose estimators that generalize across diverse scenarios. To address this, domain generalization is employed. Current methodologies in domain generalization for 3D human pose estimation typically utilize adversarial training to generate synthetic poses for training. Nonetheless, these approaches exhibit several limitations. First, the lack of prior information about the target domain complicates the application of suitable augmentation through a single pose augmentor, affecting generalization on target domains. Moreover, adversarial training's discriminator tends to enforce similarity between source and synthesized poses, impeding the exploration of out-of-source distributions. Furthermore, the pose estimator's optimization is not exposed to domain shifts, limiting its overall generalization ability. To address these limitations, we propose a novel framework featuring two pose augmentors: the weak and the strong augmentors. Our framework employs differential strategies for generation and discrimination processes, facilitating the preservation of knowledge related to source poses and the exploration of out-of-source distributions without prior information about target poses. Besides, we leverage meta-optimization to simulate domain shifts in the optimization process of the pose estimator, thereby improving its generalization ability. Our proposed approach significantly outperforms existing methods, as demonstrated through comprehensive experiments on various benchmark datasets.Our code will be released at \\url{https://github.com/davidpengucf/DAF-DG}.","url_abs":"https://arxiv.org/abs/2403.11310v2","url_pdf":"https://arxiv.org/pdf/2403.11310v2.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":"a-dual-augmentor-framework-for-domain","repo_url":"https://github.com/davidpengucf/daf-dg","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"3d-human-pose-estimation","task_name":"3D Human Pose Estimation"},{"task_slug":"domain-generalization","task_name":"Domain Generalization"},{"task_slug":"pose-estimation","task_name":"Pose Estimation"},{"task_slug":"weakly-supervised-3d-human-pose-estimation","task_name":"Weakly-supervised 3D Human Pose Estimation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/weakly-supervised-3d-human-pose-estimation-on","task":"Weakly-supervised 3D Human Pose Estimation","dataset":"Human3.6M","model":"DAF-DG-27frames","rank_in_archive_order":2,"of":33,"metrics":{"3D Annotations":"S1","Average MPJPE (mm)":"44.1","Number of Frames Per View":"27","Number of Views":"1"},"uses_additional_data":false},{"leaderboard":"/sota/weakly-supervised-3d-human-pose-estimation-on","task":"Weakly-supervised 3D Human Pose Estimation","dataset":"Human3.6M","model":"DAF-DG","rank_in_archive_order":4,"of":33,"metrics":{"3D Annotations":"S1","Average MPJPE (mm)":"50.3","Number of Frames Per View":"1","Number of Views":"1"},"uses_additional_data":false}],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2403.11310","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2403.11310"}},"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":"deterministic:regex_extraction","url":"https://github.com/davidpengucf/DAF-DG","reach":{"status":"ok"}}],"summary":{"ran":2,"unverified":3},"by_repo_kind":{"official":{"samples":5,"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":5,"samples":[{"code_sha256_prefix":"3afb541a8147d123","entry":"mpjpe","repo":"davidpengucf/DAF-DG","repo_kind":"official","path":"utils/loss.py","file_url":"https://github.com/davidpengucf/DAF-DG/blob/HEAD/utils/loss.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":"3afb541a8147d123"}},{"code_sha256_prefix":"a99352873ad3ae37","entry":"mpjpe_byjoint","repo":"davidpengucf/DAF-DG","repo_kind":"official","path":"utils/loss.py","file_url":"https://github.com/davidpengucf/DAF-DG/blob/HEAD/utils/loss.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":"a99352873ad3ae37"}},{"code_sha256_prefix":"7669d6b1ce1e7096","entry":"image_coordinates","repo":"davidpengucf/DAF-DG","repo_kind":"official","path":"common/camera.py","file_url":"https://github.com/davidpengucf/DAF-DG/blob/HEAD/common/camera.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7669d6b1ce1e7096"}},{"code_sha256_prefix":"82baf6aa4fb040a1","entry":"normalize_screen_coordinates","repo":"davidpengucf/DAF-DG","repo_kind":"official","path":"common/camera.py","file_url":"https://github.com/davidpengucf/DAF-DG/blob/HEAD/common/camera.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"82baf6aa4fb040a1"}},{"code_sha256_prefix":"6dd3ba892d9349d8","entry":"weighted_mpjpe","repo":"davidpengucf/DAF-DG","repo_kind":"official","path":"utils/loss.py","file_url":"https://github.com/davidpengucf/DAF-DG/blob/HEAD/utils/loss.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6dd3ba892d9349d8"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}