{"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/rethinking-efficient-lane-detection-via-curve","title":"Rethinking Efficient Lane Detection via Curve Modeling","arxiv_id":"2203.02431","date":"2022-03-04","proceeding":"CVPR 2022 1","authors":["Zhengyang Feng","Shaohua Guo","Xin Tan","Ke Xu","Min Wang","Lizhuang Ma"],"abstract":"This paper presents a novel parametric curve-based method for lane detection in RGB images. Unlike state-of-the-art segmentation-based and point detection-based methods that typically require heuristics to either decode predictions or formulate a large sum of anchors, the curve-based methods can learn holistic lane representations naturally. To handle the optimization difficulties of existing polynomial curve methods, we propose to exploit the parametric B\\'ezier curve due to its ease of computation, stability, and high freedom degrees of transformations. In addition, we propose the deformable convolution-based feature flip fusion, for exploiting the symmetry properties of lanes in driving scenes. The proposed method achieves a new state-of-the-art performance on the popular LLAMAS benchmark. It also achieves favorable accuracy on the TuSimple and CULane datasets, while retaining both low latency (> 150 FPS) and small model size (< 10M). Our method can serve as a new baseline, to shed the light on the parametric curves modeling for lane detection. Codes of our model and PytorchAutoDrive: a unified framework for self-driving perception, are available at: https://github.com/voldemortX/pytorch-auto-drive .","url_abs":"https://arxiv.org/abs/2203.02431v2","url_pdf":"https://arxiv.org/pdf/2203.02431v2.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":"rethinking-efficient-lane-detection-via-curve","repo_url":"https://github.com/voldemortX/pytorch-auto-drive","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"BSD-3-Clause"}},{"paper_slug":"rethinking-efficient-lane-detection-via-curve","repo_url":"https://github.com/zkyntu/UnLanedet","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"lane-detection","task_name":"Lane Detection"}],"methods":[{"method_slug":"flip","method_name":"FLIP"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/lane-detection-on-culane","task":"Lane Detection","dataset":"CULane","model":"BézierLaneNet (ResNet-34)","rank_in_archive_order":44,"of":63,"metrics":{"F1 score":"75.57"},"uses_additional_data":false},{"leaderboard":"/sota/lane-detection-on-culane","task":"Lane Detection","dataset":"CULane","model":"BézierLaneNet (ResNet-18)","rank_in_archive_order":53,"of":63,"metrics":{"F1 score":"73.67"},"uses_additional_data":false},{"leaderboard":"/sota/lane-detection-on-llamas","task":"Lane Detection","dataset":"LLAMAS","model":"BézierLaneNet (ResNet-34)","rank_in_archive_order":2,"of":10,"metrics":{"F1":"0.9611"},"uses_additional_data":false},{"leaderboard":"/sota/lane-detection-on-llamas","task":"Lane Detection","dataset":"LLAMAS","model":"BézierLaneNet (ResNet-18)","rank_in_archive_order":5,"of":10,"metrics":{"F1":"0.9552"},"uses_additional_data":false},{"leaderboard":"/sota/lane-detection-on-tusimple","task":"Lane Detection","dataset":"TuSimple","model":"BézierLaneNet (ResNet-34)","rank_in_archive_order":28,"of":43,"metrics":{"Accuracy":"95.65%"},"uses_additional_data":false},{"leaderboard":"/sota/lane-detection-on-tusimple","task":"Lane Detection","dataset":"TuSimple","model":"BézierLaneNet (ResNet-18)","rank_in_archive_order":34,"of":43,"metrics":{"Accuracy":"95.41%"},"uses_additional_data":false}],"syntology":{"syntology_url":"https://syntology.ai/paper/2203.02431","atlas_url":"https://app.syntology.ai/?focus=2203.02431","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2203.02431"}},"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/voldemortX/pytorch-auto-drive","reach":{"status":"ok","spdx":"BSD-3-Clause"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/zkyntu/UnLanedet","reach":null}],"summary":{"ran":12},"by_repo_kind":{"official":{"samples":12,"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":"a130119faaa50abe","entry":"cmd_dict","repo":"voldemortX/pytorch-auto-drive","repo_kind":"official","path":"utils/args.py","file_url":"https://github.com/voldemortX/pytorch-auto-drive/blob/HEAD/utils/args.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"a130119faaa50abe"}},{"code_sha256_prefix":"aedbfbecfdc42cac","entry":"count_one_dcn_v2","repo":"voldemortX/pytorch-auto-drive","repo_kind":"official","path":"utils/custom_op_flop_counters.py","file_url":"https://github.com/voldemortX/pytorch-auto-drive/blob/HEAD/utils/custom_op_flop_counters.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"aedbfbecfdc42cac"}},{"code_sha256_prefix":"7f32bc2caccead61","entry":"counter_conv","repo":"voldemortX/pytorch-auto-drive","repo_kind":"official","path":"utils/custom_op_flop_counters.py","file_url":"https://github.com/voldemortX/pytorch-auto-drive/blob/HEAD/utils/custom_op_flop_counters.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"7f32bc2caccead61"}},{"code_sha256_prefix":"7737677cd5bc1e4a","entry":"cubic_bezier_curve_segment","repo":"voldemortX/pytorch-auto-drive","repo_kind":"official","path":"utils/curve_utils.py","file_url":"https://github.com/voldemortX/pytorch-auto-drive/blob/HEAD/utils/curve_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"7737677cd5bc1e4a"}},{"code_sha256_prefix":"8b12f4ee1d612dea","entry":"get_lane","repo":"voldemortX/pytorch-auto-drive","repo_kind":"official","path":"utils/lane_det_utils.py","file_url":"https://github.com/voldemortX/pytorch-auto-drive/blob/HEAD/utils/lane_det_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"8b12f4ee1d612dea"}},{"code_sha256_prefix":"fac83b577eebb6e3","entry":"get_valid_points","repo":"voldemortX/pytorch-auto-drive","repo_kind":"official","path":"utils/curve_utils.py","file_url":"https://github.com/voldemortX/pytorch-auto-drive/blob/HEAD/utils/curve_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"fac83b577eebb6e3"}},{"code_sha256_prefix":"b82a202cd3460d27","entry":"lane_as_segmentation_inference","repo":"voldemortX/pytorch-auto-drive","repo_kind":"official","path":"utils/lane_det_utils.py","file_url":"https://github.com/voldemortX/pytorch-auto-drive/blob/HEAD/utils/lane_det_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"b82a202cd3460d27"}},{"code_sha256_prefix":"e9ee961ae8ccd679","entry":"prob_to_lines","repo":"voldemortX/pytorch-auto-drive","repo_kind":"official","path":"utils/lane_det_utils.py","file_url":"https://github.com/voldemortX/pytorch-auto-drive/blob/HEAD/utils/lane_det_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"e9ee961ae8ccd679"}},{"code_sha256_prefix":"e75a411f8bbc28ca","entry":"read_config","repo":"voldemortX/pytorch-auto-drive","repo_kind":"official","path":"utils/args.py","file_url":"https://github.com/voldemortX/pytorch-auto-drive/blob/HEAD/utils/args.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"e75a411f8bbc28ca"}},{"code_sha256_prefix":"d2092a95e79d2d3b","entry":"reduce_dict","repo":"voldemortX/pytorch-auto-drive","repo_kind":"official","path":"utils/ddp_utils.py","file_url":"https://github.com/voldemortX/pytorch-auto-drive/blob/HEAD/utils/ddp_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"d2092a95e79d2d3b"}},{"code_sha256_prefix":"944efb6b2d124909","entry":"upcast","repo":"voldemortX/pytorch-auto-drive","repo_kind":"official","path":"utils/curve_utils.py","file_url":"https://github.com/voldemortX/pytorch-auto-drive/blob/HEAD/utils/curve_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"944efb6b2d124909"}},{"code_sha256_prefix":"6d390a74f15c1b8d","entry":"update_nested","repo":"voldemortX/pytorch-auto-drive","repo_kind":"official","path":"utils/args.py","file_url":"https://github.com/voldemortX/pytorch-auto-drive/blob/HEAD/utils/args.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"6d390a74f15c1b8d"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}