イベント
[CEDEC 2011]プレイヤーがイケメンだったら,ゲームの難度がアップする? 「グランツーリスモ5」にも使われた,顔認識技術の最先端を紹介
ソニー・コンピュータエンタテインメントWorldwide Studios JAPAN スタジオ テクノロジー部 掛 智一氏 |
ソニー・コンピュータエンタテインメント半導体システム開発部 / 研究部 小口貴弘氏 |
ただ,ライブラリ自体は静止画単位で認識を行うものなので,ムービーなどの映像に対して処理を行うと必ずしも連続的にならない場合がある。プレイヤーの顔の動きに同期させてキャラクターを動かすという,ライブラリからの認識結果を単純に適用したデモが紹介されたのだが,画面のキャラクターはぶるぶる震えたり,たまに大きく動いたりと,安定した映像は得られていなかった。
まず,確認されたのは,ブレの正体はノイズであり,トビの正体は誤認識であることだ。
対策としては,前のデータと比較しての変化量でフィルタリングを行うこと。単純だが,基本的で有効な処理だ。
libfaceでは,閾値を二つ用意し,両者で示される一定の範囲から外れるデータへの加重は,閾値からの距離に応じて低くなるように設定されている。加えて,ある程度大きな値は,切り捨てられるという仕様だ。これを顔の各部分ごとに設定できるようにしており,各部の特性に合わせた調整ができる。
しかし,このような処理でも対応できない部分がある。それが「瞬き」だ。これは一般的な表情とはかなり性格の違う動きであり,瞬間的な動きをノイズと区別するのが難しい。libfaceではこの目の動きについて,ゆっくりとしたものが少なく,ほとんどがはっきりとした動きになっていることに着目し,一定値以上だと全開,一定値以下だと閉じるといった感じの関数が用意される。
ただ,目の大きな人と小さな人(細い人)ではかなり違いがあるようだ。目の開度は目の面積で判定しているようなのだが,目の細い人の全開状態は目の大きい人の半分くらいでしかないという,なかなか衝撃的な事実も明かされていた。この部分では,なるべくキャリブレーションを取ったほうがよいだろうとのこと。
なんとなく分かりにくい用語だが,要はデータの「捕間」についての話だ。libfaceでの画像認識は1/10秒単位で行われるのだが,画面表示は1/60秒単位だ。つまり,なんらかの方法で滑らかにしないと,ちょっとカクついたアニメーションになってしまうことになる。
SCEではコンボリューションフィルタ(畳み込みフィルタ)を使い,7個前までのデータに加重を掛けたものを足し合わせてデータを滑らかにしており(ガウス関数を使用しているので,ガウシアンフィルタで画像をぼかしているのと似た処理),この方法に関しては,多少の遅延は起きるものの,動きを滑らかにする目的には十分適しているようだ。
GT5でのフェイストラックの実装
「グランツーリスモ」シリーズを開発するポリフォニー・デジタルは高い技術力で知られる会社だが,CEDECで講演するのはおそらく初めてのことではないだろうか(CEDEC AWARDSで表彰されていたことはあったのだが)。
さて,フェイストラックとは,PlayStation 3用のカメラ「PlayStation Eye」を使用する機能で,ゲームにプレイヤーの顔を認識させると,プレイ中に顔を動かすことで,視点が左右に移動するというものだ。そのフェイストラックがGT5に実装された理由だが,内村氏によると「内装なども作り込んだので,見回したい」が「もうボタンに空きがない」ということから導入が決まったという。
実装に際しての処理も軽く紹介されていたが,大きく分けて,カメラハンドラと顔認識ハンドラの二つのスレッドで構成されているという。
カメラハンドラは,PlayStation Eyeからデータを引っ張ってくるわけだが,これはCCDのカラーフィルタ配列のままのデータなので,輝度情報だけの画像に変換する必要がある。この際の,擬似RGB→YUV変換(というかY変換)といった手法が示された。
メインプログラム担当からは「負荷をゼロにしろ」と要請されたそうで,機能を使わないときは完全にゼロ,使用時もほぼゼロに抑え込んでいるという。
しかし,プログラムの負荷よりももっときついのはメモリ容量とのこと。認識に使う映像バッファは2枚分で計算上600KBしか使わないはずなのに,メモリとして1MBが確保されてしまうことから,この400KBの差に泣かされていたらしく,SCEの両氏に「なんでですか?」と問う場面も。メモリ不足はそれほどに深刻だったようで,限られた場面でしか機能を有効にできず,ピット内でも顔認識を使いたかったらしいのだが,諦めざるをえなかったようだ。
顔認識の応用と今後
ポリフォニー・デジタルでは,画面の前に人がいるかどうかを判定できる機能を使って,テレビの視聴率のようなものを取れるとか,顔認識によってプレイヤーのゲームへの集中度や反応で統計を取るといったことへの応用なども考えられているようだ。社内では,プレイヤーがイケメンだったら難度を上げるといったアイデア(?)も出ていたそうだが,残念ながらGT5には実装されていない。
ゲームをプレイしている部屋の照明環境によって不具合が出やすいので,今後の課題として,そのあたりへの対策などが挙げられていた。今後は,より多彩な環境下で精度の高い結果を出せるようになってくるのだろう。
講演テーマとは関係ないのだが,GT5でのハンドラスレッド実装の説明で,とくに説明もなく「シングルトン」と書かれていたのが印象的だった。これはインスタンスが何個も作られてしまうと困る場合に使われるもので,デザインパターンの基本的な用語なのだが,これが当たり前に使われている講演というのは,少なくともCEDECでは初めて見たような気がする。いずれは,CEDECのプレゼンテーションがUMLで埋め尽くされるような時代もくるのだろうか。
- 関連タイトル:
グランツーリスモ5
- この記事のURL:
キーワード
(C)Sony Computer Entertainment Inc. Manufacturers, cars, names, brands and associated imagery featured in this game in some cases include trademarks and/or copyrighted materials of their respective owners. All rights reserved. Any depiction or recreation of real world locations, entities, businesses, or organizations is not intended to be or imply any sponsorship or endorsement of this game by such party or parties.
Produced under license of Ferrari Spa. FERRARI, the PRANCING HORSE device, all associated logos and distinctive designs are trademarks of Ferrari Spa. The body designs of the Ferrari cars are protected as Ferrari property under design, trademark and trade dress regulations.