WED第4回:顔検出まとめツイートツイート前回は、複数人の顔を検出してお面をかぶせるところまでコードをアレンジしてみました。今回は、さらにその精度を高めつつ、他の顔検出アルゴリズムについても紹介していきます。Komura(CGWORLD)<1>複数人の顔を検出する際のチラつきを抑えるこんにちは、Codelight株式会社の高田です。前回から少し時間が経ってしまいました。最近「mui」というIoTデバイスに、Kickstarterで支援しました、外観に本物の木を使っており、タッチパネルが内蔵されている情報端末です。Piを使っての開発が可能とのことで、到着が楽しみです。前回はOpenCVの顔検出を使って複数の人の顔にそれぞれお面を被せるプログラムを作成しました。今回はその解説を行います。併せて「JIDO-RHYTHM」に似たコンテンツの作成を考えていましたが、細かな解説ではプログラム的な話が多くなってしまうため、基本的な考え方を述べるにとどめ、コンテンツに使える顔検出に関してまとめていこうと思います。最初に、前回作成したソースにミスがあったので更新しました。前回行なった修正の目的は複数人への対応でした。検出された顔が1つの場合は、検出された位置にそのままお面を表示させれば問題ありませんが、いくつも顔として誤検出される場合や、あるフレームは検出され、次のフレームでは検出されないということも起こります。このような状況では、単純にお面を被せるとチラついてしまい、コンテンツを楽しむことができなくなります。そのため検出された顔のどれにお面を被せるか決めていくことが必要です。処理のながれとしては以下のようになります。1:OpenCVで顔を検出します。検出結果にはノイズも含まれるのでお面をかぶせる候補として保持します(227行目から235行目の処理)。-cy));}2:検出候補点をすべてトラッキングし、一定時間トラッキングできたら候補を顔と判断します(239行目から290行目の処理)。新しい検出位置が見つからなかったので、LostTimeを減らす。}}3:お面を被せた顔が一定時間トラッキングできなくなったら、検出できなくなったと判断してお面を消す(283行目から289行目の処理)。新しい検出位置が見つからなかったので、LostTimeを減らす。DetectFace.State.None;}この処理を行うために「検出」、「トラッキング」、「何もなし」の3つの状態があるとして管理しています。図にすると以下のようになります。1:「検出」この点を「顔候補リスト(detectedPos)」に追加(青い点)します。次のフレームで検出された点(赤い点)の距離を調べ、検索範囲内なら青い点が移動したものとみなします。次のフレームで見つかった緑の点が同じように赤い点の範囲内なら赤い点が移動したとみなします。この状態を一定時間くり返していれば、それは安定して認識されている顔とみなして「検出された顔リスト(_detectedFace)」に追加します。検索範囲内で点が見つかれば移動先とみなし、移動していると考えることができる3:「何もなし」しかし、以下のように一定距離内に点がない状態が続くと、認識がなくなったとして_detetedFaceから除外されます。移動するべき点が見つからない状態。検出点がなくなったか、緑の点がノイズであった可能性この状態を加えてながれをムービーで作成しました。テロップ右肩の赤文字が各状態です。基本的にやっていることはシンプルなので、コードと状態のながれを追ってみてください。質問などあれば弊社のTwitter(@codelight)宛に連絡いただければできるだけ対応します。顔ハメのコンテンツをつくるときは、こんな感じで検出とトラッキングが必要だということが伝わればと思います。今回は、コンテンツ開発におけるUnityとTouchDesigner、それぞれの特徴と必要な知識について考えます。/...2019.09.27第11回:デバッグと設定ファイル今回は、コンテンツ開発の過程では欠かせないデバッグと、設定ファイルの記述法について紹介します。Toshinori...2019.08.20第10回:Spoutを使ってリアルタイムに画像を共有する今回は、UnityとTouchDesignerの間でリアルタイムに画像を共有する方法を紹介します。Controlでライトを制御する今回は、通信プロトコルOSCを、Unityで使えるようにセットアップします。Takata(C...2019.05.21第8回:押しボタンの入力をUnityで取得する今回は、押しボタンの入力をUnityで取得できるように、ボタンとデジタル入出力装置とPCを接続し、設定をしていきます。TEXT_高田稔則...2019.04.18第7回:プロジェクタのキャリブレーションをする第5回から引き続き、測域センサを用いたコンテンツの制作を進めていきます。今回はプロジェクタによる投影位置をより使いやすいよう調整します。...2019.02.21第6回(番外編):裸眼立体視ホログラムディスプレイを使ってみる前回から測域センサを用いたコンテンツの紹介がスタートしましたが、今回は番外編として、今注目の裸眼立体視用ホログラムディスプレイ「Looki...2019.01.24第5回:測域センサを使ってみる今回からは、レーザー式測域センサを利用したコンテンツを考えていきます。Unityで使えるようセットアップをし、簡単なインタラクティ...2018.12.19第4回:顔検出まとめ前回は、複数人の顔を検出してお面をかぶせるところまでコードをアレンジしてみました。今回は、さらにその精度を高めつつ、他の顔検出アルゴリズム...2018.10.26第3回:複数人の顔検出に対応させる前回、顔を検出してお面をかぶせるところまでつくってみました。今回はさらにそれを発展させ、複数人の顔を検出できるようにします。TEXT_高...2018.09.21第2回:OpenCVで顔検出こんにちは、Codelight株式会社の高田です。真さんの「おいしいデ」を読みました。ハリウッドでも活躍する佐藤隆之氏がFRONTIERのクリエイター向けPCをレビュー。ハリウッドでも活躍する佐藤隆之氏がFRONTIERのクリエイター向けPCをレビュー。次の100年も愛されるフォントを創る。FIX!森田悠揮氏、マーザ・アニメーションプラネット、カヤック、萌、SNKの登壇が決定。