{"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/improved-anomaly-detection-by-training-an","title":"Improved anomaly detection by training an autoencoder with skip connections on images corrupted with Stain-shaped noise","arxiv_id":"2008.12977","date":"2020-08-29","proceeding":null,"authors":["Anne-Sophie Collin","Christophe De Vleeschouwer"],"abstract":"In industrial vision, the anomaly detection problem can be addressed with an autoencoder trained to map an arbitrary image, i.e. with or without any defect, to a clean image, i.e. without any defect. In this approach, anomaly detection relies conventionally on the reconstruction residual or, alternatively, on the reconstruction uncertainty. To improve the sharpness of the reconstruction, we consider an autoencoder architecture with skip connections. In the common scenario where only clean images are available for training, we propose to corrupt them with a synthetic noise model to prevent the convergence of the network towards the identity mapping, and introduce an original Stain noise model for that purpose. We show that this model favors the reconstruction of clean images from arbitrary real-world images, regardless of the actual defects appearance. In addition to demonstrating the relevance of our approach, our validation provides the first consistent assessment of reconstruction-based methods, by comparing their performance over the MVTec AD dataset, both for pixel- and image-wise anomaly detection.","url_abs":"https://arxiv.org/abs/2008.12977v2","url_pdf":"https://arxiv.org/pdf/2008.12977v2.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":"improved-anomaly-detection-by-training-an","repo_url":"https://github.com/anncollin/AnomalyDetection-Keras","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"anomaly-detection","task_name":"Anomaly Detection"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2008.12977","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2008.12977"}},"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/anncollin/AnomalyDetection-Keras","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":10},"by_repo_kind":{"official":{"samples":10,"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":"cd3673bd44747ec7","entry":"MSE","repo":"anncollin/AnomalyDetection-Keras","repo_kind":"official","path":"Models/Losses.py","file_url":"https://github.com/anncollin/AnomalyDetection-Keras/blob/HEAD/Models/Losses.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"cd3673bd44747ec7"}},{"code_sha256_prefix":"35960f52558880f0","entry":"PSNRLoss","repo":"anncollin/AnomalyDetection-Keras","repo_kind":"official","path":"Models/Losses.py","file_url":"https://github.com/anncollin/AnomalyDetection-Keras/blob/HEAD/Models/Losses.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"35960f52558880f0"}},{"code_sha256_prefix":"08d0ca090165df47","entry":"build_model","repo":"anncollin/AnomalyDetection-Keras","repo_kind":"official","path":"Models/Networks/AE.py","file_url":"https://github.com/anncollin/AnomalyDetection-Keras/blob/HEAD/Models/Networks/AE.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"08d0ca090165df47"}},{"code_sha256_prefix":"25db04194350d92f","entry":"build_model","repo":"anncollin/AnomalyDetection-Keras","repo_kind":"official","path":"Models/Networks/AESc.py","file_url":"https://github.com/anncollin/AnomalyDetection-Keras/blob/HEAD/Models/Networks/AESc.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"25db04194350d92f"}},{"code_sha256_prefix":"49cce9267f9d0497","entry":"compute_ROC","repo":"anncollin/AnomalyDetection-Keras","repo_kind":"official","path":"utils/ROC.py","file_url":"https://github.com/anncollin/AnomalyDetection-Keras/blob/HEAD/utils/ROC.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"49cce9267f9d0497"}},{"code_sha256_prefix":"bab1ea2f26dd4acc","entry":"hjson_parser","repo":"anncollin/AnomalyDetection-Keras","repo_kind":"official","path":"GUI/helper.py","file_url":"https://github.com/anncollin/AnomalyDetection-Keras/blob/HEAD/GUI/helper.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"bab1ea2f26dd4acc"}},{"code_sha256_prefix":"78f94b2cd80c9021","entry":"l_metric","repo":"anncollin/AnomalyDetection-Keras","repo_kind":"official","path":"utils/ROC.py","file_url":"https://github.com/anncollin/AnomalyDetection-Keras/blob/HEAD/utils/ROC.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"78f94b2cd80c9021"}},{"code_sha256_prefix":"72e574159ddc79e9","entry":"psnr","repo":"anncollin/AnomalyDetection-Keras","repo_kind":"official","path":"utils/ROC.py","file_url":"https://github.com/anncollin/AnomalyDetection-Keras/blob/HEAD/utils/ROC.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"72e574159ddc79e9"}},{"code_sha256_prefix":"328b2554e4914e03","entry":"show_im","repo":"anncollin/AnomalyDetection-Keras","repo_kind":"official","path":"GUI/helper.py","file_url":"https://github.com/anncollin/AnomalyDetection-Keras/blob/HEAD/GUI/helper.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"328b2554e4914e03"}},{"code_sha256_prefix":"85da5760c11b9ea6","entry":"update_list","repo":"anncollin/AnomalyDetection-Keras","repo_kind":"official","path":"GUI/helper.py","file_url":"https://github.com/anncollin/AnomalyDetection-Keras/blob/HEAD/GUI/helper.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"85da5760c11b9ea6"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}