2022/05/18

Azure の Spatial Analysis を使ってみた

Azure computer visionの新サービス、Spatial Analysisを使って空間分析を実施した結果をまとめました

Azure の Spatial Analysis を使ってみた_サムネイル

Azure には様々なサービスがあります. その中でもcomputer vision に含まれている「空間分析」のためのサービスである Spatial Analysisを使ってみたのでご紹介します. Spatial Analysis は2020年9月より computer vision に追加された比較的新しいサービスです.

この記事を読んでわかること

  • Spatial Analysisによってどんな空間分析ができるのか
  • Spatial Analysis を使うときの注意点
  • 想定読者

    • 使ったことはないけど Spatial Analysis でどんなことができるのか知りたい
    • 実際に Spatial Analysis を使って分析してみたい
    • Spatial Analysis とは

      Spatial Analysis は動画を入力すると人を対象として空間分析を行います. 動画は予め撮影されたものでも,リアルタイムなものでも構いません. Spatial Analysis では以下のような分析を行えます.

      • 指定された範囲内の人数カウント
      • 指定された範囲にいた滞在時間の計測 
      • 人と人の距離が近すぎるもしくは遠すぎることを検出
      • 指定された範囲内の人数カウント

        カメラ内の自身で指定した範囲に映る人を検出して人数をカウントします. 空間内の人数推定や人が現れたことをアラートすることに利用できます.

        Spatial Analysisの人数カウント画像

        (引用) Spatial Analysisのマイクロソフト公式ドキュメント

        指定された範囲にいた滞在時間の計測

        人のトラッキングを行うことでカメラ内の自身で指定した範囲にいた滞在時間を計測します. 待ち時間がどれだけあるかや展示をどれだけ見ているか知ることができます.

        Spatial Analysisの滞在時間参考画像

        Spatial Analysisのマイクロソフト公式ドキュメント

        人と人の距離が近すぎるもしくは遠すぎることを検出

        人と人の距離を計測して自身で設定した値より接近したこともしくは離れたことを検出します. 昨今流行りのソーシャルディスタンスが保たれているか確認できます.

        Spatial Analysisの距離算出参考画像

        (引用)Spatial Analysisのマイクロソフト公式ドキュメント

        実際に Spatial Analysis を使う際の注意点

        基本的には公式ドキュメント通りに操作すれば問題なく動作しますが,自分が実際に使ってみた際に引っかかった点を共有します.

        使用するVM

        まず,Spatial Analysis を使用するにはAzure Stack EdgeかGPUを搭載したAzure VM (同様な性能のPCがあれば手持ちのPCでもよいです)が必要です.

        NVIDIA CUDA Compute Capable GPU 6.0以上のGPUである必要があるので注意してください.Compute Capableはここで確認できます.

        また,公式ドキュメントでは Azure VM としてK80搭載のVMを使用していますが,K80のCompute Capableは3.7のため対応していませんのでご注意ください.参考までに私はV100を搭載しているNCv3シリーズを使用しました.

        Iot Edgeにデプロイ時

        次に実行に必要な様々な設定を記載したJSONファイルを使用して Spatial Analysis をデプロイするのですが、公式ドキュメントにあるjsonファイルサンプルはそのまま利用すると、telegrafやdiagnosticsなどの最低限動作に必要なモジュール以外の箇所でエラーが発生します.

        また,azureiotedge-agentやazureiotedge-hubのバージョンが1.0でうまく動作しません.

        webアプリをデプロイするところを詳細に記載しているこちらの公式ドキュメント内のjsonファイルを参考にしたほうがよいと思います.

        Webアプリにデプロイ時

        基本的には公式ドキュメントにあるようにこのgithubの指示通りにイメージをAzure Container Registryにプッシュしてください.

        ただそのまま実行するとエラーが起きるのでaz acr loginでAzure Container Registryにログインをしてから実行してください.

        また,Azure App ServiceでIotHubConnectionStringが必要です.ここはVMへの接続文字列ではなくiothubownerの接続文字列を使用してください.

        iothubowner参考画像

        分析結果の可視化

        基本的には以下の2つのページを参考に実行すれば、問題なく動作すると思います.

        VMにデスクトップ環境をインストール

        分析結果の可視化

        ただし環境によっては/etc/xrdp/startwm.sh内の/bin/shを/bin/bashに変更する必要があります.

        最後に

        この記事では「Spatial Analysisによってどんな空間分析ができるのか」と「Spatial Analysis を使うときの注意点」について紹介しました.

        個人的に良かった点いまいちな点としては、

        • 良かった点:人のトラッキングを行い滞在時間の推定や距離の推定が簡単にできる点は良いと思いました.
        • いまいちな点:デプロイに手間がかかる.現時点ではまだプレビュー版なので今後改善されると期待しています.
        • 「多少手間がかかるのは気にしないので空間分析してみたい」という方はぜひSpatial Analysis を使ってみてください.

          実際にSpatial Analysis を使う際に少しでも参考となれば幸いです.

          執筆
          AIコンサルティンググループ
          小川 裕也