本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係る情報処理装置1は、例えば図1に例示するように、制御部11、記憶部12、操作部13、表示部14、及び通信部15を含んで構成されている。またこの情報処理装置1は、インターネット等の通信手段を介して、種々のウェブサーバ等のサーバ装置2a,b…との間で通信可能に接続されている。
制御部11は、CPU等のプログラム制御デバイスであり、記憶部12に格納されたプログラムに従って動作する。本実施の形態の一例では、この制御部11は、複数の画像パターンを機械学習により獲得して、記憶部12に格納する機械学習処理を実行する。また制御部11は、処理対象となる画像データの入力を受けて、上記の複数の画像パターンごとに、当該処理対象となった画像データに含まれる領域のうち、画像パターンと類似すると判定される領域の数をカウントして、当該カウントの結果に基づく特徴ベクトル情報を生成する。そして制御部11は、当該特徴ベクトル情報を用いて、処理の対象となった画像データに関わる所定の処理を実行する。
本実施の形態のある例では、制御部11は、各ウェブサーバ2a,2b…が提供するウェブページをクローリングして、当該ウェブページで提供される画像データを処理の対象として上記の複数の画像パターンごとに、当該処理対象となった画像データに含まれる領域のうち、画像パターンと類似すると判定される領域の数をカウントして、当該カウントの結果に基づく特徴ベクトル情報を生成し、当該生成した特徴ベクトルと、処理対象となった画像データを提供するウェブページを特定する情報(当該ウェブページのURLでよい)とを関連付けて、検索用データベースとして記憶部12に格納しておく。
そして制御部11は、利用者から検索の対象となる画像データの入力を受けて、当該入力された画像データを処理の対象として上記の複数の画像パターンごとに、当該処理対象となった画像データに含まれる領域のうち、画像パターンと類似すると判定される領域の数をカウントして、当該カウントの結果に基づく特徴ベクトル情報(検索用データベースに既に保持されているものと区別するため、検索対象特徴ベクトル情報と呼ぶ)を生成する。制御部11はここで生成した検索対象特徴ベクトル情報と、検索用データベースに保持された特徴ベクトル情報とを比較し、検索データベースに保持された特徴ベクトルを、検索対象特徴ベクトル情報に近い順(関連度順)に所定の数だけ抽出する。制御部11は、抽出した特徴ベクトルに関連付けて検索データベースに保持されている、ウェブページを特定する情報の一覧を、上記関連度順に表示出力する。
もっともこの例は、処理の一例であり、本実施の形態の制御部11は他の処理を行ってもよい。この制御部11の詳しい処理の内容は、後に説明する。
記憶部12は、メモリデバイスやディスクデバイス等であり、制御部11によって実行されるプログラムを保持している。このプログラムは、コンピュータ可読かつ非一時的な記憶媒体に格納されて提供され、この記憶部12に格納されたものであってもよい。また本実施の形態の一例では、この記憶部12は、検索用データベースを保持しているものとする。またこの記憶部12は、制御部11のワークメモリとしても動作する。
操作部13は、キーボードやマウス等であり、利用者の指示操作を受けて、当該指示操作の内容を表す情報を制御部11に対して出力する。表示部14は、ディスプレイ等であり、制御部11から入力される指示に従って、指示された情報を表示出力する。
通信部15は、ネットワークインタフェース等であり、制御部11から入力される指示に従って、指示された情報を、指示されたあて先に宛てて送信出力する。またこの通信部15は、ウェブサーバ2等から情報を受信して、制御部11に対して出力する。
次に本実施の形態の一例に係る制御部11の動作について説明する。ここではまず、一例として、制御部11が、ウェブサーバ2が提供する画像データを検索する動作を行う例について説明する。
この例の制御部11は、記憶部12に格納された機械学習処理プログラムを実行することで、図2に例示するように、機械学習処理部20及び検索処理部30として機能する。図2は、本実施の形態の一例に係る制御部11の機能ブロック図である。
機械学習処理プログラムを実行する制御部11は、図2に例示するように、機械学習処理部20としての動作を行う。このとき制御部11は、機能的には受入部21と、機械学習部22と、中間層抽出部23とを含んで構成される。
また検索処理部30として動作する制御部11は、機能的に、パターン保持部31と、情報収集部32と、特徴量演算部33と、特徴量保持部34と、受入部35と、検索部36と、情報出力部37とを含んで構成される。
受入部21は、機械学習の対象となるデータの入力を受け入れる。本実施の形態の例では、画像データを検索する動作を行うので、ここで受入部21が受け入れるデータは画像データとなる。本実施の形態の一例では、画像データは、ウェブサイトをクローリングして得ることとすればよい。あるいは、この画像データは検索の目的となる画像を含むもの、例えば日本の風景の検索に用いるのであれば、日本国内を撮影した画像データを集積したものを用いてもよい。
機械学習部22は、例えばオートエンコーダであり、中間層を少なくとも一つ含むニューラルネットワークの機械学習処理を実行する。この機械学習部22は、受入部21が受け入れた画像データを、所定のサイズにリサイズしてニューラルネットワークの入力層に入力する。また機械学習部22は、当該画像データを入力したときのニューラルネットワークの出力が、元の(所定のサイズにリサイズした)画像データとなるように、ニューラルネットワークの出力と入力した画像データとの差に基づいて、ニューラルネットワーク内の入力層と中間層との間の重みの情報、及び中間層と出力層との間の重みの情報を設定する。この処理は、一般的なニューラルネットワークの機械学習処理と同じものであるので、ここでの詳しい説明は省略する。
中間層抽出部23は、機械学習部22によって機械学習されたニューラルネットワークの中間層の情報を抽出して出力する。具体的に中間層にN個のノードがあり、入力層にM個のノードがある(入力する画像データのサイズが横xピクセル、縦yピクセルであるとするとM=x×y)とき、中間層の一つのノードjに着目すると、M個の重みwij(i=1,2,…,M)が存在する。そこで中間層抽出部23は、中間層の各ノード(j=1,2,…,N)についてのこのM個の重みを、画像データのサイズ(横xピクセル、縦yピクセル)に配列した基底画像データ(N個の画像データ)を生成し、中間層の情報として出力する。
なお、ここでは中間層抽出部23は、入力層と中間層との間の重みの情報から中間層の情報を抽出することとしたが、これに代えてあるいはこれとともに、中間層と出力層との重みの情報から中間層の情報を抽出してもよい。すなわち情報を抽出する中間層は、例えば機械学習部22によって機械学習されるニューラルネットワークがオートエンコーダである場合、エンコーダ側の最後の層(デコーダ側の最初の層に接続される、最も深い中間層、いわゆる潜在変数を表す層)であってもよい。また中間層抽出部23は、任意の互いに隣接する中間層間の重みの情報から中間層の情報を抽出してもよい。さらに中間層抽出部23は、各中間層の各ノードのうちから、当該ノードに係る重み(隣接する層の各ノードとの間の重み)の情報が所定の基準に合致するノード(あるいは人為的に指定されたノード)を選択し、当該ノードに係る重みの情報に基づいて基底画像データを生成することとしてもよい。つまり、上記の最も深い中間層など、特定の中間層から中間層の情報を抽出してもよいし、複数の中間層から中間層の情報が抽出されてもよい。
この場合、出力層にL個のノードがあるとき、中間層の一つのノードjに着目すると、L個の重みwij(i=1,2,…,L)が存在することとなる。そこで中間層抽出部23は、中間層の各ノード(j=1,2,…,N)についてのこのL個の重みをx×yのマトリクスに最も近い比率のマトリクスに配列した仮基底画像データを生成し、さらに各ノードについての仮基底画像データを、所定の方法でx×y画素の画像データにリサイズして、基底画像データとする。そして中間層抽出部23は、この基底画像データ(N個の画像データ)を、中間層の情報として出力する。
この基底画像データ(N個の画像データ)には、例えば図3に例示するように、機械学習の過程で入力された画像データ内のパターン(線分的なパターンや色彩のパターン等)が含まれるようになることが知られている(例えば、Dumitru Erhan, et.al., “Understanding Representations Leaned in Deep Architectures”, inet: https://www.researchgate.net/publication/265745969_Understanding_Representations_Learned_in_Deep_Architectures(平成30年10月10日検索))。本実施の形態では、この基底画像データを画像パターンとして用いることとする。
検索処理部30のパターン保持部31は、機械学習処理部20の中間層抽出部23が出力した基底画像データを保持する。このパターン保持部31は、中間層抽出部23が出力した基底画像データのすべてを画像パターンとして保持してもよいし、中間層抽出部23が出力した基底画像データのうちから予め定めた条件を満足する基底画像データのみを画像パターンとして保持してもよい。ここでの条件としては例えば、線分の画像を画像パターンとする場合、ハフ変換やRANSAC等の広く知られた線分検出処理を行い、検出された線分の数が予め定めた数以上となっていることを条件としてもよい。この例によると、線分としての特徴を有する基底画像データのみを選択的に画像パターンとして保持することとなる。
また別の例では、パターン保持部31は、基底画像データのうち、所定の特徴量が予め定めた条件を満足するものを画像パターンとして選択して保持してもよい。ここで特徴量及び上記条件は例えば、ハール・ライク(Haar-Like)特徴量を用い、ハール・ライク特徴量の演算に用いる演算用パターン(エッジパターン、線分パターン、周辺パターンなど広く知られたものを用いればよい)との一致度が予め定めた閾値より高いとの条件であってもよい。
ここで一致度は、上記演算用パターンが有意画素(例えば黒色)となっている領域に対応する基底画像データ内の領域で、画素値の明度が予め定めた閾値より低くなっている画素の数PBNと、上記演算用パターンが有意画素でない(例えば白色)となっている領域に対応する基底画像データ内の領域で、画素値の明度が予め定めた閾値より高くなっている画素の数PWNとの和PBN+PWNなどとする。なお、領域の対応付けは、上記演算用パターンを、基底画像データのサイズに拡大または縮小(比率が一致しない場合は、演算用パターンの外接矩形を基底画像データのサイズに一致するよう拡大または縮小)して、画素を対応付けることにより行えばよい。
さらに、上記特徴量としてはHOG(Histograms of Oriented Gradients)特徴量を用いてもよい。この場合は、基底画像データからHOG特徴量を取り出し、取り出された輝度変化の境界線に対応する画素の数が予め定めたしきい値を超えるとの条件を満足する場合に、当該基底画像データを選択して画像パターンとして保持することとしてもよい。
この基底画像データのうちから画像パターンを選択する方法としては、このほかにも、ユーザの選択による方法など、種々の方法を採用し得る。
情報収集部32は、予め定めた規則に基づいてウェブページをクローリングし、取得したウェブページにて提供されている画像データを処理対象画像データとして特徴量演算部33に出力する。ここでクローリングの規則はリンクを辿る方法や、その他種々の方法が広く知られているので、ここでの詳しい説明は省略する。また、この情報収集部32は、特徴量演算部33により特徴量が演算された画像データの参照情報(当該画像データを取得したURL)を、特徴量保持部34に出力して、検索データベースへの記録を指示する。
特徴量演算部33は、処理の対象となる画像データの入力を受けて、当該画像データ(処理対象画像データ)と複数の基底画像データのそれぞれとの類似度を演算する。具体的にここでの類似度の演算は、処理対象画像データ内で、基底画像データと同じサイズのウィンドウを例えば所定ドット数ずつラスタスキャンしつつ、当該ウィンドウ内の部分画像を抽出し、基底画像データと当該部分画像との相互相関を演算する等の広く知られた方法で、パターンマッチング等の処理を行うことで実現できる。
ここで部分画像を抽出するためのウィンドウは、縦あるいは横方向の少なくとも一方に重複を許してスキャンすることとするのも好ましい。すなわち、基底画像データとの相互層間等を演算する部分画像は、処理対象画像データから重複を許して抽出されたものであってよい。このように重複を許して抽出すると、基底画像データとの対比の対象となるパターンが縦あるいは横方向にシフトしていても検出可能となる。
また類似度は、例えば次のようにしても求められる。すなわち特徴量演算部33は、部分画像ごとの方向線素特徴量を得る。具体的に特徴量演算部33は、部分画像をさらに所定サイズのブロックに分割し、ブロックごとに方向線素特徴量を得る。ここでの方向線素特徴量は、4方向のものに限られない。4を超える多方向とする場合の方向線素特徴量の例については、ストロークを構成する特徴点間の線分の単位方向ベクトルと予め定めた種々の方向の単位ベクトル(線素パターン)との内積を得て方向線素特徴量とする例など、広く知られた方法を採用できるので、ここでの詳細な説明は省略する。
特徴量演算部33は、ブロックごとに得た方向線素特徴量を参照し、予め定められた各線素パターンが表わす線分の角度ごとに、対応する角度の線素パターンに関連する方向線素特徴量となっているブロックを特定する情報のリストを関連づけたデータを生成する。このデータを、以下、比較対象位相順データと呼ぶ。
特徴量演算部33は、基底画像データの各々についても、予め、この例と同様に上記所定サイズのブロックに分割し、各ブロックの方向線素特徴量を得て、上記予め定められた各線素パターンが表わす線分の角度ごとに、対応する角度の線素パターンに関連する方向線素特徴量となっているブロックを特定する情報のリストを関連づけたデータを生成して記憶しておく。このデータを以下、検索用位相順データと呼ぶ。
特徴量演算部33は、比較対象位相順データの角度ごとのリスト(ブロックを特定する情報の各々)と、基底画像データごとの検索位相順用データに含まれるリストとの差を演算する。具体的な例として、角度θについての比較対象位相順データにおいて、ブロックを特定する情報(dxi,dyi)(ここでi=0,1,2…)が含まれ、ある基底画像データの検索用位相順データにおいてブロックを特定する情報(xj,yj)(ここでj=0,1,2…)が含まれているときには、
ΣiΣj|(xj,yj)-(dxi,dyi)|
を演算して、この演算結果を、さらに角度θについて総和したものを、部分画像と、当該基底画像データとの距離dであるとする。なお、Σiは、iについて和をとることを意味し、Σjはjについて和をとることを意味する。また(dxi,dyi)または(xj,yj)は、リストのi(またはj)番目が、x軸方向にdx番目、y軸方向にdy番目(またはx軸方向にx番目、y軸方向にy番目)の位置のブロックを特定する情報であることを意味する。
また、特徴量演算部33は、抽出した部分画像に含まれる各画素と、それに隣接する画素との色の情報を用いて、距離dに対して重みを与えてもよい。
例えば、特徴量演算部33は、部分画像(基底画像データと同じサイズ)内の画素と、基底画像データの対応する画素との差に基づく重みを与えてもよい。この場合、部分画像と、基底画像データとの対応する各画素について画素値の差の絶対値を総和したもの|e|を用い、この|e|を、先に演算した、部分画像と当該基底画像データとの距離dに加重して加算して補正距離D=α|e|+βdを求める(α、βは実験的に定められる正の重みの値)こととしてもよい。
また、画素値の差ではなく、画素値の差の差を用いてもよい。この例では、特徴量演算部33は、抽出した部分画像に含まれる画素を順次、注目画素として選択する。そして特徴量演算部33は、注目画素に隣接する画素と、注目画素との色の差の絶対値(色空間上の距離)を演算する。この色の差は、例えば注目画素をラスタスキャン順(映像データの左上の画素から順に、左から右へ1ライン走査し、次に一つ下のラインへ移行して左から右へ…と、順次走査する順)に走査して選択する場合、直前の注目画素の画素値と、現在の注目画素の画素値との差としてもよいし、4近傍の各画素との差の平均などとしてもよい。
なお、特徴量演算部33は、距離dに対して、先に求めた部分画像内の画素の値(色)の差(色差)と、基底画像データの画素の値(色)の差(色差;部分画像と同様の方法で予め求めておく)との差を求める。具体的に部分画像と、ある基底画像データとにおける各対応画素の、それぞれの周辺画素との色差の値をcpz、cpdzとしたとき、特徴量演算部33は、その差f=cpz-cpdzを算出する。
特徴量演算部33は、この値fの絶対値|f|を用いて、補正距離Dを、画素値の差の絶対値|e|とともに距離dに加重して加算し、
D=α|e|+βd+γ|f|
としてもよい(α、β,γは実験的に定められる正の重みの値)。
これによると、色差が著しい部分が一致する場合とそうでない場合とを補正距離Dに影響させることができるようになり、例えば背景など色差が一般に大きくない部分の影響を軽減できる。
これらの例では、特徴量演算部33は、ここで求められる距離d(あるいは補正距離D)の逆数(dまたはDに所定の正の定数を加えて逆数をとってもよい)を、部分画像と基底画像データとの類似度とする。
本実施の形態のこの例によると、ディープラーニングにおいて広く利用される畳み込みを採用した場合を超える効果を示す。
特徴量演算部33は、基底画像データごとに、処理対象画像データ中に、当該基底画像データとの間の類似度が予め定めたしきい値を超える(基底画像データのパターンに一致するパターンを有する)部分画像がいくつ見いだされたかをカウントする。
そして特徴量演算部33は、基底画像データごとの上記カウント値を得て、所定の基底画像データの順(基底画像データを追加した順でよい)に当該カウント値を配列したヒストグラムの情報(ベクトル情報)を、処理対象画像データの特徴量として出力する。
特徴量保持部34は、情報収集部32から特徴量の記録が指示されると、情報収集部32が出力する参照情報と、当該参照情報で特定されるアドレス等から情報収集部32が取得して出力した画像データについて特徴量演算部33が出力する特徴量とを関連付けて検索データベースに追加して記録する(図4)。なお、以下の説明で、検索データベースに格納された特徴量を検索コードと呼ぶ。
本実施の形態において特徴的なことの一つは、このとき、検索データベースには処理対象画像データ(ウェブサイトから取得された画像データ)自体を記録する必要がないことである。これにより、画像データを保持するための記憶容量を削減でき、また、画像データに関わる著作権等の問題が生じることがない。
受入部35は、ユーザから検索の対象となる画像データの入力を受け入れて、当該画像データを特徴量演算部33に対して、処理対象画像データとして出力する。
検索部36は、受入部35が出力した画像データについて特徴量演算部33が演算した特徴量(検索対象特徴量と呼ぶ)の情報を受けて、当該検索対象特徴量に類似する検索コードを、検索データベースから検索する。ここで特徴量間の類似度は例えば次のように演算できる。
本実施の形態のここでの例では、特徴量は、基底画像データごとのヒストグラムの情報であり、従って基底画像データの数だけの次元を有するベクトル量となっている。そこで、例えば正規化した(大きさを「1」とした)特徴量間(検索対象特徴量と検索コードとの間)の内積により特徴量の類似度を求めることができる(いわゆるコサイン類似度)。
検索部36は、検索データベースに格納された検索コードの各々と、検索対象特徴量との間の類似度を演算し、類似度の高い検索コードの順に所定の数だけ、当該検索コードに関連付けられている参照情報を取得して出力する。なお、検索部36は、類似度が予め定めたしきい値を超える場合にのみ、当該類似度に係る検索コードに関連付けられた参照情報を取得することとしてもよい。
情報出力部37は、検索部36が出力する参照情報のリスト(関連付けられた検索コードと検索対象特徴量との類似度が高い順に参照情報を配列したリスト)を、入力された画像データの検索結果として出力する。なお、類似度が予め定めたしきい値を超える場合に限ってこのリストに参照情報が含まれることとした場合、リストに参照情報が含まれない場合もある。この場合、情報出力部37は、入力された画像データに類似する画像データが見いだせなかった旨の情報を出力してもよい。
[動作]
本実施の形態は基本的に以上の構成を備えており、次のように動作する。本実施の形態の情報処理装置1では、まず画像パターンを得るために、機械学習の処理が行われる。
すなわち情報処理装置1の制御部11は、機械学習の対象となるデータの入力を受け入れる。ここでは機械学習の対象となるデータは画像データであるとする。制御部11は、オートエンコーダ等、中間層を少なくとも一つ含むニューラルネットワークの機械学習処理を実行する。このニューラルネットワークは必ずしもオートエンコーダのように教師なし学習でなくてもよく、CNN(畳み込みネットワーク)を用いた画像分類の機械学習処理が実行されてもよい。教師付きの機械学習を行う場合は、入力する画像データに対応する教師データが用意されているものとする。またこの機械学習の対象とするニューラルネットワークは、複数の中間層を有するものであってもよい。
情報処理装置1は、受け入れた画像データを、所定のサイズにリサイズしてニューラルネットワークの入力層に入力し、ニューラルネットワークの出力が目的のデータとなるように、当該目的のデータと出力との差に基づいて、ニューラルネットワーク内の入力層と中間層との間の重みの情報、及び中間層と出力層との間の重みの情報(複数の中間層が含まれる場合はさらに中間層の間の重みの情報)を設定する。この処理は、一般的なニューラルネットワークの機械学習処理と同じものであるので、ここでの詳しい説明は省略する。
なお、オートエンコーダを用いる場合は、ここでの目的のデータは入力する画像データそのものとなる。
情報処理装置1は、複数の画像データに基づく機械学習を行った後、機械学習されたニューラルネットワークの中間層の情報を抽出して出力する。既に述べたように、ここでの例では中間層の各ノードについて、当該ノードに入力される、あるいは当該ノードが出力する複数個の重みの情報を、所定のサイズ(横xピクセル、縦yピクセル)に配列して基底画像データを生成し、このノードごとに得られる基底画像データを中間層の情報として出力する。
また検索の処理を行う情報処理装置1は、次のように動作する。本実施の形態において特徴的なことの一つは、検索の処理を行う情報処理装置1では、ニューラルネットワークを用いる必要がなく、ニューラルネットワークを保持する必要も、その重みを更新したり、ニューラルネットワークに情報を入力してその出力を演算したりする必要もないことである。
本実施の形態の例に係る、検索の処理を行う情報処理装置1は、基底画像データを保持する。そして検索データベースの生成処理と、検索データベースからの検索処理とを実行する。
まず検索データベースの生成処理を行う情報処理装置1は、予め定めた規則に基づいてウェブページをクローリングし、取得したウェブページにて提供されている画像データを処理対象画像データとする。
そして情報処理装置1は、処理の対象となる画像データ(基底画像データより縦横のサイズが大きいものとする)の入力を受けて、当該画像データ(処理対象画像データ)と複数の基底画像データのそれぞれとの類似度を演算する。本実施の形態の一例では、類似度の演算は、処理対象画像データ内で、基底画像データと同じサイズのウィンドウをラスタスキャンしつつ、当該ウィンドウ内の部分画像を抽出し、基底画像データと当該部分画像との相互相関を演算する等の広く知られた方法で、パターンマッチング等の処理を行って実行する。
既に述べたように、ここで部分画像を抽出するためのウィンドウは、縦あるいは横方向の少なくとも一方に重複を許してスキャンすることとしてよい。
情報処理装置1は、基底画像データごとに、処理対象画像データ中に、当該基底画像データとの間の類似度が予め定めたしきい値を超える(基底画像データのパターンに一致するパターンを有する)部分画像がいくつ見いだされたかをカウントする。
情報処理装置1は、基底画像データごとの上記カウント値を得て、所定の基底画像データの順(基底画像データを追加した順でよい)に当該カウント値を配列したヒストグラムの情報(ベクトル情報)を、処理対象画像データの特徴量として、処理の対象として入力された画像データの取得元となったURL(参照情報)に関連付けて、検索データベースとして蓄積して格納する。
情報処理装置1のこの処理により、図4に例示したように、画像データの参照情報(URL)と、当該画像データに含まれる基底画像データである各画像パターンの数を列挙したベクトル情報(検索コード)とが関連付けて検索データベースとして、記憶部12に格納された状態となる。
情報処理装置1は、この検索データベースの生成の処理を所定のタイミングごとに繰り返して実行してもよい。
次に検索処理を実行する情報処理装置1は、検索の対象となる画像データの入力をユーザから受け入れて次のように動作する。
情報処理装置1は、検索の対象となる画像データについて当該画像データと複数の基底画像データのそれぞれとの類似度を演算する。そして情報処理装置1は、基底画像データごとに、処理対象画像データ中に、当該基底画像データとの間の類似度が予め定めたしきい値を超える(基底画像データのパターンに一致するパターンを有する)部分画像がいくつ見いだされたかをカウントする。
情報処理装置1は、基底画像データごとの上記カウント値を得て、所定の基底画像データの順(検索コードと同じ順)に当該カウント値を配列したヒストグラムの情報(ベクトル情報)を、検索の対象となった画像データの特徴量(検索対象特徴量)とする。
そして情報処理装置1は、この検索対象特徴量に類似する検索コードを、検索データベースから検索する。ここで特徴量間の類似度は正規化した(大きさを「1」とした)特徴量間(検索対象特徴量と検索コードとの間)の内積でよい。
情報処理装置1は、検索データベースに格納された検索コードの各々と、検索対象特徴量との間の類似度を演算し、類似度の高い検索コードの順に所定の数だけ、当該検索コードに関連付けられている参照情報を取得する。そして情報処理装置1は、当該取得した参照情報のリスト(関連付けられた検索コードと検索対象特徴量との類似度が高い順に参照情報を配列したリスト)を、入力された画像データの検索結果として出力する。
なお、ここまでの説明において一つの情報処理装置1が、機械学習の処理と、検索データベースの生成の処理と、検索の処理とを行う例について説明したが、本実施の形態はこれに限られず、例えば機械学習の処理を行う情報処理装置1と、その他の処理を行う情報処理装置1とは別のものであってもよい。この場合、検索データベースの生成処理や検索の処理を行う情報処理装置1は、基底画像データの情報を、機械学習の処理を行う情報処理装置1から取得する。既に述べたように、このとき検索データベースの生成処理や検索の処理を行う情報処理装置1は、基底画像データを生成するもととなったニューラルネットワークの情報(ニューラルネットワークを再現するための、全ての重みの情報等)は必ずしも必要でなく、基底画像データを保持するだけでよい。
また、検索データベースの生成処理を行う情報処理装置1と、検索の処理を行う情報処理装置1も別体のものであってもよい。この場合、検索の処理を行う情報処理装置1は、検索データベースの生成処理を行う情報処理装置1から検索データベースの入力を受けて保持する。
本実施の形態によると、検索データベースの生成や検索の処理において、画像パターンである基底画像データを用いるために、ニューラルネットワークの演算の必要がなく、パターンマッチング等の比較的軽量な処理によって各処理を実行できる。
[既知のデータとの照合]
また、本実施の形態の一例では、既知のデータ、例えばタイヤ、ヘッドライト、窓、などといった、何が撮影されているかが分かっている画像データとの照合が行われてもよい。
この例では予め、既知の物体(上記のタイヤ等)が撮像されている画像データを処理対象画像データとして入力し、特徴量演算部33の動作を行わせて検索コードとなる特徴量を得ておく。以下、この既知の物体の画像データに基づく検索コードを、既知コードと呼ぶ。本実施の形態では、この既知コードを撮像されている物体の名称(既知の物体を特定する情報)に関連付けて記憶部12に格納して保持しておく。
そしてこの例ではさらに、制御部11は、特徴量演算部33が処理の対象とする画像データ(処理対象画像データ)に対し、当該処理対象画像データのうち予め定めた方法で決定される部分領域を少なくとも一つ抽出する。この部分領域は例えば画像データを32×32のマトリクスに分割したそれぞれとしてもよいし、画像データの4つの隅をそれぞれ含む、所定サイズの領域(この場合、各部分領域は互いに重なり合う部分が含まれてもよい)であってもよい。
制御部11は、ここで抽出した部分領域ごとに当該部分領域内の特徴量(部分特徴量と呼ぶ)を特徴量演算部33に演算させる。そして記憶部12に格納した既知コードと当該部分特徴量とを比較し、当該部分特徴量との類似度が予め定めたしきい値を超える既知コードがあれば、当該既知コードに関連付けられた物体の名称の情報を取得する。
制御部11は、各部分領域について得られた物体の名称の一覧、処理対象画像データに係る物体リストとして、処理対象画像データについて情報収集部32から特徴量の記録が指示されているときには、情報収集部32が出力する参照情報と、当該参照情報で特定されるアドレス等から情報収集部32が取得して出力した画像データについて特徴量演算部33が出力する特徴量とともに、さらにここで得た物体リストを関連付けて検索データベースに追加して記録する。なお、どの部分領域からも物体の名称が得られなかったときには、物体リストとして空のリストを記録する。
また制御部11は、検索部36の処理として、受け入れた画像データについて特徴量演算部33が演算した検索対象特徴量を取得するとともに、当該受け入れた画像データに基づいて物体リストを生成する。この検索の対象となる物体リストを、以下検索対象リストと呼ぶ。
制御部11は、ここで取得した検索対象特徴量に類似する検索コードを、検索データベースから検索し、類似度の高い順に、検索コードとともに参照情報に関連付けられている物体リストを取得し、検索対象リストと比較する。
そして制御部11は、検索対象特徴量に類似する検索コード(検索対象特徴量との間で特徴量間の内積が予め定めたしきい値を超える検索コード)のそれぞれについて、当該検索コードに関連付けられている物体リストに含まれる物体の名称のうち、検索対象リストにも含まれる物体の名称の数をカウントした値nを検索コードに関連付けられている物体リストに含まれる物体の名称の数Nで除した値n/Nを、対象一致度として求める。
制御部11は、検索対象特徴量に類似する検索コードのうち、対象一致度が所定のしきい値を超える検索コードについて、検索対象特徴量に対する類似度の高い順に、所定の数以下の数だけ、当該検索コードに関連付けられた参照情報を取得して出力する。
本実施の形態のこの例によると、例えば自動車のタイヤが撮像されている画像データを検索の対象として入力したときに、タイヤと同様の円形である(分類パターンは一致する)が、タイヤとは異なる物体が含まれる画像データの参照情報が検索の結果として出力される機会を低減できる。
[変形例]
またここまでの説明では、処理の対象となるデータは画像データとしていたが本実施の形態はこれに限られず、文字列やその他のデータであってもよい。この場合も、機械学習により学習されたニューラルネットワークの中間層の重みの情報をデータパターンとして、処理の対象とするデータについて、当該データに含まれる各データパターンの数をカウントする。
そして、このデータパターンごとのカウント値を、所定の順(データパターンについて予め定められた順)に配列してヒストグラムを表すベクトル情報を生成し、このベクトル情報を特徴量(特徴ベクトル情報)として、所定の処理を実行することとしてもよい。
[色成分ごとの処理を行う変形例]
またここまでに説明した本実施の形態の情報処理装置1は、画像データを色成分ごとに分けて機械学習や検索の処理を行うこととしてもよい。
具体的に制御部11は、機械学習の対象となる画像データの入力を受け入れると、この画像データを所定のサイズにリサイズし、さらに例えばRGBの各成分の画像データ(以下、区別のため、成分画像データと呼ぶ)に分割する。ここで、画像データをR成分、G成分、B成分など、色成分ごとの成分画像データに分割する方法は、広く知られているので、詳しい説明を省略する。また、以下では、RGBに分解する例について説明するが、RGBの成分でなくても、HSV(色相、彩度、明度)に分解してもよいし、その他の色空間の各成分に分解してもよい。
制御部11は、色成分ごとのニューラルネットワークのモデルの情報を保持し、これらのニューラルネットワークを機械学習する。すなわち制御部11は、分解して得られた成分画像データを、当該成分画像データの色成分に対応するニューラルネットワークの入力層に入力し、このニューラルネットワークの出力が目的のデータとなるように、当該目的のデータと出力との差に基づいて、ニューラルネットワーク内の入力層と中間層との間の重みの情報、及び中間層と出力層との間の重みの情報(複数の中間層が含まれる場合はさらに中間層の間の重みの情報)を設定する。
情報処理装置1は、複数の画像データのそれぞれの成分画像データに基づいて、各成分に対応するニューラルネットワークの機械学習を行った後、機械学習された各ニューラルネットワークの中間層の情報を抽出して出力する。既に述べたように、ここでの例では中間層の各ノードについて、当該ノードに入力される、あるいは当該ノードが出力する複数個の重みの情報を、所定のサイズに配列して基底画像データを生成し、このノードごとに得られる基底画像データを中間層の情報として出力することとなる。
本実施の形態のここでの例では、上記中間層の情報が色成分ごとに得られることとなるので、基底画像データも色成分ごとに得られることとなる。
そして検索の処理を行う情報処理装置1では、上述のようにして得られる、色成分ごとの(各色成分に対応する)基底画像データを保持する。そして検索データベースの生成処理と、検索データベースからの検索処理とを実行する。
まず検索データベースの生成処理を行う情報処理装置1は、予め定めた規則に基づいてウェブページをクローリングし、取得したウェブページにて提供されている画像データを処理対象画像データとする。
そして情報処理装置1は、処理の対象となる画像データ(基底画像データより縦横のサイズが大きいものとする)の入力を受けて、当該画像データ(処理対象画像データ)を色成分(基底画像データの各色成分と同じ色成分)に分解して、処理対象成分画像データを得る。
情報処理装置1は、色成分のそれぞれに対応して得られた処理対象成分画像データと、対応する色成分に係る複数の基底画像データのそれぞれとの類似度を演算する。本実施の形態の一例では、類似度の演算は、色成分ごとの処理対象成分画像データ内で、基底画像データと同じサイズのウィンドウをラスタスキャンしつつ、当該ウィンドウ内の部分画像を抽出し、当該処理対象成分画像データの色成分に対応する基底画像データと当該部分画像との相互相関を演算する等の広く知られた方法で、パターンマッチング等の処理を行って実行する。
ここでも部分画像を抽出するためのウィンドウは、縦あるいは横方向の少なくとも一方に重複を許してスキャンすることとしてよい。つまり、基底画像データとの相互層間等を演算する部分画像は、処理対象画像データから重複を許して抽出されたものであってよい。このように重複を許して抽出すると、基底画像データとの対比の対象となるパターンが縦あるいは横方向にシフトしていても検出可能となる。
情報処理装置1は、対応する色成分に係る基底画像データごとに、処理対象成分画像データ中に、当該基底画像データとの間の類似度が予め定めたしきい値を超える(基底画像データのパターンに一致するパターンを有する)部分画像がいくつ見いだされたかをカウントする。
情報処理装置1は、色成分ごと、かつ、基底画像データごとの上記カウント値を得て、予め定めた各色成分の基底画像データの順に当該カウント値を配列したヒストグラムの情報(ベクトル情報)を、処理対象画像データの特徴量として、処理の対象として入力された画像データの取得元となったURL(参照情報)に関連付けて、検索データベースとして蓄積して格納する。
情報処理装置1のこの処理により、図4に例示したものと同様に、画像データの参照情報(URL)と、当該画像データに含まれる基底画像データである各画像パターンの数を列挙したベクトル情報(検索コード)とが関連付けて検索データベースとして、記憶部12に格納された状態となる。
この例でも情報処理装置1は、この検索データベースの生成の処理を所定のタイミングごとに繰り返して実行してもよい。
またこの例において検索処理を実行する情報処理装置1は、検索の対象となる画像データの入力をユーザから受け入れて次のように動作する。
情報処理装置1は、検索の対象となる画像データを、機械学習に用いた色空間の成分と同じ色成分の画像データ(例えばRGBの各成分の成分画像データ)に分割する。
そして情報処理装置1は、分割して得られた成分画像データと、対応する色成分に係る複数の基底画像データのそれぞれとの類似度を演算する。本実施の形態の一例では、類似度の演算は、成分画像データ内で、基底画像データと同じサイズのウィンドウをラスタスキャンしつつ、当該ウィンドウ内の部分画像を抽出し、当該成分画像データの色成分に対応する基底画像データと当該部分画像との相互相関を演算する等の広く知られた方法で、パターンマッチング等の処理を行って実行する。
情報処理装置1は、対応する色成分に係る基底画像データごとに、成分画像データ中に、当該基底画像データとの間の類似度が予め定めたしきい値を超える(基底画像データのパターンに一致するパターンを有する)部分画像がいくつ見いだされたかをカウントする。
情報処理装置1は、基底画像データごとの上記カウント値を得て、所定の基底画像データの順(検索コードと同じ順)に当該カウント値を配列したヒストグラムの情報(ベクトル情報)を、検索の対象となった画像データの特徴量(検索対象特徴量)とする。
そして情報処理装置1は、この検索対象特徴量に類似する検索コードを、検索データベースから検索する。ここで特徴量間の類似度は正規化した(大きさを「1」とした)特徴量間(検索対象特徴量と検索コードとの間)の内積でよい。
情報処理装置1は、検索データベースに格納された検索コードの各々と、検索対象特徴量との間の類似度を演算し、類似度の高い検索コードの順に所定の数だけ、当該検索コードに関連付けられている参照情報を取得する。そして情報処理装置1は、当該取得した参照情報のリスト(関連付けられた検索コードと検索対象特徴量との類似度が高い順に参照情報を配列したリスト)を、入力された画像データの検索結果として出力する。