{"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/unsupervised-learning-of-object-landmarks","title":"Unsupervised Learning of Object Landmarks through Conditional Image Generation","arxiv_id":"1806.07823","date":"2018-06-20","proceeding":"NeurIPS 2018 12","authors":["Tomas Jakab","Ankush Gupta","Hakan Bilen","Andrea Vedaldi"],"abstract":"We propose a method for learning landmark detectors for visual objects (such\nas the eyes and the nose in a face) without any manual supervision. We cast\nthis as the problem of generating images that combine the appearance of the\nobject as seen in a first example image with the geometry of the object as seen\nin a second example image, where the two examples differ by a viewpoint change\nand/or an object deformation. In order to factorize appearance and geometry, we\nintroduce a tight bottleneck in the geometry-extraction process that selects\nand distils geometry-related features. Compared to standard image generation\nproblems, which often use generative adversarial networks, our generation task\nis conditioned on both appearance and geometry and thus is significantly less\nambiguous, to the point that adopting a simple perceptual loss formulation is\nsufficient. We demonstrate that our approach can learn object landmarks from\nsynthetic image deformations or videos, all without manual supervision, while\noutperforming state-of-the-art unsupervised landmark detectors. We further show\nthat our method is applicable to a large variety of datasets - faces, people,\n3D objects, and digits - without any modifications.","url_abs":"http://arxiv.org/abs/1806.07823v2","url_pdf":"http://arxiv.org/pdf/1806.07823v2.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":"unsupervised-learning-of-object-landmarks","repo_url":"https://github.com/hqng/imm-pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null},{"paper_slug":"unsupervised-learning-of-object-landmarks","repo_url":"https://github.com/tomasjakab/imm","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"tf","reach":{"status":"ok"}}],"tasks":[{"task_slug":"conditional-image-generation","task_name":"Conditional Image Generation"},{"task_slug":"image-generation","task_name":"Image Generation"},{"task_slug":"object","task_name":"Object"},{"task_slug":"unsupervised-facial-landmark-detection","task_name":"Unsupervised Facial Landmark Detection"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/unsupervised-facial-landmark-detection-on-2","task":"Unsupervised Facial Landmark Detection","dataset":"AFLW (Zhang CVPR 2018 crops)","model":"Conditional Image Generation","rank_in_archive_order":1,"of":4,"metrics":{"NME":"6.31"},"uses_additional_data":false},{"leaderboard":"/sota/unsupervised-facial-landmark-detection-on-1","task":"Unsupervised Facial Landmark Detection","dataset":"MAFL","model":"Conditional Image Generation","rank_in_archive_order":2,"of":13,"metrics":{"NME":"2.54"},"uses_additional_data":false},{"leaderboard":"/sota/unsupervised-facial-landmark-detection-on-5","task":"Unsupervised Facial Landmark Detection","dataset":"MAFL Unaligned","model":"IMM","rank_in_archive_order":3,"of":9,"metrics":{"NME":"8.74"},"uses_additional_data":false}],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=1806.07823","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1806.07823"}},"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/hqng/imm-pytorch","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/tomasjakab/imm","reach":{"status":"ok"}}],"summary":{"ran_draft_wrong":2,"ran_fixture":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":3,"samples":[{"code_sha256_prefix":"c0e78e44c61de61a","entry":"conv_block","repo":"hqng/imm-pytorch","repo_kind":"listed","path":"imm_model.py","file_url":"https://github.com/hqng/imm-pytorch/blob/HEAD/imm_model.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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c0e78e44c61de61a"}},{"code_sha256_prefix":"b10a977d1f71d050","entry":"get_coord","repo":"hqng/imm-pytorch","repo_kind":"listed","path":"imm_model.py","file_url":"https://github.com/hqng/imm-pytorch/blob/HEAD/imm_model.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b10a977d1f71d050"}},{"code_sha256_prefix":"cb2e478125e80e53","entry":"get_gaussian_maps","repo":"hqng/imm-pytorch","repo_kind":"listed","path":"imm_model.py","file_url":"https://github.com/hqng/imm-pytorch/blob/HEAD/imm_model.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"cb2e478125e80e53"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}