{"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/fine-grained-head-pose-estimation-without","title":"Fine-Grained Head Pose Estimation Without Keypoints","arxiv_id":"1710.00925","date":"2017-10-02","proceeding":null,"authors":["Nataniel Ruiz","Eunji Chong","James M. Rehg"],"abstract":"Estimating the head pose of a person is a crucial problem that has a large\namount of applications such as aiding in gaze estimation, modeling attention,\nfitting 3D models to video and performing face alignment. Traditionally head\npose is computed by estimating some keypoints from the target face and solving\nthe 2D to 3D correspondence problem with a mean human head model. We argue that\nthis is a fragile method because it relies entirely on landmark detection\nperformance, the extraneous head model and an ad-hoc fitting step. We present\nan elegant and robust way to determine pose by training a multi-loss\nconvolutional neural network on 300W-LP, a large synthetically expanded\ndataset, to predict intrinsic Euler angles (yaw, pitch and roll) directly from\nimage intensities through joint binned pose classification and regression. We\npresent empirical tests on common in-the-wild pose benchmark datasets which\nshow state-of-the-art results. Additionally we test our method on a dataset\nusually used for pose estimation using depth and start to close the gap with\nstate-of-the-art depth pose methods. We open-source our training and testing\ncode as well as release our pre-trained models.","url_abs":"http://arxiv.org/abs/1710.00925v5","url_pdf":"http://arxiv.org/pdf/1710.00925v5.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":"fine-grained-head-pose-estimation-without","repo_url":"https://github.com/natanielruiz/deep-head-pose","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"fine-grained-head-pose-estimation-without","repo_url":"https://github.com/chenyeheng/SmartCar","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"fine-grained-head-pose-estimation-without","repo_url":"https://github.com/chenyeheng/SmartCar-FaceRec","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"fine-grained-head-pose-estimation-without","repo_url":"https://github.com/chenyeheng/SmartCar-FaceRecognition","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"fine-grained-head-pose-estimation-without","repo_url":"https://github.com/kishansharma3012/Deep_Head_Pose_Estimation","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"fine-grained-head-pose-estimation-without","repo_url":"https://github.com/yehengchen/FaceNet-FaceRecognition","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"fine-grained-head-pose-estimation-without","repo_url":"https://github.com/yehengchen/FaceRecognition","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"fine-grained-head-pose-estimation-without","repo_url":"https://github.com/yehengchen/FaceRecognition-FaceNet","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"fine-grained-head-pose-estimation-without","repo_url":"https://github.com/yehengchen/SmartCar-FaceRecognition","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"fine-grained-head-pose-estimation-without","repo_url":"https://github.com/2023-MindSpore-1/ms-code-201","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"mindspore","reach":{"status":"ok"}},{"paper_slug":"fine-grained-head-pose-estimation-without","repo_url":"https://github.com/MindSpore-paper-code-3/code3/tree/main/FaceRecognitionForTracking","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"mindspore","reach":null},{"paper_slug":"fine-grained-head-pose-estimation-without","repo_url":"https://github.com/MindSpore-paper-code-3/code7/tree/main/FaceRecognitionForTracking","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"mindspore","reach":null},{"paper_slug":"fine-grained-head-pose-estimation-without","repo_url":"https://github.com/MindSpore-paper-code-3/code8/tree/main/FaceRecognitionForTracking","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"mindspore","reach":null},{"paper_slug":"fine-grained-head-pose-estimation-without","repo_url":"https://github.com/yakhyo/head-pose-estimation","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"face-alignment","task_name":"Face Alignment"},{"task_slug":"gaze-estimation","task_name":"Gaze Estimation"},{"task_slug":"head-pose-estimation","task_name":"Head Pose Estimation"},{"task_slug":"pose-estimation","task_name":"Pose Estimation"}],"methods":[{"method_slug":"1x1-convolution","method_name":"1x1 Convolution"},{"method_slug":"average-pooling","method_name":"Average Pooling"},{"method_slug":"batch-normalization","method_name":"Batch Normalization"},{"method_slug":"bottleneck-residual-block","method_name":"Bottleneck Residual Block"},{"method_slug":"convolution","method_name":"Convolution"},{"method_slug":"global-average-pooling","method_name":"Global Average Pooling"},{"method_slug":"kaiming-initialization","method_name":"Kaiming Initialization"},{"method_slug":"max-pooling","method_name":"Max Pooling"},{"method_slug":"relu","method_name":"ReLU"},{"method_slug":"residual-block","method_name":"Residual Block"},{"method_slug":"residual-connection","method_name":"Residual Connection"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/head-pose-estimation-on-aflw","task":"Head Pose Estimation","dataset":"AFLW","model":"Ruiz et al.","rank_in_archive_order":5,"of":6,"metrics":{"MAE":"5.324"},"uses_additional_data":false},{"leaderboard":"/sota/head-pose-estimation-on-aflw2000","task":"Head Pose Estimation","dataset":"AFLW2000","model":"Hopenet","rank_in_archive_order":21,"of":25,"metrics":{"Geodesic Error (GE)":"9,93","MAE":"6.15"},"uses_additional_data":false},{"leaderboard":"/sota/head-pose-estimation-on-aflw2000","task":"Head Pose Estimation","dataset":"AFLW2000","model":"Multi-Loss ResNet50 (a=2)","rank_in_archive_order":22,"of":25,"metrics":{"MAE":"6.155"},"uses_additional_data":false},{"leaderboard":"/sota/head-pose-estimation-on-biwi","task":"Head Pose Estimation","dataset":"BIWI","model":"hopenet","rank_in_archive_order":18,"of":29,"metrics":{"Geodesic Error (GE)":"9.53","Geodesic Error - aligned (GE)":"6.6","MAE (trained with other data)":"4.89","MAE-aligned (trained with other data)":"3.48"},"uses_additional_data":false},{"leaderboard":"/sota/head-pose-estimation-on-biwi","task":"Head Pose Estimation","dataset":"BIWI","model":"Multi-Loss ResNet50","rank_in_archive_order":28,"of":29,"metrics":{"MAE (trained with BIWI data)":"4.895"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1710.00925","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1710.00925"}},"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/2023-MindSpore-1/ms-code-201","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/chenyeheng/SmartCar","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/chenyeheng/SmartCar-FaceRecognition","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/chenyeheng/SmartCar-FaceRec","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/yehengchen/FaceNet-FaceRecognition","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/MindSpore-paper-code-3/code8/tree/main/FaceRecognitionForTracking","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/kishansharma3012/Deep_Head_Pose_Estimation","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/yehengchen/FaceRecognition-FaceNet","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/yakhyo/head-pose-estimation","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/MindSpore-paper-code-3/code7/tree/main/FaceRecognitionForTracking","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/natanielruiz/deep-head-pose","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/yehengchen/FaceRecognition","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/MindSpore-paper-code-3/code3/tree/main/FaceRecognitionForTracking","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/yehengchen/SmartCar-FaceRecognition","reach":{"status":"ok"}}],"summary":{"ran_draft_wrong":2,"ran_honours":1},"by_repo_kind":{"listed":{"samples":3,"ran":3,"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":"d97ed054442099c9","entry":"conv1x1","repo":"yakhyo/head-pose-estimation","repo_kind":"listed","path":"models/resnet.py","file_url":"https://github.com/yakhyo/head-pose-estimation/blob/HEAD/models/resnet.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d97ed054442099c9"}},{"code_sha256_prefix":"7f22d053fb2c79d3","entry":"conv3x3","repo":"yakhyo/head-pose-estimation","repo_kind":"listed","path":"models/resnet.py","file_url":"https://github.com/yakhyo/head-pose-estimation/blob/HEAD/models/resnet.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7f22d053fb2c79d3"}},{"code_sha256_prefix":"0e7a40594b66badc","entry":"expand_bbox","repo":"yakhyo/head-pose-estimation","repo_kind":"listed","path":"onnx_inference.py","file_url":"https://github.com/yakhyo/head-pose-estimation/blob/HEAD/onnx_inference.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0e7a40594b66badc"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}