Vatic标注工具安装步骤(非docker安装)以及错误解决

  • 1、安装参考
  • 2、安装步骤
    • 2.1、环境介绍
    • 2.2、下载Vatic
    • 2.3、配置Apache
    • 2.4、配置MySQL
    • 2.5、配置/安装Vatic
  • 3、Vatic使用
  • 个人

1、安装参考

    为什么还要写这个博客呢?第一是给自己做备忘录使用,第二是在安装的过程中还是遇到了一些以下参考的博客中未说明的问题,所以在这里写一下,十分感谢以下参考博客的博主以及代码主人。

1、Github源代码说明以及问题
2、YoungMiao的CSDN博客——vatic–视频标注工具
3、喏喏心的CSDN博客——vatic—视频标注工具安装出现error及注意事项
4、LZ_lan的CSDN博客——vatic视频标注工具的安装使用及错误解决

2、安装步骤

2.1、环境介绍

    首先是官方解释,如下:
    Vatic是一个在线视频注释工具,用于计算机视觉研究,亚马逊的 Mechanical Turk项目的众包工作。我们的工具可以很容易地构建大量、价格合理的视频数据集。
    此处放一个B站up主转载Youtobe的一个Vatic操作视频链接,大家可以看一下:vatic视频标注操作视频。

    注意: Vatic仅在带有Apache2.2HTTP服务器和MySQL服务器的Ubuntu上进行过测试。本文档将描述此平台上的安装,尽管它应该可以在任何操作系统和任何服务器上工作。

    使用Vatic标注工具的电脑环境需要linux操作系统(此处推荐使用Ubuntu 18.04.1 LTS,本人使用的是此系统)。此外,系统中应该安装有MySQL以及Apache(安装Apache2)。

    安装Apache2的时候,如果因为系统的软件目录更新失败或者ppa存在问题而导致不能成功安装,建议查看此博客。

    此外,对于mysql的python支持,即安装相应的Python支持MySQL的包,如果存在问题,建议查看此博客。

2.2、下载Vatic

    Vatic的Github地址为:Vatic源代码

    此处Github的地址只是作为查看源码的一个链接,代码原主人的Github中的脚本文件虽然可以下载,但是其vatic的代码中虽然有vatic-install.sh这个脚本文件,但是安装到最后的结果很容易出错,所以不建议下载。之前有一个博主已经自己写了份脚本文件,vatic-install.sh下载地址。

    下载之后运行一下代码(下面的第一部分代码运行的基础是建立在下载上文vatic-install.sh文件的基础上。每次一行然后运行,PS:建议最好新建一个vatic文件,并将脚本文件拷贝进去后运行)。

    注意,推荐的CSDN的脚本里面,需要修改pyvision的下载地址为以上列出的Github的源码地址,此外,脚本文件中要下载安装的包有一个munkres的,因为会下载最新的包,我们要安装的Vatic不兼容,所以我们要删除脚本中的munkres,并单独使用命令行安装制定版本的。

1、关于安装指定版本的munkres,你需要先删除脚本文件中的munkres,然后使用以下命令行,本人执行后在后面安装Vatic未报错。

pip install munkres==1.0.12

2、关于脚本文件中的pyvision的下载路径,你需要更换成以下文本。

git clone https://github.com/cvondrick/pyvision.git

3、更换完以上两项之后,我们可以执行脚本文件了。

chmod +x vatic-install.sh
./vatic-install.sh
cd vatic

    当然也可以拷贝Github的vatic-install.sh的文件内容,然后粘贴到本地,按以下步骤执行:

sudo pip install cython==0.20
wget http://mit.edu/vondrick/vatic/vatic-install.sh
chmod +x vatic-install.sh
./vatic-install.sh
cd vatic

    等待下载完成后,我们安装的目录下会出现三个新的文件夹:分别是vatic,turkic以及pyvision。如下图所示,其中的vatic-install.sh文件使我们下载或者创建的脚本文件:


    这时我们的下载就已经完成了。然后我们需要去配置一下Apache以及MySQL。

2.3、配置Apache

    此处配置Apache是针对首次安装以及Apache没有其他应用的情况,如有其它用处,可以参考本博客以及Github上的安装说明。

    首先我们要找到一个Apache的配置文件,路径及名称如下。

/etc/apache2/sites-enabled/000-default.conf

    然后我们打开该文件,并用以下文本替换。这里你可以使用vi或者vim进行编辑,也可以直接通过和Windows一样的操作找到并打开该文件然后修改。如果在如何找该文件时遇到问题,可以看如何在Ubantu中根据路径找到一个文件。

    对于下面即将出现的和路径有关的配置文件内容,我先将自己的文件资源管理对应的结构粘出来。如下:

    修改结果如下:

WSGIDaemonProcess www-data python-eggs=/var/www/.python-eggs  # 此处的python-eggs=/var/www/.python-eggs好像可以忽略
WSGIProcessGroup www-data<VirtualHost *:80>ServerName 127.0.0.1DocumentRoot /path/to/your/own/vatic/public  # 示例 /home/chenan/vatic/vatic/publicWSGIScriptAlias /server /path/to/your/own/vatic/server.py   # 示例 /home/chenan/vatic/vatic/server.py<Directory /path/to/your/own/vatic/public>  # 示例 /home/chenan/vatic/vatic/publicOptions Indexes FollowSymLinks MultiViews Includes ExecCGIAllowOverride allRequire all grantedSatisfy Any</Directory><Directory />Options Indexes FollowSymLinks IncludesAllowOverride None</Directory>ErrorLog /etc/apache2/error.logCustomLog /var/log/apache2/access.log combined<Directory /path/to/your/own/vatic>   # 示例 /home/chenan/vatic/vatic<Files server.py>Require all granted</Files></Directory>
</VirtualHost>

    以上修改的文本要特别注意路径的修改,除了两个.log文件是一般不需要修改路径的之外,你要把其余的路径换成你的文件对应的路径。即你需要把所有的“path/to/you/……/directory”替换成你系统中的。

    此处如果遇到有关**WSGI……**的有关问题,看看是不是和我遇到的一样,参考此博客内容。

    此处应注意,如果您还将Apache用于其他目的,则必须使用新的有正确的文档根和脚本别名设置虚拟主机。

    此时还没有结束,我们需要修改另一个Apache的文件,路径及名称如下:

/etc/apache2/apache2.conf

    打开文件后在最后部分添加以下文本:

<Directory /path/to/your/own/vatic/public>  # 示例 /home/chenan/vatic/vatic/public<Files server.py>Options Indexes FollowSymLinksAllowOverride AllRequire all granted</Files>
</Directory>
ServerName 127.0.0.1

    以上,关于Apache中要修改的就结束了。

    我们需要验证一下我们修改的配置是否成功了。验证代码如下。

    首先启用mod_headers模块

sudo cp /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled

    因为我们的配置文件改了,所以我们需要重启Apache服务:

sudo apache2ctl graceful

    如果你成功重启了,那祝贺你,关于apache的配置你成功了。

2.4、配置MySQL

    首先我们需要创建一个名为Vatic的数据库。其实关于MySQL配置,我们只需要创建一个数据库以及配置下其root账户的密码即可。(其实名字无所谓,但是作者建议建立一个独立的专门为Vatic使用的数据库。所以此处需要注意root账户下的数据库设置。)

mysql -u root -p
mysql> create database vatic;

    注意:如果是在推荐的csdn下载的脚本文件运行过,则密码是root,之后我们需要把密码设置为空,方便后面配置。说明,安装Vatic的时候,数据库会自动创建相关的表。

    更新MySQL root账户密码为空,如下:

use mysql
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password";
flush privileges; #更新所有操作权限
quit;

    此处,关于MySQL,我们也暂时结束了。然后我们去配置一下Vatic。

2.5、配置/安装Vatic

    首先,我们启动一下Vatic

cp config.py-example config.py

    注意:此时在vatic文件夹会出现一个config.py的文件,这时如果你只是离线使用的话,可以忽略该文件,如果需要在线使用的话,你需要更改文件中的一些信息,详情参考原Github说明。因为后面会有数据库服务以及web服务的验证,所以此处你仍需确认一下config内容中的数据库以及web服务路径(即确认localhost以及database对应的信息)是否正确。如下。

signature   = "" # AWS secret access,key 此项和Mechcanical Turk有关,如不使用请忽略。
accesskey   = "" # AWS access key ID,key 此项和Mechcanical Turk有关,如不使用请忽略。
sandbox     = False # if true, put on workersandbox.mturk.com
localhost   = "http://localhost/" # your local host
database    = "mysql://root@localhost/vatic" # server://user:pass@localhost/dbname
geolocation = "" # api key for ipinfodb.com
maxobjects = 25;

    然后我们初始化数据库。

turkic setup --database

    此处是初始化数据库,不需要多次执行。

    然后关于数据库的还有一个比较常见的命令:

turkic setup --database --reset

    这部分是重启数据库,该命令最好不好在工作过程中轻易使用,可能会造成数据丢失
    然后我们需要建立一个vatic与mysql的链接,这是一个重要的地方:

turkic setup --public-symlink

    此链接建立后,不需要再次创建,否则会出现以下提示:

could not create symlink!

    如果出现此提示,可以忽略,除非你真的有必要再次创建连接。那么重新创建连接前你需要删除原有的链接,位置是vatic/public文件夹下的turkic文件夹。如下选中的文件夹所示。


    然后我们需要验证一下我们各方面的配置是否正确,此时用到命令行:

turkic status --verify

    本人验证结果如下:


    这个时候我们只要去看验证结果中的web server以及database server是否存在error,显示ok的话,那么我们就配置成功了。

3、Vatic使用

1、首先我们需要对视频做取帧操作,命令行如下(此处的路径要先创建):

turkic extract /path/to/video.mp4 /path/to/output/directory1


    如上,因为视频较长,取帧创建了N多个文件夹(每个文件夹下100张图片),而这么多的文件夹到之后之后的命令行执行存在文件遍历的错误,你需要把文件取帧创建的多个文件夹的文件合并到一个单独的目录,这样子也方便后期创建一个单独的项目。(也获取是操作问题?感觉不像)

    此处还可以设置输出图像的大小,命令行如下:

turkic extract /path/to/video.mp4 /path/to/output/directory1--width 1000 --height 1000  # 也可以换成-- no-resize

    **说明:**导出的图像会保持长宽比。作者说的是默认resize成720x480的,但我没设置输出高度和宽度,结果输出的也不是该格式的。

2、然后我们将导出的帧转换成Vatic的格式:

turkic formatframes /path/to/output/directory1 /path/to/output/directory2

    这里我们需要注意一下路径。directory1是之前取帧操作输出的文件夹,directory2是本次命令行要输出的文件夹。

3、导入视频

sudo turkic load name  path/to/output/directory2 Label1 ~Attr1A ~Attr1BLabel2 ~Attr2A ~Attr2B ~Attr2C Label3 --offline

    此处需要说明一下load后面的name是你现在要存储在数据库Vatic中的名字,也是你之后导出视频时需要使用的名字(最好每个视频对应一个)。Labelx代表你要标记的类别,而Attrx是你标记类别的属性,作者说至少需要一个。最后的–offline参数,离线操作的话是必须要带上的,否则无法进行之后的操作。本人在此处运行时一直有问题,所以需要在前面加sudo,如果你实验可以不加的话,也可以选择不加。此处的directory2也是你到处的Vatic支持格式的文件夹。

    说明当一个视频被导入时,它被分成几个小片段,通常只有几秒钟。当所有的段都有注释(标注)时,注释会跨段合并,因为每个段之间的重叠幅度很小。

4、发布视频

turkic publish --offline

5、导出结果

turkic dump identifier -o /output --pascal --pascal-skip 1

6、删除视频

    删除视频,任意时候都可以使用:

turkic delete identifier(视频名称)

    注意:但是此语句要删除的视频如果已经被标记了,那么你就会受到提醒,并且本语句将不会继续执行。如果需要强行删除:

turkic delete identifier --force

7、视频列表相关

    检索所有视频

turkic list

    检索已发布的视频

turkic list --published

    检索标记完成的视频

turkic list --completed

    检索作为金标准的视频

turkic list --training

    检索系统中视频的总条数

turkic list --count

    注意:并且 --count可以和以上的几个参数配合使用,放置于后面。
如果您需要有关每个视频的统计信息,可以使用–stats选项

turkic list --stats

    如果你在视频中发现了一个小错误并希望自己进行更正,则可以启动使用MTurk工作人员注释初始化的注释会话:

turkic find --id identifier
turkic find --id identifier --frame frame

    注意:其中identifier是视频的标识符,frame是发生错误的帧号。在大多数情况下,此命令将返回一个URL以进行更正。如果它输出两个URL,则表示帧编号出现在两个重叠的段中,因此您可能必须对两个段进行更改。您还可以省略frame参数,在这种情况下,它将输出该视频的所有URL。

    如果要查找特定视频的HIT id,分配ID或工作者ID,请为vet命令指定–ids参数:

turkic find --id identifer --ids
turkic find --id identifer --frame frame --ids

    将打印视频的所有ID列表。如果相应的段已发布并完成,它将列出三个字符串:HIT ID,分配ID和工作者ID。如果作业已发布但尚未完成,则只会列出HIT ID。如果作业尚未发布,则打印“(未发布)”。
此外,如果要查找与特定HIT ID对应的作业,可以使用find命令:

turkic find --hitid HITID

    默认情况下,上述命令不会尝试跨镜头段合并注释。您可以使用以下命令请求合并:

turkic dump identifier -o output.txt --merge --merge-threshold 0.5

    注意:–merge-threshold选项是可选的,但它是介于0和1之间的数字,表示路径必须同意才能合并。1指定完美匹配,0指定不匹配。实际上,0.5就足够了。合并是使用匈牙利算法完成的。

    关于输出信息的说明:

1 Track ID. All rows with the same ID belong to the same path.
2 xmin. The top left x-coordinate of the bounding box.
3 ymin. The top left y-coordinate of the bounding box.
4 xmax. The bottom right x-coordinate of the bounding box.
5 ymax. The bottom right y-coordinate of the bounding box.
6 frame. The frame that this annotation represents.
7 lost. If 1, the annotation is outside of the view screen.
8 occluded. If 1, the annotation is occluded.
9 generated. If 1, the annotation was automatically interpolated.
10 label. The label for this annotation, enclosed in quotation marks.
11+ attributes. Each column after this is an attribute.

    关于输出格式的说明(以下是可以输出格式的类型):

–xml Use XML
–json Use JSON
–matlab Use MATLAB
–pickle Use Python’s Pickle
–labelme Use LabelMe video’s XML format
–pascal Use PASCAL VOC format, treating each frame as an image

个人

    最后,希望这篇博客作为备忘录的同时,也可以给其他安装Vatic的人带来一些帮助。大家如果有需要讨论的事情或者问题,可以在评论区留言,看到的话会做出相应的回复。

vatic标注工具安装步骤(非docker安装)以及错误解决办法相关推荐

  1. Oracle19c安装教程及PLSQL配置常见错误解决办法

    本人电脑上也装了不少比较难以安装的程序,而且也亲身破解了一些软件,自己以前也安装过MySQL和DB2,原以为Oracle也差不多,直到我亲身经历了,我才知道什么是痛苦.帅帅本人在经历了长时间的折磨之后 ...

  2. 安装完PLSQL遇到Initialization error错误解决办法

    问题描述: 当安装完PLSQL或者免安装版的时候打开PLSQL弹框报Initialization error错 主要原因是没有相应的oci.dll文件 解决办法: 1:在PLSQL配置>首选项中 ...

  3. VS2010安装Nuget提示签名不匹配错误解决办法

    1.到vs2010的扩展文件夹下面把这个Nuge Package Manager文件夹给干掉: C:\Program Files\Microsoft Visual Studio 10.0\Common ...

  4. 数据集标注工具Labelimg无法支持JPG格式图片的解决办法

    Labelimg(GItHub:https://github.com/tzutalin/labelImg/)是一款用于标注图像数据集的工具,其可视化界面由Qt框架支持.虽然在作者相关项目的主页上提到了 ...

  5. RocketMQ部署安装(非Docker安装)

    1.下载 下载地址:https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.3.2/rocketmq-all-4.3.2-bin-release.z ...

  6. linux编译安装的报错,linux编译安装时常见错误解决办法

    This article is post on https://coderwall.com/p/ggmpfa 原文链接:http://www.bkjia.com/PHPjc/1008013.html ...

  7. 安装程序出现2502、2503错误解决方法

    安装程序出现2502.2503错误解决方法 听语音 | 浏览:45460 | 更新:2014-03-20 19:32 | 标签:win8 1 2 3 4 5 6 7 分步阅读 在Win8中,在安装ms ...

  8. (转载)oracle 10g 安装完成后,无法登陆EM的解决办法

    (来自:oracle 10g 安装完成后,无法登陆EM的解决办法 ) 状况: 打开http://localhost-:5500/em,系统显示如下信息: 数据库状态当前不可用.可能是因为数据库的状态为 ...

  9. ionic 安装 inappbrowser 插件后编译失败的解决办法

    layout: post title: ionic 安装 inappbrowser 插件后编译失败的解决办法 tags: description: 学习使用 ionic 框架开发 ios app 时遇 ...

最新文章

  1. 我用Python分析了翟天临的论文,学术还是要认真做啊!
  2. 【双11狂欢的背后】微服务注册中心如何承载大型系统的千万级访问?
  3. 泛函编程(19)-泛函库设计-Parallelism In Action
  4. Metasploit发布了版本5.0.76
  5. POJ 2749 Building roads
  6. python做Linux进程运行,Python实现在Linux系统下更改当前进程运行用户
  7. 深入讲解Android Property机制
  8. 一文搞定Vim/Vi编辑器
  9. hammer用法 jquery.hammer.js
  10. POJ3764 The xor-longest Path(Trie树)
  11. Clojure学习之比线性箭头操作
  12. python选择路径窗口_python选择路径
  13. Python+OpenCV:训练级联分类器(Cascade Classifier Training)
  14. idea 新建的java项目没发run_IntelliJ IDEA 如何创建一个普通的java项目,及创建java文件并运行...
  15. matlab中saveas图片和save变量到不同路径(文件夹)下
  16. 如何去掉百度地图logo
  17. 元宇宙来袭的五个趋势
  18. 视频教程-【直通华为HCNA/HCNP系列R篇7】可靠性功能原理及配置与管理-华为认证
  19. [HNUOJ1140] Daily Division(树状数组+二分)
  20. 面试时,碰到职场“送命题”该怎么回答?送上这些有求生欲的答案~

热门文章

  1. 树莓派 自动关闭屏幕解决办法
  2. 计算机电源电压的调整,电压调整电路、电压调整方法及其计算机系统
  3. python更新的命令_python升级命令
  4. 基因大数据在生活中的应用
  5. 大数据资源争夺战此起彼伏,对用户而言是福是祸
  6. 2020第十一届蓝桥杯-决赛-Java大学-C组
  7. 对软件工程课程的初步认知
  8. 区块链运作机制_区块链如何运作? 铂 4
  9. 引领盲返消费新潮流,共创社交电商新时代
  10. 企业邮箱续费多少钱一年?企业邮箱域名到期如何续费?