{"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/bridging-the-gap-between-anchor-based-and","title":"Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Selection","arxiv_id":"1912.02424","date":"2019-12-05","proceeding":"CVPR 2020 6","authors":["Shifeng Zhang","Cheng Chi","Yongqiang Yao","Zhen Lei","Stan Z. Li"],"abstract":"Object detection has been dominated by anchor-based detectors for several years. Recently, anchor-free detectors have become popular due to the proposal of FPN and Focal Loss. In this paper, we first point out that the essential difference between anchor-based and anchor-free detection is actually how to define positive and negative training samples, which leads to the performance gap between them. If they adopt the same definition of positive and negative samples during training, there is no obvious difference in the final performance, no matter regressing from a box or a point. This shows that how to select positive and negative training samples is important for current object detectors. Then, we propose an Adaptive Training Sample Selection (ATSS) to automatically select positive and negative samples according to statistical characteristics of object. It significantly improves the performance of anchor-based and anchor-free detectors and bridges the gap between them. Finally, we discuss the necessity of tiling multiple anchors per location on the image to detect objects. Extensive experiments conducted on MS COCO support our aforementioned analysis and conclusions. With the newly introduced ATSS, we improve state-of-the-art detectors by a large margin to $50.7\\%$ AP without introducing any overhead. The code is available at https://github.com/sfzhang15/ATSS","url_abs":"https://arxiv.org/abs/1912.02424v4","url_pdf":"https://arxiv.org/pdf/1912.02424v4.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":"bridging-the-gap-between-anchor-based-and","repo_url":"https://github.com/sfzhang15/ATSS","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"bridging-the-gap-between-anchor-based-and","repo_url":"https://github.com/Qengineering/NanoDet-ncnn-Jetson-Nano","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"BSD-3-Clause"}},{"paper_slug":"bridging-the-gap-between-anchor-based-and","repo_url":"https://github.com/Qengineering/NanoDet-ncnn-Raspberry-Pi-4","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"BSD-3-Clause"}},{"paper_slug":"bridging-the-gap-between-anchor-based-and","repo_url":"https://github.com/RangiLyu/nanodet","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"unanswered"}},{"paper_slug":"bridging-the-gap-between-anchor-based-and","repo_url":"https://github.com/TangShengqin/ATSS-Pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"bridging-the-gap-between-anchor-based-and","repo_url":"https://github.com/Yuxiang1995/ICDAR2021_MFD","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"bridging-the-gap-between-anchor-based-and","repo_url":"https://github.com/coolbay/VSGN","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"bridging-the-gap-between-anchor-based-and","repo_url":"https://github.com/justimyhxu/Dense-RepPoints","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"bridging-the-gap-between-anchor-based-and","repo_url":"https://github.com/open-edge-platform/geti","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"bridging-the-gap-between-anchor-based-and","repo_url":"https://github.com/Burf/tfdetection","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"tf","reach":null},{"paper_slug":"bridging-the-gap-between-anchor-based-and","repo_url":"https://github.com/MegEngine/Models/tree/master/official/vision/detection","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"none","reach":null},{"paper_slug":"bridging-the-gap-between-anchor-based-and","repo_url":"https://github.com/open-edge-platform/training_extensions","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"bridging-the-gap-between-anchor-based-and","repo_url":"https://github.com/open-mmlab/mmdetection","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"object","task_name":"Object"},{"task_slug":"object-detection","task_name":"Object Detection"},{"task_slug":"object-detection-1","task_name":"object-detection"}],"methods":[{"method_slug":"1x1-convolution","method_name":"1x1 Convolution"},{"method_slug":"atss","method_name":"ATSS"},{"method_slug":"average-pooling","method_name":"Average Pooling"},{"method_slug":"batch-normalization","method_name":"Batch Normalization"},{"method_slug":"bottleneck-residual-block","method_name":"Bottleneck Residual Block"},{"method_slug":"convolution","method_name":"Convolution"},{"method_slug":"fpn","method_name":"FPN"},{"method_slug":"focal-loss","method_name":"Focal Loss"},{"method_slug":"global-average-pooling","method_name":"Global Average Pooling"},{"method_slug":"group-normalization","method_name":"Group Normalization"},{"method_slug":"kaiming-initialization","method_name":"Kaiming Initialization"},{"method_slug":"max-pooling","method_name":"Max Pooling"},{"method_slug":"non-maximum-suppression","method_name":"Non Maximum Suppression"},{"method_slug":"relu","method_name":"ReLU"},{"method_slug":"residual-block","method_name":"Residual Block"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"retinanet","method_name":"RetinaNet"},{"method_slug":"sgd-with-momentum","method_name":"SGD with Momentum"},{"method_slug":"step-decay","method_name":"Step Decay"},{"method_slug":"weight-decay","method_name":"Weight Decay"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/object-detection-on-coco","task":"Object Detection","dataset":"COCO test-dev","model":"ATSS (ResNetXt-64x4d-101+DCN,multi-scale)","rank_in_archive_order":86,"of":225,"metrics":{"AP50":"68.9","AP75":"56.3","APL":"62.4","APM":"52.9","APS":"33.2","box mAP":"50.7"},"uses_additional_data":false},{"leaderboard":"/sota/object-detection-on-coco-o","task":"Object Detection","dataset":"COCO-O","model":"ATSS\n(ResNet-50)","rank_in_archive_order":37,"of":45,"metrics":{"Average mAP":"16.8","Effective Robustness":"-0.91"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1912.02424","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1912.02424"}},"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/Qengineering/NanoDet-ncnn-Jetson-Nano","reach":{"status":"ok","spdx":"BSD-3-Clause"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/coolbay/VSGN","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/justimyhxu/Dense-RepPoints","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/TangShengqin/ATSS-Pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/open-mmlab/mmdetection","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/open-edge-platform/training_extensions","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/MegEngine/Models/tree/master/official/vision/detection","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/sfzhang15/ATSS","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/RangiLyu/nanodet","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Qengineering/NanoDet-ncnn-Raspberry-Pi-4","reach":{"status":"ok","spdx":"BSD-3-Clause"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Yuxiang1995/ICDAR2021_MFD","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/open-edge-platform/geti","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Burf/tfdetection","reach":null}],"summary":{"unverified":4},"by_repo_kind":{"listed":{"samples":4,"ran":0,"repositories":2}},"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":"abd2ab591583348b","entry":"images_to_levels","repo":"justimyhxu/Dense-RepPoints","repo_kind":"listed","path":"mmdet/core/mask/dense_reppoints_target.py","file_url":"https://github.com/justimyhxu/Dense-RepPoints/blob/HEAD/mmdet/core/mask/dense_reppoints_target.py","link_basis":"harvester_set","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":"abd2ab591583348b"}},{"code_sha256_prefix":"9109cf95d96cd527","entry":"mask_to_levels","repo":"justimyhxu/Dense-RepPoints","repo_kind":"listed","path":"mmdet/core/mask/dense_reppoints_target.py","file_url":"https://github.com/justimyhxu/Dense-RepPoints/blob/HEAD/mmdet/core/mask/dense_reppoints_target.py","link_basis":"harvester_set","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":"9109cf95d96cd527"}},{"code_sha256_prefix":"7e6b0e08cb2a4608","entry":"pts2result","repo":"justimyhxu/Dense-RepPoints","repo_kind":"listed","path":"mmdet/models/detectors/dense_reppoints_detector.py","file_url":"https://github.com/justimyhxu/Dense-RepPoints/blob/HEAD/mmdet/models/detectors/dense_reppoints_detector.py","link_basis":"harvester_set","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":"7e6b0e08cb2a4608"}},{"code_sha256_prefix":"74bdc4124307cc00","entry":"reduce_mean","repo":"TangShengqin/ATSS-Pytorch","repo_kind":"listed","path":"mmdet/models/anchor_heads/atss_head.py","file_url":"https://github.com/TangShengqin/ATSS-Pytorch/blob/HEAD/mmdet/models/anchor_heads/atss_head.py","link_basis":"harvester_set","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":"74bdc4124307cc00"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}