{"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/cluster-and-aggregate-face-recognition-with","title":"Cluster and Aggregate: Face Recognition with Large Probe Set","arxiv_id":"2210.10864","date":"2022-10-19","proceeding":null,"authors":["Minchul Kim","Feng Liu","Anil Jain","Xiaoming Liu"],"abstract":"Feature fusion plays a crucial role in unconstrained face recognition where inputs (probes) comprise of a set of $N$ low quality images whose individual qualities vary. Advances in attention and recurrent modules have led to feature fusion that can model the relationship among the images in the input set. However, attention mechanisms cannot scale to large $N$ due to their quadratic complexity and recurrent modules suffer from input order sensitivity. We propose a two-stage feature fusion paradigm, Cluster and Aggregate, that can both scale to large $N$ and maintain the ability to perform sequential inference with order invariance. Specifically, Cluster stage is a linear assignment of $N$ inputs to $M$ global cluster centers, and Aggregation stage is a fusion over $M$ clustered features. The clustered features play an integral role when the inputs are sequential as they can serve as a summarization of past features. By leveraging the order-invariance of incremental averaging operation, we design an update rule that achieves batch-order invariance, which guarantees that the contributions of early image in the sequence do not diminish as time steps increase. Experiments on IJB-B and IJB-S benchmark datasets show the superiority of the proposed two-stage paradigm in unconstrained face recognition. Code and pretrained models are available in https://github.com/mk-minchul/caface","url_abs":"https://arxiv.org/abs/2210.10864v3","url_pdf":"https://arxiv.org/pdf/2210.10864v3.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":"cluster-and-aggregate-face-recognition-with","repo_url":"https://github.com/mk-minchul/caface","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"face-recognition","task_name":"Face Recognition"},{"task_slug":"face-verification","task_name":"Face Verification"},{"task_slug":"surveillance-to-booking","task_name":"Surveillance-to-Booking"},{"task_slug":"surveillance-to-single","task_name":"Surveillance-to-Single"},{"task_slug":"surveillance-to-surveillance","task_name":"Surveillance-to-Surveillance"},{"task_slug":"video-recognition","task_name":"Video Recognition"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/face-verification-on-bts3-1","task":"Face Verification","dataset":"BTS3.1","model":"CAFace (Adaface)","rank_in_archive_order":5,"of":7,"metrics":{"TAR @ FAR=0.01":"0.5131"},"uses_additional_data":false},{"leaderboard":"/sota/face-verification-on-ijb-b","task":"Face Verification","dataset":"IJB-B","model":"CAFace+AdaFace (WebFace4M)","rank_in_archive_order":8,"of":12,"metrics":{"TAR @ FAR=0.001":"96.91","TAR @ FAR=1e-5":"92.29","TAR@FAR=0.0001":"95.53"},"uses_additional_data":false},{"leaderboard":"/sota/face-verification-on-ijb-c","task":"Face Verification","dataset":"IJB-C","model":"CAFace+AdaFace (WebFace4M)","rank_in_archive_order":15,"of":26,"metrics":{"TAR @ FAR=1e-3":"98.08","TAR @ FAR=1e-4":"97.3%"},"uses_additional_data":false}],"syntology":{"syntology_url":"https://syntology.ai/paper/2210.10864","atlas_url":"https://app.syntology.ai/?focus=2210.10864","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2210.10864"}},"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":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/mk-minchul/caface","reach":null}],"summary":{"ran":6,"ran_draft_wrong":1,"unverified":2},"by_repo_kind":{"official":{"samples":9,"ran":7,"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":"93214fc49b998c82","entry":"AssignAttention","repo":"mk-minchul/caface","repo_kind":"official","path":"caface/nets/transformer/cluster_transformer.py","file_url":"https://github.com/mk-minchul/caface/blob/HEAD/caface/nets/transformer/cluster_transformer.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":"93214fc49b998c82"}},{"code_sha256_prefix":"e7ef7a4e5e9d4847","entry":"AttnBlock","repo":"mk-minchul/caface","repo_kind":"official","path":"caface/nets/transformer/cluster_transformer.py","file_url":"https://github.com/mk-minchul/caface/blob/HEAD/caface/nets/transformer/cluster_transformer.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":"e7ef7a4e5e9d4847"}},{"code_sha256_prefix":"d811092eecf8a08a","entry":"ClusteringBlock","repo":"mk-minchul/caface","repo_kind":"official","path":"caface/nets/transformer/cluster_transformer.py","file_url":"https://github.com/mk-minchul/caface/blob/HEAD/caface/nets/transformer/cluster_transformer.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":"d811092eecf8a08a"}},{"code_sha256_prefix":"1d5a95abf105fecc","entry":"L2Norm","repo":"mk-minchul/caface","repo_kind":"official","path":"caface/nets/transformer/cluster_transformer.py","file_url":"https://github.com/mk-minchul/caface/blob/HEAD/caface/nets/transformer/cluster_transformer.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":"1d5a95abf105fecc"}},{"code_sha256_prefix":"cd507c714a387854","entry":"MixerBlock","repo":"mk-minchul/caface","repo_kind":"official","path":"caface/nets/transformer/cluster_transformer.py","file_url":"https://github.com/mk-minchul/caface/blob/HEAD/caface/nets/transformer/cluster_transformer.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":"cd507c714a387854"}},{"code_sha256_prefix":"90214f9e6210c7ae","entry":"MlpBlock","repo":"mk-minchul/caface","repo_kind":"official","path":"caface/nets/transformer/cluster_transformer.py","file_url":"https://github.com/mk-minchul/caface/blob/HEAD/caface/nets/transformer/cluster_transformer.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":"90214f9e6210c7ae"}},{"code_sha256_prefix":"7907c5f114be35a8","entry":"incremental_mean","repo":"mk-minchul/caface","repo_kind":"official","path":"caface/nets/transformer/cluster_transformer.py","file_url":"https://github.com/mk-minchul/caface/blob/HEAD/caface/nets/transformer/cluster_transformer.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7907c5f114be35a8"}},{"code_sha256_prefix":"a24a5576d03a6928","entry":"ClusterAggregateTransformer","repo":"mk-minchul/caface","repo_kind":"official","path":"caface/nets/transformer/cluster_transformer.py","file_url":"https://github.com/mk-minchul/caface/blob/HEAD/caface/nets/transformer/cluster_transformer.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":"a24a5576d03a6928"}},{"code_sha256_prefix":"ea798bcd5579da40","entry":"ClusteringLayer","repo":"mk-minchul/caface","repo_kind":"official","path":"caface/nets/transformer/cluster_transformer.py","file_url":"https://github.com/mk-minchul/caface/blob/HEAD/caface/nets/transformer/cluster_transformer.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":"ea798bcd5579da40"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}