当前位置:网站首页>Video data annotation tools and platforms (data annotation company)
Video data annotation tools and platforms (data annotation company)
2022-06-23 11:30:00 【Lift up】
Video data annotation platform ( Mark outsourcing company )
The work of data annotation companies is diverse , However, video annotation requires a little higher tools , There are not many platforms that can do it online , Mainly voice 、 Image Overlays . At present, the industry is mixed , Some platforms have strong technical strength , Brand background , For example, JD Zhongzhi 、 Baidu crowdsourcing , Good data confidentiality . Some platforms are specialized as agents , Give him your data needs , He subcontracted it to the next floor . Here are some platforms , It also integrates some opinions of other bloggers , as follows :
All wisdom in Jingdong
The labeling quality is relatively high , Project delivery on time , The data isolation scheme can be marked without its own server , Pay more attention to customer data security . It also provides privatization Deployment Services .
Baidu public test
The tagging ability is extensive , Baidu has been in the label industry for a long time , Accumulated more crowdsourcing users . But I am not optimistic about crowdsourcing , Because the quality is difficult to control .
figure-eight
Foreign well-known data annotation platform , Many foreign companies have cooperated with it . The demander can configure the annotation tools and corresponding label, Send tasks directly on the platform , No account manager communication … This may not be very friendly to domestic customers .
Video data annotation tool
CDVA
CDVA(compact descriptor for video analysis), Mainly based on CDVS Compact visual descriptors for video analysis , Previously, compact visual descriptors were mainly used in the field of image retrieval . New datasets need to be created , Annotate video frames , Therefore, according to a blogger's annotation tool on the Internet, some modifications have been made , The function is to select the area to be marked with the mouse in each frame 4 A little bit , The sequence is clockwise . Because the quadrilateral has a wider range , Some people before marked the rectangle directly , But in some affine transformations , Often the positioning effect of rectangle is not good , Rectangle location should be more suitable for face location and pedestrian location . http://www.cnblogs.com/louyihang-loves-baiyan/p/4457462.html
Video annotation tool
Because the laboratory needs to do CDVA Standards for ,CDVA(compact descriptor for video analysis), Mainly based on CDVS Compact visual descriptors for video analysis , Previously, compact visual descriptors were mainly used in the field of image retrieval . New datasets need to be created , Annotate video frames , Therefore, according to a blogger's annotation tool on the Internet, some modifications have been made , The function is to select the area to be marked with the mouse in each frame 4 A little bit , The sequence is clockwise . Because the quadrilateral has a wider range , Some people before marked the rectangle directly , But in some affine transformations , Often the positioning effect of rectangle is not good , Rectangle location should be more suitable for face location and pedestrian location .
These codes are based on openCV Of , Therefore, it is necessary for the project configuration opencv Library path and header file path . Here is a brief introduction to the usage of this tool
- First run the application to see a black box and a Video window
- Select the area to be marked , Clockwise , Draw 4 A little bit ( When writing this tool, the default is to draw one image per frame , Do not consider multiple situations , If you want to label multiple , You can add an array to access the area of each quadrilateral
- If you need to make further correction if you click the wrong place when drawing, press 'z' that will do , Press down ‘z’ You can go back a point , If finished 4 I still feel dissatisfied , You can also press 'c' Remove all
- When the rectangular area is determined , Press down ‘n’, These data will be written to the specified txt In file , At the same time, it will enter the next frame
- Because the change of continuous frames in the video is not good , Especially when the camera stops , therefore , To avoid drawing the target area repeatedly , The quadrilateral coordinates of the previous frame will be automatically drawn in the next frame , If you need to redraw , Press down ‘c’, that will do , If you don't need to redraw , Press down 'n' The file is written , At the same time, continue to the next frame , So back and forth
In writing txt In file , A row represents the data in a frame , The first number is the number of frames , after 4 Number , They are entered in turn when drawing rectangles 4 Coordinates . You can do it according to your needs , Modify this code , I hope it can help you .
/********************************************************************
created: 2015/04/18
created: 18:4:2015 17:24
filename: D:\WorkSpace\VS_Projects\VideoLabel\VideoLabel_Quadrilateral\video_label_quadrilateral.cpp
file path: D:\WorkSpace\VS_Projects\VideoLabel\VideoLabel_Quadrilateral
file base: video_label_quadrilateral
file ext: cpp
author: Yihang Lou
purpose: draw the quadrilateral labels in the frame captured from video
*********************************************************************/
#include "opencv2/opencv.hpp"
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
using namespace std;
using namespace cv;
// Global variables
Mat img_original, img_drawing;
Point quad [4];
//the value of pointNum is between 0~4
static int pointNum = 0;
/*************************************************
// Method: help
// Description: describe the usage
// Author: Yihang Lou
// Date: 2015/04/18
// Returns: void
// History:
*************************************************/
static void help()
{
cout << "This program designed for labeling video \n"
"Only if you press the 'n' the present quadrilateral data will be written into txt file\n";
cout << "Hot keys: \n"
"\tESC - quit the program\n"
"\tn - next frame of the video\n"
"\tz - undo the last label point \n"
"\tc - clear all the labels\n"
<< endl;
}
/*************************************************
// Method: drawQuadri
// Description:
// Author: Yihang Lou
// Date: 2015/04/18
// Returns: void
// Parameter: quad the point of Point array
// History:
*************************************************/
static void drawQuadri (Point * quad) {
for(int i = 0; i < 4; i++)
{
line(img_drawing,quad[i],quad[(i+1)%4],Scalar(0,255,0),1,8,0);
}
}
/*************************************************
// Method: onMouse
// Description: do the actions after onMouse event is called
// Author: Yihang Lou
// Date: 2015/04/18
// Returns: void
// Parameter: event
// Parameter: x Mouse's coordinate
// Parameter: y
// History:
*************************************************/
static void onMouse(int event, int x, int y, int, void*)
{
switch (event)
{
case CV_EVENT_LBUTTONDOWN:
quad[pointNum%4].x = x;
quad[pointNum%4].y = y;
cout<<"x = "<<x<<" y = "<<y<<endl;
pointNum++;
break;
case CV_EVENT_LBUTTONUP:
//finish drawing the rect (use color green for finish)
circle(img_drawing,cvPoint(x,y),1,Scalar(0, 255, 0),1,8,0);
if(pointNum == 4)
{
pointNum = 0;
cout<<"draw quadri line"<<endl;
drawQuadri(quad);
}
break;
}
imshow("Video", img_drawing);
return;
}
/*************************************************
// Method: isempty
// Description: check the quad is empty
// Author: Yihang Lou
// Date: 2015/04/18
// Returns: int
// Parameter: quad
// History:
*************************************************/
int isempty(Point * quad)
{
for (int i = 0 ; i < 4; i++)
{
if (quad[i].x !=0 || quad[i].y !=0 )
{
return 0;
}
}
return 1;
}
int main(){
namedWindow("Video");
ofstream outfile("1.txt");
help();
VideoCapture capture("1.avi");
capture >> img_original;
img_original.copyTo(img_drawing);
imshow("Video", img_original);
setMouseCallback("Video", onMouse, 0);
int frame_counter = 0;
while (1){
int c = waitKey(0);
if ((c & 255) == 27)
{
cout << "Exiting ...\n";
break;
}
switch ((char)c)
{
case 'n':
//read the next frame
++frame_counter;
capture >> img_original;
if (img_original.empty()){
cout << "\nVideo Finished!" << endl;
return 0;
}
img_original.copyTo(img_drawing);
if (!isempty(quad))
{
drawQuadri(quad);
outfile << frame_counter << " " << quad[0].x << " "<< quad[0].y << " "
<< quad[1].x << " "<< quad[1].y << " "
<< quad[2].x << " "<< quad[2].y << " "
<< quad[3].x << " "<< quad[3].y << " "<<endl;
}
break;
case 'z':
//undo the latest labeling point
if(pointNum == 0)
{
cout<<"if you want to clear the existent quad please press 'c'"<<endl;
break;
}
pointNum--;
quad[pointNum].x=0;
quad[pointNum].y=0;
img_original.copyTo(img_drawing);
for(int i = 0 ; i < pointNum; i++)
{
circle(img_drawing,quad[i],1,Scalar(0, 255, 0),1,8,0);
}
break;
case 'c':
//clear quad array
memset(quad,0,4*sizeof(Point));
img_original.copyTo(img_drawing);
}
imshow("Video", img_drawing);
}
return 0;
}VoTT
Visual images released by Microsoft / Video tagging tool . Ability to tag and annotate image catalogs or stand-alone videos . Use Camshift Tracking algorithm assists computer to mark and track objects in video . Export labels and resources to Custom Vision Service CNTK,Tensorflow(PascalVOC) or YOLO Format , For training object detection model . https://github.com/Microsoft/VoTT
vatic
Video annotation tool (vatic)
1. install ( be based on Ubuntu16.04)
$ sudo pip install cython==0.20
$ wget http://mit.edu/vondrick/vatic/vatic-install.sh
$ chmod +x vatic-install.sh
$ ./vatic-install.sh
$ cd vaticvatic-install.sh You may not be able to download ,vatic-install download
2. To configure HTTP Serve
/etc/apache2/sites-enabled/000-default.confReplace with :
WSGIDaemonProcess www-data python-eggs=/home/cmcross/.python-eggs
WSGIProcessGroup www-data
<VirtualHost *:80>
ServerName 0.0.0.0
DocumentRoot /home/cmcross/vatic/public
WSGIScriptAlias /server /home/cmcross/vatic/server.py
CustomLog /var/log/apache2/access.log combined
</VirtualHost>Enable mod_headers modular :
$ sudo cp /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled restart Apache:
$ sudo apache2ctl graceful3. To configure SQL
establish vatic database :
$ mysql -u root
mysql> create database vatic;If you need a password to log in , The password is hail_ukraine, modify root The user has no password , Otherwise, an error will be reported , If it's mine above csdn Download the , The password is root
to update mysql root No password
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password";
flush privileges; # Update all operation permissions
quit;start-up :
$ cp config.py-example config.pyIf online service is required , modify access Corresponding options , Offline services can skip
Initialize database :
$ turkic setup --databaseRestart the database :
$ turkic setup --database --resetallow vatic visit turkic:
$ turkic setup --public-symlink4. Verify that the installation is correct
$ turkic status --verifyIf you receive any error messages , It means that the installation is not completed .
Be careful : I'm not going to use Mechanical Turk, Ignore by Mechanical Turk Any errors caused .
ERROR:
Localhost: http://localhost/
Testing access to Amazon Mechanical Turk... ERROR! Signature or access key missing
Testing access to database server... OK
Testing access to web server... ERROR! HTTP Error 403: Forbidden
One or more tests FAILED!solve : modify Apache To configure /etc/apache2/apache2.conf add to
<Directory /home/cmcross/vatic/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory> Solve the problem after restarting $ sudo apache2ctl graceful5. Example
Video framing
$ mkdir /path/to/output/directory
$ turkic extract /path/to/video.mp4 /path/to/output/directoryThe width and height attributes are :--width 1000 --height 1000 perhaps --no-resize
$ turkic extract /path/to/video.mp4 /path/to/output/directory --width 1000 --height 1000The video frames that have been taken can be converted into vatic The format of
$ turkic formatframes /path/to/frames/ /path/to/output/directoryImport video ( offline )
$ turkic load identifier /path/to/output/directory Label1 ~Attr1A ~Attr1B
Label2 ~Attr2A ~Attr2B ~Attr2C Label3 --offlineidentifier Is the indicator ,Label1 Will have properties Attr1A and Attr1B,Label2 Will have properties Attr2B,Attr2B and Attr2C, also Label3 Will not have attribute . Specifying attributes is optional
pulish video ( offline )
$ turkic publish --offlineERROR:publish Open after http://localhost?id=1&hitId=offline The URL shows Server Error
resolvent : stay /etc/apache2/sites-enabled/000-default.conf add to
<Directory /path/to/vatic>
<Files server.py>
Require all granted
</Files>
</Directory>export voc Format datasets
$ turkic dump identifier -o /output --pascal --pascal-skip 1–pascal-skip: How many frames to get data once , Without this attribute, the default is 15 Frame take once
For more parameter references Github:https://github.com/cvondrick/vatic
边栏推荐
猜你喜欢

程序中创建一个子进程,然后父子进程各自独自运行,父进程在标准输入设备上读入小写字母,写入管道。子进程从管道读取字符并转化为大写字母。读到x结束

ESP32-CAM、ESP8266、WIFI、蓝牙、单片机、热点创建嵌入式DNS服务器

Rancher 2.6 全新 Monitoring 快速入门

长安LUMIN是否有能力成为微电市场的破局产品

2光2电级联型光纤收发器千兆2光2电光纤收发器迷你嵌入式工业矿用本安型光纤收发器

单向链表实现--计数

Attack and defense drill collection | 3 stages, 4 key points, interpretation of the blue team defense whole process outline

攻防演练合集 | 3个阶段,4大要点,蓝队防守全流程纲要解读

MAUI使用Masa blazor组件库

Simplest DIY remote control computer system based on STM32 ② (wireless remote control + key control)
随机推荐
Esp32-cam, esp8266, WiFi, Bluetooth, MCU, hotspot create embedded DNS server
Groovy之范围
爱可可AI前沿推介(6.23)
Runtime application self-protection (rasp): self-cultivation of application security
使用tensorflow2创建神经网络
汉源高科1路非压缩4K-DVI光端机4K高清非压缩DVI转光纤4K-DVI高清视频光端机
DevEco Device Tool 助力OpenHarmony設備開發
一张图解码 OpenCloudOS 社区开放日
Share a mobile game script source code
直播带货app源码搭建中,直播CDN的原理是什么?
Analysis of LinkedList source code
華為雲如何實現實時音視頻全球低時延網絡架構
4K-HDMI光端机1路[email protected] HDMI2.0光端机 HDMI高清视频光端机
Openharmony application development [01]
The simplest DIY pca9685 steering gear control program based on the integration of upper and lower computers of C # and 51 single chip microcomputer
惊!AMD 350亿美元收购赛灵思!
最简单DIY基于51单片机的舵机控制器
最简单DIY基于C#和51单片机上下位机一体化的PCA9685舵机控制程序
ESP32-CAM、ESP8266、WIFI、蓝牙、单片机、热点创建嵌入式DNS服务器
Simplest DIY steel patriot machine gun controller based on Bluetooth, 51 MCU and steering gear