Amazon Web Services ブログ
Amazon SageMaker で CVAT AI 自動画像アノテーションシステムをデプロイする
この記事は”使用 Amazon SageMaker 部署 CVAT AI 自动图像标注系统”を翻訳したものです。(原文は中国語のものです)
背景紹介
Amazon SageMaker はデベロッパーとデータサイエンティストを支援して、機械学習 (Machine Learning, ML) モデルの準備、構築、トレーニングおよびデプロイの一連の機能を提供するフルマネージド型クラウドサービスです。
機械学習において学習データは非常に重要であり、コンピュータビジョン (Computer Vision, CV) 領域の教師あり学習課題を取り扱う時の大事な一歩は学習データにアノテーションを付けることです。CVAT (Computer Vision Annotation Tool) は画像やビデオに自動的にアノテーションを付けてくれる便利なツールです。2018 年に GitHub でオープンソース化されて以来多くの注目を集めており、AI 自動画像アノテーション機能は非常に人気です。
公式のCVATインストールガイドではスタンドアロンデプロイ方式が推奨されています。このデプロイ方式はアプリケーション層、データベース層、キャッシュ層、AI 推論層の全てを Docker 経由で単一物理マシンまたは仮想マシン上に展開します。この方法だとリソースの活用、セキュリティ、高可用性などの観点でエンタープライスレベルの準拠を満たすことが難しいので、本記事では CVAT プラットフォームを AWS のサーバーレス上にデプロイする方法について紹介します。
デプロイアーキテクチャ
CVAT の本体について簡単に紹介します。
- Web アプリケーションフレームワークは Python Django を使用しています。
- データベースは PostgreSQL を使用しています。
- AI 推論エンジンはオープンソースフレームワーク nuclio を使用しています。
CVAT 公式サイトで提供するデプロイ方法は Docker Compose を使って、全てのリソースを単一物理マシン/仮想マシン上にデプロイします。公式デプロイ方法に比べ、下図のアーキテクチャのように各パーツをリファクタリングしてから AWS 上にデプロイします。
公式のスタンドアロンデプロイ方式に比べて以下を改善しています。
- セキュリティ面を考慮した上でアーキテクチャ全体は Amazon VPC 内で展開します。ALB と NAT ゲイトウェイはパブリックサブネットに配置します。ALB は外部からのアクセスを分散させるために使用します。NAT ゲートウェイは VPC 外にある Docker イメージを取得する時使います。
- ウェブサーバ層やデータベース層および SageMaker のエンドポイントはプライベートサブネットに配置します。
- Fargate for ECS
- CVAT Server Service と CVAT UI Sevice は Fargate for ECS のコンテナで実行されます。
- 自動アノテーションの AI 推論は CVAT Serverless Service によってリファクタリングされ、すべての推論エンドポイントが SageMaker にデプロイされます。
- CVAT CMD Task の実行よりデータベースを初期化し、デモ用のファイルを S3 から EFS にコピーします。
- Database layer
- CVAT PostgreSQL は RDS 上で実行されます。
- CVAT キャッシュレイヤーコンテナは ElastiCache Redis に置き換えられます。
- メディアファイルの CVAT Docker ボリュームは EFS に置き換えられます。
デプロイ手順
AWS CloudFormation により簡単かつ素早くデプロイができます。下記の Launch Stack をクリックしていただくと、自動的に東京リージョン (ap-northeast-1) にテンプレートが展開されます。ソースコードはこちらを参照してください。
スタックのクイック作成
- スタックの名前を入力する必要があります。(例:CVAT)
- 下部の「I acknowledge that AWS CloudFormation might create IAM resources with custom names」のチェックを入れてから「Create stack」ボタンを押してデプロイします。
カスタマイズできるパラメータ
AWS CloudFormation のテンプレートを修正すれば、以下のパラメーターをカスタマイズできます。
- CVAT ユーザーに関するパラメータ
- 例:ログイン時のユーザー ID、パスワード
- データベースに関するパラメータ
- VPC に関するパラメータ
CloudFormation スタックの出力
15分〜20分待つと、スタックの作成が「Complete」になりま す。
下図のように、「Output」のタブをクリックすると、作成された各リソースが確認できます。4行目の URL にウェブブラウザーでアクセスすると CVAT アプリケーションのログイン画面が表示されます。
CVAT を使ってアノテーションしてみよう
ログイン画面には Username と Password を入力必要があります。Username のデフォルト値は admin であり,Password は cvat123456 です。
ログインできた後、「Models」からすでに SageMaker にデプロイした 5 つの学習モデルの推論エンドポイントを確認できます。
Task <<< Create new taskをクリックしてください。
Create new task の画面に以下を入力してください
- Name: handball
- Labels: Add labelをクリックして、「person」というラベルを作ります。
入力完了後 Select files では Connect file share のタブをクリックします。
Connected file share の裏側は Amazon EFS であり、デモ用のデータが保存されています。root<<<handballを選択してください。このフォルダにはある動画の 400 枚のフレーム画像が入っています。Submit ボタンをクリックします。
Tasks <<< Openをクリックしてタスク画面に入ります。
効率を重視するため、手動アノテーションの代わりに Automatic annotation を使ってフレーム画像にアノテーションします。
Automatic annotation をクリックしますと,どのモデルを使用するかの画面が出てきます。今回は pth-faster-rcnn を選択します。
Annotate ボタンを押します。すると、SageMaker の推論エンドポイントを介してフレーム画像中の人物 (person) にアノテーションするタスクが実施されます。
Task の画面からアノテーションの進捗を確認できます。
10 分ぐらい待つと、400 枚フレーム画像のアノテーションが完了するでしょう。Job #1 のリンクをクリックするとアノテーション結果を確認できます。
下図のように赤いバウンディングボックス内には人物 (person) をラベリングできました。再生ボタン▶︎をクリックすると、アノテーション付きの動画を再生できます。
CVAT の他の機能についてご興味があればこちらのCVATマニュアルを参照してください。
まとめ
CVAT 公式ドキュメントで記載されているスタンドアロンのデプロイ方法に比べ、このソリューションアーキテクチャはセキュリティーと可用性がより高く、エンタプライズレベルのアノテーションタスクをサポートできます。
翻訳は Solutions Architect の Tong Fei が担当しました。原文はこちらです。
About the Author
Debin Huang is a Sr.Solutions Architect at AWS. He is serving the global account team, responsible for technical architecture design and consulting, dedicated to the application and deployment of enterprise-level applications in AWS cloud services, and has nearly two decades of experience in the development and implementation of large-scale enterprise applications.