视频Object、Region、Skeleton标注工具

原文git地址:https://github.com/anucvml/vidat

本文代码:链接:https://pan.baidu.com/s/1i3Z2ZCR6mrSZraW4ydRE3w
提取码:q3r5

此工具为浏览器内视频注释工具。

该项目的目的是为计算机视觉和机器学习应用开发一个高质量的视频注释工具,具有以下需求:

  1. 非专家使用简单高效。
  2. 支持多种注释类型,包括时间段、对象边界框、语义和实例区域、轨迹和人体姿势(骨架)。
  3. 在浏览器中运行,无需外部库或需要服务器端处理。但很容易插入后端以进行繁重的“在环”处理(例如,来自边界框的片段或来自部分标签的帧完成)。
  4. 兼容所有(大多数)现代浏览器和操作系统,包括平板电脑。
  5. 安全的。数据不需要离开本地机器(因为没有服务器端处理)。
  6. 开源。

Screenshots

Object

Region

Skeleton

Skeleton Type

Action

Usage

您需要先部署Vidat,然后使用URL 参数将视频加载到 Vidat

1、首先要部署nginx,官网下载对用版本的nginx: http://nginx.org/en/download.html

2、启动nginx,可以双击nginx.exe或者使用cmd进入该路径下使用命令start nginx启动

3、验证nginx是否配置好,打开浏览器输入http://localhost:80即可查看nginx欢迎界面

(注释:如果80端口被占用,服务启动失败,修改配置文件nginx.conf)

 server {listen       8088; # 更改对应的端口server_name  localhost;  # 服务的名字#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}

4、nginx停止服务,进入nginx安装路径下执行nginx -s stop 命令

5、部署Vidat,将对应文件夹放入到html文件夹下,启动nginx即可(同上启动nginx一样),注意将之前测试的nginx停止。

6、访问http://localhost:8088/vidat-v2.0.0/index.html地址即可,地址进行拼接http://localhost:8088/ + vidat-v2.0.0/index.html(后面是文件夹的路径)
7、检查是否启动成功。


数据格式(data)

数据要求:使用视频数据,本软件不支持cv2图片转视频格式,解码使用的是java解码,文件提供了java图像转视 频代码。

package cn.morethink.nettyexample.util;
import org.bytedeco.ffmpeg.global.avcodec;
import org.bytedeco.ffmpeg.global.avutil;
import org.bytedeco.javacv.FFmpegFrameRecorder;
import org.bytedeco.javacv.FrameRecorder;
import org.bytedeco.javacv.Java2DFrameConverter;import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.HashMap;
import java.util.Map;public class Img2mp4 {public static void main(String[] args) throws Exception {//合成的MP4 存放的地址路径 这里的路径并不会自动创建,需要手动提前创建好,否则会报错String mp4SavePath = "E:\\vidat-latest\\video\\000006.mp4";//图片存放的地址路径String img = "E:\\vidat-latest\\picture";int width = 2400;int height = 1800;//读取所有图片File file = new File(img);File[] files = file.listFiles();Map<Integer, File> imgMap = new HashMap<Integer, File>();int num = 0;for (File imgFile : files) {imgMap.put(num, imgFile);num++;}createMp4(mp4SavePath, imgMap, width, height);}private static void createMp4(String mp4SavePath, Map<Integer, File> imgMap, int width, int height) throws FrameRecorder.Exception {//视频宽高最好是按照常见的视频的宽高  16:9  或者 9:16FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(mp4SavePath, width, height);//设置视频编码层模式     import org.bytedeco.ffmpeg.global.avcodec;可能需要手动复制添加recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);//设置视频为10帧每秒recorder.setFrameRate(10);//设置视频图像数据格式    import org.bytedeco.ffmpeg.global.avutil;可能需要手动复制添加recorder.setPixelFormat(avutil.AV_PIX_FMT_YUV420P);recorder.setFormat("mp4");try {recorder.start();Java2DFrameConverter converter = new Java2DFrameConverter();//根据图片数量/10 生成视频的秒数.for (int i = 0; i < 7 ; i++) {BufferedImage read = ImageIO.read(imgMap.get(i));// 调整每秒插入视频的图片数, 数值越小 视频越流畅 性能消耗越大for (int j = 0; j < 10; j++) {recorder.record(converter.getFrame(read));}}} catch (Exception e) {e.printStackTrace();} finally {//最后一定要结束并释放资源recorder.stop();recorder.release();}}}

数据结果:本视频标注结果是vidat-latest\public\annotation\example.json,同样提供了将格式转为labelme格式

import argparse
import json
import cv2
import numpy as np
import os"""
parser = argparse.ArgumentParser()
parser.add_argument("square", help="display a square of a given number", type=int)
args = parser.parse_args()
print(args.square** 2)
"""load_f = open(r"E:\vidat-latest\public\annotation\ning71x-16-0672_10_000000.json", encoding="utf-8")
anno = json.load(load_f)
# print(anno)
# print(anno.keys())
total_json = {}
version = anno["version"]
print(version)
annotation = anno["annotation"]
config = anno["config"]
print(annotation.keys())
video = annotation["video"]
keyframeList = annotation["keyframeList"]
regionAnnotationListMap = annotation["regionAnnotationListMap"]
# print(regionAnnotationListMap["0"])
shapes = []
if regionAnnotationListMap["0"]:for i in range(len(regionAnnotationListMap["0"])):single_particle = {}points = regionAnnotationListMap["0"][i]["pointList"]print(len(points))point_lists = []label = regionAnnotationListMap["0"][i]["labelId"]# print(label)shape_type = "polygon"flags = []for i in range(len(points)):point_x = points[i]["x"]point_y = points[i]["y"]point_lists.append([point_x, point_y])single_particle.update({"label": label,"points": point_lists,"group_id": None,"shape_type": shape_type,"flags": []})# print(single_particle)shapes.append(single_particle)
# print(shapes)
imagePath = video["src"]
imageData = None
imgHeight = video["height"]
imgWidth = video["width"]total_json.update({"version": version,"flags": [],"shapes": shapes,"imagePath": imagePath,"imageData": imageData,"imgHeight": imgHeight,"imgWidth": imgWidth})with open(r"E:\vidat-latest\public\annotation\labelme_ning71x-16-0672_10_000000.json", "w", encoding="utf-8") as f:json.dump(total_json, f, ensure_ascii=False)

数据保存:当前数据标注结束以后,对标注结果下载,保存名字自定义,保存名字更改为视频呢名字,方便使用。


视频教程:

链接:https://pan.baidu.com/s/1y_J3QtkmrEVYtIOgV-Eueg
提取码:rbys

参考资料

https://github.com/anucvml/vidat
@misc{zhang2020vidat,
author = {Jiahao Zhang and Stephen Gould and Itzik Ben-Shabat},
title = {Vidat—{ANU} {CVML} Video Annotation Tool},
howpublished = {\url{https://github.com/anucvml/vidat}},
year = {2020}
}
感谢vidat团队开源。

视频分割、分类、行为标注工具相关推荐

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

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

  2. 分割 标注数据_7种常用的数据标注工具

    工欲善其事,必先利其器. 标注工具是数据标注行业的基础,一款好用的标注工具是提升标注效率与产出高质量标注数据的关键. 常用的数据标注工具主要有以下几种:2D框.语义分割.多边形分割.点标注.线标注.视 ...

  3. CNN for Semantic Segmentation(语义分割,论文,代码,数据集,标注工具,blog)

    在FCN网络在2104年提出后,越来越多的关于图像分割的深度学习网络被提出,相比传统方法,这些网络效果更好,运算速度更快,已经能成熟的运用在自然图像上.语义分割显然已经是计算机视觉领域的一个热门研究领 ...

  4. 重磅推荐!日立开源语义分割数据集标注工具Semantic Segmentation Editor

    面向自动驾驶领域的2D图片与3D点云对象标注工具. (欢迎关注本站的"我爱计算机视觉"微信公众号,一个有价值有深度的公众号~) 日立汽车工业实验室(Hitachi Automoti ...

  5. 点云语义分割标注工具及生成训练数据

    1.软件的安装     (1)下载后随便你解压到那个文件夹下(软件github地址)     github链接     (2)在终端中运行: curl https://install.meteor.c ...

  6. TunesKit Video Cutter for Mac(视频分割编辑工具)

    TunesKit Video Cutter Mac特别版是一款适用于Mac的视频分割编辑工具.TunesKit Video Cutter 特别版不仅能够为您将视频个音频进行片段分割,还能够进行分割片段 ...

  7. 超级!超级!超级好用的视频标注工具

    VATIC视频标注工具(下载见文末) 安装(基于Ubuntu16.04) $ sudo pip install cython==0.20 $ wget http://mit.edu/vondrick/ ...

  8. 【工具】Semantic Segmentation Editor 语义分割标注工具

    [工具]Semantic Segmentation Editor 语义分割标注工具 一.简介 二.界面 1.工具栏 ① 上方横排工具栏 Ctrl + Z 撤销 Ctrl + Y 重做 Alt 操纵工具 ...

  9. 分割视频成图片+labelimg标注数据集

    一.分割视频 1.将视频放在video目录下 2.创建存放图片的文件夹 3.运行cut.py将视频分割成图片 import cv2 video = r"D:\luzhi\1228\video ...

最新文章

  1. mybatis常见错误
  2. [转载]给IT人员支招:如何跟业务部门谈需求分析?
  3. windows tasklist 查看应用、进程
  4. 一轮项目冲刺——移山小分队(2)
  5. 《数据结构与算法分析》学习笔记(二)——算法分析
  6. Hadoop开启Kerberos安全模式
  7. (88)FPGA乘法器设计(移位相加乘法器)
  8. 小米商城html+css+js全代码
  9. linux下快速查找文件
  10. C#通过WebBrowser对网页截图
  11. 《数据库原理与应用》复习总结
  12. Android悬浮窗口-画中画功能
  13. 打印一本400页的书多少钱?哪里打印书本比较便宜
  14. 线性dp——hdu6578经典dp
  15. LVS负载均衡环境搭建
  16. hcna学习小结第一天
  17. vue实现标签云,让你的标签动起来
  18. 定义一个数组,里面存放星期一、星期二…… 直到星期日(共7天),在页面显示奇数日,如星期一,星期三,星期日等。
  19. 工作日志-----陈浩伦
  20. delphi mysql 三层_Delphi XE 10 跨平台三层数据库应用 datasnap

热门文章

  1. 闲鱼无货源赚钱的核心玩法?
  2. Gnuradio+uhd驱动软件安装流程
  3. 建筑学计算机出图报告,建筑系举办计算机生成图像技术工作坊
  4. 极地土活性层和永久冻土的比较宏基因组学
  5. CVE-2020-1938 幽灵猫( GhostCat ) Tomcat-Ajp协议 任意文件读取/JSP文件包含漏洞分析
  6. 轻松且安全清理C盘方式介绍
  7. JS 中文数转数字练习
  8. layui框架的一些基本使用
  9. Stegsolve.jar工具包准备,避坑指南,教你正确启动Stegsolve
  10. 去中心化数字身份DID简介——二、一个完整的DID使用流程