视频数据集标注方法:使用VoTT进行视频数据集标注

By 自牧君 2021/12/04

一、 VoTT

1.1 简介

软件下载地址:www.github.com/Microsoft/VoTT/releases

VoTT是微软发布的用于图像目标检测的标注工具,它是基于JavaScript开发的,因此可以跨Windows和Linux平台运行,并且支持从图片和视频读取。此外,其还提供了基于CNTK训练的Faster-RCNN模型进行自动标注然后人工矫正的方式,这样大大减轻了标注所需的工作量。其分为V1和V2两个版本, 目前V1仅用于BUG修复,不再添加新功能支持, 因此建议直接用V2.

1.2 安装

安装好后,软件主界面如下:

1.3 准备工作

(1\mathbf{1}1) 建立源文件夹 “source”:用来存放需要标注的视频。

(2\mathbf{2}2) 建立目标文件夹 “target”:存放转化过程中的结果。

(3\mathbf{3}3) 建立目标文件夹 “results”:存放最终标注的结果。

1.4 创建工程

(1\mathbf{1}1) 点击 New Project 新建工程:

(2\mathbf{2}2) 填写工程信息。第一项填写工程名称,第二项一般不需改动。

(3\mathbf{3}3) 指定源文件夹source。 首先点击 “Add Connection”.

① 在 “Provider” 项下拉菜单选择 “Local File System”.

② 在 “Folder Path” 选项下,选择刚刚创建的源文件夹 “source”.

③ 选择完成后,点击 “Save Connection” 即可完成源文件夹指定。

(4\mathbf{4}4) 指定目标文件夹target。步骤同上。

(5\mathbf{5}5) Description 对工程的描述,为可选项。

Video Settings* 下的 “Frame Extraction Rate” 为视频帧率,默认是15帧,根据实际需求去改动。

(6\mathbf{6}6) 最后是类别数,可以稍后再添加。这里我稍后再添加。最后点击 “Save Project” 新建工程。

1.5 标注

(1\mathbf{1}1) 进入工程后的界面如下:

(2\mathbf{2}2) 选取矩形标注框。

(3\mathbf{3}3) 接下来进行逐帧标注。

① 用矩形标注框框选目标;

② 点击右上角的 “加号” 添加标签;

③ 输入标签名称 “coscinodiscus” (圆筛藻);

④ 回车键确定。

① 标注框选中目标后,点击右边的绿色标签;

② 矩形标注框变成和右边标签相同颜色(绿色) 时即标注成功。

(4\mathbf{4}4​) 点击下图所示的按钮,或着按键盘上的右箭头方向键,切换下一帧继续标注:

① 连续标注5~8帧,即可以开始自动标注。

1.6 自动标注

(1\mathbf{1}1) 左边菜单栏,点击学士帽图标,进行自动标注的设置。

(2\mathbf{2}2) 自动标注设置的菜单页面如下:

① 学习模型。一般保持默认即可。

② 勾选 “Auto Detect” 即可开始自动学习标注。

③ 保存自动标注设置。

(3\mathbf{3}3) 开始自动学习标注。

(4\mathbf{4}4) 把视频进度条手动拉到开始位置,加载学习模型:

(5\mathbf{5}5) 自动学习标注有一定的瑕疵,需要手动检查纠正。

标注框变成正确标签的颜色 (这里是绿色) 即可。

(6\mathbf{6}6) 不断重复,直到标注完为止。

1.7 保存

(1\mathbf{1}1) 标注完成后,点击保存。

(2\mathbf{2}2) 设置导出格式。基本保持默认即可。

“VoTT JSON” 选项下的 “Asset State” 项:

第一个选项是:输出全部图像。

第二个选项是:只输出当前所关联的图像 (默认选这个)。

第三个选项是:只输出当前所标记的图像。

(3\mathbf{3}3) 导出结果。

结果将会保存到 “target” 文件夹中:

1.8 矩形标注框的显示

(1\mathbf{1}1) 这一步用 python 代码来完成,代码如下:

注意:

① 要提前安装好以下库:

pip install opencv-python --user
pip install opencv-contrib-python --user
pip install bounding_box --user

② 下列代码中,有注释的那一行需要根据自己文件的实际路径、实际文件名修改。

import json
import cv2
import os
from bounding_box import bounding_box as bbox_plotImg_Dir = 'F:\\videoDatasetTag\\target\\vott-json-export'           # 这里填写target文件夹中vott-json-export文件夹的路径
Save_Dir = 'F:\\videoDatasetTag\\results'                           # 这里填写results文件夹路径
Draw_Tags = ['coscinodiscus']                                       # 这里填写标签名称def make_video(img_dir, img_size=(1920, 1080), fps=5):file_path = os.path.join(Save_Dir, "demo.mp4")filelist = os.listdir(img_dir)fourcc = cv2.VideoWriter_fourcc('D', 'I', 'V', 'X')video = cv2.VideoWriter(file_path, fourcc, fps, img_size)for item in filelist:if item.endswith('.jpg'):item = img_dir + '/' + itemimg = cv2.imread(item)video.write(img)video.release()def draw_one_img(img_name, img_timestamp, labels_list):img_path = os.path.join(Img_Dir, img_name)img = cv2.imread(img_path, cv2.IMREAD_COLOR)for label in labels_list:tag = label['tags'][0]if not tag in Draw_Tags:continuebbox = label['boundingBox']left = bbox['left']top = bbox['top']right = left + bbox['width']bottom = top + bbox['height']bbox_plot.add(img, left, top, right, bottom, tag, 'red')save_name = 'time%s.jpg' % format(img_timestamp, '.2f').replace('.', '')save_path = os.path.join(Save_Dir, save_name)cv2.imwrite(save_path, img)print(save_name, 'ok~')def main():lb_json = os.path.join(Img_Dir, 'test-export.json')           # 这里填写\target\vott-json-export文件夹中.json后缀的文件名with open(lb_json, 'r',encoding='utf-8') as f:labels_dict = json.load(f)assets = labels_dict['assets']size = Nonefor k, v in assets.items():img_name = v['asset']['name']img_timestamp = v['asset']['timestamp']if size is None:w = v['asset']['size']['width']h = v['asset']['size']['height']size = (w, h)labels_list = v['regions']draw_one_img(img_name, img_timestamp, labels_list)make_video(Save_Dir, img_size=size)if __name__ == '__main__':main()

(2\mathbf{2}2) 执行上面的代码。

(3\mathbf{3}3) 执行完毕后,在 “results” 文件夹中即可看到 2\mathbf{2}2 种标注格式:带有标注的 视频 帧图片

① 视频展示:

② 帧图片展示 (部分):

1.9 标注完成

训练时,如果需要的是以视频为单位,则采用步骤1.81.81.8 中的 ①视频格式。

如果以单帧图片作为训练单位,则采用采用步骤1.81.81.8 中的 ②帧图片格式。

1.10 测试过程中遇到的问题

(1\mathbf{1}1) 该软件无法加载 .avi 格式的视频,我使用《格式工厂》软件转为 .mp4 格式后才能正常加载。

(2\mathbf{2}2) 视频标注工作量大。此前工程设置了帧率为15帧,所以10秒的视频就有150帧,相当于标注了150张图片。更何况数据集中的视频动辄几分钟。自动标注也有瑕疵,需要逐帧对自动标注进行检查和微调。

使用VoTT进行视频数据集标注相关推荐

  1. 图像/视频数据标注工具

    十个最常用深度学习图像/视频数据标注工具 原创: gloomyfish OpenCV学堂 从此以后图像与视频数据标注不用为找工具发愁!好东西记得分享 图像数据标注概述 在深度学习领域,训练数据对训练结 ...

  2. NLP+VS︱深度学习数据集标注工具、图像语料数据库、实验室搜索ing....

    from: https://blog.csdn.net/sinat_26917383/article/details/54908389 一.NLP标注工具 来源:<构想:中文文本标注工具(附开源 ...

  3. BDD100K:最经典大规模、多样化的自动驾驶视频数据集

    来源:HyperAI超神经 本文约1000字,建议阅读6分钟 目前,自动驾驶的公开数据集主要由视频和图片组成,近两年也增加了许多雷达数据.今天将介绍的数据集为加州大学伯克利分校发布的 BDD100K ...

  4. 全球最大的第一视角视频数据集开源,取自真实生活,还能提升厨艺

    安妮 编译整理 量子位 出品 | 公众号 QbitAI 最近,一个有趣的视频数据集开源了,它不仅能助你研究生涯一臂之力,或许还能提升你的--嗯,厨艺.  这个将锅与视频播放键融于一体的图像,就是刚 ...

  5. 基于内容的视频语义标注(一)——视频标注的三种方法和不同层次划分标注

    基于内容的视频标注是在传统的检索技术不能满足现在的海量视频检索要求,人们转向研究基于内容的视频检索这个大背景下提出来的.它根据视频的内容把视频按照不同的语义概念标注关键字,这是建立视频索引,进而实现高 ...

  6. 视频数据集 | 视频动作识别video recognition常用数据集整理

    一 写在前面 未经允许,不得转载,谢谢~~~ 这篇文章主要整理一下视频动作识别领域常用的数据集~~~ 大概但不严格按照时间顺序排列. 二 视频分类数据集 HMDB51 来源:HMDB: a large ...

  7. BDD100K:大规模、多样化的驾驶视频数据集

    文章目录 BDD100K:大规模.多样化的驾驶视频数据集 Annotations (一)道路目标检测 (二)车道线标记 (三)可行驶区域 (四)全帧实例分割 Driving Challenges Fu ...

  8. (目标检测)①数据集的建立(拍摄收集、数据集标注)

    目录 一.拍摄收集 (一)视频拍摄 (二)将MP4文件截取出图片 二.数据集标注 1.打开图片所在的文件夹 2.修改输出文件夹 3.图片标注 这一系列的博客将会帮助我自己(和大家)认识并熟悉--如何使 ...

  9. 【数据集NO.1】最经典大规模、多样化的自动驾驶视频数据集——BDD100K数据集

    本专栏主要分享本人收集整理的深度学习数据集资源,供大家参考使用.一个合适的数据集是论文写作.科研成功的开始.栏目会先简要介绍数据集,然后分享数据集的链接.本文分享最经典大规模.多样化的自动驾驶视频数据 ...

最新文章

  1. 深度分析:比特大陆二代AI芯片性能跃升,专注安防视频
  2. C语言函数集(十八)
  3. 数组、结构体和共用体的长度计算?
  4. Jquery中使用select2插件实现ajax实时请求数据
  5. 把中缀表达式转化为后缀表达式
  6. myeclipse 2016 ci3破解教程(含软件下载)
  7. 2018-2019-1 《信息安全系统设计基础》教学进程
  8. .net页面调用JS时出现乱码
  9. 春节传统元素素材,帮助设计师完成中国风海报设计
  10. Office 365 SharePoint 迁移浅谈 (一)开篇介绍
  11. 内卷时代,普通测试员的铁饭碗究竟是什么?
  12. Deep Learning 深度学习 学习教程网站集锦
  13. Oracle 递归查询 (start with ...connect by ...prior)
  14. STM32F429+W25Q256+TouchFGX
  15. stvd使用c语言编程,stm8编程tips(stvd)
  16. 机器学习基础 2:矩阵乘法以及求导
  17. 这座研究所出了8位菲尔兹奖得主: 教授没有发论文压力,不指定方向,不必教课...
  18. Java云同桌学习系列(十九)——Linux系统
  19. 张小龙-年薪近3亿的微信之父,他是如何做到的?
  20. 交换机,路由器和防火墙

热门文章

  1. iOS苹果商店审核防复审、审核流程
  2. android有打开wifi的权限吗,Android 获取WiFi的名字以及权限设置
  3. 语言处理 之 毕业论文
  4. 为什么华夏名网的主机搭建的wordpress博客申请了SSL证书并安装really-simple-ssl不成功导致网站内页不能正常显示?
  5. linux 日语软件下载,教你在 Arch Linux 中设置日语环境
  6. 照片怎么制作动态照片?这篇文章教会你如何制作
  7. Blender全流程制作!全网百万点赞的中传动画专业学生毕设作品《象群挽歌》主创专访...
  8. 返回语句——return
  9. helm3 chart repo 私有仓库
  10. static中兴考试题