让AI帮你玩游戏

  • 让AI帮你玩游戏(一) 基于目标检测用几个样本实现在魔兽世界中钓鱼

    • 前言
    • 思路
    • 环境
    • 获取图像(几个样本即可)
    • 标记图片
    • 从标记文件中获取Boxes坐标
    • 搭建目标检测模型
    • 准备训练数据
    • (未完待续!我们下一篇来介绍如何训练模型!)

让AI帮你玩游戏(一) 基于目标检测用几个样本实现在魔兽世界中钓鱼(所有代码已上传qq群)

声明:
本文所涉及的内容仅用作学习研究,严禁用于非法用途,游戏中违反相关协议可能会使你失去你的游戏账号!本文为作者原创,如果转载请注明出处,盗用将追责!

前言

本来还偶尔体验下游戏乐趣的我,随着魔兽世界新版本的到来,谜一样的设计师弄一堆半成品实在提不起兴趣来玩了,不知道是否小伙伴跟我一样有同感!最想要吐槽的是钓鱼系统,我的天,简直是种折磨!今天我们来挑战一下,实现自动钓鱼,看下效果先!视频链接地址:https://v.qq.com/x/page/e3163jkj9e3.html

想要代码的的可以联系VX:JTSMJJ  加入qq群获取!

人工智能帮你玩游戏#是心动的感觉# #解压手工# #人工智能那点事# #AI#

思路

  • 获取浮标坐标

本来想走捷径,通过api获取鼠标形状句柄来,然后在正前方区域扫描移动鼠标,只要鼠标变为钓钩形状我们就获取当前鼠标的位置作为浮标的位置,但事实告诉我们,我们太年轻了,鼠标句柄只要指向可交互的物体时是不停的变化的,变化的,变化的,变化的,没有固定值(设计师此时笑出了某种声音)!没有办法了吗?NoNoNo,是时候祭出我们的人工智能来了,我们搭建一个神经网络,并训练它,让它帮我们找到坐标!

  • 判断上钩

这是一个麻烦的问题,我们有了坐标了,就要判断什么时候来收杆。可以判断浮标的位置的变化来获取位置,这就需要及时获取屏幕图像,我们用截屏是无法实现的,需要HOOK 技术来实时获取画面,咱不走这条路!怎么简单怎么来,我们听声音,当鱼上钩时会发声,我们把其他声音效果全关掉,只要声卡发声咱们就收网!

环境

  • Anaconda集成python环境
  • tenserflow 2.0+库
  • Tensorflow objection detection api库
  • Labelme
  • VC++环境,我的的VC++2019

获取图像(几个样本即可)

进入客户端,到合适位置钓鱼,为了提高模型准确性(毕竟我们仅用几个样本来训练模型)我们将视野拉到最近,使用浮标玩具让浮标更打一点(我用的浮船玩具),开始钓鱼,调整视角角度从不同的角度截屏(游戏内按下PrintScreen)。


这是我自己截取的样张,可见画面复杂程度其实是很高的,我截取了6张图片为样本,下面我们来标记图片

标记图片

我们有了样本现在开始标记样本,我们用Labelimg来标记,未安装的直接打开Anaconda prompt命令行输入:pip install labelImg,安装完以后还是在Anaconda prompt运行labelimg,如图:
打开后会出现如下界面:

简单介绍下用法:

  • 标号1

为打开你想要标记图片所在的文件夹,用open一张张打开麻烦,可以用这个将文件夹整个打开。

  • 标号2

你想要保存标记文件的文件夹,文件格式是xml格式的。

  • 标号3

    每标记完一张图片请点击保存

  • 标号4

    点击后开始用一个方块区域标记目标区域

  • 标号5

    打对勾后,在对话框里填上你想为标记区域起的名字,这样不用每张图片输入类名
    开始愉快的标记图片吧_

从标记文件中获取Boxes坐标

直接上代码,其中path为上一个步骤你保存xml的文件夹

import glob
import xml.etree.ElementTree as ET
xml_list = []
bxes = []
# 读取注释文件
for xml_file in glob.glob(path + '/*.xml'):tree = ET.parse(xml_file)root = tree.getroot()for member in root.findall('object'):width = int(root.find('size')[0].text)height = int(root.find('size')[1].text)xmin = int(member[4][0].text)ymin = int(member[4][1].text)xmax = int(member[4][2].text)ymax = int(member[4][3].text)value = (root.find('filename').text,width,height,member[0].text,xmin,ymin,xmax,ymax)boxes.append(np.array([[round(ymin / height, 3),round(xmin / width, 3),round(ymax / height, 3),round(xmax / width, 3),]],dtype=np.float32))

这样就从标注文件中将标注信息读取到boxes里了。

搭建目标检测模型

这里假设你已经拥有Object Detection API库了,安装方法在这里可以找到(https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf2.md)
构筑模型:

import tensorflow as tf
from object_detection.utils import config_util
from object_detection.utils import visualization_utils as viz_utils
from object_detection.builders import model_builderdetection_model = model_builder.build(model_config=model_config,is_training=True)
ckpt = tf.compat.v2.train.Checkpoint(model=detection_model)
ckpt.restore(checkpoint_path).expect_partial()

这里需要说明下,model_config跟checkpoint_path分别是你建立模型的配置文件以及官方给出的预训练模型路径,你需要按照你搭载的模型来下载相应的文件,我这里搭建的是ssd_resnet50模型,其对应的配置文件在https://github.com/tensorflow/models/tree/master/research/object_detection/configs/tf2图示位置:
checkpoint在https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf2_detection_zoo.md
图示位置:
下载下来的是一个压缩包,需要解压,checkpoint就在解压后的checkpoint文件夹里

准备训练数据

没啥好说的直接上代码:

import numpy as np
from PIL import Imagedef load_image_into_numpy_array(path):global X_max, Y_maximg_data = tf.io.gfile.GFile(path, 'rb').read()image_ = Image.open(BytesIO(img_data))(width, height) = image_.sizeX_max = widthY_max = heightreturn np.array(image_.getdata()).reshape((height, width, 3)).astype(np.uint8)
train_images_np = []
for i in glob.glob(os.path.join(train_image_dir, '*.jpg')):train_images_np.append(load_image_into_numpy_array(i))dummy_scores = np.array([1.0], dtype=np.float32)  #给你标记的数据记100分
label_id_offset = 1
train_image_tensors = []
gt_classes_one_hot_tensors = []
gt_box_tensors = []
for (train_image_np, gt_box_np) in zip(train_images_np, gt_boxes):train_image_tensors.append(tf.expand_dims(tf.convert_to_tensor(train_image_np, dtype=tf.float32), axis=0))gt_box_tensors.append(tf.convert_to_tensor(gt_box_np, dtype=tf.float32))zero_indexed_groundtruth_classes = tf.convert_to_tensor(np.ones(shape=[gt_box_np.shape[0]], dtype=np.int32) - label_id_offset)gt_classes_one_hot_tensors.append(tf.one_hot(zero_indexed_groundtruth_classes, num_classes))

其中 gt_boxes为我们前边步骤获取到的boxes,train_image_dir为你所标记的图片所在路径。

(未完待续!我们下一篇来介绍如何训练模型!https://blog.csdn.net/pp2351/article/details/109302828)

让AI帮你玩游戏(一) 基于目标检测用几个样本帮你实现在魔兽世界中钓鱼(群已满)相关推荐

  1. 让AI学习如何玩游戏 OpenAI打造强化学习通用模型

    过度学习是许多AI模型的问题,要开发出通用型AI,就必须解决这道难题,OpenAI近日释出一个特别的训练环境CoinRun,该平台藉由游戏设计,能够提供指针,让程序将过去学习到的经验,转移到全新环境中 ...

  2. 百度AI快车道深圳专场,揭秘CV目标检测核心技术

    我们的生活正因AI技术的落地应用而不断走向智能化 -- 拍照搜索.视频中物体定位.AR眼镜.无人零售货柜.安防领域中的人脸识别.制造业中的缺陷检测.医学领域中的病灶检测.农业领域中的害虫识别监控--而 ...

  3. 助力质量生产,基于目标检测模型MobileNetV2-YOLOv3-Lite实现PCB电路板缺陷检测

    在很多需要机械性重复性工作的场景中,使用AI技术来进行检测识别能够实现更高的效率以及更高的质量,比如:按键.测温.质控等等. 在前面的一些文章中,我也写过有关质量相关的检测类文中,今天的实践与此相关, ...

  4. AI快车道深圳专场,揭秘CV目标检测核心技术

    我们的生活正因AI技术的落地应用而不断走向智能化-- 拍照搜索.视频中物体定位.AR眼镜.无人零售货柜.安防领域中的人脸识别.制造业中的缺陷检测.医学领域中的病灶检测.农业领域中的害虫识别监控--而这 ...

  5. 服务医学,基于目标检测模型实现细胞检测识别

    在我以往的认知里面,显微镜下面的世界是很神奇的存在,可能只平时接触到的绝大多数是都是宏观的世界吧,看到微观世界里面各色各样的生物.细胞就会觉得很神奇,电子显微镜往往都是医生来操作观察的,对于采样.病理 ...

  6. 基于目标检测的海上舰船图像超分辨率研究

    基于目标检测的海上舰船图像超分辨率研究 人工智能技术与咨询 来源:< 图像与信号处理> ,作者张坤等 关键词: 目标检测:生成对抗网络:超分辨率 摘要: 针对海上舰船图像有效像素在整体像素 ...

  7. 学计算机的都喜欢玩游戏吗,男生沉迷于网吧玩游戏,高考成绩都懒得查,老师帮查后考了712分...

    随着科技的快速发展,电子产品越来越普遍,如今家家户户基本都有电脑了,这让越来越多的学生沉迷于网络游戏.尤其是男生,玩起游戏来的时间可能比学习时间还要久. 学生沉迷于电脑游戏,对家长来说是件头疼的大事. ...

  8. 你想边玩游戏边学编程吗?这篇文章帮你

    你想边玩游戏边学编程吗?当然可以! 最近在网上冲浪时,看到了这样一个网站: 作为一个热爱编程的MC党,能边玩MC边学编程是我梦寐以求的事情. 下面开始教程,走起! 先给出官方网址:Minecraft ...

  9. AI大视觉(二十) | 小目标检测的tricks汇总

    本文来自公众号"AI大道理". 这里既有AI,又有生活大道理,无数渺小的思考填满了一生. 在计算机视觉中,检测小目标是最有挑战的问题之一. 本文汇总了一些有效的策略. 为何小目标 ...

最新文章

  1. 说明:最新谷歌AI智商不超过6岁研究来自中国科学院而非美国康内尔大学
  2. 关于 #!/bin/bash脚本头文件的类型说明
  3. 纯手工服务器维护教程
  4. 最萌办公室采访 | 网易程序员灵魂大拷问(文末有福利)
  5. MySQL 调用存储过程
  6. 视觉SLAM——ORB特征
  7. 手把手教会|绘制风控中常用的可视化图表
  8. mysql之旅【第一篇】
  9. Java对象的序列化和反序列化实践
  10. Map转JSON内容解释
  11. ZYNQ ADAU1761裸机音频驱动调试
  12. 共有76款 WIKI系统开源软件
  13. springboot集成Stream上传插件+图片缩略图+视频缩略图
  14. 入职中国人寿是个坑?
  15. 函数的基本概念以及函数封装
  16. css打印适应纸张_使用原生css+js+html实现打印A4纸张的功能页面
  17. 心电信号系统GUI系统
  18. 量化交易平台Quantopian学习的笔记(一)
  19. SOP是什么?SOP的作用是什么?如何编写SOP?
  20. 中国为什么产生不了Salesforce?

热门文章

  1. 密码学--对称加密和非对称加密联合使用
  2. 搭建无线监控云存储服务器,mac 篇二:自建docker视频录像机NVR存储-家用摄像头云存储服务zoneminder...
  3. duolingo 多邻国 安卓版无法使用口语功能
  4. 达梦DM装完数据库,bin下面没有disql文件是怎么回事?
  5. 2019 年终回顾:不忘初心,负重前行
  6. Android OpenGLES滤镜开发之仿抖音灵魂出窍
  7. android手机开机密码,android手机开机密码忘了怎么办?
  8. python主题壁纸下载_Python开发专属壁纸下载与轮换程序
  9. Ext GridPanel多选问题
  10. 苹果耳机AirPods Max(Pro)的空间音频技术,Unity端开源框架下载