新智元報道
編輯:好困 袁榭
【新智元導讀】單憑一個CNN網絡,居然能在快20年前的經典賽車遊戲裡跑自動駕駛!不過,你這個AI咋不躲障礙物呢?
最近,一位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差不多嘛!很贊!」
網友:「大兄弟幹得漂亮,能做個馬裡奧賽車版本的麼?我願意打錢。」
項目作者:「好啊,我要是能在玩馬裡奧賽車同時也錄屏,說不定可行哦。」
「千萬别把這當成軟體更新賣給特斯拉」
參考資料:
https://github.com/edilgin/DeepForSpeed