はじめに
アノテーションツールは,画像や動画などのデータに対して,ラベルや矩形をつけることができるツールです.これは,機械学習のモデルを訓練するために必要であり,高度な画像処理やコンピュータビジョンの分野において非常に重要です.VATICは,オンラインで利用できる無料のアノテーションツールで,高速で使いやすいと評判です.この記事では,VATICをDocker composeでクイックスタートする方法について紹介します.
VATICは,ユーザーインターフェースがシンプルで直感的なため,非常に人気があります.しかし,VATICを単独で実行する場合,インストールや設定に多くの時間がかかることがあります.このため,Docker composeを使用してVATICをクイックスタートすることができます.
実際にツールを活用しているサイトはこちらです👇👇👇.
https://hamaruki.com/ika-action_video-action-recognition/
アノテーションツールとは?
アノテーションツールは,データセットを作成するために使用されるプログラムです.画像,音声,テキストなどのデータを正確にラベル付けすることができます.アノテーションツールを使用することで,機械学習アルゴリズムをトレーニングするために必要なデータセットを作成することができます.
VATICとは?
VATIC(Video Annotation Tool from Irvine, California)は,画像や動画のアノテーションを行うためのオープンソースのツールです.VATICは,Amazon Mechanical Turkを統合して,タスクを自動化することができます.
AVAデータセットに近い形で出力できる点がポイントです.
https://hamaruki.com/what-is-ava_datasets/
Dockerとは?
Dockerは,コンテナ仮想化のためのオープンソースプラットフォームです.Dockerを使用することで,開発者はアプリケーションとその依存関係を包含する単一のパッケージであるDockerイメージを作成し,移植性の高いアプリケーションを構築することができます.
Docker Composeとは?
Docker Composeは,Dockerコンテナの複数のインスタンスを定義して実行するためのツールです.Docker Composeを使用することで,複数のDockerコンテナを一つの環境で実行することができます.Docker Composeを使用すると,複数のコンテナを管理することが簡単になります.Docker Composeは,Dockerイメージを使用して環境を構築することができるため,簡単に開発環境を構築することができます.また,Docker Composeを使用することで,開発者がDockerコンテナを簡単に管理できるため,開発プロセスを迅速化することができます.
必要なもの
この記事でVATICをクイックスタートするために必要なものは以下の通りです.
- Dockerがインストールされたマシン
- Docker composeがインストールされたマシン
- VATICのリポジトリ(https://github.com/HamaruKi0303/vatic-docker.git)
Quick Start
以下の手順に従って,Docker composeを使用してVATICをクイックスタートします.
ステップ1:VATICのリポジトリをクローンする
VATICのリポジトリをクローンして,Docker composeの設定ファイルをダウンロードします.
git clone https://github.com/HamaruKi0303/vatic-docker.git
ステップ3:Docker composeを実行する
以下のコマンドを実行して,Docker composeを起動します.
$ docker-compose up
Creating network "vatic-docker_default" with the default driver
Pulling vatic (npsvisionlab/vatic-docker:)...
latest: Pulling from npsvisionlab/vatic-docker
064f9af02539: Pull complete
390957b2f4f0: Pull complete
cee0974db2b8: Pull complete
c8144262002c: Pull complete
5ee1f24af8a6: Pull complete
1d9960422fa1: Pull complete
baa5641dc562: Pull complete
671c438bbff0: Pull complete
deec772cc23b: Pull complete
7acbdd1641ac: Pull complete
b0b6f5f3d865: Pull complete
a45f9ecd8863: Pull complete
625e13411eb9: Pull complete
01f6ee126a43: Pull complete
ad731db2ae7f: Pull complete
d5e8d41b9f20: Pull complete
34816bf17724: Pull complete
Digest: sha256:aa9f113f1db9e6bda51bd87b4101e5cc9c23dcae3f0dddd6f34439884b61c345
Status: Downloaded newer image for npsvisionlab/vatic-docker:latest
Creating vatic-docker_vatic_1 ... done
Attaching to vatic-docker_vatic_1
vatic_1 | Labels = ak47
vatic_1 | !!!No new video or access to previous video's frames!!!
動画入れてないので起動後に終了します.動画の準備は次の章から説明していきます.
VATICの使い方
データのアップロード
まず,アノテーションするデータをアップロードします.VATICでは,画像ファイル,動画ファイル,およびオーディオファイルをサポートしています.
今回は下記のスプラトゥーン3のプレイ動画をアップロードします.
data\videos_in
というフォルダを作成して動画をそのフォルダに入れます.
labels.txt
ファイルを作成します.カテゴリごとにスペースで区切ります.
attack paint move enemy ally
再度docker-compose up
コマンドで動画を処理します.
$ docker-compose up
Starting vatic-docker_vatic_1 ... done
Attaching to vatic-docker_vatic_1
vatic_1 | Labels = attack paint move enemy ally
vatic_1 | New Videos to process.
vatic_1 | * Starting MySQL database server mysqld [ OK ]
vatic_1 | * Checking for tables which need an upgrade, are corrupt or were
vatic_1 | not closed cleanly.
vatic_1 | ffmpeg version N-80901-gfebc862 Copyright (c) 2000-2016 the FFmpeg developers
vatic_1 | built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
vatic_1 | configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --mandir=/usr/share/man --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libpulse --enable-libfreetype --enable-gnutls --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr --enable-libxvid --enable-libvidstab
vatic_1 | libavutil 55. 28.100 / 55. 28.100
vatic_1 | libavcodec 57. 48.101 / 57. 48.101
vatic_1 | libavformat 57. 41.100 / 57. 41.100
vatic_1 | libavdevice 57. 0.102 / 57. 0.102
vatic_1 | libavfilter 6. 47.100 / 6. 47.100
vatic_1 | libavresample 3. 0. 0 / 3. 0. 0
vatic_1 | libswscale 4. 1.100 / 4. 1.100
vatic_1 | libswresample 2. 1.100 / 2. 1.100
vatic_1 | libpostproc 54. 0.100 / 54. 0.100
vatic_1 | [h264 @ 0x24b8e60] Increasing reorder buffer to 1
vatic_1 | Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/root/vatic/data/videos_in/20230316152944.mp4':
vatic_1 | Metadata:
vatic_1 | major_brand : isom
vatic_1 | minor_version : 512
vatic_1 | compatible_brands: isomiso2avc1mp41
vatic_1 | encoder : Lavf59.27.100
vatic_1 | Duration: 00:04:25.27, start: 0.000000, bitrate: 27122 kb/s
vatic_1 | Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 26925 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
vatic_1 | Metadata:
vatic_1 | handler_name : VideoHandler
vatic_1 | Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 192 kb/s (default)
vatic_1 | Metadata:
vatic_1 | handler_name : SoundHandler
vatic_1 | Please use -b:a or -b:v, -b is ambiguous
vatic_1 | [swscaler @ 0x24d6000] deprecated pixel format used, make sure you did set range correctly
vatic_1 | [image2 @ 0x24f9a60] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
vatic_1 | Output #0, image2, to '/tmp/pyvision-ffmpeg-818011544/%d.jpg':
vatic_1 | Metadata:
vatic_1 | major_brand : isom
vatic_1 | minor_version : 512
vatic_1 | compatible_brands: isomiso2avc1mp41
vatic_1 | encoder : Lavf57.41.100
vatic_1 | Stream #0:0(und): Video: mjpeg, yuvj420p(pc), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 10000 kb/s, 30 fps, 30 tbn, 30 tbc (default)
vatic_1 | Metadata:
vatic_1 | handler_name : VideoHandler
vatic_1 | encoder : Lavc57.48.101 mjpeg
vatic_1 | Side data:
vatic_1 | cpb: bitrate max/min/avg: 0/0/10000000 buffer size: 0 vbv_delay: -1
vatic_1 | Stream mapping:
vatic_1 | Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native))
vatic_1 | Press [q] to stop, [?] for help
....
vatic_1 | Searching for last frame...
vatic_1 | Found 7958 frames.
vatic_1 | Video currentvideo already exists!
vatic_1 | /root/vatic/example.sh: line 68: /root/vatic/public/directory/index.html: cannot overwrite existing file
vatic_1 | http://localhost/?id=1&hitId=offline
vatic_1 | http://localhost/?id=2&hitId=offline
vatic_1 | http://localhost/?id=3&hitId=offline
vatic_1 | http://localhost/?id=4&hitId=offline
vatic_1 | http://localhost/?id=5&hitId=offline
vatic_1 | http://localhost/?id=6&hitId=offline
vatic_1 | http://localhost/?id=7&hitId=offline
vatic_1 | http://localhost/?id=8&hitId=offline
vatic_1 | http://localhost/?id=9&hitId=offline
vatic_1 | http://localhost/?id=10&hitId=offline
vatic_1 | http://localhost/?id=11&hitId=offline
vatic_1 | http://localhost/?id=12&hitId=offline
vatic_1 | http://localhost/?id=13&hitId=offline
vatic_1 | http://localhost/?id=14&hitId=offline
vatic_1 | http://localhost/?id=15&hitId=offline
vatic_1 | http://localhost/?id=16&hitId=offline
vatic_1 | http://localhost/?id=17&hitId=offline
vatic_1 | http://localhost/?id=18&hitId=offline
vatic_1 | http://localhost/?id=19&hitId=offline
vatic_1 | http://localhost/?id=20&hitId=offline
vatic_1 | http://localhost/?id=21&hitId=offline
vatic_1 | http://localhost/?id=22&hitId=offline
vatic_1 | http://localhost/?id=23&hitId=offline
vatic_1 | http://localhost/?id=24&hitId=offline
vatic_1 | http://localhost/?id=25&hitId=offline
vatic_1 | http://localhost/?id=26&hitId=offline
vatic_1 | http://localhost/?id=27&hitId=offline
アノテーションの作成
アップロードしたデータをアノテーションするために,アノテーションの作成を行います.アノテーションは,ラベルや矩形,線などの図形をデータ上に描画することで行います.
アノテーションのエクスポート
アノテーションが完成したら,エクスポートすることができます.エクスポートされたデータは,機械学習モデルの訓練に使用されます.
下記のコマンドとオプションで出力できます.
--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
root@7d7d5adefd4c:~/vatic$ turkic dump currentvideo -o /root/vatic/data/output.xml --xml
アノテートデータのフォーマット
下記のようなフォーマットで出力されます.
<annotations count="4">
<track id="0" label="paint">
<box frame="1500" xtl="230" ytl="241" xbr="387" ybr="350" outside="1" occluded="0"></box>
<box frame="1501" xtl="230" ytl="241" xbr="387" ybr="350" outside="1" occluded="0"></box>
<box frame="1502" xtl="230" ytl="241" xbr="387" ybr="350" outside="1" occluded="0"></box>
<box frame="1503" xtl="230" ytl="241" xbr="387" ybr="350" outside="1" occluded="0"></box>
<box frame="1504" xtl="230" ytl="241" xbr="387" ybr="350" outside="0" occluded="0"></box>
<box frame="1505" xtl="245" ytl="246" xbr="405" ybr="355" outside="0" occluded="0"></box>
<box frame="1506" xtl="261" ytl="251" xbr="423" ybr="360" outside="0" occluded="0"></box>
<box frame="1507" xtl="277" ytl="257" xbr="441" ybr="365" outside="0" occluded="0"></box>
<box frame="1508" xtl="292" ytl="262" xbr="459" ybr="370" outside="0" occluded="0"></box>
<box frame="1509" xtl="308" ytl="267" xbr="477" ybr="375" outside="0" occluded="0"></box>
...
</track>
</annotations>
まとめ
この記事では,Docker composeを使用してVATICをクイックスタートする手順を紹介しました.これで,VATICを簡単にインストールして使用することができます.
FAQs
- VATICはどのように使われていますか?
💡VATICは,画像や動画などのデータに対してラベルや矩形をつけることができるアノテーションツールです.主に,機械学習のモデルを訓練するために使用されます. - VATICは無料ですか?
💡はい,VATICは無料で利用できます.オンラインで利用できるため,インストールや設定などが不要で,すぐに使い始めることができます. - VATICはどのようなファイル形式をサポートしていますか?
💡VATICは,JPEG,PNG,BMP,AVI,MP4などのファイル形式をサポートしています. - VATICはどのようなオブジェクトを検出できますか?
💡VATICは,カスケード分類器を使用して,自動的にオブジェクトを検出することができます. - Docker Composeを使用することで,VATIC以外のアノテーションツールも簡単に設定することができますか?
💡はい,Docker Composeを使用することで,他のアノテーションツールも簡単に設定することができます. - VATICの設定に必要なスキルは何ですか?
💡VATICの設定には,Linux,Python,JavaScriptなどのスキルが必要です.
コメント