Cannol / sv_dataset_tools

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

卫星视频数据集工具包

2021.6.14 更新 Version 2.0: 加入了更多对数据和标注结果的操作,能够更好的修正数据集,甚至可以进行小规模的标注

环境需求:

  • python3,建议3.6以上
  • opencv3.5以上,建议4.5
  • tkinter
  • numpy
  • logging
  • pyyaml

run_videoplayer.py

主要功能有:

  1. 查看已经标注好的序列的多边形框和矩形框
  2. 可修改多边形框,自动创建空间连续补间
  3. 可修改对某帧的poly重新绘制
  4. 可对帧属性进行修改
  5. 可对序列属性进行修改
  6. 对多边形的修改支持旋转、平移、单点变换操作
  7. 增加了可视化效果的显示,更容易理解使用
  8. 序列属性支持一键自动化生成
  9. 所有参数被放置在.yaml文件中,易于修改

1. 数据集结构

工具文件通过数据集管理器对内容进行验证和读取,因此,需要先配置好数据集相关的路径,以及文件结构。

  • DataRoot: 数据集的根目录,数据集根目录下存放着VideoList
  • VideoList: 要读取的视频列表,一个视频中由若干序列组成

####sequences文件夹介绍:

主要用来存放视频图像序列,一个图像序列是一个文件夹,文件夹名称为序列id

annotations文件夹介绍:

  • .abs: 被跟踪目标以及序列的摘要信息,json文件存储,可直接用bases.abs_file中的Abstract类读取内容
  • .attr: 序列的属性信息(10个属性,逗号分隔开)
  • .poly: 多边形信息(由一系列的点集组成,两两一组)
  • .rect: 多边形的紧致外接矩形框 (x,y,w,h)
  • .state: 帧属性信息

2. 使用方法

A. 修改关键路径和配置

  1. 配置数据集路径,修改configs下的dataset.yaml文件:
    • DataRoot:修改为你的数据集所在根路径
    • VideoList:修改为打算加载的视频
  2. 配置VideoPlayer路径,修改configs下的videoplayer.yaml文件
    • ScaleStart: 10.0 # 指定初始显示比例,10代表把原图放大10倍显示
    • SearchRange: 2.5 # 显示的搜索范围,数据集的规则确定的,不改
    • WinHeight: 960 # 窗体的高度
    • WinWidth: 1024 # 窗体的宽度
    • Attrs: 'ch' # 选择显示的属性的语言,ch中文,en英文
    • SameNext: true # 是否把设置继承到下一个播放,如果是true,则会保留前一个视频的设置(是否居中显示,是否处于播放状态,尺度信息等)
    • CtrlKey: 9 # 设置Ctrl按键的响应数字
    • EscKey: 27 # 设置ESC按键的响应数字
    • EnterKey: 13 # 设置回车按键的响应数字
    • Backspace: 8 # 设置退格按键的响应数字

注意:下面的4个按键设置可以通过执行run_videoplayer.py中的test_keys()函数来获取

B. 输入你要打开的数据

==== 名称用法 =====

播放名称格式统一为:<视频id>.<序列id>

run_video('*.*')  # 代表所有数据
run_video('01.*')  # 代表所有01视频下的序列
run_video('*.000000')  # 代表所有视频下的000000序列

play_list = ['01.000000', '02.000001']
run_video(play_list)  # 也可以自行创建列表来指定播放哪些序列

命令行中执行python3 run_videoplayer.py即可

C. 开始使用

注意:整个交互采用键盘快捷键+鼠标左键配合完成,修改模式和标注模式不要滚动鼠标滚轮

  1. 快捷键 - 浏览模式和修改模式下共有的快捷键:

    • 下一序列(b)/上一序列(n)
    • 逆向播放(o)/正向播放(p)
    • 向前一帧(a)/向后一帧(s)
    • 缩小图像(z)/放大图像(x):由于图像是会被缩放到显示的窗口尺寸,因此按x放大图像时实际上是提高了图像的分辨率,字会变小,框会变细,放大以后图像更清晰;按z同理。
    • 退出程序(q):退出后,需要在命令行中再次确认输入Y或N来决定是否保存修改
    • 目标居中特写模式(空格):使得目标自动放置于画面正中间,方便浏览细节(再按一次空格取消居中)
    • 标注当前帧的属性为INV(1),OCC(2),NOR(0):具体标注方式见4
    • 显示或隐藏目标框(h):目标框有时候会遮挡部分边界,影响对属性的标注,因此可以通过此按键使得视野更清晰,每按一次就会使得目标框显示或不显示
    • 进入修改模式(e):进入该模式后,再次按e就会保存该段标注内容并返回浏览模式
    • 进入重绘模式(v):进入该模式后,由于该模式较为特殊,以上快捷键均失效,直到退出重绘模式
  2. 快捷键 - 修改模式下特有的快捷键

    • 保存并退出修改模式(e)
    • 不保存直接退出修改模式(ESC)
    • 整体旋转框,逆时针([),顺时针(])
    • 恢复原始形状(r):将会将多边形重置回进入修改模式之前的样子
    • 显示该帧原本的标注框(`):按键位于数字键1左边,可以控制是否显示某帧下原本的标注框,方便进行参考
    • 鼠标操作:点选拖动可以调整边框形状,按住Ctrl拖动,可以整体移动多边形位置
  3. 快捷键 - 重绘模式下特有的快捷键

    • 保存并退出重绘模式(Enter回车)
    • 不保存直接退出(ESC)
    • 删掉最后一个顶点(退格键Backspace)

    注意:重绘模式下,仅有三个快捷键可以使用,并且仅能重新绘制当前帧的目标多边形,保存并退出后才能进行修改等其他操作。

  4. 帧属性标注方法:

    1. 在某一帧t1,按数字键1,2,0中的一个,进入对应类别的标注模式,进入标注模式后,在图像上的帧属性旁边会显示一个星号,表示当前处在标注模式下
    2. 前进或后退到你需要停止标注的帧t2,再次按下数字键中1,2,0中的一个
    3. 如果第一步和第二步按下的是相同的数字,那么会结束标注模式,并保存从t1~t2区间的标签结果,然后退出标注模式;如果第一步和第二步按下的是不同的数字,首先会保存t1~t2区间的标签结果,然后会以t2为起始位置开始新的标注

About


Languages

Language:Python 100.0%