{"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/simplenet-a-simple-network-for-image-anomaly","title":"SimpleNet: A Simple Network for Image Anomaly Detection and Localization","arxiv_id":"2303.15140","date":"2023-03-27","proceeding":"CVPR 2023 1","authors":["Zhikang Liu","Yiming Zhou","Yuansheng Xu","Zilei Wang"],"abstract":"We propose a simple and application-friendly network (called SimpleNet) for detecting and localizing anomalies. SimpleNet consists of four components: (1) a pre-trained Feature Extractor that generates local features, (2) a shallow Feature Adapter that transfers local features towards target domain, (3) a simple Anomaly Feature Generator that counterfeits anomaly features by adding Gaussian noise to normal features, and (4) a binary Anomaly Discriminator that distinguishes anomaly features from normal features. During inference, the Anomaly Feature Generator would be discarded. Our approach is based on three intuitions. First, transforming pre-trained features to target-oriented features helps avoid domain bias. Second, generating synthetic anomalies in feature space is more effective, as defects may not have much commonality in the image space. Third, a simple discriminator is much efficient and practical. In spite of simplicity, SimpleNet outperforms previous methods quantitatively and qualitatively. On the MVTec AD benchmark, SimpleNet achieves an anomaly detection AUROC of 99.6%, reducing the error by 55.5% compared to the next best performing model. Furthermore, SimpleNet is faster than existing methods, with a high frame rate of 77 FPS on a 3080ti GPU. Additionally, SimpleNet demonstrates significant improvements in performance on the One-Class Novelty Detection task. Code: https://github.com/DonaldRR/SimpleNet.","url_abs":"https://arxiv.org/abs/2303.15140v2","url_pdf":"https://arxiv.org/pdf/2303.15140v2.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":"simplenet-a-simple-network-for-image-anomaly","repo_url":"https://github.com/donaldrr/simplenet","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"simplenet-a-simple-network-for-image-anomaly","repo_url":"https://github.com/septmars/DL","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"anomaly-classification","task_name":"Anomaly Classification"},{"task_slug":"anomaly-detection","task_name":"Anomaly Detection"},{"task_slug":"anomaly-segmentation","task_name":"Anomaly Segmentation"},{"task_slug":null,"task_name":"GPU"},{"task_slug":"novelty-detection","task_name":"Novelty Detection"}],"methods":[{"method_slug":"1x1-convolution","method_name":"1x1 Convolution"},{"method_slug":"adapter","method_name":"Adapter"},{"method_slug":"batch-normalization","method_name":"Batch Normalization"},{"method_slug":"convolution","method_name":"Convolution"},{"method_slug":"max-pooling","method_name":"Max Pooling"},{"method_slug":"relu","method_name":"ReLU"},{"method_slug":"simplenet","method_name":"SimpleNet"},{"method_slug":"softmax","method_name":"Softmax"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/anomaly-classification-on-goodsad","task":"Anomaly Classification","dataset":"GoodsAD","model":"SimpleNet","rank_in_archive_order":3,"of":11,"metrics":{"AUPR":"78.7","AUROC":"75.3"},"uses_additional_data":false},{"leaderboard":"/sota/anomaly-detection-on-mvtec-ad","task":"Anomaly Detection","dataset":"MVTec AD","model":"SimpleNet","rank_in_archive_order":23,"of":148,"metrics":{"Detection AUROC":"99.6","FPS":"77(FP32 on 3080ti)","Segmentation AUROC":"98.1"},"uses_additional_data":false},{"leaderboard":"/sota/anomaly-detection-on-mvtec-loco-ad","task":"Anomaly Detection","dataset":"MVTec LOCO AD","model":"SimpleNet","rank_in_archive_order":30,"of":40,"metrics":{"Avg. Detection AUROC":"77.6","Detection AUROC (only logical)":"71.5","Detection AUROC (only structural)":"83.7","Segmentation AU-sPRO (until FPR 5%)":"36.3"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2303.15140","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2303.15140"}},"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/septmars/DL","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/donaldrr/simplenet","reach":null}],"summary":{"ran":10,"unverified":7},"by_repo_kind":{"official":{"samples":17,"ran":10,"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":"678e7187ec61f5fd","entry":"Aggregator","repo":"donaldrr/simplenet","repo_kind":"official","path":"simplenet.py","file_url":"https://github.com/donaldrr/simplenet/blob/HEAD/simplenet.py","link_basis":"first_harvest_node","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":"678e7187ec61f5fd"}},{"code_sha256_prefix":"e55477994bd9693d","entry":"Discriminator","repo":"donaldrr/simplenet","repo_kind":"official","path":"simplenet.py","file_url":"https://github.com/donaldrr/simplenet/blob/HEAD/simplenet.py","link_basis":"first_harvest_node","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":"e55477994bd9693d"}},{"code_sha256_prefix":"64717f7b5fbd0493","entry":"ForwardHook","repo":"donaldrr/simplenet","repo_kind":"official","path":"simplenet.py","file_url":"https://github.com/donaldrr/simplenet/blob/HEAD/simplenet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"64717f7b5fbd0493"}},{"code_sha256_prefix":"0dfe645218bd3db7","entry":"MeanMapper","repo":"donaldrr/simplenet","repo_kind":"official","path":"simplenet.py","file_url":"https://github.com/donaldrr/simplenet/blob/HEAD/simplenet.py","link_basis":"first_harvest_node","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":"0dfe645218bd3db7"}},{"code_sha256_prefix":"2e556d6bb822cc58","entry":"NetworkFeatureAggregator","repo":"donaldrr/simplenet","repo_kind":"official","path":"simplenet.py","file_url":"https://github.com/donaldrr/simplenet/blob/HEAD/simplenet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2e556d6bb822cc58"}},{"code_sha256_prefix":"3e6187f15c3a459e","entry":"PatchMaker","repo":"donaldrr/simplenet","repo_kind":"official","path":"simplenet.py","file_url":"https://github.com/donaldrr/simplenet/blob/HEAD/simplenet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3e6187f15c3a459e"}},{"code_sha256_prefix":"f1988fdd4a9c07c5","entry":"Preprocessing","repo":"donaldrr/simplenet","repo_kind":"official","path":"simplenet.py","file_url":"https://github.com/donaldrr/simplenet/blob/HEAD/simplenet.py","link_basis":"first_harvest_node","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":"f1988fdd4a9c07c5"}},{"code_sha256_prefix":"f93cbaa832d322df","entry":"Projection","repo":"donaldrr/simplenet","repo_kind":"official","path":"simplenet.py","file_url":"https://github.com/donaldrr/simplenet/blob/HEAD/simplenet.py","link_basis":"first_harvest_node","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":"f93cbaa832d322df"}},{"code_sha256_prefix":"e3a23efda4733f5c","entry":"RescaleSegmentor","repo":"donaldrr/simplenet","repo_kind":"official","path":"simplenet.py","file_url":"https://github.com/donaldrr/simplenet/blob/HEAD/simplenet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e3a23efda4733f5c"}},{"code_sha256_prefix":"a1d0858c293ce5ef","entry":"TBWrapper","repo":"donaldrr/simplenet","repo_kind":"official","path":"simplenet.py","file_url":"https://github.com/donaldrr/simplenet/blob/HEAD/simplenet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a1d0858c293ce5ef"}},{"code_sha256_prefix":"4dc045abcd12dc9a","entry":"LastLayerToExtractReachedException","repo":"donaldrr/simplenet","repo_kind":"official","path":"simplenet.py","file_url":"https://github.com/donaldrr/simplenet/blob/HEAD/simplenet.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":"4dc045abcd12dc9a"}},{"code_sha256_prefix":"09597c93b79f6e3d","entry":"SimpleNet","repo":"donaldrr/simplenet","repo_kind":"official","path":"simplenet.py","file_url":"https://github.com/donaldrr/simplenet/blob/HEAD/simplenet.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":"09597c93b79f6e3d"}},{"code_sha256_prefix":"552ec33122db4c84","entry":"compute_imagewise_retrieval_metrics","repo":"donaldrr/simplenet","repo_kind":"official","path":"simplenet.py","file_url":"https://github.com/donaldrr/simplenet/blob/HEAD/simplenet.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":"552ec33122db4c84"}},{"code_sha256_prefix":"984ad644f49b9e33","entry":"compute_pixelwise_retrieval_metrics","repo":"donaldrr/simplenet","repo_kind":"official","path":"simplenet.py","file_url":"https://github.com/donaldrr/simplenet/blob/HEAD/simplenet.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":"984ad644f49b9e33"}},{"code_sha256_prefix":"3f6b6cfd48085e0c","entry":"compute_pro","repo":"donaldrr/simplenet","repo_kind":"official","path":"simplenet.py","file_url":"https://github.com/donaldrr/simplenet/blob/HEAD/simplenet.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":"3f6b6cfd48085e0c"}},{"code_sha256_prefix":"fa8054f2f81a5085","entry":"init_weight","repo":"donaldrr/simplenet","repo_kind":"official","path":"simplenet.py","file_url":"https://github.com/donaldrr/simplenet/blob/HEAD/simplenet.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":"fa8054f2f81a5085"}},{"code_sha256_prefix":"7d131a5a97a1dd18","entry":"plot_segmentation_images","repo":"donaldrr/simplenet","repo_kind":"official","path":"simplenet.py","file_url":"https://github.com/donaldrr/simplenet/blob/HEAD/simplenet.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":"7d131a5a97a1dd18"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}