Yolo算法解密:DNF游戏自动刷图新玩法
伴随着人工智能的深入发展,图像识别技术逐渐延伸至各个领域,其中Yolo算法以其高速高准确性的特点在诸多领域中获得了广泛认可。本文将深入解读Yolo的运作原理,并结合Torch框架探讨Yolo在DNF游戏中自动刷图的可行性。通过将Yolo与键盘和鼠标事件处理技术相结合,我们将对自动操作的实践进行全面分析,旨在为广大用户提供更加便捷高效的游戏体验。
选择适合的Yolo包
首先,针对Yolo算法在DNF自动刷图场景中的运用,必须选择适当的Yolo框架包。鉴于Yolo依赖Torch架构,可以从官网下载所需包。对于初级使用者而言,可选择CPU版的Yolo包来降低硬件需求。然而为了确保高效性,推荐搭建GPU环境以提升模型训练速度。安装完成后,只需执行简单代码便能进行验证。
import ultralytics
ultralytics.checks()
模型准备与导出
Ultralytics YOLOv8.0.126 Python-3.10.3 torch-2.0.1+cpu CPU
Setup complete (16 CPUs, 39.4 GB RAM, 215.8/275.7 GB disk)
安装成功Yolo套装后,需获取预训练模型。此模型通常以.pt和.yaml两种格式呈现,前者包含权重信息,后者则储存配置参数。初学者建议直接选用已完成训练的预训练模型,这将大大降低训练成本。预训练模型的下载路径可在开发者官网上找到。
from ultralytics import YOLO
# 加载模型
model = YOLO("yolov8.yaml") # 从头开始构建新模型 官网的8n没找到,我就用了8
model = YOLO("yolov8n.pt") # 加载预训练模型(建议用于训练)
# 使用模型
model.train(data="coco128.yaml", epochs=3) # 训练模型
metrics = model.val() # 在验证集上评估模型性能
results = model("https://ultralytics.com/images/bus.jpg") # 对图像进行预测
# success = model.export(format="onnx") # 将模型导出为 ONNX 格式
项目完工之后,详细解读.YAML文件以便深入了解模型性能特点至关重要。其中的关键参数nc,表示的是模型识别的类目数量。例如,在DNF游戏中,需要区分出怪物、角色、道具、可进出门的不同种类和不能进入的门,因此根据实际情况调整nc参数显得尤为重要。此外,此文件亦包含了有关卷积神经网络的具体设置信息,对于初学者而言,建议先采用默认设置,无需进行更改。
训练自己的模型
训练所需之数据包括训练集图像与相应标注信息。训练集包含游戏截屏,标注信息是对画面中各物件的精确位置描述。训练过程中,我们利用专业工具获取和保存图片以及其对应的框信息。这些标注信息和图片将成为模型的学习材料。
# Ultralytics YOLO , AGPL-3.0 license
# YOLOv8 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect
# Parameters
nc: 80 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov8n.yaml' will call yolov8.yaml with scale 'n'
# [depth, width, max_channels]
n: [0.33, 0.25, 1024] # YOLOv8n summary: 225 layers, 3157200 parameters, 3157184 gradients, 8.9 GFLOPs
s: [0.33, 0.50, 1024] # YOLOv8s summary: 225 layers, 11166560 parameters, 11166544 gradients, 28.8 GFLOPs
m: [0.67, 0.75, 768] # YOLOv8m summary: 295 layers, 25902640 parameters, 25902624 gradients, 79.3 GFLOPs
l: [1.00, 1.00, 512] # YOLOv8l summary: 365 layers, 43691520 parameters, 43691504 gradients, 165.7 GFLOPs
x: [1.00, 1.25, 512] # YOLOv8x summary: 365 layers, 68229648 parameters, 68229632 gradients, 258.5 GFLOPs
# YOLOv8.0n backbone
backbone:
# [from, repeats, module, args]
- [-1, 1, Conv, [64, 3, 2]] # 0-P1/2
- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4
- [-1, 3, C2f, [128, True]]
- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8
- [-1, 6, C2f, [256, True]]
- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16
- [-1, 6, C2f, [512, True]]
- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32
- [-1, 3, C2f, [1024, True]]
- [-1, 1, SPPF, [1024, 5]] # 9
# YOLOv8.0n head
head:
- [-1, 1, nn.Upsample, [None, 2, 'nearest']]
- [[-1, 6], 1, Concat, [1]] # cat backbone P4
- [-1, 3, C2f, [512]] # 12
- [-1, 1, nn.Upsample, [None, 2, 'nearest']]
- [[-1, 4], 1, Concat, [1]] # cat backbone P3
- [-1, 3, C2f, [256]] # 15 (P3/8-small)
- [-1, 1, Conv, [256, 3, 2]]
- [[-1, 12], 1, Concat, [1]] # cat head P4
- [-1, 3, C2f, [512]] # 18 (P4/16-medium)
- [-1, 1, Conv, [512, 3, 2]]
- [[-1, 9], 1, Concat, [1]] # cat head P5
- [-1, 3, C2f, [1024]] # 21 (P5/32-large)
- [[15, 18, 21], 1, Detect, [nc]] # Detect(P3, P4, P5)
锻炼项目完成后,您将会得到一个包含权重文件和最佳模型best.pt,以及最后一轮强化训练数据last.pt的专用文件夹。我们强烈建议采用顶级性能表现最好.pt模型以提高辨识准确性。
模型应用与结果展示
在得到预设或自定义模型之后,便可启动对游戏截图的处理过程。借助先进的模型图像处理技术,我们能够获取到包括游戏中各类物体精准位置和种类在内的识别结果。将这些识别信息与键盘、鼠标等交互设备进行整合,便能实现自动化操作,从而达成DNF自动刷图的目标。
# Ultralytics YOLO , AGPL-3.0 license
# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 mine_images from COCO train2017) by Ultralytics
# Example usage: yolo train data=coco128.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco128 ← downloads here (7 MB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco128 # dataset root dir 相对于datasets文件夹 数据集放在哪里 。。/是父级目录 。/是当前目录
train: images/train2017 # train mine_images (relative to 'path') 128 mine_images 相对于path目录下训练集的路径
val: images/val2017 # val mine_images (relative to 'path') 128 mine_images 相对于path目录下验证集的路径 这里不区分验证和测试集 所以把不用于训练只用于评估的用一种就可以了
test: # test mine_images (optional)
# Classes 框的类别,即yolov8.yaml中nc具体有哪些
names:
0: person
1: bicycle
2: car
3: motorcycle
4: airplane
5: bus
6: train
7: truck
8: boat
9: traffic light
10: fire hydrant
11: stop sign
12: parking meter
13: bench
14: bird
15: cat
16: dog
17: horse
18: sheep
19: cow
20: elephant
21: bear
22: zebra
23: giraffe
24: backpack
25: umbrella
26: handbag
27: tie
28: suitcase
29: frisbee
30: skis
31: snowboard
32: sports ball
33: kite
34: baseball bat
35: baseball glove
36: skateboard
37: surfboard
38: tennis racket
39: bottle
40: wine glass
41: cup
42: fork
43: knife
44: spoon
45: bowl
46: banana
47: apple
48: sandwich
49: orange
50: broccoli
51: carrot
52: hot dog
53: pizza
54: donut
55: cake
56: chair
57: couch
58: potted plant
59: bed
60: dining table
61: toilet
62: tv
63: laptop
64: mouse
65: remote
66: keyboard
67: cell phone
68: microwave
69: oven
70: toaster
71: sink
72: refrigerator
73: book
74: clock
75: vase
76: scissors
77: teddy bear
78: hair drier
79: toothbrush
# Download script/URL (optional)
download: https://ultralytics.com/assets/coco128.zip(下载训练集的地址)
总结与展望
本文主要基于Yolo算法,借助DNF游戏脚本的实例,深入研究了图像识别技术在游戏自动化领域的具体应用方式。通过选择恰当的Yolo模块,导入模型并进行导出与生成,训练独立模型以及模型的实际运用与效果评估等步骤,成功实现了DNF游戏的自动刷图功能。展望未来,人工智能技术的不断发展将使图像识别算法在游戏产业的应用范围更加广泛。
在探寻之旅中,您是否曾遇到过游戏自动化领域中图像识别算法所面临的挑战?请阐述对图像识别技术在游戏行业未来发展方向的看法。期待您在评论区分享真知灼见和实践经验。