{"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/reflection-and-rotation-symmetry-detection","title":"Reflection and Rotation Symmetry Detection via Equivariant Learning","arxiv_id":"2203.16787","date":"2022-03-31","proceeding":"CVPR 2022 1","authors":["Ahyun Seo","Byungjin Kim","Suha Kwak","Minsu Cho"],"abstract":"The inherent challenge of detecting symmetries stems from arbitrary orientations of symmetry patterns; a reflection symmetry mirrors itself against an axis with a specific orientation while a rotation symmetry matches its rotated copy with a specific orientation. Discovering such symmetry patterns from an image thus benefits from an equivariant feature representation, which varies consistently with reflection and rotation of the image. In this work, we introduce a group-equivariant convolutional network for symmetry detection, dubbed EquiSym, which leverages equivariant feature maps with respect to a dihedral group of reflection and rotation. The proposed network is built end-to-end with dihedrally-equivariant layers and trained to output a spatial map for reflection axes or rotation centers. We also present a new dataset, DENse and DIverse symmetry (DENDI), which mitigates limitations of existing benchmarks for reflection and rotation symmetry detection. Experiments show that our method achieves the state of the arts in symmetry detection on LDRS and DENDI datasets.","url_abs":"https://arxiv.org/abs/2203.16787v1","url_pdf":"https://arxiv.org/pdf/2203.16787v1.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":"reflection-and-rotation-symmetry-detection","repo_url":"https://github.com/ahyunSeo/EquiSym","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"symmetry-detection","task_name":"Symmetry Detection"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2203.16787","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2203.16787"}},"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/ahyunSeo/EquiSym","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":1,"ran_draft_wrong":2,"unverified":9},"by_repo_kind":{"official":{"samples":12,"ran":3,"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":"6b37c8eb77e486dc","entry":"as_numpy","repo":"ahyunSeo/EquiSym","repo_kind":"official","path":"modeling/sync_batchnorm/unittest.py","file_url":"https://github.com/ahyunSeo/EquiSym/blob/HEAD/modeling/sync_batchnorm/unittest.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":"6b37c8eb77e486dc"}},{"code_sha256_prefix":"2a80220dabcb742a","entry":"conv1x1","repo":"ahyunSeo/EquiSym","repo_kind":"official","path":"modeling/resnet.py","file_url":"https://github.com/ahyunSeo/EquiSym/blob/HEAD/modeling/resnet.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2a80220dabcb742a"}},{"code_sha256_prefix":"600ff2c45e0de056","entry":"conv3x3","repo":"ahyunSeo/EquiSym","repo_kind":"official","path":"modeling/resnet.py","file_url":"https://github.com/ahyunSeo/EquiSym/blob/HEAD/modeling/resnet.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"600ff2c45e0de056"}},{"code_sha256_prefix":"0c33da5649aaadc7","entry":"build_backbone","repo":"ahyunSeo/EquiSym","repo_kind":"official","path":"modeling/module.py","file_url":"https://github.com/ahyunSeo/EquiSym/blob/HEAD/modeling/module.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":"0c33da5649aaadc7"}},{"code_sha256_prefix":"6d1c79f0590d1183","entry":"draw_axis","repo":"ahyunSeo/EquiSym","repo_kind":"official","path":"utils.py","file_url":"https://github.com/ahyunSeo/EquiSym/blob/HEAD/utils.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":"6d1c79f0590d1183"}},{"code_sha256_prefix":"45b829b6128c7a7a","entry":"draw_points","repo":"ahyunSeo/EquiSym","repo_kind":"official","path":"dendi_loader.py","file_url":"https://github.com/ahyunSeo/EquiSym/blob/HEAD/dendi_loader.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":"45b829b6128c7a7a"}},{"code_sha256_prefix":"909f73ddeb90d699","entry":"match_input_type","repo":"ahyunSeo/EquiSym","repo_kind":"official","path":"utils.py","file_url":"https://github.com/ahyunSeo/EquiSym/blob/HEAD/utils.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":"909f73ddeb90d699"}},{"code_sha256_prefix":"eac72b9de183eb07","entry":"norm","repo":"ahyunSeo/EquiSym","repo_kind":"official","path":"utils.py","file_url":"https://github.com/ahyunSeo/EquiSym/blob/HEAD/utils.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":"eac72b9de183eb07"}},{"code_sha256_prefix":"af8ed14d63b51a5f","entry":"patch_replication_callback","repo":"ahyunSeo/EquiSym","repo_kind":"official","path":"modeling/sync_batchnorm/replicate.py","file_url":"https://github.com/ahyunSeo/EquiSym/blob/HEAD/modeling/sync_batchnorm/replicate.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":"af8ed14d63b51a5f"}},{"code_sha256_prefix":"e1b125d5ce751093","entry":"regular_feature_type","repo":"ahyunSeo/EquiSym","repo_kind":"official","path":"modeling/eq_resnet.py","file_url":"https://github.com/ahyunSeo/EquiSym/blob/HEAD/modeling/eq_resnet.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":"e1b125d5ce751093"}},{"code_sha256_prefix":"6300a37e41b7bcc8","entry":"set_gspace","repo":"ahyunSeo/EquiSym","repo_kind":"official","path":"modeling/eq_resnet.py","file_url":"https://github.com/ahyunSeo/EquiSym/blob/HEAD/modeling/eq_resnet.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":"6300a37e41b7bcc8"}},{"code_sha256_prefix":"6f410613e19b5bb7","entry":"trivial_feature_type","repo":"ahyunSeo/EquiSym","repo_kind":"official","path":"modeling/eq_resnet.py","file_url":"https://github.com/ahyunSeo/EquiSym/blob/HEAD/modeling/eq_resnet.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":"6f410613e19b5bb7"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}