低配版AI車神?網友用單個CNN在「極品飛車9」里飆車
最近,一位Reddit網友自己搭了個CNN模型,讓AI在2005年出的經典游戲「極品飛車9:最高通緝」里開車。
點贊超過1700,可謂是機器學習子版塊里一時以來最高的貼。
至于效果嘛……
在寬闊的大路上,AI開得還算平穩,但時不時就會去「畫蛇」……
好在速度控制得還行,不會輕易引起「警察」的注意。
雖然是游戲機制的一部分,但想要甩掉這些窮追不舍的警車,玩家手動操作時幾乎每次都把人整得心力憔悴、手指酸痛。
尤其是隨著追捕等級的提升,對付的將不再是那些老舊的巡邏車了,而是重型SUV甚至是直升機,逃脫難度直線上升。
大概是訓練數據的緣故,當AI在路上遇到障礙物時,表現得簡直就和人類玩家一模一樣:
「躲」這個詞,在AI的字典里是不存在的。
輕打方向,微調路線,瞄準了直接撞上去才是王道!
從路牌到三角錐,一個都不能放過。
項目很簡單,就是數據不太夠
「Deep For Speed」基于Python 3.9和Pytorch 1.10,只需要安裝Numpy、Matplotlib庫即可。
作者表示,這個項目的創意來自于英偉達項目的啟發。
論文中英偉達只用單個卷積神經網絡、而非大堆炫目算法就做出了自動駕駛汽車。
基礎架構
作者表示,自己項目的工作流程非常簡單。
程序首先會將游戲中的速度儀表盤、小地圖和視野中直觀路面錄屏并存儲為numpy數組,之后再去調用np.load()函數進行處理就可以了!
模型中的play.py和play_util.py函數,實質上是鍵盤輸入模擬器,將AI的自動駕駛結果模擬成物理鍵盤輸入,操控游戲。
不過可能是作為參考的項目比較古老,這里只能把游戲調成分辨率為800x600的窗口放在屏幕左上角運行。
創建和處理數據
使用模型
項目作者稱,做出可以運行的模型雛形用了兩周,把模型修改到其他用戶也能用,又花了兩周。總共在項目上投入的時間大概1個月。
其中,訓練數據集的搜集可以說是最難的部分了。
作者表示,自己耍游戲20小時中搜集的數據,因為模型改動的頻度和幅度,最后只有兩小時的數據能用。
項目的開源部分也是因為擴充訓練數據集的需求:想要擴大數據包,但自己搞不定了。
不過,如果能讓大家一起來玩的話,說不定有同好會做出更大的訓練數據集、訓練自己的模型,然后再共享給他
由此,作者也模仿原來游戲的名字「Most Wanted」給項目起了一個別稱——「DeepForSpeed: Data Wanted」。
作為最終目標,項目作者還想將自己的CNN項目做成一個可以實驗多種架構的通用平臺/界面。
讓玩家同好們在體驗模擬器娛樂的同時,也能實驗自己做的其他神經網絡。
極品飛車:最高通緝
《極品飛車:最高通緝》(Need For Speed: Most Wanted),是游戲業界著名廠商藝電(EA)推出的《極品飛車系列》賽車游戲中的第九作,于2005年11月15日開始在美國發售。
當年,開局一上來就不得不按照劇情需要把自己心愛的「寶駒」BMW M3 GTR輸掉,著實讓小編難受了好久。
尤其是之后要從最基礎的車開始,堪稱教科書式的「摩托變單車」……
游戲結合了沙盒開放世界、警匪跑跑追追模式、子彈時間視覺效果、以及玩家改裝車輛等特色。
這些特色功能在當時幾乎所有大游戲廠商都還在搞參與式電影類游戲項目的風氣中,堪稱走在時代的前沿。
游戲除了推出Windows版本外,還為GameCube、GBA、NDS,PlayStation 2、PSP,Xbox,Xbox 360等多個游戲機平臺推出相應版本。
2009年底,游戲的全平臺銷量達到了1600萬套,是整個極品飛車系列最暢銷的一部作品,也曾是當時全球非獨占平臺的單一賽車游戲作品中的最高銷量。
游戲女主角聲優是這位超級辣阿姨Josie Maran,在2000年代曾經短暫從超模業改行作女演員,沒走紅后改做化妝品品牌,終于成功。
在當年的游戲媒體網站中也廣受好評。Metacritic和Game Rankings都給出了82的高分(滿分100分)。
Eurogamer稱之為「畫面效果驚艷不已」,GameSpot給出8.4分(滿分10分),并贊揚游戲「圖像銳利」「音效出眾」,但批評游戲的AI起初太容易而之后太難。
國內有玩家想憶童年,于是又扒出來玩了一下,評價是:「速度感仍舊一流,發黃、模糊的光影和粒子效果遮蓋了許多場景的簡陋之處,還算比較討巧。」
不過托這款游戲現在畫面質量一般、但游戲操作系統仍然犀利的特色,正好符合機器學習模型的個人開發者的要求:
因為畫面質量一般,對硬件的要求就低,個人買得起;因為游戲仍然好玩,訓練AI模型來玩仍然有價值。
靈感來自2016年的論文
此外,作為idea來源的英偉達論文,年代也十分久遠,不過效果依然拔群。
論文鏈接:https://arxiv.org/abs/1604.07316
論文中,作者訓練了一個卷積神經網絡(CNN),將單個前置攝像頭的原始像素直接映射為轉向指令。
只需用到很少的人類數據,AI就能學會駕駛汽車,即便是在沒有標記或者視覺引導不明確的地方。
作者并沒有訓練AI去檢測道路的邊界,而是用人類的轉向角度作為訓練信號來檢測有用的道路特征,從而讓AI學到內部的表征。
與諸如車道標記檢測、路徑規劃和控制這種對問題的明確分解相比,英偉達提出的端到端系統同時優化了所有處理步驟。
作者認為,這種方法可以得到更好的性能和更小的系統。其中,內部的自我優化,可以最大化整體系統的性能,而不是優化人類選擇的中間標準,例如車道檢測。
在訓練過程中,圖像最先會被輸入到一個CNN網絡之中,然后計算出一個轉向的指令。
之后,將這個指令與圖像的期望指令進行比較,調整CNN的權重,使CNN的輸出更接近期望的輸出。其中,權重調整是通過反向傳播完成的。
一旦完成訓練,神經網絡就可以從視頻圖像中生成正確的轉向命令。
網友:和FSD差不多嘛!
「游戲中AI駕駛表現比大部分加州公路上的人類司機好」
「AI在游戲里開車,和特斯拉FSD差不多嘛!很贊!」
網友:「大兄弟干得漂亮,能做個馬里奧賽車版本的么?我愿意打錢。」
項目作者:「好啊,我要是能在玩馬里奧賽車同時也錄屏,說不定可行哦。」
「千萬別把這當成軟件升級賣給特斯拉」