FutureStandard MAKERS

東京にある映像解析プラットフォーム「SCORER」の開発をしているスタートアップのブログです

SCORERを使って顔の検出とトラッキングをしてみよう

f:id:FutureStandard:20181109162406p:plain

今回は、SCORER-SDK-Pythonのサンプルプログラムを使った顔トラッキングをご紹介します。このプログラムは、SCORERの映像から顔の座標を取得し、各時間における顔のトラッキング情報を収集します。

①SCORERのセットアップ
下記二つの記事をご参照ください。
blog.futurestandard.jp
blog.futurestandard.jp


②開発環境のセットアップ
下記リンク先PDFファイルの「2. 開発環境の準備」、「3. サンプルプログラムの実行」、「4. SCORER SDKの更新」を実施してください。
http://downloads.scorer.jp/SCORER_SDK_Starter_Guide_v0.4.1.pdf


③SCORERカメラの設定
下記アドレスからSCORERのSCC画面に遷移し、画像を参考にカメラ設定を修正してください(Video QualityをLowにすると動作が安定します。また一部設定では、プログラムが正常に動作しない可能性があります)。

http://{RaspberrypiのIPアドレス}:20001
f:id:FutureStandard:20181106133750p:plain


④サンプルプログラムの確認
下記アドレスからSCORER開発者画面に遷移し、「SCORER SDK Samples」リンクをクリックします。

http://{RaspberrypiのIPアドレス}:20002
f:id:FutureStandard:20181106150938p:plain

遷移した先の画面上に「Face_track」リンクがあることを確認してください。

f:id:FutureStandard:20181106151314p:plain

※ブラウザキャッシュにより一時的にページが更新されない場合があります。その場合は、キャッシュを削除するか、時間をおいてページを更新してください。
上記対応後もリンクが表示されない場合は「②開発環境のセットアップ」の「4. SCORER SDKの更新」を再度実施してください。


⑤サンプルプログラムの実行
Cloud9から~/scorer-sdk-python/samples/Face_Trackに移動し、face_track.pyを開いた状態で「Run」を押して実行します。

f:id:FutureStandard:20181109163519p:plain

その後、再度SCORER開発者画面に移動し、Web Show1をスタート状態にしてリンクをクリックします。

f:id:FutureStandard:20181109160534p:plain

すると、下記のように顔トラッキング結果の映像が出力されます。顔の輪郭が緑の長方形、顔の中心座標の推移が黒点と黒線で表示されます。

これで顔トラッキングを実行することができました。


⑥ログの確認
このプログラムは、取得した顔の情報をログとして出力しています。
ログは3種類あり、全て~/scorer-sdk-python/samples/Face_Track/logに出力されます。
・detect.log:各顔検出タイミングに検知した顔の長方形座標
      (左上のx座標、左上のy座標、高さ、横幅])を格納。

2018-11-01 15:32:39
No1:[337  17  44  44]
No2:[448 222  87  87]
No3:[297 203 103 103]
Detected Num:3

2018-11-01 15:32:39
No1:[301  25  46  46]
No2:[436   2  86  86]
No3:[420 229  86  86]
No4:[272 213  99  99]
Detected Num:4

2018-11-01 15:32:39
No1:[287  32  44  44]
No2:[420   5  92  92]
No3:[412 235  87  87]
No4:[266 220  96  96]
Detected Num:4

・lost_faces.log:トラッキング処理からロストした顔のID、検出開始時間、
        顔の中心座標の推移、検出終了時間を格納。

Object ID:1
Tracking Start:2018-11-01 15:32:02
2018-11-01 15:32:02[ 371.5  272.5]
2018-11-01 15:32:03[ 354.5  277.5]
2018-11-01 15:32:03[ 351.5  277.5]
2018-11-01 15:32:04[ 347.  275.]
2018-11-01 15:32:04[ 356.5  277.5]
2018-11-01 15:32:04[ 371.  281.]
2018-11-01 15:32:04[ 371.5  279.5]
2018-11-01 15:32:04[ 352.5  276.5]
2018-11-01 15:32:05[ 347.  276.]
2018-11-01 15:32:05[ 346.5  276.5]
2018-11-01 15:32:05[ 354.  277.]
2018-11-01 15:32:05[ 361.5  276.5]
2018-11-01 15:32:06[ 359.5  272.5]
2018-11-01 15:32:06[ 357.5  275.5]
2018-11-01 15:32:06[ 352.5  278.5]
2018-11-01 15:32:06[ 352.5  278.5]
2018-11-01 15:32:07[ 379.5  276.5]
2018-11-01 15:32:07[ 380.  277.]
2018-11-01 15:32:07[ 380.  276.]
2018-11-01 15:32:07[ 377.5  277.5]
Tracking End:2018-11-01 15:32:08

・progress.log:各顔トラッキングタイミングに整理された顔の数の情報を格納。
  - Inputed objects:今回検出処理で検出された顔の数
  - Tracked objects last time:前回トラッキング処理でロストせずに残っていた顔の数
  - Tracked objects this time:今回トラッキング処理でロストせずに残っている顔の数
  - Losted objects:今回トラッキング処理でロストした顔の数

2018-11-01 15:32:35
Inputed objects:1
Tracked objects last time:2
Tracked objects this time:2
Losted objects:0

2018-11-01 15:32:35
Inputed objects:1
Tracked objects last time:2
Tracked objects this time:2
Losted objects:0

2018-11-01 15:32:36
Inputed objects:4
Tracked objects last time:2
Tracked objects this time:5
Losted objects:0


以上で顔検出、トラッキングの説明は終了です。この機能は、
・顔写真からの年齢、性別判定
・人の滞在時間測定
など様々な顔画像を利用した機能に応用することができます。
次回は1つ目の年齢、性別判定のサンプルプログラムをご紹介します。