GPUを用いた顔向き追跡法 -STCTracker-

Back to home

キーワード:GPGPU, GPU Computing, NVIDIA CUDA,顔追跡,トラッキング,パーティクルフィルタ

 

20087月,NTT CS研は,下記の論文をSpringerのサイトにて公開しました.この論文については,関連する日本語の発表や資料がないため,本ホームページで概要を紹介いたします.

 

Real-time visual tracker by Stream processing

---Simultaneous and fast 3D tracking of multiple faces in video sequences by using a particle filter ---

Journal of VLSI Signal Processing Systems    (http://www.springerlink.com/content/pk22n1632859082k/  こちらよりダウンロードできます.

 

【論文の概要】

本論文では,ビデオシーケンス中の物体の位置と姿勢をリアルタイムに追跡する方法を提案しています.ストリームプロセッサー(ここではGPU)を使うことで,疎テンプレートを使ったパーティクルフィルタを効率的に実行することができ,高解像度の画像上で複数の物体を同時にかつ実時間で追跡することが可能になりました.ストリームプロセッシングは比較的新しい計算パラダイムであり,データ並列アルゴリズムの表現と実行を効率的に,かつ,最小限の労力で実現できる事が特徴です.GPU(民生用のストリームプロセッサの一例)NVIDIA CUDA技術を使うことで,CPUのみを使った場合と比較して最大約10倍の性能向上を達成しました.また,ストリームプロセッシングは,GPU以外にもCELLや他のマルチコアCPUのような計算デバイスにも門戸を開いています.

 

【実行例】

トラッキングの結果の様子

メッシュの位置,姿勢が推定された結果.メッシュは顔形状モデルを表す.初期化時に対象人物の顔形状に合わせて自動的に構築される.

性能の比較.画面中の顔の個数を1個から6個まで変化させた時のフレームレート

CPUのみを使った場合:緑色のバー,GPUも使った場合:青色のバー

画像サイズはXGA,特徴点数は約230個,パーティクル数は1000個.

 

【開発の背景と考え方】

現在,NTT CS研では,複数人物の対面会話状況を自動的に分析,理解する技術の研究を進めています.このような研究ターゲットを我々は,会話シーン分析と呼んでおり,その一環として,顔方向追跡法STCTracker開発しました.複数の人物の会話の状況をリアルタイムに認識,理解するためには,リアルタイムに複数の顔の位置と方向を計測できる技術が求められています.従来,センサーを装着する方法などを検討してまいりましたが,より簡単で少ない設備,かつ,ユーザに負担に掛からないような計測法として,画像上の顔方向の追跡が望ましいと考えました.

 

この論文で我々が提案したSTCTracker(Sparse Template Condensation Tracker, 疎テンプレートコンデンセーション追跡法)は,岡山大学の尺長研究室で開発された方法をベースにし,いくつかの改良,拡張を施したものです.疎テンプレートコンデンセーション追跡法は,「疎テンプレート」を使った画像の照合(マッチング)を行うことで対象の位置と姿勢の追跡を行う方法です.従来のテンプレートマッチングはある領域内の全部の画素を使って照合をしていたのに対して,疎テンプレートでは,領域中の離散的な点についてのみ照合を行っています.そのため,照合回数が劇的に少なく,その分,高速に動くことが特長です.また,複雑な顔のモデルや特徴抽出が不要でありながら,非常に頑健に追跡ができる点も特長としてあげられます.この頑健性は,パーティクルフィルタ,ロバスト照合,疎テンプレートの性質による頑健性などがうまく組み合わさったことに実現されています.なお,離散的な点集合をつかったマッチングや追跡は,CMUなどでも提案されていたようです.

 

 

疎テンプレートの例

 

我々は,この疎テンプレートコンデンセーション追跡法に目を付け,3次元顔モデルの導入とその自動初期化,GPUを用いた高速化などの改良・拡張を行ったものをSTCTrackerと呼び,今回,論文として発表を行いました.そのキーポイントはなんと言ってもGPUを使った高速化にあると思います.疎テンプレートコンデンセーション追跡法は,「コンデンセーション」と付いているとおり,パーティクルフィルタを使っていることが特徴の一つとなっています.パーティクルフィルタは,対象追跡(トラッキング)などに用いられている状態推定の方法として有名な方法です.ロバスト性が利点であるものの,計算量が大きいという問題があり,実時間の追跡(トラッキング)への適用には少し難がありました.

 

パーティクルフィルタは,対象の状態(位置や姿勢)の事後確率分布を逐次的に推定していく方法です.パーティクルフィルタは,多数のパーティクルにより対象の状態の確率分布を近似的に表現して,ある観測画像が与えられたときに状態の事後確率分布をパーティクル集合として計算する方法です.別の言い方をすると,対象の状態(位置や姿勢)の仮説を多数生成し,その各仮説について,対象との当てはまりの度合いを計算して,仮説の集合を更新していく方法とも言えます.ここで一つ一つのパーティクル(仮説)の評価は,独立なプロセスですので,並列に計算すれば,容易に高速化ができると言えます.しかし,マルチコアCPUを使った並列化を考えると,デュアルコア,クアッドコアのCPUを使用してもせいぜい2倍〜4倍ほどしか性能があがりません(実際にはもっと低いです).我々はここでGPUに目を付けました.近年,GPUパワーにはめざましいものがあり,単精度浮動小数点計算ではCPU10倍以上に及んでおり,その性能向上のスピードもCPUよりも段違いと言われています.こうしたGPUの計算力をグラフィックス以外にも使いたいという思惑からGPGPPU(General Purpose GPU)という運動が興隆しています.その中でもNVIDIA社が提供しているCUDAは,C言語でプログラミングが出来ることからGPU利用の敷居を一気に下げたものとして注目を集めています.我々は,20072月頃リリースしたCUDA0.8を導入して,STCTrackerに組み込みました.CUDAを使ってパーティクルフィルタを実行する方法としては最初期の仕事ではないかと思っています.ちなみに,GPGPUの流れの中では,既にいくつかパーティクルフィルタの実行法は提案されていました.

 

【高速化のポイント】

 STCTrackerでは,パーティクル毎の計算の独立性と,さらにもう一つ,疎テンプレート上の各点ごとの照合の独立性という二重の独立性に目を付け,二重の並列計算を,NVIDIA G80の内部構造の階層性を利用して実装しました.具体的には下図のようにG80の場合(ここでは特にGeForce8800GTXの場合),128個のストリームプロセッサが8個ごとにクラスタ化されて一つのマルチプロセッサを構成しています.

CUDAから見えるハードウェアモデル

NVIDIA CUDA Compute Unified Device Architecture  Programming Guide Version 1.1, p. 14 より引用

 

全体としては,そのようなマルチプロセッサが16個で一つのGPUコアを構成しています.一つのマルチプロセッサの中の8個のストリームプロセッサは,同じ共有メモリにアクセスすることができます.異なるマルチプロセッサ間での直接的な通信はできません.STCTrackerでは,一つのパーティクルの状態に対応するテンプレートと入力画像の照合を一つのマルチプロセッサで実行しています.この計算は,テンプレート上の個々の点と入力画像との間で,テンプレートの点の輝度値と,対応する画像上の位置での輝度値との差を計算となります.各テンプレートの点ごとに独立した計算ですので,一つのマルチプロセッサに所属する複数のストリームプロセッサで分散的に計算が行われます.そして,その結果を共有メモリにストアして,最後に集約することで,このパーティクルについての照合誤差(そこからさらに重み)が計算されます.このような個々のパーティクルに関する計算が,複数のマルチプロセッサを使って分散的に実行されます.このようにしてパーティクルフィルタの並列性と,疎テンプレートの並列性の両方を活用した計算が実行されます.ここで入力画像は,ホスト側のメモリ(メインメモリ)からPCI Expressバスを通して,GPU上のテクスチャメモリに格納されます.実はこの転送がボトルネックといえます.

 

STCTrackerの処理の流れ】

 

 

上図は,STCTrackerの処理の流れを描いたものです.大きく分けて初期化(Initialization)の部分と,その右側にあるパーティクルフィルタの部分から構成されています.初期化の部分では,まず画像中から人の正面顔を検出し,その人の顔の形に合った形状モデルを構成します.また,顔領域上で特徴点の抽出を行います.こうして得られた特徴点と形状モデルによって疎テンプレート(顔モデル)がつくられます.具体的には,各特徴点の座標(x,y,z)と輝度値の集合から疎テンプレートが構成されます.ここで奥行きzの値を取得するために形状モデルが用いられます.この形状モデルはラフなものでよく,ここでは平均顔形状などをもとにその人の顔に合うようモーフィングをして生成しています.

次に,パーティクルフィルタの部分では,更新と拡散(予測とも呼ぶ)の2つの段階を各時刻(入力画像のフレーム)について繰り返し実行されます.ここではパーティクルの状態は,顔の位置と姿勢角,スケール,輝度係数のあわせて7次元ベクトルとして表現されます.更新の部分では,前述のとおり,各パーティクルの重みを,テンプレートと画像との照合により計算しています.その後,拡散の部分では,次の時刻におけるパーティクルの分布を定めます.まず,更新のステージにて得られた各パーティクルの重みに従って,パーティクルのリサンプリングを行います.次に,運動モデルとしてランダムウォークを仮定して,ガウス分布からサンプリングされたノイズ成分を各パーティクルの状態に加えます.また,上図,右側の表示部では,更新部で得られた重み付きのパーティクル分布から対象の状態の点推定値を計算して,表示を行います.

 

【応用例】

我々は現在,この顔方向追跡法(STCTracker)を複数人物の会話シーンの分析システムに応用しています.こちらのページでこのデモシステムの概要をムービーなど織り交ぜて紹介しています.このシステムでは,魚眼レンズのついたカメラ2台からの画像データを入力し,魚眼レンズで撮影された画像をパノラマ状に展開し,そのパノラマ画像上で顔の追跡を行っています.

  また,疎テンプレートコンデンセーション追跡法の発展形として表情認識手法への展開も行っています.表情変化をモデル化するため,疎テンプレート上の各点について,その輝度の変動モデルを加えた変動輝度テンプレートを開発しています.表情変化をこの輝度の変動としてモデル化することで,頭部姿勢の変動に頑健な表情認識をすることができます.なお,表情認識の研究は東京大学と共同で行われています.詳細は,共同研究者の熊野氏のホームページでご覧頂けます.

 

 

Back to home

 

All rights reserved, Copyright(C) 2005, 2006, 2007, 2008 NTT Communication Science Laboratories

著作者の事前の許可なしに当ウェブサイトのコンテンツの改変,再配布,再利用を禁止いたします.
Any reproduction, modification, distribution, or republication of materials contained on this Web site, without prior explicit permission of the copyright holder, is strictly prohibited.