{"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-layered-image-decomposition-into","title":"Unsupervised Layered Image Decomposition into Object Prototypes","arxiv_id":"2104.14575","date":"2021-04-29","proceeding":"ICCV 2021 10","authors":["Tom Monnier","Elliot Vincent","Jean Ponce","Mathieu Aubry"],"abstract":"We present an unsupervised learning framework for decomposing images into layers of automatically discovered object models. Contrary to recent approaches that model image layers with autoencoder networks, we represent them as explicit transformations of a small set of prototypical images. Our model has three main components: (i) a set of object prototypes in the form of learnable images with a transparency channel, which we refer to as sprites; (ii) differentiable parametric functions predicting occlusions and transformation parameters necessary to instantiate the sprites in a given image; (iii) a layered image formation model with occlusion for compositing these instances into complete images including background. By jointly learning the sprites and occlusion/transformation predictors to reconstruct images, our approach not only yields accurate layered image decompositions, but also identifies object categories and instance parameters. We first validate our approach by providing results on par with the state of the art on standard multi-object synthetic benchmarks (Tetrominoes, Multi-dSprites, CLEVR6). We then demonstrate the applicability of our model to real images in tasks that include clustering (SVHN, GTSRB), cosegmentation (Weizmann Horse) and object discovery from unfiltered social network images. To the best of our knowledge, our approach is the first layered image decomposition algorithm that learns an explicit and shared concept of object type, and is robust enough to be applied to real images.","url_abs":"https://arxiv.org/abs/2104.14575v2","url_pdf":"https://arxiv.org/pdf/2104.14575v2.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-layered-image-decomposition-into","repo_url":"https://github.com/monniert/dti-sprites","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"object","task_name":"Object"},{"task_slug":"object-discovery","task_name":"Object Discovery"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2104.14575","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2104.14575"}},"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":"deterministic:regex_extraction","url":"https://github.com/deepmind/deepmind-research","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/monniert/dti-sprites","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_honours":1,"unverified":9},"by_repo_kind":{"official":{"samples":10,"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":"f6b944f50d3f15ae","entry":"count_parameters","repo":"monniert/dti-sprites","repo_kind":"official","path":"src/model/tools.py","file_url":"https://github.com/monniert/dti-sprites/blob/HEAD/src/model/tools.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f6b944f50d3f15ae"}},{"code_sha256_prefix":"39091286b0f4c42b","entry":"copy_with_noise","repo":"monniert/dti-sprites","repo_kind":"official","path":"src/model/tools.py","file_url":"https://github.com/monniert/dti-sprites/blob/HEAD/src/model/tools.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":"39091286b0f4c42b"}},{"code_sha256_prefix":"5195e10ed6abd0de","entry":"create_gaussian_weights","repo":"monniert/dti-sprites","repo_kind":"official","path":"src/model/tools.py","file_url":"https://github.com/monniert/dti-sprites/blob/HEAD/src/model/tools.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":"5195e10ed6abd0de"}},{"code_sha256_prefix":"2ae65f1f3218563d","entry":"get_resnet_model","repo":"monniert/dti-sprites","repo_kind":"official","path":"src/model/mini_resnet.py","file_url":"https://github.com/monniert/dti-sprites/blob/HEAD/src/model/mini_resnet.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":"2ae65f1f3218563d"}},{"code_sha256_prefix":"a25541080f88f65c","entry":"get_resnet_model","repo":"monniert/dti-sprites","repo_kind":"official","path":"src/model/resnet.py","file_url":"https://github.com/monniert/dti-sprites/blob/HEAD/src/model/resnet.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":"a25541080f88f65c"}},{"code_sha256_prefix":"c9780e31e675f565","entry":"layered_composition","repo":"monniert/dti-sprites","repo_kind":"official","path":"src/model/dti_sprites.py","file_url":"https://github.com/monniert/dti-sprites/blob/HEAD/src/model/dti_sprites.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":"c9780e31e675f565"}},{"code_sha256_prefix":"a480f539bff6f901","entry":"resnet18","repo":"monniert/dti-sprites","repo_kind":"official","path":"src/model/resnet.py","file_url":"https://github.com/monniert/dti-sprites/blob/HEAD/src/model/resnet.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":"a480f539bff6f901"}},{"code_sha256_prefix":"b69e0b94664e5634","entry":"resnet20","repo":"monniert/dti-sprites","repo_kind":"official","path":"src/model/mini_resnet.py","file_url":"https://github.com/monniert/dti-sprites/blob/HEAD/src/model/mini_resnet.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":"b69e0b94664e5634"}},{"code_sha256_prefix":"b1c4b3a22a8d30fd","entry":"resnet32","repo":"monniert/dti-sprites","repo_kind":"official","path":"src/model/mini_resnet.py","file_url":"https://github.com/monniert/dti-sprites/blob/HEAD/src/model/mini_resnet.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":"b1c4b3a22a8d30fd"}},{"code_sha256_prefix":"7907340b312c48da","entry":"resnet34","repo":"monniert/dti-sprites","repo_kind":"official","path":"src/model/resnet.py","file_url":"https://github.com/monniert/dti-sprites/blob/HEAD/src/model/resnet.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":"7907340b312c48da"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}