{"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/ada-nets-face-clustering-via-adaptive-1","title":"Ada-NETS: Face Clustering via Adaptive Neighbour Discovery in the Structure Space","arxiv_id":"2202.03800","date":"2022-02-08","proceeding":"ICLR 2022 4","authors":["Yaohua Wang","Yaobin Zhang","Fangyi Zhang","Ming Lin","Yuqi Zhang","Senzhang Wang","Xiuyu Sun"],"abstract":"Face clustering has attracted rising research interest recently to take advantage of massive amounts of face images on the web. State-of-the-art performance has been achieved by Graph Convolutional Networks (GCN) due to their powerful representation capacity. However, existing GCN-based methods build face graphs mainly according to kNN relations in the feature space, which may lead to a lot of noise edges connecting two faces of different classes. The face features will be polluted when messages pass along these noise edges, thus degrading the performance of GCNs. In this paper, a novel algorithm named Ada-NETS is proposed to cluster faces by constructing clean graphs for GCNs. In Ada-NETS, each face is transformed to a new structure space, obtaining robust features by considering face features of the neighbour images. Then, an adaptive neighbour discovery strategy is proposed to determine a proper number of edges connecting to each face image. It significantly reduces the noise edges while maintaining the good ones to build a graph with clean yet rich edges for GCNs to cluster faces. Experiments on multiple public clustering datasets show that Ada-NETS significantly outperforms current state-of-the-art methods, proving its superiority and generalization. Code is available at https://github.com/damo-cv/Ada-NETS.","url_abs":"https://arxiv.org/abs/2202.03800v3","url_pdf":"https://arxiv.org/pdf/2202.03800v3.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":"ada-nets-face-clustering-via-adaptive-1","repo_url":"https://github.com/damo-cv/ada-nets","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"ada-nets-face-clustering-via-adaptive-1","repo_url":"https://github.com/Thomas-wyh/Ada-NETS","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"clustering","task_name":"Clustering"},{"task_slug":"face-clustering","task_name":"Face Clustering"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2202.03800","atlas_url":"https://app.syntology.ai/?focus=2202.03800","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2202.03800"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/damo-cv/Ada-NETS","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/damo-cv/ada-nets","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Thomas-wyh/Ada-NETS","reach":null}],"summary":{"ran":11,"unverified":4},"by_repo_kind":{"official":{"samples":15,"ran":11,"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":"bb6e98a818ab83bb","entry":"batch_search","repo":"damo-cv/Ada-NETS","repo_kind":"official","path":"tool/faiss_search.py","file_url":"https://github.com/damo-cv/Ada-NETS/blob/HEAD/tool/faiss_search.py","link_basis":"harvester_set","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":"bb6e98a818ab83bb"}},{"code_sha256_prefix":"b47e4da5605e550d","entry":"build_symmetric_adj","repo":"damo-cv/Ada-NETS","repo_kind":"official","path":"AND/adjacency.py","file_url":"https://github.com/damo-cv/Ada-NETS/blob/HEAD/AND/adjacency.py","link_basis":"harvester_set","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":"b47e4da5605e550d"}},{"code_sha256_prefix":"9cb5361facb80118","entry":"clusters2labels","repo":"damo-cv/Ada-NETS","repo_kind":"official","path":"GCN/cluster.py","file_url":"https://github.com/damo-cv/Ada-NETS/blob/HEAD/GCN/cluster.py","link_basis":"harvester_set","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":"9cb5361facb80118"}},{"code_sha256_prefix":"960270dfb8856837","entry":"filter_knns","repo":"damo-cv/Ada-NETS","repo_kind":"official","path":"tool/knn.py","file_url":"https://github.com/damo-cv/Ada-NETS/blob/HEAD/tool/knn.py","link_basis":"harvester_set","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":"960270dfb8856837"}},{"code_sha256_prefix":"f3041fc06ca7bbed","entry":"gcn_v","repo":"damo-cv/Ada-NETS","repo_kind":"official","path":"AND/net/gcn_v.py","file_url":"https://github.com/damo-cv/Ada-NETS/blob/HEAD/AND/net/gcn_v.py","link_basis":"harvester_set","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":"f3041fc06ca7bbed"}},{"code_sha256_prefix":"72c104b3d72d0dd9","entry":"get_neg_loss","repo":"damo-cv/Ada-NETS","repo_kind":"official","path":"GCN/net/optim_modules.py","file_url":"https://github.com/damo-cv/Ada-NETS/blob/HEAD/GCN/net/optim_modules.py","link_basis":"harvester_set","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":"72c104b3d72d0dd9"}},{"code_sha256_prefix":"9ee109079dbd413e","entry":"get_pos_loss","repo":"damo-cv/Ada-NETS","repo_kind":"official","path":"GCN/net/optim_modules.py","file_url":"https://github.com/damo-cv/Ada-NETS/blob/HEAD/GCN/net/optim_modules.py","link_basis":"harvester_set","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":"9ee109079dbd413e"}},{"code_sha256_prefix":"227696c1d71b8892","entry":"knns2ordered_nbrs","repo":"damo-cv/Ada-NETS","repo_kind":"official","path":"tool/knn.py","file_url":"https://github.com/damo-cv/Ada-NETS/blob/HEAD/tool/knn.py","link_basis":"harvester_set","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":"227696c1d71b8892"}},{"code_sha256_prefix":"ce0784d592bd0d41","entry":"row_normalize","repo":"damo-cv/Ada-NETS","repo_kind":"official","path":"AND/adjacency.py","file_url":"https://github.com/damo-cv/Ada-NETS/blob/HEAD/AND/adjacency.py","link_basis":"harvester_set","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":"ce0784d592bd0d41"}},{"code_sha256_prefix":"f73847ac9f20f56a","entry":"sparse_mx_to_indices_values","repo":"damo-cv/Ada-NETS","repo_kind":"official","path":"AND/adjacency.py","file_url":"https://github.com/damo-cv/Ada-NETS/blob/HEAD/AND/adjacency.py","link_basis":"harvester_set","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":"f73847ac9f20f56a"}},{"code_sha256_prefix":"6bd747fe350f9027","entry":"sqeuclidean_pdist","repo":"damo-cv/Ada-NETS","repo_kind":"official","path":"GCN/net/optim_modules.py","file_url":"https://github.com/damo-cv/Ada-NETS/blob/HEAD/GCN/net/optim_modules.py","link_basis":"harvester_set","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":"6bd747fe350f9027"}},{"code_sha256_prefix":"b49214d884be3833","entry":"format","repo":"damo-cv/Ada-NETS","repo_kind":"official","path":"GCN/cluster.py","file_url":"https://github.com/damo-cv/Ada-NETS/blob/HEAD/GCN/cluster.py","link_basis":"harvester_set","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":"b49214d884be3833"}},{"code_sha256_prefix":"874120f76adf0d08","entry":"get_Rstarset","repo":"Thomas-wyh/Ada-NETS","repo_kind":"official","path":"tool/struct_space.py","file_url":"https://github.com/Thomas-wyh/Ada-NETS/blob/HEAD/tool/struct_space.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":"874120f76adf0d08"}},{"code_sha256_prefix":"020579fb712da25b","entry":"get_topK","repo":"damo-cv/Ada-NETS","repo_kind":"official","path":"tool/max_Q_ind.py","file_url":"https://github.com/damo-cv/Ada-NETS/blob/HEAD/tool/max_Q_ind.py","link_basis":"harvester_set","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":"020579fb712da25b"}},{"code_sha256_prefix":"6979c33355f8cd0a","entry":"knns_recall","repo":"damo-cv/Ada-NETS","repo_kind":"official","path":"tool/knn.py","file_url":"https://github.com/damo-cv/Ada-NETS/blob/HEAD/tool/knn.py","link_basis":"harvester_set","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":"6979c33355f8cd0a"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}