以下、本発明を実施するための形態について説明する。なお、以下の実施例は開示の技術を限定するものではない。そして、各実施の形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[第1の実施の形態]
<情報処理システムの構成例>
図1は情報処理システム10の構成例を表す図である。
情報処理システム10は、情報処理装置100と撮像装置200を備える。情報処理装置100は、撮像装置200で撮影された画像の画像データを入力し、入力した画像データから、画像に写っている人物の視線方向を推定する。本第1の実施の形態では、情報処理装置100は、顔が隠れた画像であっても、そのような画像の画像データから視線方向を推定することが可能である。
情報処理装置100は、姿勢推定部110と注目度算出部120、空間情報記憶部130、及び注目度記憶部140を備える。
姿勢推定部110は、撮像装置200から出力された画像データを入力し、入力画像データに基づいて、画像に含まれる人物i(i=1,2,…,I)の姿勢piを推定する。姿勢piは、例えば、人物iの「鼻」、「左目」、「右目」など、各部位の位置情報を含む。姿勢piの詳細は動作例で説明する。
本第1の実施の形態においては、姿勢推定部110は、例えば、入力画像データに基づいて、人物の部位に関するモデルデータ(又は正解データ、或いは教師データ。以下では、これら3つを区別しないで用いる場合がある。)を利用して、姿勢piを生成する。姿勢推定部110における姿勢piの推定処理については動作例で説明する。姿勢推定部110は、推定した姿勢piを注目度算出部120へ出力する。
注目度算出部120は、姿勢piに含まれる位置情報を利用して、画像に含まれる人物iの視線方向を推定する。具体的には、注目度算出部120は、例えば、姿勢推定部110で推定対象となっている人物iの部位のうち、顔の部位の位置情報を推定することができなかったとき、推定することができた顔以外の他の部位の位置情報に基づいて、画像に含まれる人物iの視線方向を推定する。
例えば、撮像装置200で撮像された画像には、障害物や視線方向などによって人物iの顔などの部位が写っていない場合もある。従って、姿勢推定部110で推定された姿勢piには、顔の部位(例えば、目や鼻など)の位置情報が含まれない場合がある。注目度算出部120では、そのような姿勢推定部110で推定することができなかった顔の部位の位置情報を、姿勢推定部110で推定できた他の部位の位置情報を利用して算出し、これらの位置情報に基づいて、人物iの視線方向を推定するようにしている。
なお、注目度算出部120は、例えば、人物iの向きベクトルqiを計算することで、人物iの視線方向を推定する。本第1の実施の形態では、向きベクトルqiのことを、例えば、注目度と称する場合がある。以下では、注目度、向きベクトルqi、及び視線方向を区別しないで用いる場合がある。注目度算出処理の詳細については、動作例で説明する。注目度算出部120は、算出した注目度を注目度記憶部140に記憶する。
また、注目度算出部120は、空間情報記憶部130から、各対象物300-1,300-2の位置情報を読み出す。そして、注目度算出部120は、算出した向きベクトルqiと、各対象物300-1,300-2の位置情報とに基づいて、各対象物300-1,300-2に視線を向けている人物iの数をカウントする。注目度算出部120は、カウントしたカウント値を注目度記憶部140に記憶する。カウント処理の詳細も、動作例で説明する。
空間情報記憶部130は、例えば、メモリであって、各対象物300-1,300-2の位置情報を記憶する。位置情報としては、例えば、各対象物300-1,300-2の設置点とその周囲の領域を、2次元座標(x,y)で表されたものであってもよい。
注目度記憶部140は、例えば、メモリであって、注目度算出部120で算出された注目度を記憶する。
撮像装置200は、例えば、1又は複数の人物を撮影し、撮影した画像を画像データとして情報処理装置100へ出力する。図1の例では、撮像装置200は、対象物300-1,300-2と、対象物300-1,300-2へ視線方向を向けている複数の人物とを含む画像を撮影する。
なお、図1の例では、撮像装置200は情報処理装置100の外部に配置される例を表しているが、撮像装置200は、例えば、撮像部として、情報処理装置100内に設けられてもよい。また、図1の例では、撮像装置200は、1台の例を表しているが、複数台あってもよい。複数台の例は、第2の実施の形態で説明する。
<動作例>
図2は情報処理システム10の動作例を表すフローチャートである。
撮像装置200と情報処理装置100は処理を開始すると(S10)、撮像装置200は群衆を撮影する(S11)。例えば、撮像装置200は、図1に示すように、複数の人物(以下、「群衆」と称する場合がある、)が写った画像を撮影し、撮影した画像データを情報処理装置100へ出力する。
次に、情報処理装置100は、画像データに基づいて、撮像装置200で撮影された画像に写っている人物iの姿勢piを推定する(S12)。姿勢piは、例えば、以下の式(1)で表される。
式(1)において、xj
iは画像内における人物iの部位jのx座標、yj
iは画像内における人物iの部位jのy座標をそれぞれ表す。また、vj
iは、人物iの部位jが画像内で視えている(又は写っている、或いは含まれる)ときは「1」、視えていないときは「0」の値をとるパラメータである。
図3は部位番号と部位との関係例を表す図である。図3に示すように、各部位jには、部位番号が予め割り振られている。図3の例では、部位j=1のときは「鼻」を表し、部位j=6のときは「首」を表す。図3は一例であって他の番号が割り振られてもよい。
図4は撮像された画像の例を表す図である。図4の例では、人物i=1の右手の部位(j=12)は画像に写っているが、左肘の部位(j=9)は障害物により画像に写っていない。そのため、姿勢pi=(・・・ x9
1 y9
1 0 ・・・ x12
1 y12
1 1 ・・・)となり得る。例えば、姿勢推定部110は、入力画像データに基づいて、このような姿勢piを推定する。以下では、姿勢推定処理(S12)の詳細について説明する。なお、以下では、姿勢piと姿勢ベクトルpiとを区別しないで用いる場合がある。
<姿勢推定処理>
図5は姿勢推定処理(S12)の例を表すフローチャートである。また、図6(A)は姿勢推定部110の構成例を表す図である。図5の各処理を説明しながら、図6(A)について説明する。なお、図6(A)に示すように、姿勢推定部110は、CNN(Convolutional neural network)処理部111と候補点算出部112、及びグルーピング処理部113を備える。
図5に示すように、姿勢推定部110は、姿勢推定処理を開始すると(S120)、部位j(j=1,2,…,J)の確率分布(又はヒートマップ)を計算する(S121)。CNN処理部111では、例えば、畳み込みニューラルネットワーク(以下、「CNN」と称する場合がある。)を用いた公知の手法により、確率分布φ(X,W)を計算する。Wは、例えば、CNN処理に利用されるパラメータを表す。例えば、CNN処理部111は、以下の処理を行う。
すなわち、CNN処理部111は、ある画像データに対して、右手の正解データを利用して、フィルタリング処理(又は畳み込み処理)を行う。そして、CNN処理部111は、フィルタリング後のデータに対して、複数画像を含むブロック毎の代表値(又は最大値)を抽出するプーリング処理を施し、以後、フィルタリング処理とプーリング処理を繰り返すことで、右手(j=12)の確率分布の正解データを生成する。次に、CNN処理部111は、図6(B)に示すようにRGB(Red Green Blue)の画像データXを入力する。CNN処理部111は、右手(j=12)の確率分布の正解データを利用して、入力画像データXに対して、フィルタリング処理とプーリング処理を繰り返すことで、右手の確率分布φ(X,W)を得る。
図6(C)は右手の確率分布φ(X,W)の例を表す図である。例えば、確率分布φ(X,W)は、画素毎(又は複数画素を含むブロック毎)に「0」から「1」までの数値(又は確率値)を表すものとして表現される。
なお、以下では、フィルタリング処理とプーリング処理を繰り返す処理のことを、例えば、CNN処理と称する場合がある。
同様に、CNN処理部111は、右肘(j=10)の正解データを利用して、CNN処理により、右肘の確率分布の正解データを得る。そして、CNN処理部111は、右肘の確率分布の正解データを利用して、CNN処理により、入力画像データXから、右肘の確率分布φ(X,W)を得る。
なお、CNN処理部111は、各部位の確率分布φ(X,W)だけではなく、各部位のつながり度合いを表す確率分布φ(X,W)を算出する。CNN処理部111では、CNN処理に利用した、各部位の正解データから、各部位を接続させた正解データを得ることができる。そして、CNN処理部111は、ある画像データから、各部位を接続させた正解データを利用して、ある画像データに対してCNN処理を行うことで、各部位を接続させた正解データの確率分布を得て、入力画像Xに対して、この確率分布を利用してCNN処理を行うことで、各部位のつながり度合いを表す確率分布φ(X,W)を算出することができる。
このように、CNN処理部111は、各部位jの正解データを利用して、画像データXに対して、畳み込み処理などを施すことで、各部位jの確率分布φ(X,W)を計算する。
CNN処理部111は、S121において、例えば、以下の処理を行う。すなわち、CNN処理部111は、内部メモリに記憶された各部位jの正解データを読み出して、この正解データを利用して、ある画像データに対してCNN処理を行い、各部位jの確率分布の正解データを計算し、内部メモリに記憶する。CNN処理部111は、このような各部位jの確率分布の正解データを、S121の処理の前に計算し、内部メモリに記憶させておいてもよい。そして、CNN処理部111は、入力画像データXに対して、内部メモリから読み出した各部位jの確率分布の正解データを利用して、CNN処理を行うことで、各部位の確率分布φ(X,W)を得る。
CNN処理部111は、正解データを用いたときの各部位jの部位番号と、その部位jの確率分布φ(X,W)とを候補点算出部112へ出力する。
以上、各部位jの確率分布φ(X,W)の計算例について説明した。このような畳み込みニューラルネットワークを用いた手法として、例えば、Zhe Cao, Tomas Simon, Shih-En Wei, Yaser Sheikh, "Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields", In CVPR 2017に開示された手法がある。CNN処理部111は、これを用いて、各部位jの確率分布φ(X,W)を計算してもよい。また、各部位の確率分布φ(X,W)の計算例としては、畳み込みニューラルネットワーク以外にも、テンプレートマッチングを用いた公知の手法が用いられてもよい。テンプレートマッチングは、例えば、各部位のモデルデータと比較して、入力画像の各部位の確率分布φ(X,W)を算出する手法である。
図5に戻り、次に、姿勢推定部110は、部位位置の候補点を求める(S122)。例えば、図6(A)に示すように、候補点算出部112は、CNN処理部111から出力された各部位の確率分布φ(X,W)に基づいて、候補点を算出する。
図7(A)は、右手(j=12)の確率分布φ(X,W)に対して右手の候補点A1,A2を探索する例を表す図である。候補点算出部112は、右手の確率分布φ(X,W)において、あるブロックの確率が極大点となっている位置座標A1,A2を探索する。この位置座標A1,A2が右手の候補点となる。また、図7(B)に示すように、候補点算出部112は、右肘の確率分布確率分布φ(X,W)において、確率が極大点となっている位置座標B1,B2を探索する。位置座標B1,B2が右肘の候補点となる。候補点算出部112は、各部位の部位番号とその候補点とをグルーピング処理部113へ出力する。
なお、姿勢推定部110は、例えば、極大点が閾値以上のとき、そのような極大点をその部位の候補点とし、極大点が閾値より小さいときは、その部位が入力画像に写っていないと判定する。前者の場合、姿勢推定部110は、vj
i=1(又は視えている部位)とし、後者の場合、vj
i=0(又は視えていない部位)とする。姿勢推定部110は、前者の場合に以降の処理を行い、後者の場合はここで姿勢推定処理(S12)を終了する。
図5に戻り、次に、姿勢推定部110は、部位位置の候補点ごとにグルーピングを行い(S123)、人物iごとに部位を特定する。例えば、図6(A)のグルーピング処理部113においてこのようなグルーピングが行われる。グルーピング処理部113は、例えば、部位jの候補点間の距離を比較することで、各候補点をグループ化する。具体的には、グルーピング処理部113は、例えば、CNN処理部111においてCNN処理が施された、部位と部位とのつながり度合いを示す確率分布φ(X,W)を用いて処理を行う。
図7(C)は右手と右肘のつながり度合いの確率分布φ(X,W)の例を表す図である。候補点算出部112において、右手の候補点A1,A2(図7(A))と右肘の候補点B1,B2(図7(B))を得ている。グルーピング処理部113は、これらの候補点A1,A2,B1,B2に対して、A1とB1とが同一人物に属する部位であるのか、A1とB2とが同一人物に属する部位であるのかを、右手と右肘のつながり度合いの確率分布に基づいて、判別する。例えば、グルーピング処理部113は、以下の式を利用して、各組み合わせのつながり度合いを計算する。
式(2)と式(3)において、y1は、例えば、図7(C)に示すように、人物i=1の右手と右肘のつながり度合いを示す確率分布上の集合を表す。ここで、候補点A1とB1のつながり度合いは、例えば、集合y1に対して、候補点A1とB1とを結んだ線分の線積分の数値を表している。また、候補点A1とB2とのつながり度合いは、例えば、集合y1に対して、候補点A1とB2とを結んだ線分の線積分の数値を表している。グルーピング処理部113は、式(2)と式(3)の数値に対して、大きい方、例えば、候補点A1とB1とを選択し、選択した候補点A1とB1とをグループ化する。同様に、グルーピング処理部113は、人物i=2の右手と右肘のつながり度合いを示す確率分布をCNN処理部111から候補点算出部112を介して取得し、式(2)と式(3)において、y1をy2に代えた式を用いて、その数値の大きい方を選択して、グループ化する。この場合、グルーピング処理部113は、A2とB2とをグループ化する。
このように、CNN処理部111では、各部位のつながり度合いを示す確率分布を計算し、グルーピング処理部113は、このような確率分布と、候補点算出部112で算出された各候補点の組み合わせとに対して、線積分の計算を行う。そして、グルーピング処理部113は、その計算結果が最も大きい候補点の組み合わせをグループ化する。グルーピング処理部113は、グループ化した各候補点により、人物iの各部位を特定することができる。
CNN処理部111は、S123において、例えば、以下の処理を行う。すなわち、CNN処理部111は、内部メモリから式(2)と式(3)を読み出し、各部位のつながり度合いを示す確率分布の集合を式(2)と式(3)に代入し、各線分の線積分の数値を得る。そして、CNN処理部111は、最も大きい数値となっている候補点の組み合わせを1つのまとめることで、グループ化する。
図5に戻り、次に、姿勢推定部110は、グループ化した人物iごとにその姿勢piを取得する(S124)。例えば、図6(A)のグルーピング処理部113は、グループ化した各部位の候補点(又は位置座標)を、式(1)に示された姿勢piの各要素に代入することで、人物iの姿勢piを得る。
以上が姿勢推定処理(S12)である。
図2に戻り、次に、情報処理装置100は、群衆の人物iごとに注目度を算出する(S13)。以下、注目度算出処理の例について説明する。
<注目度算出処理>
図8は、注目度算出処理の例を表すフローチャートである。例えば、注目度算出部120で行われる処理である。
注目度算出部120は、注目度算出処理を開始すると(S130)、姿勢piを利用して、顔の部位、首、左肩、及び右肩は視えているか否かを判別する(S131)。例えば、注目度算出部120は、以下の式を利用して判定する。
注目度算出部120は、viが「1」のとき、顔の部位(鼻、左目、右目、左耳、右耳)、首、左肩、及び右肩が全て視えていると判定し、viが「0」のとき、顔の部位、首、左肩、又は右肩のいずれかが視えていないと判定する。例えば、注目度算出部120は、内部メモリから式(4)を読み出して、姿勢推定部110から出力された姿勢piからv1
i~v8
iを抽出し、式(4)に代入することで判定する。
注目度算出部120は、顔の部位、首、左肩、又は右肩のいずれかが視えていないと判定したとき(S131でNO)、視えていない部位の位置情報を補間により算出する(S132)。注目度算出部120は、例えば、以下の式を用いて、人物iにおいて視えていない部位kの位置ベクトル(又は位置情報。以下では、位置ベクトルと位置情報とを区別しないで用いる場合がある。)a
k
i
=(x
k
i
y
k
i
)
T を算出する。
式(5)において、ak1
i,ak2
i,…,akM
iは人物iの視えている部位(k1,k2,…,kM)(Mは、0<M≦jを満たす整数)の位置ベクトル、A
k
M は2行2M列の行列、bk
Mは2行1列の縦ベクトルをそれぞれ表す。
式(5)は、例えば、視えていない部位kの位置ベクトルak
iは、視ている部位の位置ベクトルak1
i,ak2
i,…,akM
iとオフセットbk
Mとを用いて算出されることを表している。
式(5)の行列A
k
M と縦ベクトルbk
Mは、姿勢sの集合Pを用いて、以下の式を解くことで求めることができる。
式(6)において、s
k
i
=(x
k
i
y
k
i
)
T は、姿勢sの部位番号kの部位の位置ベクトルを表す。また、姿勢sの集合Pは、例えば、3D-CGソフトウェアなどで作成した人体模型をモデルデータとした場合の各部位の位置ベクトルの集合である。
式(6)は、例えば、このような人体模型として作成された人物の部位番号kの位置ベクトルsk
iと、姿勢推定部110で推定された、視えている部位の位置ベクトルak1
i,ak2
i,…,akM
iとの誤差が最小となるA
k
M とbk
Mとを表している。式(6)は、例えば、勾配降下法など、公知の手法により解くことが可能である。
このように注目度算出部120は、例えば、顔の部位の位置情報を姿勢推定部110で推定することができなかったとき、姿勢推定部110で推定することができた他の部位の位置情報を利用して、顔の部位の位置情報を算出している。
具体的には、注目度算出部120は、S132において、例えば、以下の処理を行う。すなわち、注目度算出部120は、姿勢推定部110から受け取った姿勢piから、視えている部位の位置ベクトルak1
i,ak2
i,…,akM
iを抽出する。そして、注目度算出部120は、内部メモリに記憶された式(5)を読み出して、式(5)に代入することで、姿勢piの中で視えていない部位kの位置ベクトルak
iを算出する。その際、注目度算出部120は、内部メモリから式(6)を読み出して、視えている部位の位置ベクトルak1
i,ak2
i,…,akM
iを式(6)に代入して演算を行うことで、A
k
M とbk
Mを取得して、式(5)に代入する。
なお、首、左肩、右肩、及び鼻を、顔の部位に含めてもよい。この場合、注目度算出部120は、これらの部位を含めた顔の部位について、その部位が視えているか否かをS131において判定してもよい。
次に、注目度算出部120は、人物iの向きベクトルqiを算出する(S133)。例えば、注目度算出部120は、以下の式を用いて、向きベクトルqiを算出する。
式(7)において、Wは2行2J列の行列、w0は2行1列の縦ベクトルをそれぞれ表す。また、aj
iは、人物iの部位jの位置ベクトルを表す。行列Wと縦ベクトルw0は、式(6)と同様に、以下の式を解くことにより求められる。
式(8)において、sk=(xk yk)Tは、姿勢sの部位番号kの部位の位置ベクトルを表し、姿勢sの集合Pは、例えば、上述した場合と同様に、3D-CGソフトウェアなどで作成された人体模型のおける各部位の位置ベクトルの集合である。また、qsは、例えば、姿勢sが持つ向きベクトルであり、顔の部位(左目、右目、左耳、右耳、鼻、首)の最小2乗平面Sfaceに直交するベクトルとして定義される。図9(A)は人物画像の例を表し、図9(B)は向きベクトルqsの例を表す図である。
例えば、注目度算出部120は、S133において、以下の処理を行う。すなわち、注目度算出部120は、内部メモリに記憶された式(7)を読み出して、姿勢piから抽出した、視えている部位の位置ベクトルak1
i,ak2
i,…,akM
iと、補間により算出した、視えていない部位kの位置ベクトルak
iとを、式(7)に代入する。そして、注目度算出部120は、人物iの向きベクトルqiを算出する。その際、注目度算出部120は、内部メモリから、式(8)、向きベクトルqs、及び各部位番号kの部位の位置ベクトルskを読み出して、式(8)に代入することで、Wとw0とを取得する。この場合、予め計算されたWとw0とが内部メモリに記憶され、注目度算出部120は、処理の際に内部メモリからWとw0とを読み出して、式(7)に代入するようにしてもよい。
図8に戻り、注目度算出部120は、人物iの向きベクトルqiを算出すると、注目度算出処理を終了する(S134)。
一方、注目度算出部120は、顔の部位、首、左肩、及び右肩のいずれも視えていると判定したとき(S131でYES)、人物iの向きベクトルqiを算出し(S133)、注目度算出処理を終了する(S134)。この場合、注目度算出部120は、補間処理(S132)を行うことなく、視ている部位jの位置ベクトルa1
i,a2
i,…,aj
iを式(7)に代入することで、向きベクトルqiを算出する。
上述した例は、人物iの向きベクトルqiの算出する(S133)例として、式(7)と式(8)を用いた例について説明した。例えば、注目度算出部120は、式(7)と式(8)に代えて、以下の式を用いて、人物iの向きベクトルqiを算出してもよい。
式(9)に示すように、注目度算出部120は、鼻(j=1)、首(j=6)、左肩(j=7)、右肩(j=8)の各部位の位置ベクトルak
iのx軸方向の位置座標(x1
i,x6
i,x7
i,x8
i)を用いて、向きベクトルqiを算出する。なお、式(9)において、w1,w2はパラメータであり、例えば、w1=1.0、w2=0.5である。図10(A)から図10(C)は、w1=1.0、w2=0.5の場合の各座標の関係例を表す図である。
注目度算出部120は、例えば、以下の処理を行う。すなわち、注目度算出部120は、内部メモリに記憶した式(9)を読み出す。そして、注目度算出部120は、姿勢piから抽出した、又は、補間により算出した、各部位(j=1,6,7,8)の位置ベクトルak1
iのx座標を式(9)に代入することで、人物iの向きベクトルqiを算出する。
以上が注目度算出処理(S13)の例である。上述した例は、人物iの向きベクトルqiを算出する例について説明した。例えば、注目度算出部120は、姿勢推定部110から、他の人物(i+1)の姿勢pi+1を受け取ったときは、この人物(i+1)に対する注目度算出処理(S13)を行い、姿勢pi+1を算出する。このようにして、注目度算出部120は、画像に写っている全ての人物iの向きベクトルqiを算出する。
図2に戻り、次に、情報処理装置100は、算出した人物iの向きベクトルqiを注目度記憶部140に記憶する(S15)。
次に、情報処理装置100は、終了するか否かを判定する(S16)。例えば、情報処理装置100を操作するユーザが終了ボタンを操作したか否か、或いは、終了コマンドを入力したか否かにより判定する。
情報処理装置100は、終了するときは(S16でYES)、一連の処理を終了させ(S17)、終了しないときは、S11へ移行して、上述した処理を繰り返す(S11からS15)。例えば、情報処理装置100は、他の画像(又は次の画像フレーム)に対して、画像に写っている人物iの向きベクトルqiを算出するときは、終了することなく(S16でNO)、上述した処理を繰り返せばよい。
なお、情報処理装置100は、向きベクトルqiを注目度記憶部140に記憶した後、対象物300-1,300-2に視線を向けている人物iの数をカウント処理を行ってもよい。
図11は、カウント処理の例を表すフローチャートである。例えば、注目度算出部120で行われる。
注目度算出部120は、処理を開始すると(S140)、向きベクトルqiが対象物mと交差するか否かを判定する(S141)。例えば、注目度算出部120は、算出した向きベクトルqiを、n(n>0)倍し、n倍した向きベクトルqiが、対象物300-1,300-2の設置点の位置座標と交差するか否か、或いは設置点の位置座標の周囲の一定範囲内の領域で交差するか否かにより判定する。この場合、注目度算出部120は、例えば、向きベクトルqiを表す二次方程式に、設置点の位置座標を代入しても二次方程式としての解が得られるか否かにより判定してもよい。或いは、注目度算出部120は、向きベクトルqiを表す二次方程式と一定範囲内の領域を表す一次方程式とで解が得られるか否かにより判定してもよい。注目度算出部120は、例えば、空間情報記憶部130に記憶された対象物300-1,300-2の設定点を表す位置情報などを利用して、このような計算を行う。
注目度算出部120は、向きベクトルqiが対象物mと交差すると判定したとき(S141でYES)、対象mに対するカウント値を増加させる(S142)。例えば、注目度算出部120は、n倍した向きベクトルqiが、対象物300-1の設置点の位置座標や、その周囲の領域で交差するとき、対象物300-1のカウント値をインクリメントする。
次に、注目度算出部120は、終了判定を行い(S143)、カウント処理を終了させるときは(S143でYES)、終了し(S144)、終了させないときは(S143でNO)、人物iをインクリメントし(S145)、次の人物iに対して、どの対象物mに着目しているかを判定する(S141,S142)。
一方、注目度算出部120は、向きベクトルqiが対象物mと交差しないと判定したとき(S141でNo)、対象物mに対するカウント値を増加させることなく、終了判定を行う(S143)。
例えば、注目度算出部120は、カウント処理を終了したとき(S144)、例えば、内部メモリなどに記憶した各対象物mに対するカウント値を、注目度記憶部140に記憶する。注目度算出部120は、表示装置へカウント値を出力することで、ユーザに対して、どの対象物300-1,300-2に群衆が着目しているかを、通知することができる。
例えば、街中などで監視カメラを用いて群衆の画像が撮影された場合を考える。この場合、撮影された画像には、障害物や監視カメラの設置場所などによって、顔が隠れた人物が含まれる場合がある。このような場合、顔の部位の位置情報が得られない場合がある。
本第1の実施の形態の情報処理装置100は、顔の部位の位置情報が得られないときであっても、位置情報が得られた他の部位の位置情報を利用して、補間処理(例えば図8のS132)により、顔の部位の位置情報を算出する。そして、情報処理装置100は、顔の位置情報と他の部位の位置情報とを用いて、向きベクトルqiを算出する。従って、本情報処理装置100は、顔が隠れた人物の画像であっても、その人物の視線方向を推定することが可能である。
[第2の実施の形態]
第1の実施の形態では、姿勢piなどは、2次元空間上のベクトルとして表現される例について説明した。本第2の実施の形態では、姿勢piなどが、3次元空間上のベクトルとして表現される例について説明する。このような3次元空間上のベクトルは、例えば、複数台のカメラ(又は撮像装置200)を用いて、計算が可能となる。
図12は、2台のカメラの座標系と3次元空間上の位置座標の例を表す図である。図12に示す2台のカメラは、例えば、撮像装置200が2台あることを表している。
図12において、Oは第1のカメラの原点、O’は第2のカメラの原点をそれぞれ表す。また、tは第1のカメラから第2のカメラへ向かう並進ベクトル、(X,Y,Z)は第1のカメラの座標系から見た部位の3次元位置座標をそれぞれ表す。さらに、Rは、第1のカメラから見た第2のカメラの回転角を表す回転行列、fは第1のカメラの焦点距離(原点Oから第1のカメラの画像座標系の原点までの距離)、f’は第2のカメラの焦点距離(原点O’から第2のカメラの画像座標系の原点までの距離)をそれぞれ表す。さらに、(x,y)は、第1のカメラの画像内(又は第1のカメラの画像座標系)における部位の2次元位置座標、(x’,y’)は、第2のカメラの画像内(又は第2のカメラの画像座標系)における部位の2次元位置座標をそれぞれ表す。
図13は、第2の実施の形態における姿勢推定部110の構成例を表す図である。
図13に示すように、姿勢推定部110は、第1及び第2のCNN処理部111-1,111-2、第1及び第2の候補点算出部112-1,112-2、第1及び第2のグルーピング処理部113-1,113-2を備える。また、姿勢推定部110は、同一人物特定処理部114、カメラ行列計算部115、及び3次元位置計算部116を備える。
第1及び第2のCNN処理部111-1,111-2は、第1及び第2のカメラから出力された画像データに対して、CNN処理などを施して、各部位に対する確率分布φ(X,W)を出力する。第1及び第2のCNN処理部111-1,111-2の各々は、各カメラからの画像データに対して、例えば、第1の実施の形態と同様のCNN処理を施すことで、各カメラで撮像された画像の各部位に対する確率分布φ(X,W)を出力する。
第1及び第2の候補点算出部112-1,112-2は、第1及び第2のCNN処理部111-1,111-2から出力された確率分布φ(X,W)に基づいて、各部位の候補点をそれぞれ算出する。第1及び第2の候補点算出部112-1,112-2の各々は、例えば、第1の実施の形態と同様に、確率分布φ(X,W)から極大点を探索するなどにより、候補点を算出する。
第1及び第2のグルーピング処理部113-1,113-2は、第1及び第2の候補点算出部112-1,112-2から出力された候補点に対して、それぞれグルーピングを行う。第1及び第2のグルーピング処理部113-1,113-2の各々は、例えば、第1の実施の形態と同様に、各候補点の距離に基づいて、グルーピングを行う。
同一人物特定処理部114は、第1及び第2のグルーピング処理部113-1,113-2から出力された、グループ化された候補点が同一人物の候補点であるか否かを、類似度を用いて特定する。同一人物特定処理部114は、類似度の高い候補点の組み合わせを同一人物の候補点であると判定して、その候補点を出力する。詳細は動作例で説明する。
カメラ行列計算部115は、カメラ行列P,P’を計算する。カメラ行列Pは、例えば、図12に示すように、第1のカメラの画像座標系を3次元位置の座標系へ変換する行列を表す。また、カメラ行列P’は、例えば、第2のカメラの画像座標系を3次元位置の座標系を変換する行列を表す。カメラ行列計算部115は、同一人物特定処理部114から出力された各候補点と、計算したカメラ行列P,P’とを3次元位置計算部116へ出力する。カメラ行列P,P’の計算例は動作例で説明する。
3次元位置計算部116は、例えば、カメラ行列P,P’を用いて、グループ化された各部位の候補点(2次元の位置座標)を3次元位置座標へ変換して、3次元位置ベクトルを含む姿勢piを出力する。詳細は動作例で説明する。
図14は第2の実施の形態における動作例を表すフローチャートである。例えば、情報処理装置100は、図2に示すフローチャートに代えて、図14に示すフローチャートにより処理を行う。
情報処理装置100は、処理を開始すると(S20)、第1のカメラで群衆を撮影し(S21)、第2のカメラでも同じ群衆を撮影する(S23)。例えば、撮像装置200が2台あり、一方の撮像装置200が第1のカメラ、他方の撮像装置200が第2のカメラとして、各々群衆を撮影する。
次に、情報処理装置100は、第1のカメラで撮影された画像に含まれる各人物の姿勢を推定し(S22)、第2のカメラで撮影された画像に含まれる各人物の姿勢も推定する(S24)。例えば、第1のCNN処理部111-1、第1の候補点算出部112-1、及び第1のグルーピング処理部113-1において、第1のカメラで撮影された画像に含まれる各人物の姿勢を推定する。また、例えば、第2のCNN処理部111-2、第2の候補点算出部112-2、及び第2のグルーピング処理部113-2において、第2のカメラで撮影された画像に含まれる各人物の姿勢を推定する。
次に、情報処理装置100は、2つのカメラで撮影された画像に対して、同一人物特定処理を行う(S25)。
図15(A)は同一人物特定処理の例を表すフローチャートである。例えば、同一人物特定処理部114において行われる。
同一人物特定処理部114は、同一人物特定処理を開始すると(S250)、第1のカメラで撮影した人物の画像をトリミング(又は切り抜き、或いは切り取り)し(S251)、第2のカメラで撮影された人物の画像をトリミングする(S252)。例えば、同一人物特定処理部114は、以下の処理を行う。
すなわち、同一人物特定処理部114は、第1及び第2のグルーピング処理部113-1,113-2から、グループ化された候補点を入力する。そのため、同一人物特定処理部114は、候補点に基づいて、グループ化された候補点全体の周囲にある画像の画素値が一定の範囲内にある画素値を、第1及び第2の画像の画像データから抽出することで、人物の画像をトリミングする。例えば、人物の画像の各画素の画素値は、第1及び第2のCNN処理部111-1,111-2、第1及び第2の候補点算出部112-1,112-2,及び第1及び第2のグルーピング処理部113-1,113-2を介して、同一人物特定処理部114へ入力される。
次に、同一人物特定処理部114は、類似度計算処理を行う(S253)。
図15(B)は類似度計算処理の例を表すフローチャートである。
同一人物特定処理部114は、類似度計算処理を開始すると(S2530)、第1及び第2のカメラで撮影された人物の部位の画像をトリミングする(S2531,S2533)。この場合も、例えば、同一人物特定処理部114は、候補点ごとに、候補点の周囲にある画像の画素値が一定の範囲内にある画素値を抽出することで、人物の部位の画像をトリミングする。同一人物特定処理部114は、例えば、第1及び第2のカメラで撮影された画像ごとに、このような部位の画像をトリミングする。
次に、同一人物特定処理部114は、各々トリミングした部位の画像に対して、カラーヒストグラムを計算する(S2532,S2534)。例えば、同一人物特定処理部114は、以下の処理を行う。
すなわち、同一人物特定処理部114は、各部位の画像の各画素を所定セル(例えば、8×8画素)にまとめ、所定セルごとに、RGBの各画素値(又は階調値)の出現回数を取得する。このような処理は、公知手法でよく、例えば、色情報を利用した局所特徴量であるCSS(Color Self-Similarity)特徴量を計算することで、カラーヒストグラムが計算されてよい。同一人物特定処理部114は、第1及び第2のカメラで撮影された画像ごとに、カラーヒストグラムを計算する。
次に、同一人物特定処理部114は、カラーヒストグラム(S2532,S2534)を用いて平均2乗誤差を計算し、類似度を計算する(S2535)。例えば、同一人物特定処理部114は、以下の処理を行う。
すなわち、同一人物特定処理部114は、第1のカメラで撮影した、ある部位の画像に対応するカラーヒストグラム(S2532)と、第2のカメラで撮影した、その部位の画像に対応するカラーヒストグラム(S2534)との平均2乗誤差を計算する。カラーヒストグラムでは、異なるカメラで撮影された部位の画像について、所定セルごとの画素値の出現回数として計算される。そのため、同一人物特定処理部114は、そのような2つの出現回数の誤差の2乗を算出し、その算出値の部位全体における平均値を算出する。同一人物特定処理部114は、算出した平均値の逆数を、類似度として計算する。同一人物特定処理部114は、部位ごとに、このような類似度を計算する。
同一人物特定処理部114は、類似度を計算すると、類似度計算処理を終了する(S2536)。
図15(A)に戻り、次に、同一人物特定処理部114は、類似度の高い組み合わせを探索する(S254)。例えば、同一人物特定処理部114は、部位ごとに計算した複数の類似度が、すべて類似度閾値以上のとき、第1のカメラで撮影した人物と第2のカメラで撮影した人物が同一人物であると判定し、そうでないときは、同一人物ではないと判定する。このような判定は、一例であって、同一人物特定処理部114は、類似度が類似度閾値以上となっている部位の個数が、個数閾値以上のとき、同一人物であると判定し、そうでないときは同一人物ではないと判定してもよい。例えば、類似度が高いほど、同一人物由来の部位画像である確率は高くなる。
そして、同一人物特定処理部114は、同一人物特定処理を終了する(S255)。
図14に戻り、次に、情報処理装置100は、カメラ行列P,P’を計算する(S26)。ここで、カメラ行列P,P’について説明する。
図12に示すように、最初に、第1のカメラの座標系から見た部位の3次元位置座標(X,Y,Z)を第1のカメラの画像内における部位の2次元位置座標(x,y)と第2のカメラの画像内における部位の2次元位置座標(x’,y’)と並進ベクトルt、回転行列Rとで記述することを考える。
まず、投資投影モデルによれば、3次元位置座標(X,Y,Z)は、2次元位置座標(x,y)と第1のカメラの焦点距離fを用いて、以下の式(9-1)または式(9-2)で記述される。
同様にして、第2のカメラの座標系から見た部位の3次元位置座標(X’,Y’,Z’)は、以下の式(9-3)又は式(9-4)式で記述される。ここで、kとk’は「0」ではない実数である。
一方、図12に示すように、第2カメラの座標系(X’,Y’,Z’)と第1カメラの座標系(X,Y,Z)の関係は、並進ベクトルtと回転行列Rを用いて以下の式(9-5)で記述できる。
以上の式(9-1)、式(9-2)、式(9-3)、式(9-4)、及び式(9-5)を連立させて解けば、3次元位置座標(X,Y,Z)と2次元位置座標(x,y)と2次元位置座標(x’,y’)の関係が、並進ベクトルt、回転行列Rとを用いて以下の4つの式で記述されることが分かる。
ここで、P,P’カメラ行列とよばれる行列である。2次元位置座標(x,y)と2次元位置座標(x’,y’)、並進ベクトルt、回転行列Rが分かれば、3次元位置座標(X,Y,Z)は、上記の式(9-6)、式(9-7)、式(9-8)、及び式(9-9)を逆に解くことで計算できることが分かった。
以上から、カメラ行列計算部115は、例えば、以下の式を用いて、カメラ行列P,P’を計算する。
式(10)と式(11)において、f0は、スケールを調整するパラメータであり、例えば、f0=1である。
カメラ行列計算部115は、例えば、内部メモリに記憶された式(10)と式(11)を読み出して、第1及び第2のカメラの焦点距離f,f’、回転行列R、第1のカメラの原点Oから第2のカメラの原点O’へ向かうベクトルtを式(10)と式(11)に代入する。カメラ行列計算部115は、例えば、焦点距離f,f’、回転行列R、ベクトルtも内部メモリに記憶されており、これらの値を内部メモリから読み出して、式(10)と式(11)に代入すればよい。
次に、情報処理装置100は、各部位の3次元位置(X,Y,Z)を計算する(S27)。例えば、3次元位置計算部116は、以下の式の連立方程式を解くことで、(X,Y,Z)を計算する。
例えば、3次元位置計算部116は、以下の処理を行う。すなわち、3次元位置計算部116は、内部メモリに記憶された式(12)から式(15)を読み出して、S26で計算したカメラ行列P,P’の各成分と、部位の位置座標(x,y),(x’,y’)を、式(12)から式(15)に代入する。そして、3次元位置計算部116は、式(12)から式(15)の連立方程式を解くことで、部位の3次元位置座標(X,Y,Z)を得る。この場合、3次元位置計算部116は、計算した部位の3次元位置座標を、式(1)に代入することで、3次元ベクトルとして表現された姿勢piを得る。
以降は、情報処理装置100は、第1の実施の形態と同様に、姿勢piを利用して、S13からS17の処理を行って、向きベクトルqiを算出し、一連の処理を終了する(S28)。S13からS17の処理においては、情報処理装置100は、例えば、3次元位置座標を用いて処理を行い、3次元位置ベクトルとして表現された向きベクトルqiを得る。
このように本第2の実施の形態では、姿勢piや向きベクトルqiを3次元位置ベクトルとして表現できるため、2次元位置ベクトルを利用した第1の実施の形態と比較して、正確な向きベクトルqiを得ることが可能となる。
[第3の実施の形態]
第1の実施の形態では、注目度算出処理(例えば図8のS130)において、一定の部位に着目して、視えていない部位については補間する処理について説明した。例えば、ある人物iの視えていない部位kの数が閾値以下でないとき、補間によりそのような部位kを算出しても、その部位kの位置ベクトルa
k
i
=(x
k
i
y
k
i
)
T
を精度良く算出することができない場合がある。
本第3の実施の形態の情報処理装置100は、人物iの姿勢は、隣接する人物tの姿勢に似る傾向を持つという、経験測に基づいて、人物iの姿勢piだけではなく、人物tの姿勢ptも利用して、人物iの位置ベクトルa
k
i
=(x
k
i
y
k
i
)
T を算出する。
図16は、第3の実施の形態における注目度算出処理の例を表すフローチャートである。ただし、撮像装置200により群衆が撮影され(図2のS11)、姿勢推定部110において、姿勢推定処理(図2のS12)により、人物iの姿勢piと人物tの姿勢ptとが得られているものとする。
注目度算出部120は、注目度算出処理を開始すると(S130)、ある人物iの視えていない部位(とくに顔の部位)の数が閾値以下か否かを判定する(S135)。例えば、注目度算出部120は、姿勢推定部110から出力された姿勢piにおいて、vj
i=0となっている数が閾値以上となっているか否かを判定する。この場合、例えば、注目度算出部120は、顔の部位(j=1~5)に着目し、その部位のvj
iが「0」となっている数が閾値以上か否かを判定してもよい。
注目度算出部120は、視えていない部位の数が閾値よりも多いとき(S135でNO)、視えていない部位kの位置ベクトルa
k
i
=(x
k
i
y
k
i
)
T を補間により算出する(S136)。例えば、注目度算出部120は、以下の式を用いて、位置ベクトルak
iを算出する。
式(16)において、ak1
i,ak2
i,…,akM1
iは、人物iにおいて視えている部位の位置ベクトル、ak1
t,ak2
t,…,akM2
tは、人物iに隣接する人物tにおいて視えている部位の位置ベクトルをそれぞれ表す。また、Ak
M1,M2は、2M行2M
1
+2M
2
列の行列である。Ak
M1,M2とbk
M1,M2は、例えば、姿勢sの集合P(教師データ)を用いて、式(6)と同様に、以下の式を用いて算出する。
例えば、注目度算出部120は、以下の処理を行う。すなわち、注目度算出部120は、姿勢推定部110から出力された姿勢piと姿勢ptに基づいて、人物iの中心座標と、人物tの中心座標を求める。注目度算出部120は、2つの中心座標が閾値以内であれば、人物tは人物iに隣接すると判定する。隣接すると判定すると、注目度算出部120は、内部メモリから式(17)を読み出して、Ak
M1,M2とbk
M1,M2を計算する。注目度算出部120は、姿勢piからvj
i=1となっている位置ベクトルと、姿勢ptからvj
t=1となっている位置ベクトル、及び計算したAk
M1,M2とbk
M1,M2を、式(16)の右辺に代入することで、人物iの視えていない部位kの位置ベクトルak
iを算出する。
次に、注目度算出部120は、視えている部位の位置ベクトルak1
i,ak2
i,…,akM1
iと、補間により算出した、視えていない部位kの位置ベクトルak
iとを利用して、人物iの向きベクトルqiを算出する(S137)。例えば、注目度算出部120は、第1の実施の形態と同様に式(7)を用いて向きベクトルqiを算出する。
そして、注目度算出部120は、注目度算出処理を終了する(S138)。
一方、注目度算出部120は、視えていない部位の数が閾値以下のとき(S135でYES)、姿勢piに基づいて、人物iの向きベクトルqiを算出する(S137)。この場合、姿勢piには、部位の位置座標が一部含まれないこともあるが、そのような場合は、注目度算出部120は、行列Wの成分を調整して、そのような行列Wを含む式(7)を利用して、向きベクトルqiを算出する。
以降、情報処理装置100は、第1の実施の形態と同様の処理(S15からS17)を行う。
このように、本第3の実施の形態では、情報処理装置100は、視えていない部位の数が閾値よりも多いときは、処理対象の人物iに隣接する人物tの位置ベクトルを利用して、人物iの部位の位置ベクトルを補間により算出している。従って、補間処理を行わない場合と比較して、本第3の実施の形態の情報処理装置100は、視えていない部位の位置を精度よく算出することができ、さらに、向きベクトルqiを精度よく算出することも可能となる。
[第4の実施の形態]
第1の実施の形態で利用した式(5)と式(7)は、線形な関数として表現されている。そのため、対象に対する関数の近似能力に限界がある場合がある。そこで、本第4の実施の形態では、式(5)と式(7)に非線形な関数を用いる。これにより、例えば、線形な関数を用いた場合と比較して、対象に対する近似能力を高めるようにする。
本第4の実施の形態の情報処理装置100は、式(5)に代えて、以下の式を用いて、視えていない部位kの位置ベクトルak
iを補間により算出する。
式(18)において、Dl1
Mは、l1行2M列の行列、Dl2
l1は、l2行11列の行列、Dk
l2は、k行l2列の行列をそれぞれ表す。また、ak1
i,ak2
i,…,akM
iは、人物iにおいて視えている部位の位置ベクトルを表す。また、式(19)において、δ(x)は活性化関数であり、αとβは、α≠βとなる予め決められた実数をそれぞれ表す。
行列Dl1
M,Dl2
l1,及びDk
l2は、例えば、式(6)と同様に、姿勢sの集合Pを用いて、以下の式を解くことで得られる行列である。
例えば、注目度算出部120は、補間処理(図8のS132)として、以下の処理を行う。すなわち、注目度算出部120は、内部メモリに記憶されたsk
iと、sk1
i,sk2
i,…,skM
iとを内部メモリから読み出し、内部メモリから読み出した式(20)に代入し、行列Dl1
M,Dl2
l1,及びDk
l2を得る。そして、注目度算出部120は、内部メモリに記憶された式(18)を内部メモリから読み出して、式(20)で得た行列Dl1
M,Dl2
l1,及びDk
l2と、姿勢sから抽出したak1
i,ak2
i,…,akM
iとを、式(18)に代入する。これにより、注目度算出部120は、視えていない部位kの位置ベクトルak
iを算出する。
また、本第4の実施の形態の情報処理装置100は、式(7)に代えて、以下の式を用いて、人物iの向きベクトルqiを算出する。
式(21)において、Wl1
Jは、l1行2J列の行列、Wl2
l1は、l2行11列の行列、Wk
l2は、k行l2列の行列をそれぞれ表す。
行列Wl1
J,Wl2
l1,Wk
l2は、例えば、式(8)と同様に、姿勢sの集合Pを用いて、以下の式を解くことで得られる行列である。
例えば、注目度算出部120は向きベクトルqiの算出処理(図8のS133)として、以下の処理を行う。すなわち、注目度算出部120は、内部メモリに記憶されたqs
iと、s1
i,s2
i,…,sJ
iとを内部メモリから読み出し、内部メモリに記憶された式(22)を内部メモリから読み出して、式(22)に代入し、行列Wl1
J,Wl2
l1,Wk
l2を得る。注目度算出部120は、内部メモリに記憶された式(21)を内部メモリから読み出して、式(22)で得た行列Wl1
J,Wl2
l1,Wk
l2と、姿勢sから抽出したa1
i,a2
i,…,aJ
iとを、式(21)に代入し、人物iの向きベクトルqiを算出する。
なお、式(18)において、3つの行列Dl1
M,Dl2
l1,Dk
l2を用いる例について説明した。例えば、注目度算出部120は、このうち2つの行列を用いて式(18)を計算してもよい。また、例えば、注目度算出部120は、3つの行列Wl1
J,Wl2
l1,Wk
l2ではなく、このうち、2つの行列を用いて式(21)を計算してもよい。
[第5の実施の形態]
第1の実施の形態では、注目度を算出する例について説明した。本第5の実施の形態では、算出した注目度の変化を検出する例について説明する。情報処理装置100において、このような注目度の変化を検出することで、例えば、群衆が視線を向けている方向が突然変化したような状況が発生したことを検知でき、そのような状況が発生した時間を検出することも可能となる。
図17は、第5の実施の形態における情報処理システム10の構成例を表す図である。
図17に示すように、情報処理装置100は、さらに、変化検知部150を備える。変化検知部150は、注目度記憶部140から注目度を読み出し、例えば、その時間的な変化を検知する。変化検知部150は、検知した結果を、例えば、外部の表示装置へ出力し、ユーザへ知らせることが可能である。
図18は、情報処理装置100の動作例を表すフローチャートである。図18において、S11からS15までの処理は、第1の実施の形態と同様である。
情報処理装置100は、各人物iの注目度(又は向きベクトルqi)を注目度記憶部140に記録すると(S15)、注目度変化検出処理(S18)を行う。
図19は、注目度変化検出処理の例を表すフローチャートである。図19の各処理は、例えば、変化検知部150で行われる。
変化検知部150は、注目度検出処理を開始すると(S180)、注目度ベクトルui
tを、時刻(T-n)<t≦(T-m)と、時刻(T-m)<tとの2つの集合に分ける(S181)。
ここで、注目度ベクトルui
tは、例えば、時刻tにおける人物iの向きベクトルqi
tを正規化したものであり、以下の式で定義される。
また、時刻(T-n)<t≦(T-m)(ただし、n>m)での注目度ベクトルの集合を、UT-n<t≦T-mとすると、注目度ベクトルの集合UT-n<t≦T-mは、例えば、以下の式で定義される。
図20は、時刻t、時刻(T-n)、時刻(T-m)の関係例を表す図である。各時刻tにおいて、1つの注目度ベクトルuが算出されるものとすると、時刻tが現在時刻Tのとき、時刻t=T-nから時刻t=Tまでは、n個の注目度ベクトルuが算出される。また、時刻tが時刻(T-n)から時刻t=(T-m)までの間で算出された注目度ベクトルの個数は(n-m)個であり、時刻(T-m)から現在時刻Tまでの間で算出された注目度ベクトルの個数はm個となる。図20に示すように、時刻(T-m)を境に、前半と後半に別れ、注目度ベクトルの集合UT-n<t≦T-mは、前半である、時刻(T-n)から時刻(T-m)までの注目度ベクトルui
tの集合を表している。
変化検知部150は、S181の処理として、例えば、以下の処理を行う。すなわち、変化検知部150は、注目度記憶部140から、時刻(T-n)から現在時刻Tまでのn個の向きベクトルqiを、注目度記憶部140から読み出す。そして、変化検知部150は、内部メモリに記憶された式(22)を読み出して、式(22)に向きベクトルqiを代入して、n個の注目度ベクトルui
tを算出する。変化検知部150は、n個の注目度ベクトルui
tを、時刻(T-n)<t≦(T-m)までの(n-m)個の注目度ベクトルの集合と、時刻(T-m)<tまでのm個の注目度ベクトルの集合に分ける。前者の注目度ベクトルの集合は、例えば、式(24)として表される。
図19に戻り、変化検知部150は、時刻(T-n)<t≦(T-m)までの(n-m)個の注目度ベクトルの集合UT-n<t≦T-mに対して、注目度ベクトルui
tの確率分布p(ui
t)を推定する(S182)。本処理においては、確率分布p(ui
t)は、例えば、混合フォン・ミーゼス分布(又はフォンミーゼスフィッシャー分布)に沿って分布すると仮定する。混合フォン・ミーゼス分布は、例えば、注目度ベクトルui
tの始点をd次元(dは例えば2又は3)空間上の原点にとった場合、注目度ベクトルui
tの向きがどのような方向へ確率的に分布しているかを表している。
図21(A)は入力画像、図21(B)は、入力画像に対して、注目度ベクトルui
tの確率分布の例をそれぞれ表す図である。図21(A)と図21(B)に示すように、画像において群衆は主に2つの方向へ視線を向けているため、注目度ベクトルui
tの向きも主に2つの方向へ分布している。図21(B)は、混合フォン・ミーゼス分布の例を表している。
変化検知部150は、例えば、以下の式を用いて、注目度ベクトルui
tの集合UT-n<t≦T-mに対して、確率分布p(ui
t)を推定する。
式(25)において、M(ui
t|μj,σj)は、例えば、以下の式を用いて算出される。
式(26)において、Iρ(γ)は、例えば、以下の式を用いて算出される。
式(25)から式(27)において、dは注目度ベクトルui
tの次元数(2又は3)、Iρ(γ)はρ階の第1種変形ベッセル関数をそれぞれ表す。また、式(25)から式(27)において、αj,μj,σjは、パラメータである。パラメータαj,μj,σjの推定は、例えば、注目度ベクトルの集合UT-n<t≦T-mを用いて、公知の期待値最大化法を用いて推定可能である。
例えば、変化検知部150は、S182において、以下の処理を行う。すなわち、変化検知部150は、時刻(T-n)<t≦(T-m)までの注目度ベクトルの集合UT-n<t≦T-mに対して、期待値最大化法などを用いて、パラメータαj,μj,σjを推定する。そして、変化検知部150は、内部メモリに記憶された式(25)から式(27)を読み出して、推定したパラメータαj,μj,σjや、注目度ベクトルui
tを、式(25)から式(27)に代入することで、確率分布p(ui
t)を推定する。
図19に戻り、次に、変化検知部150は、時刻(T-m)<tでの注目度ベクトルの集合UT-m<tの異常度βを計算する(S183)。異常度βは、例えば、以下の式で計算される。
式(28)に示すように、異常度βは、例えば、時刻(T-n)<t≦(T-m)における注目度ベクトルの集合UT-n<t≦T-mに対する確率分布p(ui
t)を基準にして、時刻(T-m)<tの注目度ベクトルの集合UT-m<tの分布がどれだけ外れているかを表している。注目度ベクトルの集合UT-m<tの分布が、注目度ベクトルの集合UT-n<t≦T-mに対する確率分布p(ui
t)から外れたときは、異常度βの値は大きな値をとり、そうでないときは小さな値をとり得る。
例えば、変化検知部150は、内部メモリに記憶された式(28)を読み出して、S182で推定した確率分布p(ui
t)を、式(28)に代入することで、異常度βを計算する。
次に、変化検知部150は、異常度βが閾値以上か否かを判定する(S184)。変化検知部150は、異常度βが閾値以上のとき(S184でYES)、変化をユーザへ知らせる。そして、変化検知部150は、注目度変化検出処理を終了する(S186)。一方、変化検知部150は、異常度βが閾値より小さいとき(S184でNO)、S184の処理を行うことなく、注目度変化検出処理を終了する(S186)。
変化検知部150は、例えば、以下の処理を行う。すなわち、変化検知部150は、S183で計算した異常度βと、内部メモリに記憶された閾値と比較して、異常度βが閾値以上のとき、変化があったこと、変化があった時刻(例えば、時刻t=(T-m))を外部の表示装置へ出力する。一方、変化検知部150は、異常度βが閾値より小さいときは、変化を通知することなく処理を終了する。
図21(A)から図21(D)は、例えば、ある時刻(T-m)を境に群衆の視線方向が変化している様子を表している。図21(A)と図21(C)に示すように、視線方向に変化が生じると、向きベクトルqiも変化し、注目度ベクトルui
tも変化する。そのため、注目度ベクトルの集合UT-n<t≦T-mに対する確率分布p(ui
t)を基準(図21(B))にすると、注目度ベクトルの集合UT-m<tの分布が大きくはずれ(図21(D))、異常度βも大きくなる。
情報処理装置100では、このような変化の検知結果を外部の表示装置へ出力することで、ユーザに対して、変化が発生したことや変化が発生した時刻をユーザに通知することができる。これにより、例えば、セキュリティ用の都市監視において、視線方向においてイベントが発生したことやその発生時刻などを、ユーザに知らせることが可能となる。
[その他の実施の形態]
図22は、情報処理装置100のハードウェア構成例を表す図である。
情報処理装置100は、インタフェース部180、メモリ181、CPU(Central Processing Unit)182、ROM(Read Only Memory)183、及びRAM(Random Access Memory)184を備える。
インタフェース部180は、例えば、撮像装置200から出力された画像データをメモリ181やCPU182へ出力する。
メモリ181は、例えば、第1の実施の形態の空間情報記憶部130と注目度記憶部140に対応する。また、メモリ181は、例えば、姿勢推定部110、注目度算出部120、及び第5の実施の形態の変化検知部150における内部メモリに対応する。
CPU182は、例えば、ROM183に記憶されたプログラムを読み出して、RAM184にロードし、ロードしたプログラムを実行することで、姿勢推定部110、注目度算出部120、及び変化検知部150の機能を実現する。CPU182は、例えば、姿勢推定部110、注目度算出部120、及び変化検知部150に対応する。
なお、CPU182にえて、MPU(Micro Processing Unit)やDSP(Digital Signal Processor)、FPGA(Field Programmable Gate Array)などのプロセッサやコントローラなどが用いられてもよい。
以上まとめると、付記のようになる。
(付記1)
入力画像データに対して、人物の部位に関する正解データを利用して、画像に含まれる人物の部位の位置情報を推定し、
前記部位のうち顔の部位の位置情報を推定することができなかったとき、推定することができた他の部位の位置情報に基づいて、画像に含まれる人物の視線方向を推定する、
処理をコンピュータに実行させることを特徴とするプログラム。
(付記2)
前記顔の部位の位置情報には、鼻、左目、右目、左耳、右耳、首、左肩、及び右肩の少なくともいずれか1つの位置情報を含むことを特徴とする付記1記載のプログラム。
(付記3)
前記入力画像データに対して、前記正解データを利用して、前記人物の各部位の確率分布を計算し、前記各部位の確率分布に基づいて、前記各部位の候補点を探索し、前記各部位の候補点を人物ごとにグルーピングすることにより、前記人物の部位の位置情報を推定することを特徴とする付記1記載のプログラム。
(付記4)
前記正解データを利用して、所定画像の画像データに対するフィルタリング処理を行い、フィルタリング処理後の画像データから、複数画素を含むブロック単位に最大値を抽出するプーリング処理を行い、前記フィルタリング処理と前記プーリング処理とを繰り返して、人物の各部位の確率分布の正解データを生成し、前記人物の各部位の確率分布の正解データを利用して、入力画像データに対する前記フィルタリング処理を行い、フィルタリング処理後の画像データから、前記ブロック単位に最大値を抽出する前記プーリング処理を行い、前記フィルタリング処理と前記プーリング処理とを繰り返して、前記各部位の確率分布を生成することを特徴とする付記3記載のプログラム。
(付記5)
前記各部位の確率分布に基づいて、極大点となっている位置座標を前記各部位の候補点とすることを特徴とする付記3記載のプログラム。
(付記6)
前記極大点が閾値より小さいとき、前記部位が前記画像に含まれていないと判定し、前記極大点が閾値以上のとき、前記部位が画像に含まれていると判定することを特徴とする付記5記載のプログラム。
(付記7)
前記入力画像データに対して、各部位を接続した確率分布の正解データを利用して、フィルタリング処理を行い、フィルタリング処理後の画像データから、複数画素を含むブロック単位に最大値を抽出するプーリング処理を行い、前記フィルタリング処理と前記プーリング処理とを繰り返して、前記各部位のつながり度合いを示す確率分布を生成し、生成した確率分布と前記各部位の候補点とに基づいて、人物ごとに前記候補点をグルーピングすることを特徴とする付記3記載のプログラム。
(付記8)
入力画像データに基づいて、人物の部位に関する正解データを利用して、画像に含まれる人物の部位の位置情報と、前記画像に前記部位が含まれるか否かを示すパラメータとを含む姿勢ベクトルを推定することを特徴とする付記1記載のプログラム。
(付記9)
前記顔の部位が前記画像に含まれるか否かを示す前記パラメータに基づいて、前記部位のうち顔の部位の位置情報を推定することができなかったことを判定することを特徴する付記8記載のプログラム。
(付記10)
内部メモリから読み出した以下の式(29)に、推定することができた他の部位の位置情報を表す位置ベクトルa
k1
i,a
k2
i,…,a
kM
iを代入することで、前記部位のうち顔の部位の位置情報を表す位置ベクトルa
k
iを算出することを特徴とする付記1記載のプログラム。
(ただし、
A
k
M は2行2
M列の行列、b
k
Mは2行1列の縦ベクトル、Mは0<M≦jを満たす整数をそれぞれ表し、
A
k
M とb
k
Mは、姿勢sの集合Pを用いて、以下の式(30)を解くことで算出される。)
(付記11)
内部メモリから読み出した以下の式(31)に、前記顔の部位の位置情報と前記他の部位の位置情報とを表す位置ベクトルa
1
i,a
2
i,…,a
j
iを以下の式(31)に代入することで、画像に含まれる人物iの視線方向を表す向きベクトルq
iを算出することを特徴とする付記1記載のプログラム。
(ただし、Wは2行2
J列の行列、w
0は2行1列の縦ベクトル、jは前記人物の部位をそれぞれ表し、姿勢sの集合Pと、姿勢sが持つ向きベクトルq
s、及び姿勢sの部位番号kの部位の位置ベクトルs
k=(x
k,y
k)
Tを用いて、Wとw
0は、以下の式(32)を解くことで算出される。)
(付記12)
内部メモリから読み出した以下の式(33)に基づいて、画像に含まれる人物iの視線方向を表す向きベクトルq
iを算出することを特徴とする付記1記載のプログラム。
(ただし、式(33)において、w
1とw
1はパラメータを表す)
(付記13)
内部メモリから読み出した式(33)に、前記顔の部位の位置情報と前記他の部位の位置情報とを表す、鼻、首、左肩、及び右肩の各部位のx軸方向の位置座標x1
i,x6
i,x7
i,x8
iを代入することで、画像に含まれる人物iの視線方向を表す向きベクトルqiを算出することを特徴とする付記11記載のプログラム。
(付記14)
前記向きベクトルqiと、空間情報記憶部から読み出した対象物の位置座標とに基づいて、前記対象物に視線を向けている人物の数をカウントすることを特徴とする付記11記載のプログラム。
(付記15)
第1のカメラで撮影された第1の画像の第1の画像データに対して、前記正解データを利用して、前記第1の画像に含まれる人物の部位の2次元座標として表される第1の位置座標を推定し、第2のカメラで撮影された第2の画像の第2の画像データに基づいて、前記正解データを利用して、前記第2の画像に含まれる人物の部位の2次元座標として表される第2の位置座標を推定し、
前記第1の位置座標と前記第2の位置座標とを、部位の3次元位置座標へ変換し、
前記3次元位置座標を利用して、前記人物の顔の部位の位置情報を算出し、画像に含まれる人物の視線方向を推定することを特徴とする付記1記載のプログラム。
(付記16)
前記第1の画像における前記部位の各画素値の第1の出現回数と、前記第2の画像における前記部位の各画素値の第2の出現回数とに基づいて、前記第1の画像内における人物と前記第2の画像内における人物とが同一人物であるか否かを判定し、同一人物であると判定したとき、同一人物の3次元位置座標(X,Y,Z)への変換を行うことを特徴とする付記15記載のプログラム。
(付記17)
内部メモリから読み出した以下の式(34)と式(35)に、前記第1のカメラの原点から前記第1の位置座標の原点までの焦点距離を表すf、前記第2のカメラの原点から前記第2の位置座標の原点までの焦点距離を表すf’、前記第1のカメラから見た前記第2のカメラの回転角を表すR、前記第1のカメラから前記第2のカメラへ向かう並進ベクトルを表すtを代入して、カメラ行列P,P’を算出し、
前記内部メモリから読み出した以下の式(36)から式(39)に、カメラ行列P,P’の各成分と、前記第1の位置座標を表す(x,y)、前記第2の位置座標を表す(x’,y’)を代入して、式(36)から式(39)に示す連立方程式を解くことで、前記部位の3次元位置座標への変換を行うことを特徴とする付記15記載のプログラム。
(付記18)
推定することができなかった第1の人物の前記部位のうち顔の部位の位置情報の数が閾値よりも多いとき、第1の人物において推定することができた他の部位の位置情報と、第1の人物に隣接する第2の人物において推定することができた部位の位置情報とに基づいて、第1の人物において推定することができなかった前記顔の部位の位置情報を算出することを特徴とする付記1記載のプログラム。
(付記19)
内部メモリから読み出した以下の式(40)に、推定することができた他の部位の位置情報を表す位置ベクトルa
k1
i,a
k2
i,…,a
kM
iを代入することで、前記部位のうち顔の部位の位置情報を表す位置ベクトルa
k
iを算出することを特徴とする付記1記載のプログラム。
(ただし、式(40)において、δ(x)は、以下の式(41)に示す活性化関数であり、式(40)において、行列D
l1
M,D
l2
l1,及びD
k
l2は、姿勢sの集合Pを用いて、以下の式(42)を解くことで得られる行列である。)
(付記20)
内部メモリから読み出した以下の式(43)に、前記顔の部位の位置情報と前記他の部位の位置情報を表す位置ベクトルa
1
i,a
2
i,…,a
j
iを代入することで、画像に含まれる人物iの視線方向を表す向きベクトルq
iを算出することを特徴とする付記1記載のプログラム。
(ただし、式(43)において、δ(x)は、以下の式(44)に示す活性化関数であり、式(43)において、行列W
l1
J,W
l2
l1,W
k
l2は、姿勢sの集合Pを用いて、以下の式(45)を解くことで得られる行列である。)
(付記21)
さらに、推定した前記人物の視線方向の変化を検知し、検知結果を出力する
ことを特徴とする付記1記載のプログラム。
(付記22)
時刻tを現在時刻Tとしたとき、推定した前記人物の視線方向を表す向きベクトルを正規化した注目度ベクトルを、時刻(T-n)から時刻(T-m)までに取得した第1の注目度ベクトルの集合と、時刻(T-m)から時刻tまでに取得した第2の注目度ベクトルの集合に分けて、前記第1の注目度ベクトルの集合に基づいて、前記第2の注目度ベクトルの集合の異常度を計算し、前記異常度が閾値以上のとき、時刻(T-m)を境にして視線方向に変化があったことを示す検知結果を出力することを特徴とする付記21記載のプログラム。
(付記23)
内部メモリから読み出した以下の式(46)に、時刻(T-n)から時刻(T-m)までに取得した前記人物の視線方向を表す向きベクトルq
iを代入して、時刻(T-n)から時刻(T-m)までに取得した第1の注目度ベクトルの集合に含まれる注目度ベクトルu
i
tを求め、
前記内部メモリから読み出した以下の式(47)に、注目度ベクトルu
i
tを代入して、時刻(T-n)から時刻(T-m)までに取得した第1の注目度ベクトルの集合における注目度ベクトルu
i
tの確率分布p(u
i
t)を算出し、
前記内部メモリから読み出した以下の式(48)に、確率分布p(u
i
t)を代入することで、異常度βを算出することを特徴とする付記21記載のプログラム。
(ただし、式(46)は、以下の式(49)と式(50)を用いて算出され、α
j,μ
j,σ
jはパラメータを表す。)
(付記24)
前記部位のうち顔の部位の位置情報を推定することができなかったとき、推定することができた他の部位の位置情報を利用して、前記顔の部位の位置情報を算出し、前記顔の部位の位置情報と前記他の部位の位置情報に基づいて、画像に含まれる人物の視線方向を推定することを特徴とする付記1記載のプログラム。
(付記25)
入力画像データに対して、人物の部位に関する正解データを利用して、画像に含まれる人物の部位の位置情報を推定する姿勢推定部と、
前記部位のうち顔の部位の位置情報を推定することができなかったとき、推定することができた他の部位の位置情報に基づいて、画像に含まれる人物の視線方向を推定する注目度算出部と
を備えることを特徴とする情報処理装置。
(付記26)
姿勢推定部と注目度算出部とを有する情報処理装置における情報処理方法であって、
前記姿勢推定部により、入力画像データに対して、人物の部位に関する正解データを利用して、画像に含まれる人物の部位の位置情報を推定し、
前記注目度算出部により、前記部位のうち顔の部位の位置情報を推定することができなかったとき、推定することができた他の部位の位置情報に基づいて、画像に含まれる人物の視線方向を推定する
ことを特徴とする情報処理方法。