{"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/teacher-supervises-students-how-to-learn-from","title":"Teacher Supervises Students How to Learn From Partially Labeled Images for Facial Landmark Detection","arxiv_id":"1908.02116","date":"2019-08-06","proceeding":"ICCV 2019 10","authors":["Xuanyi Dong","Yi Yang"],"abstract":"Facial landmark detection aims to localize the anatomically defined points of human faces. In this paper, we study facial landmark detection from partially labeled facial images. A typical approach is to (1) train a detector on the labeled images; (2) generate new training samples using this detector's prediction as pseudo labels of unlabeled images; (3) retrain the detector on the labeled samples and partial pseudo labeled samples. In this way, the detector can learn from both labeled and unlabeled data to become robust. In this paper, we propose an interaction mechanism between a teacher and two students to generate more reliable pseudo labels for unlabeled data, which are beneficial to semi-supervised facial landmark detection. Specifically, the two students are instantiated as dual detectors. The teacher learns to judge the quality of the pseudo labels generated by the students and filter out unqualified samples before the retraining stage. In this way, the student detectors get feedback from their teacher and are retrained by premium data generated by itself. Since the two students are trained by different samples, a combination of their predictions will be more robust as the final prediction compared to either prediction. Extensive experiments on 300-W and AFLW benchmarks show that the interactions between teacher and students contribute to better utilization of the unlabeled data and achieves state-of-the-art performance.","url_abs":"https://arxiv.org/abs/1908.02116v3","url_pdf":"https://arxiv.org/pdf/1908.02116v3.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":"teacher-supervises-students-how-to-learn-from","repo_url":"https://github.com/D-X-Y/landmark-detection","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"teacher-supervises-students-how-to-learn-from","repo_url":"https://github.com/D-X-Y/SAN","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"facial-landmark-detection","task_name":"Facial Landmark Detection"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/facial-landmark-detection-on-300w","task":"Facial Landmark Detection","dataset":"300W","model":"TS3","rank_in_archive_order":10,"of":15,"metrics":{"NME":"3.49"},"uses_additional_data":true},{"leaderboard":"/sota/facial-landmark-detection-on-300w-full","task":"Facial Landmark Detection","dataset":"300W (Full)","model":"TS3","rank_in_archive_order":1,"of":2,"metrics":{"Mean NME ":"3.49"},"uses_additional_data":true}],"syntology":{"syntology_url":"https://syntology.ai/paper/1908.02116","atlas_url":"https://app.syntology.ai/?focus=1908.02116","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1908.02116"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/D-X-Y/SAN","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/D-X-Y/landmark-detection","reach":null}],"summary":{"ran_draft_wrong":1,"unverified":8},"by_repo_kind":{"official":{"samples":3,"ran":1,"repositories":1},"listed":{"samples":6,"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":"e137aed896bedb2b","entry":"get_name","repo":"D-X-Y/landmark-detection","repo_kind":"official","path":"SRT/cache_data/GEN_300W.py","file_url":"https://github.com/D-X-Y/landmark-detection/blob/HEAD/SRT/cache_data/GEN_300W.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":"e137aed896bedb2b"}},{"code_sha256_prefix":"93b84997f1088de5","entry":"face_align","repo":"D-X-Y/SAN","repo_kind":"listed","path":"SAN/gen_mean_face.py","file_url":"https://github.com/D-X-Y/SAN/blob/HEAD/SAN/gen_mean_face.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":"93b84997f1088de5"}},{"code_sha256_prefix":"35a75e51f1b18932","entry":"load_all_300w","repo":"D-X-Y/SAN","repo_kind":"listed","path":"SAN/cache_data/generate_300W.py","file_url":"https://github.com/D-X-Y/SAN/blob/HEAD/SAN/cache_data/generate_300W.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":"35a75e51f1b18932"}},{"code_sha256_prefix":"ba02f21845e82025","entry":"load_box","repo":"D-X-Y/landmark-detection","repo_kind":"official","path":"SRT/cache_data/GEN_300W.py","file_url":"https://github.com/D-X-Y/landmark-detection/blob/HEAD/SRT/cache_data/GEN_300W.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":"ba02f21845e82025"}},{"code_sha256_prefix":"b923e197278800b0","entry":"load_box","repo":"D-X-Y/SAN","repo_kind":"listed","path":"SAN/cache_data/generate_300W.py","file_url":"https://github.com/D-X-Y/SAN/blob/HEAD/SAN/cache_data/generate_300W.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":"b923e197278800b0"}},{"code_sha256_prefix":"4b61e25ba75a3aa6","entry":"load_mats","repo":"D-X-Y/landmark-detection","repo_kind":"official","path":"SRT/cache_data/GEN_300W.py","file_url":"https://github.com/D-X-Y/landmark-detection/blob/HEAD/SRT/cache_data/GEN_300W.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":"4b61e25ba75a3aa6"}},{"code_sha256_prefix":"bdd903ed2401815b","entry":"load_mats","repo":"D-X-Y/SAN","repo_kind":"listed","path":"SAN/cache_data/generate_300W.py","file_url":"https://github.com/D-X-Y/SAN/blob/HEAD/SAN/cache_data/generate_300W.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":"bdd903ed2401815b"}},{"code_sha256_prefix":"8d962e105ab61b33","entry":"normalize","repo":"D-X-Y/SAN","repo_kind":"listed","path":"SAN/gen_mean_face.py","file_url":"https://github.com/D-X-Y/SAN/blob/HEAD/SAN/gen_mean_face.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":"8d962e105ab61b33"}},{"code_sha256_prefix":"5cd8c08f75d5eeb9","entry":"np2variable","repo":"D-X-Y/SAN","repo_kind":"listed","path":"SAN/gen_mean_face.py","file_url":"https://github.com/D-X-Y/SAN/blob/HEAD/SAN/gen_mean_face.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":"5cd8c08f75d5eeb9"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}