{"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/hairstep-transfer-synthetic-to-real-using","title":"HairStep: Transfer Synthetic to Real Using Strand and Depth Maps for Single-View 3D Hair Modeling","arxiv_id":"2303.02700","date":"2023-03-05","proceeding":"CVPR 2023 1","authors":["Yujian Zheng","Zirong Jin","Moran Li","Haibin Huang","Chongyang Ma","Shuguang Cui","Xiaoguang Han"],"abstract":"In this work, we tackle the challenging problem of learning-based single-view 3D hair modeling. Due to the great difficulty of collecting paired real image and 3D hair data, using synthetic data to provide prior knowledge for real domain becomes a leading solution. This unfortunately introduces the challenge of domain gap. Due to the inherent difficulty of realistic hair rendering, existing methods typically use orientation maps instead of hair images as input to bridge the gap. We firmly think an intermediate representation is essential, but we argue that orientation map using the dominant filtering-based methods is sensitive to uncertain noise and far from a competent representation. Thus, we first raise this issue up and propose a novel intermediate representation, termed as HairStep, which consists of a strand map and a depth map. It is found that HairStep not only provides sufficient information for accurate 3D hair modeling, but also is feasible to be inferred from real images. Specifically, we collect a dataset of 1,250 portrait images with two types of annotations. A learning framework is further designed to transfer real images to the strand map and depth map. It is noted that, an extra bonus of our new dataset is the first quantitative metric for 3D hair modeling. Our experiments show that HairStep narrows the domain gap between synthetic and real and achieves state-of-the-art performance on single-view 3D hair reconstruction.","url_abs":"https://arxiv.org/abs/2303.02700v2","url_pdf":"https://arxiv.org/pdf/2303.02700v2.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":"hairstep-transfer-synthetic-to-real-using","repo_url":"https://github.com/GAP-LAB-CUHK-SZ/HairStep","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2303.02700","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2303.02700"}},"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/GAP-LAB-CUHK-SZ/HairStep","reach":null}],"summary":{"ran":5},"by_repo_kind":{"listed":{"samples":5,"ran":5,"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":5,"samples":[{"code_sha256_prefix":"72bf21cc6c63f8fc","entry":"Body","repo":"GAP-LAB-CUHK-SZ/HairStep","repo_kind":"listed","path":"lib/model/img2hairstep/UNet.py","file_url":"https://github.com/GAP-LAB-CUHK-SZ/HairStep/blob/HEAD/lib/model/img2hairstep/UNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"72bf21cc6c63f8fc"}},{"code_sha256_prefix":"7c14ccbe099bd757","entry":"Conv","repo":"GAP-LAB-CUHK-SZ/HairStep","repo_kind":"listed","path":"lib/model/img2hairstep/UNet.py","file_url":"https://github.com/GAP-LAB-CUHK-SZ/HairStep/blob/HEAD/lib/model/img2hairstep/UNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"7c14ccbe099bd757"}},{"code_sha256_prefix":"14da2f8e65cbeaee","entry":"DownSampling","repo":"GAP-LAB-CUHK-SZ/HairStep","repo_kind":"listed","path":"lib/model/img2hairstep/UNet.py","file_url":"https://github.com/GAP-LAB-CUHK-SZ/HairStep/blob/HEAD/lib/model/img2hairstep/UNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"14da2f8e65cbeaee"}},{"code_sha256_prefix":"84cdbfa3e620aee6","entry":"Model","repo":"GAP-LAB-CUHK-SZ/HairStep","repo_kind":"listed","path":"lib/model/img2hairstep/UNet.py","file_url":"https://github.com/GAP-LAB-CUHK-SZ/HairStep/blob/HEAD/lib/model/img2hairstep/UNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"84cdbfa3e620aee6"}},{"code_sha256_prefix":"5eb71518ddd3df01","entry":"UpSampling","repo":"GAP-LAB-CUHK-SZ/HairStep","repo_kind":"listed","path":"lib/model/img2hairstep/UNet.py","file_url":"https://github.com/GAP-LAB-CUHK-SZ/HairStep/blob/HEAD/lib/model/img2hairstep/UNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"5eb71518ddd3df01"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}