(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-18
(45)【発行日】2024-01-26
(54)【発明の名称】画像処理装置、画像処理方法及びプログラム
(51)【国際特許分類】
G06T 7/00 20170101AFI20240119BHJP
【FI】
G06T7/00 350B
G06T7/00 660B
(21)【出願番号】P 2019213738
(22)【出願日】2019-11-26
【審査請求日】2022-10-18
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100126240
【氏名又は名称】阿部 琢磨
(74)【代理人】
【識別番号】100223941
【氏名又は名称】高橋 佳子
(74)【代理人】
【識別番号】100159695
【氏名又は名称】中辻 七朗
(74)【代理人】
【識別番号】100172476
【氏名又は名称】冨田 一史
(74)【代理人】
【識別番号】100126974
【氏名又は名称】大朋 靖尚
(72)【発明者】
【氏名】小川 修平
【審査官】大塚 俊範
(56)【参考文献】
【文献】特開2019-185420(JP,A)
【文献】特開2018-013999(JP,A)
【文献】NEWELL, Alejandro、他2名,Associative Embedding: End-to-End Learning for Joint Detection and Grouping,Computer Vision and Pattern Recognition,ARXIV.ORG,2017年06月09日,p.1-11,インターネット:<URL:https://arxiv.org/pdf/1611.05424.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00-7/90
(57)【特許請求の範囲】
【請求項1】
画像
から検出される複数の物体
のそれぞれの関節の位置
を示す位置情報を取得する取得手段と、
前記複数の物体の
それぞれの関節の位置に対して前記複数の物体の個
体に応じたスコア
を示すスコアマップを出力するように学習された学習済みモデルに前記画
像を入力する
入力手段と、
前記入力手段により前記学習済みモデルに前記画像が入力されることで得られるスコアであって前記関節の位置に対応するスコアに基づいて、前記位置情報
により示される関節同士を結ぶ線がどの物体に属するかを特定する特定手段と、を有することを特徴とする情報処理装置。
【請求項2】
前記入力手段は、前記学習済みモデルに前記画像を入力することでスコアマップを取得し、
前記特定手段は、前記スコアマップを参照することで前記関節の位置に対応するスコアを特定することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記位置情報は、前記関節の位置を関節の種類毎に示し、
前記特定手段は、前記関節の種類に応じて決定された関節のペアを結
ぶ2以上の線分
のそれぞれのスコア
に基づいて同一物体に属する関節のペアを判定することを特徴とする請求項
1又は2に記載の情報処理装置。
【請求項4】
前記学習済みモデルは、注目物体と他の物体との距離に基づい
て損失値を出力する損失関数を用いて、前記損失値が小さくなっていくよう
に学習モデルを構成する層間の結合重み付け係数を更新して学習されることを特徴とする請求項1乃至
3のいずれか1項に記載の情報処理装置。
【請求項5】
前記位置情報は、前記画
像において関節の種類毎に前記物体に属する関節の位置と、異なる種類の関節同士の位置関係とを示し、
前記学習済みモデルは、前記位置情報に基づいて、同
じ物体に属する関節の位置に対応づけられた前記スコアの分散が小さくなるように学習されることを特徴とする請求項1乃至
4のいずれか1項に記載の情報処理装置。
【請求項6】
前記物体に属する関節の位置に基づいて前記画
像における前記物体の姿勢を認識する認識手段を更に有することを特徴とする請求項1乃至
5のいずれか1項に記載の情報処理装置。
【請求項7】
前記取得手段は、前記関節の種類毎に前記画
像における位置を示した前記位置情報を取得することを特徴とする請求項1乃至
6のいずれか1項に記載の情報処理装置。
【請求項8】
前記取得手段は、前記関節として、頭頂部、頸部、腰部、右膝、左膝、右足首部、左足首部のうち少なくともいずれか2つ以上の前記位置情報を取得することを特徴とする請求項
7に記載の情報処理装置。
【請求項9】
前記特定手段は、前記スコアマップと関節の種類毎の前記位置情報に基づいて、同一の物体について、頭頂部、頸部、腰部、右膝、左膝、右足首部、左足首部のうちいずれか2つ以上の関節を含む組合せを特定することを特徴とする請求項
7または
8に記載の情報処理装置。
【請求項10】
前記位置情報と前記スコアマップとを出力するように学習した前記学習済みモデルを学習させる学習手段を更に有し、
前記取得手段は、前記学習済みモデルに基づいて、関節毎の前記位置情報を取得することを特徴とする請求項1乃至
9のいずれか1項に記載の情報処理装置。
【請求項11】
前記学習手段は、物体に属する複数の関節の位置を示す関節データに基づいて関節の種類毎に関節位置を示すGTマップを生成し、
前記スコアマップに対する損失値を前記GTマップに基づいて算出し、前記損失値が所定の閾値より大きい場合に前記学習済みモデルのパラメータを更新することを特徴とする請求項
10に記載の情報処理装置。
【請求項12】
前記物体は、人物、ロボット、動物のうち、少なくともいずれかであることを特徴とする請求項1乃至11のうちいずれか1項に記載の情報処理装置。
【請求項13】
コンピュータを、請求項1乃至12のいずれか1項に記載の情報処理装置が有する各手段として機能させるためのプログラム。
【請求項14】
画像
から検出される複数の物体
のそれぞれの関節の位置
を示す位置情報を取得する取得工程と、
前記複数の物体の
それぞれの関節の位置に対して前記複数の物体の個
体に応じたスコア
を示すスコアマップを出力するように学習された学習済みモデルに前記画
像を入力する
入力工程と、
前記入力工程により前記学習済みモデルに前記画像が入力されることで得られるスコアであって前記関節の位置に対応するスコアに基づいて、前記位置情報
により示される関節同士を結ぶ線がどの物体に属するかを特定する特定工程と、を有することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
画像に含まれる物体を識別する技術に関する。
【背景技術】
【0002】
近年、監視カメラが取得した画像や映像データから、人や群衆の活動パターンを分析する技術や、特定の事象を検出し通報する技術がある。該技術を実現するためには、監視カメラが撮影した動画像データから、人か車かなどの物体の属性や、歩いているか走っているかなどの行動の種類、鞄かカゴかなどの人の所持品の種類(カテゴリ)を認識可能な機械学習の認識技術が不可欠である。Deep Neural Network(以下DNNと省略)は、高精度な認識を実現する機械学習の手法として注目を集めている。
【0003】
非特許文献1は、画像に含まれる人物を認識する方法の1つである。人物の関節位置を示したマップを出力するとともに、検出された各関節が、画像内のどの人物に属しているか、に関する情報も同時に出力する。このとき、各関節の位置に、当該関節が属する人物固有のスコアが推定され、スコアに基づいて当該関節がどの人物に属しているかを推定することができる。例えば、複数の頸部と複数の頭頂部が存在した場合に、推定されたスコアが近い関節同士を接続することにより、各人物の頭部の姿勢を得ることができる。この操作を全関節について行うことにより、各人物の姿勢を推定できる。
【先行技術文献】
【非特許文献】
【0004】
【文献】Associative Embedding End-to-End Learning fоr Joint Detection and Grouping,Neural Information Processing Systems
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、非特許文献1に示した方法では、画像に含まれる複数の人物同士が隣接している場合、異なる人物の関節同士が結ばれてしまうといった課題がある。
【0006】
本発明は、このような課題に鑑みなされたものであり、複数の物体が隣接する画像において、異なる物体を識別することを目的とする。
【課題を解決するための手段】
【0007】
本発明にかかる情報処理装置は、画像から検出される複数の物体のそれぞれの関節の位置を示す位置情報を取得する取得手段と、前記複数の物体のそれぞれの関節の位置に対して前記複数の物体の個体に応じたスコアを示すスコアマップを出力するように学習された学習済みモデルに前記画像を入力する入力手段と、前記入力手段により前記学習済みモデルに前記画像が入力されることで得られるスコアであって前記関節の位置に対応するスコアに基づいて、前記位置情報により示される関節同士を結ぶ線がどの物体に属するかを特定する特定手段と、を有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、複数の物体が隣接する画像において、異なる物体を識別できる。
【図面の簡単な説明】
【0009】
【
図3】情報処理装置が実行する処理手順を示すフローチャート
【
図4】推定部が実行する処理手順を示すフローチャート
【
図6】部位毎に関節の位置を示す画像の一例を示す図
【
図7】人物毎に関節の位置を示す位置情報を含む画像データの1例を示す図
【
図9】情報処理装置が実行する処理手順を示すフローチャート
【
図11】情報処理装置の機能構成例を示すブロック図
【
図12】情報処理装置が実行する処理手順を示すフローチャート
【
図13】情報処理装置の機能構成例を示すブロック図
【
図14】情報処理装置が実行する処理手順を示すフローチャート
【
図16】物体毎に関節の位置を示す位置情報を含む画像データの一例を示す図
【発明を実施するための形態】
【0010】
<実施形態1>
本発明の実施形態に係る画像処理装置を、図面を参照しながら説明する。なお、図面間で符号の同じものは同じ動作をするとして重ねての説明を省く。また、この実施の形態に掲載されている構成要素はあくまで例示であり、この発明の範囲をそれらのみに限定する趣旨のものではない。
【0011】
本実施形態は、人物の関節と関節を結ぶ線上にスコアを推論することを特徴とする。関節と関節を結ぶ線上に当該関節が属する人物固有のスコアを推論する。これにより、従来、関節位置のみでしか参照できなかったスコアが、関節と関節を結ぶ線上のスコアも参照することができる。これにより、関節位置上に推論したスコアにノイズが含まれていたとしても、関節と関節を結ぶ線上の複数のスコアを参照することにより、異なる人物を区別して認識することができる。前述した技術は、介護施設、一般家庭、駅や市街地などの公共施設、スーパー、コンビニなどの店舗など様々な環境において活用される。この技術を実現するために、人物1人1人を特定したうえで、さらに人物の事象を高精度に検出することが重要になる。人物の事象の1つとして、人物の姿勢があげられる。
【0012】
本実施形態では、入力された画像から部位毎に人物の関節位置を推定し、推定された関節位置に基づいて、人物の姿勢を推定する事例に関して説明する。本実施形態において推定する関節位置は、頭頂部、頸部、腰部、右膝部、左膝部、右足首部、左足首部の7種類として説明する。推定する関節位置は、上記7種類に限定するものではなく、必要であれば増減させてよい。例えば、右手首部や左手首部などを加えてもよい。
【0013】
図1は、本実施形態における、人物の姿勢を推定する情報処理装置1のハードウェア構成図である。CPU H101は、ROM H102に格納されている制御プログラムを実行することにより、本装置全体の制御を行う。RAM H103は、各構成要素からの各種データを1時記憶する。また、プログラムを展開し、CPU H101が実行可能な状態にする。
【0014】
記憶部H104は、本実施形態の処理対象となるデータを格納するものであり、推定対象となるデータを保存する。記憶部H104の媒体としては、HDD,フラッシュメモリ、各種光学メディアなどを用いることができる。入力部H105は、キーボード・タッチパネルで構成され、ユーザからの入力を受け付けるものであり、姿勢推定結果に対するフィードバック情報などの入力を受け取る。表示部H106は、液晶ディスプレイ等で構成され、姿勢推定結果をユーザに対して表示する。また、本装置は通信部H107を介して、撮影装置等の他の装置と通信することができる。
【0015】
<実行フェーズ>
本実施形態について、まず、学習済みモデルを用いた実行フェーズを説明し、次に、学習済みモデルの学習フェーズを説明する。実行フェーズでは、関節位置毎に、その関節(と他の関節を結んだ線)が属する物体を示すスコアを対応付けたスコアマップを出力する学習済みモデルを用いて、画像に映った物体の識別処理を行う例を述べる。スコアマップは、同じ種類の物体でも、物体毎に異なる(分散が大きい)スコアを算出する。学習済みモデルは、異なる物体に属する関節位置に対して分散の大きいスコアを出力するように学習済みである。ここでは、関節位置に対応付いたスコアを用いて、人物の関節と関節を結ぶ線上にスコアを推論する。そして、複数の人物が映った画像から特定の人物を同定する処理について説明する。
【0016】
図2は、情報処理装置の機能構成例を示すブロック図である。CPU H101において実行される処理を、それぞれ機能ブロックとして示している。画像取得部101は、人物を撮像した画像を取得する。なお、画像取得部101は、情報処理装置に接続された撮像装置によって撮像された画像を取得してもよいし、記憶部105に記憶された画像を取得してもよい。推定部102は、取得した画像に含まれる人物の関節位置を推定する。推定部102は、取得された画像の各領域について、人物毎に異なる所定の値を示すスコアマップを推定する。スコア推定方法は後述する。特定部104では、推定されたスコアマップにおいて、推定された関節の位置に対応づけられたスコアに基づいて、同一人物を示す関節群を特定する。1人の人物は所定の組み合わせの関節によって構成されるため、近いスコアを示す関節をマップから特定することで複数の関節マップを統合する。詳細な処理については後述する。認識部106は、物体毎に特定された関節群を接続することで、物体の姿勢を認識する。関節と関節の位置関係を予め何パターンか記憶部に格納しておき、特定した関節群の位置関係と、記憶された関節の位置関係が一致する姿勢をマッチングすることで物体の姿勢を認識する。関節の位置関係を入力することで物体の姿勢を推定する学習済みモデルによって推定してもよい。
【0017】
図3のフローチャートを用いて、学習済みモデルを用いた実行フェーズの処理を説明する。以下の説明では、各工程(ステップ)について先頭にSを付けて表記することで、工程(ステップ)の表記を省略する。なお、
図3のフローチャートに示した処理は、コンピュータである
図1のCPU H101により記憶部H104に格納されているコンピュータプログラムに従って実行される。
【0018】
処理の概要を説明する。S201では、画像取得部101が、複数の関節を有する物体が撮像された画像を取得する。S202では、推定部102が、複数の関節を有する物体を含む画像から前記関節の位置を種類毎に推定する。そして、推定部102が、前記推定された関節毎に、前記画像に含まれる人物を同定するためのスコアマップを取得する。S203では、特定部104が、取得された関節のスコアマップに基づいて、複数の前記物体のうち同じ個体が有する関節群を特定する。S204では、認識部106が、特定された関節群に基づいて、人物の姿勢を認識する。
【0019】
S201では、画像取得部101が、複数の関節を有する物体が撮像された画像を取得する。ここでは、物体は人物であって、画像に複数の人物が映っており、ある人物は他の人物と近接している状況を例にする。このような画像の場合、人物の部位が互いに交差することや、ある人物が別の人物の部位によって遮蔽されていることがあり、関節がどの人物に属するか識別することが難しい。もちろん、認識対象となる物体が映っている画像なら処理対象として取得する。
【0020】
S202では、推定部102が、S201で取得した画像を学習済みモデルに入力することで、複数の関節を有する物体を含む画像から関節の位置を種類毎に検出する。さらに、推定部102が、それらの関節が属する物体の位置を示す尤度を各画素または各領域に含むスコアマップを推定する。スコアマップは、ある物体に属する関節の位置に対応するスコアと他の物体に属する関節の位置に対応するスコアとで異なるスコア(尤度)が出力される。すなわち、推定部102は、学習済みモデルに基づいて、入力された画像に含まれる物体に属する複数種類の関節の位置に対応する、物体毎に異なるスコア(分散が大きい)を示すスコアマップを出力する。
図4のサブフローを使って、推定部102が行うS202の処理についてさらに詳細に説明する。本実施形態では、推定部102は、学習済みモデルであるConvolutional Neural Network(以下CNN)に基づいて、入力画像から人物の関節位置とそのスコアを推定する。
【0021】
図4を用いて、S202の処理について説明する。まずは、簡単に流れを説明する。S301では、推定部102が、入力画像を学習済みモデルであるCNNに入力することによって特徴を抽出する。S302では、推定部102が、CNNで抽出された画像特徴に基づいて、物体の関節の位置を推定する。S303では、推定部102が、CNNで抽出された画像特徴に基づいて、物体毎に識別できるスコアを含むスコアマップを推定する。
【0022】
ここで、学習済みモデルであるCNNが、S301で行う処理について
図5を使って説明する。このCNNによって、後段の関節位置の推定やスコアマップの推定に用いる画像特徴を抽出する。CNNは、畳み込み(Convolution)と、Rectified Linear Unit(以下ReLU)や、Max Poolingといった非線形変換から構成される。ここで説明するReLUや、Max Poolingは、あくまで1例を示すものである。ReLUのかわりに、Leaky ReLUや、Sigmoスコア関数等を用いてもよいし、Max PoolingのかわりにAverage Pooling等を用いてもよい。本実施形態はこれらを限定するものではない。
【0023】
S3011では、入力画像がConvolution層に入力される。次に、S3012において、ReLUにより非線形変換される。S3013において、Max Poolingが施され、空間方向の情報が削減される。S3014からS3016において、S3011からS3013と同様の処理が繰り返される。最後にS3017において、Convolution処理が施される。CNNの結合重み付け係数は、予め用意されたパラメータセットとして記憶部105に記憶されている。画像に含まれる物体の関節位置を検出するための特徴および物体の個体を識別するための特徴を抽出するように学習させてもよい。学習前のパラメータセットはランダムな数値であってよい。なお、記載したCNNの構成は例を示すものであり、CNNの構成を限定するものではない。抽出された特徴を使って、画像に含まれる物体の関節位置と、関節がどの物体に属するのかを示すスコアマップとを推定する。それぞれの推定に用いる特徴を分けるために、推定部102が、CNNの出力を関節位置推定用のチャネルと、スコアマップ推定用のチャネルに分割する。
【0024】
S302では、推定部102が、入力画像から抽出された特徴に基づいて、入力画像に含まれる物体の関節のそれぞれの位置を検出する。まず、関節位置推定用のチャネルをシグモイドに入力する。これは、CNNから出力された[-∞,+∞]の値域を持つ値を[0,1]の範囲に収めるための関数であり、式(1-1)によって示される。
【0025】
【0026】
次に、推定部102は、関節位置推定用のチャネルを、閾値処理部に入力し、関節の種類毎に関節位置を検出する。入力された値のうち、所定の閾値以下の値を0にする(式(1-2))。
【0027】
【0028】
S302を通して得られた関節位置を示すマップを
図6に示す。7種類の関節に対応した7枚の関節マップが得られる。7枚の関節マップ中の黒点が関節位置を示している。401および402は、推定された頭頂部を示す。403および404は推定された頸部を示す。405および406は推定された腰部を示す。407および408は推定された右膝部を示す。409および410は推定された左膝部を示す。411および412は推定された右足首部を示す。413および414は推定された左足首部を示す。これら7枚のマップ中の、値が0より大きい位置を検出することによって、各関節の位置が得られる。
【0029】
上述のように、各関節の位置は得られる。しかし、人物が複数写っている画像の場合、各関節がどの人物に属しているか分からなければ、それぞれの人物の姿勢を推定することは難しい。例えば、
図6において、頭頂部401に対応する頸部は、403なのか、404なのかを特定する必要がある。画像内の人物が少なく、人物同士が十分に離れている場合は、関節と関節の距離を用いることにより、どの関節とどの関節が接続されているかを推定することは比較的容易である。しかしながら、人物同士が近くにいる場合などは、適切に関節同士を接続することは困難である。そこで、関節と関節を適切に接続し、人物の姿勢を推定する処理を以下に示す。
【0030】
S303において、推定部102は、CNNで抽出された特徴から物体の個体を識別するためのスコアを含むスコアマップを、学習済みモデルを用いて推定する。推定されたスコアマップの例を
図15にします。
図15(a)のスコアマップ1500は、入力画像の各画素(各領域)について、どの物体が存在する可能性が高いかを示すスコアによって色分けをした例である。例えば、領域15010には100番台のスコア、領域15011には200番台のスコアが対応づけられているものとする。スコアマップ1501は、スコアの範囲に応じて異なる色で示す。例えば、領域15010および15011は、推定されたスコアの値の範囲を色分けして示した例である。つまり、スコアマップ1501は、領域(または画素)毎に近いスコアを対応づけられた関節位置を同じ色で示したマップである。恒等関数に、CNNから得られた出力のうちスコアに関するチャネルを入力し、
図15(a)に示すような、個体を識別するためのスコアを示すスコアマップ1500を得る。
【0031】
本実施形態では、スコアマップに基づいて関節が属する物体のスコアを推論することにより、関節と関節を適切に接続することができる。まず、恒等関数は、式(1-3)に示すような関数であり、入力をそのまま出力する。
f(x)=x 式(1-3)
【0032】
後述する学習フェーズで説明するように、本実施形態で用いる学習済みモデルは異なる物体に属する関節の位置は異なるスコアを示すように学習されている。各関節位置に対応づけられたスコアは、関節と関節をつなぐ線上に埋め込まれるように推定され、画像内に出現している人物ごとに異なる。例えば、
図15(a)中の関節位置501および504は推定された頭頂部、502および505は推定された頸部、503および505は頭頂部と頸部で、接続可能な関節の組み合わせである。これらのペアを結ぶ線上に対応づけられたスコアを参照することで、物体毎に個体が識別できる。例えば、左の人物と右の人物の関節位置のそれぞれには、異なる値(分散した値)が対応づけられており、これらの値を参照することにより、関節がどの人物に属しているかを知ることができる。ここまでが、推定部102が実行するS202の処理である。なお、ここで異なる物体を識別できるスコアを推定する学習モデルの学習方法については、学習フェーズで詳細な処理について後述する。
【0033】
S203では、特定部104が、推定された関節のスコアに基づいて、複数前記物体のうち同じ個体が有する関節群を特定する。具体的には、
図15(a)(b)と式1-4を使って、説明する。
図15(b)に示すスコアマップ1501は、推定された各関節位置と
図15(a)のスコアマップ1500とに基づいて、関節位置501~510にスコアを対応づけたマップである。
図15(b)におけるスコアマップ1500中の黒点が関節位置である。スコアの対応づけを行った結果、関節位置501~510には、左の人物を示すスコア(例えば、100番台の数値)と、右の人物を示すスコア(例えば、200番台の数値)がそれぞれ対応づけられたものとする。これらの関節に対して、次に、スコアを参照して接続可能な関節の組み合わせを特定する。
【0034】
具体的には、ニューラルネットワークの出力を用いて計算される式(1-4)に示される評価スコアを計算する。式(1-4)は、関節位置iと関節位置i’を接続した場合の評価スコアを示しており、評価スコアが小さいほど、関節位置iと関節位置i’が同じ人物に属している可能性が高いことを示している。ここで、Line(i,i’)は、関節位置iと関節位置i’を結ぶ線上の画素位置の集合を示しており、スコア(x)は位置xにおける推定されたスコアを示す。なお、頭部と頸部は接続可能である、といった知識は予めルールを決めてあり、その関節の種類と位置関係のルールに従って組み合わせることがありうる候補(関節のペア)で評価スコアを取得する。また、関節のペアを結んだ線上のスコアも評価スコアに含まれている。
【0035】
【0036】
上記評価スコアの計算を、候補となるすべての関節位置iと関節位置i’の間で行う。評価スコアを参照して、接続可能な関節の組み合わせを特定した結果が、
図15(b)の関節位置を結んだ線である。
【0037】
なお、
図15(c)(d)のスコアマップ1502と1503は重なり合った人物についてのスコアマップの例を示している。例えば、左の人物が右の人物よりカメラ手前にいる場合は、右の人物の関節が隠れる部分がある。学習が十分に進んだ段階では、左の人物と右の人物のスコアを1503のように、重なり合っていても左右の人物を識別されており、右の人物の前足(の関節位置)と左の人物の後ろ足(の関節位置)に異なるスコアが対応づけられる。この2つの関節と関節の組み合わせを結んだ線に対応づけられたスコアの分散は大きくなるため、同1人物に属する関節ではないと評価できる。このように、隣接した物体同士で重畳する領域がある場合でも、間接位置を結んだ線毎にスコアを対応づけるため、関節がどの物体に属するのか適切に推定することが出来る。
【0038】
特定部104は、学習モデルによって推定されたスコアに基づいて、それぞれの物体に属する関節を特定することによって、それぞれの物体の位置を特定する。すなわち、学習モデルによって推定されたスコアを式(1-4)に代入して求めた評価スコアのうち、最も評価スコアの低い関節位置同士を同じ物体に属する関節であると推定することで、個々の物体の位置を特定する。もう少し具体的に説明する。
図15(b)の頭頂501および504と頸部502および505の関係を例にして説明すると、頭頂501と頸部502を結ぶ線503上のスコアは同一スコアを持っているため、上記評価スコアが小さくなる。1方、頭頂501と頸部504を結ぶ線上のスコアは、頭頂501のスコアとは異なる値を持つため、上記評価スコアの差分の絶対値が大きくなる。したがって、頭頂501に対応する頸部は、502であると推定される。一方、頭頂504と頸部502を結ぶ線上のスコアは、頭頂504上のスコアとは異なり、上記評価スコアの差分値が大きくなる。さらに、頭頂504と頸部505を結ぶ線506上のスコアは、頭頂504上のスコアと同じであり、上記評価スコアの差分値が小さくなる。したがって、頭頂504と接続される頸部は、505であることがわかる。以上の操作を、頭頂から頸部、頸部から腰部、腰部から膝部、膝部から足首部すべての関節にわたって行うことにより、それぞれの物体が有する関節の位置を特定する。
【0039】
S204では、認識部106が、特定された関節群に基づいて、物体の姿勢を認識する。人物の姿勢の認識である場合、既存の技術を用いて、それぞれの人物の関節の位置関係から姿勢を認識する。例えば、所定の人物の関節の位置についての情報を、人物の姿勢を認識する学習済みモデルに入力することで、その人物の姿勢を認識してもよい。また、ルールベースで、関節の位置関係を示すデータと、ある人物に属する関節として検出された関節の位置関係を比較することで、立位か否かを認識する方法でもよい。また、ここで行う認識処理は姿勢認識以外の処理であってもよい。例えば、トラッキングや人物の行動検出を行っても良い。以上が実行フェーズの処理の説明である。
【0040】
<学習フェーズ>
次に、物体が撮像された画像を入力すると、物体の関節と関節を結ぶ線上に対して異なる物体を識別するためのスコアを含むスコアマップを出力する学習モデルの生成する処理について説明する。まず、ある物体に属する関節とその物体と他の物体に属する関節とを識別するために、画像内の位置情報に基づいて1つの物体に対応する関節群を特定する。そして、スコアマップに基づいて、ある物体に属する関節群に対応するスコアと、他の物体に属する関節群に対応するスコアとの差を比較する。損失計算部における損失関数は、差が所定の値より大きい場合は小さい損失値を、差が所定の値より小さい場合は大きい損失値を出力する。スコアの差が大きければ大きいほど、ゼロに近づくような小さな損失値を出力する。その決定された損失値が所定の値より大きい場合、学習が十分に進んでいないため、学習モデルのパラメータ(学習モデルを構成する層間の結合重み付け係数)を更新する。また、同一物体におけるスコアについて、損失関数は、ある物体に属する関節群に対応するスコアの分散が所定の値より大きい場合はスコアに対する損失を大きく、所定の値より小さい場合はスコアに対する損失が小さくなるように損失値を出力する。その決定された損失値が所定の値より大きい場合、学習が十分に進んでいないため、学習モデルのパラメータを更新する。これらの損失関数から出力した損失値の合計が所定の値より小さくなるまで学習を行う。
【0041】
ここで、推定部102で用いられる学習済みモデルについて、各関節の位置および、関節のスコアを学習する方法を、
図8を参照しながら示す。学習時の情報処理装置2の機能構成例を
図8に示す。情報処理装置2は、画像取得部101、関節データ取得部601、推定部102、特定部104、認識部106、損失計算部603、パラメータ更新部604、パラメータ記憶部605、記憶部205からなる。なお、601から605は情報処理装置2とは異なる学習のための情報処理装置において構成することができる。また、記憶部205は、情報処理装置2の中の機能構成であっても、情報処理装置2の外部の記憶装置であってもよい。
【0042】
画像取得部101では、学習に用いる入力画像を取得する。画像には認識対象となる人物が含まれる。なお、複数の部位を有する物体であれば、人物以外でもよい(例えば、多関節ロボットや動物等)。人物の場合、頭部、頸部、胴部等の部位に分割が可能であり、それぞれの部位は関節によって分割できる。
【0043】
関節データ取得部600、取得した画像について、それぞれの物体に属する関節群と、画像に含まれる関節の画像座標上の位置情報とを示す関節データを取得する。すなわち、画像取得部101において得られる画像に対応するGT(ここでは関節の位置)を得る。この関節データに基づいて、画像における関節位置を取得する。また、それぞれの物体に属する関節群を特定する。例えば、関節データとは、
図7に示すようなデータである。ここで、GTは、画像中の人物の関節の位置と、各人物に属する関節群を識別するラベルを含む。なお、同1人物の関節を部位の接続に基づいて結んだ線でGTを示しても良い。また、関節データ取得部601は、GTの関節位置をもとに、
図6示すような関節位置にピークを持つマップを、関節の種類毎に生成する。例えば、人物であれば、頭頂部、頸部、腰部、右膝部、左膝部、右足首部、左足首部の関節位置のマップを生成する。関節データは、ユーザによって関節位置とその関節が属する物体を示すラベルを付与したデータでもよい。なお、本実施形態では、接続可能な関節の組み合わせはルールベースで決定される例を説明する。接続可能な関節の位置関係を学習した学習済みモデルを用いて、接続可能な関節の組み合わせを示す関節データを取得してもよい。以下で説明する学習は、主に物体を識別するのに用いるスコアを示したスコアマップについての学習方法である。
【0044】
損失計算部603は、推定部102(学習途中の学習モデル)によって推定されたスコアマップと、物体毎の関節位置を示す関節データ(GT)とに基づいて、関節位置に対応付けられた推定スコアを損失関数に代入する。これによって推定されたスコアマップの損失値を決定する。スコアマップは、入力画像の各画素に抽出された特徴から物体の個体を識別するためのスコアが対応づいたマップである。損失には、関節位置に関する損失と関節がどの人物に属するか識別するスコアに関する損失の2種類がある。損失の算出方法については後述する。
【0045】
パラメータ更新部605は、人物の関節と関節を結ぶ線上に人物を識別するスコアを推論するための学習モデルのパラメータ(学習モデルを構成する層間の結合重み付け係数)を更新する。人物を識別するために推定されたスコアに関する損失値が所定の閾値より大きいや収束しない場合、損失値が収束するようにパラメータを更新する。損失値の合計が収束した場合や、損失値が所定の値より小さくなった場合は、パラメータセットを更新し、学習を終了するパラメータの更新については後述する。
【0046】
記憶部205は、更新されたパラメータセットを学習済みモデルのパラメータとして記憶する。
【0047】
図9を用いて、学習処理のフローについて説明する。なお、
図9のフローチャートに示した処理は、コンピュータである
図2のCPU H101により記憶部H104に格納されているコンピュータプログラムに従って実行される。以下の説明では、各工程(ステップ)について先頭にSを付けて表記することで、工程(ステップ)の表記を省略する。ただし、情報処理装置はこのフローチャートで説明するすべての工程を必ずしも行わなくても良い。
【0048】
説明に先立って、以下のフローの概要を説明する。まず、
図7(a)に示した学習用の入力画像における各人物について、
図7(b)の関節データで示された関節位置を参照して関節と関節を結ぶ線を決める。次に、学習中の学習モデルに入力画像と関節データを入力することで出力されたスコアマップから、各関節位置のスコアを取得する。左の人物についてのスコアの平均Ma、および分散Vaを求める。同様に、右の人物についてもスコアの平均Mb、および分散Vbを求める。求めたスコアの分散や平均を用いて、次の二つの条件を満たす損失を計算する。(分散VaおよびVbが小さいほど損失が小さくなる。平均MaおよびMbが離れているほど(分散が大きいほど)損失が小さくなる)。
【0049】
S201では、画像取得部101が、入力画像を取得する。例えば、
図7(a)のような画像を取得する。
【0050】
S601では、関節データ取得部601が、それぞれの物体に属する関節群と、取得した入力画像に含まれる関節の画像座標上の位置情報とを示す関節データを取得する。この関節データに基づいて、
図7(b)のように、画像における関節位置を取得する。また、
図7(c)のように、取得された画像に対して、関節位置に対して、個体識別用のラベル付けされたGTデータを取得する。左右の人物で異なるラベル(例えば、左は1、右は0等)を対応づける。なお、
図7(c)では同1人物の関節を線で接続することによって人物毎の関節群を示している。また、
図7(d)のように、人が重なっているような画像に対しては、例えば、手前の人物の関節位置を示した関節データを用意する。この場合は、右の人物の前足の膝部位が隠れるが、足首部分は見えている。
【0051】
S602では、関節データ取得部601が、関節データに基づいて、物体毎に属する関節群を特定する。つまり、接続可能な関節の組み合わせを特定する。例えば、同一人物が有する関節位置を参照して、頭部と頸部に対応する関節の組み合わせを特定する。この間接のペアを結んだ線分は概念的には人間の骨に対応する。まず、関節データから得たGTの関節位置をもとに、関節の種類毎に、関節位置を示すGTマップを生成する。
図6に示すような関節位置にピーク(ピークの頂点を黒点で表示)を持つマップを、関節の種類毎に生成する。例えば、P1は頭頂部、P2は頸部、P3は腰部、P4は右膝部、P5は左膝部、P6は右足首部、P7は左足首部の関節位置を示すマップである。人物毎に関節の組み合わせを特定する。この処理によって、
図7に示すような関節同士の接続関係を関節データから取得する。なお、関節同士の接続関係は、予め設定されたルールに則って行う。例えば、記憶部に関節の位置関係情報として保持している(例えば、首=>腰=>足の順番で結ぶなど。)。なお、ここまでの関節データと関節同士の位置関係についての情報(まとめて位置情報と呼ぶ)については、ユーザが予め準備したデータを用いてもよいし、他の学習装置や学習済みモデルを用いて推定したデータを用いてもよい。
【0052】
S603では、推定部102が、物体毎に属する関節群の位置と、S201で取得した入力画像とを対応づけることによって、入力画像の各画素に対して、物体を識別するための特徴を数値化したスコアマップを取得する。具体的には、恒等関数に、CNNから得られた出力のうちスコアに関するチャネルを入力し、関節がどの人物に属するのかを示すスコアが関節位置に付与されたスコアマップを得る。後の損失関数で計算する対象のスコアは関節位置のスコアであるが、各画素に取得してもよい。ここでは、学習中の学習モデルに入力画像と関節の位置情報を入力することによって、検出された各関節について個人を識別するためのスコアを示すスコアデータを取得する。関節の位置情報は、入力画像と同じ層に入力することに限らず、中間層に入力することもできる。なお、学習モデルがまだ学習済みでない場合は、ランダムなスコアであって、関節がどの人物に属するか識別するには不十分なスコアが出力される。
【0053】
S604では、損失計算部603が、物体毎に属する関節群の位置(GT)に基づいて、推定されたスコアマップに対する損失値を計算する。まず、関節位置に関する損失の計算方法を示す。関節位置に対する損失の計算方法を式(1-5)に示す。Positionest(j,i)は推定された関節マップのj番目(1≦j≦J;ここでは関節は7種類なのでJ=7)の関節に関するマップ中の位置iの値を示す。また、GT(j,i)はGTとして与えられた関節マップのj番目のマップ中の位置iの値を示す。また、Mは推論された関節数分のマップの全画素数を示す。損失の計算方法は式(1-5)に示すような平均平方二乗誤差に限らない。Cross Entropy等を損失として用いてもよい。
【0054】
【0055】
次に、推定されたスコアマップに関する損失の計算方法を示す。この損失関数によって、スコアマップで関節位置に付与されたスコアが、同1人物の関節には同じまたは近い値でかつ、異なる人物の関節には異なる値(分散が大きい値)を出力するように学習モデルの層間の結合重み付け係数を学習させる。関節がどの人物に属するか推定したスコアに関する損失は式(1-6)のように計算される。ここで、Nは画像内の人物の数を、スコアest(i)は、推定されたスコアマップ中の位置iの値を示す。Linepは、p番目(1≦p≦N;ここでは、画像に映った人物の数N=2人)の人物について、所定の組み合わせの関節同士を結ぶ線毎の任意の点の集合である。関節と関節を結ぶ順番があるので、例えば、頭頂=>首=>腰=>足と関節を結ぶのであれば、隣り合った関節同士を結ぶ線になる。また、αとβは経験的に得られるハイパーパラメータである。式(1-5)は、同一人物の関節と関節を結ぶ線上に同じスコアが、かつ、異なる人物のスコアは異なるスコアが推定されれば、損失が小さくなることを示している。このように損失を設計することにより、同1人物であれば同じスコアを、かつ、異なる人物であれば異なるスコア(分散が大きいスコア)を推論することが可能となる。また、損失を計算する位置を関節上だけでなく、関節と関節を結ぶ線上においても計算することにより、スコアを推論可能な位置が増え、推論時に、より多くの位置を参照することができるようになり、スコア推論のロバスト性が向上する。
【0056】
【0057】
【0058】
最終的に得られる損失は、式(1-5)と式(1-6)の和で表される(式(1-8))。γとθは経験的に得られるハイパーパラメータである。
Loss=γLossposition+θLossid 式(1-8)
【0059】
S605では、パラメータ更新部605は、決定した損失値(または損失値の合計)が所定の閾値より大きい場合は、式(1-8)に基づいて損失に基づいて、学習モデルの層間の結合重み付け係数(パラメータ)が更新される。パラメータの更新は、Momentum SGDなどを用い、誤差逆伝播法(Back Propagation)に基づいて行われる。なお、1枚の画像に対する損失関数の出力について説明したが、実際の学習は、複数の様々な画像について推定したスコアについて、式(1-8)の損失値を計算する。複数の画像についての損失値が、何れも所定の閾値より小さくなるように学習モデルの層間の結合重み付け係数を更新する。
【0060】
S606では、記憶部205が、更新された学習済みモデルのパラメータを記憶する。
【0061】
以上の処理を行うことにより、人物の関節と関節を結ぶ線上に人物を識別するスコアを推論するための学習モデルを生成する。この学習モデルは、関節と関節の結び付きを考慮して学習するため、同一人物の関節群を特定しやすくなる。
【0062】
<変形例1>
実施形態1における式(1-4)のかわりに、式(3-1)のようにしてスコアを求める。
【0063】
【0064】
ここで、kは、関節位置iと関節位置i’を結ぶ線Line(i,i’)上の任意の1点の座標を示す。スコアを、式(3-1)のように計算することにより、式(1-4)に比べて、より高速にスコアを求めることが可能となる。
【0065】
<変形例2>
本実施形態では、実施形態1と同様に、画像から関節位置と、関節が属する人物を推定する。実施形態1では、関節が属する人物を決定するため、推定されたスコアに基づいてスコアを式(1-4)に基づいて決定した。本実施形態では、推定されたスコアと、関節と関節の空間的位置関係も利用して関節が属する人物を決定する。ここで説明する損失関数は、第1の物体と第2の物体との距離に基づいて、損失値を出力する。具体的には、式(2-1)に基づいて、スコアを計算する。式(2-1)中のixおよびiyは、関節iのx座標とy座標をそれぞれ示し、i’xおよびi’yは、関節i’のx座標とy座標をそれぞれ示している。また、WスコアとWpоsitiоnは、それぞれの項に対して経験的に決められるパラメータである。式(2-1)は、式(1-4)に関節と関節の距離に関する項を加えている。つまり、関節と関節の位置が近ければスコアは小さくなり(同一人物である可能性が上がり)、関節と関節の位置が離れていればスコアは大きくなる(同一人物である可能性が下がる)。関節と関節の位置関係は、たいていの場合、異なる人物同士の関節同士よりも、同一人物の関節同士のほうが距離的に近い位置にあることを利用している。このようにスコアを計算することにより、空間的に遠く離れた人物同士の関節はスコアが大きくなる。このため、推定されたスコアが二つの関節間で類似していたとしても、同一人物だと判定し難くなり、ロバスト性が向上する。
【0066】
【0067】
また、学習時に、関節と関節の距離を考慮して損失を計算することも有効である。この場合のスコアに関する損失を式(2-2)に示す。
【0068】
【0069】
Px(p)、Py(p)はそれぞれp番目の人物のx座標、y座標を表し、式(2-3)のように求める。ix、iyはそれぞれi番目の座標のx座標、y座標である。
【0070】
【0071】
式(2-2)に示すように損失の計算時に、関節と関節の距離も考慮することにより、距離が近く、かつ異なる人物同士の関節のスコアの値が、異なる値を持ちやすくなる。したがって、式(2-1)において、スコアを計算する際、関節同士の距離が近くとも、推定されたスコアの値が離れていることで、同一人物同士の関節間のスコアが小さくなり、異なる人物同士の関節間のスコアが大きくなる。その結果、よりロバストに関節が属する人物を推定しやすくなる。
【0072】
<実施形態2>
本実施形態では、実施形態1において説明した、関節位置推定を、バラ積み部品の自動ロボットピッキングに応用する例を示す。なお、ハードウェア構成は、
図1で示した実施形態1と同様の構成でよい。
【0073】
一般にバラ積み部品の自動ロボットピッキングにおいては、部品の姿勢を知ることが重要である。例えば、
図10に示すようなネジ701をロボットアームで把持するためには、702と703などネジの適切な部分を把持する必要がある。702と704を把持した場合は、把持が不安定となり、把持したネジが落下する可能性がある。
【0074】
このように、部品をピッキングするためには、部品を把持しやすい点(以後、特徴点と呼ぶ)を調査することが重要となる。そこで、本実施形態においては、実施形態1で説明した関節位置推定を、部品の特徴点検出に応用する方法を説明する。本実施形態の構成図を
図11に示す。本実施形態は、画像取得部801、推定部802、認識部803から構成される。
【0075】
画像取得部801は、S801において、ピッキング対象となる部品が映った画像を取得する。推定部802は、実施形態1における
図2の推定部102に対応する。推定部802はS802において、部品を把持すべき特徴点の位置と、検出された特徴点のスコアとを推定する。特徴点の検出方法は、実施形態1の関節位置推定方法と対応する。特徴点のスコアは、同一部品内の異なる特徴点同士を結ぶ線上に同一スコアが埋め込まれるように学習した学習済みモデルに取得した画像を入力することで得たスコアマップを用いて推定される。特徴点のスコアマップの推定方法の詳細は、実施形態1のスコアマップを推定する方法と同様である。S803において、認識部803は、推定部802によって得られたスコアに基づいて、当該特徴点が属する部品を認識する。実施形態1の認識部106に対応する。
【0076】
<実施形態3>
本実施形態では、実施形態1において説明した、関節位置推定を、スポーツシーンの映像自動解析に応用する例を示す。なお、ハードウェア構成は、
図1で示した実施形態1と同様の構成でよい。
【0077】
スポーツシーン、特にボールを使った、サッカーやラグビー、バスケットボールなどの球技の映像の自動解析においては、どの人物がボールを支配しているかが重要となる。各人物がボールを支配している時間や、ボールを支配している際の人物のスピード、ボールを支配している人物がシュートやパスを放つタイミングなどを解析する。これによって、どのようなタイミングでシュートやパスを放つのが効果的か、などの情報を知ることができる。
【0078】
本実施形態においては、実施形態1で説明した関節位置推定を、ボールを支配する人物の推定に応用する方法を説明する。本実施形態の構成図を
図13に示す。本実施形態は、画像取得部901、推定部902、認識部903から、構成される。
【0079】
図14のフローチャートを用いて処理の流れを説明する。まず、S901において、画像取得部901は、解析対象となるスポーツシーン映像を取得する。例えば、
図16に示すような、人物とボールがある程度近接した状態の画像を取得する。推定部902は、実施形態1における
図2の推定部102に対応する。S902において、推定部902は、画像から人物とボールの位置と、人物とボールそれぞれのスコアとを推定する。人物とボールの位置の推定方法は、実施形態1の関節位置推定方法と同じであるため、説明を省略する。また、推定部902は、人物とボールを結ぶ線上に同一スコアを推定するように学習された推定器を用いてスコアを推定する。S903において、認識部904は、推定部902によって得られたスコアに基づいて、ボールを支配している人物を推定する。実施形態1の認識部106に対応する。ここでは、例えば、ボールと人物の足の関節との距離が最も小さい人物がボールを支配していると認識する。
【0080】
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、データ通信用のネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。また、そのプログラムをコンピュータが読み取り可能な記録媒体に記録して提供してもよい。
【符号の説明】
【0081】
1 情報処理装置
101 画像取得部
102 推定部
104 特定部
105 記憶部
106 認識部