Self-Driving-Car-in-Video-Games
Self-Driving-Car-in-Video-Games 是一个基于深度神经网络的开源项目,旨在让 AI 学会在电子游戏中自动驾驶。该项目核心目标是训练模型在《侠盗猎车手 V》(GTA V)中根据导航点快速抵达目的地,同时灵活避开其他车辆、行人及障碍物。
它主要解决了传统自动驾驶算法在复杂动态环境中难以低成本获取大量训练数据的问题。通过“模仿学习”技术,项目记录了人类玩家的操作视频与按键数据,利用这些标注数据监督训练神经网络,使 AI 能够像人类一样驾驶。虽然以 GTA V 为主要场景,但其架构具备高度通用性,理论上可适配各类电子游戏。
该项目特别适合对计算机视觉、强化学习感兴趣的研究人员,以及希望探索游戏 AI 或自动驾驶模拟的开发者使用。其技术亮点在于提供了名为"T.E.D.D. 1104"的预训练模型系列(参数量高达 1.38 亿),这些模型基于 130GB 的人类驾驶数据训练而成,支持晴天、雨天、昼夜等多种天气路况下的实时推理,并能在城市与高速场景中驾驭多种车型,为相关领域的实验与研究提供了宝贵的基准资源。
使用场景
某游戏开发团队正在为一款开放世界赛车游戏构建高智能的 NPC 驾驶系统,旨在让虚拟车辆能像真人一样应对复杂的路况与天气变化。
没有 Self-Driving-Car-in-Video-Games 时
- 人工脚本僵化:开发者需手动编写大量状态机代码来定义驾驶行为,导致 NPC 在面对突发障碍或复杂弯道时反应生硬,极易穿模或卡死。
- 环境适应性差:难以覆盖雨天、夜间等所有光照和气象组合,每次新增天气效果都需要重新调整大量的参数阈值。
- 数据采集低效:为了训练行为模型,团队需组织专人长时间录制游戏操作并人工标注关键帧,耗时数周且数据规模有限。
- 泛化能力薄弱:针对特定车型训练的逻辑无法迁移到其他车辆上,更换车辆模型往往意味着推倒重来。
使用 Self-Driving-Car-in-Video-Games 后
- 端到端智能决策:利用其预训练的 T.E.D.D. 1104 深度神经网络,NPC 能直接根据第一人称视角画面实时输出操控指令,流畅完成超车、避障等高难度动作。
- 全场景鲁棒运行:模型已在包含晴天、暴雨、昼夜交替的 130GB 人类标注数据上完成训练,无需额外调参即可在各类极端天气下稳定驾驶。
- 自动化数据闭环:团队可直接复用工具记录的玩家操作流与按键数据自动迭代模型,将原本数周的数据准备周期缩短至几天。
- 跨车型快速迁移:得益于强大的特征学习能力,同一套模型稍作微调即可适配游戏中轿车、卡车等多种载具,大幅降低开发边际成本。
Self-Driving-Car-in-Video-Games 通过将人类驾驶直觉转化为可泛化的深度模型,彻底解决了传统游戏 AI 行为呆板且开发成本高昂的核心痛点。
运行环境要求
- Linux
- Windows
必需(用于实时推理和训练),具体型号和显存未说明,但提到增加并行序列数需要更快的 GPU
未说明(但提到增加并行序列数会增加 RAM 使用)

快速开始
这是一座通过监督学习训练的深度神经网络,旨在学会在视频游戏中驾驶。该项目的主要目标是开发出一款能够在《侠盗猎车手V》中自主驾驶的模型。给定一个航点,该模型应尽可能快速地到达目的地,同时避开其他车辆、行人及障碍物。
该模型使用人工标注的数据进行训练。我们在玩家游玩游戏时记录下游戏画面和按键输入,并利用这些数据来训练模型。
尽管我们的重点是自动驾驶汽车以及《侠盗猎车手V》这款游戏,但该模型同样可以被调整以适用于任何现有的视频游戏。
|
|
预训练的T.E.D.D. 1104模型
我们提供了可用于实时推理的预训练T.E.D.D. 1104模型 :)
这些模型基于130 GB的人工标注数据进行训练。
模型以第一人称视角进行训练,并配备了小地图上的行驶路线。
它已经学会了在各种天气条件下(晴天、夜晚、多云、雨天等)驾驶多种类型的车辆。
对于每个模型,我们都提供了最佳和最后的训练轮次。
有关如何运行这些模型的说明,请参阅软件与操作指南部分。
T.E.D.D. 1104 XXL:1.38亿参数。
下载链接:请查看发布页面
测试数据集中的准确率:
| 时间 | 天气 | 微观准确率K@1 | 微观准确率k@3 | 宏观准确率K@1 | |
|---|---|---|---|---|---|
| 城市 | :sun_with_face: | :sunny: | 53.2 | 84.4 | 46.2 |
| 城市 | :sun_with_face: | :umbrella: | 51.4 | 83.4 | 46.3 |
| 城市 | :first_quarter_moon_with_face: | :sunny: | 54.3 | 85.6 | 46.3 |
| 城市 | :first_quarter_moon_with_face: | :umbrella: | 47.3 | 82.3 | 49.9 |
| 高速公路 | :sun_with_face: | :sunny: | 72.7 | 97.7 | 40.6 |
| 高速公路 | :sun_with_face: | :umbrella: | 70.6 | 99.3 | 39.6 |
| 高速公路 | :first_quarter_moon_with_face: | :sunny: | 77.9 | 99.3 | 45.7 |
| 高速公路 | :first_quarter_moon_with_face: | :umbrella: | 70.9 | 97.6 | 30.8 |
T.E.D.D. 1104 M:6800万参数。
下载链接:请查看发布页面
测试数据集中的准确率:
| 时间 | 天气 | 微观准确率K@1 | 微观准确率k@3 | 宏观准确率K@1 | |
|---|---|---|---|---|---|
| 城市 | :sun_with_face: | :sunny: | 52.9 | 84.1 | 43.1 |
| 城市 | :sun_with_face: | :umbrella: | 49.9 | 81.3 | 42.2 |
| 城市 | :first_quarter_moon_with_face: | :sunny: | 54.7 | 85.1 | 48.4 |
| 城市 | :first_quarter_moon_with_face: | :umbrella: | 49.5 | 81.1 | 41.1 |
| 高速公路 | :sun_with_face: | :sunny: | 62.5 | 99.2 | 43.1 |
| 高速公路 | :sun_with_face: | :umbrella: | 71.9 | 99.3 | 39.2 |
| 高速公路 | :first_quarter_moon_with_face: | :sunny: | 79.4 | 99.3 | 45.3 |
| 高速公路 | :first_quarter_moon_with_face: | :umbrella: | 63.0 | 97.2 | 47.2 |
T.E.D.D. 1104 S:2600万参数。
下载链接:请查看发布页面
测试数据集中的准确率:
| 时间 | 天气 | 微观准确率K@1 | 微观准确率k@3 | 宏观准确率K@1 | |
|---|---|---|---|---|---|
| 城市 | :sun_with_face: | :sunny: | 51.0 | 83.0 | 46.3 |
| 城市 | :sun_with_face: | :umbrella: | 49.0 | 82.5 | 45.2 |
| 城市 | :first_quarter_moon_with_face: | :sunny: | 56.3 | 86.6 | 49.0 |
| 城市 | :first_quarter_moon_with_face: | :umbrella: | 49.4 | 81.4 | 42.5 |
| 高速公路 | :sun_with_face: | :sunny: | 70.3 | 100 | 68.5 |
| 高速公路 | :sun_with_face: | :umbrella: | 71.2 | 100 | 37.6 |
| 高速公路 | :first_quarter_moon_with_face: | :sunny: | 80.9 | 100 | 49.1 |
| 高速公路 | :first_quarter_moon_with_face: | :umbrella: | 69.3 | 100 | 61.1 |
数据集
我们提供了用于训练和评估 T.E.D.D 1107 模型的训练/验证/测试数据集:
- 训练数据集(约 130GB):即将发布...
- 验证数据集(约 495MB):下载验证+测试数据集。
- 测试数据集(约 539MB):下载验证+测试数据集。
架构
T.E.D.D. 1104 是一个端到端模型。我们将任务视为分类问题。
模型的输入是一序列 5 张图像,每张图像以 0.1 秒的间隔拍摄。
输出是需要在键盘上按下的正确按键。此外,T.E.D.D. 1104 也可以使用 Xbox 手柄输入作为回归目标进行训练。
该模型由三个模块组成: 首先,一个卷积神经网络将每张输入图像编码为特征向量。我们使用 EfficientNetV2 arXiv:2104.00298。 然后,我们使用 Transformer 编码器(https://arxiv.org/abs/1706.03762)生成特征向量序列上的双向联合分布。最后,我们利用 [CLS] 标记来预测按键组合。
该模型使用 PyTorch:https://pytorch.org/ 和 PyTorch Lightning:https://www.pytorchlightning.ai/ 实现。
软件与操作指南
本仓库包含生成训练数据、训练模型以及使用模型在视频游戏中驾驶(实时推理)所需的所有文件。软件采用 Python 3 编写。您可以在任何操作系统上训练模型。然而,数据生成和推理仅支持 Windows 10/11,因为大多数视频游戏仅支持这些操作系统。
环境要求
您可以在任何操作系统上训练和评估模型(我们使用 Linux 进行训练)。
但要运行实时推理(让 TEDD1104 在 GTAV 中驾驶),则必须使用 Windows 10/11。
Python 3.7 或更高版本(已测试 3.9.7)
PyTorch(1.12.0 或更高版本)
Torchvision(>=0.13.0 且 < 0.15.0。未来版本将支持 torchvision >=0.15.0)
PyTorch Lightning(1.6.0 或更高版本)
torchmetrics
scikit-image
numpy
PIL/Pillow
cv2(opencv-python)
tkinter
tabulate
fairseq(若使用 AdaFactor 训练模型)
wandb 或 tensorboard 用于训练(请相应设置 "--report_to" 参数)
win32api(PythonWin)——仅在运行实时推理时需要(让 TEDD 玩游戏)。
最新版本的 Windows Python 安装包中通常已包含此库。
pygame ——仅在使用 Xbox 手柄生成数据时需要
PYXInput ——仅在使用虚拟 Xbox 手柄代替键盘作为游戏控制器时需要。
请参阅 controller\README.md 获取安装说明。
运行推理
如何使用预训练的 T.E.E.D. 1104 模型在 GTAV 中驾驶
游戏配置
您可以选择“窗口模式”或“全屏模式”运行游戏。
如果想使用“窗口模式”:
- 启动 GTAV 并将其设置为窗口模式。
- 设置所需的游戏分辨率(如 1600x900)。
- 将游戏窗口移动到屏幕左上角。
- 使用
--width 1600和--height 900参数运行脚本。
如果想使用“全屏模式”:
- 在您的主显示器(标记为屏幕 nº1 的显示器)上启动 GTAV,并将其设置为全屏模式。
- 将游戏分辨率调整为与您的屏幕分辨率一致(如 2560x1440)。
- 使用
--width 2560、--height 1440和--full_screen参数运行脚本。
此外,如果您想运行我们提供的预训练模型,还需:
- 将设置 > 摄像头 > 第一人称车辆引擎盖设置为“开启”。
- 切换到第一人称视角(按下 “V” 键)。
- 在小地图上设置一个航点。
运行模型
使用 run_TEDD1104.py 脚本运行模型进行实时推理。可执行 run_TEDD1104.py -h 查看所有可用参数的说明。
python run_TEDD1104.py \
--checkpoint_path "models\TEDD1107_model.ckpt" \
--width 1920 \
--height 1080 \
--num_parallel_sequences 5 \
--control_mode keyboard
num_parallel_sequences:记录的并行序列数量。数值越高,模型每秒执行的迭代次数越多(按键频率更高),前提是您的 GPU 性能足够。这会提升模型表现,但也会增加 CPU 和内存的占用。
control_mode:选择键盘或手柄(Xbox 手柄)控制方式。无论模型是如何训练的,其输出都会转换为所选的控制模式。
如果模型表现异常(似乎没有反应或总是选择同一动作),您可以在脚本运行时按下 “L” 键来检查输入图像。
训练您自己的模型
自动驾驶模型
使用 train.py 脚本可以从头开始训练新模型,或继续训练现有模型。运行 train.py -h 可查看所有可用参数的说明。请参阅 training_scripts 文件夹,了解我们用于训练已发布模型的训练命令。
示例命令:
python3 train.py --train_new \
--train_dir dataset/train \
--val_dir dataset/dev \
--output_dir runs/TEDD1104-base \
--encoder_type transformer \
--batch_size 16 \
--accumulation_steps 4 \
--max_epochs 12 \
--cnn_model_name efficientnet_b4 \
--num_layers_encoder 4 \
--mask_prob 0.2 \
--dropout_cnn_out 0.3 \
--dropout_encoder 0.1 \
--dropout_encoder_features 0.3 \
--control_mode keyboard \
--dataloader_num_workers 32 \
--val_check_interval 0.5
您可以通过 --continue_training 标志继续训练模型:
python3 train.py --continue_training \
--checkpoint_path runs/TEDD1104-base/model.ckpt \
--train_dir dataset/train \
--val_dir dataset/dev \
--output_dir runs/TEDD1104-base \
--batch_size 16 \
--accumulation_steps 4 \
--max_epochs 24 \
--cnn_model_name efficientnet_b4 \
--dataloader_num_workers 32 \
--val_check_interval 0.5
模型评估:
使用 eval.py 脚本可以在测试数据集上评估模型。
python3 eval.py \
--checkpoint_path models/tedd_1104_S/epoch=4-step=198544.ckpt \
--batch_size 32 \
--test_dirs \
/data/gtaai_datasets/dev \
/data/gtaai_datasets/test/car_city_day_clear \
/data/gtaai_datasets/test/car_city_day_rain \
/data/gtaai_datasets/test/car_city_night_clear \
/data/gtaai_datasets/test/car_city_night_rain \
/data/gtaai_datasets/test/car_highway_day_clear \
/data/gtaai_datasets/test/car_highway_day_rain \
/data/gtaai_datasets/test/car_highway_night_clear \
/data/gtaai_datasets/test/car_highway_night_rain \
--output_path results/tedd_1104_S.tsv
图像重排模型
这是一种实验性的无监督预训练目标。我们会打乱输入序列的顺序,模型需要预测出正确的图像顺序。运行 train_reorder.py -h 可查看所有可用参数的说明。该脚本与自动驾驶脚本几乎相同,只是它仅支持 Transformer 编码器模型,并且没有 control_mode 参数。有关训练和评估的详细信息,请参阅前一节。在使用图像重排目标进行训练后,您可以将模型微调到自动驾驶任务中。
python3 train.py \
--new_model \
--checkpoint_path models/image_reordering.ckpt \
...
使用 eval_reorder.py 脚本可以在测试数据集上评估图像重排模型。
数据生成
使用 generate_data.py 脚本可以生成用于训练或评估的新数据。运行 run_TEDD1104.py -h 可查看所有可用参数的说明。请按照配置游戏部分中的说明配置游戏。
python generate_data.py \
--save_dir "dataset/train" \
--width 1920 \
--height 1080 \
--control_mode keyboard
如果 control_mode 设置为 “keyboard”,我们将记录 WASD 键的状态。如果设置为 “controller”,则会记录 Pygame 首先检测到的第一台 Xbox 控制器的状态。为了避免生成一个巨大的不平衡数据集,脚本会在录制过程中尝试对数据进行平衡。对于某一类别的样本,已经录制的数量越多,再次录制该类别样本的概率就越低。如果您希望禁用此行为,可以使用 --save_everything 标志。
引用:
@misc{TEDD1104,
author = {García-Ferrero, Iker},
title = {TEDD1104: 视频游戏中自动驾驶汽车},
year = {2022},
publisher = {GitHub},
journal = {GitHub 仓库},
howpublished = {\url{https://github.com/ikergarcia1996/Self-Driving-Car-in-Video-Games}},
}
作者:Iker García-Ferrero:
版本历史
5.1.0.XXL2022/11/285.1.0.M2022/11/285.1.0.S2022/11/285.0.02022/02/11常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。