UltralyticsYOLOv8-FPS-AI

zjk 发布于 2023-09-22 195 次阅读


性能水平

测试配置:

- 操作系统: Windows 11 22H2
- 处理器: AMD Ryzen 3900X
- 显卡: NVIDIA GeForce RTX 2080 12G
- 内存: 16G @ 3600MHz
- 屏幕分辨率: 2560 x 1440
- 游戏分辨率: 2560 x 1440
- 测试游戏: Apex
- 游戏内FPS: 60+fps

模型图像大小px敌方识别度mAP 50-95友方识别度mAP 50-95.trt fp16速度(fps).trt int8速度(fps)IFF性能
Apex_8n64054.571.358.8861.23
Apex_8s64066.979.227.1033.43良好
Apex_8n_pruned64044.155.972.2274.04
Apex_8s_pruned64052.964.930.5431.82

优点和待办

优点:

  • [√] 使用dxshot快速截屏
  • [√] 不依赖于Logitech Macro/GHub
  • [√] 可自定义的触发键
  • [√] PID控制算法
  • [√] 敌我识别模型
  • [√] fp16精度

待办:

  • [√] int8精度(目前没有显著改进)
  • [√] 裁剪(牺牲精度太多)
  • [  ] 敌我识别提高准确性
  • [  ] 部分身体暴露、炮火堵塞、烟雾等场景提高精度

环境搭建

1. Linux系统

  • 安装Conda使用bash Miniconda3-latest-Linux-x86_64.sh来安装Miniconda,或者使用bash Anaconda-latest-Linux-x86_64.sh
    来安装Anaconda
  • 创建虚拟环境
    conda create -n yolov8 python=3.10 # 指定py版本创建conda虚拟环境
    conda activate yolov8 # 激活环境
  • 安装CUDAPyTorch如果你的电脑有独显,可以安装CUDA、cuDNN、PyTorch,以达到更流畅的效果
    pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116`
  • 安装 TensorRT
    pip install --upgrade setuptools pip --user
    pip install nvidia-pyindex
    pip install --upgrade nvidia-tensorrt
    pip install pycuda
  • 安装其他依赖库
    pip install -r requirement.txt

2. Windows系统

Windows 10 Pro Version 21H2/22H2Windows11 Pro Version 22H2Windows11 Pro Insider View Build 25346Windows OS
已在以上版本进行了测试并取得了成功,从技术上讲,它适用于所有最新版本

  • 版本选择





























    CUDAcuDNNTensorRTPyTorch
    11.7.08.5.08.5.2.22.0.0
    11.8.08.6.08.5.3.12.0.0
    ............

    后面将使用第一行版本清单

  • 安装CUDA访问CUDA官网文档,命令安装
    conda install cuda -c nvidia/label/cuda-11.7.0 # 安装CUDA 11.7.0

    或者访问CUDA官网下载,手动下载解压并配置环境变量,具体操作可看【深度学习之YOLO8】环境部署,有CUDA、cuDNN和PyTorch的详细安装教程

  • 安装cuDNN
    • 注册并成为NVIDIA开发人员
    • 转到cuDNN下载站点:cuDNN下载存档
    • 点击Download cuDNN v8.5.0 (August 8th, 2022), for CUDA 11.x
    • 下载Local Installer for Windows (Zip)
    • 解压缩cudnn-windows-x86_64-8.5.0.96_cuda11-archive.zip
    • 复制所有三个文件夹(bin/include/lib)并将它们粘贴到CUDA安装目录(CUDA默认安装目录C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.7)
  • 安装PyTorch
    conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia

  • 安装TensorRT按照英伟达的安装说明进行操作

    • 转到TensorRT下载站点

    • 下载TensorRT 8.5 GA for Windows 10 and CUDA 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7 and 11.8压缩包

    • 压缩下载的文件TensorRT-8.5.2.2TensorRT-8.5.2.2.Windows10.x86_64.cuda-11.8.cudnn8.6.zip

    • xxxxTensorRT-8.5.2.2lib目录添加到环境变量

    • cmd 进文件夹xxxxTensorRT-8.5.2.2python,运行如下命令

    conda activate yolov8 # 激活环境
    pip install tensorrt-8.5.2.2-cp310-none-win_amd64.whl # 使用.whl文件快速安装tensorrt
  • 安装其他依赖库
    pip install -r requirements.txt # requirements.txt在项目的根目录

    验证安装版本
  • 验证CUDA
    nvcc -V

    如果CUDA安装成功,它会显示类似如下结果:

    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2022 NVIDIA Corporation
    Built on Tue_May__3_19:00:59_Pacific_Daylight_Time_2022
    Cuda compilation tools, release 11.7, V11.7.64
    Build cuda_11.7.r11.7/compiler.31294372_0
  • 验证cuDNN
    python
    import torch
    print(torch.backends.cudnn.version())
  • 验证PyTorch
    python
    import torch
    print(torch.__version__)
  • 验证TensorRT
    pip show tensorrt

    如果TensorRT安装成功,它会显示类似如下结果:

    Name: tensorrt
    Version: 8.5.2.2
    Summary: A high performance deep learning inference library
    Home-page: https://developer.nvidia.com/tensorrt
    Author: NVIDIA Corporation

准备权重

1. PyTorch.pt权重

您有几种选择来制作权重文件:

  • 使用已经做好的权重apex_v8n.pt这是一个基于权重,使用7W截图训练并标记为"敌人"、"队友",由于该项目的性质,提供的体重训练不足,以防止滥用和作弊,但是,它已经可以很好地跟踪角色并展示一定程度的IFF功能
  • 使用提供的权重作为预训练的权重,并按照自己的数据集训练自己的权重请按照Ultralytics官方说明训练自己的体重

    请注意,数据集需要使用标注格式,请将您的数据集修改为以下结构:

    dataset/apex/
    ├── train
    | ├── images
    │ | ├── 000000000001.jpg
    │ | ├── 000000580008.jpg
    │ | | ...
    | ├── lables
    │ | ├── 000000000001.txt
    │ | ├── 000000580008.txt
    │ | | ...
    ├── valid
    | ├── images
    │ | ├── 000000000113.jpg
    │ | ├── 000000000567.jpg
    | ├── lables
    │ | ├── 000000000113.txt
    │ | ├── 000000000567.txt
    │ | | ...
  • 用官方预训练的重量训练自己的重量如果提供的重量不能满足您的期望,您还可以探索提供的其他预训练权重的选项

    模型速度:8n>8s>8m

    模型精度:8n<8s<8m

    请按照Ultralytics官方说明训练自己的权重模型

2. .pt导出为ONNX.onnx权重

如果你只需要fp16精度,那么跳过此步

官方导出文档
官方导出参数

  • CLI官方函数导出yolo export
    yolo export model=C://user/zjk/xxx.pt format=onnx
  • Python代码导出
    from ultralytics import YOLO
    # 加载模型
    model = YOLO("./models/yolov8n.pt") # 加载预训练模型(建议用于训练)
    success = model.export(format="onnx",device=0) # 将模型导出为 ONNX 格式
    # success = model.export(format="engine",device=0) # 将模型导出为 TensorRT 格式
    print("ok")

3. .pt导出为TensorRT.trt.engine权重

方法同转ONNX权重

  • CLI官方函数导出yolo export
    # 默认输出为fp32精度
    yolo export model=C://user/zjk/xxx.pt format=engine
    # 指定输出为fp16精度
    yolo export model=C://user/zjk/xxx.pt format=engine fp16=True
  • 特殊地,.onnx导出为.trt权重
    # 转fp32精度
    python export.py -o <your weight path>/best.onnx -e apex_fp32.trt -p fp32 --end2end --v8
    # 转fp16精度
    python export.py -o <your weight path>/best.onnx -e apex_fp16.trt --end2end --v8
    # 转int8精度
    python export.py -o <your weight path>/best.onnx -e apex_int8.trt -p int8 --calib_input <your data path>/train/images --calib_num_images 500 --end2end --v8

运行

  conda activate `你的conda环境名`
  python main.py

或者使用PyCharm等工具,配置环境后运行main文件

几秒钟后,程序将开始功能化。您应该会在控制台中看到以下提示

  listener start
  Main start
  Screenshot fps:  311.25682541048934
  fps:  61.09998811302416
  interval:  0.016366615295410156
按键说明

- Shift:按住换档触发瞄准辅助。默认情况下,只能触发瞄准辅助。holding shift
- 向左:开锁。单击键后,您应该会听到哔哔声,现在 保持也可以触发瞄准辅助
- 向右:开锁。单击键后,您应该会听到哔哔声,现在 保持也可以触发瞄准辅助
- End:用于连续瞄准的西克。自动瞄准始终处于打开状态,再次单击可关闭。End
- 左键:可选触发器
- 右键:可选触发器
- Home:停止收听并退出程序

配置自定义

修改args_.py文件以得到自己想要的效果

  • model:此项目权重文件是必要的。您可以用自己的.trt.engine权重文件代替它
  • classes:要检测的类,可以扩展,但需要是一个数组。例如,0表示"队友",1代表"敌人",那么输入应该是 [1]
  • conf:推理的置信度,根据您的模型精度进行调整
  • crop_size:要从屏幕检测的部分,根据您的显示器分辨率进行调整,例如:对于1440P或1080P,1/31/2
  • pid:使用PID控制器平滑瞄准,防止过漂移,默认情况下保留它被重新建议,需要仔细校准的PID组件,您也可以修改该文件和MyListener.py
  • 功能和定义:无论您喜欢什么键,都可以自定义键设置listen_key(key)keys_released(key)

免责声明

资料

Train image dataset / TensorRt code

GitHub地址:https://github.com/BigdataZjk/UltralyticsYOLOv8-FPS