{"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/sadrnet-self-aligned-dual-face-regression","title":"SADRNet: Self-Aligned Dual Face Regression Networks for Robust 3D Dense Face Alignment and Reconstruction","arxiv_id":"2106.03021","date":"2021-06-06","proceeding":null,"authors":["Zeyu Ruan","Changqing Zou","Longhai Wu","Gangshan Wu","LiMin Wang"],"abstract":"Three-dimensional face dense alignment and reconstruction in the wild is a challenging problem as partial facial information is commonly missing in occluded and large pose face images. Large head pose variations also increase the solution space and make the modeling more difficult. Our key idea is to model occlusion and pose to decompose this challenging task into several relatively more manageable subtasks. To this end, we propose an end-to-end framework, termed as Self-aligned Dual face Regression Network (SADRNet), which predicts a pose-dependent face, a pose-independent face. They are combined by an occlusion-aware self-alignment to generate the final 3D face. Extensive experiments on two popular benchmarks, AFLW2000-3D and Florence, demonstrate that the proposed method achieves significant superior performance over existing state-of-the-art methods.","url_abs":"https://arxiv.org/abs/2106.03021v1","url_pdf":"https://arxiv.org/pdf/2106.03021v1.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":"sadrnet-self-aligned-dual-face-regression","repo_url":"https://github.com/MCG-NJU/SADRNet","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"3d-face-alignment","task_name":"3D Face Alignment"},{"task_slug":"3d-face-reconstruction","task_name":"3D Face Reconstruction"},{"task_slug":"face-alignment","task_name":"Face Alignment"},{"task_slug":"head-pose-estimation","task_name":"Head Pose Estimation"},{"task_slug":"regression-1","task_name":"regression"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/3d-face-reconstruction-on-aflw2000-3d","task":"3D Face Reconstruction","dataset":"AFLW2000-3D","model":"SADRNet","rank_in_archive_order":1,"of":8,"metrics":{"Mean NME ":"3.25%"},"uses_additional_data":false},{"leaderboard":"/sota/3d-face-reconstruction-on-realy","task":"3D Face Reconstruction","dataset":"REALY","model":"SADRNet","rank_in_archive_order":12,"of":24,"metrics":{"@cheek":"1.856 (±0.701)","@forehead":"2.413 (±0.537)","@mouth":"1.591 (±0.488)","@nose":"1.791 (±0.542)","all":"1.913"},"uses_additional_data":false},{"leaderboard":"/sota/3d-face-reconstruction-on-realy-side-view","task":"3D Face Reconstruction","dataset":"REALY (side-view)","model":"SADRNet","rank_in_archive_order":10,"of":19,"metrics":{"@cheek":"2.010 (±0.715)","@forehead":"2.490 (±0.566)","@mouth":"1.560 (±0.462)","@nose":"1.771 (±0.521)","all":"1.958"},"uses_additional_data":false},{"leaderboard":"/sota/face-alignment-on-aflw2000-3d","task":"Face Alignment","dataset":"AFLW2000-3D","model":"SADRNet","rank_in_archive_order":5,"of":14,"metrics":{"Balanced NME (2D Sparse Alignment)":"3.46%","Mean NME(3D Dense Alignment)":"4.02%"},"uses_additional_data":false},{"leaderboard":"/sota/head-pose-estimation-on-aflw2000","task":"Head Pose Estimation","dataset":"AFLW2000","model":"SADRNet","rank_in_archive_order":8,"of":25,"metrics":{"MAE":"3.82"},"uses_additional_data":false}],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2106.03021","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2106.03021"}},"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/MCG-NJU/SADRNet","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":8},"by_repo_kind":{"official":{"samples":8,"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":"ff87f0db14a18e5c","entry":"channel_scale","repo":"MCG-NJU/SADRNet","repo_kind":"official","path":"src/dataset/augmentation_old.py","file_url":"https://github.com/MCG-NJU/SADRNet/blob/HEAD/src/dataset/augmentation_old.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ff87f0db14a18e5c"}},{"code_sha256_prefix":"b6c31cf344013ce4","entry":"get_rotation_matrix","repo":"MCG-NJU/SADRNet","repo_kind":"official","path":"src/dataset/augmentation_old.py","file_url":"https://github.com/MCG-NJU/SADRNet/blob/HEAD/src/dataset/augmentation_old.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b6c31cf344013ce4"}},{"code_sha256_prefix":"c48552093a96ea39","entry":"get_transform_matrix","repo":"MCG-NJU/SADRNet","repo_kind":"official","path":"src/dataset/base_face.py","file_url":"https://github.com/MCG-NJU/SADRNet/blob/HEAD/src/dataset/base_face.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c48552093a96ea39"}},{"code_sha256_prefix":"86d04ce396c0c982","entry":"img_to_tensor","repo":"MCG-NJU/SADRNet","repo_kind":"official","path":"src/dataset/dataloader.py","file_url":"https://github.com/MCG-NJU/SADRNet/blob/HEAD/src/dataset/dataloader.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"86d04ce396c0c982"}},{"code_sha256_prefix":"ba3946dd94b1462f","entry":"process_uv","repo":"MCG-NJU/SADRNet","repo_kind":"official","path":"src/dataset/uv_face.py","file_url":"https://github.com/MCG-NJU/SADRNet/blob/HEAD/src/dataset/uv_face.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ba3946dd94b1462f"}},{"code_sha256_prefix":"69b3670999139c6d","entry":"read_uv_kpt","repo":"MCG-NJU/SADRNet","repo_kind":"official","path":"src/dataset/uv_face.py","file_url":"https://github.com/MCG-NJU/SADRNet/blob/HEAD/src/dataset/uv_face.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"69b3670999139c6d"}},{"code_sha256_prefix":"8500b27219334599","entry":"rotate_data","repo":"MCG-NJU/SADRNet","repo_kind":"official","path":"src/dataset/augmentation_old.py","file_url":"https://github.com/MCG-NJU/SADRNet/blob/HEAD/src/dataset/augmentation_old.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8500b27219334599"}},{"code_sha256_prefix":"7b324a90aff89670","entry":"uv_map_to_tensor","repo":"MCG-NJU/SADRNet","repo_kind":"official","path":"src/dataset/dataloader.py","file_url":"https://github.com/MCG-NJU/SADRNet/blob/HEAD/src/dataset/dataloader.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7b324a90aff89670"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}