はじめに
初めまして!京セラコミュニケーションシステム 寳来(ほうらい)(@kccs_teruya-horai)です。
突然ですが、みなさんは CVAT をご存知でしょうか?
これは Intel が開発したコンピュータービジョン向け(つまりは画像)のアノテーションツールで、その取り回しの良さから画像認識AIに用いる学習データセットの作成などに広く用いられています。
本記事では、この CVAT を Google Cloud の Compute Engine で作成した Linux 仮想マシンに構築 する方法 をご紹介します。
本記事は 2023 年 12 月ごろに作成しております。
よって、引用している文章などはこの時点での最新となります。ご了承ください。
完成イメージ
Google Cloud の Compute Engine よりVMインスタンスを作成、その中に Docker の環境を構築し、コンテナに CVAT をインストールします。
インスタンスに構築した CVAT はローカルPCのブラウザから簡単にアクセスすることができます。
この記事の対象者
-
画像認識AIの導入を考えており、学習データとなる画像データは用意したが、アノテーション作業ができていないという方
-
アノテーション作業を行うにあたっての情報共有や進捗管理をより柔軟に行いたい方
-
Google Cloud に興味がある方
なぜ、クラウドにCVATを構築するのか?
昨今のAI技術の発展は目覚ましく、DXを進めるにあたってこれらの技術の導入を考えておられる方も多くいらっしゃるのではないでしょうか?
とくに、画像の物体認識をAIで行おうとすると
- 画像
- アノテーションデータ(画像中のどこに何が写っているかといった情報)
がAIに学習させる学習データとして必要となってきます。
アノテーションの例
ところで、良質な画像認識AIモデルの構築の成否は 良質な学習データが収集できたか否かでその大部分が決まる と言っても過言ではありません。
ここでいう学習データの質においては、「適切な画像が用いられているか?」というのはもちろん、「アノテーションが正しく行われているか?」という点も重要な要素になってきます。
単純作業と思われがちな画像へのアノテーション作業ですが、AIモデル構築においては非常に重要な工程であり、複数人でプロジェクトを進める場合はアノテーションの基準といった情報共有はしっかりと行った上で取り組むべきと言えるでしょう。
本記事では、このアノテーション作業を簡単に行うことができるツールである CVAT をクラウド上に構築する方法をご紹介します。
ローカルPCではなく クラウド上にアノテーション環境を構築 することで、アノテーション作業においてより円滑な情報共有ができるようになります。
前提
Google Cloud の利用開始がまだの方は以下サイトより利用登録を行うことができます。
[参照]公式サイト・ドキュメント
無料トライアルと無料枠
上記サイトの「無料で開始」ボタンから登録が可能
Google Cloud の無料プログラム
Google Cloudの無料プログラムの詳細を確認できます
1. インスタンスの設定
1-1. VMインスタンスの構築
ここでは、Google Compute Engine で Ubuntu 20.04 を搭載した VM インスタンスを作成します。
指示のない箇所はデフォルト設定のままで続行してください。
[Compute Engine] > [VMインスタンス] をクリックし、[インスタンスを作成] をクリックします。
VMインスタンスの作成に入ります。
名前は任意ですが、ここでは分かりやすく cvat-gce
としておきます。
レイテンシを抑えたいので、特段の事情が無ければリージョンはアクセス元の所在地から近いものを選びます。
マシンの構成の設定です。高パフォーマンスなものほど料金も高額になりますが、今回は Series は N1
、 マシンタイプは n1-standard-4
を選択します。
ブートディスクの設定を行います。OS は ubuntu
、バージョンは Ubuntu 20.04 LTS
、ブートディスクの種類は標準永続ディスク
を選択します。
サイズの項目では、VMインスタンスの保存容量を設定することができます。この後で行う Docker および CVAT の環境構築だけで 10GBほどストレージを占有する ことを考慮して、アノテーションを行いたいデータのサイズに合わせて設定を行ってください。ここでは多少余裕をもって 100GB
としておきます。
[アイデンティティと API へのアクセス] > [アクセス スコープ] より、すべての Cloud API に完全アクセス権を許可
を選択します。
作成ボタンを押してVMインスタンスの作成は完了です!
1-2. ファイアウォールルールの作成・反映
次に、ファイアウォールルールを設定します。
ファイアウォールによって任意のIP以外からのアクセスを遮断することで、セキュリティ対策を行いましょう。
ファイアウォールルールの作成とインスタンスへの反映方法は、以下のサイト様を参考にしてください。サイトの案内から変更して設定してほしい箇所を表に示しますので、適宜確認しながら設定を行ってください。
変更する項目 | 設定内容 |
---|---|
ソースIPの範囲 | アクセスを許可したいIP |
1-3. 外部IPアドレスの取得・反映
以下のドキュメントの [新しい静的外部 IP アドレスを予約する] と [新しい VM インスタンスへ静的外部 IP アドレスを割り当てる] を参考に、静的外部アドレスIPアドレスの取得とインスタンスへの反映を行ってください。
2. CVAT環境構築
ここまでで作成したインスタンスに SSH 接続し、各種インストール作業を行っていきます。
作成したインスタンスが起動されていることを確認した上で、 SSH ボタンを押します。
Chrome の別ウィンドウでコマンドラインが立ち上がれば SSH 接続は成功です。
ここからはゴリゴリとコマンドを叩いていきます。
はりきっていきましょう!
2-1. Dockerの構築
まずはVMインスタンスに Docker の環境を構築していきます。
インストール可能なパッケージの一覧を更新します。
sudo apt-get update
各種パッケージをインストールします。
sudo apt-get --no-install-recommends install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
GPG鍵をダウンロードし、aptマネージャーに追加します。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Docker の Ubuntu リポジトリをaptに追加します。
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
再度、インストール可能なパッケージの一覧を更新します。
sudo apt-get update
Docker 関連の各パッケージをインストールします。
sudo apt-get --no-install-recommends install -y \
docker-ce docker-ce-cli containerd.io docker-compose-plugin
docker
という名前のグループを作成します。
sudo groupadd docker
作成した docker
グループに指定したユーザーを追加します。[username]
の箇所をSSHへログインを行っているユーザー名に変更した上でコマンドを実行してください。
sudo usermod -aG docker [username]
以上で Docker の構築は完了ですが、最後にユーザーに権限が正しく与えられているかの確認を行います。
docker ps
コマンドを実行してください。Docker の権限が与えられていない場合、以下のようなログが出力されるかと思います。
$ docker ps
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied
SSHのウィンドウを閉じてSSHに接続し直し、再度 docker ps
コマンドを実行してください。以下のように表示されれば、 Docker の構築は成功です。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2-2. CVATのインストール
ここからはいよいよCVATのインストールを行っていきます。
まずはインストール可能なパッケージの更新を行います。
sudo apt-get update
CVAT のリモートリポジトリをローカルマシンにクローンします。
git clone https://github.com/opencv/cvat
カレントディレクトリの直下に作成された cvat
という名前のディレクトリへ移動します。
cd cvat/
インスタンスのIPアドレスからCVATへアクセスできるようにするために、環境変数 CVAT_HOST
に [1-3. 外部IPアドレスの取得・反映]で取得した静的外部アドレス をエクスポートします。
export CVAT_HOST=[取得した静的外部アドレス]
コンテナを起動します。実行完了まで少々時間がかかりますので、しばしお待ちください。
docker compose up -d
Superuser の情報を設定します。案内にしたがって ユーザー名、メールアドレス、パスワード の入力してください。CVATへのログインはこの Superuser で行いますので、 入力した内容はメモ等に控えておいて ください。
docker exec -it cvat_server bash -ic 'python3 ~/manage.py createsuperuser'
以上で CVAT のインストールは完了です。
2-3. CVATへのアクセス・ログイン
ここまでで構築したCVATへアクセスし、ログインを行ってみましょう。
作成したインスタンスが起動されていることを確認した上で、お手元のブラウザのURL入力欄に http://[インスタンスの静的外部アドレス]:8080
と入力します。CVAT の構築が正常に行えていれば、以下の画像のような CVAT のログイン画面が表示されます。
先ほど設定した Superuser の情報でログインして…
↑ このような画面になればCVATへのログインは完了です!
お疲れ様でした!!
3. 構築した CVAT の起動・停止
構築したインスタンスを使った CVAT の起動と停止の方法をご紹介します。
3-1. CVATの起動
CVAT 構築のために作成したインスタンスを起動し、SSH 接続を行います。
SSH が起動したら cvat
ディレクトリへ移動します。
cd cvat/
環境変数 CVAT_HOST
にインスタンスの静的外部アドレスをエクスポートします。
export CVAT_HOST=[取得した静的外部アドレス]
コンテナを起動します。
docker compose up -d
お手元のブラウザのURL入力欄に http://[インスタンスの静的外部アドレス]:8080
と入力すれば CVAT へのアクセスは完了です。
3-2. CVATの停止
Google Cloud のVMインスタンスは起動時間に応じた課金がなされます。
CVAT を使い終わった後は忘れずにインスタンスを停止することで、料金コストの節約をはかりましょう。
カレントディレクトリが cvat
であることを確認した上で、起動中のコンテナを停止します。
docker compose down
SSH 接続からログアウトします。
exit
Compute Engine の画面よりインスタンスを停止すれば、CVATの停止は完了です。
まとめと次回予告
いかがでしたでしょうか?
本記事ではアノテーションツールである CVAT をクラウドに構築する方法をご紹介させていただきました。
次回の記事ではセキュリティ対策をより万全にしたいという方に向けて、構築した CVAT 用のインスタンスに SSL を適用することで https 通信を可能にする方法をご紹介します。
お楽しみに!
おしらせ
弊社X(旧:Twitter)では、Qiita投稿に関する情報や各種セミナー情報をお届けしております。情報収集や学びの場を求める皆さん!ぜひフォローしていただき、最新情報を手に入れてください😀
https://x.com/kccs_digital