基于yolov5训练FPS游戏人物识别锁定并进行鼠标移动
搭建训练模型
Git下载
yolov5源码下载
在安装好Git后,在要安装yolov5源码文件中右键打开**Git Bash
**,输入命令回车下载:
1 | git clone git@github.com:ultralytics/yolov5.git |
安装Anaconda环境
在进行安装Anaconda环境前,首先准备好安装Anaconda,目的是为了方便管理不同Python项目的配置环境,在这里,安装Anaconda不再赘述,自行上网查找安装教程,本站长贴出安装步骤链接,Anaconda下载安装教程
配置conda环境,安装Labelimg
- 打开终端命令行,输入命令:
1 | conda create -n 环境名 python=(python版本号) |
2. 输入命令激活环境:
1 | conda activate labelimg |
可以看到前面的括号里变成了环境名,说明已经成功激活虚拟环境了
- 在虚拟环境中,直接键入命令安装labelimg即可安装完成:
1 | pip install labelimg |
- 直接键入命令回车,打开标记软件:
1 | labelimg |
再进行数据标注的时候,点击键盘的**W
**键,可以看见鼠标光标变成十字形,按住鼠标左键
,将标记的目标框出来,,提示输入标签名,输入person
(可标记多个目标或者标签名),标记好后保存(Save),数据集就会保存到所选存储位置
yolov5配置及修改
- 打开yolov5源码文件夹,进入
data
文件夹,新建两个文件夹,分别命名为labels(用来存储labelimg的标记结果)
,images(用来存储预训练的图片)
。 - 新建三个
txt
文件,分别命名为train
test
val
,将训练的图片分为训练集和验证集,然后把图片的路径(根文件目录,即data/images/图片名+格式)分别写入这三个txt
文件,train
和val
是可以不用区分的(可以相同),但是对应的txt文件必须存在。
对于要在txt文件里面要保存训练的图片名称,因为训练的图片数量应在1000张左右,这样训练的模型效果相对较好,因此一个一个去输入图片的名称有点不太现实,所以我们直接写个代码去获取当前文件夹的所有文件名称,并循环打印(记得加前缀data/images/),代码如下:
1 | import os |
- 打开里面的coco128.yaml文件,在names这里,只保存之前labelimg里面的分类名称,其他类名均删除,将
txt
文件所在的文件夹路径填入path中,然后将三个txt
文件名分别填入train
,test
,val
,然后将本文件另存为自己想要命名的文件名。
- 数据集准备好后,打开
train.py
文件,根据requirements.txt(根目录下即可找到)
安装相关的包。 - 下载Pytorch(CUDA版本),进入Pytorch官网,选择stable版,Windows平台,选择Pip,编程语言选择python,之后选择CUDA版本。
查看安装CUDA版本:
,打开命令终端,输入命令查看显卡版本,选择比本版本低的Pytorch下载即可:
1 | nvidia-smi |
- 复制下载命令进入pycharm,打开终端复制并回车。
- CUDA和CUDNN在NVIDIA官网下载即可,安装方法自行上网查找,由于站长太善良,直接贴出安装教程链接,
CUDA与CUDNN安装教程
,另外切记安装的版本必须要与Pytorch版本号相对应
。 - 在
train.py
文件中,找到parse_opt函数模块位置(在507行),开始配置训练参数。
- 第一行
weights
,把yolov5s.pt
内容清空,续训练的时候,把上次的.pt权重文件根路径添加进去。 - 第二行
cfg
,进入model文件夹,将yolov5l.yaml文件的根路径添加进default
中。 - 第三行
data
,在data文件夹中,将之前由coco128.yaml改写的自命名文件的根路径替换掉。 - 第五行
epochs
,即训练的轮数,自定义即可。 - 第六行
batch-size
,即每次进入神经网络的图片数(8-14左右) - 在
device
那行中,选择CPU或者GPU进行训练(选CPU,就填CPU;选GPU,如果一块显卡,就填0,多块显卡的话,依次把想要用到的显卡序号写出来,大家应该都填0,因为我们都是苦逼的大学牲,没钱买多余的显卡)。
- 准备工作基本上结束了,然后运行该文件,进行训练,等待训练完成后,**
.pt
权重文件会出现在runs/train/exp/weights
**下。
yolo框架的改写
打开yolov5源码根目录下的detect.py
文件,找到parse_opt函数模块(在287行),配置参数。
- 第一行
weights
,把训练好的.pt
权重文件根路径添加进去。 - 第二行
source
,单引号中为需要YOLO进行目标推理的图片名称,填入screenshot.jpg
。 - 第三行
data
,在data文件夹中,将之前由coco128.yaml改写的自命名文件的根路径替换掉。 - 第五行
conf-thres
,设置目标置信度,适中即可。 - 第八行
device
,同上。 - 第十行
save-txt
,在action前加一个default=‘True’(实现射击逻辑)。 - 在代码的最后面,
if __name__ == "__main__":
的上方,填写img = pyautogui.screenshot('screenshot.jpg')
(调用pyautogui的截图功能,括号内为截图保存的文件名,与parse_opt中的source里填写的文件名一致) - 终端中输入命令:
1 | pip install pyautogui |
- 在
parse_opt
上方if save_text:
判断中添加射击逻辑,代码如下:
1 | if save_txt: # Write to file |
由于射击逻辑与自身鼠标DPI和游戏内灵敏度有关,需自己不断调试。
YOLO训练后完整代码下载
代码已全部打包,有意者自行下载,模型的话我只训练了300张,精度的话不是很理想,只需要安装所有的配置环境即可,解压后只需运行根目录下的detect.py
文件。
评论