@Matrixzhu
2020-08-03T17:23:26.000000Z
字数 3754
阅读 4741
- 1、标注视频
- 2、按帧率采样
- 3、单个框多类标签
- 4、相邻帧之间框关联(设置box ID,同一个人物同一个ID)
- 5、对一段视频内容进行整体的标注,不必标框。最好可以选取一个时间段并播放, 以便人为确定行为的种类。
- VOTT: 目前倾向使用此工具对视频帧进行标框。该工具操作流畅,可以设置采样关键帧,是唯一具有
3、一框多标签
标注能力的工具。- Ultimatelabeling: 唯一具有
4、标注框关联性
功能的工具,但没有一框多标,同时使用卡顿。- Vatic: 不推荐使用,基本只具有上述标注视频的功能,估计是早期目标识别比较常用的工具
- ELAN: 完全符合上述需求的最后一点:对于视频内容整体标注的需求。但不具有标框的功能。
目前已调研的工具还没有一种可以囊括上述的所有需求。当然这毫不意外。
对于视频的标框,建议使用VoTT。因为我们的行为识别基本上只关注一个人的行为,所以4、相邻帧之间框关联
显得没有这么重要,但VoTT的独有功能3、单个框多类标签
就会很需要。同时VoTT的界面设计方便快速大量地标注。
对于5、视频整体内容的标注
毫无疑问使用ELAN
github 有详细的使用说明
下载链接 建议直接下载可执行档
我们的服务器上设置 x11 forwarding后可以直接 source ~/.bashrc
sudo snap run vott
选择需要的版本下载
可实现功能:
标注视频
单个框多类标签
- 设置采样帧率
- 一次导入文件夹中的所有视频并随时切换, Ultimatelabeling 也有类似功能但只能调用一个文件夹,vatic只能一个视频创建一个项目。
不能实现的功能
- 相邻帧之间框关联(设置box ID)
- source connection - 导入图片的路径
- target connection - 输出图片的位置
- video settngs - 设置采样率(每秒采多少帧)
- Targets - 设置标签enter设置下一个
标记一个视频很像标记一系列图像。当从左边选择一个视频,它将开始自动播放,播放器上有几个控制,如下图所示:
除了正常的视频播放控制,还有两对额外的按钮。在左侧,有previous和next框架按钮。单击这些将暂停视频,并根据项目设置移动到下一个适当的帧。例如,如果项目设置的帧提取率为1,这些按钮将导致视频向后或向前移动1秒,而如果帧提取率为10,视频将向后或向前移动0.1秒。
在右边,有上一个和下一个标记的框架按钮。如果存在已标记的帧,则单击这些将暂停视频并移动到具有先前标记区域的下一个或上一个帧。彩色线也将沿着视频的时间轴可见。这些表示已经访问过的视频帧。黄线表示只访问过的框架,而绿线表示访问过和标记过的框架。可以单击彩色线条来快速导航到指定的框架。时间轴还可以用来手动将视频刷洗到任意点,不过帧提取率的项目设置始终是遵守的。暂停时,视频将根据此项目设置移动到最近的帧。这样,可以为已知包含少量标记项的视频片断设置非常低的帧抽取率(如每秒1帧),并为更高的帧抽取率(如每秒30帧)以允许细粒度控制。在播放视频时不可能标记和绘制区域。
此外右边的标注栏是支持多选的,选中框后点一下标签添加再点一下同一个取消,选不同标签添加第二个。 正上方有复制标注按钮,当两帧之间变化不大时可以直接把上一帧的结果复制过来。点击博士帽按钮会自动标注框,之后人工添加标签即可。
支持的输出格式如下
- azure custom vision service
- TensorFlow (Pascal VOC and TFRecords)
- VoTT (generic JSON schema)
- Comma Separated Values (CSV)
单击左侧导航中的Export(箭头)图标。选择适当的导出提供者以及要导出的格式。分割成测试集和训练集的百分比也可以在这里调整。.
github
1.1 功能实现情况:
可实现:
- 逐帧标注视频
- 相邻帧之间框关联(设置box ID)
不可实现:
- 单个框多类标签
- 按帧率采样
- 设置 x11 forwarding
- cd /hdd01/zhuhongyi/UltimateLabeling
- source ~/.bashrc
- python -m ultimatelabeling.main
- 在服务器中把视频文档复制到 /hdd01/zhuhongyi/UltimateLabeling/data 即可载入。 结果会显示在界面的左边。
- 在界面中左上角
file->export
输出label.csv 结果到/hdd01/zhuhongyi/UltimateLabeling/output- 左右光标可以切换帧,ctrl+left 可以框选, 右下角
Ifno
栏位 class选择类别, istance ID选编号,Edit
提供修改类别栏
- 一行代表一个框的内容
- column1:帧编号(从0开始)column2:框标签编号 column3:框的ID(用于框关联帧) column4~7:'x','y','w','h' column8:内置算法输出的score
可实现功能:
- 标注视屏
不可实现功能
- 单个框多个标签
- 关联帧标签
- 精准控制编辑哪一帧
- Demon 可直接浏览器输入http://10.0.10.56:8111/?id=1&hitId=offline
- 文件项目配置可以进入服务器
docker start 231369fb87a9
(现在应该可以不用)docker attach 231369fb87a9
启动vaticcd ~/vatic
./startup.sh
退出的时候用ctrl+p+q
- 加载视频和导出结果链接
- github 也是使用指南和上一条差不多
1、首先我们需要对视频做取帧操作,命令行如下(此处的路径要先创建):
turkic extract /path/to/video.mp4 /path/to/output/directory1
--width 1000 --height 1000 #也可以换成 -- no-resize
2、然后我们将导出的帧转换成Vatic的格式:(这一步倒不是必须的)
turkic formatframes /path/to/output/directory1 /path/to/output/directory2
3、导入视频
sudo turkic load name path/to/output/directory2 Label1 ~Attr1A ~Attr1B
Label2 ~Attr2A ~Attr2B ~Attr2C Label3 --offline
name是数据库的名字自己取,也是你之后导出视频时需要使用的名字(最好每个视频对应一个)。 Labelx代表你要标记的类别,而Attrx是你标记类别的属性,作者说至少需要一个。最后的–offline参数,离线操作的话是必须要带上的,否则无法进行之后的操作。
4、发布视频
turkic publish --offline
生成以下结果
http://localhost/?id=1&hitId=offline
http://localhost/?id=2&hitId=offline
http://localhost/?id=3&hitId=offline
http://localhost/?id=4&hitId=offline
http://localhost/?id=5&hitId=offline
在浏览器中输入域名(e.g. http://10.0.10.56;8111/?id=1&hitId=offline)
5、导出结果
turkic dump identifier -o /output --pascal --pascal-skip 1
大致使用如上,其他细节可参考3.2.1中的链接
具体内容可参考图中右上角的instructions按钮。 点击右上角的new object可以生成一个框选的任务,在图中框完后在右边选框中勾选标签。如图中生成的playphone2框还可以选择outside of the view frame(不显示)occluded or obsreucted(遮挡)
进入docker容器后turkic相关的指令都在~/vatic目录下。docker和本地传文件
- 对视频取时间段,并附上标注
- 按秒、按帧索引视频时间点,并播放选取的时间段。
未完待续