金币418
积分886
注册时间2021-2-12
最后登录2024-10-3
|
## 性能基准
<details>
<summary>测试设置:</summary>
- 操作系统:Windows 11 Pro 22H2
- CPU:AMD Ryzen 3900X
- GPU:NVIDIA GeForce RTX 2080 8G
- 内存:32G @ 3600MHz
- 监视器分辨率:2560 x 1440
- 游戏内分辨率:2560 x 1440
- 游戏内FPS:锁定@60fps
</details>
| 模型 | 尺寸<br><sup>(像素) | 敌人预测<sup>val<br>mAP 50-95 | 队友预测<sup>val<br>mAP 50-95 | 速度<br><sup>.trt fp16<br>(fps) | 速度<br><sup>.trt int8<br>(fps) | IFF性能 |
| ------------- | --------------------- | -------------------- | -------------------- | ------------------------------ | ------------------------------- | ------------------ |
| Apex_8n | 640 | 54.5 | 71.3 | 58.88 | 61.23 | 差 |
| Apex_8s | 640 | 66.9 | 79.2 | 27.10 | 33.43 | 可接受 |
| Apex_8n_pruned| 640 | 44.1 | 55.9 | 72.22 | 74.04 | 差 |
| Apex_8s_pruned| 640 | 52.9 | 64.9 | 30.54 | 31.82 | 差 |
## 优点和待办事项
优点:
* [x] 使用dxshot进行快速屏幕捕获
* [x] 不依赖Logitech Macro/GHub
* [x] 可自定义触发键
* [x] 支持PID
* [x] 支持IFF(识别敌我)(效果五五开)
* [x] 支持fp16精度
待办事项:
* [x] 支持int8精度(目前改进不显著)
* [x] 支持剪枝(牺牲了太多的准确性)
* [ ] 提高IFF的准确度
* [ ] 在以下情况下提高准确度:瞄准,身体部分暴露,枪火阻挡,烟雾...
## 1. 设置环境
### 1.1. 在Linux下设置环境
- 安装 Conda (如果还未安装)
在终端窗口中,运行: bash Miniconda3-latest-Linux-x86_64.sh 来安装 Miniconda (推荐)或运行: bash Anaconda-latest-Linux-x86_64.sh 来安装 Anaconda 。
- 设置新环境
在终端窗口中,运行:
shell
conda create -n yolov8 python=3.10 # 创建一个名为'yolov8'的环境,并安装python 3.10
conda activate yolov8 # 激活'yolov8'环境
- 安装 CUDA 和 PyTorch 。
~~如果你有一个支持cuda的gpu,你可以运行以下额外的命令~~
由于在CPU上运行推断效率低下,本项目不再建议使用。请使用支持 CUDA 的GPU,并运行以下命令来安装 CUDA 、 cuDNN 和 PyTorch :
shell
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
- 安装python需求。
shell
pip install -r requirement.txt
### 1.2. 在Windows10和Windows11中设置环境
以下方法已在 Windows 10 Pro Version 21H2/22H2 、 Windows11 Pro Version 22H2 和 Windows11 Pro Insider View Build 25346 下测试并成功。理论上,它适用于所有最新的 Windows OS 版本。
- 版本对齐
| CUDA | cuDNN | TensorRT | PyTorch |
| :-----: | :------: | :------: | :------: |
| 11.7.0 | 8.5.0 | 8.5.2.2 | 2.0.0 |
| 11.8.0 | 8.6.0 | 8.5.3.1 | 2.0.0 |
| ... | ... | ... | ... |
我们将使用第一行作为我们的包清单。
- 安装 CUDA 。 (也可以按照官方指导进行安装:[ CUDA官方网站 ](https://docs.nvidia.com/cuda/cud ... -windows/index.html))。
shell
conda install cuda -c nvidia/label/cuda-11.7.0 # 安装CUDA 11.7.0
- 安装 cuDNN 。
- 注册[ NVIDIA开发者计划 ](https://developer.nvidia.com/login)。
- 前往cuDNN下载站点:[ cuDNN下载归档 ](https://developer.nvidia.com/rdp/cudnn-archive)。
- 点击 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 安装目录 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7 。(注意 bin , include , lib 文件夹已经存在于CUDA文件夹中。)。
- 安装 PyTorch 。
shell
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
- 安装 TensorRT 。
按照[Nvidia安装指导](https://docs.nvidia.com/deeplear ... html#installing-zip)进行操作。
- 前往[TensorRT下载站点](https://developer.nvidia.com/nvidia-tensorrt-8x-download)。
- 下载 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 ZIP Package 。
- 从 TensorRT-8.5.2.2.Windows10.x86_64.cuda-11.8.cudnn8.6.zip 中解压文件夹 TensorRT-8.5.2.2 。
- 将 <你的安装路径>\TensorRT-8.5.2.2\lib 添加到PATH环境变量中。
- 前往文件夹 <你的安装路径>\TensorRT-8.5.2.2\python
- 在命令窗口中,输入
shell
conda activate yolov8 # 激活专用环境
pip install tensorrt-8.5.2.2-cp310-none-win_amd64.whl # 将tensorrt包安装到python
- 安装Python依赖项。
shell
pip install -r requirement.txt
<details>
<summary>验证安装并检查版本。</summary>
- 验证 CUDA , cuDNN , PyTorch 和 TensorRT 的安装。
- 验证 CUDA 。
shell
nvcc -V
如果安装成功,您应该看到类似以下的提示:
shell
nvcc: NVIDIA (R) Cuda compiler driver
版权所有 (c) 2005-2022 NVIDIA Corporation
构建于 Tue_May__3_19:00:59_Pacific_Daylight_Time_2022
Cuda 编译工具,版本 11.7,V11.7.64
构建 cuda_11.7.r11.7/compiler.31294372_0
- 验证 cuDNN 。
shell
python
import torch
print(torch.backends.cudnn.version())
- 验证 PyTorch 。
shell
python
import torch
print(torch.__version__)
- 验证 TensorRT 。
shell
pip show tensorrt
如果安装成功,您应该看到类似以下的提示:
shell
Name: tensorrt
Version: 8.5.2.2
Summary: 高性能深度学习推理库
Home-page: https://developer.nvidia.com/tensorrt
Author: NVIDIA Corporation
</details>
## 2. 构建您的权重
### 2.1. PyTorch .pt 权重
您有几个选项来实现您的 .pt 权重:
- (1) 使用提供的权重 apex_v8n.pt 。
这是基于 yolov8n.pt 的权重,使用了 7W 张屏幕截图进行训练,并标记了 'Enemy' 和 'Teammate'。由于项目的性质,提供的权重训练不足,以防止滥用和作弊。然而,它已经可以很好地追踪角色,并展示了一定程度的 IFF 能力。
- (2) 使用提供的权重 apex_v8n.pt 作为预训练权重,并使用自己的数据集训练自己的权重。
请按照 Ultralytics 的[官方说明](https://docs.ultralytics.com/usage/cli/)来训练您自己的权重。
请注意,数据集需要使用 YOLO 注释格式,请将您的数据集重新组织成以下结构:
shell
dataset/apex/
├── train
| ├── images
│ | ├── 000000000001.jpg
│ | ├── 000000580008.jpg
│ | | ...
| ├── lables
│ | ├── 000000000001.txt
│ | ├── 000000580008.txt
│ | | ...
├── valid
| ├── images
│ | ├── 000000000113.jpg
│ | ├── 000000000567.jpg
| ├── lables
│ | ├── 000000000113.txt
│ | ├── 000000000567.txt
│ | | ...
- (3) 使用官方预训练的 yolov8 权重来训练自己的权重。
如果基于 yolov8n.pt 的提供的权重无法满足您的期望,您还可以探索 yolov8 提供的其他预训练权重的选项。
- 模型速度: 8n>8s>8m
- 模型准确性: 8n<8s<8m
请按照 Ultralytics 的[官方说明](https://docs.ultralytics.com/usage/cli/)来训练您自己的权重。
### 2.2. ONNX .onnx 权重(如果只需要fp16精度,则跳过)
您有几个选项可以将 .pt 权重转换为 .onnx 权重。
- (1)使用yolov8内置函数 YOLO export :
shell
yolo export model=<your weight path>/best.pt format=onnx
请注意,此内置方法与[TensorRT-For-YOLO-Series](https://github.com/Linaom1214/TensorRT-For-YOLO-Series)中提供的Python代码相同。
- (2)使用Paddleslim ACT(在Linux中):
### 2.3. TensorRT .trt 或 .engine 权重
使用以下任一方法生成TensorRT引擎:
- (1)使用yolov8内置函数 YOLO export 直接从 .pt 权重导出 .engine 权重。
shell
# 输出fp32精度(默认)
yolo export model=<your weight path>/best.pt format=engine
# 输出fp16精度(推荐)
yolo export model=<your weight path>/best.pt format=engine fp16=True
- (2)使用第三方方法[TensorRT-For-YOLO-Series](https://github.com/Linaom1214/TensorRT-For-YOLO-Series)从先前生成的 .onnx 权重导出 .trt 权重。
shell
# 输出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
## 3. 运行程序
替换模型并在 args_.py 文件中更改设置(参见第4节)。
使用以下命令运行 main.py 文件
shell
conda activate v8trt # 激活专用环境
python main.py # 启动瞄准辅助
几秒钟后,程序将开始运行。您应该在控制台中看到以下提示:
shell
listener start
Main start
Screenshot fps: 311.25682541048934
fps: 61.09998811302416
interval: 0.016366615295410156
按键说明:
- Shift :按住Shift键触发瞄准辅助。默认情况下,只有 按住Shift键 才能触发瞄准辅助。
- Left :解锁“左键”。单击 左 键后,您应该听到一声哔声,现在按住 左键 也可以触发瞄准辅助。
- Right :解锁“右键”。单击 右 键后,您应该听到一声哔声,现在按住 右键 也可以触发瞄准辅助。
- End :单击 End 进行连续瞄准。自动瞄准始终开启,再次单击可关闭。
- 左键 :可选触发器
- 右键 :可选触发器
- Home :停止监听并退出程序
## 4. 更改设置
您可以在 args_.py 文件中更改以下设置。
- --model :此项目要使用的权重。请将其替换为您自己的 .trt 或 .engine 权重。
- --classes :要检测的类别,可以扩展但需要是一个数组。例如,0表示“队友”,1表示“敌人”。然后输入应为[1]。
- --conf :推理的置信度水平。根据模型的准确性进行调整。
- --crop_size :从屏幕中检测的部分。根据您的显示器分辨率进行调整。例如:1440P的情况下使用 1/3 ,或者1080P的情况下使用 1/2 。
- --pid :使用PID控制器平滑瞄准并防止过度漂移。建议保持默认设置。
- --Kp , --Ki , --Kd :需要仔细校准的PID组件。推荐使用 --Kp=0.5 , --Ki=0.1 , --Kd=0.1 作为起点。
您还可以修改 MyListener.py 文件。
- 函数 def listen_key(key) 和 def keys_released(key) :将 keyboard.Key.home , keyboard.Key.end , keyboard.Key.shift , keyboard.Key.left 或 keyboard.Key.right 更改为您喜欢的任意键,以自定义键设置。
|
|