遊戲自動駕駛玩法秘籍(gta5自動駕駛怎麼關閉)

項目作者:Iker García

機器之心報道

參與:Racoon X

用深度學習當「外掛」,本文將教你如何用 PyTorch 在GTA 5 中訓練自動駕駛模型。

最新一代的俠盜獵車手 GTA 5 是這樣一款遊戲,它內含一個故事驅動的高度自由化世界,以至於遊戲推出之後,很多人在通關之後(或者一點劇情沒打)會嘗試很多非常規的玩法。調整遊戲中的物理參數、當一個遵紀守法的「好人」,甚至在遊戲里學習側方位停車幫助考駕照……

對於 AI 開發者來說,GTA 5 有一個龐大的虛擬世界,我們在裡面可以開車。所以為什麼不能用來訓練自動駕駛呢?在新冠疫情期間,我們打遊戲的時間不斷增加,進而產生了大膽的想法。

項目簡介

這是一個使用深層神經網絡並運用監督學習實現在 Grand Theft Auto V 中自動駕駛的開源項目。項目使用 PyTorch 編寫,並使用了 Nvidia 的 Apex 擴展庫,支持混合精度訓練與推斷,最多大約有兩倍的速度提升。訓練後模型在駕駛時的策略是模仿人玩 GTA 時的操作,並不會去遵守遊戲里的交通規則。例如:地板油在街道上穿行,並躲避其他車輛與行人。當在遊戲中設置好目標點後,訓練好的模型能夠自主地駕駛到對應目標點。

項目地址:

項目使用人工標記的數據來訓練深層神經網絡,即首先記錄下遊戲中的畫面已經人玩遊戲時的鍵盤操作,之後使用該數據集來訓練神經網絡模型。

這裡需要指出的是,本項目只是用 GTA V 作為自動駕駛的例子,理論上其可用於任意一款駕駛的電子遊戲中。下圖為使用訓練後模型進行自動駕駛的效果展示。

GTA 5真香!哦不,我在用深度學習做自動駕駛

GTA 5真香!哦不,我在用深度學習做自動駕駛

這技術,比玩家都穩?

整體框架

此前大多數嘗試在電子遊戲中實現自動駕駛的模型均包含有深層卷積神經網絡(通常是 Inception 或 Resnet)。這些模型以單一圖像作為輸入。當你看到如下這樣一張圖像時你會作出什麼樣的反應呢?

GTA 5真香!哦不,我在用深度學習做自動駕駛

你可能會想到,最好的選擇是剎車來避讓圖中藍色和灰色車輛。但是,如果這兩輛車都停下來讓你先過馬路怎麼辦呢?假如你現在實際上是在倒車呢?你當前的車速以及其他車輛的速度是否允許你穿過馬路而不會發生碰撞?單一的圖像無法為自動駕駛車輛提供足夠的信息。我們需要更多的信息,這就是為什麼本項目使用一系列圖像作為輸入的原因。間隔 0.1 秒捕捉 5 張連續的圖像,這樣的方式為模型提供了更多關於自身、其他車輛與環境的信息。

GTA 5真香!哦不,我在用深度學習做自動駕駛

T.E.D.D. 1104 由一個深層卷積神經網絡(Resnet)之後連接一個循環神經網絡(LSTM)組成。CNN 用以上 5 張連續的圖片作為輸入,並為其產生對應的向量表徵。之後這些表徵將會輸送到 RNN 中,RNN 會為整個序列輸入產生一個獨特的向量表徵。最後通過一個全連接網絡輸出以上序列輸入在電腦鍵盤上對應的按鍵。整體結構如下圖所示。

GTA 5真香!哦不,我在用深度學習做自動駕駛

如何使用

這個項目包含了所有用於生成訓練數據、進行模型訓練以及使用訓練好的模型在遊戲中自動駕駛的文件。整個項目使用 Python 3 編寫。作者僅在 Windows 10 系統下進行了測試,畢竟大多數人都是在 Win 10 操作系統下玩的 PC 遊戲,Linux 和 Mac 上的遊戲還是比較偏小眾一些。

依賴環境

運行本項目需要安裝的依賴環境如下:

Pytorch

Torchvision

Nvidia Apex (only for FP16 training)

numpy

cupy (optional but highly recommended especially for training the model, 10x speed up in data preprocessing comparated with numpy)

cv2 (opencv-python)

glob

h5py

json

win32api (PythonWin) – Should be installed by default in newest Python versions (Python 3.7 reccomended)

生成訓練數據集

首先將遊戲設置為桌面模式,分辨率設置為 1600×900,將遊戲窗口移到桌面左上角位置,如下圖所示:

GTA 5真香!哦不,我在用深度學習做自動駕駛

運行如下代碼並開始玩遊戲:

python generate_data.py –save_dir tedd1007\training_data

該程序會自動地捕捉屏幕並生成用於訓練的樣本。這些文件將會被保存為「training_dataX.npz」。重新運行以上代碼時不用擔心原數據集被覆蓋,程序會自動檢測目錄中是否已經存在數據集文件。使用 Q + E 停止收集數據。

訓練模型

使用如下代碼對模型進行訓練:

python train.py –train_new

–train_dir tedd1007\training_data\train

–dev_dir tedd1007\training_data\dev

–test_dir tedd1007\training_data\test

–output_dir tedd1007\models

–batch_size 10

–num_epochs 5

–fp16

其中–fp16 能夠讓我們使用混合精度訓練(需要顯卡支持半精度浮點運算,如:RTX 2000、RTX Titan、Titan V、Tesla V100 等),使用了 Nvidia 的 Apex 擴展庫:
https://github.com/NVIDIA/apex。訓練模型需要消耗大量的顯存,項目作者把 batch size 設置為 15 在 RTX 2080 上進行訓練。

使用如下代碼從保存的 checkpoint 中繼續訓練:

python train.py –continue_training

–train_dir tedd1007\training_data\train

–dev_dir tedd1007\training_data\dev

–test_dir tedd1007\training_data\test

–output_dir tedd1007\models

–batch_size 10

–num_epochs 5

–checkpoint_path tedd1007\checkpoint\epoch1checkpoint.pt

運行模型

訓練完成之後,接下來就可以看 AI 是如何「開車」的了。使用如下命令運行模型:

python run_TEDD1104.py –model_dir D:\GTAV-AI\models –show_current_control –fp16

假如讀者的 GPU 有 tensor core 的話(如 RTX 2000、RTX Titan、Titan V、Tesla V100 等),推薦使用–fp16,能夠將推理速度大約提升 2 倍並只消耗一半的顯存。

GTA 5 里的載具手感和極品飛車等遊戲有所不同,對於手殘的我們來說撞牆在所難免。自從學習了人工智能,一切看來變得有了希望。

原創文章,作者:機器之心Pro,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/340778.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
機器之心Pro的頭像機器之心Pro
上一篇 2025-02-11 13:32
下一篇 2025-02-11 13:32

相關推薦

發表回復

登錄後才能評論