国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何用人工智能自動玩游戲

這篇具有很好參考價值的文章主要介紹了如何用人工智能自動玩游戲。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

如何用人工智能自動玩游戲

一、前言

讓AI玩游戲的思想早在上世紀(jì)就已經(jīng)有了,那個時候更偏向棋類游戲。像是五子棋、象棋等。在上世紀(jì)“深藍”就擊敗了國際象棋冠軍,而到2016年“Alpha Go”擊敗了人類圍棋冠軍。

到現(xiàn)在,AI涉略的不僅僅是棋類游戲。像是超級馬里奧、王者榮耀這種游戲,AI也能有比較好的表現(xiàn)。今天我們就來用一個實際的例子討論AI自動玩游戲這一話題,本文會用非常簡單的機器學(xué)習(xí)算法讓AI自動玩Google小恐龍游戲。

二、Google小恐龍與監(jiān)督學(xué)習(xí)

2.1、Google小恐龍

如果你使用的是Chrome瀏覽器,那么相信你應(yīng)該見過下面這個恐龍:

ai玩游戲,# Python小案例,Python,機器學(xué)習(xí)散文
當(dāng)我們用Chrome斷網(wǎng)訪問網(wǎng)頁時,就會顯示這個恐龍,或者直接在地址欄輸入:chrome://dino直接訪問該游戲。

游戲的玩法非常簡單,只需要按空格鍵即可。比如下面左圖,快碰到障礙物,這時需要按空格,而下面右圖沒有障礙(或離障礙比較遠),則不需要按按鍵。

ai玩游戲,# Python小案例,Python,機器學(xué)習(xí)散文
當(dāng)然還有出現(xiàn)鳥的情況,我們也可以歸為跳的情況。大家可以玩一下。

2.2、監(jiān)督學(xué)習(xí)

玩游戲很多時候會使用一個叫強化學(xué)習(xí)的方式來實現(xiàn),而本文使用比較簡單的監(jiān)督學(xué)習(xí)來實現(xiàn)。

本文會使用邏輯回歸算法實現(xiàn),其代碼如下:

from sklearn.linear_model import LogisticRegression # 邏輯回歸模型
from sklearn.model_selection import train_test_split    # 數(shù)據(jù)集拆分
# 1、準(zhǔn)備數(shù)據(jù)
X = [
    # 天河區(qū)的坐標(biāo)
    [1, 1],
    [1, 2],
    [2, 0],
    [3, 2],
    [3, 3],
    # 花都區(qū)的坐標(biāo)
    [7, 7],
    [6, 7],
    [7, 6],
    [8, 6],
    [8, 5]
]
y = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]
# 2、拆分?jǐn)?shù)據(jù)集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 3、定義模型
model = LogisticRegression()
# 4、填充數(shù)據(jù)并訓(xùn)練
model.fit(X_train, y_train)
# 5、評估模型
score1 = model.score(X_train, y_train)
score2 = model.score(X_test, y_test)
print(score1, score2)
# 6、預(yù)測
input = [
    [4, 4]
]
pred = model.predict(input)
print(pred)

關(guān)于邏輯回歸的講解可以查看:Python快速構(gòu)建神經(jīng)網(wǎng)絡(luò)

我們可以把玩游戲看作一個分類問題,即輸入為當(dāng)前游戲的圖像,輸出為0、1的一個二分類問題(0表示跳,1表示不跳)。要讓AI實現(xiàn)自動玩游戲,我們需要做幾件事情。分別如下:

  1. 玩游戲,收集一些需要跳的圖片和一些不需要條的圖片
  2. 選擇合適的分類算法,訓(xùn)練一個模型
  3. 截取當(dāng)前游戲畫面,預(yù)測結(jié)果,判斷是否需要跳躍
  4. 如果需要跳躍,則用程序控制鍵盤,按下跳躍鍵

下面我們來依次完成上面的事情。

三、收集數(shù)據(jù)

收集數(shù)據(jù)我們需要在玩游戲的過程中不停地截圖,這里可以用Pillow模塊來實現(xiàn)截圖。Pillow模塊需要單獨安裝,安裝語句如下:

pip install pillow

截圖的代碼如下:

import time
from PIL import ImageGrab   # 截圖
time.sleep(3)
while True:
    # 截圖
    img = ImageGrab.grab()
    # print(img.size) # 960 540 480 270
    img = img.resize((960, 540))
    # 保存圖片
    img.save(f'imgs/{str(time.time())}.jpg')
    # 修改name
    time.sleep(0.1)

運行程序后就可以切換到Chrome開始游戲了。進行一段時間后,我們會截取一些圖片,大致如下:
ai玩游戲,# Python小案例,Python,機器學(xué)習(xí)散文
這時就輪到人類智能上場了,我們手動的把我們決定需要跳的場景放置到imgs/jump目錄下,把覺得不需要跳的場景放到imgs/none目錄下。然后就可以進行下一步了,這里截取的圖片通常不需要跳的要多很多,所有可以多收集幾次。

收集完成后我們就可以把圖片讀入,并轉(zhuǎn)換成一個1維數(shù)組,這部分代碼如下:

import os
import cv2
# 所有圖片的全路徑
files = [os.path.join(jump_path, jump) for jump in os.listdir(jump_path)] + \
        [os.path.join(none_path, none) for none in os.listdir(none_path)]
X = []
y = [0] * len(os.listdir(jump_path)) + [1] * len(os.listdir(none_path))
# 遍歷jump目錄下的圖片
for idx, file in enumerate(files):
    filepath = os.path.join(none_path, file)
    x = cv2.imread(filepath, 0).reshape(-1)
    X.append(x)

此時Xy就是我們的特征和目標(biāo)了。有了Xy就可以開始訓(xùn)練模型了。

四、訓(xùn)練分類模型

訓(xùn)練部分的代碼非常簡單,我們可以在訓(xùn)練完成后保存模型。代碼如下:

import os
import cv2
import joblib
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
jump_path = os.path.join('imgs', 'jump')    # 需要跳的圖片的根目錄
none_path = os.path.join('imgs', 'none')    # 不需要跳的圖片的根目錄
# 所有圖片的全路徑
files = [os.path.join(jump_path, jump) for jump in os.listdir(jump_path)] + \
        [os.path.join(none_path, none) for none in os.listdir(none_path)]
X = []
y = [0] * len(os.listdir(jump_path)) + [1] * len(os.listdir(none_path))
# 遍歷jump目錄下的圖片
for file in files:
    x = cv2.imread(file, 0).reshape(-1)
    X.append(x)

# 2、拆分?jǐn)?shù)據(jù)集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 3、定義模型
model = LogisticRegression(max_iter=500)
# 4、訓(xùn)練模型
model.fit(X_train, y_train)
# 5、評估模型
train_score = model.score(X_train, y_train)
test_score = model.score(X_test, y_test)
print(train_score, test_score)
# 保存模型
joblib.dump(model, 'auto_play.m')

在我電腦上訓(xùn)練的準(zhǔn)確率在90%以上,總體效果還是不錯的。不過有幾個可以改進的地方。這里說幾點:

  1. 圖像只有中間部分會對下一步操作有影響,因此可以選擇對訓(xùn)練圖片進行一些處理。把上面和下面部分設(shè)置為0。如果做了這個處理,那么在實際應(yīng)用時也要做同樣的處理。
  2. 這些圖片如果移植到其它電腦可能不適用,因為分辨率等原因。所有可以選擇使用更復(fù)雜的模型,比如CNN網(wǎng)絡(luò)。
  3. 因為手動收集數(shù)據(jù)比較麻煩,可以選擇做一下數(shù)據(jù)增強。

在這里我們不做這些改進,直接使用最簡單的模型。

五、自動玩游戲

自動玩游戲需要借助pynput模塊來實現(xiàn),其安裝如下:

pip install pynput

我們可以用下面的代碼實現(xiàn)按下鍵盤的空格鍵:

from pynput import keyboard
from pynput.keyboard import Key
# 創(chuàng)建鍵盤
kb = keyboard.Controller()
# 按下空格鍵
kb.press(Key.space)

知道了如何控制鍵盤后,我們就可以使用模型截取預(yù)測,如何判斷是否要按空格,代碼如下:

import time
import cv2
import joblib
import numpy as np
from PIL import ImageGrab
from pynput import keyboard
from pynput.keyboard import Key

time.sleep(3)
# 0、創(chuàng)建鍵盤
kb = keyboard.Controller()
# 1、加載模型
model = joblib.load('auto_play.m')
while True:
    # 2、準(zhǔn)備數(shù)據(jù)
    ImageGrab.grab().resize((960, 540)).save('current.jpg')  # 保存當(dāng)前屏幕截屏
    x = cv2.imread('current.jpg', 0).reshape(-1)
    x = [x]
    # 3、預(yù)測
    pred = model.predict(x)
    print(pred)
    # 如果需要跳,則按下空格
    if pred[0] == 0:
        kb.press(Key.space)

運行上面的程序后,打開瀏覽器即可開始游戲。程序的代碼和圖片文件:https://download.csdn.net/download/ZackSock/86543410
GitHub地址為:https://github.com/IronSpiderMan/AutoPlayGoogleDino文章來源地址http://www.zghlxwxcb.cn/news/detail-519335.html

到了這里,關(guān)于如何用人工智能自動玩游戲的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 和朋友一起玩游戲怎么創(chuàng)建局域網(wǎng)

    大家有沒有遇到過想和朋友一起玩游戲卻不知道怎么創(chuàng)建局域網(wǎng)的情況,其實非常的簡單,下面小編教大家怎么做。 點擊電腦右下角的網(wǎng)絡(luò)圖標(biāo),然后選擇打開網(wǎng)絡(luò)和共享中心。 在網(wǎng)絡(luò)共享中心中選擇設(shè)置新的連接或網(wǎng)絡(luò)。 在設(shè)置網(wǎng)絡(luò)或連接中選擇設(shè)置無線臨時網(wǎng)絡(luò),然后

    2024年02月06日
    瀏覽(23)
  • Windows電腦玩游戲出現(xiàn)白屏的解決方法

    Windows電腦玩游戲出現(xiàn)白屏的解決方法

    逢年過節(jié)玩游戲,周末放假玩游戲,休閑娛樂玩游戲…玩游戲成了不少電腦用戶的小樂趣。但是有時候在玩游戲的過程中,會遇到一些令人頭疼的問題,比如游戲突然白屏,無法正常進行。這種情況可能會影響游戲體驗,甚至導(dǎo)致游戲數(shù)據(jù)丟失。 驅(qū)動人生 就跟大家說說Wind

    2024年02月11日
    瀏覽(24)
  • 玩游戲缺失“d3d11.dll丟失“的問題的五種解決方案

    玩游戲缺失“d3d11.dll丟失“的問題的五種解決方案

    在我日常的計算機維護工作中,經(jīng)常遇到一些用戶報告他們遇到了\\\"d3d11.dll丟失\\\"的問題。這是一個常見的Windows系統(tǒng)錯誤,通常會導(dǎo)致程序無法正常運行。在這篇文章中,我將分享我找到的五種有效的解決方法,以幫助這些用戶解決這個問題。 方法一:使用dll修復(fù)工具(親測有

    2024年02月05日
    瀏覽(26)
  • 無敵!我用【C語言】手搓出了一個體系完整的【員工管理系統(tǒng)】還能玩游戲聽音樂?(超詳細(xì),附完整源碼)

    無敵!我用【C語言】手搓出了一個體系完整的【員工管理系統(tǒng)】還能玩游戲聽音樂?(超詳細(xì),附完整源碼)

    博主簡介: Hello大家好呀,我是陳童學(xué),一個與你一樣正在慢慢前行的人。 博主主頁: @陳童學(xué)哦 所屬專欄: C語言程序設(shè)計實驗項目 如果本文對你有所幫助的話,還希望可以點贊??收藏??支持一下哦! 前言:員工管理系統(tǒng)是一款面向公司管理員的管理工具,旨在提供員工

    2024年02月08日
    瀏覽(31)
  • 如何用 10 種策略改進 ChatGPT 的人工智能

    如何用 10 種策略改進 ChatGPT 的人工智能

    你是否曾有過和AI機器人交互無果的經(jīng)歷?或許只是因為提示語的問題!想要ChatGPT/Bard/Bing Chat等AI機器人更智能、回應(yīng)更高效? 必須學(xué)會AI提示語技巧!本文將深入解析如何用精準(zhǔn)的語言編寫提示,讓您的AI聊天機器人更進一步。 ChatGPT自從去年推出一下就被大量媒體和權(quán)威人士

    2024年02月08日
    瀏覽(26)
  • 【AI Make Money】如何用人工智能賺錢

    【AI Make Money】如何用人工智能賺錢

    Hi!最近很多人看過我如何制作7x24小時無人直播教程后,想讓我聊聊,如何利用好AI時代,把握住風(fēng)口。 這里我寫了一篇總覽的文章,希望能給你帶來一些創(chuàng)業(yè)的靈感。當(dāng)然如果你對某一方面感興趣,也可以評論、私信,我可以側(cè)重出一些手把手的教學(xué)視頻,如果你需要的話

    2024年02月02日
    瀏覽(22)
  • 從零開始:如何用Python建立你的第一個人工智能模型

    從零開始:如何用Python建立你的第一個人工智能模型

    在這篇文章中,我們將介紹如何 從零開始使用Python建立你的第一個人工智能模型 。無論你是剛接觸編程的新手,還是有經(jīng)驗的開發(fā)者想進一步探索人工智能領(lǐng)域,這篇文章都將為你提供清晰、詳細(xì)的指南。我們將一步步探索數(shù)據(jù)預(yù)處理、模型建立、訓(xùn)練和測試的過程,以及

    2024年02月09日
    瀏覽(21)
  • 人工智能中的智能游戲:對于游戲的智能化建設(shè),應(yīng)該如何進行?

    作者:禪與計算機程序設(shè)計藝術(shù) 隨著互聯(lián)網(wǎng)的發(fā)展、云計算的普及和人工智能技術(shù)的飛速發(fā)展,人工智能已經(jīng)滲透到我們生活的方方面面,而其中一個重要的領(lǐng)域就是游戲。近年來,由于人工智能技術(shù)的進步,越來越多的人開始將其應(yīng)用于游戲設(shè)計中,這使得游戲開發(fā)者們擁

    2024年02月07日
    瀏覽(17)
  • 基于虛擬現(xiàn)實的游戲中的人工智能:如何使用Python和Pygame實現(xiàn)人工智能

    作者:禪與計算機程序設(shè)計藝術(shù) 《基于虛擬現(xiàn)實的游戲中的人工智能:如何使用Python和Pygame實現(xiàn)人工智能》 1.1. 背景介紹 隨著虛擬現(xiàn)實 (VR) 和增強現(xiàn)實 (AR) 技術(shù)的發(fā)展,游戲行業(yè)也在不斷進步。在這個虛擬世界中,玩家可以扮演不同的角色,探索各種奇妙的世界,體驗沉浸

    2024年02月11日
    瀏覽(32)
  • 人工智能安全:利用人工智能自動化攻擊防御

    作者:禪與計算機程序設(shè)計藝術(shù) 引言 1.1. 背景介紹 隨著人工智能技術(shù)的快速發(fā)展,大量的個人數(shù)據(jù)、敏感信息存儲在互聯(lián)網(wǎng)上,人工智能攻擊日益猖獗。為了保護個人隱私與數(shù)據(jù)安全,人工智能安全技術(shù)應(yīng)運而生。人工智能安全技術(shù)主要通過模擬人類思維,檢測和防御人工

    2024年02月16日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包