当前位置: 首页 > news >正文

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

推荐超级课程:

  • 本地离线DeepSeek AI方案部署实战教程【完全版】
  • Docker快速入门到精通
  • Kubernetes入门到大师通关课
  • AWS云服务快速入门实战

目录

    • 简介
    • 通用工作流程
    • 步骤 0:设置项目
    • 步骤 1:获取数据
    • 步骤 2:处理数据
    • 步骤 3:创建模型
      • 步骤 3.1. 创建自定义 DinoDataset
      • 步骤 3.2. 创建训练和测试 DataLoader
      • 步骤 3.3. 创建模型
      • 步骤 4:训练模型
    • 步骤 5:测试模型性能
    • 步骤 6:推理/玩游戏

在这里插入图片描述

简介

你是否刚刚接触人工智能领域,并想找一个有趣的入门项目?那就来吧!这篇博客将指导你使用 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"
http://www.dtcms.com/a/123049.html

相关文章:

  • 基于MCP协议调用的大模型agent开发03
  • InnoDB 事务更新过程深度剖析:原理、流程与优化
  • 前端-vue2核心
  • 如何用postman做接口自动化测试?
  • Seata框架,如何保证事务的隔离性?
  • 【时时三省】(C语言基础)用switch语句实现多分支选择结构
  • 【运维 | 硬件】服务器中常见的存储插槽类型、对应的传输协议及其特性总结
  • 环信鸿蒙版 UIKit 快速上手指南
  • 如何将多个Word文档合并
  • 【HTML】动态背景效果前端页面
  • 基于 Qt4 的图片处理工具开发(二):增加对比度调节、界面布局优化、多线程操作
  • 初识Redis · 简单理解Redis
  • 使用注解@RequestBody变红的解决问题
  • 【spark认任务提交】配置优先级顺序
  • 银河麒麟v10(arm架构)部署Embedding模型bge-m3【简单版本】
  • 【C++进阶】关联容器:multimap类型
  • 学习海康VisionMaster之四边形查找
  • 【达梦数据库】bash: /dev/null: Permission denied
  • 使用stm32cubeide stm32f407 lan8720a freertos lwip 实现tcp客户端、服务端及网络数据转串口数据过程详解
  • SQL 关键字
  • 低硬件资源微调预训练Mamba模型的方法
  • 在 transformers 中,return_tensors=‘pt‘ 里的 pt 是什么 tf,np
  • gdal_shp文件的组成
  • 【设备连接涂鸦阿里云】
  • [数据结构]Trie字典树
  • RocketMQ和kafka 的区别
  • 算法导论(递归回溯)——⼆叉树中的深搜
  • lanqiaoOJ 498 回文日期
  • ValueError: Cannot handle batch sizes > 1 if no padding token is defined`
  • 数据结构(五)——AVL树(平衡二叉搜索树)