(第1の実施形態)
図1は、本発明の第1の実施形態による情報処理装置1の構成例を示す図である。情報処理装置1は、2次元画像11を入力とし、出力装置13とフィルタ更新装置12に接続される。情報処理装置1は、物体(対象)が写った2次元画像11と、その2次元画像11の中心が物体の中心か否かを示すラベル列を入力して、フィルタ更新装置12により2次元画像11の各画素の物体の中心らしさを計算する関数を学習する。また、情報処理装置1は、学習後は、物体が写った2次元画像11を入力して、その2次元画像11上の物体の中心の位置を推定し、出力装置13へ出力する。
情報処理装置1は、データ取得部101と、フィルタ保持部102と、座標情報保存部103と、フィルタ処理部104と、座標情報復元部105と、出力データ生成部106とを有する。
データ取得部101は、2次元画像11を取得する。学習フェーズでは、データ取得部101は、教師データとして用いる2次元画像11を取得する。2次元画像11は、主に物体が写った画像である。学習フェーズ後の推定フェーズでは、データ取得部101は、任意の2次元画像11を取得する。
フィルタ保持部102は、フィルタ処理部104に順次出力する2つ以上のフィルタパラメータを保持する。フィルタパラメータは、入力データに対して空間フィルタ処理を行う時に用いるパラメータである。例えば、空間フィルタ処理として線形フィルタを適用する場合、フィルタ保持部102は、その線形フィルタのパラメータ(係数)を保持する。また、最大値フィルタなどの非線形フィルタを適用する場合、フィルタ保持部102は、フィルタ処理の種類やカーネルサイズや入力から出力のサイズ変化率などのパラメータを保持する。また、フィルタ保持部102は、2つ以上のフィルタパラメータを出力する順番も保持する。
サイズ変化率は、以下のように定める。十分に大きく異なるサイズの2つの入力データがフィルタ処理部104のフィルタに与えられる。その2つの入力データの横方向のサイズは、それぞれ、sx1およびsx2である。2つの出力データの横方向のサイズは、それぞれ、tx1およびtx2である。サイズsx1、sx2、tx1およびtx2が[数1]のような定数αおよびβを用いて表せるとき、αが横方向のサイズ変化率である。
縦方向のサイズ変化率も同様に表される。以下、フィルタ処理部104が入力データサイズに対して出力データサイズを縮小するフィルタ処理を、縮小するフィルタという。また、フィルタ処理部104が入力データサイズに対して出力データサイズを拡大するフィルタ処理を、拡大するフィルタという。縮小するフィルタは、例えば、サイズ変化率(縮小率)が縦方向と横方向のそれぞれで0.5である。拡大するフィルタは、例えば、サイズ変化率(拡大率)が縦方向と横方向のそれぞれで2である。
座標情報保存部103は、フィルタ保持部102が保持するフィルタパラメータを出力する順番に基づき、次に行うフィルタ処理のサイズ変化率を判断する。座標情報保存部103は、次に行うフィルタ処理のサイズ変化率が0.5の場合、データ取得部101が取得した2次元画像11をそれぞれの座標軸方向にシフトしたシフトデータを生成する。座標軸ごとにシフトする大きさは、サイズ変化率をrとしたとき、[数2]で表される整数sである。
サイズ変化率rが0.5である場合、整数sは0か1のどちらかである。サイズ変化率rが1より小さい場合、フィルタの入力データに対応する出力データは分解能が低下し、情報ロスが出る。情報量を失わないために、座標情報保存部103が複数のシフトデータを生成してから、フィルタ処理部104がフィルタ処理を行う。フィルタ処理部104がシフトデータごとにフィルタ処理を行うことで、分解能が低下する前の情報量を保つことができる。
フィルタ処理部104は、フィルタ保持部102から入力したフィルタパラメータを基に、座標情報保存部103から入力した2次元画像11またはシフトデータに対してフィルタ処理を行い、フィルタ処理データを生成する。
座標情報復元部105は、フィルタ処理部104が行ったフィルタ処理のサイズ変化率rが2の場合、フィルタ処理部104が生成したフィルタ処理データを2次元画像11のそれぞれの座標軸方向にシフトし、和を取る。座標軸ごとにシフトする大きさは、サイズ変化率をeとしたとき、[数3]で表される整数sである。
サイズ変化率eが2である場合、整数sは0か1のどちらかである。サイズ変化率eが1より大きい場合、フィルタの入力データの情報量に対して、フィルタの出力データのサイズが大きくなるため、データを補完する部分は他の部分と依存関係が生じ、周期性が現れる。周期性を相殺するために、座標情報保存部103がシフトデータとして複数の入力データを生成し、座標情報復元部105は、フィルタ処理部104がフィルタ処理したフィルタ処理データを異なる位相かつ同じ重みで足し合わせる。このように足し合わせると、データの利用方法が一定になり、周期性が相殺される。
出力データ生成部106は、推定部であり、フィルタ保持部102が保持するフィルタパラメータをすべて処理したフィルタ処理データを基に、物体の領域を検出してその領域の重心を推定し、その重心を2次元画像11の中の物体の中心の位置として出力装置13へ出力する。
以上のように、学習フェーズでは、情報処理装置1は、物体が写った2次元画像11と、その2次元画像11の中心が物体の領域の画像重心近傍か否かを示すラベルを入力して学習する。また、学習フェーズ後の推定フェーズでは、情報処理装置1は、任意の2次元画像11を入力して、その2次元画像11に学習フェーズで写っていた物体の中心またはその近傍の領域を推定し、出力装置13へ出力する。
情報処理装置1は、フィルタ処理部104のフィルタの出力データサイズが入力データサイズより縮小されている場合、座標情報保持部103がサイズ変化率rに応じて複数のシフトデータを生成することで、データ利用履歴の情報ロスを防ぐ。
また、情報処理装置1は、フィルタ処理部104のフィルタの出力データサイズが入力データサイズより拡大されている場合、拡大に伴うデータ補完から周期性が生まれる。座標情報復元部105は、入力データを拡大するフィルタ処理部104の処理の後に、縮小するフィルタ処理の時に保持した複数のフィルタ処理データをデータ利用履歴が一定になるように統合することで、周期性を生じさせないようにする。そのため、その周期のすべての位相に対応する画像は、フィルタ処理部104のフィルタに入力可能な最小サイズまたはそれ以上の任意のサイズの画像でよい。情報処理装置1は、そのような画像による学習でも、高精度に物体の領域を算出できる。
図2は、学習フェーズにおける情報処理装置1の情報処理方法を示すフローチャートである。学習フェーズでは、情報処理装置1は、フィルタ更新装置12によって、フィルタ保持部102が保持するフィルタパラメータを更新する学習処理を行う。
ステップS1101では、データ取得部101は、学習に用いる複数の2次元画像11を教師データとして取得し、2次元画像11を座標情報保存部103に出力する。2次元画像11は、所定サイズのカラー画像であり、各色が3つの整数値を保持する2次元配列のデータである。3つの整数値は、赤、青および緑の3原色に関する輝度を表す値である。
なお、情報処理装置1は、複数(例えば32)の2次元画像11を並列に処理するが、説明の簡単のため、以下、1つの2次元画像11の処理について説明する。
2次元画像11は、フィルタ処理部104の入力データの初期値として用いられる。座標情報保存部103は、シフト量を保存するためのスタック型の配列であるシフトスタックを用意し、シフトスタックの中身を空の状態にしておく。
また、フィルタ更新装置12は、学習に用いる教師データの2次元画像11のラベルを入力する。ラベルは、2次元画像11の画像の中心位置が画像に写っていることが検出された物体の中心付近である場合には1で表現され、2次元画像11の画像の中心位置が物体の中心付近でない場合には0で表現される。物体の中心付近とは、物体の領域の画像重心から所定の距離以内であることを示す。
ステップS1102では、フィルタ保持部102は、複数のフィルタパラメータおよびフィルタパラメータを出力する順番を座標情報保存部103およびフィルタ処理部104に出力する。複数のフィルタパラメータは、少なくとも、縮小するフィルタのパラメータと、拡大するフィルタのパラメータとを有する。例えば、縮小するフィルタのサイズ変化率は0.5であり、拡大するフィルタのサイズ変化率は2である。
ステップS1103では、座標情報保存部103は、複数のフィルタパラメータのうちの1回目のフィルタパラメータを参照し、1回目のフィルタパラメータを用いるフィルタが縮小するフィルタであるか否かを判定する。座標情報保存部103は、1回目のフィルタパラメータを用いるフィルタが縮小するフィルタである場合には、2次元画像11をシフトしたシフトデータを生成する。上記のように、縮小するフィルタのサイズ変化率が0.5の場合、シフト量は0または1である。
座標情報保存部103は、2次元画像11に対して、縦方向にシフト量SHIFTx、かつ横方向にシフト量SHIFTyシフトさせ、第1~第4のシフトデータを生成する。第1のシフトデータは、縦方向のシフト量SHIFTxが0、かつ横方向のシフト量SHIFTyが0であるシフトデータである。第2のシフトデータは、縦方向のシフト量SHIFTxが0、かつ横方向のシフト量SHIFTyが1であるシフトデータである。第3のシフトデータは、縦方向のシフト量SHIFTxが1、かつ横方向のシフト量SHIFTyが0であるシフトデータである。第4のシフトデータは、縦方向のシフト量SHIFTxが1、かつ横方向のシフト量SHIFTyが1であるシフトデータである。第1~第4のシフトデータは、それぞれ、2次元画像11の座標がシフト量SHIFTxおよびSHIFTyである場所をコーナーとする2次元画像である。
また、座標情報保存部103は、上記の第1~第4のシフトデータに対応する4種類のシフト量SHIFTxおよびSHIFTyを第1~第4のシフトデータの座標情報としてスタックに保存しておく。座標情報保存部103は、第1~第4のシフトデータをフィルタ処理部104に出力する。
なお、座標情報保存部103は、1回目のフィルタパラメータを用いるフィルタが縮小するフィルタでない場合には、2次元画像11をフィルタ処理部104に出力する。
ステップS1104では、フィルタ処理部104は、フィルタが縮小するフィルタである場合には、第1~第4のシフトデータに対して、それぞれ、1回目のフィルタパラメータを用いた縮小するフィルタ処理を実行し、第1~第4のフィルタ処理データを生成する。そして、フィルタ処理部104は、第1~第4のフィルタ処理データを座標復元部105に出力する。
また、フィルタ処理部104は、フィルタが縮小するフィルタでない場合には、2次元画像11に対して、1回目のフィルタパラメータを用いたフィルタ処理を実行し、フィルタ処理データを出力する。フィルタ処理部104は、第1~第4のフィルタ処理データまたは1種類のフィルタ処理データを座標情報復元部105に出力する。
フィルタ処理部104は、線形フィルタ処理を実行する場合には、フィルタ保持部102から入力したフィルタパラメータ(フィルタ係数)を用いてフィルタ処理を実行し、フィルタ処理データを出力する。フィルタ処理部104は、最大値フィルタ、ReLU関数などの活性化関数、バッチノーマライゼーション、またはデコンボリューションなどのフィルタ処理を行う場合には、以下のフィルタパラメータを基にフィルタ処理を実行する。その場合のフィルタパラメータは、フィルタ保持部102から入力したカーネルサイズおよび画像のサイズ変化率などのパラメータである。フィルタ処理部104は、ステップS1107のフィルタ更新処理において、フィルタパラメータを更新する勾配方向の判断をするために、ステップS1104の処理を行う度、フィルタ処理データを保存しておく。
ステップS1105では、座標情報復元部105は、ステップS1104で実行したフィルタが拡大するフィルタでない場合、フィルタ処理部104が出力する第1~第4のフィルタ処理データまたは1種類のフィルタ処理データを座標情報保存部103に出力する。
ステップS1106では、座標情報保存部103は、フィルタ処理部104が複数のフィルタパラメータのうちのすべてをフィルタパラメータのフィルタ処理を実行していない場合には、ステップS1103に戻る。座標情報保存部103は、複数のフィルタパラメータのうちの1回目のフィルタパラメータの処理を終えた段階であるので、2回目のフィルタパラメータの処理を行うため、ステップS1103に戻る。
ステップS1103では、座標情報保存部103は、複数のフィルタパラメータのうちの2回目のフィルタパラメータを参照し、2回目のフィルタパラメータを用いるフィルタが縮小するフィルタであるか否かを判定する。座標情報保存部103は、2回目のフィルタパラメータを用いるフィルタが縮小するフィルタである場合には、上記と同様に、座標情報復元部105から入力したフィルタ処理データをシフトした複数のシフトデータを生成する。そして、座標情報保存部103は、上記と同様に、複数のシフトデータに対応する複数のシフト量を複数のシフトデータの座標情報としてスタックに保存し、シフトデータをフィルタ処理部104に出力する。
まず、1回目のフィルタが縮小するフィルタでなく、2回目のフィルタが縮小するフィルタである場合を説明する。その場合、座標情報保存部103は、上記と同様に、1種類のフィルタ処理データに対して、縦方向にシフト量SHIFTx、かつ横方向にシフト量SHIFTyシフトさせ、第1~第4のシフトデータを生成する。そして、座標情報保存部103は、第1~第4のシフトデータに対応する4種類のシフト量SHIFTxおよびSHIFTyを第1~第4のシフトデータの座標情報としてスタックに保存し、第1~第4のシフトデータをフィルタ処理部104に出力する。
次に、1回目のフィルタが縮小するフィルタであり、2回目のフィルタも縮小するフィルタである場合を説明する。その場合、座標情報保存部103は、第1~第4のフィルタ処理データのそれぞれに対して、縦方向にシフト量SHIFTx、かつ横方向にシフト量SHIFTyシフトさせ、第1~第16のシフトデータを生成する。シフト量SHIFTxおよびSHIFTyは、それぞれ、0または1である。座標情報保存部103は、第1~4のフィルタ処理データのそれぞれに対して、4種類のシフトを行い、第1~第16のシフトデータを生成し、第1~第16のシフトデータをフィルタ処理部104に出力する。また、座標情報保存部103は、第1~第16のシフトデータに対応する16種類のシフト量SHIFTxおよびSHIFTyを第1~第16のシフトデータの座標情報としてスタックに保存する。
ここで、第1~第4のシフトデータは、上記の第1のフィルタ処理データをシフトしたデータである。第5~第8のシフトデータは、上記の第2のフィルタ処理データをシフトしたデータである。第9~第12のシフトデータは、上記の第3のフィルタ処理データをシフトしたデータである。第13~第16のシフトデータは、上記の第4のフィルタ処理データをシフトしたデータである。
また、座標情報保存部103は、2回目のフィルタパラメータを用いるフィルタが縮小するフィルタでない場合(拡大するフィルタである場合を含む)には、上記と同様に、座標情報復元部105から入力したフィルタ処理データをフィルタ処理部104に出力する。
ステップS1104では、フィルタ処理部104は、フィルタが縮小するフィルタである場合には、入力したデータに対して、それぞれ、2回目のフィルタパラメータを用いたフィルタ処理を実行し、フィルタ処理データを生成する。
まず、1回目および2回目のフィルタが縮小するフィルタでない場合を説明する。その場合、フィルタ処理部104は、1種類のフィルタ処理データに対して、2回目のフィルタパラメータを用いたフィルタ処理を実行し、フィルタ処理データを生成する。そして、フィルタ処理部104は、フィルタ処理データを座標情報復元部105に出力する。
次に、1回目のフィルタが縮小するフィルタであり、2回目のフィルタが縮小するフィルタでない場合を説明する。その場合、フィルタ処理部104は、第1~第4のフィルタ処理データに対して、それぞれ、2回目のフィルタパラメータを用いたフィルタ処理を実行し、第1~第4のフィルタ処理データを生成する。そして、フィルタ処理部104は、第1~第4のフィルタ処理データを座標情報復元部105に出力する。
次に、1回目のフィルタが縮小するフィルタでなく、2回目のフィルタが縮小するフィルタである場合を説明する。その場合、フィルタ処理部104は、第1~第4のシフトデータに対して、それぞれ、2回目のフィルタパラメータを用いたフィルタ処理を実行し、第1~第4のフィルタ処理データを生成する。そして、フィルタ処理部104は、第1~第4のフィルタ処理データを座標情報復元部105に出力する。
次に、1回目および2回目のフィルタが縮小するフィルタである場合を説明する。その場合、フィルタ処理部104は、第1~第16のシフトデータに対して、2回目のフィルタパラメータを用いたフィルタ処理を実行し、第1~第16のフィルタ処理データを生成する。そして、フィルタ処理部104は、第1~第16のフィルタ処理データを座標情報復元部105に出力する。
ステップS1105では、座標情報復元部105は、ステップS1104で実行したフィルタが拡大するフィルタでない場合には、フィルタ処理部104が出力するフィルタ処理データを座標情報保存部103およびフィルタ更新装置12に出力する。
また、座標情報復元部105は、ステップS1104で実行したフィルタが拡大するフィルタである場合には、座標情報保存部103が最後にスタックに保存したシフト量SHIFTxおよびSHIFTyを取り出す。上記のように、拡大するフィルタのサイズ変化率が2の場合、シフト量は0または1である。また、縮小するフィルタのサイズ変化率が0.5の場合の、シフト量は0または1である。拡大するフィルタのサイズ変化率(=2)が縮小するフィルタのサイズ変化率(=0.5)の逆数である場合、座標情報復元部105は、スタックに保存されているシフト量SHIFTxおよびSHIFTyを用いることができる。
1回目のフィルタが縮小するフィルタであり、2回目のフィルタが拡大するフィルタである場合を説明する。その場合、座標情報復元部105は、座標情報保存部103が最後にスタックに保存した4種類のシフト量SHIFTxおよびSHIFTyを取り出す。そして、座標情報復元部105は、第1~第4のフィルタ処理データに対して、縦方向にシフト量SHIFTxかつ横方向にシフト量SHIFTyシフトさせ、第1~第4のシフトデータを生成することにより、第1~第4のフィルタ処理データの座標情報を復元する。第1のシフトデータは、第1のフィルタ処理データに対して、縦方向のシフト量SHIFTxが0、かつ横方向のシフト量SHIFTyが0であるシフトデータである。第2のシフトデータは、第2のフィルタ処理データに対して、縦方向のシフト量SHIFTxが0、かつ横方向のシフト量SHIFTyが1であるシフトデータである。第3のシフトデータは、第3のフィルタ処理データに対して、縦方向のシフト量SHIFTxが1、かつ横方向のシフト量SHIFTyが0であるシフトデータである。第4のシフトデータは、第4のフィルタ処理データに対して、縦方向のシフト量SHIFTxが1、かつ横方向のシフト量SHIFTyが1であるシフトデータである。
そして、座標情報復元部105は、シフト量SHIFTxおよびSHIFTyを基に第1~第4のシフトデータの座標の位置を合わせて、位置を合わせた第1~第4のシフトデータを座標ごとに加算(統合)し、統合データを生成する。なお、座標情報復元部105は、加算の代わりに、平均化または乗算を行うことにより、統合してもよい。
そして、座標情報復元部105は、統合データのうち周期性が残っている最外周の1画素のデータを削除する。この後のフィルタは、削除によるデータサイズ変更に合わせたフィルタ処理を行う。座標情報復元部105は、削除後の統合データをフィルタ処理データとして座標情報保存部103およびフィルタ更新装置12に出力する。座標情報復元部105は、統合データを生成することにより、フィルタ処理データの周期性を取り除くことができる。
ステップS1106では、座標情報保存部103は、フィルタ処理部104が複数のフィルタパラメータのうちのすべてをフィルタパラメータのフィルタ処理を実行していない場合には、ステップS1103に戻り、3回目のフィルタパラメータの処理を繰り返す。
その後、ステップS1105において、1回目および2回目のフィルタが縮小するフィルタであり、3回目のフィルタが拡大するフィルタである場合の座標情報復元部105の処理を説明する。その場合、座標情報復元部105は、座標情報保存部103が最後にスタックに保存した16種類のシフト量SHIFTxおよびSHIFTyを取り出す。座標情報復元部105は、第1~第16のフィルタ処理データに対して、それぞれ、16種類のシフト量SHIFTxおよびSHIFTyのシフトを行い、第1~第16のシフトデータを生成することにより、第1~第16のフィルタ処理データの座標情報を復元する。ここで、これらの第1~第16のシフトデータは、それぞれ、座標情報保存部103により生成された第1~第16のシフトデータを基に生成されたデータである。
座標情報復元部105は、第1~第4のシフトデータに対応するシフト量SHIFTxとSHIFTyを基に第1~第4のシフトデータの座標の位置を合わせて、位置を合わせた第1~第4のシフトデータを座標ごとに加算し、第1の統合データを生成する。
座標情報復元部105は、第5~第8のシフトデータに対応するシフト量SHIFTxとSHIFTyを基に第5~第8のシフトデータの座標の位置を合わせて、位置を合わせた第5~第8のシフトデータを座標ごとに加算し、第2の統合データを生成する。
座標情報復元部105は、第9~第12のシフトデータに対応するシフト量SHIFTxとSHIFTyを基に第9~第12のシフトデータの座標の位置を合わせて、位置を合わせた第9~第12のシフトデータを座標ごとに加算し、第3の統合データを生成する。
座標情報復元部105は、第13~第16のシフトデータに対応するシフト量SHIFTxとSHIFTyを基に第13~第16のシフトデータの座標の位置を合わせ、位置を合わせた第13~第16のシフトデータを座標毎に加算し、第4の統合データを生成する。
そして、座標情報復元部105は、第1~第4の統合データのそれぞれに対して、周期性が残っている最外周の1画素のデータを削除する。座標情報復元部105は、削除後の第1~第4の統合データを第1~第4のフィルタ処理データとして座標情報保存部103に出力する。
ステップS1106では、座標情報保存部103は、フィルタ処理部104が複数のフィルタパラメータのうちのすべてをフィルタパラメータのフィルタ処理を実行していない場合には、ステップS1103に戻り、4回目のフィルタパラメータの処理を繰り返す。
その後、ステップS1105において、1回目および2回目のフィルタが縮小するフィルタであり、3回目および4回目のフィルタが拡大するフィルタである場合の座標情報復元部105の処理を説明する。その場合、座標情報復元部105は、座標情報保存部103のスタックに残っている4種類のシフト量SHIFTxおよびSHIFTyを取り出す。そして、座標情報復元部105は、フィルタ処理部104から入力した第1~第4のフィルタ処理データに対して、それぞれ、4種類のシフト量SHIFTxおよびSHIFTyのシフトを行い、第1~第4のシフトデータを生成する。これにより、座標情報復元部105は、第1~第4のフィルタ処理データの座標情報を復元する。
座標情報復元部105は、4種類のシフト量SHIFTxとSHIFTyを基に第1~第4のシフトデータの座標の位置を合わせて、位置を合わせた第1~第4のシフトデータを座標ごとに加算し、統合データを生成する。
そして、座標情報復元部105は、統合データに対して、周期性が残っている最外周の1画素のデータを削除する。座標情報復元部105は、削除後の統合データをフィルタ処理データとして座標情報保存部103に出力する。
ステップS1106において、座標情報保存部103は、フィルタ処理部104が複数のフィルタパラメータのうちのすべてをフィルタパラメータのフィルタ処理を実行した場合には、ステップS1107に進む。この場合、座標情報復元部105は、座標情報保存部103に対して、1つの座標サイズのフィルタ処理データ(2つの実数を含む)を出力している。そのような出力サイズになるように、2次元画像11のサイズおよびフィルタ処理部104のフィルタが調整されている。すべてのフィルタパラメータのフィルタにおいて、拡大するフィルタの数は、縮小するフィルタの数以下である。
なお、出力サイズが1つの座標にならない場合、フィルタ処理部104は、フィルタの最後に平均値フィルタなどを追加して、出力サイズが1つの座標になるように調整することができる。
上記の2つの実数は、2次元画像11の中心が物体の中心付近である確からしさと、2次元画像11の中心が物体の中心付近でない確からしさを表す。情報処理装置1は、複数の2次元画像11について、上記の処理を並列に行う。
ステップS1107では、フィルタ更新装置12は、複数の2次元画像11のラベルと、座標情報復元部105が最後に出力する複数の2次元画像11についてのフィルタ処理データを基に、フィルタパラメータの更新を行う。なお、1つの2次元画像11について複数のフィルタ処理データが存在する場合には、フィルタ更新装置12は、複数のフィルタ処理データを基に、フィルタパラメータの更新を行う。
複数の2次元画像11は、教師データである。2次元画像11のラベルは、2次元画像11の画像の中心位置が物体の中心付近である場合には1で表現され、2次元画像11の画像の中心位置が物体の中心付近でない場合には0で表現される。
フィルタ処理データは、2次元画像11の中心が物体の中心付近である確からしさを表す実数と、2次元画像11の中心が物体の中心付近でない確からしさを表す実数を含む。フィルタ更新装置12は、フィルタ処理データがラベルに近づくように、フィルタパラメータを更新する。具体的には、フィルタ更新装置12は、ラベルが物体の中心付近であることを表す1である場合、フィルタ処理データは物体の中心付近である確からしさの方が物体の中心付近でない確からしさより高くなるように、フィルタパラメータを更新する。また、フィルタ更新装置12は、ラベルが物体の中心付近でないことを表す0である場合、フィルタ処理データは物体の中心付近でない確からしさの方が物体の中心付近である確からしさより高くなるように、フィルタパラメータを更新する。
例えば、フィルタ更新装置12は、フィルタ処理データの物体の中心付近である確からしさに関して、ソフトマックス関数を適用した結果に対する交差エントロピー誤差を用いて、フィルタパラメータを更新する。その場合、フィルタ更新装置12は、非特許文献2の方法を用いて、勾配法を基に更新を行うことができる。フィルタ更新装置12は、フィルタ処理部104のフィルタ処理の最中に適用されたフィルタパラメータに対して、他の層の出力結果の情報を利用することで、高速にフィルタパラメータを更新できる。
フィルタ更新装置12は、更新後のフィルタパラメータをフィルタ保持部102に出力する。フィルタ保持部102は、更新後のフィルタパラメータを保持する。
ステップS1108では、情報処理装置1は、学習処理の終了判定を行う。上記の複数の2次元画像11の一部は、複数のテスト用2次元画像である。フィルタ更新装置12は、テスト用2次元画像に対しては、上記のステップS1107でフィルタパラメータの更新を行わず、テスト用2次元画像以外の2次元画像11に対して、上記のステップS1107でフィルタパラメータの更新を行う。
テスト用2次元画像以外の2次元画像11は、教師データとしての学習のためのフィルタパラメータの更新処理に用いられるため、フィルタ処理データが、上記のように、ラベルに近づいていく。フィルタ処理データは、テスト用2次元画像に関しても、教師データとして用いた2次元画像11と同様に、ラベルに近づくことが期待されるが、フィルタパラメータの更新処理には用いられないため、保証できないことがある。第1の実施形態では、テスト用2次元画像と対応するラベルの一致度を精度として扱い、更新処理の終了の判定に利用する。
情報処理装置1は、テスト用2次元画像を入力データとした場合の最終的に得られるフィルタ処理データの物体の中心付近である確からしさと物体の中心付近でない確からしさのうちの値の大きい方と、ラベルとの一致度を比較する。情報処理装置1は、複数のテスト用2次元画像について、直前のステップS1107の処理と過去数回分のステップS1107の処理において、一致度の改善があった場合には、まだ改善の見込みがあるものとして、ステップS1102に戻る。ステップS1102では、フィルタ保持部102は、更新後の複数のフィルタパラメータおよびフィルタパラメータを出力する順番を座標情報保存部103およびフィルタ処理部104に出力し、上記の処理を繰り返す。
また、情報処理装置1は、複数のテスト用2次元画像について、直前のステップS1107の処理と過去数回分のステップS1107の処理において、一致度の改善がない場合には、改善の見込みがないものとして、学習処理を終了する。
図3は、推定フェーズにおける情報処理装置1の情報処理方法を示すフローチャートである。推定フェーズでは、情報処理装置1は、任意の2次元画像11の中の物体の中心位置を出力装置13に出力する。フィルタ保持部102は、学習フェーズで更新されたフィルタパラメータを保持している。
ステップS1201では、データ取得部101は、物体の写った2次元画像11を取得し、2次元画像11を座標情報保存部103に出力する。この2次元画像11は、図2の学習処理の時の2次元画像11以上の任意のサイズのカラー画像である。
ステップS1202では、情報処理装置1は、図2のステップS1102と同様の処理を行う。
ステップS1203では、情報処理装置1は、図2のステップS1103と同様の処理を行う。
ステップS1204では、情報処理装置1は、図2のステップS1104と同様の処理を行う。なお、図2のステップS1107のフィルタ更新処理は行わないため、フィルタ処理部104は、フィルタ処理データを保存しなくてもよい。
ステップS1205では、情報処理装置1は、図2のステップS1105と同様の処理を行う。
ステップS1206では、情報処理装置1は、図2のステップS1106と同様の処理を行う。情報処理装置は、フィルタ処理部104が複数のフィルタパラメータのうちのすべてをフィルタパラメータのフィルタ処理を実行した場合には、ステップS1209に進む。
ステップS1209では、出力データ生成部106は、座標情報復元部105から最後のフィルタ処理データを入力し、2次元画像11の中の物体の中心位置の座標を推定する。ステップS1201の2次元画像11のサイズは、図2のステップS1101の2次元画像11のサイズ以上である。したがって、座標情報復元部105が出力データ生成部106に出力する最後のフィルタ処理データは、1つの座標以上のサイズであり、各座標に対して、物体の中心付近である確からしさを表す実数と、物体の中心付近でない確からしさを表す実数を含む。
まず、複数のフィルタパラメータのフィルタの中で縮小するフィルタの数と拡大するフィルタの数が同じ場合について説明する。その場合、座標情報復元部105は、最後の1種類のフィルタ処理データを出力データ生成部106に出力する。出力データ生成部106は、フィルタ処理データを基に、物体の中心付近である確からしさが物体の中心付近でない確からしさ高い座標の領域を算出する。物体の中心付近とは、物体の領域の画像重心から所定の距離以内であることを示す。出力データ生成部106は、算出した領域が上記の所定の距離を半径とする円の面積より大きい場合には、算出した領域の重心を算出し、その重心を物体の中心座標として出力とする。なお、2次元画像11が複数の物体を含む場合には、出力データ生成部106は、複数の物体の中心座標を出力することができる。また、出力データ生成部106は、算出した領域が上記の所定の距離を半径とする円の面積より小さい場合には、算出した領域がノイズであり、2次元画像11内に物体が存在しないと判断し、物体の中心座標を出力しない。なお、出力データ生成部106は、物体の中心の位置または物体の全体の位置を推定し、その推定した物体の中心の位置または物体の全体の位置を出力装置13に出力することができる。
次に、複数のフィルタパラメータのフィルタの中で縮小するフィルタの数が拡大するフィルタの数より多い場合について説明する。例えば、座標情報復元部105は、第1~第4のフィルタ処理データを出力データ生成部106に出力する。出力データ生成部106は、4種類のシフト量SHIFTxおよびSHIFTyを用いて、第1~第4のフィルタ処理データの座標(x,y)の要素の値を、それぞれ、座標(2x+SHIFTx,2y+SHIFTy)へコピーしたデータを生成する。例えば、出力データ生成部106は、第1のフィルタ処理データの座標(x,y)の要素の値を、座標(2x+0,2y+0)へコピーしたデータを生成する。また、出力データ生成部106は、第2のフィルタ処理データの座標(x,y)の要素の値を、座標(2x+0,2y+1)へコピーしたデータを生成する。これにより、座標情報復元部105は、第1~第4のフィルタ処理データを統合した2倍に拡大した統合データを得ることができる。
次に、座標情報復元部105が16個以上のフィルタ処理データを出力データ生成部106に出力する場合を説明する。その場合、出力データ生成部106は、ステップS1105と同様に、4つのフィルタ処理データを単位として上記の統合を行う処理を繰り返し、最終的に1つの統合データを得る。
すなわち、出力データ生成部106は、縮小するフィルタの数が拡大するフィルタの数より多い数だけ、フィルタ処理データの座標(x,y)の要素の値を、座標(2x+SHIFTx,2y+SHIFTy)へコピーしたデータを生成する処理を繰り返す。
その後、出力データ生成部106は、統合データを用いて、上記と同様に、物体の中心座標を出力する。
次に、第1の実施形態の効果を説明する。座標情報保存部103は、縮小するフィルタ処理の場合、複数のシフトデータを生成することにより、座標情報のロスを防ぐことができる。座標情報復元部105は、拡大するフィルタの場合、フィルタ処理データのサイズが大きくなる分のデータの補完部分に周期性が生じるが、統合データを生成することにより、周期性を相殺することができる。
(第2の実施形態)
第1の実施形態では、フィルタ保持部102は、学習フェーズの初期値として、ランダムのフィルタパラメータを保持することができる。本発明の第2の実施形態では、フィルタ保持部102は、学習フェーズの初期値として、事前に他のデータセット等で更新されたフィルタパラメータを用いる。事前に他のデータセット等で更新されたフィルタパラメータは、ランダムのフィルタパラメータより、2次元画像11を分類する性能が高い。学習フェーズでは、情報処理装置1は、ファインチューニングで、学習に用いる時間を削減しつつ、高精度のフィルタパラメータを得ることができる。
ただし、事前に他のデータセット等で更新されたフィルタパラメータは、座標情報保存部103および座標情報復元部105の使用を前提としていないため、変更が必要になる。以下、第2の実施形態が第1の実施形態と異なる点を説明する。
ファインチューニングの際に用いる2次元画像11は、第1の実施形態と同様に、フィルタ処理に入力可能な最小サイズまたはそれ以上の任意のサイズでよい。
ステップS1102では、フィルタ保持部102は、事前に更新された複数のフィルタパラメータおよびフィルタパラメータを出力する順番を保持する。複数のフィルタパラメータのフィルタが拡大するフィルタを含む場合、上記のように、座標情報復元部105は、最外周の1画素のデータを削除する。事前に更新された複数のフィルタパラメータは、そのような削除を前提としていない。そのため、フィルタ保持部102は、フィルタ処理部104が、拡大するフィルタ処理の後に、データサイズを調整するように、事前に更新された複数のフィルタパラメータを変更する。
また、事前に更新された複数のフィルタパラメータのフィルタ処理は、2次元画像11の周囲部分に定数値を入力してフィルタ処理のサイズを調整する処理(以下、パディングという)を含んでいる場合がある。その場合、フィルタ保持部102は、フィルタ処理部104がパディングを行わないようにし、後で2次元画像11のサイズを調整するように、事前に更新された複数のフィルタパラメータを変更する。
第1の実施形態では、フィルタ処理部104が最後に出力するフィルタ処理データが、1つの座標サイズになるように、複数のフィルタパラメータが調整されていた。しかし、事前に更新された複数のフィルタパラメータが用いられる場合、フィルタ処理部104が最後に出力するフィルタ処理データは、1つの座標サイズになるとは限らない。そこで、情報処理装置1は、フィルタ処理部104が最後に出力するフィルタ処理データが、1つの座標サイズになるように、2次元画像11のサイズを決定する。
例えば、情報処理装置1は、2次元画像11のサイズを少しずつ変更しながら、フィルタ処理部104が最後に出力するフィルタ処理データのサイズが1つの座標サイズになるような、2次元画像11のサイズを探索する。最後のフィルタ処理データのサイズが1つの座標サイズに1になるような2次元画像11のサイズが存在しない場合、フィルタ保持部102は、新たにランダムな値で係数を初期化した線形フィルタを最後に加えるように、複数のフィルタパラメータを変更する。情報処理装置1は、この線形フィルタのサイズが縦横共に2以上の整数の全探索により、最後のフィルタ処理データのサイズが1つの座標サイズになるような2次元画像11のサイズを決定する。
ステップS1105及びステップS1205の処理では、座標情報復元部105は、拡大するフィルタの場合、フィルタ処理データをシフトして加算する代わりに、シフトして平均化する。事前に更新された複数のフィルタパラメータは、データレベルが増加する加算を前提とせず、データレベルが増加しない平均化を前提としているためである。
情報処理装置1は、上記の処理を行うことにより、事前に更新された複数のフィルタパラメータを用いることができる。
第1および第2の実施形態によれば、座標情報保存部103は、縮小するフィルタの場合、座標情報のロスを防ぐため、第1~第4のシフトデータを生成し、4種類のシフト量SHIFTxおよびSHIFTyを保存する。フィルタ処理部104が入力データを拡大するフィルタ処理を行うと、拡大に伴うデータ補完により処理に周期性が生じ、第1~第4のフィルタ処理データが周期性を持つ。座標情報復元部105は、入力データを拡大するフィルタ処理の後に、保存された4種類のシフト量SHIFTxおよびSHIFTyを基に、第1~第4のフィルタ処理データを統合することにより統合データを生成することにより、周期性を相殺する。
以上の処理により、情報処理装置1は、学習フェーズで、拡大するフィルタ処理を行う場合でも、小さいサイズの2次元画像11を用いた学習を行うことができ、推定フェーズでは、高精度に対象物体の中心位置を推定できる。学習フェーズで用いる2次元画像11は、フィルタ処理部104のフィルタ処理に入力可能な最小サイズまたはそれ以上の任意のサイズでよい。
学習フェーズでは、フィルタ処理部104の最後のフィルタ処理の出力データサイズを調節する場合、入力データサイズを変更、または、フィルタ処理部104にフィルタを追加することができる。また、学習フェーズでは、入力データサイズに対して出力データサイズを拡大するフィルタ処理をフィルタ処理部104が含む場合、入力データサイズを変更、または、フィルタ処理部104にフィルタを追加することができる。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。