RoboMaster智能数据集标注工具

Overview

RoboMaster智能数据集标注工具

基于[Qt5+OpenCV(with OpenVINO)],用于标注RoboMaster装甲板4个顶点的位置,灯条颜色,以及贴纸类型。

项目介绍

基于深度学习的自瞄识别算法逐渐走进RoboMaster的赛场。相比于传统视觉识别算法,基于深度学习的算法具有更强的鲁棒性和适应性,受到了不少队伍的青睐。

然而常规深度学习的目标检测算法只能识别出目标的外接矩形,这给后续算法中的单目测距带来了困难。

本项目希望能够建立一个便利的4点数据集标注工具,可以快速而准确的完成数据集的制作。

主要功能亮点

  • 将标准装甲板贴纸图像叠加到图片上,便于观察选取结果。
  • 选点时局部放大,便于观察选点位置。
  • 智能预识别,减轻人力。(需要带OpenVINO支持的OpenCV)
  • 图像的缩放与拖动。(TODO)

TODO:目前智能预识别模型不正常识别基地贴纸,且大目标识别效果较差。有待进一步更新。

目前已知的BUG

  • 图片文件名中不要包含点,否则会导致文件后缀名识别错误(程序会将第一个点后面的内容都当成后缀名)
  • openvino转化后模型在不同版本间会报错,目前能正常运行的版本为openvino-2021.2.200

程序界面图

由于github图像缩放,可能导致看不太清楚,可以点击查看大图。

demo

编译运行

支持使用cmake进行编译。

cmake编译方法:

mkdir build
cd build
cmake ..
make

Qt5.15 & Qt5.12上编译成功,低版本Qt不确定能否正常编译运行。

OpenCV With OpenVINO的安装方法:官网链接,安装OpenVINO SDK包,其中自带OpenCV With OpenVINO。

使用方法

  • 首先选择图片文件夹目录,程序会自动查找目录下所有图片文件。(jpg、jpeg、png)
  • 点击smart自动预标注当前图片。或点击Add Label开始标注一个装甲板。
  • 按照装甲板左侧灯条上端、左侧灯条下端、右侧灯条下端、右侧灯条上端的顺序,依次点击。
  • 双击右上方的当前目标项,选择当前目标的类别。
  • 根据需求,微调4个点的位置,使得叠加的标准装甲板边缘和实际图像中的装甲板边缘对齐。(标准装甲板边缘默认图像没有畸变,追求标注精度的话,需要对数据集中的图片进行去畸变)。
  • 点击保存或勾选自动保存完成当前图片的标注。

装甲板类别命名与类别编号

贴纸↓颜色→ B(蓝色) R(红色) N(熄灭) P(紫色)
G(哨兵) 0 7 14 21
1(一号) 1 8 15 22
2(二号) 2 9 16 23
3(三号) 3 10 17 24
4(四号) 4 11 18 25
5(五号) 5 12 19 26
B(基地) 6 13 20 27

数据集文件格式

标定后的数据集文件和图片位于同一文件夹,将图片后缀名修改为txt即为数据集文件。

txt文件中每一行代表一个目标,如果一个文件有多行,则说明对应图片内有多个目标。

一行共计9个数字,以空格分割。从左到右依次为:

  • 装甲板类别编号
  • 左上角x坐标
  • 左上角y坐标
  • 左下角x坐标
  • 左下角y坐标
  • 右下角x坐标
  • 右下角y坐标
  • 右上角x坐标
  • 右上角y坐标

如果觉得该项目对你有帮助请点一个Star:)

Issues
  • 一些妈见打功能

    一些妈见打功能

    1. 复制粘贴:选中box(高亮状态)后Ctrl+C复制,Ctrl+V粘贴
    2. 切换图像位置不动:左下角打钩
    3. 插值生成box:在需要加入box的图像点左边的按钮或者按键盘I,自动跳转到上一张,选中要用于插值的box后,再次按键盘I,选择另一个用于插值的box,最后按一次键盘I回到一开始的图像并加入插值生成的box

    P.S. 这是我第一次用Qt,所以有些东西是真的不知道怎样写比较优雅 ~~(比如本来我还加了一个上下方向键选择box的功能,后来发现除非改接口,否则在窗口对象里是不能直接读到当前选中box的,所以这玩意很难跟插值联动)~~,希望大佬多多指教!

    opened by shirok1 4
  • fix(action&smart): add action for build and and smart all feat

    fix(action&smart): add action for build and and smart all feat

    Fix

    • 增加自动编译打包(Windows)

    Feat

    • 增加自动全部标注功能(包括ui新增按钮),但是测试 0.7beta 版本 int8 很快但标注效果不佳且非opencv无法使用
    • 使用 QCoreApplication::processEvents 避免卡顿

    Others

    • 由于action中msvc编译常量函数时报错故pr中取消掉了这一操作
    • 取消 Cmake 中的部分版本限制(为了action可以正常工作)
    opened by CALMorACT 0
Releases(v0.7.1b)
  • v0.7.1b(Oct 3, 2021)

  • v0.8b(Oct 3, 2021)

    本次更新内容如下

    • 合并川大老哥的pr
    • 新增一键标注所有图片的功能。(暂不支持中途停止及恢复)

    目前已知的BUG

    • 图片文件名中不要包含点,否则会导致文件后缀名识别错误(程序会将第一个点后面的内容都当成后缀名)。

    AppImage预编译支持Ubuntu18.04及以上系统。 win64的openvino版本需要自行安装环境并配置环境变量。

    Source code(tar.gz)
    Source code(zip)
    5.12.10--win64_msvc2017_64-opencv.zip(85.42 MB)
    5.12.10--win64_msvc2017_64-openvino.zip(57.39 MB)
    5.15.2--win64_msvc2019_64-opencv.zip(85.17 MB)
    5.15.2--win64_msvc2019_64-openvino.zip(57.14 MB)
    LabelRoboMaster-x86_64.AppImage(93.13 MB)
  • v0.7b(Oct 1, 2021)

    本次更新内容如下

    • 新增OpenVINO-Int8量化模型,并默认使用。
    • 修改窗口左下角的提示信息。

    目前已知的BUG

    • 图片文件名中不要包含点,否则会导致文件后缀名识别错误(程序会将第一个点后面的内容都当成后缀名)。
    • fp32模型的推理有问题,建议使用v0.7.1b版本

    AppImage预编译支持Ubuntu18.04及以上系统。

    Source code(tar.gz)
    Source code(zip)
    LabelRoboMaster-x86_64.AppImage(92.57 MB)
  • v0.6b(Aug 24, 2021)

    本次更新内容如下

    • 添加新的装甲板种类以及对应svg文件
    • 更新智能标注模型以适配新的装甲板种类
    • 支持右键按住拖动、鼠标滚轮缩放、右键双击恢复默认视图
    • 标注框会根据标签种类不同而变色。蓝色装甲板为蓝色边框,红色装甲板为红色边框,熄灭装甲板为绿色边框,紫色装甲板为青色边框

    目前已知的BUG

    • 图片文件名中不要包含点,否则会导致文件后缀名识别错误(程序会将第一个点后面的内容都当成后缀名)

    AppImage预编译支持Ubuntu18及以上系统。其他系统未经过测试。

    Source code(tar.gz)
    Source code(zip)
    LabelRoboMaster-x86_64.AppImage(87.77 MB)
  • v0.5b(Jun 1, 2021)

    本次更新内容如下

    • 改用onnx格式文件提升兼容性
    • 修复定位点不够准确的bug
    • openvino环境加载失败会改用默认opencv-dnn推理方式。

    已知的BUGS

    • 如果自己电脑上安装了openvino,使用AppImage时不要激活openvino环境变量,否则AppImage中的动态库可能访问到外部库,从而导致无法运行。
    • 图片文件名中不要包含点,否则会导致文件后缀名识别错误(程序会将第一个点后面的内容都当成后缀名)
    Source code(tar.gz)
    Source code(zip)
    LabelRoboMaster-x86_64.AppImage(96.56 MB)
  • v0.4.1b(May 9, 2021)

    本次更新内容如下

    • 修复了部分图像分辨率下,预标注程序无法正常运行的bug
    • AppImage预编译文件开启编译优化

    已知的BUGS

    • 如果自己电脑上安装了openvino,使用AppImage时不要激活openvino环境变量,否则AppImage中的动态库可能访问到外部库,从而导致无法运行。
    • 图片文件名中不要包含点,否则会导致文件后缀名识别错误(程序会将第一个点后面的内容都当成后缀名)
    Source code(tar.gz)
    Source code(zip)
    LabelRoboMaster-x86_64.AppImage(108.49 MB)
  • v0.4b(May 8, 2021)

Owner
xinyang
xinyang