3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CVATのセットアップ方法

Last updated at Posted at 2024-05-08

CVATはオープンソースで使える画像のアノテーションツールです。様々な形式のアノテーションデータを出力することができます。自分でサーバーを立てると全ての機能を無料で使えるので自前のサーバーで運用するのがオススメです。もちろん、有料ですがCVAT側に全てを管理してもらう場合は安心感があります。今回は、CVATの自前での立ち上げ方について解説していきます。

Dockerのインストール

以下のサイトからインストーラをダウンロードしてDocker Desktopをインストールします。

以下のようなウィンドウが出てくればOKです。ちなみにサインインする必要はありません。

DockerDesktop.png

Windowsの方はDokcerをインストトールする前にWSLを設定してください。

CVATのインストール

CVATをインストールする前にgitがまだインストールされていない方はインストールしてください。

まず、Terminalを開いてCVATをダウンロードしたいフォルダまで移動します。

cd <フォルダのパス>

GitHubリポジトリからCVATをダウンロードします。この時、タグを指定しないとデフォルトではdevブランチのものを使うことになってしまうので、Tagsにあるバージョンを指定します。今回はv2.12.1を使用します。また、フォルダを軽くするために、ダウンロードするコミットの深さを1にしています。

git clone https://github.com/cvat-ai/cvat -b <タグ> --depth 1

クローンが終わったら、バージョンをわかりやすくするためにフォルダ名を変えておきます。

mv cvat cvat_v2.12.1

次にCVATフォルダに移動します。

cd cvat_v2.12.1

サーバーとして運用したい場合は先に環境変数CVAT_HOSTにサーバーのIPアドレスをセットします。

export CVAT_HOST=<IPアドレス>

CVATフォルダ内で以下のコマンドを実行するとコンテナが立ち上がります。

docker compose up -d

ブラウザで

http://localhost:8080

または、

http://<サーバーのIPアドレス>:8080

にアクセスすると次の画面が表示されます。

スクリーンショット 2024-05-04 17.50.54.png

左上の「Create an account」を押して適当なアカウントを作成します。

これで準備完了です。DockerDesktopを使っている場合は、ポチポチとコンテナのオンオフができるので、使いたい時はコンテナを立ち上げて、終わったらストップさせます。

本格的にサーバーとして運用する場合はスーパーユーザーを以下のコマンドを走らせて作成し、それでまずはログインします。

docker exec -it cvat_server bash -ic 'python3 ~/manage.py createsuperuser'

自動アノテーションのセットアップ

CVATはYOLOなどを読み込んで自動でアノテーションしてくれる機能があります。以下ではそのセットアップ方法について解説します。

さまざまなOSで試行したところ、Linux以外では今のところ上手く行きませんでした。Windows、Macの方はご注意ください。

nuctlのセットアップ

まず、コンテナを落としておきます。

docker compose down

続いて、以下のファイルを開いて4行目を確認します。

components/serverless/docker-compose.serverless.yml

docker-compose.serverless.yml
services:
  nuclio:
    container_name: nuclio
    image: quay.io/nuclio/dashboard:1.11.24-amd64
(以下省略)

1.11.24-amd64となっているのでこれにあうバージョン(1.11.24)のnuctlをダウンロードします。

wget https://github.com/nuclio/nuclio/releases/download/<バージョン>/nuctl-<バージョン>-linux-amd64

ダウンロードが完了したら/usr/local/bin/nuctlに移動させます。

sudo mv nuctl-<バージョン>-linux-amd64 /usr/local/bin/nuctl
sudo chmod +x /usr/local/bin/nuctl   

以下のコマンドでエラーが出なければOKです。

nuctl

AIモデルのセットアップ

デフォルトでアノテーションに使えるのモデルのリストは以下に記載されています。

今回はYOLOv7をセットアップするので、上記のリストの「YOLOv7」をクリックすると、

に飛びます。

これのURLのservelessからnuclioの前までを切り出して(ここYOLOv7では:serverless/onnx/WongKinYiu/yolov7)(SAMの場合はserverless/pytorch/facebookresearch/sam

CPUでアノテーションする場合は

./serverless/deploy_cpu.sh <切り出したURL>

GPUを活用する場合は

./serverless/deploy_gpu.sh <切り出したURL>

を実行するとAIモデルのセットアップが完了します。(終了するまで時間がかかります)

GPUを使用したい場合は以下のようにセットアップすると良いみたいですが、私の環境ではエラーを吐かずに正常に設定完了するものの、GPUが使われている感じがしませんでした。

nuctl create project cvat
nuctl deploy --project-name cvat \
  --path serverless/onnx/WongKinYiu/yolov7/nuclio \
  --triggers '{"myHttpTrigger": {"maxWorkers": 1}}' \
  --resource-limit nvidia.com/gpu=1

参考:https://qiita.com/wakaba130/items/879b5e996e7eb3699ec9

コンテナの起動

続いて、以下のコマンドでコンテナを起動します。

docker compose -f docker-compose.yml -f components/serverless/docker-compose.serverless.yml up -d

コンテナを落としたい場合は以下のコマンドを使用します。

docker compose -f docker-compose.yml -f components/serverless/docker-compose.serverless.yml down

テスト

この動画でどんな感じに検出されるのか最後に試してみました。

https://pixabay.com/ja/videos/%E3%82%B8%E3%83%A5%E3%83%8D%E3%83%BC%E3%83%96-%E3%82%B9%E3%82%A4%E3%82%B9-%E9%89%84%E9%81%93%E9%A7%85-44510/

Jobの右下の「Actions」から「Automatic annotation」を選択して、
人と乗り物を検出するように設定して、

スクリーンショット 2024-05-08 18.08.18.png

自動アノテーションを走らせると、

スクリーンショット 2024-05-08 17.54.09.png

以下のような感じになりました。

画面収録 2024-05-08 18.01.58 (1).gif

オリジナルのAIモデルを載せたい場合については次の記事に書いています。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?