Git Product home page Git Product logo

rm_buffshot's Introduction

2023 RoboMaster XJTLU Armor Keypoints Detection(C++ Openvino inference)

Team: 动云科技GMaster战队

Author: 视觉组 张昱轩 zR

功能介绍

本代码用于将区域赛视觉标定板目标检测和装甲板四点关键点检测神经网络模型权重文件部署至 C++ Openvino环境。

DEMO演示代码架构

├── CMakeLists.txt
├── demo_kpt.cpp
├── yolov7_kpt.cpp
├── yolov7_kpt.h
└── demo_weight

代码解释和使用说明:

demo_kpt.cpp:

主代码,将你测试的视频的绝对路径填写至 VIDEO_PATH 即可。

yolov7_kpt.h:

包含了头文件和所有的宏定义函数,其中对应的含义如下:

  • VIDEOS 是否显示推理视频,默认不启动。如果使用则取消注释。
  • IMG_SIZE 图像推理大小,取决与你的模型,并需要修改ANCHOR的具体值。默认值为416
  • NMS_THRESHOLD nms阈值,默认值 0.2
  • CONF_THRESHOLD 置信度阈值,默认值 0.7
  • CONF_REMAIN 置信度保留度,默认值 0.25
  • ANCHOR ANCHOR的数量,默认值为3。不建议修改,如果修改,需要对应的修改推理的结构。
  • DEVICE 推理设备,默认值为CPU
  • DETECT_MODE 检测模式选择,有三种模式可选,分别是:
    • ARMOR 装甲板四点模型检测,请将DETECT_MODE设置为0
    • WIN 能量机关五点模型检测,请将DETECT_MODE设置为1
    • BOARD 视觉识别板目标检测,请将DETECT_MODE设置为2
      上述不同模式对应的应用场景,因此,不同类别中的CLS_NUM,KPT_NUM值(类别数量和关键点数量)不同。 不同模式所对应的权重文件不同。MODEL_PATH是推理网络的模型位置,在这里放入 .xml.onnx量化权重文件。

yolov7_kpt.cpp:

包含了所有的推理代码,部分函数的解释如下:
vector<Object_result> work 推理主函数。

API接口:

返回值类型为自定义的Object_result结构体,包含如下信息:
struct Object_result
├── <int> label 识别的标签类别。
├── <float> prob 识别的置信度。
├── <rect> bbox 识别的bbox信息,包含左上角的坐标和宽高
└── vector<float> kpt 识别的关键点信息,长度为8,分别是左上,左下,右下,右上四个关键点的坐标。

类接口:

类名: yolo_kpt

demo_weight:

包含一份针对2023年官方能量机关红色待激活识别的代码。

推理样例展示

图片展示:
输出展示:
若选择的推理模式为 ARMOR 类别,将会包含 标签,BBOX,关键点坐标 数据。输出的图片将包含 KPT_NUM 个的绿色关键点。样例如下:

label:10
bbox:[104 x 81 from (132, 355)]
kpt:[154.106, 380.611] [156.97, 401.911] [223.415, 397.036] [220.275, 376.454]

若选择的推理模式为 BOARD 类别,将会包含 标签,BBOX 数据。同时,输出的图片将不会有关键点。样例如下:

label:1
bbox:[122 x 433 from (192, 155)]

若选择的推理模式为 WIN 类别,将会在 ARMOR 的基础上额外输出一个打击板中心坐标,逻辑如下

  • 如果能量机关装甲板四个点都检测到,直接取四个点中点
  • 如果左上,右下 / 左下, 有右上两个点检测到,另外两个点缺失一个,则取这两个检测到的点中点。
  • 如果不满足上面两个情况,取bbox中点。 经过测试,该方案能保证,只要能检测到目标板,一定能精确的检测到打击到目标板中心。

推理代码测试平台

硬件设备:
CPU: Inter NUC 11th 11350H
GPU: Inter NUC 核显 
Memory: 8GB
系统配置:
OS: Ubuntu 20.04.5
Kernel: 5.15.0
Openvino: 2022.3
gcc/g++ : 9.4.0
cmake : 3.16.3
Python : 3.8.5
ONNX : 15
OpenCV : 4.6.0

注意: 该代码在上述指定版本以下的版本可能无法运行。 例如在OpenCV 4.2.2下没有cv::dnn::SoftNMS 方法,请更换为cv::dnn::NMS

rm_buffshot's People

Contributors

the-a-w avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.