视频标注软件Darklabel⽤法指南
前⾔:这是⼀个轻量的视频标注软件,相⽐于ViTBAT等软件⽽⾔,不需要安装就可以使⽤。但是由于是⼀个韩国⼈开发的,所以相关的说明不太够,所以这⾥进⾏⼀个darklabel软件的使⽤指南。之后会在这个视频标注的基础上进⾏⼀些脚本的编制,有利于ReID数据集、⽬标检测数据集和MOT数据集的快速构建
⽂章⽬录
1. 官⽅相关说明
它是⼀个实⽤程序,可以沿着视频(avi,mpg)或图像列表中对象的矩形边界框以各种格式标记和保存。 该程序可⽤于创建⽤于对象识别或图像跟踪⽬的的数据库。最⼤的功能是快速响应,便捷的界⾯以及减少⼯作量的便捷 功能(⾃动跟踪,使⽤插值进⾏标记,⾃动ID标记)。 任何⼈都可以将其⽤于⾮商业⽬的,如果您有任何问题或建议,请在评论中让我知道。最初是为我⾃⼰创建的,最近我 花了些时间来改进该程序(ver1.3)。我们已经改进了难以看清的细微之处,但是改善了程序的质量,执⾏的稳定性 和未知性。
软件⽰意:
⼯具栏在左侧:
2. 主要功能和特点
⽀持各种格式的视频(avi,mpg等)和图像列表(jpg,bmp,png等)多框设置和标签设置⽀持
⽀持对象识别和图像跟踪中使⽤的各种数据格式
使⽤图像跟踪器⾃动标记(通过跟踪标记)
⽀持使⽤插值功能的间隔标签exists的用法
⾃动标记功能,可按类别⾃动为每个对象分配唯⼀的ID
3. 主要⽤法
3.1 ⿏标/键盘界⾯(Shift / Ctrl = Shift或Ctrl)
⿏标拖动:创建⼀个框
Shift / Ctrl +拖动:编辑框
双击:选择/取消相同ID对象的轨迹
右键单击:删除所有选定的对象轨迹(删除部分)
右键单击:删除最近创建的框(如果未选择任何轨迹)
Shift / Ctrl +右键单击(特定框):仅删除所选框
Shift / Ctrl +右键单击(空):删除当前屏幕上的所有框
Shift / Ctrl +双击(特定框):修改所选框的标签
Shift / Ctrl +双击(轨迹):在所选轨迹上批量更改标签
箭头键/ PgUp / PgDn / Home / End:移动视频帧(图像)
Enter键:使⽤图像跟踪功能⾃动⽣成框(通过跟踪进⾏标记)
3.2 指定标签和ID
⽆标签:创建未标签的框
框标签:⽤户指定的标签(例如,⼈类)
box标签+⾃动编号:⾃动编号⾃定义标签(例如human0,human1等)
如果指定了id,则可以选择/编辑轨迹单位对象
popuplabeleditor:注册标签列表窗⼝的弹出窗⼝(已在⽂件中注册)
如果在弹出窗⼝中按快捷键(1〜9),则会⾃动输⼊标签。
Label + id显⽰在屏幕上,但在内部,标签和ID分开。
当另存为gt数据时,选择仅标签格式以保存可见标签(标签+ id)
另存为gt数据时,如果选择了标签和ID分类格式,则标签和ID将分开保存。
3.3 追踪功能
通过使⽤图像跟踪功能设置下⼀帧的框(分配相同的ID /标签)
多达100个同时跟踪
tracker1(稳健)算法:长时间跟踪⽬标
tracker2(准确)算法:准确跟踪⽬标(例如汽车)
输⼊键/下⼀步和预测按钮
注意!使⽤跟踪时,下⼀帧上的原始框消失
建议使⽤tracker2,效果很好,⼏乎不⽤⼈⼯调整
3.4 插值功能
跟踪功能⽅便,但问题不准确
在视频部分按对象标记时使⽤
开始插补按钮:开始插补功能
在⽬标对象的轨迹的⼀半处绘制⼀个⽅框(航路点的种类)
航路点框为紫⾊,插值框为⿊⾊。
更正插值错误的部分(Shift / Ctrl +拖动),添加任意数量的航路点(不考虑顺序)/删除
结束插补按钮:将⼯作结束和⼯作轨迹注册为数据
3.5 导⼊视频/视频并在帧之间移动
打开视频⽂件:打开视频⽂件(avi,mpg,mp4,wmv,mov,…)
打开图像⽬录:打开⽂件夹中的所有图像(jpg,bmp,png等)
在视频帧之间移动:键盘→,←,PgUp,PgDn,Home,End,滑块控制
3.6 保存并调出作业数据
加载GT:以所选格式加载地⾯真相⽂件。
保存GT:以所选数据格式保存到⽬前为⽌已获得的结果。
导⼊数据时,需要选择与实际数据⽂件匹配的格式,但是在保存数据时,可以将其保存为所需的任何格式。
在图像列表中⼯作时,使⽤帧号(frame#)格式,按⽂件名排序时的图像顺序将变为帧号(对于诸如00000.jpg,00002.jpg等的列表很有⽤)
保存设置:保存当前选择的数据格式和选项(运⾏程序时⾃动还原)
3.7 数据格式(语法)
|:换⾏
[]:重复短语
frame#:帧号(视频的帧号,图像列表中的图像顺序)
iname:图像⽂件名(仅在使⽤图像列表时有效)
标签:标签
id:对象的唯⼀ID
n:在图像上设置的边界矩形的数量
x,y:边界矩形的左侧和顶部位置
w,h:边界矩形的宽度和⾼度
cx,cy:边界矩形的中⼼坐标
x1,y1,x2,y2:边界矩形的左上,右下位置
4. 举栗⼦
1. 选择open video file,选择⼀个视频打开,最好不要太长
2. 左右拖动⼀下滑块,看⼀下准备标注的对象
3. 如果标注视频选择左侧⼯具栏中第三⾏,下拉到frame开头的内容⽐如:frame#, n, [id, x1,y1,x2,y2,label],意思是左上⾓坐标和
右下⾓坐标。
4. 然后右侧框中进⾏画框,然后可以采⽤以下⼏种⽅法继续标注
1. 画框以后,长按Enter键,就会采⽤Tracker2中的模式进⾏预测,效果不多
2. 先点击begin interpolation按钮,然后画框,然后按左右键对视频帧进⾏移动,然后再画⼀个关键框,完成后点击End
interpolation按钮结束(这种模式可以进⾏通过插值进⾏预测中间帧)
5. 最后选择合适的标注模型,点击Save GT,保存为txt⽂件
5. ffmpeg切割视频
ffmpeg  -i C:/plutopr.mp4 -acodec copy
-vf scale=1280:720
-ss 00:00:10 -t 15 C:/cutout1.mp4 -y
1. -ss time_off set the start time offset 设置从视频的哪个时间点开始截取,上⽂从视频的第10s开始截取
2. -to 截到视频的哪个时间点结束。上⽂到视频的第15s结束。截出的视频共5s.如果⽤-t 表⽰截取多长的时间如 上⽂-to 换位-t则是截
取从视频的第10s开始,截取15s时长的视频。即截出来的视频共15s.
3. -vcodec copy表⽰使⽤跟原视频⼀样的视频编解码器。
4. -acodec copy表⽰使⽤跟原视频⼀样的⾳频编解码器。
5. -i 表⽰源视频⽂件
6. -y 表⽰如果输出⽂件已存在则覆盖。
7. -vf 设置视频分辨率
6. 软件下载
在GiantPandaCV后台回复关键字“darklabel”
⽂件名:DarkLabel1.3_part1.zip
7. ReID数据集配置代码
import os
import shutil
import cv2
def preprocessVideo(video_path):
if not ists(video_frame_save_path):
os.mkdir(video_frame_save_path)
vidcap = cv2.VideoCapture(video_path)
(cap, frame)= ad()
height = frame.shape[0]
width = frame.shape[1]
cnt_frame =0
while(cap):
cv2.imwrite(
os.path.join(video_frame_save_path,"frame_%d.jpg"%(cnt_frame)),
frame)
cnt_frame +=1
(cap, frame)= ad()
return width, height
def postprocess(video_frame_save_path):
if ists(video_frame_save_path):
<(video_frame_save_path)
def extractVideoImgs(frame, video_frame_save_path, coords):
x1, y1, x2, y2 = coords
# get image from save path
img = cv2.imread(
os.path.join(video_frame_save_path,"frame_%d.jpg"%(frame)))
# crop
save_img = img[y1:y2, x1:x2]
return save_img

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。