{"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/tri-perspective-view-for-vision-based-3d","title":"Tri-Perspective View for Vision-Based 3D Semantic Occupancy Prediction","arxiv_id":"2302.07817","date":"2023-02-15","proceeding":"CVPR 2023 1","authors":["Yuanhui Huang","Wenzhao Zheng","Yunpeng Zhang","Jie zhou","Jiwen Lu"],"abstract":"Modern methods for vision-centric autonomous driving perception widely adopt the bird's-eye-view (BEV) representation to describe a 3D scene. Despite its better efficiency than voxel representation, it has difficulty describing the fine-grained 3D structure of a scene with a single plane. To address this, we propose a tri-perspective view (TPV) representation which accompanies BEV with two additional perpendicular planes. We model each point in the 3D space by summing its projected features on the three planes. To lift image features to the 3D TPV space, we further propose a transformer-based TPV encoder (TPVFormer) to obtain the TPV features effectively. We employ the attention mechanism to aggregate the image features corresponding to each query in each TPV plane. Experiments show that our model trained with sparse supervision effectively predicts the semantic occupancy for all voxels. We demonstrate for the first time that using only camera inputs can achieve comparable performance with LiDAR-based methods on the LiDAR segmentation task on nuScenes. Code: https://github.com/wzzheng/TPVFormer.","url_abs":"https://arxiv.org/abs/2302.07817v2","url_pdf":"https://arxiv.org/pdf/2302.07817v2.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":"tri-perspective-view-for-vision-based-3d","repo_url":"https://github.com/wzzheng/tpvformer","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"tri-perspective-view-for-vision-based-3d","repo_url":"https://github.com/happytianhao/tade","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"tri-perspective-view-for-vision-based-3d","repo_url":"https://github.com/open-mmlab/mmdetection3d","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"3d-semantic-scene-completion","task_name":"3D Semantic Scene Completion"},{"task_slug":"autonomous-driving","task_name":"Autonomous Driving"},{"task_slug":"prediction-of-occupancy-grid-maps","task_name":"Prediction Of Occupancy Grid Maps"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/3d-semantic-scene-completion-on-kitti-360","task":"3D Semantic Scene Completion","dataset":"KITTI-360","model":"TPVFormer","rank_in_archive_order":5,"of":7,"metrics":{"mIoU":"13.64"},"uses_additional_data":false},{"leaderboard":"/sota/prediction-of-occupancy-grid-maps-on-nuscenes","task":"Prediction Of Occupancy Grid Maps","dataset":"nuScenes","model":"TPVFormer04","rank_in_archive_order":1,"of":1,"metrics":{"mIoU":"52.058"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2302.07817","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2302.07817"}},"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/wzzheng/tpvformer","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/open-mmlab/mmdetection3d","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/happytianhao/tade","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_fixture":2,"ran_violates":1,"unverified":1},"by_repo_kind":{"official":{"samples":4,"ran":3,"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":"d94639b28b2134ff","entry":"iou","repo":"wzzheng/tpvformer","repo_kind":"official","path":"utils/lovasz_losses.py","file_url":"https://github.com/wzzheng/tpvformer/blob/HEAD/utils/lovasz_losses.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d94639b28b2134ff"}},{"code_sha256_prefix":"1211530cd527bd0b","entry":"iou_binary","repo":"wzzheng/tpvformer","repo_kind":"official","path":"utils/lovasz_losses.py","file_url":"https://github.com/wzzheng/tpvformer/blob/HEAD/utils/lovasz_losses.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"1211530cd527bd0b"}},{"code_sha256_prefix":"e85b5d21dc5b8382","entry":"lovasz_grad","repo":"wzzheng/tpvformer","repo_kind":"official","path":"utils/lovasz_losses.py","file_url":"https://github.com/wzzheng/tpvformer/blob/HEAD/utils/lovasz_losses.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e85b5d21dc5b8382"}},{"code_sha256_prefix":"6272d886536cd43e","entry":"get_nuScenes_label_name","repo":"wzzheng/tpvformer","repo_kind":"official","path":"dataloader/dataset.py","file_url":"https://github.com/wzzheng/tpvformer/blob/HEAD/dataloader/dataset.py","link_basis":"harvester_set","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":"6272d886536cd43e"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}