{"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/nerd-neural-3d-reflection-symmetry-detector","title":"NeRD: Neural 3D Reflection Symmetry Detector","arxiv_id":"2105.03211","date":"2021-04-19","proceeding":"CVPR 2021 1","authors":["Yichao Zhou","Shichen Liu","Yi Ma"],"abstract":"Recent advances have shown that symmetry, a structural prior that most objects exhibit, can support a variety of single-view 3D understanding tasks. However, detecting 3D symmetry from an image remains a challenging task. Previous works either assume that the symmetry is given or detect the symmetry with a heuristic-based method. In this paper, we present NeRD, a Neural 3D Reflection Symmetry Detector, which combines the strength of learning-based recognition and geometry-based reconstruction to accurately recover the normal direction of objects' mirror planes. Specifically, we first enumerate the symmetry planes with a coarse-to-fine strategy and then find the best ones by building 3D cost volumes to examine the intra-image pixel correspondence from the symmetry. Our experiments show that the symmetry planes detected with our method are significantly more accurate than the planes from direct CNN regression on both synthetic and real-world datasets. We also demonstrate that the detected symmetry can be used to improve the performance of downstream tasks such as pose estimation and depth map regression. The code of this paper has been made public at https://github.com/zhou13/nerd.","url_abs":"https://arxiv.org/abs/2105.03211v1","url_pdf":"https://arxiv.org/pdf/2105.03211v1.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":"nerd-neural-3d-reflection-symmetry-detector","repo_url":"https://github.com/zhou13/nerd","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"nerd-neural-3d-reflection-symmetry-detector","repo_url":"https://github.com/zhou13/symmetrynet","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"pose-estimation","task_name":"Pose Estimation"},{"task_slug":"regression-1","task_name":"regression"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2105.03211","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2105.03211"}},"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":"deterministic:regex_extraction","url":"https://github.com/zhou13/nerd","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":10},"by_repo_kind":{"official":{"samples":10,"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":"a420bd26ffd79633","entry":"abn","repo":"zhou13/nerd","repo_kind":"official","path":"sym/models/hourglass_pose.py","file_url":"https://github.com/zhou13/nerd/blob/HEAD/sym/models/hourglass_pose.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":"a420bd26ffd79633"}},{"code_sha256_prefix":"08fa3af6222de022","entry":"gold_spiral_sampling_patch","repo":"zhou13/nerd","repo_kind":"official","path":"misc/find-radius.py","file_url":"https://github.com/zhou13/nerd/blob/HEAD/misc/find-radius.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":"08fa3af6222de022"}},{"code_sha256_prefix":"c1f51d0f02b4e2c9","entry":"l1_smooth","repo":"zhou13/nerd","repo_kind":"official","path":"sym/models/symmetry_net.py","file_url":"https://github.com/zhou13/nerd/blob/HEAD/sym/models/symmetry_net.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":"c1f51d0f02b4e2c9"}},{"code_sha256_prefix":"b6cf865210ac7f8c","entry":"orth","repo":"zhou13/nerd","repo_kind":"official","path":"misc/find-radius.py","file_url":"https://github.com/zhou13/nerd/blob/HEAD/misc/find-radius.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":"b6cf865210ac7f8c"}},{"code_sha256_prefix":"bc332be5812ad278","entry":"parmap","repo":"zhou13/nerd","repo_kind":"official","path":"sym/parmapper.py","file_url":"https://github.com/zhou13/nerd/blob/HEAD/sym/parmapper.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":"bc332be5812ad278"}},{"code_sha256_prefix":"e7a582d5f69b3f51","entry":"relu_dropout","repo":"zhou13/nerd","repo_kind":"official","path":"sym/models/utils.py","file_url":"https://github.com/zhou13/nerd/blob/HEAD/sym/models/utils.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":"e7a582d5f69b3f51"}},{"code_sha256_prefix":"367253015238b2bf","entry":"resample","repo":"zhou13/nerd","repo_kind":"official","path":"sym/models/utils.py","file_url":"https://github.com/zhou13/nerd/blob/HEAD/sym/models/utils.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":"367253015238b2bf"}},{"code_sha256_prefix":"7cce33ddd68a3664","entry":"sample_sphere","repo":"zhou13/nerd","repo_kind":"official","path":"sym/datasets.py","file_url":"https://github.com/zhou13/nerd/blob/HEAD/sym/datasets.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":"7cce33ddd68a3664"}},{"code_sha256_prefix":"e04758e29ed93fad","entry":"sample_symmetry","repo":"zhou13/nerd","repo_kind":"official","path":"sym/datasets.py","file_url":"https://github.com/zhou13/nerd/blob/HEAD/sym/datasets.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":"e04758e29ed93fad"}},{"code_sha256_prefix":"34ac6f4ec368f69a","entry":"warp","repo":"zhou13/nerd","repo_kind":"official","path":"sym/models/utils.py","file_url":"https://github.com/zhou13/nerd/blob/HEAD/sym/models/utils.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":"34ac6f4ec368f69a"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}