如何使用 PyTorch 和 EfficientNet 创建一个 AI 游戏外挂[特殊字符]

推荐超级课程:

在这里插入图片描述

简介

你是否刚刚接触人工智能领域,并想找一个有趣的入门项目?那就来吧!这篇博客将指导你使用 PyTorch 和 EfficientNet 创建一个可以玩 Chrome 小恐龙游戏的 AI 模型。
开发 ChatGPT 的 OpenAI 组织实际上是从构建可以玩 Atari 游戏的 AI 模型开始的。这个项目被称为 Atari AI,是深度强化学习的首次演示之一,为人工智能领域的许多后续进展铺平了道路。因此,构建一个可以玩 Chrome 小恐龙游戏的 AI 模型实际上是使用游戏测试和开发 AI 算法的悠久传统的一部分。
Chrome 小恐龙游戏是一款简单却令人上瘾的游戏,已经吸引了全球数百万玩家的喜爱。游戏的目标是控制一只恐龙,帮助它尽可能远地奔跑,而不会被障碍物撞到。借助 AI,我们可以创建一个可以学习如何玩游戏的模型,并打破我们的高分记录。
本教程适用于任何对构建可以玩游戏的 AI 模型感兴趣的人。即使你对 AI 或深度学习的概念还很陌生,本教程也是一个很好的起点。
我们将使用 PyTorch,一个流行的深度学习框架,以及 EfficientNet,一种最先进的神经网络架构,来训练一个模型,分析游戏屏幕并根据它看到的内容做出决策。我们将从获取必要的数据开始,然后对其进行处理,最后训练模型。到本教程结束时,您将对深度学习以及如何训练您自己的 AI 模型有更好的理解。

通用工作流程

在这里插入图片描述

设置 AI 模型有 6 个主要步骤:

  1. 获取数据
  2. 处理数据
  3. 创建模型
  4. 训练模型
  5. 测试模型
  6. 从模型中进行推理

步骤 0:设置项目

  • 安装 Anaconda:从 此处 下载并安装适用于您操作系统的 Anaconda 发行版。

  • 创建一个新的项目文件夹。我们将其命名为“dino”。在这个文件夹中打开 VS Code 并打开终端。

  • 创建一个新的 conda 环境:在 Anaconda Prompt 或您的终端中,通过运行以下命令创建一个新的 conda 环境:

    conda create --name myenv python=3.10
    

这将创建一个名为 myenv 的新环境,其中安装了 Python 3.10。

  • 激活环境:创建环境后,使用以下命令激活它:

    conda activate myenv
    
  • 安装 PyTorch:使用以下命令安装具有 CUDA 支持(用于 GPU 加速)的 PyTorch 库:

    conda install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -c conda-forge
    

    此命令安装了 PyTorch、TorchVision 和 TorchAudio 以及 CUDA 工具包版本 11.1。您可以根据需要更改 CUDA 工具包的版本。

  • 测试安装:要验证 PyTorch 安装,请在您的 conda 环境中运行以下命令以启动 Python 解释器:

    python
    

    然后,导入 PyTorch 库并打印其版本如下:

    import torch
    print(torch.__version__)
    

    这应该打印出您环境中安装的 PyTorch 版本号。

步骤 1:获取数据

我们将通过在人类玩家玩游戏时拍摄游戏屏幕的快照来获取数据。captures.py 处理此事。

import cv2
from PIL import ImageGrab
import numpy as np
import keyboard
import os
from datetime import datetime
current_key = ""
buffer = []
# 检查是否存在名为 'captures' 的文件夹。如果不存在,则创建它。
if not os.path.exists("captures"):
    os.mkdir("captures")
def keyboardCallBack(key: keyboard.KeyboardEvent):
    '''
    当键盘事件发生时,此函数被调用。它将按下的键存储在缓冲区中并进行排序。
    ### 参数 : 
    `key (KeyboardEvent)`
    ### 返回 : 
    `None`
    ### 示例 : 
    `keyboardCallBack(key)`
    '''
    global current_key
    if key.event_type == "down" and key.name not in buffer:
        buffer.append(key.name)
    if key.event_type == "up":
        buffer.remove(key.name)
    buffer.sort()  # 将按下的键按升序排列
    current_key = " ".join(buffer)
keyboard.hook(callback=keyboardCallBack)
i = 0
while (not keyboard.is_pressed("esc")):
    # 捕获图像并将其保存到 'captures' 文件夹中,文件名包含时间和日期以及按下的键
    image = cv2.cvtColor(np.array(ImageGrab.grab(
        bbox=(620, 220, 1280, 360))), cv2.COLOR_RGB2BGR)
    # 如果按下了键,将按下的键嵌入文件名
    if len(buffer) != 0:
        cv2.imwrite("captures/" + str(datetime.now()).replace("-", "_").replace(":",
                    "_").replace(" ", "_")+" " + current_key + ".png", image)
    # 如果没有按下键,将 'n' 嵌入文件名
    else:
        cv2.imwrite("captures/" + str(datetime.now()).replace("-",
                    "_").replace(":", "_").replace(" ", "_") + " n" + ".png"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小涵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值