整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          用Python寫Gameboy模擬器,還能訓練AI模

          用Python寫Gameboy模擬器,還能訓練AI模型:丹麥小哥大學項目火了

          器之心報道

          機器之心編輯部

          感覺用 Atari 游戲研究人工智能有點「不夠接地氣」?現(xiàn)在我們可以使用 Gameboy 模擬器了。

          對于很多 80 后、90 后來說,任天堂 Gameboy 代表了青春的很大一部分。很多我們耳熟能詳?shù)挠螒蚨际亲畛醮钶d在這款 8 位游戲掌機上的,包括鼎鼎有名的《馬里奧》、《塞爾達》系列。對于國內(nèi)玩家來說,我們玩得最多的則應該是《口袋妖怪》系列了。

          這款游戲機距離首次發(fā)布已過去了 30 年時間,不過人們對于它的熱情卻絲毫不減。昨天,一款利用 Python 編寫的 Gameboy 模擬器在社交網(wǎng)絡上吸引了人們的廣泛關注。

          爺?shù)那啻夯貋砹耍孔髡咴?Reddit 上發(fā)出的帖子迅速獲得了上千點贊。

          該項目的作者之一 Mads Ynddal 宣布,PyBoy 的 1.0 版正式發(fā)布。

          PyBoy 是什么?

          簡而言之,它是一個完全用 Python 從頭開始編寫的 Game Boy 模擬器,并且支持通過 API 編寫腳本。研究者添加了類型定義,使其可以使用 Cython 編譯軟件,從而獲得與用 C 和 C++編寫的模擬器相媲美的性能。

          項目鏈接:https://github.com/Baekalfen/PyBoy

          特點

          PyBoy 被設計成通過 Python 訪問,因此支持并鼓勵人們做實驗研究,機器人和人工智能在作此嘗試。研究者正在構建游戲特定的包裝器,目前,包裝器可讓程序員與俄羅斯方塊和超級瑪麗進行交互,而不需要對 Game Boy 有深入的了解。可以參考該文檔:https://docs.pyboy.dk。

          項目作者還想學習和嘗試更多奇特的功能,根據(jù)大學項目的研究,他們向模擬器添加了倒回功能,也就是說,您可以在任何游戲中倒回時間。

          PyBoy 模擬器架構

          1990 年,任天堂為 Game Boy 申請了專利。下圖展示了該專利中 CPU、RAM、盒帶和顯示屏之間的集成與連接。

          Game Boy 專利中的架構圖。

          PyBoy 項目成員基于此在 Python 中為每個組件制定類(class),從而在「主機系統(tǒng)」上為「客戶系統(tǒng)」搭建了基礎(系統(tǒng)運行 Python)。該客戶系統(tǒng)就是虛擬的 Game Boy 硬件,理論上它能夠運行為 Game Boy 編寫的每一個軟件部分。

          下圖展示了 PyBoy 模擬器中所有類及其關系:

          PyBoy 對強化學習的意義以及與其他環(huán)境的比較

          這些年來,已有很多人開發(fā)過 Gameboy 模擬器,現(xiàn)在的電腦和手機上都有可運行的工具。為什么要用 Python 來寫一款呢?當然是用來訓練人工智能的。

          想打游戲?Gameboy 對于現(xiàn)在的人來說恐怕有點「難以上手」。

          最接近通用人工智能的方法——強化學習

          通用人工智能這一概念指的是機器能夠成功完成任意一件人類能夠做到的智力型任務。目前我們對 AI 的研究距離這一目標還差很遠的距離,吳恩達之前就表示過,深度學習做的僅是高維的「curve fitting」。

          不同于那些依靠預先收集數(shù)據(jù)(甚至需要大量人工標記)的機器學習算法,強化學習是一種僅通過環(huán)境獎賞進行訓練的算法,其工作機制類似于人體內(nèi)部的多巴胺系統(tǒng)。強化學習是目前最接近于人類從經(jīng)驗中學習這一能力的機器學習算法,尤其適用于智能體需要根據(jù)其所處環(huán)境進行決策的情景。

          下圖展示了 RL 智能體是如何僅以游戲圖像作為輸入,來學習馬里奧控制策略的。

          為什么大量關于 RL 的研究都在 Atari 上進行,而不是其他更實際的問題?

          關于 RL 的研究使用 Atari 作為基準的原因主要有如下幾點:

          Atari 環(huán)境能夠讓我們使用相同的算法測試多個不同的環(huán)境,驗證 RL 算法的通用性;

          由于輸入僅為游戲圖像,增加了問題的復雜性;

          Atari 為研究人員提供了一個公認的測試平臺,能夠較為公平地比較不同算法之間的性能;

          RL 需要大量的交互數(shù)據(jù)進行學習,在真實環(huán)境中實際測試之前,Atari 為算法的初期驗證提供了一個安全、快速、低成本的測試平臺。

          下圖為一些 Atari 環(huán)境的展示:

          Atari、PySC2 之類環(huán)境與 PyBoy 對比

          上一小節(jié)介紹了在 Atari 環(huán)境中訓練 RL 智能體的諸多優(yōu)勢,然而隨著 RL 的發(fā)展,這一相對較簡單的環(huán)境逐漸不再適用于目前新的 RL 研究。不久之前,由 DeepMind 提出的 Agent57 在所有 Atari 環(huán)境中表現(xiàn)均超越了人類玩家平均水平,也預示著在 Atari 環(huán)境上的 RL 研究逐漸進入尾聲。

          更困難環(huán)境有諸如 DeepMind 與暴雪合作的 PySC2,需要智能體學會復雜的協(xié)同、對抗策略。雖然 AlphaStar 在這一環(huán)境中取得了令人矚目的成果,但仍存在很多亟待解決的問題。以下為 PySC2 環(huán)境示意圖。

          PyBoy 環(huán)境的難度可以說介于 Atari 與 PySC2 之間,它為我們提供了一個驗證 RL 性能的新基準。在將 RL 應用于更復雜的實際問題之前,我們可以先在這一難度適中的環(huán)境中進行低成本、高效的測試。

          就像特斯拉的人工智能和自動駕駛視覺總監(jiān) Andrej Karpathy 說的,「One should always try a BB gun before reaching for the Bazooka.」

          Github 介紹

          如何安裝?

          如果已經(jīng)配置了一個能夠正常運行 Python 的環(huán)境,那么安裝會非常簡單:

          通過軟件包管理器安裝 SDL2(sudo apt install libsdl2-dev 或是 brew install sdl2)

          使用 pip install pyboy 安裝 Pyboy

          可以直接從終端 $ pyboy file.rom 使用 PyBoy 或者在 Python 腳本中使用:

          from pyboy import PyBoypyboy=PyBoy('ROMs/gamerom.gb')while not pyboy.tick(): pass

          該項目同時支持 macOS, Raspberry Pi (Raspbian), Linux (Ubuntu), 以及 Windows 10.

          PyBoy API 文檔

          如果用戶需要創(chuàng)建一個自己的機器人或者是 AI,可以在 PyBoy Documentation (https://baekalfen.github.io/PyBoy/index.html) 找到所有用以支持的外部組件,其中各種類及其用法都非常詳細,這里不再一一贅述。(如下圖結(jié)構索引)

          簡短示例

          PyBoy 可以作為 Python 中的對象加載。所以它可以從另一個腳本進行初始化,并可以由該腳本控制和探測。看一下 gamewrapper_tetris.py 上一個粗糙的「機器人」,正在與游戲進行交互。當然,所有的外部組件都可以在 PyBoy 文檔中找到。

          對于一般的 Game Boy 文檔,可以查看 Pan Docs,其中包含了每個主題的詳細信息。

          以下是從屏幕讀取數(shù)據(jù)的簡短演示,該代碼也可以在 gamewrapper_mario.py 中找到:

          import osimport sysfrom pyboy import PyBoy, WindowEvent# Makes us able to import PyBoy from the directory belowfile_path=os.path.dirname(os.path.realpath(__file__))sys.path.insert(0, file_path + "/..")# Check if the ROM is given through argvif len(sys.argv) > 1: filename=sys.argv[1]else: print("Usage: python mario_boiler_plate.py [ROM file]") exit(1)

          quiet="--quiet" in sys.argvpyboy=PyBoy(filename, window_type="headless" if quiet else "SDL2", window_scale=3, debug=not quiet, game_wrapper=True)pyboy.set_emulation_speed(0)assert pyboy.cartridge_title()=="SUPER MARIOLAN"

          mario=pyboy.game_wrapper()mario.start_game()assert mario.score==0assert mario.lives_left==2assert mario.time_left==400assert mario.world==(1, 1)assert mario.fitness==0 # A built-in fitness score for AI developmentlast_fitness=0print(mario)

          pyboy.send_input(WindowEvent.PRESS_ARROW_RIGHT)for _ in range(1000): assert mario.fitness >=last_fitness last_fitness=mario.fitness

          pyboy.tick() if mario.lives_left==1: assert last_fitness==27700assert mario.fitness==17700 # Loosing a live, means 10.000 points in this fitness scoringprint(mario) breakelse: print("Mario didn't die?") exit(2)

          mario.reset_game()assert mario.lives_left==2

          pyboy.stop()

          如果你在加載了 Super Mario Land ROM 的情況下運行上述代碼,則將在下面得到圖片和終端輸出。值得注意的是,Mario 的形態(tài)顯示為索引 0,1,16,17。



          作者簡介

          該項目的作者 Asger Anders Lund Hansen、Mads Ynddal 和 Troels Ynddal 均來自丹麥。畢業(yè)于丹麥哥本哈根大學的 Mads Ynddal 表示,事實上這一 Gameboy 模擬器可以追溯到 2015 年他在大學期間的項目。

          Gameboy 模擬器的的 1.0 版發(fā)布了,但對于開發(fā)者們來說還有很多事可以去做。項目研發(fā)者表示,目前可以推進的方向包括為模擬器加入聲音、彩色、Gameboy 模擬連線,以及更多游戲的封裝,當然還有在其之上訓練神經(jīng)網(wǎng)絡的示例。

          希望在人們的努力下,Gameboy 中的游戲也能重獲新生。更重要的是,它現(xiàn)在還有了訓練人工智能的任務。

          ively Wallpaper是一款開源的免費桌面增強應用程序,它可以通過融入時尚的動畫桌面背景來改變?nèi)魏闻_式機或筆記本電腦的外觀,而不會影響性能。

          這款輕量級的個性化應用程序由一位名叫Dani John的開發(fā)人員從頭開始構建,為所有用戶提供了一個有限的預制動畫內(nèi)容庫,以及一系列用于創(chuàng)建全新動畫背景的工具。

          最重要的是,顯示實時和動畫桌面背景的整個過程不會給你的電腦硬件帶來明顯的額外壓力,并且會在任何全屏應用程序(如視頻游戲或全屏視頻)啟動時自動暫停實時背景的再現(xiàn)。

          Lively Wallpaper PC應用程序的核心功能之一是它能夠讓用戶創(chuàng)建自己引人注目的動畫壁紙。這是通過內(nèi)置支持來完成的,可以導入視頻文件、GIF、網(wǎng)絡內(nèi)容、著色器、HTML代碼、模擬器軟件,甚至游戲,并將它們轉(zhuǎn)換為可部署的桌面壁紙,可以被動或主動地欣賞(具有可通過鼠標點擊激活的交互式元素)。

          根據(jù)用戶的知識和技術水平,該應用程序可用于快速創(chuàng)建更大、更復雜的項目的動畫背景視頻,最適合經(jīng)驗豐富的程序員。

          Lively Wallpaper充分利用硬件加速視頻編解碼器進行多媒體再現(xiàn)(Direct Show、LAV、K-Lite和Kawaii編解碼器),并可以接受多種流行文件格式和容器(如MKV、MP4、AVI、MOV和WebM)中的視頻文件。音頻支持也存在,但只有當應用程序通過最近的桌面活動檢測到用戶存在時,它才會激活。

          高級用戶還可以設置壁紙播放規(guī)則,這將幫助他們根據(jù)所選前臺應用程序的運行來完全控制電腦桌面。例如,當Lively Wallpaper檢測到存在生產(chǎn)力應用程序時,動畫背景可能會停止。該應用程序支持在多臺顯示器、選定的單個顯示器等上同時部署動畫壁紙。

          面我推薦幾款工具

          HTML App Build

          HTML App Build 工具是一款可以將 HTML 網(wǎng)頁轉(zhuǎn)換為 EXE 可執(zhí)行文件的軟件。它可以讓您使用 HTML、JavaScript 和 CSS 等網(wǎng)頁技術開發(fā)跨平臺的移動應用

          使用 HTML App Build 工具的步驟如下:

          1. 在您的電腦上安裝 HTML App Build 工具

          2. 打開 HTML App Build 工具,選擇“文件”-> “新建”->“項目”,輸入項目名稱和保存路徑,選擇“5+ App”模板。

          3. 編寫您的 HTML、JavaScript 和 CSS 代碼,或者使用 HBuilderX 內(nèi)置的 HTML5+ API 和 MUI 框架來快速開發(fā)移動應用。

          4. 在 HTML App Build 工具中選擇“運行”-> “運行到手機或模擬器”,查看您的應用在真機或模擬器上的效果。

          5. 在 HTML App Build 工具中選擇“云打包”-> “打包設置”,設置應用的圖標、名稱、版本號等信息,然后選擇“開始云打包”。

          6. 等待云打包完成后,下載應用的 EXE 文件,或者掃描二維碼在手機上安裝應用。

          HEX

          HEX 工具是一款可以將 HTML 網(wǎng)頁轉(zhuǎn)換為 EXE 或 APP 的軟件。它可以讓您使用 HTML等網(wǎng)頁技術開發(fā)桌面或移動應用。


          使用 HEX 工具將 HTML 變?yōu)?EXE 或 APP 的步驟如下:

          1. 在您的電腦上安裝 HEX 工具。

          2.打開HEX 工具,選擇“新建項目”,輸入項目名稱和保存路徑,選擇“HTML”模式。

          3.編寫您的 HTML ,JavaScript 和 CSS 代碼,或者使用現(xiàn)有的 HTML 網(wǎng)頁文件。

          4.在HEX 工具中選擇“發(fā)布項目”,設置您的應用的圖標、名稱、版本號等信息,然后選擇“生成 EXE”或“生成 APP”。

          5.等待生成完成后,您就可以得到您的應用的 EXE 或 APP 文件,可以在電腦或手機上運行。

          這是詳細的使用過程:HTML杞? EXE錛寃eb欏圭洰鎵撳寘 exe鐨勮В鍐蟲柟妗堬紙1錛夛細HEX - 鐭ヤ箮

          HTML Compiler

          HTML Compiler是一款可以將HTML文件轉(zhuǎn)換為可執(zhí)行文件的工具。您可以使用它來制作獨立的網(wǎng)頁應用程序或演示文稿。要使用HTML Compiler工具,您需要按照以下步驟操作:

          1. 下載并安裝HTML Compiler2021直裝版,或者從官網(wǎng)下載最新版本。

          2. 打開HTML Compiler,選擇“新建項目”或“打開項目”,并選擇您要編譯的HTML文件或文件夾。

          3. 在項目設置中,您可以修改應用程序的名稱、圖標、版本、版權等信息,以及選擇編譯選項和輸出路徑。

          4. 點擊“編譯”按鈕,等待編譯完成,您就可以在輸出路徑中找到生成的可執(zhí)行文件了。

          這是關于html compiler直裝版的詳細教程HTML Compiler2021直裝版 附安裝教程及特點 - 嗶哩嗶哩

          如果您只是想編輯和運行HTML文件,而不需要編譯成可執(zhí)行文件,您可以使用其他的HTML編輯器,例如VS Code、HBuilderX、Online HTML Editor等。這些編輯器都提供了語法高亮、代碼提示、實時預覽等功能,可以幫助您快速編寫和測試HTML代碼。


          主站蜘蛛池模板: 国产免费播放一区二区| 国产精品久久亚洲一区二区| 3D动漫精品啪啪一区二区下载| 精品无码日韩一区二区三区不卡| 日本无卡码免费一区二区三区| 无码人妻精品一区二区三区66| 一区二区三区久久精品| 国产欧美一区二区精品仙草咪| 亚洲一区二区三区偷拍女厕| 精品一区二区三区在线观看| 无码免费一区二区三区免费播放| 精品性影院一区二区三区内射| 亚洲精品伦理熟女国产一区二区| 国产精品成人一区无码| 奇米精品一区二区三区在| 人妻无码视频一区二区三区| 波多野结衣AV一区二区三区中文 | 乱精品一区字幕二区| 97久久精品无码一区二区| 国产一区美女视频| 国产精品高清一区二区三区| 亚洲一区精彩视频| 国产成人欧美一区二区三区| 日韩视频在线观看一区二区| 亚洲国产老鸭窝一区二区三区 | 精品国产日产一区二区三区 | 亚洲综合一区二区国产精品| 午夜视频在线观看一区| 久久精品一区二区| 在线观看日韩一区| 精品无码AV一区二区三区不卡| 国产一区二区在线|播放| 无码人妻久久一区二区三区| 国产嫖妓一区二区三区无码| 乱精品一区字幕二区| 国产免费伦精品一区二区三区| 亚洲乱码av中文一区二区 | 国产精品亚洲一区二区麻豆| 一区二区三区影院| 日本免费一区尤物| 无码人妻精品一区二区三区不卡|