以下、本開示の実施形態について画像を参照して説明する。
図1は、本開示の一実施形態の情報処理システムを示す図である。図1に示す情報処理システム100は、ユーザデータベース1と、ユーザ端末2と、画像検索サーバ3とを有する。ユーザデータベース1、ユーザ端末2および画像検索サーバ3は、ネットワーク10を介して相互に通信可能に接続される。
ユーザデータベース1は、複数の画像(画像データ)を格納する格納装置である。画像は、JPEG(Joint Photographic Experts Group)形式のようなラスタ形式でもよいし、CAD(Computer Aided Design)形式のようなベクタ形式でもよい。画像には、画像を特定する識別情報である画像IDと、画像に関する属性情報とが付けられている。属性情報は、画像の種類である画像クラスを含む。また、画像は、複数の部分画像を含み、各部分画像に画像IDと属性情報とが付けられてもよい。以下、複数の部分画像を含む画像を全体画像と呼ぶこともある。部分画像は、全体画像が機器の設計図を示す場合、例えば、機器を構成する部品の設計図を示す。
ユーザ端末2は、情報処理システム100を利用するユーザが使用する端末装置である。
ユーザ端末2は、例えば、ユーザからの操作に応じて、種々のコマンドを画像検索サーバ3に送信する。コマンドには、例えば、画像学習コマンド、画像追加コマンド、画像削除コマンドおよび画像検索コマンドがある。
画像学習コマンドは、画像検索(類似画像検索)を行うためのハッシュ値を算出する算出モデルの生成を要求する生成要求である。画像学習コマンドは、機械学習を用いて算出モデルを生成するための学習対象画像(学習データ)を指定する指定情報である学習指定情報を含む。学習対象画像は、例えば、ユーザデータベース1に格納された複数の画像の全部または一部である。学習対象画像は、全体画像でもよいし、部分画像でもよいし、その両方でもよい。
画像追加コマンドは、被検索対象となる画像の追加を要求する追加要求である。画像追加コマンドは、被検索対象として追加する追加対象画像を指定する指定情報である追加指定情報を含む。
画像削除コマンドは、被検索対象からの画像の削除を要求する削除要求である。画像削除コマンドは、被検索対象から削除する削除対象画像を指定する指定情報である削除指定情報を含む。
画像検索コマンドは、検索対象の画像であるクエリ画像と類似する類似画像を検索する画像検索を要求する検索要求である。画像検索コマンドは、クエリ画像を指定する指定情報である検索指定情報を含む。クエリ画像は、ユーザデータベース1に格納された複数の画像のいずれかでもよいし、それらの画像とは別の画像でもよい。また、クエリ画像は、全体画像でもよいし、部分画像でもよい。部分画像をクエリ画像とする場合、ユーザ端末2は、ユーザにて指定された画像から1つまたは複数の部分画像を抽出して表示し、表示された部分画像の中からユーザが選択した部分画像をクエリ画像としてもよい。また、ユーザ端末2は、ユーザにて指定された画像を表示し、表示された画像のうちユーザが指定した範囲に含まれる部分画像をクエリ画像としてもよい。
各コマンドにおける画像を指定する指定情報は、画像を特定する画像IDを示してもよいし、画像を格納する位置を特定する位置情報を示してもよいし、画像そのものを含んでもよい。
また、ユーザ端末2は、画像検索サーバ3に送信したコマンドに対する応答情報を画像検索サーバ3から受信する。例えば、ユーザ端末2は、画像検索サーバ3から画像検索コマンドに対する応答情報として画像検索の検索結果を受信する。このとき、ユーザ端末2は、受信した検索結果を表示してもよい。
以上説明したユーザ端末2の機能は、アプリケーションプログラムにて実現されてもよい。ユーザ端末2の機能を実現するアプリケーションプログラムである画像検索アプリケーションは、画像検索サーバ3から提供されてもよい。画像検索アプリケーションが実現する機能には、例えば、ユーザがコマンドを発行するためのGUI(Graphical User Interface)を生成して表示する機能や、全体画像から部分画像を抽出する機能なども含まれる。
画像検索サーバ3は、画像検索を行う画像検索装置である。画像検索サーバ3は、複数の機器にて実現されてもよい。
画像検索サーバ3は、格納部31と、送受信部32と、管理部33と、処理部34とを有する。
格納部31は、画像検索を行うための情報を格納する。例えば、格納部31は、入力された画像からその画像に関するハッシュ値を算出する算出モデルと、ハッシュ値に関するハッシュインデックステーブルとを格納する。
算出モデルは、具体的には、入力された画像からその画像に関する互いに長さの異なる第1のハッシュ値および第2のハッシュ値を算出する。2つのハッシュ値の一方は、類似画像の候補である候補画像を検索するための第1のハッシュ値である検索用ハッシュ値であり、他方は、クエリ画像との類似度を算出して候補画像から類似画像を選択するための第2のハッシュ値である類似度算出用ハッシュ値である。検索用ハッシュ値は、類似度算出用ハッシュ値よりも短い。
図2は、算出モデルの一例を模式的に示す図である。図2に示す算出モデル200は、画像特徴量抽出モデル201と、ハッシュ生成モデル202とを含む。
画像特徴量抽出モデル201は、入力された画像である入力画像から、その入力画像の画像クラスを算出する第1のモデルである。画像特徴量抽出モデル301は、本実施形態では、CNN(Convolutional Neural Network:畳み込みニューラルネットワーク)で構成される。
画像特徴量抽出モデル201は、入力層211と、中間層212と、出力層213とを有する。中間層212は、畳み込み・プーリング層212aと、全結合層212bとを有する。入力層211には、画像が入力される。畳み込み・プーリング層212aは、入力層211に入力された入力画像に対して畳み込み処理とプーリング処理とを繰り返し行い、入力画像の特徴を保持したまま入力画像を縮小して出力する。全結合層212bは、畳み込み・プーリング層212aの出力を重み付き結合することで、入力画像の特徴を示す特徴量である画像特徴量を算出して出力する。出力層213は、全結合層212bの出力から画像クラスを算出して出力する。なお、図の例では、出力層213の活性化関数としてソフトマックス関数(softmax)が使用されている。
ハッシュ生成モデル202は、入力層221と、中間層222と、出力層223と、変換層224とを有する。入力層221には、画像特徴量抽出モデル201の中間層212(全結合層212b)から出力された画像特徴量が入力される。中間層222は、入力された画像特徴量を所定のデータ量に圧縮した圧縮特徴量に変換して出力する。出力層223は、中間層222の出力から画像クラスを算出して出力する。変換層224は、中間層222の出力を2値化してハッシュ値として出力する。
本実施形態では、中間層222は、画像特徴量を、互いにデータ量の異なる2つの圧縮特徴量に変換し、変換層224は、その2つの圧縮特徴量のそれぞれを2値化して互いに長さの異なる2つのハッシュ値(検索用ハッシュ値および類似度算出用ハッシュ値)を出力する。
なお、以下では、上記の算出モデルにて算出される類似度算出用ハッシュ値を、後述するハッシュアルゴリズムを用いて算出される類似度算出用ハッシュ値と区別するために、第1の類似度算出用ハッシュ値と呼ぶ。また、ハッシュアルゴリズムを用いて算出される類似度算出用ハッシュ値を第2の類似度算出用ハッシュ値と呼ぶ。
ハッシュインデックステーブルは、検索対象として登録された登録画像に関するハッシュ値を登録画像ごとに示す管理情報である。ハッシュ値は、本実施形態では、登録画像ごとに3つある。具体的には、ハッシュ値は、上述した検索用ハッシュ値および第1の類似度算出用ハッシュ値と、ハッシュ値を算出する所定のハッシュアルゴリズムを用いて算出される第3のハッシュ値である第2の類似度算出用ハッシュ値とを含む。第2の類似度算出用ハッシュ値は、検索用ハッシュ値よりも長いことが望ましい。また、第2の類似度算出用ハッシュ値の長さは、第1の類似度算出用ハッシュ値の長さと同じでもよいし、異なっていてもよい。ハッシュアルゴリズムは、例えば、平均ハッシュアルゴリズム(Average Hashing Algorithm)、差分ハッシュアルゴリズム(Difference Hashing Algorithm)、知覚ハッシュアルゴリズム(Perceptual Hash Algorithm)またはウェーブレットハッシュアルゴリズム(Wavelet Hashing Algorithm)などである。
図3は、ハッシュインデックステーブルの一例を示す図である。図3に示すハッシュインデックステーブル300は、画像ID301と、画像ID301にて特定される画像の位置情報である画像パス302と、画像ID301にて特定される画像に関するハッシュ値303とを有する。ハッシュ値303は、検索用ハッシュ値311と、第1の類似度算出用ハッシュ値である類似度算出用ハッシュ値312と、第2の類似度算出用ハッシュ値である類似度算出用ハッシュ値313とを有する。図の例では、検索用ハッシュ値311は64ビット、類似度算出用ハッシュ値312および類似度算出用ハッシュ値313は、256ビットである。
図1の説明に戻る。送受信部32は、ユーザ端末2と通信可能に接続し、ユーザ端末2との間でデータの送受信を行う。例えば、送受信部32は、ユーザ端末2からコマンドを受信する。
管理部33は、ユーザ端末2の動作を規定する画像検索アプリケーションをユーザ端末2に提供することで、ユーザ端末2に表示する情報や、ユーザ端末2が送信するコマンドなどを管理する。
処理部34は、算出モデルの生成、ハッシュインデックステーブルの生成、および、画像検索などを行う処理部である。
例えば、送受信部32が画像学習コマンドを受信した場合、処理部34は、画像学習コマンドに含まれる学習指定情報にて指定される学習対象画像を機械学習することにより、算出モデルを生成して格納部31に格納する。
また、送受信部32が画像追加コマンドを受信した場合、処理部34は、画像追加コマンドに含まれる追加指定情報にて指定される追加対象画像と、格納部31に格納された算出モデルと、ハッシュアルゴリズムとを用いて、追加対象画像に関する検索用ハッシュ値、第1の類似度算出用ハッシュ値および第2の類似度算出用ハッシュ値を取得する。そして、追加対象画像の画像IDおよび位置情報を、算出した検索用ハッシュ値、第1の類似度算出用ハッシュ値および第2の類似度算出用ハッシュ値と対応付けて格納部31に格納されたハッシュインデックステーブルに登録(追加)する。なお、ハッシュインデックステーブルにハッシュ値が登録されている画像が被検索対象である登録画像となる。
また、送受信部32が画像削除コマンドを受信した場合、処理部34は、画像削除コマンドに含まれる削除指定情報にて指定される削除対象画像に関するレコード(削除対象画像の画像IDを含むレコード)をハッシュインデックステーブルから削除する。
また、送受信部32が画像検索コマンドを受信した場合、処理部34は、画像検索コマンドに含まれる検索指定情報にて指定されるクエリ画像と、格納部31に格納された算出モデルと、ハッシュアルゴリズムとを用いて、クエリ画像に関する検索用ハッシュ値、第1の類似度算出用ハッシュ値および第2の類似度算出用ハッシュ値を取得する。処理部34は、クエリ画像に関する検索用ハッシュ値、第1の類似度算出用ハッシュ値および第2の類似度算出用ハッシュ値と、格納部31に格納されたハッシュインデックステーブルとに基づいて、クエリ画像に類似する類似画像を検索し、その検索結果をユーザ端末2に送信する。
次に動作を説明する。
図4は、画像検索サーバ3による算出モデルを生成するモデル生成処理の一例を説明するためのフローチャートである。
モデル生成処理では、先ず、送受信部32は、ユーザ端末2から画像学習コマンドを受信する(ステップS401)。処理部34は、画像学習コマンドに含まれる学習指定情報にて指定される学習対象画像を読み込む(ステップS402)。本実施形態では、学習指定情報は、ユーザデータベース1に格納されている複数の画像を学習対象画像として指定している。この場合、処理部34は、送受信部32を介してユーザデータベース1にアクセスし、ユーザデータベース1から学習対象画像を読み込む。
処理部34は、読み込んだ学習対象画像を機械学習して、画像特徴量抽出モデルを生成する(ステップS403)。例えば、処理部34は、CNNのモデル構造とCNNのパラメータとを用いてCNNを構成し、学習対象画像を機械学習することで、CNNのパラメータを調整(最適化)して画像特徴量抽出モデルを生成する。なお、CNNのモデル構造およびパラメータは、格納部31に予め格納されていてもよい。また、本実施形態では、学習対象画像がベクタ形式の画像の場合、処理部34は、学習対象画像をラスタ形式の画像に変換してから機械学習を行う。
処理部34は、学習対象画像とステップS403で生成した画像特徴量抽出モデルとに基づいて、ハッシュ生成モデル(図5参照)を生成する(ステップS404)。
処理部34は、生成した画像特徴量抽出モデルおよびハッシュ生成モデルを算出モデルとして格納部31に格納する(ステップS405)。このとき、処理部34は、学習対象画像に対応するハッシュインデックステーブルを生成して格納部31に格納してもよい。例えば、処理部34は、算出モデルに学習対象画像を入力して、学習対象画像に関する検索用ハッシュ値および第1の類似度算出用ハッシュ値を取得するとともに、ハッシュアルゴリズムを学習対象画像に適用して、学習対象画像に関する第2の類似度算出用ハッシュ値を取得する。そして、処理部34は、学習対象画像ごとに、学習対象画像の画像IDおよび画像パスを、取得した検索用ハッシュ値、第1の類似度算出用ハッシュ値および第2の類似度算出用ハッシュ値と対応付けて、ハッシュインデックステーブルとして格納部31に格納する。
図5は、図4のステップS404におけるハッシュ生成モデルを生成する処理についてより詳細に説明するための図であり、ハッシュ生成モデルの要部のモデル構造を模式的に示している。
図5に示すハッシュ生成モデルの要部は、パーセプトロン層501〜507を有するMLP(Multilayer Perceptron:多層パーセプトロン)ネットワーク500で構成される。MLPネットワーク500では、パーセプトロン層501の出力がパーセプトロン層502〜504を含む第1のネットワーク511と、パーセプトロン層505〜507を含む第2のネットワーク512とに分岐される。また、図の例では、パーセプトロン層502および505の活性化関数としてレル関数(ReLU)が使用され、パーセプトロン層503および506の活性化関数としてシグモイド関数(Sigmoid)が使用され、パーセプトロン層504および507の活性化関数としてソフトマックス関数(Softmax)が使用されている。なお、パーセプトロン層501には活性化関数がない。
第1のネットワーク511および第2のネットワーク512は、例えば、SSDH(Semi-Supervised Deep Hashing)ネットワークである。第1のネットワーク511は、第1の類似度算出用ハッシュ値に対応する圧縮特徴量を算出するためのネットワークであり、第2のネットワーク512は、検索用ハッシュ値に対応する圧縮特徴量を算出するためのネットワークである。
処理部34は、学習対象画像ごとに、学習対象画像を画像特徴量抽出モデルに入力して得られる画像特徴量をMLPネットワーク500に入力し、第1のネットワーク511および第2のネットワーク512のそれぞれにおいて、互いに異なる複数の損失計算を行う。
図の例では、処理部34は、第1のネットワーク511において、パーセプトロン層503の出力に基づいて、画像特徴量をハッシュ値に変換することを目的とした、バイナリ化ロス関数(Forcing binary loss function)による損失計算および、ハッシュ値中の”0”および”1”の出現率を同程度にするための出現率調整ロス関数(50% fire rate loss function)による損失計算を実施する。またパーセプトロン層504の出力と学習対象画像を画像特徴量抽出モデルに入力して得られる画像クラスとに基づいて、クラスロス計算関数による画像クラスのクラス分類(Classification)の損失計算(例えば、Softmax Cross Entropy関数による損失計算)を行う。
また、処理部34は、第2のネットワーク512において、パーセプトロン層506の出力に基づいて、画像特徴量をハッシュ値に変換することを目的とした、バイナリ化ロス関数による損失計算および、ハッシュ値中の”0”および”1”の出現率を同程度にするための出現率調整ロス関数による損失計算を実施する。またパーセプトロン層507の出力と学習対象画像を画像特徴量抽出モデルに入力して得られる画像クラスとに基づいて、クラスロス計算関数による画像クラスのクラス分類の損失計算を行う。
処理部34は、各損失計算による損失の和が最小となるようにMLPネットワーク500のパラメータを調整(最適化)することで、ハッシュ生成モデルを生成する。
図6は、被検索対象である登録画像に画像を追加する画像追加処理の一例を説明するためのフローチャートである。
追加処理では、先ず、送受信部32は、ユーザ端末2から画像追加コマンドを受信する(ステップS601)。処理部34は、画像追加コマンドに含まれる追加指定情報にて指定される追加対象画像を読み込む(ステップS602)。本実施形態では、追加指定情報は、ユーザデータベース1に格納されている画像を追加対象画像として指定している。この場合、処理部34は、送受信部32を介してユーザデータベース1にアクセスし、ユーザデータベース1から追加対象画像を読み込む。
処理部34は、格納部31に格納された算出モデルを読み込み、その算出モデルに追加対象画像を入力して、追加対象画像に関する検索用ハッシュ値および第1の類似度算出用ハッシュ値を取得する(ステップS603)。
また、処理部34は、ハッシュアルゴリズムを追加対象画像に適用して、追加対象画像に関する第2の類似度算出用ハッシュ値を取得する(ステップS604)。
処理部34は、追加対象画像の画像IDおよび画像パスを取得し、その画像IDおよび画像バスと、取得した追加対象画像に関する検索用ハッシュ値、第1の類似度算出用ハッシュ値および第2の類似度算出用ハッシュ値とを対応付けて、格納部31のハッシュインデックステーブルに追加する(ステップS605)。
図7は、登録画像を削除する画像削除処理の一例を説明するためのフローチャートである。
削除処理では、先ず、送受信部32は、ユーザ端末2から画像削除コマンドを受信する(ステップS701)。処理部34は、画像削除コマンドに含まれる削除指定情報にて指定される削除対象画像に関するレコードを、格納部31のハッシュインデックステーブルから削除する(ステップS702)。
図8は、画像を検索する画像検索処理の一例を説明するためのフローチャートである。
画像検索処理では、先ず、送受信部32は、ユーザ端末2から画像検索コマンドを受信する(ステップS801)。処理部34は、画像検索コマンドに含まれる検索指定情報にて指定されるクエリ画像を読み込む(ステップS802)。本実施形態では、検索指定情報は、ユーザデータベース1に格納されている画像をクエリ画像として指定している。この場合、処理部34は、送受信部32を介してユーザデータベース1にアクセスし、ユーザデータベース1からクエリ画像を読み込む。
処理部34は、格納部31に格納された算出モデルを読み込み、その算出モデルにクエリ画像を入力して、クエリ画像に関する検索用ハッシュ値と第1の類似算出用ハッシュ値とを取得する(ステップS803)。
また、処理部34は、ハッシュアルゴリズムをクエリ画像に適用して、クエリ画像に関する第2の類似度算出用ハッシュ値を取得する(ステップS804)。
処理部34は、クエリ画像に関する検索用ハッシュ値と、格納部31に格納されているハッシュインデックステーブルに含まれる登録画像に関する検索用ハッシュ値とに基づいて、類似画像の候補である候補画像を検索する(ステップS805)。例えば、処理部34は、ハッシュインデックステーブルから、クエリ画像に関する検索用ハッシュ値と近似する、登録画像に関する検索用ハッシュ値である近似ハッシュ値を有する登録画像を候補画像として検索する。近似ハッシュ値は、クエリ画像に関する検索用ハッシュ値と異なるビット(桁)の数が所定数以下の、登録画像に関する検索用ハッシュ値である。所定数は、例えば、1または2である。
処理部34は、候補画像ごとに、クエリ画像に関する第1の類似度算出用ハッシュ値と候補画像に関する第1の類似度算出用ハッシュ値とに基づいて、クエリ画像と候補画像の第1の類似度を算出する(ステップS806)。第1の類似度は、例えば、クエリ画像に関する第1の類似度算出用ハッシュ値と候補画像に関する第1の類似度算出用ハッシュ値とのハミング距離である。
処理部34は、候補画像ごとに、クエリ画像に関する第2の類似度算出用ハッシュ値と候補画像に関する第2の類似度算出用ハッシュ値とに基づいて、クエリ画像と候補画像の第2の類似度を算出する(ステップS807)。第2の類似度は、例えば、クエリ画像に関する第2の類似度算出用ハッシュ値と候補画像に関する第2の類似度算出用ハッシュ値とのハミング距離である。
処理部34は、各候補画像について、第1の類似度および第2の類似度を組み合わせた組合せ類似度を算出する(ステップS808)。組合せ類似度は、例えば、第1の類似度を第1の数値範囲に正規化した値と、第2の類似度を第2の数値範囲に正規化した値との積である。第1の数値範囲と第2の数値範囲とは、互いに同じでもよいし、異なっていてもよい。本実施形態では、第1の数値範囲および第2の数値範囲は、共に0から1までの範囲である。
処理部34は、組合せ類似度に基づいて、候補画像の中から類似画像を選択し、その類似画像を示す情報を検索結果として、送受信部32を介してユーザ端末2に送信する(ステップS809)。このとき、処理部34は、例えば、組合せ類似度が高い方から所定個分の候補画像を類似画像として選択してもよいし、組合せ類似度が閾値以上の候補画像を類似画像として選択してもよい。
以上説明した各処理において、算出モデルに入力する画像がベクタ形式の場合、処理部34は、画像をラスタ形式に変換してから、算出モデルに入力する。また、同様に、ハッシュアルゴリズムを適用する画像がベクタ形式の場合、処理部34は、画像をラスタ形式に変換してからハッシュアルゴリズムを適用する。
以上説明したように本開示は以下の事項を含む。
本開示の一態様に係る画像検索装置(3)は、格納部(31)と、処理部(34)とを有する。格納部は、入力された画像から当該画像に関する互いに長さの異なる第1のハッシュ値および第2のハッシュ値を算出する算出モデル(200)と、算出モデルに複数の登録画像のそれぞれを入力して得られる各登録画像に関する第1のハッシュ値(311)および第2のハッシュ値(312)を登録画像ごとに示す管理情報(300)とを格納する。処理部は、クエリ画像を算出モデルに入力してクエリ画像に関する第1のハッシュ値および第2のハッシュ値を取得し、クエリ画像に関する第1のハッシュ値および第2のハッシュ値と管理情報とを用いて、複数の登録画像からクエリ画像に類似する類似画像を検索する。
上記構成によれば、クエリ画像に関する互いに長さの異なる第1のハッシュ値および第2のハッシュ値を用いて、クエリ画像に類似する類似画像が検索される。このため、短いハッシュ値による高速な検索と、長いハッシュ値による高精度な検索とを両立させることが可能になるため、高精度かつ高速な類似画像の検索を行うことが可能になる。
また、第1のハッシュ値は、第2のハッシュ値よりも短い。処理部は、クエリ画像に関する第1のハッシュ値と登録画像に関する第1のハッシュ値とに基づいて、複数の登録画像から類似画像の候補を候補画像として検索し、クエリ画像に関する第2のハッシュ値と候補画像に関する第2のハッシュ値とに基づいて、候補画像から類似画像を選択する。この場合、短い第1のハッシュ値に基づいて複数の登録画像から候補画像が検索され、長い第2のハッシュ値に基づいて候補画像から類似画像が選択される。このため、短い第1のハッシュ値に基づいて候補画像を絞り込み、その中から長い第2のハッシュ値に基づいて類似画像を選択することが可能になるため、高精度かつ高速で類似画像を検索することが可能になる。
また、処理部は、複数の学習用画像を機械学習することにより、算出モデルを生成して格納部に格納する。この場合、第1のハッシュ値および第2のハッシュ値を画像に応じた適切な値にすることが可能になる。
また、算出モデルは、入力された画像から当該画像に関する特徴量を算出する第1のモデルと、特徴量から第1のハッシュ値および第2のハッシュ値を算出する第2のモデルとを含む。この場合、画像の特徴量から第1のハッシュ値および第2のハッシュ値が算出されるため、第1のハッシュ値および第2のハッシュ値を画像の特徴を示すより適切な値にすることが可能になる。
また、管理情報は、画像からハッシュ値を算出する所定のハッシュアルゴリズムに対して各登録画像を適用して算出した、各登録画像に関する第3のハッシュ値を登録画像ごとに示す。処理部は、ハッシュアルゴリズムにクエリ画像を適用して、クエリ画像に関する第3のハッシュ値を算出し、クエリ画像に関する第3のハッシュ値をさらに用いて、類似画像を検索する。この場合、算出モデルとは別に算出された第3のハッシュ値をさらに用いて、類似画像が検索されるため、より精度の高い検索が可能となる。
また、第1のハッシュ値は、第2のハッシュ値および前記第3のハッシュ値よりも短く、処理部は、クエリ画像に関する第1のハッシュ値と登録画像に関する第1のハッシュ値とに基づいて、複数の登録画像から類似画像の候補を候補画像として検索し、クエリ画像に関する第2のハッシュ値および第3のハッシュ値と候補画像に関する第2のハッシュ値および第3のハッシュ値とに基づいて、候補画像から類似画像を選択する。この場合、短い第1のハッシュ値に基づいて複数の登録画像から候補画像が検索され、長い第2のハッシュ値および第3のハッシュ値に基づいて候補画像から類似画像が選択されるため、より精度の高い検索を高速で行うことが可能になる。
上述した本開示の実施形態は、本開示の説明のための例示であり、本開示の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の範囲を逸脱することなしに、他の様々な態様で本発明を実施することができる。
例えば、ユーザデータベース1は、ユーザ端末2および画像検索サーバ3とは別に設けられていたが、ユーザ端末2に備わっていてもよいし、画像検索サーバ3に備わっていてもよい。また、画像検索サーバ3の機能の少なくとも一部がユーザ端末2に備わっていてもよい。