首页 > 其他分享 >游戏AI的创造思路-技术基础-计算机视觉

游戏AI的创造思路-技术基础-计算机视觉

时间:2024-07-05 10:59:45浏览次数:14  
标签:游戏 AI 公式 image cv2 图像 视觉

让游戏的AI具备“眼睛”和“视觉”,就是通过计算机视觉的方法进行的。现在,越来越多的游戏,特别是动捕类游戏都在使用这个方法。当然,计算机视觉不仅仅用于游戏,越来越多的应用使用到这个技术

目录

1. 定义

2. 发展历史

3. 公式和函数

3.1. 图像处理基础公式

3.1.1. 灰度化公式

3.1.2. 二值化公式

3.2. 图像滤波公式

3.3. 边缘检测公式

3.4. 特征提取公式

3.5. 评估指标公式

3.5.1. 准确率(Accuracy)

3.5.2. 召回率(Recall)/ 查全率

3.5.3. 精确率(Precision)/ 查准率

3.5.4. F1分数(F1-Score)

3.6. 目标检测指标

3.6.1. 交并比(IOU)

3.6.2. 平均精确率(AP)和平均精确率均值(mAP)

3.7. Python代码示例

4. 运行原理

4.1. 基本原理

4.2. Python实现

5. 优缺点

6. 运用计算机视觉的游戏AI使用场景及实例

6.1. 使用场景

6.2. 实例1

6.3. 实例2

6.3.1. 实现步骤

6.2.2. Python代码示例


1. 定义

游戏AI运用计算机视觉,是指在游戏开发和运行过程中,利用计算机视觉技术使游戏中的角色(NPC)或系统能够识别、分析和理解游戏中的图像和视频数据,从而做出更加智能的决策和反应。

这种技术结合了图像处理、模式识别和机器学习,使游戏中的非玩家角色能够像人类一样“看到”并理解游戏世界。

2. 发展历史

计算机视觉的发展可以追溯到20世纪50年代,当时科学家们开始研究生物视觉的工作原理。

到了60年代,计算机视觉作为一个独立的领域开始萌芽。

70年代,开创性地提出了识别流程。

80年代则着眼于提取特征。

90年代则进行了图像分割的研究。

进入21世纪后,随着计算机运算能力的增强和深度学习算法的兴起,计算机视觉取得了长足的进步,特别是在目标识别、目标跟踪和场景理解等方面。

在游戏AI领域,计算机视觉的应用也随着技术的进步而不断发展。

现代游戏AI利用深度学习算法,能够处理复杂的图像数据,并在游戏中实现高度逼真的交互和决策。

3. 公式和函数

计算机视觉是一个涉及图像处理、模式识别、机器学习等多个领域的复杂学科,它利用计算机和相关算法来模拟人类的视觉系统,以实现对图像和视频的理解和分析。在计算机视觉中,公式和函数起着至关重要的作用,它们是实现各种视觉任务的基础。以下是对计算机视觉中一些常见公式和函数的详细介绍:

3.1. 图像处理基础公式

3.1.1. 灰度化公式

平均法

将彩色图像的红色、绿色和蓝色通道的值相加后除以3,得到灰度值。公式为:

灰度值 = (R + G + B) / 3

3.1.2. 二值化公式

全局阈值法

将图像的灰度值与一个预设的阈值进行比较,大于阈值的像素点设置为白色(或黑色),小于阈值的像素点设置为黑色(或白色)。公式可简化为:

二值化结果 = (灰度值 > 阈值) ? 255 : 0。

3.2. 图像滤波公式

高斯滤波

高斯滤波是一种常用的图像平滑方法,它通过卷积操作对图像进行模糊处理,以去除噪声。高斯滤波的公式为:

滤波结果 = (像素点 * 滤波模板) / 滤波模板权值之和

其中,滤波模板是一个权重矩阵,其元素值由高斯函数计算得出。

3.3. 边缘检测公式

Sobel算子

Sobel算子是一种用于边缘检测的一阶导数算子。它通过计算图像在水平和垂直方向的梯度来检测边缘。Sobel算子的公式包括两个3x3的矩阵,分别用于计算水平梯度Gx和垂直梯度Gy。公式如下:

Gx = [-1 0 1; -2 0 2; -1 0 1] * 像素值

Gy = [-1 -2 -1; 0 0 0; 1 2 1] * 像素值

3.4. 特征提取公式

颜色直方图

颜色直方图是描述图像颜色分布的一种特征表示方法。它通过统计每个颜色通道的像素数量来构建直方图。公式可简单表示为:

颜色直方图 = 统计每个颜色通道的像素数量

3.5. 评估指标公式

在计算机视觉任务中,特别是分类和目标检测任务中,评估模型的性能是非常重要的。以下是一些常见的评估指标公式:

3.5.1. 准确率(Accuracy)

准确率是预测正确的样本数占总样本数的比例。公式为:

Accuracy = (TP + TN) / (TP + TN + FP + FN)

3.5.2. 召回率(Recall)/ 查全率

召回率(或查全率)是预测为正例的样本中实际为正例的比例。公式为:

Recall = TP / (TP + FN)

3.5.3. 精确率(Precision)/ 查准率

精确率(或查准率)是预测为正例的样本中真正为正例的比例。公式为:

Precision = TP / (TP + FP)

3.5.4. F1分数(F1-Score)

F1分数是精确率和召回率的调和平均数,用于综合评估模型的性能。公式为:

F1-Score = 2 * (Precision * Recall) / (Precision + Recall)

3.6. 目标检测指标

3.6.1. 交并比(IOU)

交并比(Intersection over Union, IOU)是目标检测中衡量预测框与真实框重叠程度的指标。公式为:

IOU = |GT ∩ Predict| / |GT ∪ Predict| = intersection / (GT + Predict - intersection)

3.6.2. 平均精确率(AP)和平均精确率均值(mAP)

AP(Average Precision)是PR曲线下的面积,用于评估单个类别的检测性能。mAP(mean Average Precision)则是对所有类别的AP取平均,用于评估整个检测模型的性能。

3.7. Python代码示例

以下是一个使用Python和OpenCV库进行图像读取、灰度化和二值化的简单示例:

import cv2  
  
# 读取图像  
image = cv2.imread('path_to_image.jpg')  
  
# 灰度化  
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)  
  
# 二值化  
_, binary_image = cv2.threshold(gray_image, 127, 255, cv2.THRESH_BINARY)  
  
# 显示图像  
cv2.imshow('Original Image', image)  
cv2.imshow('Gray Image', gray_image)  
cv2.imshow('Binary Image', binary_image)  
  
# 等待按键操作后关闭窗口  
cv2.waitKey(0)  
cv2.destroyAllWindows()

上述代码示例中的path_to_image.jpg应替换为实际图像文件的路径。此外,二值化阈值(在示例中为127)可能需要根据具体图像进行调整以获得最佳效果。

对于更高级的计算机视觉任务,如目标检测或人脸识别,通常会使用深度学习框架(如TensorFlow或PyTorch)和预训练的模型。

4. 运行原理

4.1. 基本原理

游戏AI运用计算机视觉的运行原理主要包括以下几个步骤:

  1. 图像采集:从游戏环境中捕获图像或视频帧。
  2. 预处理:对图像进行缩放、裁剪、去噪等预处理操作。
  3. 特征提取:使用图像处理算法或深度学习模型从图像中提取关键特征。
  4. 分析与理解:利用机器学习或深度学习算法对提取的特征进行分析,理解图像中的内容和上下文。
  5. 决策与反应:基于分析结果,游戏AI做出决策并生成相应的反应或动作。

4.2. Python实现

要在游戏AI中实现计算机视觉以响应玩家行为,我们可以使用Python和一些流行的库,如OpenCV和NumPy。以下是一个简化的实现步骤,包括图像采集、预处理、特征提取、图像内容分析与理解,以及决策与反应。

首先,确保你已经安装了必要的库:

pip install opencv-python numpy

然后,你可以使用以下Python代码来实现这些步骤:

import cv2  
import numpy as np  
  
# 1. 图像采集  
# 这里我们使用OpenCV从摄像头捕获实时视频流  
cap = cv2.VideoCapture(0)  
  
# 2. 预处理  
# 定义一个简单的预处理函数,例如转换为灰度图像  
def preprocess_image(image):  
    return cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)  
  
# 3. 特征提取  
# 定义一个函数来提取特征,这里我们使用简单的边缘检测作为示例  
def extract_features(image):  
    edges = cv2.Canny(image, threshold1=100, threshold2=200)  
    return edges  
  
# 4. 分析与理解图像中内容  
# 定义一个函数来分析图像并做出决策  
def analyze_image(features):  
    # 假设如果检测到的边缘数量超过某个阈值,则玩家正在做出某种动作  
    edge_count = np.sum(features > 0)  
    return edge_count > 1000  # 这是一个示例阈值  
  
# 5. 决策与反应  
# 定义一个函数来根据分析结果做出反应  
def react_to_player(analysis_result):  
    if analysis_result:  
        print("玩家正在做出重要动作,AI需要做出反应!")  
    else:  
        print("玩家处于静止状态,AI保持观察。")  
  
# 主循环  
while True:  
    ret, frame = cap.read()  
    if not ret:  
        break  
  
    # 预处理  
    processed_image = preprocess_image(frame)  
  
    # 特征提取  
    features = extract_features(processed_image)  
  
    # 分析与理解  
    analysis_result = analyze_image(features)  
  
    # 决策与反应  
    react_to_player(analysis_result)  
  
    # 显示图像(可选)  
    cv2.imshow('Game AI Vision', frame)  
  
    # 按'q'键退出  
    if cv2.waitKey(1) & 0xFF == ord('q'):  
        break  
  
# 释放摄像头和关闭窗口  
cap.release()  
cv2.destroyAllWindows()

 这个例子非常简化,并且不是真正的游戏AI实现。

在实际的游戏AI中,你需要使用更复杂的图像处理技术、特征提取方法和机器学习算法来准确地识别和响应玩家的行为。

此外,你可能还需要考虑实时性能优化、多玩家支持、网络通信等方面的问题。

5. 优缺点

优点

  • 智能化:使游戏中的角色能够像人类一样“看到”并理解游戏世界,提高游戏的真实感和沉浸感。
  • 灵活性:能够适应不同的游戏环境和场景,做出更加智能和灵活的决策。
  • 可扩展性:随着技术的不断进步,计算机视觉在游戏AI中的应用也将不断拓展和深化。

缺点

  • 计算复杂度高:需要处理大量的图像数据,对计算资源要求较高。
  • 数据依赖性强:需要大量的高质量训练数据才能获得良好的性能。
  • 隐私和伦理问题:在某些情况下可能涉及个人隐私和伦理问题,需要合理监管和使用控制。

6. 运用计算机视觉的游戏AI使用场景及实例

6.1. 使用场景

  • NPC行为决策:使NPC能够根据游戏场景中的图像数据做出更加智能的行为决策。
  • 玩家行为分析:分析玩家的游戏行为模式,优化游戏设计和平衡性。
  • 环境交互:使游戏中的角色能够与环境中的物体进行更加真实的交互。

6.2. 实例1

一个典型的实例是在一款角色扮演游戏中,利用计算机视觉技术使NPC能够根据玩家的位置、动作和表情做出相应的反应。

例如,当玩家靠近NPC时,NPC能够“看到”玩家并主动发起对话;当玩家做出攻击动作时,NPC能够识别并采取相应的防御措施。

Python代码

这里给出的是一个概念性的伪代码:

# 假设有一个函数detect_player(frame)用于从游戏帧中检测玩家  
# 和一个函数analyze_player_behavior(player_info)用于分析玩家行为  
  
def game_loop():  
    while game_is_running:  
        frame = capture_game_frame()  # 捕获当前游戏帧  
        player_info = detect_player(frame)  # 检测玩家位置和动作  
        behavior = analyze_player_behavior(player_info)  # 分析玩家行为  
          
        # 根据分析结果,控制NPC的行为  
        control_npc_behavior(behavior)  
  
# 注意:这里的detect_player和analyze_player_behavior函数需要具体实现,  
# 并可能涉及复杂的图像处理、模式识别和机器学习算法。

这个伪代码展示了如何在游戏循环中使用计算机视觉技术来分析玩家行为并控制NPC的反应。然而,在实际应用中,detect_playeranalyze_player_behavior函数的实现将非常复杂,并需要借助深度学习等高级技术。

6.3. 实例2

在计算机视觉中,从摄像头获取的图像中识别出人体以及人体姿态,并提取骨架及关节数据,通常涉及到使用深度学习模型,特别是卷积神经网络(CNN)来处理图像,并识别出图像中的人体以及他们的姿态。

以下是一个简化的实现步骤,以及对应的Python代码示例,使用了OpenPose这个流行的库来实现人体姿态估计。

6.3.1. 实现步骤

  1. 安装必要的库
    • 安装OpenPose或其他类似的人体姿态估计库。
    • 安装处理图像的库,如OpenCV。
  2. 设置摄像头
    • 使用OpenCV来捕获摄像头的实时视频流。
  3. 人体姿态估计
    • 对每一帧图像使用OpenPose进行人体检测和姿态估计。
    • 提取出每个人的骨架和关节数据。
  4. 显示结果
    • 在图像上绘制骨架和关节点。
    • 显示处理后的图像。
  5. (可选)保存或处理数据
    • 将骨架和关节数据保存到文件或数据库中。
    • 进行进一步的数据分析或处理。

6.2.2. Python代码示例

import cv2  
import pyopenpose as op  
  
# 配置OpenPose参数  
params = {  
    "model_folder": "/path/to/openpose/models/",  
    "hand": False,  
    "face": False,  
    "body": 1,  
}  
  
# 初始化OpenPose对象  
opWrapper = op.WrapperPython()  
opWrapper.configure(params)  
opWrapper.start()  
  
# 打开摄像头  
cap = cv2.VideoCapture(0)  
  
while True:  
    # 读取一帧图像  
    ret, frame = cap.read()  
    if not ret:  
        break  
  
    # 使用OpenPose处理图像  
    datum = op.Datum()  
    datum.cvInputData = frame  
    opWrapper.emplaceAndPop([datum])  
  
    # 提取骨架和关节数据  
    if datum.poseKeypoints is not None:  
        print("Detected people and their keypoints:")  
        for person in datum.poseKeypoints:  
            print(person)  # 这里打印出每个人的关节数据  
  
    # 在图像上绘制骨架和关节点  
    cv2.imshow("OpenPose", datum.cvOutputData)  
  
    # 按'q'键退出  
    if cv2.waitKey(1) & 0xFF == ord('q'):  
        break  
  
# 释放摄像头和关闭窗口  
cap.release()  
cv2.destroyAllWindows()

请注意,你需要将"/path/to/openpose/models/"替换为你的OpenPose模型文件夹的实际路径。此外,确保你已经正确安装了OpenPose和所有必要的依赖项。

这个代码示例提供了一个基本的框架,你可以根据自己的需求进行修改和扩展。

例如,你可以添加代码来保存关节数据,或者对数据进行进一步的分析和处理。

标签:游戏,AI,公式,image,cv2,图像,视觉
From: https://blog.csdn.net/m0_37694276/article/details/140183534

相关文章

  • 游戏AI的创造思路-技术基础-自然语言处理
    自然语言处理-可以对游戏AI特别是RPG类、语言类游戏进行“附魔”,开发出“随机应变”和你聊天的“女友”、“队友”或者是根据你定义的文本库来用接近自然语言的生成“语言”,推动游戏情景在受控范围内前进目录1.自然语言处理定义2.发展历史3.计算方法和计算公式3.1.隐......
  • 文字识别技术升级:Airtest与PaddleOCR模型的协作小技巧
    此文章来源于项目官方公众号:“AirtestProject”版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途一、前言在进行自动化测试的过程中,ocr文字识别一直是大家最想要实现以及最需要的能力,今天就来介绍一个由百度飞浆提供的一个免费的ocr识别库——PaddleOCR,以及探......
  • ChatMoney:AI看病,私人医生不是梦想!
    本文由ChatMoney团队出品在当今这个科技飞速发展的时代,人工智能技术正在以惊人的速度改变着我们的生活,人工智能已经深入到各个领域,医疗行业也不例外。而今天我要和大家聊一聊利用ChatMoney全能知识库AI系统在求医问诊领域所发挥的巨大作用,众所周知在传统的求医问诊过程中患者......
  • 能看病的AI你见过吗:ChatMoney
    本文由ChatMoney团队出品在当今这个科技飞速发展的时代,人工智能技术正在以惊人的速度改变着我们的生活,人工智能已经深入到各个领域,医疗行业也不例外。而今天我要和大家聊一聊利用ChatMoney全能知识库AI系统在求医问诊领域所发挥的巨大作用,众所周知在传统的求医问诊过程中患者......
  • 做了一款服务网络安全的多端系统。内置AI(gpt4o)/ai绘画(sd)/ChatTTS,无需登陆免费使用
    上一篇魔盒介绍文章已被我删除,因为本次重新做了产品定位,之前定位有点混乱先上链接之前有个哥们说做了app还不如先做网站,因为不方便下载,这次做了哈。重点:里面有gpt4o,充了几十美元反正也用不完,给大家用了网页端:https://mgb.abyssdawn.com/H5端:https://mgb-h5.abyssdawn.co......
  • 人工智能AI介绍及常用软件在国产化平台的支持情况
    一、简介(一)定义详解人工智能(ArtificialIntelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智......
  • 智能分析网关V4人员区域徘徊AI检测:算法原理介绍及技术应用场景
    一、引言在现代社会,随着科技的不断发展,视频监控系统已广泛应用于各个领域,如公共安全、商业管理、交通监控等。其中,区域徘徊检测算法作为一种重要的视频分析技术,能够有效地识别出特定区域内人员的徘徊行为,为安全管理和事件预防提供了有力支持。本文将以TSINGSEE青犀AI智能分析网关......
  • 墨奇游戏盒:探索无尽乐趣的奇幻之旅
     前言在数字世界的浩瀚海洋中,墨奇游戏盒犹如一艘满载宝藏的航船,引领我们驶向无尽的游戏乐趣。这里,经典与创新交织,怀旧与未来碰撞,每一款游戏都是一次全新的冒险。墨奇游戏盒,让您的游戏生活更加丰富多彩,快来加入我们,开启您的奇幻之旅吧!下载(最新版本:2024/7/4)csdn下载夸克......
  • 程序员失业后不要再去送外卖、开滴滴了,做AI大模型他不香吗?_程序员失业后都去哪了
    前言面对失业,程序员们往往会感到迷茫和不安,尤其是那些在这个行业工作多年却仍感到未能取得满意成就的人。转行似乎是一条艰难的道路,但事实上,除了常见的选择如外卖、跑腿和网约车之外,程序员们还有更多的岗位可以选择。对于那些担心自己在原有行业无法胜任的人,转行并不意味......
  • 正多边形内点黄金分割冒险游戏
    1.题目:正多边形内点的冒险游戏内容描述:选定五边形(P1,P2,...,P5)内的一个任意点P0。从P0出发,到任意顶点距离的0.618的点P0’(黄金分割点),给该P0’点着色。从P0’点出发,重复第2步,求得新的黄金分割点并着色。以上重复N次,比如,30000次问题:最后所有黄金分割点形成......