{"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/pc-2-projection-conditioned-point-cloud","title":"$PC^2$: Projection-Conditioned Point Cloud Diffusion for Single-Image 3D Reconstruction","arxiv_id":"2302.10668","date":"2023-02-21","proceeding":null,"authors":["Luke Melas-Kyriazi","Christian Rupprecht","Andrea Vedaldi"],"abstract":"Reconstructing the 3D shape of an object from a single RGB image is a long-standing and highly challenging problem in computer vision. In this paper, we propose a novel method for single-image 3D reconstruction which generates a sparse point cloud via a conditional denoising diffusion process. Our method takes as input a single RGB image along with its camera pose and gradually denoises a set of 3D points, whose positions are initially sampled randomly from a three-dimensional Gaussian distribution, into the shape of an object. The key to our method is a geometrically-consistent conditioning process which we call projection conditioning: at each step in the diffusion process, we project local image features onto the partially-denoised point cloud from the given camera pose. This projection conditioning process enables us to generate high-resolution sparse geometries that are well-aligned with the input image, and can additionally be used to predict point colors after shape reconstruction. Moreover, due to the probabilistic nature of the diffusion process, our method is naturally capable of generating multiple different shapes consistent with a single input image. In contrast to prior work, our approach not only performs well on synthetic benchmarks, but also gives large qualitative improvements on complex real-world data.","url_abs":"https://arxiv.org/abs/2302.10668v2","url_pdf":"https://arxiv.org/pdf/2302.10668v2.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":"pc-2-projection-conditioned-point-cloud","repo_url":"https://github.com/lukemelas/projection-conditioned-point-cloud-diffusion","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"pc-2-projection-conditioned-point-cloud","repo_url":"https://github.com/jiangchaokang/3dsflabelling","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"3d-reconstruction","task_name":"3D Reconstruction"},{"task_slug":"denoising","task_name":"Denoising"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2302.10668","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2302.10668"}},"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/lukemelas/projection-conditioned-point-cloud-diffusion","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/jiangchaokang/3dsflabelling","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":2,"unverified":4},"by_repo_kind":{"official":{"samples":6,"ran":2,"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":"0eeb77e85d774c36","entry":"compute_distance_transform","repo":"lukemelas/projection-conditioned-point-cloud-diffusion","repo_kind":"official","path":"experiments/model/model_utils.py","file_url":"https://github.com/lukemelas/projection-conditioned-point-cloud-diffusion/blob/HEAD/experiments/model/model_utils.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":"0eeb77e85d774c36"}},{"code_sha256_prefix":"955167c60edf7817","entry":"default","repo":"lukemelas/projection-conditioned-point-cloud-diffusion","repo_kind":"official","path":"experiments/model/model_utils.py","file_url":"https://github.com/lukemelas/projection-conditioned-point-cloud-diffusion/blob/HEAD/experiments/model/model_utils.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":"955167c60edf7817"}},{"code_sha256_prefix":"09628c14dfdcade5","entry":"accuracy","repo":"lukemelas/projection-conditioned-point-cloud-diffusion","repo_kind":"official","path":"experiments/training_utils.py","file_url":"https://github.com/lukemelas/projection-conditioned-point-cloud-diffusion/blob/HEAD/experiments/training_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":"09628c14dfdcade5"}},{"code_sha256_prefix":"3ae9211702bd1e21","entry":"norm","repo":"lukemelas/projection-conditioned-point-cloud-diffusion","repo_kind":"official","path":"experiments/diffusion_utils.py","file_url":"https://github.com/lukemelas/projection-conditioned-point-cloud-diffusion/blob/HEAD/experiments/diffusion_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":"3ae9211702bd1e21"}},{"code_sha256_prefix":"5cdd96cd37df5d95","entry":"rotate","repo":"lukemelas/projection-conditioned-point-cloud-diffusion","repo_kind":"official","path":"experiments/diffusion_utils.py","file_url":"https://github.com/lukemelas/projection-conditioned-point-cloud-diffusion/blob/HEAD/experiments/diffusion_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":"5cdd96cd37df5d95"}},{"code_sha256_prefix":"3fa2e4261af762a4","entry":"rotation_matrix","repo":"lukemelas/projection-conditioned-point-cloud-diffusion","repo_kind":"official","path":"experiments/diffusion_utils.py","file_url":"https://github.com/lukemelas/projection-conditioned-point-cloud-diffusion/blob/HEAD/experiments/diffusion_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":"3fa2e4261af762a4"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}