{"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-by-cheating","title":"Learning by Cheating","arxiv_id":"1912.12294","date":"2019-12-27","proceeding":null,"authors":["Dian Chen","Brady Zhou","Vladlen Koltun","Philipp Krähenbühl"],"abstract":"Vision-based urban driving is hard. The autonomous system needs to learn to perceive the world and act in it. We show that this challenging learning problem can be simplified by decomposing it into two stages. We first train an agent that has access to privileged information. This privileged agent cheats by observing the ground-truth layout of the environment and the positions of all traffic participants. In the second stage, the privileged agent acts as a teacher that trains a purely vision-based sensorimotor agent. The resulting sensorimotor agent does not have access to any privileged information and does not cheat. This two-stage training procedure is counter-intuitive at first, but has a number of important advantages that we analyze and empirically demonstrate. We use the presented approach to train a vision-based autonomous driving system that substantially outperforms the state of the art on the CARLA benchmark and the recent NoCrash benchmark. Our approach achieves, for the first time, 100% success rate on all tasks in the original CARLA benchmark, sets a new record on the NoCrash benchmark, and reduces the frequency of infractions by an order of magnitude compared to the prior state of the art. For the video that summarizes this work, see https://youtu.be/u9ZCxxD-UUw","url_abs":"https://arxiv.org/abs/1912.12294v1","url_pdf":"https://arxiv.org/pdf/1912.12294v1.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-by-cheating","repo_url":"https://github.com/dotchen/LearningByCheating","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"learning-by-cheating","repo_url":"https://github.com/SimarKareer/legged_gym","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"learning-by-cheating","repo_url":"https://github.com/bradyz/2020_CARLA_challenge","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}},{"paper_slug":"learning-by-cheating","repo_url":"https://github.com/deepsense-ai/carla-birdeye-view","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"learning-by-cheating","repo_url":"https://github.com/jostl/masters-thesis","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"learning-by-cheating","repo_url":"https://github.com/piazzesiNiccolo/myLbc","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"learning-by-cheating","repo_url":"https://github.com/scope-lab-vu/anti-carla","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}},{"paper_slug":"learning-by-cheating","repo_url":"https://github.com/scope-lab-vu/risk-aware-scene-generation-cps","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}},{"paper_slug":"learning-by-cheating","repo_url":"https://github.com/zwc662/SequentialAttack","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}}],"tasks":[{"task_slug":"autonomous-driving","task_name":"Autonomous Driving"}],"methods":[{"method_slug":"carla","method_name":"CARLA"},{"method_slug":"entropy-regularization","method_name":"Entropy Regularization"},{"method_slug":"ppo","method_name":"PPO"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/autonomous-driving-on-carla-leaderboard","task":"Autonomous Driving","dataset":"CARLA Leaderboard","model":"LBC","rank_in_archive_order":17,"of":18,"metrics":{"Driving Score":"8.94","Infraction penalty":"0.73","Route Completion":"17.54"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1912.12294","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1912.12294"}},"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/jostl/masters-thesis","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/dotchen/LearningByCheating","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/SimarKareer/legged_gym","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/scope-lab-vu/anti-carla","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/scope-lab-vu/risk-aware-scene-generation-cps","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/zwc662/SequentialAttack","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/bradyz/2020_CARLA_challenge","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/piazzesiNiccolo/myLbc","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/deepsense-ai/carla-birdeye-view","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":7},"by_repo_kind":{"official":{"samples":6,"ran":0,"repositories":1},"listed":{"samples":1,"ran":0,"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":"3ad45fbbefbcc580","entry":"BaselineBranch","repo":"dotchen/LearningByCheating","repo_kind":"official","path":"bird_view/models/baseline.py","file_url":"https://github.com/dotchen/LearningByCheating/blob/HEAD/bird_view/models/baseline.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":"3ad45fbbefbcc580"}},{"code_sha256_prefix":"1eac6683c6404df6","entry":"crop_birdview","repo":"dotchen/LearningByCheating","repo_kind":"official","path":"bird_view/models/common.py","file_url":"https://github.com/dotchen/LearningByCheating/blob/HEAD/bird_view/models/common.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":"1eac6683c6404df6"}},{"code_sha256_prefix":"663c3ff922453f02","entry":"from_file","repo":"dotchen/LearningByCheating","repo_kind":"official","path":"benchmark/goal_suite.py","file_url":"https://github.com/dotchen/LearningByCheating/blob/HEAD/benchmark/goal_suite.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":"663c3ff922453f02"}},{"code_sha256_prefix":"edff33b2be73c06a","entry":"lateral_shift","repo":"deepsense-ai/carla-birdeye-view","repo_kind":"listed","path":"carla_birdeye_view/lanes.py","file_url":"https://github.com/deepsense-ai/carla-birdeye-view/blob/HEAD/carla_birdeye_view/lanes.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":"edff33b2be73c06a"}},{"code_sha256_prefix":"5da19e3e051b29fd","entry":"ls_circle","repo":"dotchen/LearningByCheating","repo_kind":"official","path":"bird_view/models/controller.py","file_url":"https://github.com/dotchen/LearningByCheating/blob/HEAD/bird_view/models/controller.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":"5da19e3e051b29fd"}},{"code_sha256_prefix":"3bbc730e19952eb1","entry":"select_branch","repo":"dotchen/LearningByCheating","repo_kind":"official","path":"bird_view/models/common.py","file_url":"https://github.com/dotchen/LearningByCheating/blob/HEAD/bird_view/models/common.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":"3bbc730e19952eb1"}},{"code_sha256_prefix":"680bf10038ec8494","entry":"signed_angle","repo":"dotchen/LearningByCheating","repo_kind":"official","path":"bird_view/models/common.py","file_url":"https://github.com/dotchen/LearningByCheating/blob/HEAD/bird_view/models/common.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":"680bf10038ec8494"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}