{"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/l2cs-net-fine-grained-gaze-estimation-in","title":"L2CS-Net: Fine-Grained Gaze Estimation in Unconstrained Environments","arxiv_id":"2203.03339","date":"2022-03-07","proceeding":null,"authors":["Ahmed A. Abdelrahman","Thorsten Hempel","Aly Khalifa","Ayoub Al-Hamadi"],"abstract":"Human gaze is a crucial cue used in various applications such as human-robot interaction and virtual reality. Recently, convolution neural network (CNN) approaches have made notable progress in predicting gaze direction. However, estimating gaze in-the-wild is still a challenging problem due to the uniqueness of eye appearance, lightning conditions, and the diversity of head pose and gaze directions. In this paper, we propose a robust CNN-based model for predicting gaze in unconstrained settings. We propose to regress each gaze angle separately to improve the per-angel prediction accuracy, which will enhance the overall gaze performance. In addition, we use two identical losses, one for each angle, to improve network learning and increase its generalization. We evaluate our model with two popular datasets collected with unconstrained settings. Our proposed model achieves state-of-the-art accuracy of 3.92{\\deg} and 10.41{\\deg} on MPIIGaze and Gaze360 datasets, respectively. We make our code open source at https://github.com/Ahmednull/L2CS-Net.","url_abs":"https://arxiv.org/abs/2203.03339v1","url_pdf":"https://arxiv.org/pdf/2203.03339v1.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":"l2cs-net-fine-grained-gaze-estimation-in","repo_url":"https://github.com/ahmednull/l2cs-net","is_official":0,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"l2cs-net-fine-grained-gaze-estimation-in","repo_url":"https://github.com/yakhyo/gaze-estimation","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"diversity","task_name":"Diversity"},{"task_slug":"gaze-estimation","task_name":"Gaze Estimation"},{"task_slug":"eye-tracking","task_name":"Gaze Prediction"}],"methods":[{"method_slug":"convolution","method_name":"Convolution"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/gaze-estimation-on-gaze360","task":"Gaze Estimation","dataset":"Gaze360","model":"L2CS","rank_in_archive_order":2,"of":4,"metrics":{"Angular Error":"10.41"},"uses_additional_data":true},{"leaderboard":"/sota/gaze-estimation-on-mpii-gaze","task":"Gaze Estimation","dataset":"MPII Gaze","model":"L2CS","rank_in_archive_order":3,"of":6,"metrics":{"Angular Error":"3.92"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2203.03339","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2203.03339"}},"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/yakhyo/gaze-estimation","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ahmednull/l2cs-net","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_honours":1,"ran_draft_wrong":3,"ran":1,"unverified":5},"by_repo_kind":{"named_in_paper":{"samples":5,"ran":2,"repositories":1},"listed":{"samples":3,"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":2,"samples":[{"code_sha256_prefix":"6dbf1b2a5b901370","entry":"atoi","repo":"ahmednull/l2cs-net","repo_kind":"named_in_paper","path":"l2cs/utils.py","file_url":"https://github.com/ahmednull/l2cs-net/blob/HEAD/l2cs/utils.py","link_basis":"harvester_set","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":"6dbf1b2a5b901370"}},{"code_sha256_prefix":"d97ed054442099c9","entry":"conv1x1","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"d97ed054442099c9"}},{"code_sha256_prefix":"7f22d053fb2c79d3","entry":"conv3x3","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"7f22d053fb2c79d3"}},{"code_sha256_prefix":"7052cf0436949e37","entry":"natural_keys","repo":"ahmednull/l2cs-net","repo_kind":"named_in_paper","path":"l2cs/utils.py","file_url":"https://github.com/ahmednull/l2cs-net/blob/HEAD/l2cs/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7052cf0436949e37"}},{"code_sha256_prefix":"4283b387669166bd","entry":"reparameterize_model","repo":"yakhyo/gaze-estimation","repo_kind":"listed","path":"models/mobileone.py","file_url":"https://github.com/yakhyo/gaze-estimation/blob/HEAD/models/mobileone.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":"4283b387669166bd"}},{"code_sha256_prefix":"4bddc67420125c05","entry":"create_mobileone_model","repo":"yakhyo/gaze-estimation","repo_kind":"listed","path":"models/mobileone.py","file_url":"https://github.com/yakhyo/gaze-estimation/blob/HEAD/models/mobileone.py","link_basis":"first_harvest_node","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":"4bddc67420125c05"}},{"code_sha256_prefix":"1db8413dd5010d6d","entry":"draw_bbox","repo":"ahmednull/l2cs-net","repo_kind":"named_in_paper","path":"l2cs/vis.py","file_url":"https://github.com/ahmednull/l2cs-net/blob/HEAD/l2cs/vis.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":"1db8413dd5010d6d"}},{"code_sha256_prefix":"c245dc2db42c51e1","entry":"draw_gaze","repo":"ahmednull/l2cs-net","repo_kind":"named_in_paper","path":"l2cs/vis.py","file_url":"https://github.com/ahmednull/l2cs-net/blob/HEAD/l2cs/vis.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":"c245dc2db42c51e1"}},{"code_sha256_prefix":"4df4b0135ebb8b1f","entry":"mobileone_s0","repo":"yakhyo/gaze-estimation","repo_kind":"listed","path":"models/mobileone.py","file_url":"https://github.com/yakhyo/gaze-estimation/blob/HEAD/models/mobileone.py","link_basis":"first_harvest_node","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":"4df4b0135ebb8b1f"}},{"code_sha256_prefix":"bf642780353748df","entry":"prep_input_numpy","repo":"ahmednull/l2cs-net","repo_kind":"named_in_paper","path":"l2cs/utils.py","file_url":"https://github.com/ahmednull/l2cs-net/blob/HEAD/l2cs/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":"bf642780353748df"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}