{"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/ouroboros3d-image-to-3d-generation-via-3d","title":"Ouroboros3D: Image-to-3D Generation via 3D-aware Recursive Diffusion","arxiv_id":"2406.03184","date":"2024-06-05","proceeding":"CVPR 2025 1","authors":["Hao Wen","Zehuan Huang","Yaohui Wang","Xinyuan Chen","Lu Sheng"],"abstract":"Existing single image-to-3D creation methods typically involve a two-stage process, first generating multi-view images, and then using these images for 3D reconstruction. However, training these two stages separately leads to significant data bias in the inference phase, thus affecting the quality of reconstructed results. We introduce a unified 3D generation framework, named Ouroboros3D, which integrates diffusion-based multi-view image generation and 3D reconstruction into a recursive diffusion process. In our framework, these two modules are jointly trained through a self-conditioning mechanism, allowing them to adapt to each other's characteristics for robust inference. During the multi-view denoising process, the multi-view diffusion model uses the 3D-aware maps rendered by the reconstruction module at the previous timestep as additional conditions. The recursive diffusion framework with 3D-aware feedback unites the entire process and improves geometric consistency.Experiments show that our framework outperforms separation of these two stages and existing methods that combine them at the inference phase. Project page: https://costwen.github.io/Ouroboros3D/","url_abs":"https://arxiv.org/abs/2406.03184v2","url_pdf":"https://arxiv.org/pdf/2406.03184v2.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":"ouroboros3d-image-to-3d-generation-via-3d","repo_url":"https://github.com/Costwen/Ouroboros3D","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"3d-generation","task_name":"3D Generation"},{"task_slug":"3d-reconstruction","task_name":"3D Reconstruction"},{"task_slug":"denoising","task_name":"Denoising"},{"task_slug":"image-generation","task_name":"Image Generation"},{"task_slug":"image-to-3d","task_name":"Image to 3D"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2406.03184","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2406.03184"}},"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/Costwen/Ouroboros3D","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_draft_wrong":4,"ran_honours":3,"ran":5,"unverified":2},"by_repo_kind":{"official":{"samples":14,"ran":12,"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":"95abae1a2b93399d","entry":"PILtoTorch","repo":"Costwen/Ouroboros3D","repo_kind":"official","path":"src/utils/general.py","file_url":"https://github.com/Costwen/Ouroboros3D/blob/HEAD/src/utils/general.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"95abae1a2b93399d"}},{"code_sha256_prefix":"85342d2483112eb6","entry":"fov2focal","repo":"Costwen/Ouroboros3D","repo_kind":"official","path":"inference.py","file_url":"https://github.com/Costwen/Ouroboros3D/blob/HEAD/inference.py","link_basis":"plan_row","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"85342d2483112eb6"}},{"code_sha256_prefix":"7325f65ee1e29543","entry":"get_expon_lr_func","repo":"Costwen/Ouroboros3D","repo_kind":"official","path":"src/utils/general.py","file_url":"https://github.com/Costwen/Ouroboros3D/blob/HEAD/src/utils/general.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7325f65ee1e29543"}},{"code_sha256_prefix":"f5b98a41b3655fc4","entry":"get_hparams","repo":"Costwen/Ouroboros3D","repo_kind":"official","path":"src/utils/config.py","file_url":"https://github.com/Costwen/Ouroboros3D/blob/HEAD/src/utils/config.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f5b98a41b3655fc4"}},{"code_sha256_prefix":"88425b9ca90e613c","entry":"get_intrinsics_by_fov","repo":"Costwen/Ouroboros3D","repo_kind":"official","path":"src/utils/cameras.py","file_url":"https://github.com/Costwen/Ouroboros3D/blob/HEAD/src/utils/cameras.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"88425b9ca90e613c"}},{"code_sha256_prefix":"221b2d116fdf1032","entry":"get_obj_from_str","repo":"Costwen/Ouroboros3D","repo_kind":"official","path":"src/utils/instantiators.py","file_url":"https://github.com/Costwen/Ouroboros3D/blob/HEAD/src/utils/instantiators.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":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"221b2d116fdf1032"}},{"code_sha256_prefix":"690cd38b260e0943","entry":"get_position_map_from_depth","repo":"Costwen/Ouroboros3D","repo_kind":"official","path":"src/utils/geometry.py","file_url":"https://github.com/Costwen/Ouroboros3D/blob/HEAD/src/utils/geometry.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"690cd38b260e0943"}},{"code_sha256_prefix":"b488da571728b636","entry":"inverse_sigmoid","repo":"Costwen/Ouroboros3D","repo_kind":"official","path":"src/utils/general.py","file_url":"https://github.com/Costwen/Ouroboros3D/blob/HEAD/src/utils/general.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b488da571728b636"}},{"code_sha256_prefix":"73d85661e6ff4181","entry":"parse_structured","repo":"Costwen/Ouroboros3D","repo_kind":"official","path":"src/utils/config.py","file_url":"https://github.com/Costwen/Ouroboros3D/blob/HEAD/src/utils/config.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"73d85661e6ff4181"}},{"code_sha256_prefix":"c33bff4fa6509334","entry":"read_cameras_binary","repo":"Costwen/Ouroboros3D","repo_kind":"official","path":"src/utils/colmap.py","file_url":"https://github.com/Costwen/Ouroboros3D/blob/HEAD/src/utils/colmap.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c33bff4fa6509334"}},{"code_sha256_prefix":"8a38e306ff4c5b42","entry":"read_cameras_text","repo":"Costwen/Ouroboros3D","repo_kind":"official","path":"src/utils/colmap.py","file_url":"https://github.com/Costwen/Ouroboros3D/blob/HEAD/src/utils/colmap.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":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8a38e306ff4c5b42"}},{"code_sha256_prefix":"56858e04e6fdb2ff","entry":"read_next_bytes","repo":"Costwen/Ouroboros3D","repo_kind":"official","path":"src/utils/colmap.py","file_url":"https://github.com/Costwen/Ouroboros3D/blob/HEAD/src/utils/colmap.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"56858e04e6fdb2ff"}},{"code_sha256_prefix":"9b93e1ea090c1f7c","entry":"get_position_map","repo":"Costwen/Ouroboros3D","repo_kind":"official","path":"src/utils/geometry.py","file_url":"https://github.com/Costwen/Ouroboros3D/blob/HEAD/src/utils/geometry.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9b93e1ea090c1f7c"}},{"code_sha256_prefix":"dcbf30e5516a846d","entry":"instantiate_from_config","repo":"Costwen/Ouroboros3D","repo_kind":"official","path":"src/utils/instantiators.py","file_url":"https://github.com/Costwen/Ouroboros3D/blob/HEAD/src/utils/instantiators.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"dcbf30e5516a846d"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}