Skip to content
This repository has been archived by the owner on Aug 30, 2023. It is now read-only.

zRzRzRzRzRzRzR/Mult-YOLO-alogorithm-of-RoboMaster-Radar-Detection-2023

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

2023 RoboMaster XJTLU Radar Object Detection

Team: 动云科技GMaster战队

Author: 视觉组 张昱轩 zR

功能介绍

动云科技GMaster战队2023赛季 yolo目标检测 雷达小目标模型训练代码。
本仓库包含从数据集制作到推理部署全套代码。并分为Anchor_free 和 Anchor_base两种检测头(yolov7,yolov8) 机制,其对应的文件夹分别为 anchor_freeanchor_base
由于算法的不同,两种算法的训练,后处理方式和推理方式是不同的,故两份代码中将会包含以下文件。

yolo_anchorfree/anchorbase_rader: 检测网络训练框架
C++_inference_Openvino_radar(Only Anchor_base): OpenVINO推理代码(用于Inter的CPU和GPU推理加速)
C++_inference_TensorRT_radar: TensorRT推理代码(用于NVIDIA的GPU推理加速)

注意

  • 由于团队在2022年11月已经弃用OpenVINO推理加速。故该部分代码不会继续维护。同时,也不在提供Anchor_free版本的OpenVINO推理代码,如有需要,可以参考以下方式进行修改:
    • YOLOX OpenVINO推理模型
    • 2023 RoboMaster XJTLU Armor Keypoints Detection 关键点模型OpenVINO推理代码(即将开源)。
  • 请仔细阅读每份代码的README.md文件。
  • 如果你需要下载最新版本的代码,请克隆dev分支,最新的代码无法保证性能稳定。

环境配置

我们团队的训练配置和推理配置如下


硬件设备 训练设备 推理设备
CPU 15 vCPU Intel(R) Xeon(R) Platinum 8358P CPU @ 2.60GHz 12th Gen Intel i7-12700
GPU NVIDA A5000 x 8 NVIDA RTX3060 12GB / Inter A750
Memory 80GB 16GB
环境配置 训练设备 推理设备
OS Ubuntu 20.04.5 Ubuntu 20.04.5
CUDA 11.3 11.8
Kernel 5.15.0 5.15.0
gcc/g++ 9.4.0 9.4.0
cmake \ 3.16.3
Python 3.8.6 3.10.8
ONNX 1.13.0 1.13.0
Pytorch 1.11.0 \

注意

  • 更详细的推理设备配置文件以及注意事项,请查看对应功能的README.md文件。

数据集

数据集格式和标注方法

我们团队使用 labelimg 工具进行标注并保存为yolo格式。
本代码基于 YOLOv7 框架开发,理论上支持COCO类型数据集。

数据集信息

数据集来源:

西交利物浦大学雷达小目标数据集
  • 西浦苏州工业园区校区无人机模拟雷达视角操场录制数据集 6100张
  • 西浦太仓校区雷达站录制数据集 800张
  • 西浦2023年北部赛区雷达内录 2260张
  • 西浦2023年全国赛雷达内 2060张 数据集开源地址: 链接: https://pan.baidu.com/s/1ayRI1MMw40ae4kuFZCXK_Q?pwd=XPGM 提取码: XPGM

数据集分配:

  • 数据共有14类,分别为

编号 含义 序号 编号 含义 序号
B1 蓝方一号装甲板 0 R1 红方一号装甲板 7
B2 蓝方二号装甲板 1 R2 红方二号装甲板 8
B3 蓝方三号装甲板 2 R3 红方三号装甲板 9
B4 蓝方四号装甲板 3 R4 红方四号装甲板 10
B5 蓝方五号装甲板 4 R5 红方五号装甲板 11
BO 蓝方前哨站装甲板 5 RO 红方前哨站装甲板 12
BS 蓝方哨兵装甲板 6 RS 红方哨兵装甲板 13
BB 蓝方基地飞镖打击装甲 14 RB 红方基地飞镖打击装甲板 15
  • 如果该数据集类别顺序与你的不相符, 你可以使用pre-processing_script/change_change_label.py 脚本批量修改你的标签。或者修改代码成符合你的数据集顺序。
  • 数据集按照 8:1:1的比例分配为训练集,验证集和测试集。 超参数设置:
  • 训练超参数未对yolov7/yolov8原本的超参数进行过多的调整,主要调整了数据集增强的部分。关闭了上下,左右的反转。同时修改了一些其他数据预处理参数。

训练流程

Train:

Single GPU:

python train.py --workers 8 --device 0 --batch-size 8 --data data/armor-radar.yaml --img 640 640 --cfg cfg/GMaster/yolov7_4anchor.yaml --weights '' --name yolov7 --hyp data/hyp.scratch.tiny.yaml

Muti GPUs:

python -m torch.distributed.launch --nproc_per_node 8 train.py --workers 64 --batch-size 64

Inference:

On Videos and Image:

python detect.py --weights yolov7_armor.pt --conf 0.25 --img-size 640 --source yourvideo.mp4

Export:

  • Pytorch to ONNX:
    • 导出方法与YoloV7官方方法相同,如果部署在TensorRT上,建议使用Deploy的训练方式,便于导出。
  • ONNX to OpenVINO:
    • 将ONNX文件转换为OpenVINO文件 仅需要执行以下步骤:
    • 安装OpenVINO 的Python环境下,执行
      mo --input_model /path/to/your_models.onnx --output_dir /path/to/out_dir
    • 将转换得到的xml, bin, mapping 文件放置在一个文件夹,接入推理代码。
    • 建议使用 ONNX version == 13.0 作为ONNX中间导出版本。
  • ONNX to TensorRT:
    • 安装TensorRT 的推理设备上将onnx文件转换为引擎文件,仅需执行以下步骤:
      /usr/src/tensorrt/bin/trtexec --onnx=your_models.onnx --saveEngine=your_models.FP32.trtmodel
      FP16,INT8的方法测试可用,均可使用TensorRT自带的工具实现。
    • 将转换后的引擎文件接入推理代码。
    • 建议使用 ONNX version >= 15.0 <=17.0 作为ONNX中间导出版本。
  • Pytorch to TenosrRT & OpenVINO :
    • 本算法框架是继承Yolov7的算法框架并进行二次开发,理论上可以直接从Pytorch直接导出至TensorRT或OpenVINO引擎。
    • 由于我们团队的训练和推理不在一台机器上,故没有进行相关方面的尝试,使用者可自行尝试。

效果展示

部署和推理

注意

  • anchor_free和anchor_base的推理代码并不相同。但在本份代码中,我们团队都使用了近似的命名方式和解构,便于使用者理解。
  • 使用前请检查硬件和系统配置是否满足要求。

Inference in OpenVINO (x86):

若使用anchor_base进行推理,工程中设定的anchor需要根据实际的应用场景进行人工调整,anchor修改请执行pre-processing_script/change_anchor.py

  • OpenVINO推理代码位于文件夹 C++_inference_OpenVINO_radar 中,仅做简单推理,请根据需求自行接入工程。
  • 更多使用说明,请查看C++_inference_OpenVINO_radar中的README.md文件。

Inference in TensorRT (arm & x86):

  • OpenVINO推理代码位于文件夹 C++_inference_TensorRT_radar 中,仅做简单推理,请根据需求自行接入工程。
  • anchor信息会根根据导出的anchor信息锁定,无法修改,请提前人工设定好anchor。
  • 更多使用说明,请查看C++_inference_TensorRT_radar中的README.md文件。

总结

  • 该项目针对RMUC2023赛季,感谢大家,由于本人已经退役,本项目不在维护。
  • 如果你对该项目有兴趣,可以联系我们团队。

联系方式