【文献】
Xuehan Xiong et al.,Supervised Descent Method and its Applications to Face Alignment,2013 IEEE Conference on Computer Vision and Pattern Recognition,IEEE,2013年,Pages 532-539
(58)【調査した分野】(Int.Cl.,DB名)
前記再配置部にて再配置された特徴点の特徴量を線形変換することで、当該特徴点のスコアを求める評価部をさらに備えた、請求項1ないし8のいずれかに記載の特徴点位置推定装置。
前記回帰計算部は、複数の前記特徴点のうちの優先度の高い一部の特徴点のみについて前記回帰計算を行い、前記特徴量取得部による特徴量の取得、前記回帰計算部によるずれ量の算出、および前記特徴点の再配置を複数回繰り返しながら、前記優先度に従って前記回帰計算を行う特徴点の数を増加させていき、すべての前記特徴点について前記回帰計算を行う、請求項1ないし10のいずれかに記載の特徴点位置推定装置。
【背景技術】
【0002】
従来より、画像における特徴点の位置を推定する特徴点位置推定技術として、SDM(Supervised Descent Method)と呼ばれる手法が知られている。
【0003】
SDMによる特徴点位置の推定を行うことで、顔画像において顔の器官点を特徴点としてそれらの位置を推定したり(例えば非特許文献1)、人物画像において人物の各関節点を特徴点としてそれらの位置を推定したり、車載カメラ画像において道路左右の白線を特徴点としてそれらの位置を推定したりすることができる。そして、例えば、顔画像において顔の器官点位置を推定することで、運転中のドライバーの脇見や異常状態を推定し、適切な警告を与えることができる。
【0004】
図12〜
図19は、従来のSDMによって顔の器官点位置の推定の手順を説明する図である。SDMは、「特徴抽出」と「線形回帰」の2段階からなるアルゴリズムである。
【0005】
(ステップ1:顔領域検出)
まず、
図12に示すように、任意の顔検出手法により顔画像から矩形の顔領域を検出する。この顔領域検出には任意の手法を用いることができ、例えばViola−Jonesによる手法やSPADEによる方法(Scalar Product Accelerator by Integer Decomposition for Object Detection, Mitsuru Ambai and Ikuro Sato, ECCV2014)を用いることができる。
【0006】
(ステップ2:平均器官点の配置)
次に、検出された顔領域に対して、
図13に示すように、初期位置として平均器官点位置に平均器官点を配置する。平均器官点位置は、多数の顔画像について、人が器官点(例えば、目頭、鼻の頂部、口元等)の正解データを与え、それらの平均をとることによってあらかじめ求められている。ここで、平均器官点はL個用意されているものとする。
【0007】
(ステップ3:特徴量抽出)
次に、
図14に示すように、配置したL個の顔器官点の周辺から、それぞれD次元の特徴量を抽出する。ここで、特徴量は何でもよく、たとえばHOG(Histogramsof Oriented Gradients)特徴量を用いることができる。そして、
図14に示すように、すべての器官点の特徴量を統合したLD次元の特徴ベクトルx
1を生成する。
【0008】
(ステップ4:回帰による差分ベクトルの算出)
次に、
図15に示すように、特徴ベクトルx
1を回帰行列W
1で変換することにより、差分ベクトルy
1を求める。回帰行列W
1は、特徴ベクトルx
1を入力とし、平均器官点に対する真の器官点位置のずれ量を示す差分ベクトルy
1を出力とし、特徴ベクトルx
1を差分ベクトルy
1に変換する変換行列であり、多数の顔画像について、線形回帰の技術を用いた機械学習を行うことによって求めることができる。なお、差分ベクトルy
1は器官点の数Lに各器官点の座標値の数(2)を掛けた2L次元となり、回帰行列W
1は、2L行LD列の行列として求められる。
【0009】
(ステップ5:器官点の再配置)
次に、
図16に示すように、ステップ2で用いた平均器官点の位置をステップ4で求められた差分ベクトルy
1で補正することにより、器官点を再配置する。
【0010】
この再配置された器官点について、再度ステップ3を実行して特徴量を抽出することで
図17に示すように特徴ベクトルx
2が得られ、ステップ4を実行して特徴ベクトルx
2を回帰行列W
2で変換することで
図18に示すように差分ベクトルy
2が得られ、ステップ5を実行して器官点を再配置することで
図19に示すように再々配置された器官点が得られる。このように、特徴量の抽出と回帰による再配置(ステップ3〜ステップ5)を4〜5回ほど繰り返すことにより、正確に配置された器官点を得ることができる。
【0011】
以上のように、顔画像に対してSDMの手法を用いることにより、
図20に示すように、顔画像から顔の特徴点である複数の器官点の位置の情報(座標)を得ることができる。
【発明の概要】
【発明が解決しようとする課題】
【0013】
しかしながら、上記の従来のSDMでは、メモリの消費量が大きいという問題があった。すなわち、器官点の数をLとし、特徴量の次元数をDとすると、回帰行列Wiは、2L行LD列となり、回帰行列Wiの各要素の浮動小数点のバイト数をBバイトとすると、2L×LD×Bバイトのメモリを消費することになる。そして、この容量のメモリを器官点推定の反復処理回数分だけ消費することになる。
【0014】
例えば、器官点の数が194、特徴量が288次元、回帰行列の要素が倍精度実数(8バイト)の場合は、1つの回帰行列について消費するメモリは、194×2×194×288×8=約173Mバイトとなり、反復処理回数を4回とすると、約694Mバイトのメモリを消費することになる。
【0015】
従来のSDMによる顔認識では、さらに、速度が遅いという問題があった。特に、差分ベクトルyiを求めるために特徴ベクトルxiと回帰行列Wiとの内積演算を行う処理(ステップ4)の負荷が大きく(演算量のオーダーは、2L×LD)、この処理を反復回数分だけ行わなければならないので時間がかかることになる。
【0016】
本発明は、上記の問題点に鑑みてなされたものであり、特徴量取得と回帰計算とを繰り返す特徴点位置推定処理において、メモリ消費量及び演算量を抑えることが可能な特徴点位置推定装置等を提供することを目的とする。
【課題を解決するための手段】
【0017】
本発明の一態様の特徴点位置推定装置は、対象画像から対象領域を検出する対象検出部と、前記対象領域に対して、あらかじめ用意された初期特徴点位置に特徴点を配置する特徴点配置部と、配置された前記特徴点の特徴量を取得する特徴量取得部と、前記特徴量について回帰計算をすることで、前記特徴点の位置に対する真の特徴点の位置のずれ量を算出する回帰計算部と、前記ずれ量に基づいて前記特徴点を再配置する再配置部とを備え、前記特徴量取得部は、前記特徴点配置部にて配置された特徴点、及び前記再配置部にて再配置された特徴点の特徴量を取得し、前記回帰計算部は、行列分解された回帰行列で、前記特徴量を変換することで、前記ずれ量を算出し、前記再配置部は、前記特徴量取得部による特徴量の取得、前記回帰計算部によるずれ量の算出、および前記特徴点の再配置を複数回繰り返して再配置された特徴点の位置を出力する。
【0018】
前記回帰行列は、実数行列である基底行列と、実数行列である係数行列とに分解されていてよく、具体的には、前記回帰行列は、特異値分解により前記基底行列及び前記係数行列に分解されてよい。
【0019】
前記回帰行列は、整数行列である基底行列と、実数行列である係数行列とに分解されていてよい。ここで、前記基底行列は、二値行列又は三値行列であってよい。また、前記回帰行列は、各列ベクトルが個別に分解されていてよく、あるいは、まとめて一括で行列分解されていてよい。
【0020】
前記特徴点位置推定装置は、連続する複数のフレームの対象画像について、特徴点の位置推定してよく、前記特徴点配置部は、前フレームで前記特徴量取得部による特徴量の取得、前記回帰計算部によるずれ量の算出、および前記特徴点の再配置を複数回繰り返す過程で再配置された特徴点の位置を、現フレームのあらかじめ用意された前記初期特徴点位置として、特徴点を配置してよい。この構成により、回帰の回数を減らせるため、収束までの演算量を削減できる。
【0021】
前記特徴点位置推定装置は、前記再配置部にて再配置された特徴点の特徴量を線形変換することで、当該特徴点のスコアを求める評価部をさらに備えていてよい。この構成により、スコアを評価することで、特徴点の位置の推定が失敗したか否かを判定できる。
【0022】
前記評価部は、前記再配置部にて再配置された複数の特徴点をグループ化して、各グループについて前記スコアを求めてよい。各特徴点にスコアをつける場合と比較して、グループ化したスコアで推定した部位の信頼性を判定できるので、ロバストな信頼度推定ができる。
【0023】
前記回帰計算部は、複数の前記特徴点のうちの優先度の高い一部の特徴点のみについて前記回帰計算を行い、前記特徴量取得部による特徴量の取得、前記回帰計算部によるずれ量の算出、および前記特徴点の再配置を複数回繰り返しながら、前記優先度に従って前記回帰計算を行う特徴点の数を増加させていき、すべての前記特徴点について前記回帰計算を行ってよい。この構成により、回帰計算の量、回数を削減でき、計算コストを低減できる。
【0024】
前記対象検出部は、前記対象画像の複数のブロックからそれぞれ特徴量を抽出して識別処理をすることで前記対象領域を検出してよく、前記特徴量取得部は、前記対象検出部で抽出された特徴量を前記特徴点の特徴量として取得してよい。このとき、前記特徴量取得部は、前記特徴点が属する前記ブロックの特徴量を当該特徴点の特徴量として取得してよい。
【0025】
本発明の一態様の特徴点位置推定システムは、対象画像から対象領域を検出する対象検出部と、前記対象領域に対して、あらかじめ用意された初期特徴点位置に特徴点を配置する特徴点配置部と、配置された前記特徴点の特徴量を取得する特徴量取得部と、前記特徴量について回帰計算をすることで、前記特徴点の位置に対する真の特徴点の位置のずれ量を算出する回帰計算部と、前記ずれ量に基づいて前記特徴点を再配置する再配置部とを備え、前記特徴量取得部は、前記特徴点配置部にて配置された特徴点、及び前記再配置部にて再配置された特徴点の特徴量を取得し、前記回帰計算部は、行列分解された回帰行列で、前記特徴量を変換することで、前記ずれ量を算出し、前記再配置部は、前記特徴量取得部による特徴量の取得、前記回帰計算部によるずれ量の算出、および前記特徴点の再配置を複数回繰り返して再配置された特徴点の位置を出力する。
【0026】
本発明の一態様の特徴点位置推定プログラムは、コンピュータにて実行されることで、前記コンピュータを、対象画像から対象領域を検出する対象検出部、前記対象領域に対して、あらかじめ用意された初期特徴点位置に特徴点を配置する特徴点配置部、配置された前記特徴点の特徴量を取得する特徴量取得部、前記特徴量について回帰計算をすることで、前記特徴点の位置に対する真の特徴点の位置のずれ量を算出する回帰計算部、及び前記ずれ量に基づいて前記特徴点を再配置する再配置部として機能させる特徴点位置推定プログラムであって、前記特徴量取得部は、前記特徴点配置部にて配置された特徴点、及び前記再配置部にて再配置された特徴点の特徴量を取得し、前記回帰計算部は、行列分解された回帰行列で、前記特徴量を変換することで、前記ずれ量を算出し、前記再配置部は、前記特徴量取得部による特徴量の取得、前記回帰計算部によるずれ量の算出、および前記特徴点の再配置を複数回繰り返して再配置された特徴点の位置を出力する。
【0027】
本発明の一態様の特徴点位置推定方法は、対象画像から対象領域を検出する対象検出ステップと、前記対象領域に対して、あらかじめ用意された初期特徴点位置に特徴点を配置する特徴点配置ステップと、配置された前記特徴点の特徴量を取得する特徴量取得ステップと、前記特徴量について回帰計算をすることで、前記特徴点の位置に対する真の特徴点の位置のずれ量を算出する回帰計算ステップと、前記ずれ量に基づいて前記特徴点を再配置する再配置ステップとを備え、前記特徴量取得ステップは、前記特徴点配置ステップにて配置された特徴点、及び前記再配置ステップにて再配置された特徴点の特徴量を取得し、前記回帰計算ステップは、行列分解された回帰行列で、前記特徴量を変換することで、前記ずれ量を算出し、前記再配置ステップは、前記特徴量取得ステップによる特徴量の取得、前記回帰計算ステップによるずれ量の算出、および前記特徴点の再配置を複数回繰り返して再配置された特徴点の位置を出力する。
【発明の効果】
【0028】
本発明は、特徴量取得と回帰計算とを繰り返す特徴点位置推定処理において、回帰計算に用いる回帰行列が行列分割されているので、メモリ消費量及び演算量を低減できる。
【発明を実施するための形態】
【0030】
以下、図面を参照して本発明の実施の形態を説明する。なお、以下に説明する実施の形態は、本発明を実施する場合の一例を示すものであって、本発明を以下に説明する具体的構成に限定するものではない。本発明の実施にあたっては、実施の形態に応じた具体的構成が適宜採用されてよい。
【0031】
図1は、本発明の実施の形態の特徴点位置推定装置1の構成を示すブロック図である。
図1に示すように、特徴点位置推定装置1は、対象検出部11と、特徴点配置部12と、特徴量取得部13と、回帰計算部14と、行列記憶部15と、再配置部16とを備えている。特徴点位置推定装置1は、CPU、ROM、RAM、補助記憶装置、入出力インタフェース等を備えたコンピュータが特徴点位置推定プログラムを実行することで実現できる。なお、特徴点位置推定装置1の構成要素が分散して配置され、互いに通信をすることで、特徴点位置推定装置1と同様の機能を有する特徴点位置推定システムが構成されてもよい。
【0032】
本実施の形態の特徴点位置推定装置1は、特徴量取得と線形回帰を4回反復する(繰り返す)SDMによって特徴点の位置を推定するが、反復処理回数はこれに限られず、4回より多くても少なくてもよい。
【0033】
対象検出部11には、特徴点の位置を推定する対象となる画像(対象画像)が入力される。対象検出部11は、上記の従来のSDMのステップ1と同様にして、対象画像から対象領域を検出する。この対象領域検出には任意の手法を用いることができ、例えば顔を検出する場合には、上記のViola−Jonesによる手法やSPADEによる方法を用いることができる。
【0034】
特徴点配置部12は、上記の従来のSDMのステップ2と同様にして、対象検出部11にて検出された対象領域に対して、初期特徴点位置としてあらかじめ用意された平均特徴点位置に特徴点を配置する(このように配置された特徴点を「平均特徴点」ともいう。)。平均特徴点位置は、多数の対象画像について、人が特徴点の正解データを与え、それらの平均をとることによってあらかじめ求められている。ここで、平均特徴点はL個用意されているものとする。なお、初期特徴点位置は、必ずしも平均特徴点の位置として求める必要はなく、他の任意の手法によって与えられたものであってもよい。
【0035】
特徴量取得部13は、上記の従来のSDMのステップ3と同様にして、対象領域の画像(対象領域画像)に配置されたL個の特徴点について、特徴点の周辺(例えば、特徴点を中心とする32×32のピクセルの小領域)からD次元の特徴量を抽出する。ここで、特徴量は何でもよく、たとえばHOG(Histograms of Oriented Gradients)特徴量を用いることができる。そして、特徴量取得部13は、すべての特徴点の特徴量を統合したLD次元の特徴ベクトルxiを生成する(iはSDMの反復処理回数)。
【0036】
具体的には、特徴量取得部13には、対象検出部11で平均特徴点が配置された対象領域画像から特徴量を抽出して特徴ベクトルx
1を生成し、さらに、再配置部16から特徴点が再配置された対象領域画像が入力された場合には、その都度、上記と同様にして、特徴量を抽出して、特徴ベクトルxiを生成する。
【0037】
回帰計算部14は、特徴ベクトルxiを行列分解された回帰行列Wiで変換することにより、差分ベクトルyiを求める。回帰行列Wiは、特徴ベクトルxiを入力とし、平均特徴点に対する真の特徴点の位置のずれ量のベクトルyiを出力とし、特徴ベクトルxiをベクトルyiに変換する変換行列であり、多数の対象画像について、線形回帰の技術を用いた機械学習を行うことによって求めることができる。
【0038】
本実施の形態の回帰計算部14は、上記のようにして求めた回帰行列Wiを基底行列M
iと係数行列C
iに分解して用いる。このために、
図1に示すように、回帰計算部14は、基底行列掛算部141と係数行列掛算部142とを備える。基底行列掛算部141は特徴ベクトルxiと基底行列M
iとの掛算を行う(積をとる)演算を行う。係数行列掛算部142は、特徴ベクトルxiと基底行列M
iとの積Mxiと係数行列C
iとの掛算を行う(積をとる)演算を行う。
【0039】
このように、本実施の形態の回帰計算部14は、
図2に示すように、回帰行列Wiを2つの行列に分解した上で特徴ベクトルxiとの積を計算する。上述のように、SDMでは、対象領域画像における複数の特徴点の位置を推定するものであるが、このように推定される複数の特徴点の中には、互いに近い位置にある特徴点も多く存在する。特徴点の位置が互いに近いと、回帰行列Wiの各列ベクトルw
iが互いに似ることになる。回帰行列Wiがこのような特性を持っている場合には、それを基底行列と係数行列に分解した場合に、より少ない基底数でよい近似が得られるという性質がある。
【0040】
回帰行列が2つの小さな行列に分解されることで、メモリ消費量が減り、また演算量も減る。すなわち、従来、回帰行列(2L行LD列)と特徴ベクトル(LD次元)との積の演算には、(2L×LD)回の演算が必要であったのに対して、
図2に示すように回帰行列Wを基底数kの基底行列Mと係数行列Cに分解した場合には、(k×LD+2L×k)回の演算をすればよくなる。例えば、L=194、D=288、倍精度実数(8バイト)の場合は、1つの回帰行列Wにつき約165Mバイトのメモリを消費していたところ、
図2のように分解した場合は、約(0.05×k)Mバイトのメモリ消費量で済むことになる。
【0041】
行列記憶部15は、回帰行列Wiを分解して得られた基底行列M
iと係数行列C
iを記憶している。iは反復処理回数であって、本実施の形態では、i=1〜4である。なお、回帰行列Wiの分解手法については後述する。
【0042】
再配置部16は、i=1の場合は、平均特徴点配置部12で配置された平均特徴点の位置を回帰計算部14で求められた差分ベクトルy
1で補正することにより、特徴点を再配置する。i≧2の場合には、再配置部16はその時点で求められている特徴点の位置を回帰計算部14で求められた差分ベクトルyiで補正することにより、特徴点を再配置する。
【0043】
再配置部16で再配置された特徴点は、反復処理のために特徴量取得部13に出力される。特徴量取得部13が再配置された特徴点から特徴量を抽出することで、特徴ベクトルx
2が得られ、回帰計算部14が回帰計算をすることで差分ベクトルy
2が得られ、再配置部16が差分ベクトルy
2を用いて特徴点を再配置することで、再配置された特徴点が得られる。このように、特徴量の抽出と回帰による再配置(特徴量取得部13、回帰計算部14、及び再配置部16の処理)を繰り返しつつiをインクリメントし、i=4となって予定された反復回数分の処理を終了すると、再配置部16は、そのとき配置されている各特徴点の位置の情報(特徴点座標)を出力する。
【0044】
以下、回帰行列Wの分解と回帰計算部14における回帰計算について、いくつかの実施の形態を説明する。回帰行列の分解は、一般的には特徴点位置推定装置1とは別の装置(以下、「行列分解装置」という。)によってあらかじめ実行されて、それによって生成された基底行列M及び係数行列Cが特徴点位置推定装置1の記憶部15に記憶されている。
【0045】
(第1の実施の形態)
図3は、第1の実施の形態によって回帰行列Wを基底数kの基底行列Mと係数行列Cに分解する処理を説明する図である。この例では、行列分解装置は、回帰行列Wを2つの実数行列に分解する。具体的には、行列分解装置は、回帰行列Wを特異値分解によって直行基底の実数の基底行列と実数の係数行列に分解する。
【0046】
特徴点の位置が互いに近い場合には、回帰行列Wは低ランクになりやすく、回帰行列Wが低ランクであれば、小さな行列(小さな基底数k)への分解が期待できる。基底数kを小さくすることで、演算量及びメモリ消費量を低減できることは上述したとおりである。
【0047】
(第2の実施の形態)
図4は、第2の実施の形態によって回帰行列Wを基底数kの基底行列Mと係数行列Cに分解する処理を説明する図である。この例では、行列分解装置は、回帰行列Wを整数の基底行列Mと実数の係数行列Cに分解する。具体的には、行列分解装置は、回帰行列Wを二値又は三値の基底行列Mと実数の係数行列Cに分解する。そして、この基底行列Mと係数行列Cを用いる場合には、特徴点位置推定装置1の特徴量取得部13にて特徴点につき抽出する特徴量についても二値とする。
【0048】
特徴ベクトルxを整数とすることで、基底行列Mと特徴ベクトルxとの積の演算Mxにおいて浮動小数点演算が発生しないので、回帰計算を高速に行うことができる。特に、基底行列Mが二値の場合は、排他的論理和(XOR)をとって、ビット数をカウントするだけでよく、基底行列Mが三値の場合は、排他的論理和(XOR)と論理積(AND)をとってビット数をカウントするのみでよい。よって、回帰計算を非常に高速に行うことができる。
【0049】
以下、本実施の形態の行列分解装置によって二値の基底行列及び実数の係数行列に分解する手法をさらに具体的に説明する。
【0050】
(第1の分解手法)
第1の分解手法として、データ非依存型の分解手法を説明する。第1の分解手法では、行列分解装置は、分解誤差を表す下式のコスト関数g
1を解くことで分解を行う。
【数1】
ただし、基底行列Mは二値であり、M∈{−1,1}
DL×kである。
【0051】
具体的に、行列分解装置は、以下の手順で上記のコスト関数g
1を解く。
(1)基底行列M及び係数行列Cをランダムに初期化する。
(2)基底行列Mの要素を固定して、係数行列Cの要素を最小二乗法により最適化することで、コスト関数g
1が最小になるように係数行列Cの要素を更新する。
(3)係数行列Cの要素を固定して、コスト関数g
1が最小になるように全探索で基底行列Mの要素を更新する。
(4)収束するまで(2)及び(3)を繰り返す。例えば、コスト関数g
1が所定の収束条件(例えば、減少量が一定値以下となる)を満たしたときに、収束したと判定する。
(5)ステップ(1)〜ステップ(4)により得た解を候補として保持する。
(6)ステップ(1)〜ステップ(5)を繰り返し、最もコスト関数g
1を小さくできた候補基底行列M及び候補係数行列Cを最終結果として採用する。なお、このステップ(1)〜ステップ(5)の繰り返しはなくてもよいが、複数回繰り返すことで、初期値依存の問題を回避できる。
【0052】
次に、ステップ(3)における基底行列Mの更新処理を説明する。基底行列Mのj行目の行ベクトルの要素は、回帰行列Wのj行目の要素のみに依存する。よって、基底行列Mの各行ベクトルの値は、他の行とは独立して最適化することができるので、基底行列Mは、行ごとに網羅探索(全探索)を行うことができる。基底行列Mのj行目の行ベクトルは、本実施の形態のように二値分解の場合は2
k通りしか存在しない(なお、三値分解の場合にも3
k通りしか存在しない)。よって、これらをすべて網羅的にチェックし、コスト関数g
1を最小化する行ベクトルを採用する。これを基底行列Mのすべての行ベクトルに対して適用して、基底行列Mの要素を更新する。
【0053】
(第2の分解手法)
第2の分解手法として、係数行列Cを疎にするデータ非依存型の分解手法を説明する。第2の分解手法では、行列分解装置は、分解誤差である下式のコスト関数g
2を解くことで分解を行う。
【数2】
ただし、基底行列Mは二値であり、M∈{−1,1}
DL×kである。また、|C|
1は、係数行列Cの要素のL1ノルムであり、λはその係数である。
【0054】
行列分解装置は、以下の手順で上記のコスト関数g
2を解く。
(1)基底行列M及び係数行列Cをランダムに初期化する。
(2)基底行列Mの要素を固定して、係数行列Cの要素を近接勾配法で最適化する。
(3)係数行列Cの要素を固定して、コスト関数g
2が最小になるように全探索で基底行列Mの要素を更新する。
(4)収束するまで(2)及び(3)を繰り返す。例えば、コスト関数g
2が所定の収束条件(例えば、減少量が一定値以下となる)を満たしたときに、収束したと判定する。
(5)ステップ(1)〜ステップ(4)により得た解を候補として保持する。
(6)ステップ(1)〜ステップ(5)を繰り返し、最もコスト関数g
2を小さくできた候補基底行列M及び候補係数行列Cを最終結果として採用する。なお、このステップ(1)〜ステップ(5)の繰り返しはなくてもよいが、複数回繰り返すことで、初期値依存の問題を回避できる。
【0055】
第2の分解手法によれば、係数行列Cを疎にすることができる。係数行列Cを疎にすることで、積CMの計算において、係数行列Cのゼロ要素にかかわる部分を省略することができ、さらに高速に内積計算を行うことができる。
【0056】
(第3の分解手法)
次に、第3の分解手法を説明する。第1の分解手法では、コスト関数g
1として、分解誤差
【数3】
を定義し、この分解誤差を最小化することを考えた。しかしながら、回帰行列Wを基底行列Mと係数行列Cとの積に近似した後に実際に近似をしたいのは、特徴ベクトルxと回帰行列Wの積W
Txである。
【0057】
そこで、第3の分解手法では、サンプル特徴ベクトルxをあらかじめS個集め、これをまとめたものをP∈R
DL×Sとする。そして、分解誤差を
【数4】
と定義して、これを最小化する。即ち、第3の分解手法では、行列分解装置は、下式のコスト関数g
3を解くことで分解を行う。
【数5】
このコスト関数g
3によれば、回帰病列Wは、実際のデータの分布に従って分解されることになるため、分解の際の近似精度が向上する。
【0058】
この近似分解は、基底行列Mを構成する基底ベクトルm
jを逐次的に求めることで行うことができる。第3の分解手法の手順は以下のとおりである。
(1)第1又は第2の分解手法によって、基底行列M及び係数行列Cを求めて、これをそれらの初期値とする。
(2)基底行列Mの要素を固定して、係数行列Cの要素を最小二乗法で最適化する。
(3)係数行列Cの要素を固定して、基底行列Mの要素を最適化することで、基底行列Mの要素を更新する。この基底行列Mの更新処理については後述する。
(4)収束するまで(2)及び(3)を繰り返し、コスト関数g
3を最小化した基底行列M及び係数行列Cを候補として保持する。
(5)ステップ(1)〜(4)を繰り返し、コスト関数g
3を最小化した基底行列M及び係数行列Cを最終結果として採用する。なお、ステップ(1)では再度第1又は第2の分解手法による基底行列M及び係数行列Cの最適化が行われるので、初期値が変更される。また、ステップ(5)の繰り返しはなくてもよいが、複数回繰り返すことで、初期値依存の問題を軽減できる。
【0059】
次に、ステップ(3)における基底行列Mの更新処理を説明する。データ依存分解の場合、基底行列Mの行ベクトルの値は、もはや他の行と独立せず、依存してしまう。基底行列Mの要素は、二値又は三値、即ち離散値であるため、基底行列Mの最適化は、組合最適化問題となる。よって、基底行列Mの最適化には、例えば、グリーディアルゴリズム(Greedy algorithm)、タブーサーチ(Tabu search)、シミュレイテッドアニーリング(Simulated annealing)等のアルゴリズムを用いることができる。ステップ(1)でよい初期値が得られているので、これらのアルゴリズムでも良好に分解誤差を最小化できる。
【0060】
例えばグリーディアルゴリズムを用いる場合は、以下の手順で基底行列Mを最適化する。
(3−1)基底行列Mの要素のうち、ランダムにT個を選択する。
(3−2)2
T通りの組み合わせ(後述の三値分解の場合は3
T通り)を試し、最もコスト関数g
3を最小化したものを採用する。
(3−3)ステップ(3−1)及びステップ(3−2)を収束するまで繰り返す。
【0061】
(第4の分解手法)
第4の分解手法は、第2の分解手法と第3の分解手法とを組み合わせたものである。具体的には、下式のコスト関数g
4を解くことで分解を行う。
【数6】
このコスト関数g
4によれば、回帰行列Wは、実際のデータの分布に従って分解されることになるため、分解の際の近似精度が向上するとともに、係数行列Cを疎にすることができる。即ち、第2の分解手法のメリットと第3の分解手法のメリットをいずれも得ることができる。具体的な分解の手順は、第3の分解手法と同様である。
【0062】
第2の実施の形態の分解では、回帰行列Wをまとめて一括して分解していたので、基底数kが大きくなると分解が困難になる。そこで、本実施の形態では、以下のアルゴリズムで実数行列を逐次的に分解してもよい。
【0063】
図5は、本実施の形態の分割手法において実施されるアルゴリズムのフロー図である。なお、以下の説明において、第1又は第2の実施の形態で説明した分解手法で回帰行列Wをk個の基底を持つ基底行列Mと係数行列Cとに分解する手順を下式のように表記することとする。
【数7】
【0064】
まず、行列分解装置は、分解すべき回帰行列Wを取得する(ステップS51)。次に、行列分解装置は、インデクスj(j=1〜N)を1とし、残差行列Rに回帰行列Wを代入する(ステップS52)。残差行列Rは、逐次的な分解によってそれまでに分解された基底行列M
jと係数行列C
jとの内積の和と回帰行列Wとの差である。
【0065】
次に、行列分解装置は、残差行列Rを第1又は第2の実施の形態の手法によって、基底行列Mと係数行列Cに分解する(ステップS53)。このとき、基底数はk
jとする。なお、基底数k
j=k
1、k
2、・・・、k
Nは、あらかじめ行列分解装置に記憶されている。M
jC
jが得られると、行列分解装置は、もとの残差行列RとM
jC
jとの差分を新たな残差行列Rとし(ステップS54)、インデクスjをインクリメントし(ステップS55)、インデクスjがNより大きいか、即ち、N段階の逐次的な分解が終了したかを判断する(ステップS56)。
【0066】
インデクスjがN以下である場合には(ステップS56にてNO)、行列分解装置は、ステップS53に戻って、ステップS54で得られた新たな残差行列Rに対して、ステップS55でインクリメントされた新たなjで再度分解を行う。以上の処理を繰り返して、インデクスjがNより大きくなったら(ステップS56でYES)、処理を終了する。なお、上記のように、N段の基底数k
j=k
1、k
2、・・・、k
Nは、あらかじめ用意されており、それらは同じ数であっても互いに異なる数であってもよい。また、基底数kは例えば8程度であればよい。
【0067】
本実施の形態によれば、分解の基底数kを増やせば増やすほど、もとの精度に近づけることができる。
【0068】
(第3の実施の形態)
図6は、第3の実施の形態における回帰行列の分解を説明する図である。本実施の形態では、
図6に示すように、回帰行列Wのj列目のベクトルを個別に分解して、それらをまとめる。このようにベクトルごとに分解することで、分解にかかる計算コストを抑えることができる。個々のベクトルは、第2の実施の形態で述べた手続きよって分解すればよい。
【0069】
以下の説明では、回帰行列Wのj列目の列ベクトルをw
jと表記し、係数行列Cのj列目の列ベクトルをc
jと表記する。本実施の形態では、複数の実数ベクトルw
jを並べてなる回帰行列Wを、複数の基底行列M
iと、複数の係数ベクトルc
jを
図6に示すように斜めに並べてなる行列との積の和に分解したものとみなせる。なお、
図6において行列のハッチング部分には0が入る。
【0070】
(第4の実施の形態)
本実施の形態は、特徴点位置を推定する対象である対象画像が連続する複数のフレームとして得られる場合に適用される。本実施の形態の特徴点抽出部13は、前フレームで特徴量抽出と回帰計算を反復する過程の中間ステージにおいて再配置部16で得られた特徴点位置を、現フレームの初期特徴点位置として、特徴量を抽出して回帰計算を開始する。
【0071】
本実施の形態は、特に、前フレームと現フレームとで画像の変化が小さい場合に有効に適用でき、本実施の形態によれば、特徴量抽出及び回帰計算の反復回数を減らせるため、収束までの演算量を削減できる。
【0072】
(第5の実施の形態)
本実施の形態の特徴点位置推定装置は、上記の実施の形態の特徴点推定装置の構成に加えて、特徴点位置の推定が成功したか否かを判定するスコア(確からしさ)を算出する評価部(図示は省略)をさらに備えている。いま、特徴量取得部13による特徴量の抽出と回帰計算部14による回帰計算の反復を繰り返し、器官点位置が得られたとする。
【0073】
評価部は、得られた特徴点位置から選出したL´個の特徴点から特徴量を抽出し、L´D次元のベクトルx´を得て、これに対し、s=w
Tx´の線形変換を適用してスコアを求める。このとき、(A)特徴点ごとにスコアをつけてもよく(L´=1)、(B)全ての特徴点を1つのグループとみなし、全体に1つのスコアをつけてもよく(L´=L´)、あるいは、(C)顔のパーツ(例えば、目、鼻、口)ごとに特徴点(器官点)をグループ化し、グループごとにスコアをつけてもよい。
【0074】
特に、(B)及び(C)の場合には、一点一点にスコアをつけるよりも、グループ化したスコアで推定した部位の信頼性を判定することにより、ロバストな信頼度推定ができる。例えば、人の顔から特徴点としての器官点の位置を推定する場合において、人がマスクを装着している場合には、初期特徴点位置として口がある部分に特徴点が配置されて特徴量の抽出及び回帰計算の反復が行われ、その場合には、一般的にはマスク部分において低い評価が得られることにあなるが、このマスク部分においても、マスクのしわ等で偶然にスコアの高い特徴点が1つ存在してしまうような場合がある。このような場合でも、グループ化したスコア判定であれば、マスク部分のグループについては低いスコアを得ることができ、グループ化したスコアが低ければ、対象となる器官点座標はすべて信頼度が低いとみなすことができる。
【0075】
スコア計算ための線形変換における重みwは、例えば線形SVMなどを持ち、ポジティブデータとネガティブデータを用意して、事前に学習しておけばよい。たとえば、学習データの顔にあてはめ済みの特徴点(器官点)から得た特徴量(ポジティブデータ)及び顔でない画像に特徴点(器官点)をランダムにあてはめた特徴量(ネガティブデータ)を線形SVMで学習すればよい。本実施の形態によれば、スコアを評価することで、特徴点位置の推定が失敗したか否かを判定できる。
【0076】
(第6の実施の形態)
本実施の形態では、回帰計算部14は、回帰計算の対象とする特徴点の優先度付けを行い、例えば、最初の回帰計算では優先度上位の特徴量のみを利用し、2回目では優先度中位の特徴量まで利用し、3回目は優先度下位の特徴量まで利用する、といった具合に段階分けする。優先度付けの考え方は、例えば、人の顔から特徴点としての器官点の位置を推定する場合は、顔向き、顔表情、着用物、個人差の影響を受けにくい部位とする。鼻、目頭、目尻、口端、・・・の順に優先度を低くする。
【0077】
図7は、本実施の形態の回帰計算に利用する特徴点を説明する図であり、
図8は、反復1回目の回帰計算を示す図であり、
図9は、反復2回目の回帰計算を示す図であり、
図10は、反復3回目の回帰計算を示す図である。
図7に示すように、この例では、16点の特徴点が配置されているが、反復1回目には、そのうちの6点(
図7の左の写真にてハッチングをした特徴点)のみを利用する。すなわち、回帰計算部14は、反復1回目は、優先度の高い鼻、目頭の特徴点(6点)のみを用いて
図8に示すy
1=W
1Tx
1の回帰計算を行う。これによって、すべての点(16点)についてのずれ量が算出され、すべての点について再配置を行うことができる。
【0078】
反復2回目は、回帰計算部14は、
図9に示すように、更に3点を加えて9点の特徴点についてy
2=W
2Tx
2の回帰計算を行う。このように、入力に9点分の特徴量を入力して、16点分のずれ量を算出し、16点の座標を推定することになる。換言すれば、入力と出力で関わる特徴点数が異なっており、反復が進むにつれ、推定する特徴点を増やしていく。そして、反復3回目には、回帰計算部14は、
図10に示すように、すべての16点の特徴点についてy
3=W
3Tx
3の回帰計算を行う。
【0079】
このように、本実施の形態によれば、回帰計算の反復において、後半に行くほど推定する特徴点を増やしていくことで、回帰計算の量及び回数を削減でき、計算コストを低減できる。また、反復の初期においては、ロバスト性高く認識できる器官点の特徴のみを用いることで、処理量を削減できる。
【0080】
(第7の実施の形態)
第7の実施の形態の特徴量取得部13は、対象領域から特徴量を抽出する代わりに、対象検出部11で対象領域を検出する際に利用した特徴量をそのまま流用する。この場合に、対象検出部11は、対象画像から二値のHOG特徴量(BinaryHOG)を抽出して識別処理を行うことで、対象画像から対象領域を検出する。
【0081】
具体的には、対象検出部11は、対象画像を複数段階の倍率でそれぞれ縮小してなるピラミッド画像を生成し、このピラミッド画像の各段における画像を、8×8ピクセルのサイズのブロックに分割し、各ブロックからHOG特徴量を抽出して、各ブロックに与えられた特徴量を二値ベクトルに変換する。
【0082】
識別処理では、対象検出部11は、例えば、各段の画像に、辞書を用いた線形SVMを実行することで、顔領域の検出を行う。そして、対象検出部11は、顔領域が検出された段の画像から、その検出に用いた特徴量を切り出して、特徴量取得部13に出力する。特徴量取得部13は、各特徴点の特徴量を求める際に、対象検出部11から取得した特徴量を利用する。
【0083】
なお、上記の実施の形態の特徴量取得部13は、配置(ないし再配置)された各特徴点を基準とするブロック(例えば、各特徴点を中心とする32×32のピクセルの小領域ブロック)を設定してそこから特徴量を抽出するものであったのに対して、本変形例では、対象検出部11が対象領域の検出のために抽出した特徴量を利用するので、この特徴量は、必ずしも配置された特徴点を基準とするブロックから抽出されたものとはならない。
【0084】
しかしながら、本実施の形態では、対象検出部11が抽出した各ブロックの特徴量のうち、配置された特徴点が属するブロックの特徴量を、当該特徴点の特徴量とする。このように、本実施の形態では、特徴量の抽出という点では精度が落ちるが、SDMにて十分な反復処理を行うことで十分な精度で特徴点の位置を推定できる。一方で、本実施の形態では、特徴量取得部13が特徴量を計算する必要がないので、特徴量抽出の計算時間を短縮でき、特徴点の位置推定を高速化できる。
【0085】
図11は、対象検出部11の処理を説明する図である。対象検出部11は、ピラミッド画像から対象領域を検出するにあたって、
図11(a)に示すように、1つの辞書をもってピラミッド画像の各段の画像について識別処理を行ってもよいが、
図11(b)に示すように、大きさの異なる複数の辞書からなるピラミッド辞書を用意して、
図11(a)のピラミッド画像を間引きした粗いピラミッド画像を生成して識別処理を行ってもよい。