{"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/embedding-expansion-augmentation-in-embedding","title":"Embedding Expansion: Augmentation in Embedding Space for Deep Metric Learning","arxiv_id":"2003.02546","date":"2020-03-05","proceeding":"CVPR 2020 6","authors":["Byungsoo Ko","Geonmo Gu"],"abstract":"Learning the distance metric between pairs of samples has been studied for image retrieval and clustering. With the remarkable success of pair-based metric learning losses, recent works have proposed the use of generated synthetic points on metric learning losses for augmentation and generalization. However, these methods require additional generative networks along with the main network, which can lead to a larger model size, slower training speed, and harder optimization. Meanwhile, post-processing techniques, such as query expansion and database augmentation, have proposed the combination of feature points to obtain additional semantic information. In this paper, inspired by query expansion and database augmentation, we propose an augmentation method in an embedding space for pair-based metric learning losses, called embedding expansion. The proposed method generates synthetic points containing augmented information by a combination of feature points and performs hard negative pair mining to learn with the most informative feature representations. Because of its simplicity and flexibility, it can be used for existing metric learning losses without affecting model size, training speed, or optimization difficulty. Finally, the combination of embedding expansion and representative metric learning losses outperforms the state-of-the-art losses and previous sample generation methods in both image retrieval and clustering tasks. The implementation is publicly available.","url_abs":"https://arxiv.org/abs/2003.02546v3","url_pdf":"https://arxiv.org/pdf/2003.02546v3.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":"embedding-expansion-augmentation-in-embedding","repo_url":"https://github.com/clovaai/embedding-expansion","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"mxnet","reach":null},{"paper_slug":"embedding-expansion-augmentation-in-embedding","repo_url":"https://github.com/puneesh00/loop","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"mxnet","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"clustering","task_name":"Clustering"},{"task_slug":"image-retrieval","task_name":"Image Retrieval"},{"task_slug":"metric-learning","task_name":"Metric Learning"},{"task_slug":"retrieval","task_name":"Retrieval"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2003.02546","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2003.02546"}},"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/clovaai/embedding-expansion","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/puneesh00/loop","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_fixture":1,"unverified":8},"by_repo_kind":{"official":{"samples":1,"ran":1,"repositories":1},"listed":{"samples":8,"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":"70b3555b698a27db","entry":"get_embedding_aug","repo":"clovaai/embedding-expansion","repo_kind":"official","path":"loss/embedding_aug.py","file_url":"https://github.com/clovaai/embedding-expansion/blob/HEAD/loss/embedding_aug.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"70b3555b698a27db"}},{"code_sha256_prefix":"a645a2dfd75685c5","entry":"concat","repo":"puneesh00/loop","repo_kind":"listed","path":"loss/embedding_aug_mx.py","file_url":"https://github.com/puneesh00/loop/blob/HEAD/loss/embedding_aug_mx.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":"a645a2dfd75685c5"}},{"code_sha256_prefix":"63190af7829635b2","entry":"euclidean_dist","repo":"puneesh00/loop","repo_kind":"listed","path":"loss/embedding_aug_mx.py","file_url":"https://github.com/puneesh00/loop/blob/HEAD/loss/embedding_aug_mx.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":"63190af7829635b2"}},{"code_sha256_prefix":"98fc6cdbe46dc59f","entry":"euclidean_dist_alt","repo":"puneesh00/loop","repo_kind":"listed","path":"loss/embedding_aug_mx.py","file_url":"https://github.com/puneesh00/loop/blob/HEAD/loss/embedding_aug_mx.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":"98fc6cdbe46dc59f"}},{"code_sha256_prefix":"238d0e58bf5e2c2a","entry":"get_lam_lin","repo":"puneesh00/loop","repo_kind":"listed","path":"loss/optimum_pts_lin.py","file_url":"https://github.com/puneesh00/loop/blob/HEAD/loss/optimum_pts_lin.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":"238d0e58bf5e2c2a"}},{"code_sha256_prefix":"ad23c83f976df643","entry":"get_roots","repo":"puneesh00/loop","repo_kind":"listed","path":"loss/optimum_pts.py","file_url":"https://github.com/puneesh00/loop/blob/HEAD/loss/optimum_pts.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":"ad23c83f976df643"}},{"code_sha256_prefix":"4efe9ed220f93e69","entry":"getn","repo":"puneesh00/loop","repo_kind":"listed","path":"loss/optimum_pts.py","file_url":"https://github.com/puneesh00/loop/blob/HEAD/loss/optimum_pts.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":"4efe9ed220f93e69"}},{"code_sha256_prefix":"5f68094ff552c59d","entry":"normalize","repo":"puneesh00/loop","repo_kind":"listed","path":"loss/optimum_pts.py","file_url":"https://github.com/puneesh00/loop/blob/HEAD/loss/optimum_pts.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":"5f68094ff552c59d"}},{"code_sha256_prefix":"7be77be876544ef9","entry":"point_lin","repo":"puneesh00/loop","repo_kind":"listed","path":"loss/optimum_pts_lin.py","file_url":"https://github.com/puneesh00/loop/blob/HEAD/loss/optimum_pts_lin.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":"7be77be876544ef9"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}