{"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/dpft-dual-perspective-fusion-transformer-for","title":"DPFT: Dual Perspective Fusion Transformer for Camera-Radar-based Object Detection","arxiv_id":"2404.03015","date":"2024-04-03","proceeding":null,"authors":["Felix Fent","Andras Palffy","Holger Caesar"],"abstract":"The perception of autonomous vehicles has to be efficient, robust, and cost-effective. However, cameras are not robust against severe weather conditions, lidar sensors are expensive, and the performance of radar-based perception is still inferior to the others. Camera-radar fusion methods have been proposed to address this issue, but these are constrained by the typical sparsity of radar point clouds and often designed for radars without elevation information. We propose a novel camera-radar fusion approach called Dual Perspective Fusion Transformer (DPFT), designed to overcome these limitations. Our method leverages lower-level radar data (the radar cube) instead of the processed point clouds to preserve as much information as possible and employs projections in both the camera and ground planes to effectively use radars with elevation information and simplify the fusion with camera data. As a result, DPFT has demonstrated state-of-the-art performance on the K-Radar dataset while showing remarkable robustness against adverse weather conditions and maintaining a low inference time. The code is made available as open-source software under https://github.com/TUMFTM/DPFT.","url_abs":"https://arxiv.org/abs/2404.03015v2","url_pdf":"https://arxiv.org/pdf/2404.03015v2.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":"dpft-dual-perspective-fusion-transformer-for","repo_url":"https://github.com/tumftm/dpft","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"autonomous-vehicles","task_name":"Autonomous Vehicles"},{"task_slug":"object-detection","task_name":"Object Detection"},{"task_slug":"object-detection-1","task_name":"object-detection"}],"methods":[{"method_slug":"absolute-position-encodings","method_name":"Absolute Position Encodings"},{"method_slug":"adam","method_name":"Adam"},{"method_slug":"attention","method_name":"Attention"},{"method_slug":"bpe","method_name":"BPE"},{"method_slug":"dense-connections","method_name":"Dense Connections"},{"method_slug":"dropout","method_name":"Dropout"},{"method_slug":"label-smoothing","method_name":"Label Smoothing"},{"method_slug":"layer-normalization","method_name":"Layer Normalization"},{"method_slug":"linear-layer","method_name":"Linear Layer"},{"method_slug":"multi-head-attention","method_name":"Multi-Head Attention"},{"method_slug":"position-wise-feed-forward-layer","method_name":"Position-Wise Feed-Forward Layer"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"transformer","method_name":"Transformer"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2404.03015","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2404.03015"}},"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/tumftm/dpft","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":7,"unverified":2},"by_repo_kind":{"official":{"samples":9,"ran":7,"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":"a9aeaa8ba5cade44","entry":"build_scheduler","repo":"tumftm/dpft","repo_kind":"official","path":"src/dprt/training/scheduler.py","file_url":"https://github.com/tumftm/dpft/blob/HEAD/src/dprt/training/scheduler.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":"a9aeaa8ba5cade44"}},{"code_sha256_prefix":"f62ac1df15e6ba9a","entry":"chained_scheduler","repo":"tumftm/dpft","repo_kind":"official","path":"src/dprt/training/scheduler.py","file_url":"https://github.com/tumftm/dpft/blob/HEAD/src/dprt/training/scheduler.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":"f62ac1df15e6ba9a"}},{"code_sha256_prefix":"abd213a9f852803b","entry":"focal_loss","repo":"tumftm/dpft","repo_kind":"official","path":"src/dprt/training/loss.py","file_url":"https://github.com/tumftm/dpft/blob/HEAD/src/dprt/training/loss.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":"abd213a9f852803b"}},{"code_sha256_prefix":"9eccf35752a7240f","entry":"get_box_corners","repo":"tumftm/dpft","repo_kind":"official","path":"src/dprt/utils/bbox.py","file_url":"https://github.com/tumftm/dpft/blob/HEAD/src/dprt/utils/bbox.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":"9eccf35752a7240f"}},{"code_sha256_prefix":"858633a79b1fb482","entry":"get_box_volume_from_corners","repo":"tumftm/dpft","repo_kind":"official","path":"src/dprt/utils/bbox.py","file_url":"https://github.com/tumftm/dpft/blob/HEAD/src/dprt/utils/bbox.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":"858633a79b1fb482"}},{"code_sha256_prefix":"065ee82d0907c020","entry":"load_config","repo":"tumftm/dpft","repo_kind":"official","path":"src/dprt/utils/config.py","file_url":"https://github.com/tumftm/dpft/blob/HEAD/src/dprt/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":"065ee82d0907c020"}},{"code_sha256_prefix":"eefe0c3768f91d17","entry":"loads_config","repo":"tumftm/dpft","repo_kind":"official","path":"src/dprt/utils/config.py","file_url":"https://github.com/tumftm/dpft/blob/HEAD/src/dprt/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":"eefe0c3768f91d17"}},{"code_sha256_prefix":"37dbd12763e70cc3","entry":"get_minimum_enclosing_box_corners","repo":"tumftm/dpft","repo_kind":"official","path":"src/dprt/utils/bbox.py","file_url":"https://github.com/tumftm/dpft/blob/HEAD/src/dprt/utils/bbox.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":"37dbd12763e70cc3"}},{"code_sha256_prefix":"5f5714501b6da323","entry":"sequential_lr","repo":"tumftm/dpft","repo_kind":"official","path":"src/dprt/training/scheduler.py","file_url":"https://github.com/tumftm/dpft/blob/HEAD/src/dprt/training/scheduler.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":"5f5714501b6da323"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}