{"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/gs-phong-meta-learned-3d-gaussians-for","title":"GS-Phong: Meta-Learned 3D Gaussians for Relightable Novel View Synthesis","arxiv_id":"2405.20791","date":"2024-05-31","proceeding":null,"authors":["Yumeng He","Yunbo Wang","Xiaokang Yang"],"abstract":"Decoupling the illumination in 3D scenes is crucial for novel view synthesis and relighting. In this paper, we propose a novel method for representing a scene illuminated by a point light using a set of relightable 3D Gaussian points. Inspired by the Blinn-Phong model, our approach decomposes the scene into ambient, diffuse, and specular components, enabling the synthesis of realistic lighting effects. To facilitate the decomposition of geometric information independent of lighting conditions, we introduce a novel bilevel optimization-based meta-learning framework. The fundamental idea is to view the rendering tasks under various lighting positions as a multi-task learning problem, which our meta-learning approach effectively addresses by generalizing the learned Gaussian geometries not only across different viewpoints but also across diverse light positions. Experimental results demonstrate the effectiveness of our approach in terms of training efficiency and rendering quality compared to existing methods for free-viewpoint relighting.","url_abs":"https://arxiv.org/abs/2405.20791v1","url_pdf":"https://arxiv.org/pdf/2405.20791v1.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":"gs-phong-meta-learned-3d-gaussians-for","repo_url":"https://github.com/ymhe12/GS-Phong","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"bilevel-optimization","task_name":"Bilevel Optimization"},{"task_slug":"meta-learning","task_name":"Meta-Learning"},{"task_slug":"multi-task-learning","task_name":"Multi-Task Learning"},{"task_slug":"novel-view-synthesis","task_name":"Novel View Synthesis"}],"methods":[{"method_slug":"set","method_name":"SET"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2405.20791","atlas_url":"https://app.syntology.ai/?focus=2405.20791","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2405.20791"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/ymhe12/GS-Phong","reach":{"status":"ok"}}],"summary":{"ran_honours":2,"ran":4,"unverified":7},"by_repo_kind":{"official":{"samples":13,"ran":6,"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":13,"samples":[{"code_sha256_prefix":"c56b7ef16f309a45","entry":"gaussian","repo":"ymhe12/GS-Phong","repo_kind":"official","path":"utils/loss_utils.py","file_url":"https://github.com/ymhe12/GS-Phong/blob/HEAD/utils/loss_utils.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c56b7ef16f309a45"}},{"code_sha256_prefix":"ac0e42d6fbcfbbe6","entry":"l1_loss","repo":"ymhe12/GS-Phong","repo_kind":"official","path":"utils/loss_utils.py","file_url":"https://github.com/ymhe12/GS-Phong/blob/HEAD/utils/loss_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ac0e42d6fbcfbbe6"}},{"code_sha256_prefix":"8c3b0f873ba11813","entry":"l2_loss","repo":"ymhe12/GS-Phong","repo_kind":"official","path":"utils/loss_utils.py","file_url":"https://github.com/ymhe12/GS-Phong/blob/HEAD/utils/loss_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8c3b0f873ba11813"}},{"code_sha256_prefix":"1dab900b2adbe38e","entry":"normalize_activation","repo":"ymhe12/GS-Phong","repo_kind":"official","path":"lpipsPyTorch/modules/utils.py","file_url":"https://github.com/ymhe12/GS-Phong/blob/HEAD/lpipsPyTorch/modules/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1dab900b2adbe38e"}},{"code_sha256_prefix":"cdd00787894554b5","entry":"readImages","repo":"ymhe12/GS-Phong","repo_kind":"official","path":"metrics.py","file_url":"https://github.com/ymhe12/GS-Phong/blob/HEAD/metrics.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"cdd00787894554b5"}},{"code_sha256_prefix":"56858e04e6fdb2ff","entry":"read_next_bytes","repo":"ymhe12/GS-Phong","repo_kind":"official","path":"utils/read_write_model.py","file_url":"https://github.com/ymhe12/GS-Phong/blob/HEAD/utils/read_write_model.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"56858e04e6fdb2ff"}},{"code_sha256_prefix":"07bd0da29c4dc7bb","entry":"get_network","repo":"ymhe12/GS-Phong","repo_kind":"official","path":"lpipsPyTorch/modules/networks.py","file_url":"https://github.com/ymhe12/GS-Phong/blob/HEAD/lpipsPyTorch/modules/networks.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"07bd0da29c4dc7bb"}},{"code_sha256_prefix":"b06f27c08cf5d0ca","entry":"get_state_dict","repo":"ymhe12/GS-Phong","repo_kind":"official","path":"lpipsPyTorch/modules/utils.py","file_url":"https://github.com/ymhe12/GS-Phong/blob/HEAD/lpipsPyTorch/modules/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b06f27c08cf5d0ca"}},{"code_sha256_prefix":"43887f53e9b99271","entry":"prepare_output_and_logger","repo":"ymhe12/GS-Phong","repo_kind":"official","path":"train_meta.py","file_url":"https://github.com/ymhe12/GS-Phong/blob/HEAD/train_meta.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"43887f53e9b99271"}},{"code_sha256_prefix":"6ce64cf0fbcd6bb1","entry":"qvec2rotmat","repo":"ymhe12/GS-Phong","repo_kind":"official","path":"scene/colmap_loader.py","file_url":"https://github.com/ymhe12/GS-Phong/blob/HEAD/scene/colmap_loader.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6ce64cf0fbcd6bb1"}},{"code_sha256_prefix":"a10bf79d34938dbd","entry":"read_cameras_binary","repo":"ymhe12/GS-Phong","repo_kind":"official","path":"utils/read_write_model.py","file_url":"https://github.com/ymhe12/GS-Phong/blob/HEAD/utils/read_write_model.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a10bf79d34938dbd"}},{"code_sha256_prefix":"c424ebf4a6c32cbd","entry":"read_cameras_text","repo":"ymhe12/GS-Phong","repo_kind":"official","path":"utils/read_write_model.py","file_url":"https://github.com/ymhe12/GS-Phong/blob/HEAD/utils/read_write_model.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c424ebf4a6c32cbd"}},{"code_sha256_prefix":"659bc4e7e63ed8f9","entry":"rotmat2qvec","repo":"ymhe12/GS-Phong","repo_kind":"official","path":"scene/colmap_loader.py","file_url":"https://github.com/ymhe12/GS-Phong/blob/HEAD/scene/colmap_loader.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"659bc4e7e63ed8f9"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}