AI機械学習 コラム

密集度や人数をAIで計測|混雑を可視化するカウント技術

こんにちは、インフォマティクスでAI・機械学習業務を担当している鈴木です。

新型コロナウィルスの感染拡大が続くなか、感染防止対策として3密(密閉・密集・密接)回避が重要だと言われています。

そこで今回はAIを使って密集度を検知、計測する技術について紹介します。

Crowd Counting(クラウド カウント)とは

Crowd Counting(クラウド カウント)とは、写真に写った群衆(Crowd)の人数や密集度合いを測る技術のことをいいます。

カウント技術は、群衆に限らず、車や動植物の数を計測するなど様々なことに応用できます。

「Visual Counting(画像から数を割り出すこと)」や「Density Estimation(密集度を推定すること)」とも呼ばれます。

密集度予測の難しさ

人間の目で数える際にも人数が多くなるほど難易度が上がりますが、カウント技術でも人数が多くなるほど予測が困難になります。

これは学習データを用意できないことが原因です。

原理的には、いくらでも密集度合いの高い環境を想定することはできますが、実際の写真には限りがあるので、それに対応する写真を用意できません。そのため、密集度の高い画像ほど予測精度が低くなります。

本稿で紹介するSpatial Divide-and-Conquer Network(S-DCNet)では、画像を分割して1枚に写る人数を調整することで、この問題に対処しています。

おおよそ20人以下になるように分割するのが良いと提案されています。

Spatial Divide-and-Conquer Network(S-DCNet)

S-DCNetは、群衆の画像を入力し、画像に写った人数を推定するネットワークです。

画像をいくつかのスケールで分割して人数を推定した後、各スケールの結果を組み合わせて最終的な人数を推定します。

学習する際には、人数を教師データとして与えて学習します。教師データもスケールごとに用意する必要があります。

S-DCNetの構成

S-DCNetの構成を詳しく見ていきましょう。

S-DCNetの構成は以下の図のようになっています。この図では、入力画像を64×64ピクセルとして、3つのスケールを使ったネットワーク構成を紹介しています。S-DCNetはVGG16学習済みネットワークを転用します。

図中のConvは、VGG16の先頭から2つのCovolutional層ブロックに対応します。Conv3とConv4、Conv5は、それ以降のConvolutinal層ブロックに対応します。

S-DCNetは、スケールの異なる特徴量(F0, F1, F2)を作成し人数を推定します。

  1. まず、F0を使って画像全体の人数を推定します。classifierの中でさらにダウンサンプリングするので、C0はF0よりひと回り小さな行列となります。
  2. 次に、F1を使って2×2に分割したときの人数(C1)を推定します。
  3. 最後に、F2を使って4×4に分割したときの人数(C2)を推定します。

参考文献[1]より引用

classifierの構成を、テーブル1に掲載します。特徴量(F0, F1, F2)の平均プーリングを取るので、人数推定値(C0, C1, C2)はひと回り小さな行列となります。

参考文献[1]より引用

3つのスケールで人数(C0, C1, C2)を推定しましたが、どれが適当なスケールでしょうか?

S-DCNetでは、スケールの選択基準も教師データを使って学習する仕組みになっています。

下図がスケールを選択するプロセスです。細かいスケールの推定値(C1、C2)を使って、粗いスケールの推定値(C0)を段階的に補正します。

C0とC1を結合する際は、C0をC1に合わせてアップサンプリングして、W1で重みづけします。これにより、1段階細かいスケールの推定値(C1)を使って、粗いスケールの推定値(C0)を補正します。

この結果に、さらにC2を結合します。先の手順と同様に、アップサンプリングして、W2で重みづけします。

参考文献[1]より引用

この例では3つのスケールを使用しましたが、スケールの数は選ぶことができます。ただし、VGG16ネットワークを使用している関係上、5つのスケールが上限となります。

S-DCNetの実行結果

S-DCNetの実行結果を紹介します。

下図左端のImageが入力画像です。人数の特に多い部分に色がついています。この部分は人数が多くてオリジナルスケールで人数を計測するのが難しい部分です。

真ん中のW1は、1段階細かいスケールの重みを可視化したものです。S-DCNetは、色のついた部分を細かいスケールで測った方が良いと判断したようです。人数の多い部分とおおよそ重なっていますね。

右端のW2は、もう1段階細かいスケールの重みです。さらに密集度の高い部分に色がついています。

S-DCNetは、このように数えやすいスケールを選びながら最終的な人数を推定します。

参考文献[1]より引用

各種データセットを使用して、従来の手法と推定精度を比較した結果を掲載します。テーブル6には、ShanghaiTechデータセットを使用した際の比較結果が掲載されています。

Part Aは密集度の高い写真を集めたデータセット、Part Bは密集度の低い疎な写真を集めたデータセットです。

密と疎のどちらの環境でも高い精度で人数を推定できることが報告されています。その他のデータセットでも高い精度で推定できることが報告されています。

参考文献[1]より引用

おわりに

今回は密集度をカウントする技術について紹介しました。

S-DCNetは人以外にも農作物の密度推定にも応用できます。

人数の多い場合にも使えるので、様々なシーンへの活用が期待できます。

物体検出などAI機械学習を活用したシステムの構築に関するご相談(無料)を承っています

お気軽にお問い合わせください

 

【参考文献】
[1] Xiong, H., Lu, H., Liu, C., Liu, L., Cao, Z. and Shen, C. (2019). From Open Set to Closed Set: Counting Objects by Spatial Divide-and-Conquer. ,arXiv:1908.06473.

あわせて読みたい

-AI機械学習, コラム
-,