Microsoft Azure Cognitive Services Faceを動作させてみる その1


この記事で伝えたいこと

・世間には多様なCognitiveなサービスが存在するのですが、大抵は、クラウドだけだったり、Localだけだったりで、どちらでも実装できる場合は結構なコストや手間がかかります(Cognitiveなサービスを提供するPaaS環境を一括買い取り、という意味)。が、Azure Cognitive ServiceについてはAzureの無料サブスクリプションがあれば、クラウドでもLocalでもCognitiveなサービスを比較的簡単に実装できそう、というのが面白いので、整理してみました。
・当然のCRUD操作、つまりperson_idと顔画像を登録して、別の顔画像のInference結果(person_idやname)を受け取ったり、登録済のpersonを削除する処理を実装したいだけなのに、マニュアルやソースが多くて英語で読むのが面倒だ、という人向けです。つまり、QuickStartの説明と補足です。
・Edge側でカメラ撮影してFaceでInferenceして出力するというPython Flaskアプリケーションにおける、Face部分の処理を想定しています(Python Flaskアプリそのものの記事は未定です)。

Azure Faceとは

・Microsoftが提供している顔認識機能(Imageから人間の顔を抽出、登録したIDと照合、など)で、Azure上でもLocalのDockerコンテナーでも動作します。トレーニング処理(=顔画像とIDの登録)にGPUは不要です。
・技術的な概要はMicrosoft社のWebサイトのAzure Face サービスとはで確認します。ちなみに、コンテナに割り当てる推奨HWリソースは、1コア、4GBメモリと記述されています。
・営業的な概要はMicrosoft社のWebサイトの顔認識|Microsoft Azureで確認します。
・一般的には、画像処理についてはデータ転送のためのネットワーク帯域を考慮するとEdge側でCognitiveな処理を行うことが有利です。その意味で、上記サイトそれぞれのクラウドからエッジまで、どこにでも配置コンテナーの使用で紹介されているように、クラウドでもLocalのDocker環境で実行可能なことであり、代表的なIoTアーキテクチャである、Dell TechnologiesのEdge-Core-Cloudモデルや、Azure IoT 参照アーキテクチャと相性がよいです。

Azure FaceのLocalコンテナーについて

・PublicのAzure上でFaceを実行するためには、Azure portal にサインインしてFaceのResource Groupを作成すればよいです。しかし、LocalのDocker環境で実行するためには、左記の作業に加えてコンテナーを実装したいユースケースに関するアンケートに答える必要があります。そのアンケートに答えるとCognitive Service専用のプライベートコンテナーレジストリとアクセス情報を教えてもらえるので、Docker pullできるようになります。詳細は上記のサイトで確認します。
・FaceのDockerコンテナー起動時に、有効なAzure FaceサービスのResource GroupのEndpointとAPI Keyを引数で渡して、かつ、Dockerコンテナーが課金情報を送信するためにインターネット経由でAzure portalと通信できる必要があります。

その2に続きます。