[1.実施形態1]
以下、本発明に関わる検索システムの実施形態の例を説明する。
[1−1.検索システムの全体構成]
図1は、検索システムの全体構成を示す図である。図1に示すように、検索システム1は、サーバ10とユーザ端末20とを含む。サーバ10とユーザ端末20とは、それぞれインターネットなどのネットワークに接続可能である。なお、図1では、サーバ10とユーザ端末20とをそれぞれ1台ずつ示しているが、これらは複数台ずつあってもよい。
サーバ10は、サーバコンピュータである。サーバ10は、制御部11、記憶部12、及び通信部13を含む。制御部11は、例えば、少なくとも1つのマイクロプロセッサを含む。制御部11は、記憶部12に記憶されたプログラムやデータに従って処理を実行する。記憶部12は、主記憶部及び補助記憶部を含む。例えば、主記憶部はRAMなどの揮発性メモリであり、補助記憶部は、ハードディスクやフラッシュメモリなどの不揮発性メモリである。通信部13は、有線通信又は無線通信用の通信インタフェースであり、ネットワークを介してデータ通信を行う。
ユーザ端末20は、ユーザが操作するコンピュータであり、例えば、携帯電話機(スマートフォンを含む)、携帯情報端末(タブレット型コンピュータを含む)、又はパーソナルコンピュータ等である。図1に示すように、ユーザ端末20は、制御部21、記憶部22、通信部23、操作部24、表示部25、及び撮影部26を含む。制御部21、記憶部22、及び通信部23のハードウェア構成は、それぞれ制御部11、記憶部12、及び通信部13と同様であってよく、ここでは説明を省略する。
操作部24は、入力デバイスであり、例えば、タッチパネルやマウス等のポインティングデバイスやキーボード等を含む。操作部24は、操作内容を制御部21に伝達する。表示部25は、例えば、液晶表示部又は有機EL表示部等である。撮影部26は、少なくとも1つのカメラを含み、例えば、CMOSイメージセンサ又はCCDイメージセンサなどを含む。撮影部26は、静止画又は動画を撮影し、画像データを生成する。なお、本実施形態では、撮影部26がユーザ端末20に含まれる場合を説明するが、撮影部26は、ユーザ端末20の外部にあってもよい。
なお、記憶部12,22に記憶されるものとして説明するプログラム及びデータは、ネットワークを介して他のコンピュータから供給されるようにしてもよい。また、サーバ10及びユーザ端末20のハードウェア構成は、上記の例に限られず、種々のハードウェアを適用可能である。例えば、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、光ディスクドライブやメモリカードスロット)や外部機器とデータの入出力をするための入出力部(例えば、USBポート)が含まれていてもよい。例えば、情報記憶媒体に記憶されたプログラムやデータが読取部や入出力部を介して供給されるようにしてもよい。
[1−2.検索システムの概要]
本実施形態の検索システム1は、入力された情報を分類するための学習器を記憶し、学習器に入力された入力情報の分類結果に基づいて、複数の被検索情報の中から、入力情報と類似する情報を検索する。
学習器は、機械学習のアルゴリズムである。別の言い方をすれば、学習器は、入力された情報を計算式に代入し、演算結果を出力するプログラムの一種である。本実施形態では、機械学習として、教師あり学習が用いられる。機械学習自体は、種々の手法を適用可能であり、本実施形態では、畳み込みニューラルネットワークを説明するが、再帰型ニューラルネットワークであってもよい。学習器は、情報を分類するために用いられるので、分類器ということもできる。
入力情報は、検索時のクエリとなる情報である。被検索情報は、検索の対象となる情報であり、インデックスが付与された情報である。被検索情報は、学習器に入力済みの情報であり、分類済みの情報といえる。入力情報と被検索情報は、種々の形式の情報であってよく、例えば、画像、動画、記事、文書、テキスト、音声、音楽、又はウェブサイトであってもよい。
検索システム1では、任意の類似情報検索が実行されてよく、例えば、類似画像検索、類似動画検索、類似記事検索、類似文書検索、類似テキスト検索、類似音声検索、類似音楽検索、又は類似ウェブサイト検索が実行されてよい。本実施形態では、類似情報検索の一例として類似画像検索を説明する。このため、本実施形態で類似画像検索と記載した箇所は、類似情報検索と読み替えることができる。
本実施形態では、入力情報と被検索情報の各々が画像なので、本実施形態において、入力画像と記載した箇所は入力情報と読み替えることができ、被検索画像と記載した箇所は被検索情報と読み替えることができる。なお、入力画像と被検索画像の各々が写真である場合を説明するが、入力画像と被検索画像の各々は、グラフィックソフトで作成されたコンピュータグラフィックであってもよい。
また、学習器は、類似画像検索で利用可能な種々の学習器を適用可能であり、例えば、画像に含まれるオブジェクトを分類するR−CNN、Fast R−CNN、又は、Faster R−CNNを利用してもよいし、画像の特徴をベクトル化するIllustration 2 vecを利用してもよい。
検索システム1では、1つのデータベースで被検索画像をまとめて管理するのではなく、被検索画像に撮影されたオブジェクトの分類ごとに、データベースが分割されている。即ち、検索システム1は、オブジェクトの分類ごとにデータベースを分割して管理し、学習器から出力された入力画像の分類に応じたデータベースに基づいて類似画像検索を実行し、検索対象となるデータの数を少なくすることで、類似画像検索を高速化している。以降、検索システム1の詳細を説明する。
[1−3.検索システムにおいて実現される機能]
図2は、検索システム1において実現される機能の一例を示す機能ブロック図である。図2に示すように、検索システム1では、データ記憶部100、学習部101、格納部102、入力部103、検索部104、及び表示制御部105が実現される場合を説明する。なお、本実施形態では、検索に係る主な機能がサーバ10で実現される場合を説明するが、後述する変形例のように、サーバ10とユーザ端末20との間で機能が分担されてもよい。
[1−3−1.データ記憶部]
データ記憶部100は、記憶部12を主として実現される。データ記憶部100は、類似画像検索を実行するために必要なデータを記憶する。ここでは、データ記憶部100が、学習器Lと、データベース群と、を記憶する場合を説明する。
[学習器]
学習器Lは、入力された情報の特徴量を計算し、当該特徴量に基づいて、当該情報の分類結果を出力する。本実施形態では、被検索情報が被検索画像であり、入力情報が入力画像なので、学習器Lは、入力された画像の特徴量を計算し、当該画像に含まれるオブジェクトの分類結果を出力する。学習器Lには、入力画像と被検索画像の両方が入力されるので、上記入力された画像とは、入力画像を意味することもあるし、被検索画像を意味することもある。
特徴量とは、入力画像又は被検索画像の特徴を示す情報であり、例えば、学習器Lに含まれる計算式によって計算される。本実施形態では、機械学習の一例として畳み込みニューラルネットワークを説明するので、学習器Lの中間層によって、特徴量が計算される。
中間層は、入力層と出力層の間に配置される層であり、隠れ層とも呼ばれる。中間層は、特徴量を計算するための少なくとも1つの計算式を含む。例えば、計算式の係数は、後述する学習部101によって決定される。学習器Lに含まれる中間層は、1つであってもよいし、複数個あってもよい。学習器Lが複数の中間層を含む場合には、これら複数の中間層の各々が特徴量を計算する。
特徴量は、任意の形式で示されてよく、例えば、ベクトル形式、配列形式、数値形式、又は文字列形式で示される。本実施形態では、類似画像検索が実行されるので、特徴量は、画像としての特徴を示す情報であり、例えば、オブジェクトの形状的な特徴と、画像の色彩的な特徴と、の少なくとも一方を示す。
形状的な特徴は、オブジェクトの輪郭の特徴であり、例えば、特徴点の位置関係の特徴を意味してもよいし、エッジ検出処理により検出された輪郭線の形状の特徴を意味してもよい。色彩的な特徴は、画像内の画素値の特徴であり、例えば、画素値を所定の計算式に代入したり、画素値の分布(ヒストグラム)を計算したりすることによって得られる。
本実施形態では、学習器Lが、特徴量として、特徴ベクトルを計算する場合を一例として説明する。このため、本実施形態で特徴ベクトルと記載した箇所は、特徴量と読み替えることができる。特徴ベクトルは、n(nは自然数)次元のベクトル情報であり、n個の数値を含む。例えば、特徴ベクトルは、n個の観点で分析した特徴を示してもよく、特徴ベクトルのn個の数値の各々は、n個の観点の各々の特徴を示してもよい。学習器Lは、特徴ベクトルに基づいて、分類結果を出力する。
分類とは、入力画像又は被検索画像の種類である。分類は、属性、カテゴリ、ジャンル、又は区分ということもできる。学習器Lでは、分類学で定義された分類が用いられてもよいし、特に分類学は関係なく、検索システム1で独自に定義された分類が用いられてもよい。
本実施形態では、類似画像検索が実行されるので、学習器Lは、入力画像又は被検索画像に撮影されたオブジェクトを分類する。オブジェクトは、入力画像又は被検索画像に含まれる物体であればよく、例えば、前景であってもよいし、背景であってもよい。画像が写真であれば、撮影部26の撮影範囲に含まれる被写体がオブジェクトに相当し、画像がコンピュータグラフィックであれば、グラフィックソフトで描かれたイラスト又は3次元モデルがオブジェクトに相当する。
例えば、学習器Lは、分類結果として、分類ごとの蓋然性を出力する。蓋然性とは、分類に属する確率、度合、又は尺度ということもできる。蓋然性が高いほど、その分類に属する確率が高く、蓋然性が低いほど、その分類に属する確率が低い。
本実施形態では、蓋然性は、0以上1以下の数値で示されるものとする。例えば、ある分類の蓋然性をp(pは0以上1以下の数値)とすると、当該分類に属する確率は、「100*p」パーセントとなる。なお、蓋然性は、任意の数値範囲の中で示されるようにすればよく、例えば、1よりも大きな数値(例えば、数十〜数万程度の数値範囲)で示されてもよいし、蓋然性を示す記号(例えば、蓋然性が高い順にS、A、B・・・といったランクを示す記号)でしめされてもよい。
例えば、学習器Lに、m種類(mは自然数)の分類の特徴が学習されていたとすると、学習器Lは、m種類の分類の各々の蓋然性を出力する。以降、学習器Lが分類結果として出力するm個の蓋然性の組み合わせを、スコアと記載する。このため、本実施形態でスコアと記載した箇所は、分類結果と読み替えることができる。
本実施形態では、画像が写真である場合を説明するので、学習器Lには、犬、猫、羊といったm種類のオブジェクトの特徴が学習されており、これらm種類の各々のオブジェクトが撮影された蓋然性がスコアとして出力される。なお、学習器Lに学習させるオブジェクトは、動物又は植物などの生物であってもよいし、乗物又は建物などの無生物であってもよい。
図3−4は、学習器Lが入力画像のスコアを出力する様子を示す図である。図3−4では、学習器Lの入力層と出力層は省略しており、学習器Lに含まれる中間層C1〜C5,FC6,FC7を示している。なお、ここでは、中間層を7個としているが、中間層の数は任意であってよく、例えば、1〜6個であってもよいし、8個以上であってもよい。
例えば、中間層C1〜C5の各々は、画像の局所的な特徴を抽出するための畳み込み層と、当該局所的な特徴をまとめるためのプーリング層と、を含む。畳み込み層は、画像の濃淡パターンを示す特徴マップを出力し、プーリング層は、当該特徴マップを縮小して新たな特徴マップを作成する。なお、中間層C1〜C5が作成する特徴マップが特徴量に相当してもよい。また、ここでは畳み込み層とプーリング層を5組としているが、これらの数は任意であってよく、1組〜4組であってもよいし、6組以上であってもよい。
中間層FC6,FC7の各々は、全結合層であり、中間層C1〜C5を通して特徴部分が取り出された画像を1つのノードに結合し、活性化関数によって変換した値を特徴ベクトルとして出力する。図3−4では、中間層FC7の特徴ベクトルを示しているが、中間層FC6も特徴ベクトルを出力する。なお、ここでは全結合層を2つとしているが、全結合層の数は任意であってよく、1つであってもよいし、3つ以上であってもよい。
学習器Lの図示しない出力層は、中間層FC7により出力された特徴ベクトルに基づいて、スコアを計算して出力する。図3の例であれば、犬が撮影された入力画像I1が学習器Lに入力される。犬は学習器Lに学習済みのオブジェクトなので、学習器Lから出力されるスコアは、犬の蓋然性が高く、他の分類の蓋然性は低くなる。図3に示すように、スコアは、m個の蓋然性を含み、犬の蓋然性が「0.8」と高く、他の蓋然性は何れも低くなっている。
一方、図4の例であれば、アルパカが撮影された入力画像I2が学習器Lに入力される。ここでは、アルパカは、学習器Lに学習させていないオブジェクトであるものとする。ただし、アルパカは、犬と羊に見た目が似ている(犬と羊の中間的な特徴を有する)ので、学習器Lから出力されるスコアは、犬の蓋然性が「0.5」であり、羊の蓋然性が「0.6」であり、これらの蓋然性がやや高くなっている。他の蓋然性は、何れも低くなっている。
他の動物についても同様であり、例えば、学習器Lに学習済みのオブジェクトが撮影された入力画像が入力された場合には、当該オブジェクトの蓋然性が高く(例えば、0.7〜1)、他のオブジェクトの蓋然性が低い(例えば、0.5未満)スコアが出力される。また例えば、学習器Lに学習済みのオブジェクトではないが、学習済みの複数のオブジェクトと似たオブジェクト(学習済みの複数のオブジェクトの中間的な特徴を有するオブジェクト)が撮影された入力画像が入力された場合には、これら複数のオブジェクトの各々の蓋然性がやや高く(例えば、0.5〜0.7)、他のオブジェクトの蓋然性が低いスコアが出力される。学習器Lに学習済みのオブジェクトの何れとも特徴が似ていないオブジェクトが撮影された入力画像が入力された場合には、全ての蓋然性が低いスコアが出力される。
なお、本実施形態の学習器Lは、スコア以外の情報も出力し、複数の情報を出力可能となっている。このため、図3−4に示すように、学習器Lは、中間層FC7の後が2つに分岐し、2つの異なる情報を出力する。別の言い方をすれば、学習器Lは、中間層FC7の後に、複数の出力層が配置されている。なお、学習器Lは、出力層が2つに分岐せず、スコアだけを出力してもよい。
学習器Lは、スコア以外に任意の情報を出力可能としてよいが、本実施形態では、オブジェクトの位置に関する位置情報を出力する場合を説明し、他の情報が出力される場合については、実施形態2で説明する。本実施形態の学習器Lは、入力された画像に含まれるオブジェクトのスコアと、当該オブジェクトの位置に関する位置情報と、を出力する。
位置情報は、画像内でのオブジェクトの位置であり、例えば、2次元座標によって示される。本実施形態では、位置情報の一例として、オブジェクトを囲むバウンディングボックスに関するボックス情報を説明する。このため、本実施形態でボックス情報と記載した箇所は、位置情報と読み替えることができる。
バウンディングボックスは、任意の形状であってよく、例えば、四角形などの多角形であってもよいし、円形又は楕円形であってもよい。本実施形態では、バウンディングボックスがオブジェクトの外接矩形である場合を説明するが、バウンディングボックスは、外接矩形よりも大きくてもよいし小さくてもよい。バウンディングボックスは、オブジェクトを示す領域の一例である。このため、本実施形態でバウンディングボックスと記載した箇所は、オブジェクトを示す領域と読み替えることができる。なお、当該領域は、特にボックスと呼ばれるものでなくてもよく、上記のように、円形又は楕円形等の任意の形状であってよい。
ボックス情報は、バウンディングボックスの位置だけを示してもよいが、本実施形態では、バウンディングボックスの形状も示す場合を説明する。例えば、ボックス情報は、バウンディングボックスの位置を示す2次元座標と、バウンディングボックスの縦幅及び横幅と、を含む。なお、2次元座標は、バウンディングボックスの任意の位置を示せばよく、例えば、中心点、左上、右上、左下、又は右下の位置を示す。また、バウンディングボックスの形状は、任意の情報によって特定されるようにすればよく、例えば、対角線の距離や角度によって特定されてもよい。
図3の例であれば、ボックス情報は、バウンディングボックスが、2次元座標(100,100)の位置にあり、縦幅が「50」ピクセルであり、横幅が「70」ピクセルであることを示す。図4の例であれば、ボックス情報は、バウンディングボックスが、2次元座標(80,90)の位置にあり、縦幅が「60」ピクセルであり、横幅が「65」ピクセルであることを示す。
以上のように、本実施形態の学習器Lは、中間層FC7が出力した特徴ベクトルと、出力層の第1の計算式と、に基づいてスコアを計算して出力する。また、学習器Lは、中間層FC7が出力した特徴ベクトルと、出力層の第2の計算式と、に基づいてボックス情報を計算して出力する。第1の計算式と第2の計算式は、互いに異なる計算式である。第1の計算式は、スコアを計算するために特化した計算式であり、第2の計算式は、ボックス情報を計算するために特化した計算式である。第1の計算式と第2の計算式は、何れも後述する学習部101によって係数が調整される。
また例えば、学習器Lは、入力画像全体から特徴ベクトルを計算し、入力画像全体の分類結果を出力してもよいし、入力画像に含まれるバウンディングボックスの特徴ベクトルを計算し、当該バウンディングボックスの分類結果を出力してもよい。学習器Lは、バウンディングボックスの分類結果を出力する場合には、バウンディングボックス内の画素値に基づいて、特徴ベクトルを計算する。即ち、学習器Lは、バウンディングボックス外の画素値は参照せず、バウンディングボックス外の分類結果は出力しなくてもよい。
なお、入力画像に含まれるオブジェクトが1つだったとしても、物体検出アルゴリズムによっては、バウンディングボックスが複数検出されることがある。例えば、図3の例であれば、入力画像に撮影された犬を囲むように多数のバウンディングボックスが検出されることがある。検出されるバウンディングボックスは、2つのこともあれば、3つ〜数十個又は数百個のこともあり、これらバウンディングボックスは、互いに重複する。重複とは、バウンディングボックス同士が重なることである。別の言い方をすれば、重複は、あるバウンディングボックスの一部と他のバウンディングボックスの一部とが重なること、あるバウンディングボックスが他のバウンディングボックスを含むことである。全てのバウンディングボックスの分類結果が出力されてもよいが、バウンディングボックス内には、1体の犬しか撮影されていないので、学習器Lは、多数のバウンディングボックスの各々に対して分類結果を出力する必要性は低い。
そこで、学習器Lは、互いに重複する複数のバウンディングボックスが入力画像に含まれる場合には、分類結果の蓋然性が最も高いバウンディングボックスの特徴ベクトルに基づいて、当該バウンディングボックスの分類結果を出力してもよい。学習器Lは、バウンディングボックスごとに、上記説明した方法に基づいてスコアを計算する。学習器Lは、スコアに含まれる蓋然性が最も高いバウンディングボックスを残し、他のバウンディングボックスを消去する。別の言い方をすれば、学習器Lは、互いに重複する複数のバウンディングボックスを、蓋然性が最も高いバウンディングボックスに統合する。学習器は、蓋然性が最も高いバウンディングボックスの分類結果を出力し、他のバウンディングボックスの分類結果は出力しないようにしてもよい。
なお、画像に含まれるオブジェクトは1つだけであってもよいが、入力された画像に複数のオブジェクトが含まれる場合には、学習器Lは、オブジェクトごとに、特徴ベクトルを計算してスコアを出力してもよい。学習器Lは、複数のオブジェクトの各々に対し、図3−4で説明した処理を実行して特徴ベクトルを計算し、特徴ベクトルに基づいて、スコアとボックス情報を出力することになる。
また、画像からオブジェクトを検出する方法自体は、種々の物体検出アルゴリズムを適用可能であり、例えば、Selective Search for Object Recognition(https://koen.me/research/pub/uijlings-ijcv2013-draft.pdf)のアルゴリズムであってもよいし、Fast R−CNN又はFaster R−CNNで実装されているアルゴリズムであってもよい。
また、本実施形態では、分類結果として蓋然性が出力される場合を説明したが、分類結果は、分類に関する情報であればよく、例えば、学習器Lは、分類結果として、複数の分類の中で属する分類を出力してもよい。この場合、学習器Lは、複数の分類の中で属する分類を示す数値を出力してもよいし、分類ごとに、当該分類に属するか否かを示す「0」又は「1」の情報を出力してもよい。
[データベース群]
データベース群は、分類ごとに、当該分類の被検索画像の特徴ベクトルが格納されたデータベースDBを含む。分類とデータベースDBとは、1対1の関係にあり、分類の数だけデータベースDBが存在する。別の言い方をすれば、本実施形態では、複数の分類が1つのデータベースDBにまとめられているのではなく、分類ごとにデータベースDBが分割されている。本実施形態では、学習器Lにm種類の分類が学習されているので、データベースDBもm個存在することになる。
本実施形態では、学習器Lに、犬、猫、羊といったオブジェクトの特徴が学習されているので、図2に示すように、データベース群は、犬データベースDB1、猫データベースDB2、及び羊データベースDB3といった各分類のデータベースDBを含む。このため、学習器Lに学習させていないオブジェクトのためのデータベース(例えば、アルパカデータベース)は存在しない。なお、本実施形態では、犬データベースDB1、猫データベースDB2、及び羊データベースDB3といった個々のデータベースを区別する必要のないときは、単にデータベースDBと記載する。
図5は、データベースDBのデータ格納例を示す図である。図5に示すように、データベースDBには、被検索画像のファイル名、特徴ベクトル、ボックス情報、及びスコアが格納される。ここでは、各データベースDBのデータ構造が同じものとして説明するが、データベースDBによってデータ構造を異ならせてもよい。
ファイル名は、被検索画像の画像データ(画像ファイル)の名前である。画像データは、データベースDBに格納されていてもよいし、データベースDBとは異なるデータベースに格納されていてもよい。データベースDBには、ファイル名以外にも、被検索画像の格納場所を示すパス名を含んでいてもよい。
特徴ベクトルは、被検索画像を学習器Lに入力した場合に、中間層FC7が計算した特徴ベクトルである。なお、中間層FC6が計算した特徴ベクトルが格納されてもよい。ボックス情報は、被検索画像を学習器Lに入力した場合に出力されたボックス情報である。スコアは、被検索画像を学習器Lに入力した場合に出力されたスコアである。
本実施形態では、類似画像検索で特徴ベクトルが利用される場合を説明する。即ち、特徴ベクトルが入力画像と類似する被検索画像が検索される場合を説明する。このため、データベースDBに格納された特徴ベクトルは、検索時のインデックスとなる。
なお、後述するように、スコアが入力画像と類似する被検索画像が検索されてもよいので、この場合には、データベースDBに格納されたスコアは、検索時のインデックスとなる。また、実施形態2で説明するように、ボックス情報が入力画像と類似する被検索画像が検索されてもよいので、この場合には、データベースDBに格納されたボックス情報は、検索時のインデックスとなる。
また、データベースDBには、他の情報が格納されるようにしてもよく、例えば、被検索画像のファイル名ではなく、被検索画像を一意に識別する画像IDが格納されてもよい。また例えば、検索時のインデックスとはならない情報は、データベースDBから省略してもよい。
また、データ記憶部100が記憶するデータは、上記の例に限られない。データ記憶部100は、検索に必要なデータを記憶すればよく、例えば、被検索画像の画像データが格納されたデータベースを記憶してもよい。他にも例えば、データ記憶部100は、学習の際に使用される教師データを記憶してもよい。
[1−3−2.学習部]
学習部101は、制御部11を主として実現される。学習部101は、教師データに基づいて、複数の分類の各々に属する情報の特徴を学習器Lに学習させる。本実施形態では、類似画像検索が実行されるので、学習部101は、教師データに基づいて、複数の分類の各々に属するオブジェクトの特徴を学習器Lに学習させることになる。
教師データは、訓練データとも呼ばれるものであり、入力と出力の関係を示すデータである。本実施形態では、入力が画像であり、出力がスコアとボックス情報なので、教師データは、画像と、スコア及びボックス情報の正解と、の組み合わせが多数格納されたデータとなる。教師データは、被検索画像の一部又は全部によって作成されてもよいし、被検索画像ではない画像によって作成されてもよい。
スコアの正解とは、分類を正確に示すスコアであり、例えば、人の手によって入力される。別の言い方をすれば、スコアの正解は、学習器Lに出力してほしいスコア(学習器Lが出力すべきスコア)である。例えば、犬が撮影された画像であれば、[1,0,0・・・]といったスコアが正解となり、猫が撮影された画像であれば、[0,1,0・・・]といったスコアが正解となる。一方、学習器Lに学習させていないアルパカが撮影された画像であれば、[0.5,0,0.6・・・]といったスコアを正解としてもよい。
ボックス情報の正解とは、バウンディングボックスの位置及び形状を正確に示す情報であり、例えば、人の手によって入力される。別の言い方をすれば、ボックス情報の正解は、学習器Lに出力してほしいボックス情報(学習器Lが出力すべきボックス情報)である。
学習部101は、教師データが示す入力と出力の関係を得られるように、学習器Lの各層の計算式を決定する。例えば、中間層C1〜C5,FC6,FC7の各々は、画像とスコア及びボックス情報の正解との関係によって学習される。一方、中間層FC7以降は、2つに分岐するので、スコアの出力層は、画像とスコアの正解との関係によって学習され、ボックスの出力層は、画像とボックス情報の正解との関係によって学習されることになる。
[1−3−3.格納部]
格納部102は、制御部11を主として実現される。格納部102は、分類ごとに用意されたデータベースDBのうち、学習器Lに入力済みの被検索画像の分類に応じたデータベースDBに、当該被検索画像の特徴ベクトル及びスコアの少なくとも一方を格納する。
本実施形態では、格納部102は、特徴ベクトル及びスコアの両方をデータベースDBに格納する場合を説明するが、特徴ベクトル又はスコアの何れか一方のみを格納してもよい。即ち、格納部102は、特徴ベクトル及びスコアのうち、類似画像検索のインデックスとして用いるものをデータベースDBに格納すればよい。他にも例えば、格納部102は、ファイル名やボックス情報などの他の情報をデータベースDBに格納してもよい。
学習器Lに入力済みとは、過去に学習器Lに入力されたことがあることを意味する。即ち、被検索画像は、少なくとも1回は学習器Lに入力され、学習器Lは、被検索画像の特徴ベクトルを計算し、スコアとボックス情報を出力済みであるものとする。格納部102は、学習器Lから出力された、被検索画像の特徴ベクトル及びスコアを取得する。
分類に応じたデータベースDBとは、被検索画像が属する分類のデータベースDBである。被検索画像は、人の手によって分類されてもよいし、学習器Lから出力されたスコアによって分類されてもよい。即ち、格納部102は、人によって指定された分類のデータベースDBに被検索画像の特徴ベクトル及びスコアを格納してもよいし、スコアによって定まるデータベースDBに被検索画像の特徴ベクトル及びスコアを格納してもよい。
本実施形態では、格納部102は、学習器Lから出力された被検索情報のスコアに応じたデータベースDBに、当該被検索情報の特徴ベクトル及びスコアを格納する。即ち、例えば、格納部102は、学習器Lから出力された被検索画像のスコアに基づいて、被検索画像の特徴ベクトルを格納するデータベースDBを決定する。
本実施形態では、スコアが各分類の蓋然性を示すので、格納部102は、学習器Lから出力された被検索画像の蓋然性が閾値以上である分類のデータベースDBに、被探索画像の特徴ベクトル及びスコアを格納する。
閾値は、予め定められた値であればよく、データ記憶部100に記憶されているものとする。閾値は、全分類で共通の値としてもよいし、分類に応じた値が設定されてもよい。閾値は、任意の値であればよいが、図4のアルパカのように、学習器Lに学習させていないオブジェクトも被検索画像とする場合には、必要以上に高い数値は設定しない方が好ましい。例えば、閾値は、蓋然性の上限値(ここでは、1.0)の30%〜70%程度に設定されてもよく、本実施形態では、50%(ここでは、0.5)とする。
格納部102は、被検索画像のスコアが示す各分類の蓋然性と閾値とを比較し、閾値以上の蓋然性を有する分類を特定する。蓋然性が閾値以上の分類が複数存在していれば、格納部102は、これら複数の分類を特定する。格納部102は、特定した分類のデータベースDBに対し、被検索画像のファイル名、特徴ベクトル、ボックス情報、及びスコアを格納する。なお、ファイル名は、他の被検索画像と重複しないように付与すればよい。
図6は、格納部102の処理の説明図である。図6では、各データベースDBに格納されるデータを実線の円で示す。本実施形態では、蓋然性が0.5以上の分類に被検索画像の特徴ベクトル等が格納されるので、図6の実線の円は、蓋然性が0.5以上の被検索画像を示し、点線の円は蓋然性が0.8以上の被検索画像を示す。
例えば、犬が撮影された被検索画像I1(図3)は、犬の蓋然性が0.8であり、他の蓋然性は0.5未満なので、犬データベースDB1にだけ格納される。また例えば、猫が撮影された被検索画像I3の猫の蓋然性が0.9であり、他の蓋然性が0.5未満だったとすると、当該被検索画像I3は、猫データベースDB2にだけ格納される。また例えば、羊が撮影された被検索画像I4の羊の蓋然性が0.8であり、他の蓋然性が0.5未満だったとすると、当該被検索画像I4は、羊データベースDB3にだけ格納される。
このように、学習器Lに学習させた分類のオブジェクトが撮影された被検索画像については、当該分類のデータベースDBにだけ格納される。一方、学習器Lに学習させていないオブジェクトが撮影された被検索画像については、当該オブジェクトが複数の分類の中間的な特徴を有していれば、これら複数の分類の各々のデータベースDBに格納される。
例えば、学習器Lに学習させていないアルパカが撮影された被検索画像(例えば、図4の入力画像I2)は、犬の蓋然性が0.5であり、羊の蓋然性が0.6であり、他の蓋然性は0.5未満なので、犬データベースDB1と羊データベースDB3に格納される。また例えば、学習器Lに学習させていないライオンは、犬と猫に見た目が似ている(犬と猫の中間的な特徴を有する)ので、犬の蓋然性と猫の蓋然性がそれなりに高くなる。例えば、ライオンが撮影された被検索画像I5の犬の蓋然性が0.5であり、猫の蓋然性が0.5であり、他の蓋然性が0.5未満だったとすると、当該被検索画像I5は、犬データベースDB1と猫データベースDB2に格納される。
また例えば、格納部102は、被検索画像全体の特徴ベクトル及びスコアをデータベースDBに格納してもよいし、被検索画像に含まれるバウンディングボックスの特徴ベクトル及びスコアをデータベースDBに格納してもよい。学習器Lは、バウンディングボックスの特徴ベクトル及びスコアをデータベースDBに格納する場合には、バウンディングボックス内の画素値に基づいて取得された特徴ベクトル及びスコアを格納する。即ち、格納部102は、バウンディングボックス外の画素値は参照せずに取得された特徴ベクトル及びスコアを格納してもよい。
なお、入力画像と同様に、被検索画像に含まれるオブジェクトが1つだったとしても、物体検出アルゴリズムによっては、バウンディングボックスが複数検出されることがある。全てのバウンディングボックスの特徴ベクトル及びスコアがデータベースDBに格納されてもよいが、バウンディングボックス内には、1つのオブジェクトしか撮影されていないので、格納部102は、多数のバウンディングボックスの各々の特徴ベクトル及びスコアをデータベースDBに格納する必要性は低い。
そこで、格納部102は、互いに重複する複数のバウンディングボックスが被検索画像に含まれる場合には、分類結果の蓋然性が最も高いバウンディングボックスの特徴ベクトル及びスコアの少なくとも一方を格納してもよい。バウンディングボックスごとに、上記説明した方法に基づいて特徴ベクトル及びスコアが計算され、スコアに含まれる蓋然性が最も高いバウンディングボックスが残り、他のバウンディングボックスが消去される。別の言い方をすれば、互いに重複する複数のバウンディングボックスが、蓋然性が最も高いバウンディングボックスに統合される。格納部102は、蓋然性が最も高いバウンディングボックスの特徴ベクトル及びスコアをデータベースDBに格納してもよい。
なお、格納部102は、閾値を利用するのではなく、被検索画像のスコアが示す蓋然性が最も高い分類のデータベースDBに、被検索画像の特徴ベクトル及びスコアを格納してもよい。また例えば、格納部102は、被検索画像のスコアが示す蓋然性が高い順に所定個数の分類を特定し、これら所定個数の分類の各々のデータベースDBに、被検索画像の特徴ベクトル及びスコアを格納してもよい。
また例えば、被検索画像の分類が人によって行われ、格納部102は、人が決定した分類に基づいて、被検索画像のファイル名、特徴ベクトル、ボックス情報、及びスコアを格納するデータベースDBを決定してもよい。学習器Lを学習させる教師データに、被検索画像の分類(人が指定した正解としての分類)が示されている場合には、格納部102は、教師データに基づいて、被検索画像のファイル名、特徴ベクトル、ボックス情報、及びスコアを格納してもよい。
なお、被検索画像は、検索システム1側で予め用意しておいた画像であってもよいし、検索システム1がインターネット上から取得した画像であってもよいが、類似画像検索が実行された場合に、入力画像が新たな被検索画像となってもよい。この場合、格納部102は、類似画像検索の終了前後の任意のタイミングで、入力画像にファイル名を付与し、学習器Lから取得した特徴ベクトル、ボックス情報、及びスコアとともに、新たな被検索画像として、当該スコアに応じたデータベースDBに格納してもよい。
[1−3−4.入力部]
入力部103は、制御部11を主として実現される。入力部103は、学習器Lに対し、入力画像を入力する。入力画像は、ユーザ端末20からサーバ10に送信されるので、サーバ10がユーザ端末20から入力画像を受信すると、入力部103は、当該入力画像を学習器Lに入力する。本実施形態では、学習器Lの一例として、畳み込みニューラルネットワークを説明するので、入力部103は、学習器Lの入力層に対し、入力画像を入力することになる。
[1−3−5.検索部]
検索部104は、制御部11を主として実現される。検索部104は、分類ごとに用意されたデータベースDBのうち、学習器Lから出力された入力情報の分類結果に応じたデータベースDBに基づいて、特徴ベクトル及びスコアの少なくとも一方が入力情報と類似する被検索情報を検索する。本実施形態では、類似画像検索が実行されるので、検索部104は、特徴ベクトル及びスコアの少なくとも一方が入力画像と類似する被検索画像を検索することになる。
本実施形態では、検索部104が、特徴ベクトルが入力画像と類似する被検索画像を検索する場合を説明するが、検索部104は、特徴ベクトル及びスコアの両方が入力画像と類似する被検索画像を検索してもよいし、スコアだけが入力画像と類似する被検索画像を検索してもよい。即ち、類似画像検索のインデックスとなるのは、特徴ベクトル及びスコアの両方であってもよいし、特徴ベクトル又はスコアの何れか一方だけであってもよい。
特徴ベクトルが類似するとは、特徴ベクトルの差異(ずれ)が小さいことを意味する。ここでの差異とは、ベクトル間の距離を意味してもよいし、ベクトル同士のなす角度を意味してもよい。特徴ベクトルの差異が小さいほど入力画像と被検索画像が類似し、特徴ベクトルの差異が大きいほど入力画像と被検索画像が非類似となる。例えば、距離が短いほど入力画像と被検索画像が類似し、距離が長いほど入力画像と被検索画像が非類似となる。また例えば、角度が小さいほど入力画像と被検索画像が類似し、角度が大きいほど入力画像と被検索画像が非類似となる。
スコアが類似するとは、スコアの差異(ずれ)が小さいことを意味する。ここでの差異は、数値の差を意味する。スコアの差異が小さいほど入力画像と被検索画像が類似し、スコアの差異が大きいほど入力画像と被検索画像が非類似となる。例えば、スコアが示す数値の差が小さいほど入力画像と被検索画像が類似し、スコアが示す数値の差が大きいほど入力画像と被検索画像が非類似となる。
入力画像のスコアに応じたデータベースDBとは、入力画像のスコアに基づいて定まるデータベースDBである。別の言い方をすれば、入力画像のスコアに応じたデータベースDBは、入力画像が属する分類のデータベースDBである。検索部104は、入力画像のスコアに応じたデータベースDBを検索対象とし、他のデータベースDBは検索対象とはしない。検索対象とは、検索のためにデータを参照することであり、データベースDB内のインデックス(ここでは、特徴ベクトル)を参照することである。
本実施形態では、各分類の蓋然性がスコアに含まれるので、検索部104は、学習器Lから出力された入力画像の蓋然性が閾値以上である分類のデータベースDBに基づいて検索を行う。
閾値は、予め定められた値であればよく、データ記憶部100に記憶されているものとする。閾値は、格納部102で説明した閾値と同じ値であってもよいし、異なる値であっていてもよい。閾値は、全分類で共通の値としてもよいし、分類に応じた値が設定されてもよい。閾値は、任意の値であればよいが、図4のアルパカのように、学習器Lに学習させていないオブジェクトが撮影された入力画像が学習器Lに入力されることもあるので、必要以上に高い数値は設定しない方が好ましい。例えば、閾値は、蓋然性の上限値(ここでは、1.0)の30%〜70%程度に設定されてもよく、本実施形態では、50%(ここでは、0.5)とする。
検索部104は、入力画像のスコアが示す各分類の蓋然性と閾値とを比較し、閾値以上の蓋然性を有する分類を特定する。蓋然性が閾値以上の分類が複数存在していれば、格納部102は、これら複数の分類を特定する。検索部104は、特定した分類のデータベースDBを、スコアに応じたデータベースDBとして特定する。
検索部104は、スコアに応じたデータベースDBの全てのレコードを検索対象としてもよいし、一部のレコードだけを検索対象としてもよい。一部のレコードだけが検索対象となる場合には、検索部104は、検索対象となるレコードをランダムに選出してもよいし、レコード番号が若い順に所定個数のレコードを参照してもよい。他にも例えば、検索部104は、特徴ベクトルが入力画像と類似する被検索画像が所定個数見つかった時点で、類似画像検索を終了し、他のレコードについては検索をしないようにしてもよい。検索自体は、種々の手法を利用可能であり、例えば、最近傍探索問題の1つであるk近傍法(kは自然数)を利用してもよい。
例えば、検索部104は、入力画像のスコアに応じたデータベースDBに格納された被検索画像の特徴ベクトルと、入力画像の特徴ベクトルと、の距離に基づいて検索を行う。距離の算出方法自体は、種々の手法を利用可能であり、例えば、ユークリッド距離を利用してもよい。検索部104は、入力画像のスコアに応じたデータベースDBに特徴ベクトルが格納された被検索画像ごとに、当該被検索画像の特徴ベクトルと、入力画像の特徴ベクトルと、の距離を計算する。
例えば、検索部104は、距離が小さい順に所定個数の被検索画像を、入力画像と類似する被検索画像として取得する。所定個数は、任意の個数であってよく、k近傍法が利用される場合には、kの値である。他にも例えば、検索部104は、距離が最も小さい被検索画像を、入力画像と類似する被検索画像としてとして取得してもよいし、検索部104は、距離が閾値未満となる被検索画像の全てを、入力画像と類似する被検索画像として取得してもよい。
なお、入力画像のスコアに応じたデータベースDBが複数ある場合、検索部104は、これら複数のデータベースDBの各々から、入力画像と類似する被検索画像を検索してもよいが、本実施形態では、検索部104は、入力画像のスコアに応じたデータベースDBが複数ある場合に、当該複数のデータベースDBの各々に基づいて、特徴ベクトル及びスコアの少なくとも一方が入力画像と類似する被検索画像の候補を検索し、当該候補の中から絞り込みを行う。例えば、検索部104は、データベースDBごとに、上記説明した手順と同様にして、入力画像と類似する被検索画像を候補として特定する。その後、検索部104は、候補の中から絞り込みを行う。
例えば、検索部104は、複数のデータベースDBの各々から検索された候補の距離を参照し、距離が小さい順に所定個数の被検索画像を、入力画像と類似する被検索画像として絞り込んでもよい。所定個数の意味は先述した通りである。また例えば、検索部104は、距離が最も小さい候補を、入力画像と類似する被検索画像としてとして取得してもよい。また例えば、検索部104は、距離が閾値未満となる候補の全てを、入力画像と類似する被検索画像として取得してもよい。ただし、この場合の閾値は、候補を取得する場合の閾値よりも小さくし、条件を厳しいものとする。
また、入力画像及び被検索画像の各々は、1つのオブジェクトだけを含むこともあるが、入力画像及び被検索画像の各々が、複数のオブジェクトを含む場合には、検索部104は、一部のオブジェクトの特徴ベクトル及びスコアの少なくとも一方が入力画像と類似する被検索画像を検索してもよい。即ち、画像全体として類似する画像が検索されてもよいが、本実施形態では、画像の一部同士が類似する画像が検索されるものとする。
[1−3−6.表示制御部]
表示制御部105は、制御部11を主として実現される。表示制御部105は、検索部104により検索された被検索画像に関連付けて、当該被検索画像のボックス情報を表示させる。本実施形態では、サーバ10によって表示制御部105が実現されるので、例えば、表示制御部105は、検索部104により検索された被検索画像の画像データをユーザ端末20に送信することによって、被検索画像をユーザ端末20の表示部25に表示させる。
ボックス情報を表示させるとは、ボックス情報が示す位置を識別可能に表示させることである。本実施形態では、ボックス情報は、バウンディングボックスの位置と形状を示すので、バウンディングボックスの位置と形状を識別可能に表示させることが、ボックス情報を表示させることに相当する。また、サーバ10によって表示制御部105が実現されるので、例えば、表示制御部105は、ボックス情報をユーザ端末20に送信することによって、ボックス情報をユーザ端末20の表示部25に表示させる。なお、画像に関連付けてボックス情報を表示させるとは、画像とともにボックス情報を表示させることである。
また例えば、表示制御部105は、入力画像に関連付けて、ボックス画像の位置情報を表示させてもよい。本実施形態では、サーバ10によって表示制御部105が実現されるので、例えば、表示制御部105は、ボックス情報をユーザ端末20に送信することによって、ボックス情報をユーザ端末20の表示部25に表示させる。
図7は、ユーザ端末20において類似画像検索の結果が表示される様子を示す図である。図7に示すように、ユーザ端末20においては、ユーザが入力画像を選択するための画像選択画面G1が表示部25に表示される。ユーザが入力フォームF10から入力画像を選択し、ボタンB11を選択すると、入力画像がサーバ10にアップロードされ、検索部104による類似画像検索が実行される。
その後、表示制御部105は、入力画像のボックス情報、被検索画像の画像データ、及び被検索画像のボックス情報をユーザ端末20に送信する。ユーザ端末20においては、これらを受信すると、類似画像検索の結果を表示するための検索結果画面G2が表示部25に表示される。検索結果画面G2の表示領域A20には、ユーザが選択した入力画像の上に、バウンディングボックスB22Aが表示され、表示領域A21には、被検索画像ごとに、当該被検索画像の上に、バウンディングボックスB22B,B22Cが表示される。
[1−4.本実施形態において実行される処理]
図8は、検索システム1において実行される処理の一例を示すフロー図である。図8に示す処理は、制御部11が記憶部12に記憶されたプログラムに従って動作し、制御部21が記憶部22に記憶されたプログラムに従って動作することによって実行される。下記に説明する処理は、図2に示す機能ブロックにより実行される処理の一例である。
図8に示すように、まず、ユーザ端末20においては、制御部21は、サーバ10に対し、画像選択画面G1において選択された入力画像を送信する(S100)。S100においては、制御部21は、記憶部22又は図示しないクラウドサーバ等に記憶された画像の中から選択された画像を入力画像として送信してもよいし、撮影部26により撮影された画像を入力画像として送信してもよい。
サーバ10においては、入力画像を受信すると、制御部11は、学習器Lに対し、当該入力画像を入力する(S101)。学習器Lに入力画像が入力されると、学習器Lは、入力画像の特徴ベクトルを計算し、当該特徴ベクトルに基づいて、スコアとボックス情報を出力する。入力画像から複数のバウンディングボックスが検出された場合(即ち、入力画像に複数のオブジェクトが撮影されていた場合)には、学習器Lは、バウンディングボックスごとに、特徴ベクトル、ボックス情報、及びスコアのデータセットを出力する。
制御部11は、学習器Lから、入力画像の特徴ベクトル、ボックス情報、及びスコアを取得する(S102)。S102においては、制御部11は、入力画像からバウンディングボックスを検出し、バウンディングボックス内の画素に基づいて、特徴ベクトルを取得する。そして、制御部11は、検出したバウンディングボックスの位置及び形状を示すボックス情報を取得する。更に、制御部11は、バウンディングボックスの特徴ベクトルに基づいて、当該バウンディングボックスのスコアを取得する。
なお、複数のバウンディングボックスが互いに重なっている場合には、制御部11は、これら複数のバウンディングボックスを、最もスコアの高いバウンディングボックスにまとめたうえで、S103〜S106の処理を実行してもよい。バウンディングボックスをまとめる処理自体は、公知の種々の処理を適用可能であり、例えば、Non−Maximum Suppressionのアルゴリズムを適用可能である。制御部11は、複数のバウンディングボックスのうち、最もスコアの高いバウンディングボックスのスコアに基づいて、以降のS103〜S106の処理を実行することになる。一方、複数のバウンディングボックスが互いに重なっていない場合には、バウンディングボックスごとに、S102〜S106の処理が実行されてよい。
制御部11は、入力画像のスコアが示す蓋然性が閾値以上の分類を特定する(S103)。なお、蓋然性が閾値以上の分類が存在しない場合には、S103〜S106の処理が実行されず、「類似する画像が存在しません」といったメッセージがユーザ端末20に表示されるようにしてもよい。
制御部11は、記憶部12に記憶されたデータベース群のうち、S103で特定した分類のデータベースDBを参照する(S104)。S103において複数の分類が特定された場合には、S104においては、制御部11は、これら複数の分類の各々のデータベースDBを参照する。
制御部11は、S104で参照したデータベースDBに格納された被検索画像の特徴ベクトルと、S102で取得した入力画像の特徴ベクトルと、の距離を計算する(S105)。S104において複数の分類の各々のデータベースDBが特定された場合には、S105においては、制御部11は、これら複数のデータベースDBの各々に格納された被検索画像の特徴ベクトルと、入力画像の特徴ベクトルと、の距離を計算する。
制御部11は、S106で計算した距離に基づいて、入力画像と類似する被検索画像を特定する(S106)。S106においては、制御部11は、S104で特定したデータベースDBに特徴ベクトルが格納された被検索画像(即ち、S105で距離を計算した被検索画像)の中から、距離が近い順に所定個数の被検索画像を特定する。
なお、S105において、複数の分類の各々に格納された被検索画像の特徴ベクトルと、入力画像の特徴ベクトルと、の距離が計算された場合には、S106においては、制御部11は、データベースDBごとに、距離が近い順に所定個数の被検索画像を特定する。その後、制御部11は、当該特定した被検索画像の中から、距離が近い順に所定個数の被検索画像を絞り込むようにしてもよい。
制御部11は、S104で特定したデータベースDBに基づいて、S106で特定した被検索画像の画像データとボックス情報とを取得する(S107)。S107においては、制御部11は、S106で特定した被検索画像のレコードに参照されたファイル名に基づいて、当該被検索画像の画像データを取得し、当該レコードに格納されたボックス情報を取得する。
制御部11は、ユーザ端末20に対し、S102で取得した入力画像のボックス情報と、S107で取得した被検索画像の画像データ及びボックス情報と、を送信する(S108)。
制御部11は、入力画像のスコアが示す蓋然性が閾値以上のデータベースDBに対し、入力画像の特徴ベクトル、ボックス情報、及びスコアを、被検索画像として格納する(S109)。S109においては、制御部11は、入力画像を新たな被検索画像として追加することになる。
ユーザ端末20においては、入力画像のボックス情報等を受信すると、制御部21は、検索結果画面G2を表示部25に表示させ(S110)、本処理は終了する。S110においては、制御部21は、表示領域A20において入力画像とバウンディングボックスB22Aを表示させ、表示領域A21において被検索画像とバウンディングボックスB22B,B22Cを表示させる。
以上説明した検索システム1によれば、分類ごとにデータベースDBが分割されており、入力画像のスコアに応じたデータベースDBに基づいて検索が実行され、検索対象となるデータを少なくすることで検索を高速化することができる。例えば、m個のデータベースDBに分割することで、スコアの蓋然性が閾値以上である分類が1つの場合には、全ての被検索画像を1個のデータベースで管理する場合に比べて、検索対象となるデータの量を「1/m」にすることができ、類似画像検索をm倍高速化することができる。また、検索対象となるデータ量を抑えることにより、サーバ10の処理負荷を軽減することもできる。
また、被検索画像の特徴ベクトルと、入力画像の特徴ベクトルと、の距離に基づいて検索が実行され、距離という正確な指標を利用することで、検索の精度を向上させることができる。また、簡単に計算できる距離を利用することで、類似画像検索をより高速化することができ、サーバ10の処理負荷を軽減することもできる。
また、学習器Lから出力された被検索画像のスコアに応じたデータベースDBに、被検索画像の特徴ベクトル等が格納されることで、被検索画像を格納すべきデータベースDBを指定する手間を省くことができる。また、入力画像の類似検索が実行された後すぐに、当該入力画像を被検索画像として利用することもできるので、被検索画像の量を増やすことができる。その結果、より類似する被検索画像が検索される蓋然性が上がり、検索の精度を向上させることができる。
また、学習器Lから出力された被検索画像の蓋然性が閾値以上である分類のデータベースDBに、被検索画像の特徴ベクトル等が格納されることで、より適したデータベースDBに、被検索画像の特徴ベクトル等が格納されるので、検索をより高速化し、かつ、検索の精度を向上することができる。
また、学習器Lから出力された入力画像の蓋然性が閾値以上である分類のデータベースDBに基づいて検索が実行されることで、より適したデータベースDBを検索対象とすることができ、検索をより高速化し、サーバ10の処理負荷を軽減することもできる。更に、検索の精度を向上することができる。
また、入力画像のスコアに応じたデータベースDBが複数ある場合に、当該複数のデータベースDBの各々に基づいて入力画像と類似する被検索画像の候補を検索し、その中から絞込が行われることで、検索の精度を向上することができる。
また、検索システム1を類似画像検索に適用することにより、類似画像検索を高速化することができる。
また、互いに重複する複数のバウンディングボックスが入力画像に含まれる場合に、スコアが示す蓋然性が最も高いバウンディングボックスに統合し、当該バウンディングボックスの特徴ベクトルに基づいて分類結果を出力することにより、類似画像検索の精度を向上させることができる。別の言い方をすれば、スコアが示す蓋然性が比較的低いバウンディングボックスに基づいて類似画像が検索されることを防止することができる。また、多数のバウンディングボックスが検出された場合に、バウンディングボックスごとに類似画像を検索すると検索処理に時間がかかってしまうが、バウンディングボックスを統合することで、類似画像検索をより高速化し、サーバ20の処理負荷を効果的に軽減することができる。
また、互いに重複する複数のバウンディングボックスが被検索画像に含まれる場合に、スコアの蓋然性が最も高いバウンディングボックスの特徴ベクトル及びスコアをデータベースDBに格納することにより、類似画像検索の精度を向上させることができる。別の言い方をすれば、スコアが示す蓋然性が比較的低いバウンディングボックスの特徴ベクトル及び当該スコアに基づいて類似画像が検索されることを防止することができる。また、多数のバウンディングボックスの特徴ベクトル及びスコアがデータベースDBに格納される場合には、データベースDBのメモリ消費が多くなってしまうが、バウンディングボックスを統合したうえで特徴ベクトル及びスコアをデータベースDBに格納することにより、データベースDBのメモリ消費量を少なくすることができる。更に、類似画像検索の際に参照される情報を少なくすることで、類似画像検索をより高速化し、サーバ20の処理負荷を効果的に軽減することができる。
また、検索結果画面G2において、被検索画像に関連付けてバウンディングボックスを表示させることで、被検索画像のどのオブジェクトが類似するのかを把握しやすくなる。
また、検索結果画面G2において、入力画像に関連付けてバウンディングボックスを表示させることで、入力画像のどのオブジェクトに対して類似画像検索が実行されたのかを把握しやすくなる。
また、入力画像と被検索画像の各々に複数のオブジェクトが含まれていた場合であっても、画像の全体ではなく、画像内の一部のオブジェクト同士が類似する画像を検索することができる。
[1−5.実施形態1の変形例]
なお、実施形態1に係る発明は、以上に説明した実施の形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
図9は、実施形態1の変形例における機能ブロック図である。図9に示すように、実施形態1の変形例では、実施形態1で説明した機能に加え、類似度取得部106が実現される。類似度取得部106は、制御部11を主として実現される。
類似度取得部106は、入力画像の特徴ベクトル及びスコアの少なくとも一方と、検索部104により検索された被検索画像の特徴ベクトル及びスコアの少なくとも一方と、に基づく類似度を取得する。ここでは、特徴ベクトルに基づいて類似度が取得される場合を説明するが、類似度は、特徴ベクトル及びスコアの両方に基づいて取得されてもよいし、スコアだけに基づいて取得されてもよい。
類似度は、類似の程度を示す値である。類似度が高いほど類似していることを示し、類似度が低いほど類似していないことを示す。例えば、類似度は、特徴ベクトルの差異が小さいほど高くなり、特徴ベクトルの差異が大きいほど低くなる。また例えば、類似度は、スコアの差異が小さいほど高くなり、スコアの差異が大きいほど低くなる。
類似度の計算式は、予めデータ記憶部100に記憶させておけばよく、類似度取得部106は、入力画像の特徴ベクトル、被検索画像の特徴ベクトル、及び類似度の計算式に基づいて、類似度を取得する。例えば、類似度取得部106は、これら特徴ベクトルの距離を計算式に代入して類似度を取得してもよいし、当該距離をそのまま類似度として取得してもよい。
表示制御部105は、検索部104により検索された被検索画像に関連付けて、類似度を表示させる。ここでは、サーバ10によって表示制御部105が実現されるので、例えば、表示制御部105は、類似度をユーザ端末20に送信することによって、類似度をユーザ端末20の表示部25に表示させる。なお、被検索画像に関連付けて類似度を表示させるとは、被検索画像とともに類似度を表示させることである。
図10は、類似度が表示される様子を示す図である。図10に示すように、検索結果画面G2の表示領域A21において、被検索画像ごとに、当該被検索画像の類似度D23A,D23Bが表示される。なお、図10では、類似度D23A,D23Bが被検索画像の上に表示される場合を示しているが、類似度D23A,D23Bは、被検索画像の内部に表示されてもよいし、被検索画像の下、左、又は右に表示されてもよい。
以上説明した変形例によれば、検索結果画面G2に入力画像と被検索画像の類似度が表示され、入力画像と被検索画像とがどの程度類似しているのかを把握しやすくなる。
例えば、実施形態1では、検索システム1を類似画像検索に利用する場合を説明したが、検索システム1は、他の任意の類似情報検索が実行されてよい。
例えば、検索システム1を類似動画検索に利用する場合には、学習器Lは、入力された動画の特徴ベクトルを計算し、動画の分類結果を出力してもよい。動画の分類は、動画のジャンルであり、例えば、コメディ、アクション、又はホラーといった分類であってよい。この場合、データ記憶部100は、動画の分類ごとに、被検索動画の特徴ベクトル及びスコアの少なくとも一方が格納されたデータベースDBを記憶する。検索部104は、学習器Lから出力された入力動画のスコアに応じたデータベースDBに基づいて、特徴ベクトル及びスコアの少なくとも一方が入力動画と類似する被検索動画を検索する。
また例えば、検索システム1を、類似記事検索、類似文書検索、又は類似テキスト検索に利用する場合には、学習器Lは、入力された文字列の特徴ベクトルを計算し、文字列の分類結果を出力してもよい。文字列の分類は、内容のジャンルであり、例えば、経済、スポーツ、芸能、学術論文、又は口コミといった分類であってよい。この場合、データ記憶部100は、分類ごとに、被検索記事、被検索文書、又は被検索テキストの特徴ベクトル及びスコアの少なくとも一方が格納されたデータベースDBを記憶する。検索部104は、学習器Lから出力された入力記事、入力文書、又は入力テキストのスコアに応じたデータベースDBに基づいて、特徴ベクトル及びスコアの少なくとも一方が入力記事、入力文書、又は入力テキストと類似する被検索記事、被検索文書、又は被検索テキストを検索する。
また例えば、検索システム1を、類似音声検索又は類似音楽検索に利用する場合には、学習器Lは、入力された音声又は音楽の特徴ベクトルを計算し、音声又は音楽の分類結果を出力してもよい。文字列の分類は、音声又は音楽のジャンルであり、例えば、ロック、クラシック、ポップ、ニュース番組、又は教育番組といった分類であってよい。この場合、データ記憶部100は、分類ごとに、被検索音声又は被検索音楽の特徴ベクトル及びスコアの少なくとも一方が格納されたデータベースDBを記憶する。検索部104は、学習器Lから出力された入力音声又は入力音楽のスコアに応じたデータベースDBに基づいて、特徴ベクトル及びスコアの少なくとも一方が入力音声又は入力音楽と類似する被検索音声又は被検索音楽を検索する。
また例えば、検索システム1を、類似ウェブサイト検索に利用する場合には、類似画像検索、類似動画検索、類似記事検索、類似文書検索、及び類似テキスト検索の少なくとも1つを利用して、入力ウェブサイトと類似する被検索ウェブサイトが検索されるようにすればよい。
[2.実施形態2]
次に、検索システム1の別実施形態を説明する。実施形態1では、ボックス情報は、検索結果画面G2においてバウンディングボックスを表示させるために用いられたが、ボックス情報は、類似画像検索で用いられてもよい。
図11は、実施形態2の処理の概要図である。図11に示すように、特徴ベクトルやスコアだけでなく、ボックス情報も類似する被検索画像を検索することで、バウンディングボックスの位置や形状が入力画像と似た被検索画像を検索してもよい。図11の例であれば、特徴ベクトルが入力画像I2と類似する被検索画像I6〜I8が検索されたとする。
そして、被検索画像I6〜I8の各々のバウンディングボックスB6〜B8のうち、入力画像I2のバウンディングボックスB2の位置と形状が最も類似するのは、被検索画像I7となる。この場合、被検索画像I7が検索結果画面G2に表示されることになる。このようにすることで、例えば、同じアルパカの画像であったとしても、その写り方まで類似する画像を検索可能となる。図11の例であれば、画像内でのアルパカの向きや位置が類似する画像を検索可能となる。
以上のように、実施形態2の検索システム1は、複数の観点で類似する被検索画像を検索することで、検索の精度向上することができる。以降、実施形態2の検索システム1の詳細を説明する。なお、実施形態2では、実施形態1と同様の内容については説明を省略する。
[2−1.検索システムにおいて実現される機能]
実施形態2の機能ブロックは、実施形態1と同様である。ただし、各機能の詳細は、実施形態1と異なる部分を含む。
[2−1−1.データ記憶部]
実施形態2のデータ記憶部100は、実施形態1で説明したデータ記憶部100と同様であってもよい。例えば、データ記憶部100は、学習器Lと、データベース群と、を記憶する。なお、実施形態2では、分類ごとにデータベースDBを用意する構成(分類に応じてデータベースDBを分割する構成)は採用しなくてもよく、複数の分類で1つのデータベースDBとしてもよい。このため、実施形態2では、複数の分類の各々の被検索画像の特徴ベクトル等が、1つのデータベースDBに格納されていてもよい。この場合、検索部104が、入力画像の分類に応じたデータベースDBを参照する処理は省略される。
実施形態2の学習器Lは、実施形態1で説明した学習器Lと同様であってもよい。例えば、学習器Lは、入力された情報の特徴量を計算し、当該特徴量に基づいて、第1の観点における当該情報の第1の分析結果と、第2の観点における当該情報の第2の分析結果と、を出力する。実施形態2では、実施形態1と同様、類似画像検索が実行される場合を説明するので、学習器Lは、入力された画像の特徴量を計算し、第1の観点で当該画像の特徴を分析した第1の分析結果と、第2の観点で当該画像の特徴を分析した第2の分析結果と、を出力する。
特徴量の意味は、実施形態1で説明した通りであり、実施形態2でも、学習器Lは、特徴量として、特徴ベクトルを計算する場合を一例として説明する。
観点とは、情報の分析の仕方であり、見地ということもできる。学習器Lは、中間層、第1の出力層、及び第2の出力層を含む。中間層は、第1の出力層と第2の出力層とに分岐する前に配置され、特徴ベクトル」を計算する。別の言い方をすれば、中間層は、第1の出力層と第2の出力層の各々が計算をする前に、特徴ベクトルを計算し、第1の出力層と第2の出力層の各々に対し、当該計算した特徴ベクトルを送る。
第1の出力層は、分岐前の中間層により計算された特徴ベクトルに基づいて、第1の分析結果を出力する。第1の出力層は、第1の計算式を含み、特徴ベクトルを第1の計算式に代入することによって、第1の分析結果が計算される。第2出力層は、分岐前の中間層により計算された特徴ベクトルに基づいて、第2の分析結果を出力する。例えば、第2の出力層は、第2の計算式を含み、特徴ベクトルを第2の計算式に代入することによって、第2の分析結果が計算される。第1の計算式は、第1の観点での学習結果が反映された計算式であり、第2の計算式は、第2の観点での学習結果が反映された計算式である。
また、実施形態1と同様、学習器Lは、入力画像全体から特徴ベクトルを計算し、第1の分析結果と第2の分析結果とを出力してもよいし、入力画像に含まれるバウンディングボックスの特徴ベクトルを計算し、当該バウンディングボックスの第1の分析結果と第2の分析結果とを出力してもよい。更に、複数のバウンディングボックスが互いに重複している場合の処理も実施形態1と同様であってよく、学習器Lは、互いに重複する複数のバウンディングボックスが入力画像に含まれる場合には、第1の分析結果と第2の分析結果との少なくとも一方の蓋然性が最も高いバウンディングボックスの特徴ベクトルに基づいて、当該領域の第1の分析結果と第2の分析結果とを出力してもよい。
また、本実施形態では、実施形態1と同様、分析の一例として、情報の分類と、バウンディングボックスの位置(オブジェクトの位置)の抽出と、を説明するが、分析はこれらに限られず、種々の分析を適用可能である。例えば、情報の特徴量を抽出することが分析に相当してもよい。
例えば、第1の分析結果は、入力された情報の分類結果であってもよい。本実施形態では、類似画像検索が実行されるので、第1の分析結果は、入力画像のスコアである場合を説明する。このため、実施形態2でスコアと記載した箇所は、第1の分析結果と読み替えることができる。
実施形態2の学習器Lは、実施形態1と同様、分類結果として、分類ごとの蓋然性を出力する。なお、学習器Lが、分類結果として、蓋然性以外の情報を出力してもよい点は、実施形態1で説明した通りである。
また例えば、第2の分析結果は、オブジェクトの位置に関するボックス情報であってもよい。このため、実施形態2でボックス情報と記載した箇所は、第2の分析結果と読み替えることができる。実施形態2の学習器Lは、実施形態1と同様、入力された画像に含まれるオブジェクトのスコアを第1の分析結果として出力し、当該オブジェクトの位置に関するボックス情報を第2の分析結果として出力することになる。
実施形態2では、実施形態1と同様、入力画像及び被検索画像の各々は、1つのオブジェクトだけを含むこともあるが、入力画像及び被検索画像の各々が、複数のオブジェクトを含むこともある。学習器Lは、入力された画像に複数のオブジェクトが含まれる場合に、オブジェクトごとに、特徴ベクトルを計算してスコアとボックス情報を出力してもよい点は、実施形態1と同様である。
[2−1−2.学習部]
実施形態2の学習部101は、実施形態1で説明した学習部101と同様であってもよい。例えば、教師データには、情報と、第1の分析結果及び第2の分析結果の各々の正解と、の関係が定義されており、学習部101は、教師データに基づいて、学習器Lを学習させる。例えば、学習部101は、教師データが示す第1の分析結果の正解を得るように、第1の出力層の第1の計算式の係数を調整し、教師データが示す第2の分析結果の正解を得るように、第2の出力層の第2の計算式の係数を調整する。
[2−1−3.格納部]
実施形態2の格納部102は、実施形態1で説明した格納部102と同様であってもよく、学習器Lに入力済みの被検索画像の特徴ベクトルをデータベースDBに格納する。なお、先述したように、実施形態2では、データベースDBは分類ごとに分割されていなくてもよいので、この場合、特徴ベクトルを格納するデータベースDBを決定する処理は省略される。
例えば、格納部102は、実施形態1と同様に、分類ごとに用意されたデータベースDBのうち、被検索画像の分類に応じたデータベースDBに、当該被検索情報の特徴ベクトルを格納してもよい。また例えば、格納部102は、実施形態1と同様に、学習器Lから出力された被検索画像のスコアに応じたデータベースDBに、当該被検索画像を格納してもよい。また例えば、格納部102は、実施形態1と同様に、学習器Lから出力された被検索画像の蓋然性が閾値以上である分類のデータベースDBに、被探索画像を格納してもよい。これらの処理の詳細は、実施形態1で説明した通りである。
また例えば、格納部102は、実施形態1と同様に、互いに重複する複数のバウンディングボックスが被検索画像に含まれる場合には、第1の分析結果と第2の分析結果との少なくとも一方の蓋然性が最も高いバウンディングボックスの特徴量を格納してもよい。バウンディングボックスごとに、上記説明した方法に基づいて特徴ベクトル及びスコアが計算され、スコアに含まれる蓋然性が最も高いバウンディングボックスが残り、他のバウンディングボックスが消去される。別の言い方をすれば、互いに重複する複数のバウンディングボックスが、蓋然性が最も高いバウンディングボックスに統合される。格納部102は、蓋然性が最も高いバウンディングボックスの特徴ベクトルをデータベースDBに格納してもよい。
[2−1−4.入力部]
実施形態2の入力部103は、実施形態1で説明したデータ記憶部100と同様であってよく、学習器Lに対し、入力画像を入力する。
[2−1−5.検索部]
実施形態2の検索部104は、データベースDBに基づいて、特徴ベクトルが入力情報と類似する被検索情報を検索する。実施形態2では、類似画像検索が実行されるので、検索部104は、特徴ベクトルが入力画像と類似する被検索画像を検索することになる。
実施形態1では、特徴ベクトルとスコアの少なくとも一方に基づいて類似画像検索が実行される場合を説明したが、実施形態2では、特徴ベクトルに基づいて類似画像検索が実行されるようにすればよく、他の情報を利用してもよいし、特に利用しなくてもよい。他の情報を利用せずに特徴ベクトルだけを利用して類似画像検索が実行されたとしても、特徴ベクトルは、第1の観点と第2の観点の両方の特徴を含むので、結果的に、スコアとボックス情報も類似する被検索画像が検索されることになる。
例えば、検索部104は、スコアが入力画像と類似する被検索画像を検索し、当該検索した被検索画像の中から、特徴ベクトルが入力画像と類似する被検索画像を検索してもよい。即ち、特徴ベクトルだけでなく、スコアもインデックスとして利用してもよい。なお、スコアが類似することの意味は、実施形態1で説明した通りである。
例えば、検索部104は、データベースDBを参照し、被検索画像のスコアと、入力画像のスコアと、の差に基づいて、スコアが入力画像と類似する被検索画像を検索する。例えば、検索部104は、スコアの差が小さい順に所定個数の被検索画像を、検索結果として取得する。また例えば、検索部104は、スコアの差が閾値未満となる被検索画像を、検索結果として取得してもよい。
また例えば、検索部104は、スコアが入力情報と類似する被検索画像の中から、ボックス情報が入力画像と類似する被検索画像を検索し、当該検索した被検索画像の中から、特徴ベクトルが入力画像と類似する被検索画像を検索してもよい。即ち、特徴ベクトルとスコアだけでなく、ボックス情報もインデックスとして利用してもよい。
ボックス情報が類似するとは、ボックス情報の差異(ずれ)が小さいことを意味する。ここでの差異は、数値の差を意味する。ボックス情報の差異が小さいほど入力画像と被検索画像が類似し、ボックス情報の差異が大きいほど入力画像と被検索画像が非類似となる。例えば、ボックス情報が示す数値の差が小さいほど入力画像と被検索画像が類似し、ボックス情報が示す数値の差が大きいほど入力画像と被検索画像が非類似となる。
なお、本実施形態では、学習器Lが、分析結果として、スコアとボックス情報を出力する場合を説明するが、他の情報が分析結果として出力される場合には、当該情報の差異が小さいことが、分析結果が類似することを意味する。本実施形態でスコア又はボックス情報と記載した処理を、分析結果と読み替えて、検索部104は、分析結果が入力画像と類似する被検索画像を検索し、その中から、特徴ベクトルが入力画像と類似する被検索画像を検索すればよい。
また例えば、検索部104は、分類ごとに用意されたデータベースDBのうち、入力画像のスコアに応じたデータベースDBに基づいて、特徴ベクトルが入力画像と類似する被検索画像を検索してもよい。また例えば、検索部104は、データベースDBに格納された被検索画像の特徴ベクトルと、入力画像の特徴ベクトルと、の距離に基づいて検索を行ってもよい。これらの処理は、実施形態1で説明した通りである。
また例えば、検索部104は、学習器Lから出力された入力画像の蓋然性が閾値以上である分類のデータベースDBに基づいて検索を行ってもよい。また例えば、検索部104は、入力画像の分類結果に応じたデータベースDBが複数ある場合に、当該複数のデータベースDBの各々に基づいて、特徴ベクトルが入力画像と類似する被検索画像の候補を検索し、当該候補の中から絞り込みを行ってもよい。また例えば、入力画像及び被検索画像の各々は、複数のオブジェクトを含み、検索部104は、一部のオブジェクトの特徴ベクトルが入力画像と類似する被検索画像を検索してもよい。これらの処理も、実施形態1で説明した通りである。
[2−1−6.表示制御部]
実施形態2の表示制御部105は、実施形態1で説明した表示制御部105と同様であってもよい。例えば、表示制御部105は、検索部104により検索された被検索画像に関連付けて、当該被検索画像のボックス情報を表示させてもよい。また例えば、表示制御部105は、入力画像に関連付けて、入力画像の位置情報を表示させてもよい。これらの処理は、実施形態1で説明した通りである。
[2−2.実施形態2において実行される処理]
図12は、検索システム1において実行される処理の一例を示すフロー図である。図12に示す処理は、制御部11が記憶部12に記憶されたプログラムに従って動作し、制御部21が記憶部22に記憶されたプログラムに従って動作することによって実行される。下記に説明する処理は、図12に示す機能ブロックにより実行される処理の一例である。
図12に示すように、S200〜S204は、それぞれS100〜S104と同様である。S204において、蓋然性が閾値以上のデータベースDBが参照されると、制御部11は、ボックス情報が入力画像と類似する被検索画像を検索する(S205)。S205においては、制御部11は、被検索画像のボックス情報と、入力画像のボックス情報と、の差が小さい順に所定個数の被検索画像を検索する。
なお、S205においては、制御部11は、被検索画像のボックス情報が示す2次元座標と、入力画像のボックス情報が示す2次元座標と、の差(距離)を取得してもよいし、被検索画像のボックス情報が示す形状(縦幅及び横幅)と、入力画像のボックス情報が示す形状(縦幅及び横幅)と、の差異(幅の差)を取得してもよいし、これらの両方を取得してもよい。
制御部11は、S205で検索した被検索画像の特徴ベクトルと、入力画像の特徴ベクトルと、の距離を計算する(S206)。S206においては、制御部11は、S204で参照したデータベースDBの全てではなく、この中からS205で検索した被検索画像を、距離の計算対象とする。距離の計算方法等の他の点については、S105の処理と同様である。
以降のS207〜S211の処理は、それぞれS106〜S110と同様である。ただし、S208においては、制御部11は、特徴ベクトル、スコア、及びボックス情報の全てが入力画像と類似する被検索画像の画像データ等を取得することになり、S211においては、これらの全てが入力画像と類似する被検索画像が検索結果画面G2に表示されることになる。
実施形態2の検索システム1によれば、学習器Lに学習させていない特徴を含む特徴ベクトルに基づいて、検索が実行されることにより、学習器Lに学習させていない特徴も類似する情報の検索が可能となるので、検索の精度を高めることができる。また、類似画像検索の際には、スコアとボックス情報を利用することも可能であるが、特徴ベクトルだけを利用したとしても、結果的にスコアとボックス情報も類似する被検索画像を検索することができる。この場合、類似画像検索の際に、スコアとボックス情報を参照する必要がないので、類似画像検索を高速化することができる。
また、第1の出力層と第2の出力層とに分岐する前に配置された中間層が計算した特徴ベクトルに基づいて、検索が実行されることにより、種々の観点での特徴が類似する情報の検索が可能となり、検索の精度を高めることができる。
また、分類が入力画像と類似する被検索画像を検索し、その中から、特徴ベクトルが入力画像と類似する被検索画像を検索することで、検索の精度をより高めることができる。
また、分類が入力画像と類似する被検索画像を検索し、その中からボックス情報が入力画像と類似する被検索画像を検索し、その中から特徴ベクトルが入力画像と類似する被検索画像を検索することで、検索の精度をより高めることができる。
また、分類ごとにデータベースDBが分割されており、入力画像のスコアに応じたデータベースDBに基づいて検索が実行され、検索対象となるデータを少なくすることで検索を高速化することができる。例えば、m個のデータベースDBに分割することで、スコアの蓋然性が閾値以上である分類が1つの場合には、全ての被検索画像を1個のデータベースで管理する場合に比べて、検索対象となるデータの量を「1/m」にすることができ、類似画像検索をm倍高速化することができる。
また、被検索画像の特徴ベクトルと、入力画像の特徴ベクトルと、の距離に基づいて検索が実行されることで、距離という正確な指標を利用することで、検索の精度を向上させることができる。また、簡単に計算できる距離を利用することで、類似画像検索をより高速化することができる。
また、学習器Lから出力された被検索画像のスコアに応じたデータベースDBに、被検索画像の特徴ベクトル等が格納されることで、被検索画像を格納すべきデータベースDBを指定する手間を省くことができる。また、入力画像の類似検索が実行された後すぐに、当該入力画像を被検索画像として利用することもできるので、被検索画像の量を増やすことができる。その結果、より類似する被検索画像が検索される蓋然性が上がり、検索の精度を向上させることができる。
また、学習器Lから出力された被検索画像の蓋然性が閾値以上である分類のデータベースDBに、被検索画像の特徴ベクトル等が格納されることで、より適したデータベースDBに、被検索画像の特徴ベクトル等が格納されるので、検索をより高速化し、かつ、検索の精度を向上することができる。
また、学習器Lから出力された入力画像の蓋然性が閾値以上である分類のデータベースDBに基づいて検索が実行されることで、より適したデータベースDBを検索対象とすることができ、検索をより高速化し、かつ、検索の精度を向上することができる。
また、入力画像のスコアに応じたデータベースDBが複数ある場合に、当該複数のデータベースDBの各々に基づいて入力画像と類似する被検索画像の候補を検索し、その中から絞込が行われることで、検索の精度を向上することができる。
また、検索システム1を類似画像検索に適用することにより、類似画像検索を高速化することができる。
また、互いに重複する複数のバウンディングボックスが入力画像に含まれる場合に、スコアが示す蓋然性が最も高いバウンディングボックスに統合し、当該バウンディングボックスの特徴ベクトルに基づいて第1の分析結果と第2の分析結果とを出力することにより、類似画像検索の精度を向上させることができる。別の言い方をすれば、スコアが示す蓋然性が比較的低いバウンディングボックスに基づいて類似画像が検索されることを防止することができる。また、多数のバウンディングボックスが検出された場合に、バウンディングボックスごとに類似画像を検索すると検索処理に時間がかかってしまうが、バウンディングボックスを統合することで、類似画像検索をより高速化し、サーバ20の処理負荷を効果的に軽減することができる。
また、互いに重複する複数のバウンディングボックスが被検索画像に含まれる場合に、スコアの蓋然性が最も高いバウンディングボックスの特徴ベクトルをデータベースDBに格納することにより、類似画像検索の精度を向上させることができる。別の言い方をすれば、スコアが示す蓋然性が比較的低いバウンディングボックスの特徴ベクトルに基づいて類似画像が検索されることを防止することができる。また、多数のバウンディングボックスの特徴ベクトルがデータベースDBに格納される場合には、データベースDBのメモリ消費が多くなってしまうが、バウンディングボックスを統合したうえで特徴ベクトルをデータベースDBに格納することにより、データベースDBのメモリ消費量を少なくすることができる。更に、類似画像検索の際に参照される情報を少なくすることで、類似画像検索をより高速化し、サーバ20の処理負荷を効果的に軽減することができる。
また、検索結果画面G2において、被検索画像に関連付けてバウンディングボックスを表示させることで、被検索画像のどのオブジェクトが類似するのかを把握しやすくなる。
また、検索結果画面G2において、入力画像に関連付けてバウンディングボックスを表示させることで、入力画像のどのオブジェクトに対して類似画像検索が実行されたのかを把握しやすくなる。
また、入力画像と被検索画像の各々に複数のオブジェクトが含まれていた場合であっても、画像の全体ではなく、画像内の一部のオブジェクト同士が類似する画像を検索することができる。
[2−3.実施形態2の変形例]
なお、実施形態2に係る発明は、以上に説明した実施の形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
例えば、実施形態2の変形例では、実施形態1の変形例で説明した機能ブロック(図9)が実現される。実施形態2の変形例でも、類似度取得部106は、入力画像の特徴ベクトルと、検索部104により検索された被検索画像の特徴ベクトルと、に基づく類似度を取得し、表示制御部105は、検索部104により検索された被検索画像に関連付けて、類似度を表示させてもよい。これらの処理の詳細は、実施形態1の変形例で説明した通りである。
以上説明した変形例によれば、検索結果画面G2に入力画像と被検索画像の類似度が表示され、入力画像と被検索画像とがどの程度類似しているのかを把握しやすくなる。
また例えば、実施形態2では、第1の分析結果がスコアであり、第2の分析結果がボックス情報である場合を説明したが、学習器Lは、任意の分析結果を出力可能であり、他の分析結果を出力してもよい。
例えば、第1の観点は、第1の分類群の中で情報を分類することであり、第2の観点は、第2の分類群の中で情報を分類することであってもよい。第1の分類群と第2の分類群とは、互いに異なる分類群であればよく、例えば、第1の分類群は、前景の分類を示し、第2の分類は、背景の分類を示してもよい。例えば、第1の分類群は、オブジェクトの分類であり、第2の分類群は、背景(シーン)の分類であってもよい。このようにすることで、例えば、「海辺にいる犬」や「雪景色の中にいる人」といった複数の観点で類似する画像を検索可能となる。
この場合、第1の分析結果は、第1の分類群の中での第1スコアとなり、第2の分析結果は、第2の分類群の中での第2スコアとなる。学習器Lの中間層が計算する特徴ベクトルには、学習器Lに学習させていない観点の特徴も含まれているので、検索部104は、特徴ベクトル、第1スコア、及び第2スコアが入力画像と類似する被検索画像を検索することで、学習器Lに学習させていない他の観点も類似する被検索画像を検索することができる。
また例えば、実施形態2では、検索システム1を類似画像検索に利用する場合を説明したが、検索システム1は、他の任意の類似情報検索が実行されてよい。
例えば、検索システム1を類似動画検索に利用する場合には、学習器Lは、入力された動画の特徴ベクトルを計算し、動画の第1の分類結果と第2の分類結果とを出力してもよい。第1の分類結果は、例えば、動画のジャンルであり、第2の分類結果は、例えば、動画の長さや興行収入といった観点の分類であってもよい。この場合、検索部104は、特徴ベクトルが入力動画と類似する被検索動画を検索する。
また例えば、検索システム1を、類似記事検索、類似文書検索、又は類似テキスト検索に利用する場合には、学習器Lは、入力された文字列の特徴ベクトルを計算し、文字列の第1の分類結果と第2の分類結果とを出力してもよい。第1の分類結果は、例えば、文章の大まかなジャンルであり、第2の分類結果は、例えば、細かなジャンルであってもよい。この場合、検索部104は、特徴ベクトルが入力記事、入力文書、又は入力テキストと類似する被検索記事、被検索文書、又は被検索テキストを検索する。
また例えば、検索システム1を、類似音声検索又は類似音楽検索に利用する場合には、学習器Lは、入力された音声又は音楽の特徴ベクトルを計算し、音声又は音楽の第1の分類結果と第2の分類結果とを出力してもよい。第1の分類結果は、例えば、音声又は音楽の大まかなジャンルであり、第2の分類結果は、例えば、音声又は音楽の細かなジャンルであってもよい。この場合、検索部104は、特徴ベクトルが入力音声又は入力音楽と類似する被検索音声又は被検索音楽を検索する。
また例えば、検索システム1を、類似ウェブサイト検索に利用する場合には、類似画像検索、類似動画検索、類似記事検索、類似文書検索、及び類似テキスト検索の少なくとも1つを利用して、入力ウェブサイトと類似する被検索ウェブサイトが検索されるようにすればよい。
[3.その他変形例]
なお、本発明は、以上に説明した実施の形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
また例えば、実施形態1−2では、サーバ10において主たる処理が実行される場合を説明したが、サーバ10で実行するものとして説明した処理は、ユーザ端末20で実行されてもよい。例えば、学習器Lは、ユーザ端末20で記憶されてもよい。この場合、ユーザ端末20の記憶部22に学習器Lが記憶される。更に、学習部101と入力部103とがユーザ端末20で実現されてもよい。この場合、これら各機能は、制御部21を主として実現される。ユーザ端末20の学習部101は、自身の学習器Lに学習させるようにしてもよい。ユーザ端末20の入力部103は、自身の学習器Lに対し、入力画像を入力する。
また例えば、格納部102がユーザ端末20で実現されてもよい。この場合、格納部102は、制御部21を主として実現される。格納部102は、サーバ10に対し、被検索画像の特徴ベクトル等を送信し、データベースDBへの格納を指示してもよい。また例えば、検索部104がユーザ端末20で実現されてもよい。この場合、検索部104は、制御部21を主として実現される。検索部104は、サーバ10に対し、入力画像のスコア等を送信し、検索を指示してもよい。
また例えば、表示制御部105がユーザ端末20で実現されてもよい。この場合、表示制御部105は、制御部21を主として実現される。ユーザ端末20の表示制御部105は、サーバ10から被検索画像の画像データやボックス情報を受信し、検索結果画面G2にこれらを表示させてもよい。また例えば、各機能がサーバ10とユーザ端末20との間で分担されてもよい。