Docker-composeでVATICをクイックスタート【動画アノテートツール】

Ika-Action

はじめに

アノテーションツールは,画像や動画などのデータに対して,ラベルや矩形をつけることができるツールです.これは,機械学習のモデルを訓練するために必要であり,高度な画像処理やコンピュータビジョンの分野において非常に重要です.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をクイックスタートするために必要なものは以下の通りです.

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などのスキルが必要です.

コメント

タイトルとURLをコピーしました