ビデオアノテーションツールVATICのインストールメモ。
VATICについてはDERiVEの紹介記事で解説されていますが、こんな感じでフレーム単位でビデオアノテーションをするものです。
環境
- ubuntu 16.04 LTS
- Apache 2.4.18
- Python 2.7
前準備
VATICのREADME.mdのままでは動かなかったので、この辺のpdfを参考にして依存ライブラリをインストールする。
sudo apt-get update
sudo apt autoremove
sudo apt-get install python-setuptools
sudo apt-get install git
sudo apt-get install build-essential
sudo apt-get install autoconf libtool pkg-config python-opengl python-imaging python-pyrex python-pyside.qtopengl idle-python2.7 qt4-dev-tools qt4-designer libqtgui4 libqtcore4 libqt4-xml libqt4-test libqt4-script libqt4-network libqt4-dbus python-qt4 python-qt4-gl libgle3 python-dev
sudo apt-get -y install apache2
sudo apt-get install libapache2-mod-wsgi
sudo a2enmod wsgi #WSGI有効化
sudo service apache2 restart
sudo apt-get install python-mysqldb
sudo apt-get install mysql-server
sudo easy_install munkres
sudo apt-get install python-pip
pip install --upgrade pip
sudo pip2 install --upgrade parsedatetime
sudo apt-get install libjpeg-dev
pip install -I pillow
sudo ln -s /usr/lib/x86 64-linux-gnu/libjpeg.so /usr/lib
pip install -I pillow
sudo pip install cython==0.20
インストール
VATIC tool本体
mkdir ~/vatic-tool
cd ~/vatic-tool
wget http://mit.edu/vondrick/vatic/vatic-install.sh
chmod +x vatic-install.sh
sh vatic-install.sh
cd vatic
HTTPサーバ設定
Apache設定ファイル(000-default.conf)を編集。
VATICのREADME.mdはApache2.2系なので、結構変えた。
sudo vi /etc/apache2/sites-enabled/000-default.conf
WSGIDaemonProcess www-data python-eggs=/tmp/.python-eggs
WSGIProcessGroup www-data
<VirtualHost *:80>
ServerName vatic.domain.edu
DocumentRoot /home/USER/vatic-tool/vatic/public
WSGIScriptAlias /server /home/USER/vatic-tool/vatic/server.py
CustomLog /var/log/apache2/access.log combined
<Directory "/home/USER/vatic-tool/vatic/public">
Options Indexes FollowSymlinks
AllowOverride All
Require all granted
</Directory>
<Directory "/home/USER/vatic-tool/vatic">
<Files server.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
headers.loadをコピーして、Apacheを再起動
sudo cp /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled
sudo apache2ctl graceful
SQLサーバ設定
MYSQL設定。VATIC用のDBを作っておく。
mysql -u root -p
mysql> create database vatic;
VATIC設定
config.py設定
cd ~/vatic-tool/vatic
cp config.py-example config.py
vi config.py
signature = "" # AWS secret access key
accesskey = "" # AWS access key ID
sandbox = True # if true, put on workersandbox.mturk.com
localhost = "http://localhost/" # your local host
database = "mysql://root:PASSWORD@localhost/vatic"
geolocation = "" # api key for ipinfodb.com
maxobjects = 25;
# probably no need to mess below this line
import multiprocessing
processes = multiprocessing.cpu_count()
import os.path
import sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
- セットアップ
chmod 777 server.py
turkic setup --database
turkic setup --database --reset
turkic setup --public-symlink
動作確認
VATICツールが見えるようになっているかを確認。
localhostにアクセスすると"Welcome to vatic"が表示されるはず
VATICツールの状態を確認。AWSを使わない場合(オフラインモード)は以下でOK。
$ turkic status --verify
Configuration:
Sandbox: True
Database: mysql://root:PASSWORD@localhost/vatic
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... OK
アノテーションタスク開始
以下事例でアノテーションタスクを作成。
- Vimeo からDLしてきた素材1(input_video.mp4) をアノテーション
- identifierは"TESTTASK"
- 解像度は640x360に変更
- フレーム長は5000
- AWSを使わないオフラインモード
- アノテーション属性は"Human Car Building"の3種類
(1) mp4を静止画に分割
$ turkic extract ~/dat/input_video.mp4 ~/dat/input_video/ --width 640 --height 360
(2) 分割した静止画を読み込み
$ turkic load TESTTASK ~/dat/input_video/ Human Car Building --offline --length 5000
Checking integrity...
Searching for last frame...
Found 6116 frames.
Binding labels and attributes...
Creating symbolic link...
Creating segments...
Video loaded and ready for publication.
(3) タスク発行
$ turkic publish --offline
(4) アノテーション用のURLにアクセス
$ turkic find --id TESTTASK
http://localhost/?id=46&hitId=offline
http://localhost/?id=47&hitId=offline
(5) アノテーション
New Objectで新規オブジェクトを追加、フレーム補間を活用しながら仕上げる
(6) アノテーション結果をダンプ
turkic dump TESTTASK -o ~/dat/input_video/output.txt
Dumping video TESTTASK
0 334 189 387 235 0 1 0 0 "Car"
:
1 465 187 482 229 0 1 0 0 "Human"
:
3 256 6 300 68 0 1 0 0 "Building"
各カラムの意味は以下の通り。
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.
トラブルシューティング
Q. Web interfaceにアクセスすると"You don't have permission to access / on this server."と表示される
A. Apache2.4系は仕様が変わったため、VATICのREADME.md(Apache2.2)のままでは動かない。/etc/apache2/sites-enabled/000-default.conf
に以下の記述を追加する。
<Directory "/path/to/vatic/public">
Require all granted
</Directory>
Q. Web interfaceにアクセスすると"ServerError"と表示される
A. /etc/apache2/sites-enabled/000-default.conf
に以下の記述を追加する。関連FAQ。
WSGIScriptAlias /server /path/to/vatic/server.py
Q. /var/www/.python-eggsにアクセス出来ないと言われる
A. コンソールで以下実行。関連FAQ。
sudo mkdir /var/www/.python-eggs
sudo chown www-data:www-data /var/www/.python-eggs
sudo chmod -R 777 /var/www/.python-eggs
sudo chown www-data:www-data /var/www/.python-eggs
Q. Web interfaceにどうやってアクセスする?
A. turkic publish
した際に表示されるアドレスにアクセスする
Q. turkic setup --public-symlink
とすると、Could not create symlink!
と言われる
A. 二回目の実行以降はシンボリックリンクを作成できない。確認のためには/path/to/vatic/public/turkic
以下のリンクを削除してから実行すれば以下のように表示される。
Created symblink /usr/local/lib/python2.7/dist-packages/turkic-0.2.5-py2.7.egg/turkic/public to /path/to/vatic/public/turkic
Q. http://localhost/?id=1&hitId=offline にアクセスできるがDownloading the video... 0%でとまる
A. /var/log/apache2/error.log
を確認。自分の場合は以下のエラーが出ており、ディレクトリのアクセス権の問題だった。turkic extract
でフレームを書き出す先をuser権限のディレクトにすることで解決。
[Sat Mar 04 16:40:48.626938 2017] [core:error] [pid 3857:tid 140653468055296] [client 127.0.0.1:56708] AH00037: Symbolic link not allowed or link target not accessible: /path/to/vatic/public/frames/identifier, referer: http://localhost/?id=1&hitId=offline
参考サイト
- VATIC : カリフォルニア大Irvine校によるフリーの動画アノテーションツール
- How to Set up VATIC(Video Annotation Tool from Irvine, California)? (pdf)
- Vaticのインストールのコツ