Amazon Web Services ブログ
アクシスコミュニケーションズの監視カメラと Amazon Rekognition によりスケーラブルで高精度、費用対効果の高い映像分析を実現
このブログは、Oliver Myers と Woody Borraccinoによって書かれた Enable scalable, highly accurate, and cost-effective video analytics with Axis Communications and Amazon Rekognition を翻訳したものです。
各所に置かれたカメラやセンサーの数が飛躍的に増加する中、さまざまな業界の企業がかつてないほど多くの映像を利用しています。また、動画分析技術の進歩により潜在的なユースケースが拡大し、こうしたデバイスはビジネス運用とインテリジェンスの改善に用いられています。今や、急速に増えている映像を効率的に確認する能力が重要になってきています。しかし、これが目視による確認になってしまうことがあまりに多いのです。目視作業は信頼性が低く、スケーラビリティが低く、コストがかかるため、正確かつ大規模に映像を処理するために自動化が必要であることは明らかです。
この記事では、アクシスコミュニケーションズのカメラを Amazon Rekognition と組み合わせて利用できるようにする方法を説明します 。Axis のエッジテクノロジーと Amazon Rekognition を組み合わせることで、ビジネスやセキュリティにおいて実用的な洞察を得るために必要な高品質の映像分析を提供できる効率的でスケーラブルなソリューションが実現します。
映像をプロアクティブに分析してビジネス成果を促進
映像監視はこれまで、事後対応的な方法で利用されてきました。セキュリティ担当者は、壁に並べて設置されたモニターで問題がないかを監視したり、証拠の確認のために、映像を事後見返したりしていました。今日のカメラは、クラウドにおけるエッジ機能と人工知能 (AI) と機械学習 (ML) の進歩により、リアルタイムでインシデントに対応できるようになりました。
高画質のカメラが高精細な画像を取得してクラウドで分析できるようになり、分析が今までより実施しやすくなりました。また、エッジ処理により、分析を実現しやすくし、効果的な分析のために送信するデータ量を減らして帯域幅を削減できます。進化した画像処理、画質、AI および ML 機能の組み合わせにより、大きなブレークスルーが可能になりました 。物体の検出と追跡や、パン/チルト/ズームカメラなどの進歩により、画像処理や解析に用いる画像品質が向上しました。また、画像の内容に関連したマーカーでタグ付けすることで画像・映像のライブラリが検索できるようにより、画像や映像の確認がこれまでになく簡単になりました。
そのため、高度な画像分析を適用する機会はかつてないほど拡大しています。企業向けセキュリティ、小売業、製造業、接客業、旅行業など、さまざまな業界の企業が、エッジとクラウドのハイブリッドアプローチにより、関心のある人物の検出、自動的なアクセス管理、人や車両のカウント、ヒートマッピング、PPE(個人用保護具) 装着の確認、センチメント分析、製品の欠陥や異常の検出といったユースケースを拡大しています。これらの高度な分析により、企業は顧客の安全性の向上、顧客体験のシームレスな実現、製品欠陥の減少など、ビジネス上の KPI を向上させることができます。
アクシスコミュニケーションズと Amazon Rekognition でビデオ分析を強化
アクシスコミュニケーションズは IP カメラおよびネットワークソリューションの業界リーダーであり、セキュリティの向上と新しいビジネス方法に関する洞察を提供します。業界をリードする Axis では、インテリジェントなビデオ監視、アクセスコントロール、インターコム、音声システム向けのネットワーク製品とサービスを提供しています。
Amazon Rekognition は、ディープラーニングテクノロジーを使用した AI サービスで、ML の専門知識を必要とせずに、オブジェクト、人物、テキスト、シーン、アクティビティ、不適切と思われるコンテンツの識別など、画像や動画から意味のあるメタデータを抽出できます。Amazon Rekognition は、非常に正確な顔分析と顔検索機能も備えており、これを使用して、さまざまなユーザー検証 、人数カウント、安全に関わるユースケースで、顔検出、分析、比較を行うことができます。最後に、Amazon Rekognition カスタムラベル を使用すると、独自のデータを使用して、独自のオブジェクト検出モデルと画像分類モデルを構築できます。
映像取り込みとエッジでの前処理を行う Axis の技術と、コンピュータービジョン向けの Amazon Rekognition を組み合わせることで、映像分析のための高度にスケーラブルなワークフローが実現します。Amazon Rekognition を既存のシステムに追加することは難しくありません。API をワークフローに統合するのと同じくらい簡単なので、使いやすさが大きなプラス要因です。機械学習のサイエンティストである必要はありません。キャプチャした動画フレームを AWS に送信し、データベースに入力される結果を受け取るだけです 。
また、AWS Lambda によるサーバーレスコンピューティングにより、お客様と、カメラの設置や映像分析の設定を行うインテグレーターの双方が楽になります。導入するハードウェアが少なくなり、導入コストも削減されます。また、Axisのカメラはネットワークエッジで映像を処理し、デバイスがキャプチャした画像を Amazon Rekognition に送信してさらなる分析を行うべきかを決めるインテリジェントなルールを設定できるため、通信帯域幅を大幅に節約できます。わずか数行のコードで、受信した画像を Amazon Rekognition に送信できるようになります。
これは、目視による画像確認と較べて劇的な改善を示します。余計なコストや不必要な工数を必要とせず、迅速かつ高い精度で良好な結果を得ることができます。潜在的なユースケースは非常に多くあり、Axis のデバイスと Amazon Rekognition を組み合わせることで、ビジネスに対し、大きく即効性のある ROI をもたらす可能性を秘めています。
ソリューション概要
まず、Axis カメラによりエッジで前処理を実行します。さまざまなイベントを契機として用い、画像をキャプチャし、AWS に送信 してさらに画像分析を行うタイミングをトリガーできます。
Axis カメラの標準的なトリガー 下記のものが含まれます。
- デジタル入出力
- スケジュールイベント
- 仮想入力(画像アップロードをトリガーする他のセンサーからの入力)
- いたずら
- 衝撃検知
- 音声検知
Axis分析イベントトリガー — 下記の一覧は、画像キャプチャをトリガーするために使用できるAxis分析カメラアプリケーションです。また、カメラ上で実行しイベントを出力する独自アプリを開発することもできます。詳細については、AXIS Camera Application Platform を参照してください。
- AXIS Object Analytics は、シーン内の人物または車両をキャプチャします
- AXIS Face Detector はシーンで見つかった顔をキャプチャします
- AXIS License Plate Verifier はナンバープレートを読み取ります
- AXIS Live Privacy Shield は人々のプライバシーをマスクします
- AXIS Fence Guard を使用すると、カメラの視野内に仮想フェンスを設定できます
- AXIS Loitering Guard は、徘徊しているシーンで人や車両をキャプチャします
次に、Amazon API Gateway 、AWS Lambda、および Amazon Simple Storage Service (Amazon S3) を Axis ネットワークカメラとそのイベントシステムと組み合わせることで、AWS クラウドに画像を安全にアップロードできることです。
3 番目に、これらの画像を Amazon Rekognition に送信して、画像フレーム内の内容 (人物、顔、乗り物など) を分析できます。
次の図が今回のアーキテクチャを示しています。
では、必要なクラウドサービスを設定し、Axis ネットワークカメラでイベントシステムを構成して画像をアップロードする方法について詳しく見ていきましょう。
ソリューションのセットアップは 2 つの部分に分かれています。1 つは AWS セットアップ、もう 1 つは Axis カメラのセットアップです。
Amazon S3 にイメージを送信するために必要な AWS のサービスとカメラ設定は、Axis Communications GitHub リポジトリ からダウンロードできるサンプルアプリケーションによって管理 されます。このアプリケーションは、次の AWS リソースで構成されます。
- API Gateway
- Lambda 関数
- シークレットは AWS Secretes Manager に保存されます。
- S3 バケット
カメラは AWS 署名バージョン 4 (SigV4) を使用してリクエストに署名することができないため、そのステップを実行する Lambda 関数を準備する必要があります。Axis カメラは Amazon S3 に画像を直接送信するのではなく、代わりに API Gateway に送信します。API Gateway は、提供されたアクセストークンと Secrets Manager に保存されているアクセストークンを比較する Lambda オーソライザーに認可を委譲します。提供されたアクセストークンが有効と判断された場合、API Gateway は、提供された画像を S3 バケットにアップロードする Lambda 関数にリクエストを転送します。
前提条件
開始する前に、次の前提条件を満たしていることを確認してください。
- アクシスコミュニケーションズのネットワークカメラ
- AWS コマンドラインインターフェイス (AWS CLI) がインストールされている
- AWS サーバーレスアプリケーションモデル (AWS SAM) がインストールされている
- Node.js がインストールされている
AWS セットアップ
AWS 側の設定では、次の手順を実行します。
- GitHub リポジトリをクローンします。
- AWS CLI を端末上で実行し、AWS へのアクセスを認証することから始めます。組織の設定によっては、複数の認証オプションが有効に なる場合があります。この投稿では、AWS へのアクセスを認証するために多要素認証 (MFA) を使用しています。次のコマンドを変更して実行します。
$ aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token
AWS に対して認証されると、ネットワークカメラから送信されたスナップショットを受信する AWS サービスの構築とデプロイを開始できます。サービスリソースは、AWS SAM を使用して template.yaml で説明されています。
- 以下のコマンドを実行します。
sam build
sam deploy --guided
最初のコマンドは、アプリケーションのソースをビルドします。2 番目のコマンドは、次の確認事項を提示してアプリケーションをパッケージ化し、 AWS にデプロイします。
-
- Stack Name — AWS CloudFormation にデプロイするスタックの名前 。これは、アカウントとリージョンに固有である必要があります。開始点としては images-to-aws-3 またはそれに類するものが適しています。
- AWS Region — アプリケーションをデプロイするリージョン。
- Confirm changes before deploy — yes に設定すると、手動レビューを実行する前に変更セットがすべて表示されます。no に設定すると、AWS SAM CLI はアプリケーションの変更を自動的にデプロイします。
- Allow SAM CLI IAM role creation — この AWS SAM テンプレートは、Lambda 関数が AWS サービスにアクセスするために必要な AWS Identity and Access Management (IAM) ロールを作成します。既定では、これらの権限の範囲は最低限必要なアクセス許可に絞り込まれています。[Y] を選択すると、AWS SAM が自動的にロールを作成します。
- Save arguments to samconfig.toml — Y に設定すると、選択した内容はプロジェクト内の設定ファイルに保存されるため、将来、パラメーターを指定せずに sam deploy を再実行して、変更をアプリケーションにデプロイできます。
- デプロイが成功したら、AWS CloudFormation コンソールで新しく作成した CloudFormation スタックに移動します。
API Gateway が Lambda にリクエストを転送し、Lambda 関数が画像スナップショットを S3 バケットに保存します。
デプロイされた CloudFormation スタックは、Axis カメラの設定に使用する 2 つの出力パラメーターを作成しました。
- Recipient — カメラがスナップショットを送信する API Gateway の URL を定義します。
- AccessToken — シークレットマネージャーで見つかったシークレット API アクセストークンへの URL が含まれます。この API アクセストークンはカメラを認証し、スナップショットの送信を許可します。
- ブラウザに AccessToken へのリンクを入力すると、シークレットが見つかる場所に直接移動します。
API Gateway でシークレットを使用して、イメージのアップロードを認証します。
このアクセストークンなしで API Gateway へのリクエストはアクセスを拒否されます。
Axis カメラの設定
カメラでは、API Gateway への HTTPS 受信者と、画像をアップロードする必要があるときのトリガーとして使用されるカメラ内のイ ベントを設定する必要があります。
- カメラにログインします。
- [システム(System)] タブで [イベント(Event)] を選択します。
- [送信先(Recipients )] タブで、プラス記号を選択して 送信先の API Gateway の URL を追加します。
ここではユーザー名とパスワードは必要ありません。認証は、後のステップでカスタム CGI パラメーターとして入力するアクセストークン (accessToken) を介して処理されます。
- [ルール(Rules)] タブで、プラス記号を選択して、Amazon S3 にイメージを送信するタイミングの条件を追加します。
- [手動トリガー(Manual trigger)] を選択して、Amazon S3 への限られた数のイメージのアップロードを手動でトリガーします。
- [ポストバッファ(Postbuffer)] に
00:01
と入力します。 - [最大画像数(Maximum images)] に
1
と入力します。
画像を撮影して Amazon S3 に自動的にアップロードする必要がある場合は、パルスタイプ条件を使用できます。この場合、1 分ごと 、または 1 秒ごとなどのパルス間隔を指定できます。イメージスナップショットのキャプチャ方法の詳細については、AXIS OS ポータル ユーザーマニュアル を参照してください。
- [カスタム CGI パラメーター(Custom CGI parameters)] に
accessToken
値を入力します。 - [保存(Save)] を選択します。
設定をテストする
カメラから画像を (手動または自動で) 送信したら、Amazon S3 コンソールを開いて、画像が正しくアップロードされたことを確認できます。
Amazon Rekognition でフレームを分析する
必要な Amazon Rekongition API を呼び出す AWS Lambda 関数をトリガーすることで、Amazon Rekognition API を呼び出して S3 に 保存したフレームを分析できるようになりました。以下の手順は、Amazon Rekognition detectLabels を呼び出すLambda 関数を Python で作成する方法を示しています。
ステップ 1: AWS Lambda 関数を作成する (コンソール)
- AWS マネジメントコンソールにサインインし、https://console.aws.amazon.com/lambda/ で AWS Lambda コンソールを開きます。
- [関数の作成(Create function)] を選択します。詳細については、「コンソールで Lambda 関数を作成する 」を参照してください。
- 次のオプションを選択します。
- [一から作成(Author from scratch)]を選択します。
- [関数名(Function name)] に値を入力します。
- [ランタイム(Runtime)] には Python (7 から 3.9 バージョン) を選択します。
- [実行ロール(Choose or create an execution role)] で、[基本的な Lambda アクセス権限で新しいロールを作成する] を選択します。
- [関数の作成(Create function)] を選択して AWS Lambda 関数を作成します。
ステップ 2: Amazon Rekognition と Amazon S3 のアクセス許可を AWS Lambda が作成したロールにアタッチする
- https://console.aws.amazon.com/iam/ で IAM コンソールを開きます。
- ナビゲーションペインで、[ロール(Roles)] を選択します。
- リソースリストから、AWS Lambda が作成した IAM ロールを選択します。ロール名の先頭に Lambda 関数の名前が付加されます。
- [許可(Permissions)] タブで、アクセス許可を追加(Add Permission)ボタンから[ポリシーをアタッチ(Attach policies)] を選択します。
- AmazonRekognitionFullAccess と AmazonS3ReadOnlyAccess を追加します。
- [ポリシーをアタッチ(Attach Policy)] を選択します。
ステップ 3: AWS Lambda コンソールに Python コードを追加する
- AWS Lambda で、関数名を選択します。
- [関数の概要] パネルで [+ トリガーを追加] を選択します。
- S3 トリガーを選択し、Axis カメラがカメラフレームを保存しているバケットを選択します (この例では images-to-aws-s3-bucket-1o45tt35jsonk)。
- イベントタイプで PUT を選択します。
- 再帰呼び出し確認のチェックを入れて、[追加] をクリックします。
ステップ 4: AWS Lambda コンソールに Python コードを追加する
- AWS Lambda 関数ページで、[コード] タブを選択します。
- 関数コードエディタで、ファイル py に以下を追加します。この関数は、ステップ 3 で設定した PUT イベントのトリガーにより 、Axis カメラからのアップロード直後に各フレームを処理します。
import json
import boto3
import urllib
def lambda_handler(event, context):
# Get the object from the S3 event
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.parse.unquote_plus(
event['Records'][0]['s3']['object']['key'],
encoding='utf-8')
client=boto3.client('rekognition')
response = client.detect_labels(
Image={'S3Object': {'Bucket': bucket, 'Name': key}},
MaxLabels=10)
# Get the labels
labels=response['Labels']
# Add your custom code here for storing Rekognition results
return {
'statusCode': 200,
'body': json.dumps(labels)
}
- [保存] を選択して Lambda 関数を保存します。
ステップ 5: AWS Lambda 関数をテストする (コンソール)
- [テスト] を選択します。
- イベントテンプレートとして s3-put を選択します。
- [イベント名] に値を入力します。
- テスト用の json リクエストのバケット名とオブジェクトキーを、Amazon S3 に既にあるバケット名と 1枚のフレームの名前に変更します。
- [保存] を選択します。
- [テスト] を選択します。Lambda 関数が呼び出されます。 [実行結果] ペインに出力が表示されます。出力は 、Amazon Rekognition が指定したフレームで検出したラベルのリストです。
結論
アクシスコミュニケーションズのカメラで Amazon Rekognition を使い始めるのは簡単です。システムを統合するインテグレータがこのテクノロジーを提供するための重要な仕組みであり、インテグレータの経験により、新規・既存顧客にさらなるサービスを提供する機会が提供されます。このアプリケーションは、インテグレータにご覧いただけるよう GitHub 経由で一般に公開されています。今回のS3 にイメージを送信する方法のコードサンプルを次に示します。この GitHub リンク をクリックして今すぐ開始してください。
また、Amazon Rekognition の使用を開始する方法の詳細については、このリンクにアクセスしてください。また、Amazon Rekognition の料金の詳細については、こちらをご覧ください。Amazon Rekognition Image API の 12 か月間の無料利用枠で、1 か月あたり 5,000 枚の画像を分析し、1 か月あたり 1,000 個の顔メタデータを保存できます。
パートナーになることにご興味がある場合は、アクシスコミュニケーションズのパートナーネットワーク および AWS のパートナーネットワークをご覧ください。
著者について
Oliver Myers は、AWS の Amazon Rekognition (顧客が画像や動画から視覚的なメタデータを抽出できるようにする AI サービス) のプリンシパル WW ビジネス開発マネージャーです。この役職では、お客様がさまざまな業界のビジネスワークフローにコンピュータービジョンを実装できるよう支援することに注力しています。
Woody Borraccino は AWS のシニア AI ソリューションアーキテクトです。
翻訳は Industry SA の山本が担当しました。