{"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/surroundocc-multi-camera-3d-occupancy","title":"SurroundOcc: Multi-Camera 3D Occupancy Prediction for Autonomous Driving","arxiv_id":"2303.09551","date":"2023-03-16","proceeding":"ICCV 2023 1","authors":["Yi Wei","Linqing Zhao","Wenzhao Zheng","Zheng Zhu","Jie zhou","Jiwen Lu"],"abstract":"3D scene understanding plays a vital role in vision-based autonomous driving. While most existing methods focus on 3D object detection, they have difficulty describing real-world objects of arbitrary shapes and infinite classes. Towards a more comprehensive perception of a 3D scene, in this paper, we propose a SurroundOcc method to predict the 3D occupancy with multi-camera images. We first extract multi-scale features for each image and adopt spatial 2D-3D attention to lift them to the 3D volume space. Then we apply 3D convolutions to progressively upsample the volume features and impose supervision on multiple levels. To obtain dense occupancy prediction, we design a pipeline to generate dense occupancy ground truth without expansive occupancy annotations. Specifically, we fuse multi-frame LiDAR scans of dynamic objects and static scenes separately. Then we adopt Poisson Reconstruction to fill the holes and voxelize the mesh to get dense occupancy labels. Extensive experiments on nuScenes and SemanticKITTI datasets demonstrate the superiority of our method. Code and dataset are available at https://github.com/weiyithu/SurroundOcc","url_abs":"https://arxiv.org/abs/2303.09551v2","url_pdf":"https://arxiv.org/pdf/2303.09551v2.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":"surroundocc-multi-camera-3d-occupancy","repo_url":"https://github.com/weiyithu/surroundocc","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"surroundocc-multi-camera-3d-occupancy","repo_url":"https://github.com/ganwanshui/simpleoccupancy","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"3d-object-detection","task_name":"3D Object Detection"},{"task_slug":"autonomous-driving","task_name":"Autonomous Driving"},{"task_slug":"object-detection","task_name":"Object Detection"},{"task_slug":"prediction","task_name":"Prediction"},{"task_slug":"scene-understanding","task_name":"Scene Understanding"},{"task_slug":"object-detection-1","task_name":"object-detection"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2303.09551","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2303.09551"}},"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/weiyithu/surroundocc","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ganwanshui/simpleoccupancy","reach":null},{"provenance":"deterministic:regex_extraction","url":"https://github.com/weiyithu/SurroundOcc","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":4,"ran_fixture":4,"ran_draft_wrong":5,"ran_honours":4,"unverified":7},"by_repo_kind":{"official":{"samples":3,"ran":1,"repositories":1},"listed":{"samples":20,"ran":15,"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":21,"samples":[{"code_sha256_prefix":"048f8b844c751fe1","entry":"LaplaceDensity","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.py","link_basis":"first_harvest_node","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":"048f8b844c751fe1"}},{"code_sha256_prefix":"8fd8e2bb9940b788","entry":"apply_4x4","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8fd8e2bb9940b788"}},{"code_sha256_prefix":"ea83495b07c4dc60","entry":"convbn_3d","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.py","link_basis":"first_harvest_node","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":"ea83495b07c4dc60"}},{"code_sha256_prefix":"06e6d02b8b324672","entry":"cumprod_exclusive","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"06e6d02b8b324672"}},{"code_sha256_prefix":"7479150fe85cefe6","entry":"eye_4x4","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7479150fe85cefe6"}},{"code_sha256_prefix":"0b6e05dede932a3d","entry":"get_ray_marching_ray","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0b6e05dede932a3d"}},{"code_sha256_prefix":"544ddd0593aad265","entry":"gridcloud3d","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"544ddd0593aad265"}},{"code_sha256_prefix":"7e67c3ab9712def5","entry":"hourglass_PSMNet","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.py","link_basis":"first_harvest_node","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":"7e67c3ab9712def5"}},{"code_sha256_prefix":"c9c44e261dffcaf1","entry":"matmul2","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"c9c44e261dffcaf1"}},{"code_sha256_prefix":"bb084b6163c5dd5e","entry":"merge_intrinsics","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"bb084b6163c5dd5e"}},{"code_sha256_prefix":"a4928c855659636c","entry":"meshgrid3d","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a4928c855659636c"}},{"code_sha256_prefix":"0c090b7d5948bb66","entry":"normalize_grid2d","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0c090b7d5948bb66"}},{"code_sha256_prefix":"7183abcbcac9bc28","entry":"reduce_masked_mean","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7183abcbcac9bc28"}},{"code_sha256_prefix":"0330f0652735d8cf","entry":"safe_inverse","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0330f0652735d8cf"}},{"code_sha256_prefix":"4ce19a7b18b72a50","entry":"scale_intrinsics","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4ce19a7b18b72a50"}},{"code_sha256_prefix":"d062b8e225df0d31","entry":"sem_scal_loss","repo":"weiyithu/SurroundOcc","repo_kind":"official","path":"projects/mmdet3d_plugin/surroundocc/loss/loss_utils.py","file_url":"https://github.com/weiyithu/SurroundOcc/blob/HEAD/projects/mmdet3d_plugin/surroundocc/loss/loss_utils.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":"d062b8e225df0d31"}},{"code_sha256_prefix":"ab0432e202897c24","entry":"split_intrinsics","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ab0432e202897c24"}},{"code_sha256_prefix":"92f2770d1abea929","entry":"Density","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.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":"92f2770d1abea929"}},{"code_sha256_prefix":"fb671695776a2c4b","entry":"S3DCNN","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.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":"fb671695776a2c4b"}},{"code_sha256_prefix":"e2e54f6438dc01eb","entry":"VolumeDecoder","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.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":"e2e54f6438dc01eb"}},{"code_sha256_prefix":"5cac58ebf82c0097","entry":"Vox_util","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.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":"5cac58ebf82c0097"}},{"code_sha256_prefix":"3ce0c6c6df84b076","entry":"extract_simpleocc_mesh","repo":"ganwanshui/simpleoccupancy","repo_kind":"listed","path":"networks/occupancy_decoder.py","file_url":"https://github.com/ganwanshui/simpleoccupancy/blob/HEAD/networks/occupancy_decoder.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":"3ce0c6c6df84b076"}},{"code_sha256_prefix":"53c587a7165aa47b","entry":"geo_scal_loss","repo":"weiyithu/SurroundOcc","repo_kind":"official","path":"projects/mmdet3d_plugin/surroundocc/loss/loss_utils.py","file_url":"https://github.com/weiyithu/SurroundOcc/blob/HEAD/projects/mmdet3d_plugin/surroundocc/loss/loss_utils.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":"53c587a7165aa47b"}},{"code_sha256_prefix":"0ed1a1d33b9b9bfc","entry":"multiscale_supervision","repo":"weiyithu/SurroundOcc","repo_kind":"official","path":"projects/mmdet3d_plugin/surroundocc/loss/loss_utils.py","file_url":"https://github.com/weiyithu/SurroundOcc/blob/HEAD/projects/mmdet3d_plugin/surroundocc/loss/loss_utils.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":"0ed1a1d33b9b9bfc"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}