{"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/learning-lightweight-lane-detection-cnns-by","title":"Learning Lightweight Lane Detection CNNs by Self Attention Distillation","arxiv_id":"1908.00821","date":"2019-08-02","proceeding":"ICCV 2019 10","authors":["Yuenan Hou","Zheng Ma","Chunxiao Liu","Chen Change Loy"],"abstract":"Training deep models for lane detection is challenging due to the very subtle and sparse supervisory signals inherent in lane annotations. Without learning from much richer context, these models often fail in challenging scenarios, e.g., severe occlusion, ambiguous lanes, and poor lighting conditions. In this paper, we present a novel knowledge distillation approach, i.e., Self Attention Distillation (SAD), which allows a model to learn from itself and gains substantial improvement without any additional supervision or labels. Specifically, we observe that attention maps extracted from a model trained to a reasonable level would encode rich contextual information. The valuable contextual information can be used as a form of 'free' supervision for further representation learning through performing topdown and layer-wise attention distillation within the network itself. SAD can be easily incorporated in any feedforward convolutional neural networks (CNN) and does not increase the inference time. We validate SAD on three popular lane detection benchmarks (TuSimple, CULane and BDD100K) using lightweight models such as ENet, ResNet-18 and ResNet-34. The lightest model, ENet-SAD, performs comparatively or even surpasses existing algorithms. Notably, ENet-SAD has 20 x fewer parameters and runs 10 x faster compared to the state-of-the-art SCNN, while still achieving compelling performance in all benchmarks. Our code is available at https://github.com/cardwing/Codes-for-Lane-Detection.","url_abs":"https://arxiv.org/abs/1908.00821v1","url_pdf":"https://arxiv.org/pdf/1908.00821v1.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":"learning-lightweight-lane-detection-cnns-by","repo_url":"https://github.com/cardwing/Codes-for-Lane-Detection","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":null},{"paper_slug":"learning-lightweight-lane-detection-cnns-by","repo_url":"https://github.com/NOHYC/autonomous_driving_car_project","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"knowledge-distillation","task_name":"Knowledge Distillation"},{"task_slug":"lane-detection","task_name":"Lane Detection"},{"task_slug":"representation-learning","task_name":"Representation Learning"}],"methods":[{"method_slug":"1x1-convolution","method_name":"1x1 Convolution"},{"method_slug":"average-pooling","method_name":"Average Pooling"},{"method_slug":"batch-normalization","method_name":"Batch Normalization"},{"method_slug":"bottleneck-residual-block","method_name":"Bottleneck Residual Block"},{"method_slug":"convolution","method_name":"Convolution"},{"method_slug":"dilated-convolution","method_name":"Dilated Convolution"},{"method_slug":"enet","method_name":"ENet"},{"method_slug":"enet-bottleneck","method_name":"ENet Bottleneck"},{"method_slug":"enet-dilated-bottleneck","method_name":"ENet Dilated Bottleneck"},{"method_slug":"enet-initial-block","method_name":"ENet Initial Block"},{"method_slug":"global-average-pooling","method_name":"Global Average Pooling"},{"method_slug":"kaiming-initialization","method_name":"Kaiming Initialization"},{"method_slug":"knowledge-distillation","method_name":"Knowledge Distillation"},{"method_slug":"max-pooling","method_name":"Max Pooling"},{"method_slug":"prelu","method_name":"PReLU"},{"method_slug":"relu","method_name":"ReLU"},{"method_slug":"residual-block","method_name":"Residual Block"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"spatialdropout","method_name":"SpatialDropout"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/lane-detection-on-bdd100k-val","task":"Lane Detection","dataset":"BDD100K val","model":"Enet-SAD","rank_in_archive_order":11,"of":11,"metrics":{"Accuracy (%)":"36.6","IoU (%)":"16.02"},"uses_additional_data":false},{"leaderboard":"/sota/lane-detection-on-culane","task":"Lane Detection","dataset":"CULane","model":"ENet-SAD","rank_in_archive_order":60,"of":63,"metrics":{"F1 score":"70.8"},"uses_additional_data":false},{"leaderboard":"/sota/lane-detection-on-tusimple","task":"Lane Detection","dataset":"TuSimple","model":"ENet-SAD","rank_in_archive_order":12,"of":43,"metrics":{"Accuracy":"96.64%","F1 score":"95.92"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1908.00821","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1908.00821"}},"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/NOHYC/autonomous_driving_car_project","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/cardwing/Codes-for-Lane-Detection","reach":null}],"summary":{"ran_fixture":2,"unverified":6},"by_repo_kind":{"official":{"samples":2,"ran":1,"repositories":1},"listed":{"samples":6,"ran":1,"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":"0d0842514b1844a1","entry":"fanin_init","repo":"NOHYC/autonomous_driving_car_project","repo_kind":"listed","path":"SIM/catkin_ws/src/project/src/ddpg_stage.py","file_url":"https://github.com/NOHYC/autonomous_driving_car_project/blob/HEAD/SIM/catkin_ws/src/project/src/ddpg_stage.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0d0842514b1844a1"}},{"code_sha256_prefix":"1e6e2a7577f5c7c6","entry":"flip","repo":"cardwing/Codes-for-Lane-Detection","repo_kind":"official","path":"ERFNet-CULane-PyTorch/train_erfnet.py","file_url":"https://github.com/cardwing/Codes-for-Lane-Detection/blob/HEAD/ERFNet-CULane-PyTorch/train_erfnet.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1e6e2a7577f5c7c6"}},{"code_sha256_prefix":"6da2d91a099c5bee","entry":"assignment","repo":"NOHYC/autonomous_driving_car_project","repo_kind":"listed","path":"SIM/cvbridge_build_ws/devel/.private/project/_setup_util.py","file_url":"https://github.com/NOHYC/autonomous_driving_car_project/blob/HEAD/SIM/cvbridge_build_ws/devel/.private/project/_setup_util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6da2d91a099c5bee"}},{"code_sha256_prefix":"1784d626db4641c8","entry":"get_cameramat_dist","repo":"NOHYC/autonomous_driving_car_project","repo_kind":"listed","path":"NX/catkin_ws/src/enet_ros/src/pub_camera.py","file_url":"https://github.com/NOHYC/autonomous_driving_car_project/blob/HEAD/NX/catkin_ws/src/enet_ros/src/pub_camera.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1784d626db4641c8"}},{"code_sha256_prefix":"55a0b1ed4884f9c2","entry":"mish","repo":"NOHYC/autonomous_driving_car_project","repo_kind":"listed","path":"SIM/catkin_ws/src/project/src/ddpg_stage.py","file_url":"https://github.com/NOHYC/autonomous_driving_car_project/blob/HEAD/SIM/catkin_ws/src/project/src/ddpg_stage.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"55a0b1ed4884f9c2"}},{"code_sha256_prefix":"614a55e26da69252","entry":"prepend_env_variables","repo":"NOHYC/autonomous_driving_car_project","repo_kind":"listed","path":"SIM/cvbridge_build_ws/devel/.private/project/_setup_util.py","file_url":"https://github.com/NOHYC/autonomous_driving_car_project/blob/HEAD/SIM/cvbridge_build_ws/devel/.private/project/_setup_util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"614a55e26da69252"}},{"code_sha256_prefix":"8cd63ad2dbce2c60","entry":"rollback_env_variables","repo":"NOHYC/autonomous_driving_car_project","repo_kind":"listed","path":"SIM/cvbridge_build_ws/devel/.private/project/_setup_util.py","file_url":"https://github.com/NOHYC/autonomous_driving_car_project/blob/HEAD/SIM/cvbridge_build_ws/devel/.private/project/_setup_util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8cd63ad2dbce2c60"}},{"code_sha256_prefix":"0eda96b389501673","entry":"validate","repo":"cardwing/Codes-for-Lane-Detection","repo_kind":"official","path":"ERFNet-CULane-PyTorch/train_erfnet.py","file_url":"https://github.com/cardwing/Codes-for-Lane-Detection/blob/HEAD/ERFNet-CULane-PyTorch/train_erfnet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0eda96b389501673"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}