基于 torch 框架的 ai 图像识别算法 yolo 在 dnf 游戏脚本中的应用
随着现代电子游戏领域不断拓展,特别是对于诸如《地下城与勇士》这类重度割草的游戏而言,运用YOLO算法进行图片识别的自动化功能已经逐渐普及。YOLO(全称:“你只需要看一次”(YouOnlyLookOnce))凭借其迅捷的图像处理速度及较高的精确度,赢得了众多开发者的青睐。本篇文章将详细解析如何运用YOLO技术实现DNF的自动刷图,从而让玩家能够更加便捷地获取游戏资源。
一、YOLO算法的魅力
YOLO算法专为实时对象侦察而设,以速度与精度见长。相较于传统方法,YOLO仅需一个神经网络处理全图数据,瞬间捕捉图像内的物件。这使得YOLO尤其适应紧迫反应之需求,例如DNF之游戏环境。在此类环境中,玩家需迅速辨识角色、敌人、传送门及掉落物品等元素,以便实现自动操作。借助YOLO,玩家无需手动干预亦能顺利完成任务,显著提高游戏体验。
import ultralytics
ultralytics.checks()
事实上,YOLO具备快速识别的能力,还可针对性地调整相应参数以适应当前环境。玩家可依据自身需求,调整模型输入,选取合适的训练数据,从而实现最优的识别效果。特别是在DNF这类游戏中,由于其内部资源及环境的多样性,灵活运用YOLO算法将成为玩家在复杂场景下迅速定位目标的得力助手。
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算法,首先需建立适当的开发环境。用户可依据自身需求,选择运用CPU或创建基于GPU的环境用于高效模型训练。GPU的强大运算性能能显著缩减训练周期,使玩家更迅速地享受到自动刷图的快感。安装完毕YOLO相关库后,只需运行几段简短代码即可验证安装效果,整个过程充满期待与激动。
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 格式
YOLO的使用离不开预训练模型的选取,官方网站提供多种预训练模型供玩家选用,其识别性能优越,适于新手玩家初步理解与测试,例如此应用至DNF自动刷图功能,可迅速识别各种游戏元素,提升游戏效能与趣味性。
三、理解配置文件的重要性
# 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)
YOLO模型的运行与调试依赖于两个关键性文件:".yaml"和".pt"。其中,".yaml"文件主要负责存储模型所需的分类信息,如DNF游戏中的怪物、人物、可进入门以及掉落物品等。深入了解并掌握这些配置文件,有助于玩家在训练模型时作出更为明智的决策。
在此之外,针对.yaml文件中的参数配置亦不容忽视。尽管对于新手而言其功能或许较为深奥,然而随着实际操作的积累与深化,使用者将逐步理解每项参数所扮演的角色。在接下来的模型训练过程中,用户需依据实际状况来调整这些参数,从而达到最佳的识别性能。借助反复试验和微调,使用者有望为自身的DNF自动刷图工具奠定稳固基石,进而实现游戏的自动化运行。
四、训练自己的模型
掌握YOLO基本操作之后,玩家便需开始进行模型训练,这是一个富有挑战性的任务。在训练环节,玩家须首先获取标注数据,此类数据有助于模型理解和辨识各类游戏元素。通过收集游戏截图并进行标注,玩家可为YOLO提供充足的训练样本,进而提升模型的精准度。
# 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(下载训练集的地址)
经过训练环节的打磨,玩家将获得一系列模型文件,其中以best.pt为代表的模型性能优越。在这个过程中,玩家得益于自动刷图工具的同时,也深化了对机器学习基础理论的认识。这种成就感将激发玩家持续探索未知领域,推动其在游戏中的不断成长。训练属于自己的模型,既是提高游戏效率的途径,亦是个人实力的体现。
五、实现自动化操作的乐趣
在全套设备配置完备之后,我们得以启动DNF中的自动操控功能。在此过程中,YOLO算法扮演了至关重要的角色。它能够精准地分辨游戏中的各种元素如人物、怪物、传送门以及掉落物等,并根据键盘和鼠标的输入信息,实现自动化操作。此举不仅展示了科技的强大魅力,同时也是对玩家付出耐心与努力的最好回馈。试想一下,只需轻点鼠标,游戏角色便能自动刷怪、采集资源,这种便捷体验无疑会带给您无尽的乐趣。
借助YOLO游戏装置,玩家在游戏中所获收益大幅提升,体验非凡。这不仅简化了操作步骤,更使得玩家能将精力放在发掘游戏的其他魅力上。预计未来,随着科技的不断进步,该装置在游戏领域的应用将愈发广泛,给予玩家更多的期待和全新挑战。