{"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/how-far-are-we-from-solving-the-2d-3d-face","title":"How far are we from solving the 2D & 3D Face Alignment problem? (and a dataset of 230,000 3D facial landmarks)","arxiv_id":"1703.07332","date":"2017-03-21","proceeding":"ICCV 2017 10","authors":["Adrian Bulat","Georgios Tzimiropoulos"],"abstract":"This paper investigates how far a very deep neural network is from attaining\nclose to saturating performance on existing 2D and 3D face alignment datasets.\nTo this end, we make the following 5 contributions: (a) we construct, for the\nfirst time, a very strong baseline by combining a state-of-the-art architecture\nfor landmark localization with a state-of-the-art residual block, train it on a\nvery large yet synthetically expanded 2D facial landmark dataset and finally\nevaluate it on all other 2D facial landmark datasets. (b) We create a guided by\n2D landmarks network which converts 2D landmark annotations to 3D and unifies\nall existing datasets, leading to the creation of LS3D-W, the largest and most\nchallenging 3D facial landmark dataset to date ~230,000 images. (c) Following\nthat, we train a neural network for 3D face alignment and evaluate it on the\nnewly introduced LS3D-W. (d) We further look into the effect of all\n\"traditional\" factors affecting face alignment performance like large pose,\ninitialization and resolution, and introduce a \"new\" one, namely the size of\nthe network. (e) We show that both 2D and 3D face alignment networks achieve\nperformance of remarkable accuracy which is probably close to saturating the\ndatasets used. Training and testing code as well as the dataset can be\ndownloaded from https://www.adrianbulat.com/face-alignment/","url_abs":"http://arxiv.org/abs/1703.07332v3","url_pdf":"http://arxiv.org/pdf/1703.07332v3.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":"how-far-are-we-from-solving-the-2d-3d-face","repo_url":"https://github.com/1adrianb/face-alignment","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"BSD-3-Clause"}},{"paper_slug":"how-far-are-we-from-solving-the-2d-3d-face","repo_url":"https://github.com/GuohongLi/face-alignment-pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"BSD-3-Clause"}},{"paper_slug":"how-far-are-we-from-solving-the-2d-3d-face","repo_url":"https://github.com/hzh8311/pyhowfar","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"how-far-are-we-from-solving-the-2d-3d-face","repo_url":"https://github.com/jkvt2/Latent-Pose-Descriptors","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"unanswered"}},{"paper_slug":"how-far-are-we-from-solving-the-2d-3d-face","repo_url":"https://github.com/lippman1125/pytorch_FAN","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"how-far-are-we-from-solving-the-2d-3d-face","repo_url":"https://github.com/tanmaysingha/2D-3D-FAN","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"how-far-are-we-from-solving-the-2d-3d-face","repo_url":"https://github.com/1adrianb/2D-and-3D-face-alignment","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"torch","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"how-far-are-we-from-solving-the-2d-3d-face","repo_url":"https://github.com/1adrianb/face-alignment-training","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"torch","reach":{"status":"ok","spdx":"NOASSERTION"}}],"tasks":[{"task_slug":"3d-face-alignment","task_name":"3D Face Alignment"},{"task_slug":"face-alignment","task_name":"Face Alignment"},{"task_slug":"head-pose-estimation","task_name":"Head Pose Estimation"}],"methods":[],"datasets_introduced":[{"slug":"ls3d-w","name":"LS3D-W","full_name":""}],"methods_introduced":[],"results":[{"leaderboard":"/sota/face-alignment-on-300-vw-c-1","task":"Face Alignment","dataset":"300-VW (C)","model":"2D-FAN","rank_in_archive_order":1,"of":1,"metrics":{"AUC0.07":"64.1%"},"uses_additional_data":false},{"leaderboard":"/sota/face-alignment-on-300w-split-2-300w-lp","task":"Face Alignment","dataset":"300W Split 2 (300W-LP)","model":"2D-FAN","rank_in_archive_order":4,"of":4,"metrics":{"AUC@7 (bbox)":"66.5","NME (bbox)":"2.32"},"uses_additional_data":false},{"leaderboard":"/sota/face-alignment-on-cofw-68-300wlp","task":"Face Alignment","dataset":"COFW-68 (300WLP)","model":"2D-FAN","rank_in_archive_order":4,"of":4,"metrics":{"AUC@7":"57.5","NME (box)":"2.95"},"uses_additional_data":false},{"leaderboard":"/sota/face-alignment-on-ls3d-w-balanced-1","task":"Face Alignment","dataset":"LS3D-W Balanced","model":"3D-FAN","rank_in_archive_order":1,"of":1,"metrics":{"AUC0.07":"72.3%"},"uses_additional_data":false},{"leaderboard":"/sota/head-pose-estimation-on-aflw2000","task":"Head Pose Estimation","dataset":"AFLW2000","model":"FAN (12 points)","rank_in_archive_order":24,"of":25,"metrics":{"MAE":" 9.116"},"uses_additional_data":false},{"leaderboard":"/sota/head-pose-estimation-on-biwi","task":"Head Pose Estimation","dataset":"BIWI","model":"FAN (12 points)","rank_in_archive_order":19,"of":29,"metrics":{"MAE (trained with other data)":"7.882"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1703.07332","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1703.07332"}},"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/lippman1125/pytorch_FAN","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/tanmaysingha/2D-3D-FAN","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/GuohongLi/face-alignment-pytorch","reach":{"status":"ok","spdx":"BSD-3-Clause"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/1adrianb/face-alignment","reach":{"status":"ok","spdx":"BSD-3-Clause"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/hzh8311/pyhowfar","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/1adrianb/face-alignment-training","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/jkvt2/Latent-Pose-Descriptors","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/1adrianb/2D-and-3D-face-alignment","reach":{"status":"ok","spdx":"NOASSERTION"}}],"summary":{"ran_draft_wrong":4,"unverified":11},"by_repo_kind":{"official":{"samples":13,"ran":3,"repositories":1},"listed":{"samples":2,"ran":1,"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":"fac5364e2f53c6db","entry":"conv3x3","repo":"GuohongLi/face-alignment-pytorch","repo_kind":"listed","path":"models/resnet.py","file_url":"https://github.com/GuohongLi/face-alignment-pytorch/blob/HEAD/models/resnet.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":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"fac5364e2f53c6db"}},{"code_sha256_prefix":"5baaa8c1b148ef70","entry":"conv3x3","repo":"1adrianb/face-alignment","repo_kind":"official","path":"face_alignment/models/fan.py","file_url":"https://github.com/1adrianb/face-alignment/blob/HEAD/face_alignment/models/fan.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":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"5baaa8c1b148ef70"}},{"code_sha256_prefix":"f01c5f73515770a5","entry":"intersect","repo":"1adrianb/face-alignment","repo_kind":"official","path":"face_alignment/detection/blazeface/net_blazeface.py","file_url":"https://github.com/1adrianb/face-alignment/blob/HEAD/face_alignment/detection/blazeface/net_blazeface.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"f01c5f73515770a5"}},{"code_sha256_prefix":"86489779d4c76926","entry":"jaccard","repo":"1adrianb/face-alignment","repo_kind":"official","path":"face_alignment/detection/blazeface/net_blazeface.py","file_url":"https://github.com/1adrianb/face-alignment/blob/HEAD/face_alignment/detection/blazeface/net_blazeface.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"86489779d4c76926"}},{"code_sha256_prefix":"f5414e78ff7a815f","entry":"conv_bn","repo":"1adrianb/face-alignment","repo_kind":"official","path":"face_alignment/detection/retinaface/mobilenet.py","file_url":"https://github.com/1adrianb/face-alignment/blob/HEAD/face_alignment/detection/retinaface/mobilenet.py","link_basis":"plan_row","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"f5414e78ff7a815f"}},{"code_sha256_prefix":"e8b6601f1ef32d21","entry":"conv_bn1x1","repo":"1adrianb/face-alignment","repo_kind":"official","path":"face_alignment/detection/retinaface/net_retinaface.py","file_url":"https://github.com/1adrianb/face-alignment/blob/HEAD/face_alignment/detection/retinaface/net_retinaface.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"e8b6601f1ef32d21"}},{"code_sha256_prefix":"aacb8f654f54d534","entry":"conv_bn_no_relu","repo":"1adrianb/face-alignment","repo_kind":"official","path":"face_alignment/detection/retinaface/net_retinaface.py","file_url":"https://github.com/1adrianb/face-alignment/blob/HEAD/face_alignment/detection/retinaface/net_retinaface.py","link_basis":"plan_row","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"aacb8f654f54d534"}},{"code_sha256_prefix":"e2e512278cdc740a","entry":"conv_dw","repo":"1adrianb/face-alignment","repo_kind":"official","path":"face_alignment/detection/retinaface/mobilenet.py","file_url":"https://github.com/1adrianb/face-alignment/blob/HEAD/face_alignment/detection/retinaface/mobilenet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"e2e512278cdc740a"}},{"code_sha256_prefix":"e6d17ffcdd378aab","entry":"crop","repo":"1adrianb/face-alignment","repo_kind":"official","path":"face_alignment/utils.py","file_url":"https://github.com/1adrianb/face-alignment/blob/HEAD/face_alignment/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"e6d17ffcdd378aab"}},{"code_sha256_prefix":"e06cb5e221fe3fb8","entry":"draw_gaussian","repo":"1adrianb/face-alignment","repo_kind":"official","path":"face_alignment/utils.py","file_url":"https://github.com/1adrianb/face-alignment/blob/HEAD/face_alignment/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"e06cb5e221fe3fb8"}},{"code_sha256_prefix":"5bd43ede69fb8b7d","entry":"flip_detect","repo":"1adrianb/face-alignment","repo_kind":"official","path":"face_alignment/detection/core.py","file_url":"https://github.com/1adrianb/face-alignment/blob/HEAD/face_alignment/detection/core.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"5bd43ede69fb8b7d"}},{"code_sha256_prefix":"2ee40a765c522617","entry":"ldmk_loss","repo":"GuohongLi/face-alignment-pytorch","repo_kind":"listed","path":"utils/loss.py","file_url":"https://github.com/GuohongLi/face-alignment-pytorch/blob/HEAD/utils/loss.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"2ee40a765c522617"}},{"code_sha256_prefix":"a0ca886f22744fea","entry":"overlap_similarity","repo":"1adrianb/face-alignment","repo_kind":"official","path":"face_alignment/detection/blazeface/net_blazeface.py","file_url":"https://github.com/1adrianb/face-alignment/blob/HEAD/face_alignment/detection/blazeface/net_blazeface.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"a0ca886f22744fea"}},{"code_sha256_prefix":"ab72b4766d59c85e","entry":"pts_to_bb","repo":"1adrianb/face-alignment","repo_kind":"official","path":"face_alignment/detection/core.py","file_url":"https://github.com/1adrianb/face-alignment/blob/HEAD/face_alignment/detection/core.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"ab72b4766d59c85e"}},{"code_sha256_prefix":"18816f434cfff85c","entry":"transform","repo":"1adrianb/face-alignment","repo_kind":"official","path":"face_alignment/utils.py","file_url":"https://github.com/1adrianb/face-alignment/blob/HEAD/face_alignment/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"18816f434cfff85c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}