前言
1.最近做要做行为识别的项目,中间要用到视频标注工具,受人推荐使用了vatic这款工具
2.目前在该系统上似乎只有用python2(最好是python2.7)才能成功安装,这个一定要注意,一定要注意。所以请用python3的小伙伴将python版本换成2.7,方法请自行百度了
3.需要安装 git,可执行pip指令,并记住github账户密码等
参考网址
github官网:https://github.com/cvondrick/vatic
博客:https://blog.youkuaiyun.com/baidu_26788951/article/details/80053760
1.安装
1.下载vatic-install.sh文件,这里不要下载官网上的vatic_install.sh文件,用那个文件的话安装会出错。下载完成后文件中部分内容需要进行修改,如下两张图,总共修改5处,user_name即使用用户,install_document即安装vatic所创建的安装目录,你可以修改成其他路径
脚本内容:
#!/bin/bash
export MYSQL_PASSWORD=${MYSQL_PASSWORD:-root}
export INSTALL_WITH_EXAMPLE_DATA=${INSTALL_WITH_EXAMPLE_DATA:-false}
export SERVER_NAME=${SERVER_NAME:-localhost}
set -e
if [[ "$INSTALL_WITH_EXAMPLE_DATA" = "true" ]]; then
echo "(!) Warning: doing aggressive install (assuming empty box just for us and being rude in actions)"
fi;
sudo apt-get update
# set some mysql password so we can proceed without interactive prompt for it
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password $MYSQL_PASSWORD"
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $MYSQL_PASSWORD"
sudo apt-get -y install mysql-server
sudo apt-get install -y git python-setuptools python-dev libavcodec-dev libavformat-dev libswscale-dev libjpeg62 libjpeg62-dev libfreetype6 libfreetype6-dev apache2 libapache2-mod-wsgi mysql-server mysql-client libmysqlclient-dev gfortran
sudo apt-get install -y libav-tools
sudo easy_install -U SQLAlchemy pillow wsgilog mysql-python munkres==1.0.12 parsedatetime argparse
sudo easy_install -U numpy
git clone https://github.com/cvondrick/turkic.git
git clone https://github.com/cluePrints/pyvision.git
git clone -b contrib https://github.com/cvondrick/vatic.git
cd turkic
sudo python setup.py install
cd ..
# without this bit cython pyvision compilation fails
sudo apt-get install -y g++ make
sudo easy_install pip
sudo pip install cython==0.20
cd pyvision
sudo python setup.py install
cd ..
if [[ "$INSTALL_WITH_EXAMPLE_DATA" = "true" ]]; then
sudo cp /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled
mysql -u root -p$MYSQL_PASSWORD -e 'create database vatic;'
sudo bash -c "cat > /etc/apache2/sites-enabled/000-default" <<EOF
WSGIDaemonProcess www-data
WSGIProcessGroup www-data
<VirtualHost *:80>
ServerName $SERVER_NAME
DocumentRoot /home/user_name/install_document/vatic/public
WSGIScriptAlias /server /home/user_name/install_document/vatic/server.py
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
EOF
sudo cp vatic/config.py-example vatic/config.py
sudo sed -ibak "s/root@localhost/root:$MYSQL_PASSWORD@localhost/g" vatic/config.py
sudo apache2ctl graceful
cd vatic
turkic setup --database
turkic setup --public-symlink
turkic status --verify
# setup demo dataset
mkdir -p /home/user_name/install_document/vagrant_data/example
wget http://techslides.com/demos/sample-videos/small.mp4 -O /home/user_name/install_document/vagrant_data/small.mp4
turkic extract /home/vagrant/vagrant_data/small.mp4 /home/vagrant/vagrant_data/example/
turkic load example_id /home/user_name/install_document/vagrant_data/example/ example_label1 example_label2 example_label3 --offline
wget -qO- "http://localhost:80/?id=1&hitId=offline" > /dev/null \
&& echo "We are rather done. Go to http://localhost:8080/?id=1&hitId=offline and see how this thing works" \
|| echo "Something went rather wrong and now you'll have to troubleshoot"
else
echo "*****************************************************"
echo "*** Please consult README to finish installation. ***"
echo "*****************************************************"
fi;
2.将vatic-install.ch文件放在你要安装的目录下,并且在该目录下打开终端
sudo pip install cython==0.20
chmod +x vatic-install.sh
./vatic-install.sh
cd vatic
问题:
(1)no module named "xxx"的错误
执行 pip2 install 指令安装相应模块
(2)murkres 版本问题(最新的版本会有错误,这里要根据终端的提示安装相应版本,我安装时提示要使用1.0.12版本,所以就使用下面的指令)
pip install munkres== 1.0.12或者pip2 install munkres==1.0.12
(3)可能会让你输入github账户密码,输入即可,这里保证github能用
(4)如果是mysql sqlalchemy或者pillow之类的安装错误,请查看vatic-install.sh当中的安装这些软件包的语句,然后在vatic-install.sh文件中删除相应语句,并另外独自安装相关软件包,不要在该文件当中安装。
(5)执行vatic-install.sh可能会更新系统的内核,所以保证安装过程使用的是一个内核,不然会安装报错,例如使用pip时内核更新了,就会出现pip指令无法使用的情况,这里可以重新安装pip或者换回内核或者删除vatic-install.sh中更新的语句。
2.配置 http server
/etc/apache2/sites-enabled/000-default.conf
替换以下内容,这里同样要修改user_name和install_document为自己的那个数据,其中
ErrorLog /etc/apache2/error.log语句可以让我们在error.log文件里查看到服务器登录错误的信息,这一步在后面有可能会用到
WSGIDaemonProcess www-data python-eggs=/home/user_name/.python-eggs
WSGIProcessGroup www-data
<VirtualHost *:80>
ServerName 0.0.0.0
DocumentRoot /home/user_name/install_document/public
WSGIScriptAlias /server /home/user_name/install_document/vatic/server.py
ErrorLog /etc/apache2/error.log
CustomLog /var/log/apache2/access.log combined
<Directory /home/user_name/install_document/vatic>
<Files server.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
ServerName localhost:80
启用mod_headers模块:
$ sudo cp /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled
重启Apache:
$ sudo apache2ctl graceful
3.配置SQL
创建vatic数据库:
mysql -u root -r
mysql> create database vatic;
这里的登录密码是 root
更新mysql root为无密码:
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password";
flush privileges; #更新所有操作权限
quit;
这些地方如果碰到问题请自行百度,因为这些问题都比较容易解决
启动:
$ cp config.py-example config.py
注意,这一句一定要执行,其他博客上说如果不要线上服务则不需要执行是错误的,我看了下官网,发现那些博客要么是翻译有误要么是纯粹复制粘贴的。
初始化数据库:(在vatic文件下执行,有关于turkic指令的都在vatic文件夹下执行)
$ turkic setup --database
重启数据库:
$ turkic setup --database --reset
允许vatic访问turkic:
$ turkic setup --public-symlink
这一步会在*/vatic/public文件夹下创建名为turkic软链接文件,如果你重新安装的时候执行cp config.py-example config.py时遇到错误 Could not create symlink的错误,删掉这个turkic文件即可
4.验证是否安装完成
$ turkic status --verify
注意:不打算使用Mechanical Turk,忽略由Mechanical Turk引起的任何错误(即执行后出现的第一个错误)
执行上一句后,会出现错误
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!
解决:改Apache配置/etc/apache2/apache2.conf添加(user_name,install_docment仍旧要修改)
<Directory /home/user_name/install_document/vatic/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
重启后解决问题 $ sudo apache2ctl graceful
如果还有错误404的提示
则在之前提到的000-default.conf文件中添加(仍旧不要忘了修改user_name这两个东西)
<Directory /home/user_name/install_document/vatic/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
当执行验证指令后后两项为OK时,则安装成功
5.示例
1.视频帧提取
$ mkdir /path/to/output/directory
$ turkic extract /path/to/video.mp4 /path/to/output/directory
创建自定义的视频帧输出文件夹
在vatic文件下执行,抽取帧到输出文件夹
已经取好的视频帧可通过命令转化为vatic的格式
$ turkic formatframes /path/to/frames/ /path/to/output/directory
2.导入离线视频
$ turkic load identifier /path/to/output/directory Label1 Label2 Label3
标签Label1 Label2的用法见官网,identifier即工作名称,你可以命名为job1,work1等等
3.publish视频(离线)
$ turkic publish --offline
问题:publish后打开http://localhost?id=1&hitId=offline 网址显示 Server Error
解决方法:在/etc/apache2/sites-enabled/000-default.conf添加(install_doucument即安装路径)
<Directory /install_document/vatic>
<Files server.py>
Require all granted
</Files>
</Directory>
执行上一步之后若还是出错,则打开我们之前提到的文件
/etc/apache2/error.log文件,若出现红框中的错误,则是因为途图中所示的路径文件__init__.py文件需要进行一些修改
我们打开该文件,在代码 import os 下面添加(修改user_name)
os.environ['PYTHON_EGG_CACHE'] = '/home/user_name/.python-eggs'
如果仍旧不行,则修改/home/user_name/.python-eggs中的到.python-eggs文件的路径,这个请根据自己实际修改,该文件可使用 Ctrl+h键在/home/user下找到。如果还不行……我就真的不知道了……请各位百度解决问题[抱歉]
4.导出voc数据
$ turkic dump identifier -o /output --pascal --pascal-skip 1
–pascal -skip n 的用法即每隔n帧取一帧,不加这个属性默认为15帧取一次
6.其他
1.更多的教程请参照官网
2.每个线下地址只能publish 300帧,相对于视频的长度大致为10s,每个identifier可放置的帧数似乎没限制,一次放几千帧都没问题,你可以放上2k帧或者更多帧然后再publish,vatic会自动生成溢出的线下地址
3.拉取/导出voc数据会直接拉取所有identifier 中的数据