本実施例では、検索キー以外の検索キーに対応する特徴ベクトルとの類似度を考慮して画像を検索する画像検索装置の例を説明する。
図1は、実施例1の検索システムの全体構成の説明図である。
検索システムは、端末装置101、カメラ102、及び画像検索装置200を有する。端末装置101、カメラ102、及び画像検索装置200は、それぞれネットワーク103を介して接続される。端末装置101は検索システム全体を管理する。具体的には、端末装置101は、カメラ102の設定を指示し、画像検索装置200に検索指示を送信し、画像検索装置200から検索結果を表示する。カメラ102が撮影した画像は、ネットワーク103を介して画像検索装置200に送信され、画像検索装置200は、受信した画像を記憶する。なお、カメラ102が撮影した画像はオフラインで端末装置101に入力され、端末装置101は、入力された画像をネットワーク103を介して画像検索装置200に送信してもよい。
画像検索装置200は、端末装置101からの検索指示に基づいて、記憶された画像から、検索指示に含まれる検索キーに対応する画像を検索し、検索結果を端末装置101に送信する。本実施例では、検索対象となるオブジェクトとして車両を例に説明するが、これに限定されない。検索対象となるオブジェクトは、人物、動物、植物、及び標章等であってもよい。検索対象となるオブジェクトが車両である場合、検索指示に含まれる検索キーは、例えば、セダン又はワゴンのように車両のカテゴリ等であるが、これに限定されない。
なお、カメラ102の個数は図1で示す個数に限定されず、検索システムは少なくとも一つのカメラ102を有すればよい。また、端末装置101及び画像検索装置200は一つの筐体に実装されてもよい。
図2は、実施例1の画像検索装置200のハードウェア構成図である。
画像検索装置200は、インタフェース(I/F)210、CPU(プロセッサ)220、補助記憶装置230、ネットワークインタフェース(I/F)240、及びメモリ250を有する。
I/F210は、図示しないキーボード及びマウス等の入力デバイス、及び図示しないディスプレイ等の出力デバイスに接続されるインタフェースである。CPU220は、メモリ250に記憶された各種プログラムを実行し、メモリ250に記憶されたデータを読み書きする。補助記憶装置230は不揮発性の記憶領域であり、補助記憶装置230には、検索対象データベース(DB)302、及び辞書データベース(DB)304が記憶される。検索対象DB302には、画像検索装置200が受信した画像と当該画像から算出された特徴ベクトルとが登録される。なお、検索対象DB302に登録された画像の特徴ベクトルが検索キーに対する検索対象となる。特徴ベクトルは、画像から算出される少なくとも一つの特徴量全体を示す。辞書DB304には、各検索キーとなるカテゴリに対応する代表ベクトル(第一特徴ベクトル)及び第二検索ベクトル(第二特徴ベクトル)が登録される辞書DB304は図5で詳細に説明する。検索対象DB302及び辞書DB304は、テーブル形式等で情報が登録されてもよく、データベース形式に限定されない。このため、特許請求の範囲では、検索対象DB302を検索対象記憶部と記載し、辞書DB304を辞書情報記憶部と記載する。
ネットワークI/F240は、画像検索装置200をネットワーク103に接続するインタフェースである。メモリ250は揮発性の記憶領域であり、メモリ250には、カテゴリ検索部300が記憶される。なお、カテゴリ検索部300は補助記憶装置230に記憶され、CPU220が、補助記憶装置230からメモリ250にカテゴリ検索部300をロードし、カテゴリ検索部300を実行する。カテゴリ検索部300がCPU220に実行されることによって、検索指示に含まれる検索キーに対応する画像を検索する検索処理が実行される。
カテゴリ検索部300は、画像登録部301、検索キー選択部303、第一検索部305、第二検索部306、及び出力部307を有する。これらの詳細は図3で説明する。
図3は、実施例1のカテゴリ検索部300の機能ブロック図である。
画像登録部301は、カメラ102で撮影された画像を受信し、受信した画像の少なくとも一つの特徴量を算出し、算出した特徴量の特徴ベクトルとして検索対象DB302に登録する。なお、画像登録部301の処理は、図4で詳細に説明する。
検索キー選択部303は、端末装置101からの検索指示に含まれる検索キーとなるカテゴリの代表ベクトルを辞書DB304から取得する。辞書DB304には、各カテゴリの複数の画像から算出された特徴量ベクトルが代表ベクトルとして登録されている。例えば、検索キーが「セダン」である場合、検索キー選択部303は、カテゴリが「セダン」である代表ベクトルを取得する。
第一検索部305は、検索キー選択部303が選択した代表ベクトルと検索対象DB302に登録された各特徴ベクトルとの距離値(第一距離値)を第一類似度として算出する。第一距離値が小さいほど、検索キーのカテゴリに特徴ベクトルの画像が類似することを示す。第二検索部306は、検索キーのカテゴリの第二検索ベクトルを辞書DB304から取得し、取得した第二検索ベクトルと検索対象DB302に登録された各特徴ベクトルとの第二距離値を第二類似度として算出する。第二距離値が小さいほど、第二ベクトルのカテゴリに特徴ベクトルの画像が類似することを示す。そして、第二検索部306は、第一検索部305が算出した第一類似度及び第二検索部306が算出した第二類似度に基づいて、検索対象DB302に登録された各特徴ベクトルの総合距離値(総合類似度)検索結果として出力部307に出力する。例えば、カテゴリが「セダン」である第二検索ベクトルは、他のカテゴリ(「コンパクトカー」及び「ワゴン」等)の代表ベクトルである。第二検索部306の処理は図8及び図9で詳細に説明する。なお、総合距離値は、第一距離値及び第二距離値を考慮した特徴ベクトルの画像の検索キーのカテゴリに対する類似度を示す。なお、本実施例では、第一類似度、第二類似度、及び総合類似度は距離値を用いて表現するが、他のパラメータを用いて表現してもよい。また、本実施例では、第一類似度、第二類似度、及び総合類似度に距離値を用いたので、距離値が小さいほど特徴ベクトルの画像のカテゴリに対する類似度が高いことを示すが、第一類似度、第二類似度、及び総合類似度に用いるパラメータによっては、当該パラメータの値が大きいほど特徴ベクトルの画像のカテゴリに対する類似度が高いことを示す場合もある。
出力部307は、第二検索部306から入力された検索結果に基づいて、検索対象DB302に登録された各特徴ベクトルに対応する画像を総合距離値が小さい順に並び替えた検索結果確認画面データを生成し、生成した検索結果確認画面データを端末装置101に送信する。端末装置101は、検索結果確認画面データを受信した場合、検索結果確認画面1000を表示する。検索結果確認画面1000は、図10で詳細に説明する。
第一検索部305は検索キーのカテゴリと類似するという観点で各特徴ベクトルの類似度を算出する。また、第二検索部306は、検索キーと異なるカテゴリと類似するという観点で各特徴ベクトルの類似度を算出する。このため、画像検索装置200は、二つの観点で各特徴ベクトルを評価でき、検索キーのカテゴリに類似するが、本来は他のカテゴリに属する特徴ベクトルに対応する画像の検索順位を低くすることができる。また、辞書DB304に登録された代表ベクトルと検索対象DB302に登録された各特徴ベクトルとの類似度を算出するので、辞書DB304に代表ベクトルを登録するための画像が大量であるほど、高精度な検索を実現できる。また、大量の画像に基づいて代表ベクトルを辞書DB304に登録しても、登録される各カテゴリの代表ベクトルの数を不変とすれば、検索処理の負荷の増大を抑制できる。
図4は、実施例1の画像登録部301の処理の説明図である。
画像登録部301は、例えばHaar特徴量及びAdaBoost識別器を用いて、カメラ102が撮影した画像から車両の領域を検出し、検出した車両の領域を抽出する。次に、画像登録部301は、抽出した車両の領域から特徴量を算出する。検索対象の性質に応じて適切な特徴量を選択し、選択した特徴量が算出されればよい。例えば、車種を検索する場合、車両の形状が重要な要素となる。この場合、画像登録部301は、HOG(Histogram Oriented of Gradients)又は輝度勾配方向の強度分布に基づく特徴量を算出すればよい。また、車体の色を検索する場合、画像登録部301は、色ヒストグラムに基づく特徴量を算出すればよい。なお、画像登録部301が両者の特徴量を算出することによって、「赤いセダン」等のより詳細なカテゴリを検索できる。画像登録部301がある画像から算出した特徴量の集合を特徴ベクトルという。また、画像登録部301は、算出した特徴量の特徴ベクトルを検索対象DB302に登録する。
図5は、実施例1の辞書DB304の説明図である。
辞書DB304は、カテゴリ501、代表ベクトル502、第二検索カテゴリ503、及び第二検索ベクトル504を含む。
カテゴリ501には、検索キーとなり得る各カテゴリの識別情報が登録される。代表ベクトル502には、各カテゴリの画像から算出された少なくとも一つの特徴ベクトルが代表ベクトルとして登録される。
代表ベクトルの抽出処理について説明する。図4で説明した画像登録部301の処理と同じく、あるカテゴリの少なくとも一つの画像から車両の領域が検出され、当該車両の領域が抽出される。そして、当該領域の画像の特徴量が算出される。算出された特徴量の集合を特徴ベクトルとする。K’個の画像から算出された特徴ベクトルが、k−meansクラスタリング等の手法を用いてクラスタリングされることによって、K個(K≦K’)の特徴ベクトルが代表ベクトルとして抽出される。なお、代表ベクトルを抽出するための画像が多いほど、適切な代表ベクトルが抽出でき、また、代表ベクトルの数は予め決められたK個であるので、K回の検索処理を実行すればよいので処理負荷の増大を抑制できる。
第二検索カテゴリ503には、第二検索ベクトル504に代表ベクトルが登録されたカテゴリの識別情報が登録される。第二検索ベクトル504には、カテゴリ501に登録された識別情報によって識別されるカテゴリと異なるカテゴリの代表ベクトルが登録される。辞書DB304に第二検索ベクトル504となる代表ベクトルが登録されることによって、第二検索部306は、第二検索ベクトル504に登録された代表ベクトルと検索対象DB302に登録された特徴ベクトルとの類似度を算出するだけでよく、検索キーに対応するカテゴリと異なる全ての代表ベクトルと検索対象DB302に登録された特徴ベクトルとの類似度を算出しなくてもよい。このため、第二検索部306の検索回数を減少させることができ、検索時間を短縮できる。
次に第二検索ベクトル504に登録される代表ベクトルの抽出方法について説明する。
第一方法では、画像検索装置200の管理者等によって第二検索部306が検索するカテゴリが選択され、選択されたカテゴリの代表ベクトルが第二検索ベクトル504に登録される。例えば、管理者等は、あるカテゴリ(例えばセダン)に類似すると考えるカテゴリ(例えばコンパクトカー)を選択し、画像検索装置200は、選択されたカテゴリの代表ベクトルを第二検索ベクトル504に登録する。また、管理者等は、過去の検索結果において、ある検索キーのカテゴリに対して誤って検索された画像を見て当該画像のカテゴリを特定し、特定したカテゴリを、第二検索ベクトル504に登録される代表ベクトルのカテゴリとして選択してもよい。
第一方法では、事前設定に手間がかかるが、実際の検索結果及び管理者等の主観的な判断を反映した検索が可能となる。
第二方法では、画像検索装置200が、各カテゴリの代表ベクトル間の距離値を算出し、算出した距離値と予め設定された閾値とに基づいて、あるカテゴリの第二検索ベクトル504に登録される代表ベクトルを自動的に決定する。あるカテゴリの代表ベクトルと他のカテゴリの代表ベクトルとの距離値が事前に算出され、他のカテゴリの代表ベクトルのうち、あるカテゴリの代表ベクトルから距離値が予め設定された閾値以下の代表ベクトルが第二検索ベクトル504に登録される。
第二方法では、代表ベクトルの算出に用いた画像に依存して第二検索ベクトルが決定されるが、自動的に第二検索ベクトルを登録できる。また、第二方法では、あるカテゴリの代表ベクトルと距離値が閾値以下の代表ベクトルが第二検索ベクトルとして登録されるので、選択されたカテゴリの全ての代表ベクトルが第二検索ベクトルとして登録される第一方法より、第二検索ベクトルとして登録される代表ベクトルの数が少なくなる。これによって、第二検索部306の検索回数を減少させることができ、検索時間を短縮できる。
図6A〜図6Cを用いて代表ベクトル及び第二検索ベクトルについて説明する。図6Aは、実施例1の各カテゴリの画像から算出された特徴ベクトルの特徴空間上での分布の説明図である。
図6Aでは、丸、三角、及び四角が各カテゴリを示し、黒く塗りつぶされた点が代表ベクトルを示す。代表ベクトルが抽出されることによって、少ない特徴ベクトルで各カテゴリに属する範囲を決定できる。
図6Bは、実施例1の第一方法を用いて決定された第二検索ベクトルの説明図である。
第一方法では、例えば、管理者等は、カテゴリ「丸」とカテゴリ「四角」とが類似する可能性が高いと判断し、カテゴリ「丸」の第二検索ベクトルに登録される代表ベクトルのカテゴリとしてカテゴリ「四角」を選択する。
図6Cは、実施例1の第二方法を用いて決定された第二検索ベクトルの説明図である。
カテゴリ「丸」の代表ベクトル601とカテゴリ「四角」の代表ベクトル611との距離値が閾値以下であり、カテゴリ「丸」の代表ベクトル602とカテゴリ「四角」の代表ベクトル612との距離値が閾値以下であるとする。このため、カテゴリ「丸」の第二検索ベクトルとしてカテゴリ「四角」の代表ベクトル611及び612が登録される。
なお、図5に示すカテゴリ「セダン」は、第一方法を用いて複数のカテゴリ(「コンパクトカー」及び「軽自動車」)が、第二検索ベクトルに登録される代表ベクトルのカテゴリとして選択された例を示す。また、図5に示すカテゴリ「ワゴン」は、第一方法を用いて一つのカテゴリ(「バス」)が第二検索ベクトルに登録される代表ベクトルのカテゴリとして選択された例を示す。また、図5に示すカテゴリ「コンパクトカー」は、第二方法を用いて、カテゴリ「セダン」の代表ベクトル(V00,V02)及びカテゴリ「軽自動車」の代表ベクトル(V31)が第二検索ベクトルに登録された例を示す。
図7は、実施例1の検索結果テーブル700の説明図である。
検索結果テーブル700は、第一検索部305の検索結果が登録されるテーブルである。第一検索部305は、辞書DB304のカテゴリ501に検索キーのカテゴリの識別情報が登録されたレコードの代表ベクトル502に登録された各代表ベクトル(Vck)と、検索対象DB302に登録された各特徴ベクトル(Vn)との第一距離値(d)を(式1)を用いて算出する。そして、検索対象DB302に登録された特徴量ベクトルを第一距離値の小さい順に並べた検索結果テーブルを生成する。
検索結果テーブル700は、順位701、管理ID702、特徴ベクトル703、及び距離値704を含む。
順位701には、第一距離値順に並べた各特徴ベクトルの順位が登録される。管理ID702には、各特徴ベクトルに対応する画像の識別情報が登録される。特徴ベクトル703には、各特徴ベクトルの識別情報が登録される。距離値704には、各特徴ベクトルと各代表ベクトルとの第一距離値のうち最小の第一距離値が登録される。第一距離値は小さいほど、特徴ベクトルに対応する画像が代表ベクトルのカテゴリに類似することを示す。
図8は、実施例1の第二検索部306によって実行される第二検索処理のフローチャートである。
第二検索部306は、辞書DB304のカテゴリ501に検索キーのカテゴリの識別情報が登録されたレコードの第二検索ベクトル504に登録されたJ個の代表ベクトルを取得する(801)。なお、ステップ801の処理で取得された第二検索ベクトル504に登録された代表ベクトルは第二検索ベクトルと記載する。
第二検索部306は、ステップ801の処理で取得したJ個の第二検索ベクトルに対して、ステップ803及び804の処理を実行する。すなわち、第二検索部306はステップ803及び804の処理をJ回実行する。まず、第二検索部306は、処理対象の第二検索ベクトルjを選択する(802)。
そして、第二検索部306は、検索対象DB302に登録された各特徴ベクトルをステップ802の処理で選択された処理対象の第二検索ベクトルjで検索し、処理対象の第二検索ベクトルjと各特徴ベクトルとの第二距離値を計算する(803)。ステップ803の処理における第二距離値の計算には、例えば式1を用いることができる。第二検索部306は、処理対象の第二検索ベクトルjと各特徴ベクトルとの第二距離値を検索結果として取得する(804)。
次に、第二検索部306は、J個の第二検索ベクトルに対してステップ803及び804の処理が実行されていなければ、次の第二検索ベクトルを処理対象の第二検索ベクトルとして選択し、ステップ803及び804の処理を実行する(805)。
一方、J個の第二検索ベクトルに対してステップ804及び804の処理が実行された場合、第二検索部306は、第一検索部305が算出した検索対象DB302に登録された各特徴ベクトルと代表ベクトルとの第一距離値、及び第二検索部306が算出した各特徴ベクトルと第二検索ベクトルとの第二距離値に基づいて、各特徴ベクトルの総合距離値を算出する(806)。総合距離値は、第二距離値が小さいほど総合距離値が大きくなるように算出される。言い換えれば、第二距離値によってペナルティが課されるように総合距離値が算出される。例えば、第二検索部306は、式2を用いて各特徴ベクトルの総合距離値を算出する。
式2を用いて算出される総合距離値は、検索キーのカテゴリcと検索対象DB302に登録された特徴ベクトルnとの類似度を示す。式2では、総合距離値は、第一距離値の最小値に、第二距離値の逆数の最大値を重み付けして加算することによって算出される。
これによって、画像検索装置200は、検索キーのカテゴリと類似し、かつ検索キーのカテゴリ以外のカテゴリと類似しない画像を優先して提示できる。
次に、第二検索部306は、検索対象DB302に登録された各特徴ベクトルをステップ806の処理で算出した総合距離値の小さい順に並び替え、総合距離値順に並び替えた各特徴ベクトルの画像を検索結果として出力部307に入力し(807)、第二検索処理を終了する。
出力部307は、入力された検索結果に基づいて、検索対象DB302に登録された各特徴ベクトルの画像を並び替えた検索結果確認画面データを端末装置101に送信し、端末装置101は、受信した検索結果確認画面データに基づいて検索結果確認画面1000を表示する。
図9は、実施例1の画像検索装置200による検索処理の説明図である。
図9では、検索対象DB302からカテゴリ「四角」に類似する特徴ベクトルに対応する画像を検索する例について説明する。実線で示された各図形は、各カテゴリの画像から算出された特徴ベクトルであり、図6A〜図6Cと同じであるので説明を省略する。なお、黒く塗られた図形は、各カテゴリの代表ベクトルである。破線の図形901〜904は、検索対象DB302に登録された特徴ベクトルである。なお、図形901及び902に対応する画像は、カテゴリ「四角」を撮影した画像であり、図形903及び904に対応する画像は、カテゴリ「丸」を撮影した画像である。
図9に示す(A)では、第一検索部305によって算出された第一距離値に基づいて図形901〜904に付けられた順位を示す。この場合、図形903の特徴ベクトルがカテゴリ「四角」の代表ベクトルとの第一距離値が最小となるので、図形903が1位となる。また、図902が2位となり、図形901が3位となり、図形904が4位となる。
この場合、図形903はカテゴリ「丸」を撮影した画像であり、カテゴリ「四角」を検索したのにもかかわらず、図形903が1位となる検索結果は適切ではない。
図9に示す(B)では、第二検索部306によって算出された総合距離値に基づいて図形901〜904に付けられた順位を示す。カテゴリ「四角」の第二検索ベクトルとして、カテゴリ「丸」の代表ベクトル及びカテゴリ「三角」の代表ベクトルが対応付けられるものとする。
カテゴリ「丸」が撮影された図形903の特徴ベクトルと、カテゴリ「四角」の第二検索ベクトルであるカテゴリ「丸」の代表ベクトルとの第二距離値が小さくなるので、図形903の総合距離値は、第一距離値より大きくなり、図形903は3位となる。また、第一距離値が図形901より小さい図形902の特徴ベクトルとカテゴリ「四角」の第二検索ベクトルであるカテゴリ「三角」の代表ベクトルとの距離値は、図形901の特徴ベクトルとカテゴリ「四角」の第二検索ベクトルであるカテゴリ「三角」の代表ベクトルとの距離値より小さいため、図形901が1位となり、図形902が2位となる。
これによって、検索対象のカテゴリ「四角」を撮影した画像である図形901及び902が検索結果の上位となり、検索対象でないカテゴリ「丸」を撮影した画像である図形903及び904が検索結果の下位となる。すなわち、検索キーのカテゴリと類似し、検索キーと異なるカテゴリに類似しない画像を検索結果の上位にすることができる。
図10は、実施例1の検索結果確認画面1000の説明図である。
検索結果確認画面1000は、検索キー選択領域1010、条件選択領域1020、検索結果表示領域1030、他カテゴリ除去チェックボックス1040、PREVボタン1050、及びNEXTボタン1060を含む。
検索キー選択領域1010は、端末装置101のユーザからの検索キーの選択の入力を受け付ける領域であり、検索キー選択入力受付部である。検索キー選択領域1010は、車種1011及び色1012を含む。車種1011には車両の種類(セダン、及びワゴン等)が表示され、表示された種類の中から検索キーとなる車両の種類が選択される。なお、色1012は、検索キーとなる車両の色の選択の入力を受け付ける。
条件選択領域1020は、期間1021及び検索ボタン1022を含む。期間1021には、検索対象DB302に登録された特徴ベクトルに対応する画像のうち検索対象となる画像の期間の選択の入力を受け付ける。検索ボタン1022が操作された場合、端末装置101は、検索キー選択領域1010で選択された検索キー及び期間1021で選択された期間を含む検索指示を画像検索装置200に送信する。
検索結果表示領域1030には、他カテゴリ除去チェックボックス1040がチェックされている場合、検索結果となる画像が総合距離値順に並べられて一覧表示される。また、検索結果表示領域1030には、他カテゴリ除去チェックボックス1040がチェックされていない場合、検索結果となる画像が第一距離値順に並べられて一覧表示される。なお、検索結果表示領域1030には、各画像の下方には、他カテゴリ除去チェックボックス1040がチェックされている場合には総合距離値が表示され、他カテゴリ除去チェックボックス1040がチェックされていない場合には第一距離値が表示される。
これによって、端末装置101のユーザは、検索キーとなるカテゴリに類似する画像から順に確認できる。また,他カテゴリ除去チェックボックス1040がチェックされたか否かによって検索結果表示領域1030に表示される画像が並べられる距離値を変更できるので、ユーザが検索を所望する検索結果を表示できる。
PREVボタン1050が操作された場合、検索結果表示領域1030には前の検索結果が表示される。NEXTボタン1060が操作された場合、検索結果表示領域1030には次の検索結果が表示される。
以上によって、第二検索部306は、第二類似度が高い特徴ベクトルほど、当該特徴ベクトルの総合類似度を低くするように総合類似度を算出する。これによって、検索キーのカテゴリに類似し、かつ検索キー以外のカテゴリにも類似する画像が検索結果の上位となることを防止でき、カテゴリ間の類似性が高い場合であっても画像の検索精度の低下を抑制できる。
また、あるカテゴリの代表ベクトルと当該カテゴリの第二検索ベクトルとが辞書DB304で予め対応付けられている。これによって、検索キーのカテゴリと異なる全てのカテゴリの代表ベクトルを第二検索ベクトルとして用いて、第二検索ベクトルと特徴ベクトルとの第二類似度を算出しなくてもよいので、検索処理時間を短縮できる。
また、辞書DB304に登録されたあるカテゴリの代表ベクトルと他のカテゴリの代表ベクトルの距離値を類似度として算出し、当該類似度が閾値以下である当該他のカテゴリの代表ベクトルを当該あるカテゴリの第二検索ベクトルとする。これによって、第二検索ベクトルを自動で設定でき、管理者等の手間を省略できる。
また、ある検索キーの第二特徴ベクトルとして他の検索キーの選択の入力を受け付け、入力を受け付けた他の検索キーの代表ベクトルを当該ある検索キーの第二検索ベクトルとする。これによって、管理者等の判断結果をカテゴリの第二検索ベクトルに反映できる。
本実施例では、第二検索処理を実行する特徴ベクトルを選択して、選択された特徴ベクトルのみに第二検索処理を実行する例について説明する。これによって、検索処理時間を短縮できる。
図11は、実施例2の第二検索部306による第二検索処理のフローチャートである。図11では、図8に示す処理と同じ処理は同じ符号を付与し、説明を省略する。
第二検索部306は、第二検索処理を実行する特徴ベクトルを選択し(1101)、選択した特徴ベクトルに対して、ステップ801〜807の処理を実行する。
ステップ1101の処理での特徴ベクトルの選択方法には、第一方法及び第二方法がある。
まず、第一方法について説明する。
第一方法では、第二検索部306は、第一距離値が最小の特徴ベクトルから第一距離値が小さい順に予め設定された数(N個)の特徴ベクトルを、第二検索処理を実行する特徴ベクトルとして選択する。そして、第二検索部306は、選択したN個の特徴ベクトルに対して第二検索処理を実行する。
本実施例では、高速検索を実現するために検索対象DB302には複数のクラスタがあり、画像登録部301は、算出した画像の特徴ベクトルに基づいて、特徴ベクトルが算出された画像を対応するクラスタに登録する。このため、一つのクラスタには、類似する特徴ベクトルの画像が登録されることになる。
テキスト又は撮影された位置情報等に基づいて画像がクラスタに登録されず、特徴ベクトルに基づいてクラスタに登録される。このため、第二検索部306によって選択されたN個の特徴ベクトルの画像が登録されるクラスタの数は小さくなる。これによって、第二検索部306によって選択されたN個のクラスタ全てが異なるクラスタに登録されることを防止し、検索速度が低下することを防止できる。したがって、第一の方法では、画像のクラスタへの登録及び検索も特徴ベクトルに基づいて実施されるので、第二検索部306によって選択されたN個の特徴ベクトルの画像が登録されるクラスタの数を小さくでき、検索速度が低下することを防止できる。
次に、第二方法について説明する。
第二方法では、第二検索部306は、第一距離値が閾値以下である特徴ベクトルを、第二検索処理を実行する第二ベクトルとして選択する。例えば、検索キーが「セダン」で、検索対象DB302に登録された画像の8割が「セダン」の画像であり、2割が「セダン」以外の画像である場合、第一方法によれば、上位5割の画像の特徴ベクトルが第二検索処理を実行する特徴ベクトルとして選択される。したがって、検索対象DB302に登録された全ての「セダン」の画像の特徴ベクトルに対して第二検索処理が実行されない。また、第一方法によれば、検索キーのカテゴリ以外の他のカテゴリの画像の特徴ベクトルに対して第二検索処理が実行され、無駄な処理が実行される可能性もある。
これに対して、第二方法では、第二検索処理を実行する特徴ベクトルの数が変化するため、検索時間も変化するというデメリットがあるが、検索対象DB302に登録された画像のカテゴリの偏りによらず、高精度な検索を実現できる。
第二方法の閾値の設定方法の例について説明する。画像検索装置200は、辞書DB304を構築する場合に、辞書DB304の各カテゴリの全ての代表ベクトル間の距離値の最大値を算出し、各カテゴリの最大値を各カテゴリの閾値に設定する。これによって、各カテゴリに適切な閾値を自動で設定することができ、高精度かつ高速に第二検索処理を実行できる。
次に、実施例2の変形例について説明する。図12は、実施例2の変形例の第二検索処理のフローチャートである。図12では、図8及び図11に示す処理と同じ処理は同じ符号を付与し、説明を省略する。
実施例2では、J個の第二検索ベクトルから処理対象の第二検索ベクトルを選択し、選択した第二検索ベクトルをクエリにして、ステップ1101の処理で選択された第二検索処理を実行するN個の特徴ベクトルを検索するものである。本変形例では、ステップ1101の処理で選択された第二検索処理を実行するN個の特徴ベクトルから処理対象の特徴ベクトルを選択し、選択した特徴ベクトルをクエリにして、J個の第二検索ベクトルを検索する。
ステップ801の処理の実行後、第二検索部306は、ステップ1101の処理で選択されたN個の特徴ベクトルに対して、ステップ1202及び1203の処理を実行する。すなわち、第二検索部306はステップ1202及び1203の処理をN回実行する。まず、第二検索部306は、処理対象の特徴ベクトルVnを選択する(1201)。
そして、第二検索部306は、ステップ801の処理で取得したJ個の第二検索ベクトルをステップ1201の処理で選択された処理対象の特徴ベクトルVnで検索し、処理対象の特徴ベクトルVnと各第二検索ベクトルとの距離値を計算する(1202)。なお、ステップ1202の処理における距離値の計算には、例えば式1を用いることができる。第二検索部306は、処理対象の特徴ベクトルVnと第二検索ベクトルとの距離値を検索結果として取得する(1203)。
次に、第二検索部306は、ステップ1101の処理で選択されたN個の特徴ベクトルに対して、ステップ1202及び1203の処理を実行されていなければ、次の特徴ベクトルを処理対象の特徴ベクトルとして選択し、ステップ1202及び1203の処理を実行する(1204)。
一方、ステップ1101の処理で選択されたN個の特徴ベクトルに対して、ステップ1202及び1203の処理を実行された場合、ステップ806の処理に進む。
検索される第二検索ベクトルの数は変化しないため、本変形例では、特徴ベクトルをクエリとして第二検索ベクトルを検索する。これによって、第二検索ベクトルを最適なデータアクセスが可能となるように、辞書DB304を事前に設定でき、検索処理を高速化できる。一方、図11に示す実施例2の第二検索処理では、第二検索ベクトルをクエリとして特徴ベクトルを検索する。ステップ1101の処理で選択される特徴ベクトルの数は検索対象DB302次第で変化するので、本変形例のような事前の設定はできない。
したがって、ステップ1101の処理で選択されたN個の特徴ベクトルをクエリとしてJ個の第二検索ベクトルを検索する処理をN×J回を実行したほうが、J個の第二検索ベクトルをクエリとしてステップ1101の処理で選択されたN個の特徴ベクトルを検索する処理をJ×N回実行するよりも、検索処理を高速化できる。
以上によって、第一距離値に基づいて第二検索処理が実行される特徴ベクトルが選択され、選択された特徴ベクトルに対してのみ第二検索処理が実行される。これによって、検索処理時間を短縮できる。第二検索処理が実行される特徴ベクトルの選択方法の一例として、第一距離値が小さい順に所定数の第二検索処理が実行される特徴ベクトルが選択される例がある。この例によれば、第検索対象DB302の複数のクラスタに分散して登録された特徴ベクトルに、第二検索処理が実行されることを防止できる。
また、他の例として、第一距離値が閾値以下となる特徴ベクトルが、第二検索処理が実行される特徴ベクトルとして選択される例がある。この例によれば、検索対象DB302に登録された画像のカテゴリの偏りによらず、高精度な検索を実現できる。
また、各カテゴリの代表ベクトル間の距離値が算出され、算出された距離値に基づいて閾値が設定される。これによって、適切な閾値を自動で設定できる。
また、第二検索処理を実行する特徴ベクトルから処理対象の特徴ベクトルが選択され、選択された処理対象の特徴ベクトルと第二特徴ベクトルとの第二距離値が算出され、この処理が第二検索処理を実行する特徴ベクトルの数だけ繰り返される。これによって、第二特徴ベクトルの数は予め決まっているので、第二特徴ベクトルを最適なデータアクセスが可能となるように事前に設定でき、検索処理時間を短縮できる。
本実施例は、検索キーにおいて複数のカテゴリが指定され、複数のカテゴリに類似する画像の検索(「あいまいカテゴリ検索」)を実現する画像検索装置200の例である。車種及び車両の色の定義は曖昧であり、あきらかに「セダン」の形状をした車両がある一方で、「セダン」なのか「コンパクトカー」なのか曖昧な形状の車両も存在する。このようなカテゴリの曖昧性は車両というオブジェクトに限らず、例えば、29歳の人物を検索する場合において、「20代」のカテゴリで検索するより、「30代」のカテゴリで検索した方が発見しやすいことがある。本実施例によれば、このような複数のカテゴリの境界付近に存在するオブジェクトも検索することができる。
図14は、実施例4の検索結果確認画面1000の説明図である。図14では、図10と同じ構成は同じ符号を付与し、説明を省略する。
図14に示す検索結果確認画面1000は、検索キー選択領域1400が図10に示す検索キー選択領域1010と異なる。検索キー選択領域1400は、第一車種1401及び第二車種1402を含む。第一車種1401及び第二車種1402では、それぞれ検索キーとなる車両の種類が選択される。このため、本実施例では、検索キーは二つのカテゴリとなる。なお、検索キーとなるカテゴリは二つに限定されず、検索キーは三つ以上のカテゴリであってもよい。
ここで、第一車種1401及び第二車種1402で、「セダン」及び「コンパクトカー」が検索キーのカテゴリとして選択された場合の画像検索装置200の処理について説明する。
まず、検索キー選択部303は、辞書DB304から「セダン」及び「コンパクトカー」に対応する代表ベクトルを取得する。次に、第一検索部305は、検索キー選択部303が選択した「セダン」及び「コンパクトカー」の代表ベクトルと検索対象DB302に登録された各特徴ベクトルとの距離値(第一距離値)を算出する。
次に、第二検索部306は、辞書DB304から「セダン」及び「コンパクトカー」に対応する第二検索ベクトルを取得する。この場合、第二検索ベクトルが「セダン」の代表ベクトル又は「コンパクトカー」の代表ベクトルであれば、当該第二検索ベクトルは第二検索処理に用いない。図5に示す辞書DB304では、「セダン」の第二検索カテゴリ503は「コンパクトカー」及び「軽自動車」であり、「コンパクトカー」の第二検索カテゴリ503は「セダン」及び「軽自動車」である。第二検索部306は、「セダン」及び「コンパクトカー」の代表ベクトルを第二検索処理に用いず、「軽自動車」の代表ベクトルのみを第二検索処理に用いる。
そして、第二検索部306は、「軽自動車」の代表ベクトルと各特徴ベクトルとの距離値を算出し、第一距離値及び第二距離値に基づいて総合距離値を算出する。出力部307は、総合距離値順に並び替えた特徴ベクトルの画像を含む検索確認画面データを端末装置101に送信する。
以上によって、「セダン」及び「コンパクトカー」以外のカテゴリに類似する画像の特徴ベクトルの総合距離値は大きくなる。また、「セダン」及び「コンパクトカー」のいずれにも類似する画像の特徴ベクトルの総合距離値は小さくなるので、適切に検索できる。
検索結果確認画面1000において、第一距離値順に画像が並べられた場合、検索キーとなる「セダン」及び「コンパクトカー」以外の他のカテゴリの画像が大量に出現してしまう。また、この場合、「セダン」のみに類似する画像、及び「コンパクトカー」にのみに類似する画像が検索結果の上位となり、ユーザの意図に沿わない検索結果となる可能性もある。第二検索部306が第一距離値及び第二距離値に基づいて、総合距離値を算出するため、他のカテゴリの画像の出現を抑制できる。また、「セダン」及び「コンパクトカー」の両方に類似する画像の特徴ベクトルは第二検索ベクトルと距離が小さくなるので、「セダン」及び「コンパクトカー」の両方に類似する総合距離値が小さくなり、当該画像が検索結果の上位とすることも可能となる。
また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段などは、それらの一部または全部を、例えば集積回路で設計するなどによりハードウェアで実現してもよい。
また、前記の各構成、機能などは、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。
各機能を実現するプログラム、テーブル、ファイルなどの情報は、メモリや、ハードディスク、SSD(Solid State Drive)などの記録装置、または、IC(Integrated Circuit)カード、SDカード、DVD(Digital Versatile Disc)などの記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。