以下に、本願に係る提供プログラム、提供装置、および提供方法を実施するための形態(以下、「実施形態」と記載する。)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る提供プログラム、提供装置、および提供方法が限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
[実施形態]
〔1−1.提供装置の一例〕
まず、図1を用いて、提供装置の一例である端末装置10および生成サーバ100が実行する提供処理および生成処理の一例について説明する。図1は、実施形態に係る端末装置および生成サーバが実行する処理の一例を示す図である。図1では、端末装置10は、インターネット等の所定のネットワークN(例えば、図3参照)を介して、生成サーバ101、102(以下、「生成サーバ100」と総称する。)や検索サーバ200と通信可能である。
端末装置10は、提供処理を実行する情報処理装置であり、例えば、スマートフォンやタブレット等のスマートデバイスにより実現される。例えば、端末装置10は、3G(3rd Generation)やLTE(Long Term Evolution)等の無線通信網を介して任意のサーバ装置と通信を行うことができる携帯端末装置である。なお、端末装置10は、スマートデバイスのみならず、デスクトップPC(Personal Computer)やノートPC等の情報処理装置であってもよい。
ここで、端末装置10は、利用者から各種の入力を受け付ける機能を有する。例えば、端末装置10は、利用者の入力を受け付けるタッチパネルを有し、利用者が指やスタイラスを用いて描いた画像を手書き画像として受け付ける機能を有する。また、端末装置10は、カメラ等を有し、利用者が紙等のアナログ媒体に描いた絵を手書き画像として撮影する撮影機能を有する。
生成サーバ100は、生成処理および提供処理を実行する情報処理装置であり、例えば、サーバ装置やクラウドシステム等により実現される。また、生成サーバ100は、端末装置10との間で任意のデータを送受信する機能を有する。なお、生成サーバ100は、任意の数の生成サーバ100により実現されてもよく、1台のサーバ装置上で仮想的に動作する複数の仮想サーバ装置により実現されてもよい。また、生成サーバ100は、例えば、サーバ装置上で動作するGPU(Graphics Processing Unit)により実現されてもよい。
検索サーバ200は、画像検索を実行する情報処理装置であり、例えば、サーバ装置やクラウドシステム等により実現される。例えば、検索サーバ200は、検索クエリとなる画像(以下、「クエリ画像」と記載する。)を受け付けると、検索対象となる各種画像の中からクエリ画像と類似する画像を検索し、検索結果を提供する。より具体的な例を挙げると、検索サーバ200は、電子商店街において出品された取引対象の中から、取引対象を示す画像として登録された画像(以下、「登録画像」と記載する。)がクエリ画像と類似する取引対象を検索し、検索結果として、登録画像がクエリ画像と類似する取引対象の情報を提供する。例えば、検索サーバ200は、取引対象の登録画像や価格、取引対象を販売する電子商店街の店舗の情報等を提供する。なお、検索サーバ200は、取引対象の価格や販売履歴、登録画像とクエリ画像との類似度に応じたランキングを生成し、生成したランキングを検索結果として提供してもよい。
〔1−2.提供処理について〕
ここで、利用者が所望する取引対象の名称やブランドが解らない場合、電子商店街において取引対象を検索するのが困難となる。例えば、利用者が所望する取引対象に対して漠然としたイメージを有しているが、そのようなイメージと合致する取引対象の名称やブランド等、取引対象を検索するための検索クエリを想起できない場合、電子商店街において所望する取引対象を検索するのが困難である。
そこで、利用者から画像を検索クエリとして受付け、受付けた検索クエリを用いて画像検索を行うといった手法が考えられる。より具体的な例を挙げると、各種のペイント用アプリケーションを介して、利用者から手書き画像の入力を受付け、受付けた手書き画像を検索クエリとする手法が考えらえる。また、利用者が紙等といったアナログ媒体に手書きした絵等を手書き画像として撮影し、撮影した手書き画像を検索クエリとする手法が考えられる。すなわち、「手書き画像」とは、利用者の手により描画されたものであって、利用者が検索使用とする態様を示すものであれば、端末装置10が有するタッチパネルやマウス等の入力装置を介して入力された画像のみならず、他の媒体に描画されたものを撮影した画像等を含む概念である。
しかしながら、このような手書き画像を検索クエリとした場合、適切な取引対象を検索することができない恐れがある。例えば、利用者により描かれた手書き画像は、写真等の画像と比較して取引対象が有する特徴が詳細に表れ難い。このため、手書き画像をそのまま検索クエリとした場合、利用者が所望する取引対象を適切に検索することができない恐れがある。
そこで端末装置10は、以下の提供処理を実行する。まず、端末装置10は、利用者が入力した画像である入力画像を受け付ける。このような場合、端末装置10は、受け付けられた入力画像から生成される画像を取得する。そして、端末装置10は、画像検索を行う検索サーバ200に対して、取得された画像を提供する。
例えば、端末装置10は、利用者の手書き画像を入力画像として受け付けると、受付けた手書き画像を生成サーバ100に対して送信する。このような場合、生成サーバ100は、以下の生成処理を実行する。まず、生成サーバ100は、手書き画像を利用者が入力した画像である入力画像として受け付ける。このような場合、生成サーバ100は、受け付けられた入力画像から生成される画像であって、画像検索を行う検索サーバ200に対して検索クエリとして提供される画像を生成する。そして、生成サーバ100は、生成された画像を端末装置10へと提供する。
すなわち、端末装置10は、手書き画像そのものを検索クエリとするのではなく、手書き画像から生成される画像であって、検索クエリの候補となる画像(以下、「クエリ候補画像」と記載する。)を取得する。すなわち、端末装置10は、生成サーバ100によって手書き画像から生成されたクエリ候補画像を取得する。そして、端末装置10は、取得したクエリ候補画像を検索サーバ200へと送信する。
ここで、利用者が所望する取引対象の特徴をクエリ候補画像が手書き画像よりも適切に示している場合、検索サーバ200は、利用者が所望する取引対象を手書き画像よりも適切に検索することができると考えられる。この結果、端末装置10は、利用者が所望する取引対象の検索をより適切に実現することができる。
〔1−3.クエリ候補画像について〕
ここで、クエリ候補画像は、手書き画像から生成される画像であって、利用者が所望する取引対象の特徴を手書き画像よりもより適切に示す画像であれば、任意の画像が適用可能である。例えば、クエリ候補画像は、利用者の手書き画像から生成された画像であって、手書き画像と類似するように生成された画像であれば、任意の画像であってもよい。例えば、クエリ候補画像は、手書き画像が示す取引対象の特徴と類似する特徴を有する画像であって、手書き画像よりも詳細に取引対象の特徴を示すものであればよい。例えば、手書き画像に、一方の斜辺が他方の斜辺よりも長い台形の形状であって、赤色が付された図形が含まれている場合、クエリ候補画像は、赤色のハイカットスニーカーを示唆するような画像となればよい。このように、クエリ候補画像が手書き画像よりも詳細に取引対象の特徴を示す場合、手書き画像は、クエリ候補画像の解像度を低下させたものともいえる。そこで、生成サーバ100は、例えば、各種アップコンバートの技術により、手書き画像をより詳細な画像へと変更することでクエリ候補画像を生成してもよい。
また、クエリ候補画像は、手書き画像よりも検索対象となる画像に類似する画像であればよい。例えば、生成サーバ100は、手書き画像から電子商店街に登録された取引対象の画像に類似する画像を生成し、端末装置10へと提供してもよい。このような場合、端末装置10は、手書き画像から生成された画像であって、取引対象の画像の類似する画像を検索サーバ200へと提供するので、利用者が所望する取引対象をより適切に検索することができる。すなわち、端末装置10は、手書き画像から生成される画像であって、検索対象のうちいずれかの検索対象を手書き画像よりも適切に示す画像であれば、任意の手法により生成されたクエリ候補画像を取得して良い。
ここで、生成サーバ100は、検索サーバ200の検索対象となる画像の特徴を学習したモデルを用いて手書き画像から生成された画像を生成する。より具体的な例を挙げると、生成サーバ100は、モデルとして、画像の特徴が入力された場合に検索サーバ200の検索対象となる画像を生成するように学習が行われたモデルを用いて手書き画像からクエリ候補画像を生成する。
例えば、生成サーバ100は、複数のノードを多段に接続したニューラルネットワークをモデルとして準備する。このようなモデルは、例えば、DNN(Deep Neural Network)、オートエンコーダー、LSTM(Long Short-Term Memory)、リカレントニューラルネットワーク、畳み込みニューラルネットワーク、再帰型ニューラルネットワーク等、任意のDNNが採用可能である。
このようなモデルに対し、取引対象の特徴を示す情報を入力した際に、その情報が示す特徴を示す取引対象の画像を出力するように学習が行われた場合、そのモデルは、手書き画像が有する特徴から、その特徴を有する取引対象の画像を生成する画像生成モデルとなりえる。例えば、様々な取引対象の画像を教師データとし、その画像を利用者に手書きさせた手書き画像、もしくはその手書き画像が有する特徴を学習データとして、モデルの学習を行うことで、このような画像作成モデルを生成することができる。より具体的には、学習データを入力した際にモデルが出力する画像が教師データと近づくように、モデルが有するノード間の接続係数(すなわち、重み)を修正することで、手書き画像から手書き画像が示す特徴を有する取引対象の画像を生成することができる。
ここで、生成サーバ100は、GAN(Generative Adversarial Network)と呼ばれるモデルを用いてもよい。例えば、GANは、ジェネレータとディスクリミネイタとを有する。GANのジェネレータは、ランダムベクトル等のノイズが入力された際に、入力されたノイズに応じた情報を出力する。一方、ディスクリミネイタは、ジェネレータが出力した情報と所定の訓練データとに対してラベル付を行う。このようなGANにおいては、ジェネレータの出力と訓練データとに同じラベルが付与されるようにジェネレータの学習が行われ、ジェネレータの出力と訓練データとに異なるラベルが付与されるようにディスクリミネイタの学習が行われる。
ここで、ジェネレータの出力を画像とし、訓練データを取引対象の登録画像とし、GANが有するジェネレータとディスクリミネイタとを交互に更新した場合、ジェネレータが生成する画像は、取引対象の登録画像に近づくこととなる。このようなGANのジェネレータをモデルとして用いることで、生成サーバ100は、手書き画像からクエリ候補の画像を生成してもよい。より具体的には、生成サーバ100は、モデルとして、ランダムなベクトルから画像を生成するように学習が行われたGANに対し、手書き画像に基づいた制約が適用されたベクトルを入力することでクエリ候補画像を生成してもよい。すなわち、生成サーバ100は、制限付きGANの技術(例えば、非特許文献1参照)を用いて、手書き画像からクエリ候補画像を生成してもよい。
例えば、生成サーバ100は、あるランダムベクトルをジェネレータに入力し、ジェネレータが出力した画像と手書き画像とを比較し、ジェネレータが出力する画像が手書き画像に近づくように、ジェネレータに対して入力するベクトルに対して制約を加える。例えば、生成サーバ100は、初期値としてランダムベクトルを生成し、生成したランダムベクトルをジェネレータに入力する。そして、生成サーバ100は、ジェネレータが出力する画像と手書き画像とを比較し、ジェネレータが出力する画像が手書き画像に近づくように、ジェネレータに入力したランダムベクトルの各要素の値を更新する。そして、生成サーバ100は、要素の値を更新したランダムベクトルをジェネレータに再度入力し、ジェネレータが出力する画像と手書き画像とを再度比較し、ジェネレータが出力する画像が手書き画像に近づくように、ジェネレータに入力したランダムベクトルの各要素の値をさらに更新する。
ここで、GANのジェネレータは、学習対象となった画像と類似する画像であって、学習対象となった画像が有する特徴を精度よく含む画像を生成する傾向がある。このため、ジェネレータが出力する画像が手書き画像に近づくように、ジェネレータに入力するランダムベクトルの各要素の値を繰り返し更新した場合、生成サーバ100は、手書き画像が示す取引対象の特徴と共通する特徴を有する画像であって、取引対象の特徴を精度よく含む画像を取得することができる。すなわち、端末装置10は、所定の入力から検索サーバ200の検索対象となる画像と類似する画像を出力するように学習が行われたモデルが入力画像と類似する画像を出力するように、モデルに対する入力を変更することで生成された画像を取得する。
このように、生成サーバ100は、ある手書き画像からGANを用いてクエリ候補画像を生成した場合、その手書き画像を入力した利用者が所望する取引対象と類似する取引対象の画像をクエリ候補画像として生成することができるので、利用者が所望する取引対象の検索を適切に行わせることができる。
なお、生成サーバ100は、GANが有するネットワークのうち、ジェネレータ部分のみを抽出し、抽出した部分をクエリ候補画像を生成するモデルとして採用してもよく、GAN全体をモデルとし、ジェネレータ部分の出力をクエリ候補画像としてもよい。以下の説明では、モデルとして採用されるネットワークであって、全体もしくはジェネレータ部分を、GANと総称する場合がある。
〔1−4.モデルのカテゴリについて〕
ここで、上述した各種のモデルが手書き画像の特徴から取引対象の画像を生成する場合、各モデルに対して所定の分野に属する取引対象のみの特徴を学習させた方が、生成される画像の精度が向上する場合がある。そこで、生成サーバ100は、取引対象のカテゴリごとに異なるモデルを用いて、クエリ候補画像の生成を行ってもよい。
例えば、生成サーバ100は、第1カテゴリに属する取引対象の画像を訓練データとすることで、第1カテゴリと対応するGANを生成し、第2カテゴリに属する取引対象の画像を訓練データとすることで、第2カテゴリと対応するGANを生成する。すなわち、生成サーバ100は、取引対象が属するカテゴリごとに、ベクトルから取引対象の画像を生成するモデルの学習を行う。一方、端末装置10は、利用者から手書き画像を受け付けるとともに、検索対象となる取引対象が属するカテゴリの指定を受け付ける。
このような場合、生成サーバ100は、生成したGANのうち、利用者が指定したカテゴリと対応するGANを選択する。そして、生成サーバ100は、選択されたGANを用いて、手書き画像からクエリ候補画像の生成を行う。すなわち、生成サーバ100は、分野ごとに検索サーバ200の検索対象となる画像の特徴を学習した複数のモデルのうち、指定された分野と対応するモデルを用いて手書き画像からクエリ候補画像の生成を行う。
ここで、取引対象が属するカテゴリは、任意の粒度が採用可能である。例えば、生成サーバ100は、電子商店街において階層関係を有するカテゴリが採用されている場合、任意の階層におけるカテゴリごとに、モデルの学習を行ってもよい。また、端末装置10は、生成サーバ100とは異なる粒度でのカテゴリの指摘を受付けても良い。例えば、生成サーバ100は、端末装置10が第1カテゴリに属する第2カテゴリの指定を受付けた場合、第2カテゴリに対応するモデルを用いてクエリ候補画像の生成を行ってもよく、あるいは、第2カテゴリを内包する第1カテゴリに対応するモデルを用いてクエリ候補画像の生成を行ってもよい。
〔1−5.制約条件について〕
ここで、生成サーバ100は、GANが出力する画像が手書き画像に近づくように、GANに入力するベクトルに対して制約を適用した。ここで、生成サーバ100は、手書き画像に基づく制約であれば、任意の態様で制約の適用を行ってよい。
例えば、手書き画像に含まれる境界線は、取引対象の形状を示す情報、すなわち、取引対象の形状が有する特徴を示す情報であると考えられる。また、手書き画像に含まれる色は、取引対象の色を示す情報、すなわち、取引対象が有する色の特徴を示す情報であると考えられる。また、手書き画像のうち、色が付された領域は、取引対象のうち色が付された領域が有する広さや形等の特徴を示す情報であると考えらえる。すなわち、手書き画像には、取引対象が有する特徴を示す情報であって、それぞれ異なる種別の特徴を示す複数の情報が含まれると考えられる。
そこで、生成サーバ100は、手書き画像からそれぞれ異なる種別の特徴を示す複数の情報を取得し、GANに入力するベクトルに対して、取得した各情報に基づいた所定の制約条件を適用してもよい。例えば、生成サーバ100は、手書き画像の画像解析を行い、境界線等の形状を示す情報と、色を示す情報とを取得する。そして、生成サーバ100は、取得した形状を示す情報に基づいた条件と、色を示す情報に基づいた条件とを適用することで、クエリ候補画像の生成を行ってよい。また、生成サーバ100は、色を示す情報に基づいた条件として、色が付与された領域を示す情報に基づいた条件と、その領域に付与された色を示す情報に基づいた条件とに基づいて、クエリ候補画像の生成を行ってもよい。
例えば、生成サーバ100は、取引対象の登録画像を訓練データとしてGANの学習を行うことで、ランダムベクトルから取引対象の画像を生成するジェネレータを得る。例えば、生成サーバ100は、ディスクリミネイタがジェネレータの出力と登録画像とに同じラベルを付与するようにジェネレータを修正する学習と、ジェネレータの出力と登録画像とに異なるラベルを付与するようにディスクリミネイタを修正する学習とを交互に実行する。この結果、生成サーバ100は、ランダムベクトルから取引対象の登録画像を生成するGANを得ることができる。
そして、生成サーバ100は、手書き画像を端末装置10から取得した場合、以下の式(1)を満たすz*をジェネレータに対する入力として設定する。
ここで、式(1)のzとは、前回ジェネレータに入力されたベクトルであり、z0とは、ジェネレータに入力するベクトルの初期値である。また、式(1)のG(z)とは、あるベクトルzを入力した際にジェネレータが出力する画像である。また、式(1)の関数fは、ジェネレータに対して入力するベクトルに対し、画像に基づいた制約を付与する操作を示す。例えば、f(G(z))とは、あるベクトルzをジェネレータに入力した際にジェネレータが出力した画像G(z)に基づく制約を加えたベクトルを示す。また、式(1)のV0とは、手書き画像が有する色を示す情報(すなわち、色が付与された領域の特徴、および付された色の特徴を示す情報)である。また、また、式(1)のV1とは、手書き画像が有する形状を示す情報である。また、式(1)のλは、所定の定数であり、EDとは、ディスクリミネイタによって前回出力されたラベル付与の結果、すなわち、前回ジェネレータが出力した画像が取引対象の画像であるか否かの判定結果の確度である。
生成サーバ100は、式(1)の右辺に示す値が小さくなるように、GANを用いた画像生成と、生成した画像に基づくベクトルの修正とを繰り返し実行する。そして、生成サーバ100は、所定の回数だけ画像生成とベクトルの修正とを実行した場合、GANが出力する画像の精度が所定の閾値を超えた場合、前回画像を生成する際に用いたベクトルと、その画像に基づいて修正したベクトルとの差が所定の範囲内に収まる場合等には、生成した画像をクエリ候補画像として端末装置10に提供する。なお、生成サーバ100は、画像生成を行う度に、生成した画像を端末装置10に提供してもよい。
換言すると、GANが出力する画像をI、手書き画像をI’、ジェネレータに入力するベクトルをv、ジェネレータの処理を関数fで表すと、生成サーバ100は、以下の式(2)の値が最少となるように、GANを用いた画像生成と、GANに入力するベクトルの修正とを繰り返し実行する。
このような処理の結果、生成サーバ100は、手書き画像が有する特徴と類似する特徴を有する取引対象の画像をクエリ候補画像として生成することができる。
〔1−6.イテレーションについて〕
上述したように、生成サーバ100は、手書き画像に基づいた制約条件を考慮して、GANを用いた画像生成と、GANに入力するベクトルの生成した画像に基づく修正とを繰り返し実行する。すなわち、生成サーバ100は、イテレーションにより手書き画像からクエリ候補画像を生成する。
ここで、生成サーバ100は、イテレーションを行うごとに生成した画像をクエリ候補画像として端末装置10へと提供してもよい。すなわち、生成サーバ100は、手書き画像から生成される画像であって、それぞれ異なる複数の画像を端末装置10に提供してもよい。このような場合、端末装置10は、クエリ候補画像が提供される度に、画面上に提供されたクエリ候補画像を表示してもよい。例えば、端末装置10は、画面上に設定されたクエリ候補画像用の表示領域に、提供された複数のクエリ候補画像を並べて表示してもよく、提供されたクエリ候補画像のうち最も新しいクエリ候補画像のみを表示してもよい。すなわち、端末装置10は、クエリ候補画像を取得する度に、画面上に表示されるクエリ候補画像の表示を更新してもよい。
ここで、イテレーションの数が増えれば増える程、生成されるクエリ候補画像の精度が向上するものの、クエリ候補画像の生成に要する時間が増加する。そこで、複数の生成サーバ100は、それぞれ異なる回数だけイテレーションを実行してもよい。例えば、生成サーバ101は、端末装置10から手書き画像を受け付けると、上述したイテレーションを20回繰り返し、生成したクエリ候補画像を端末装置10へと提供する。一方、生成サーバ102は、端末装置10から手書き画像を受け付けると、上述したイテレーションを40回繰り返し、生成したクエリ候補画像を端末装置10へと提供する。
このように、端末装置10は、イテレーションの回数がそれぞれ異なる複数のサーバ装置に対して手書き画像を送信することで、徐々に精度が向上していく複数のクエリ候補画像を順次取得してもよい。また、端末装置10は、順次取得したクエリ候補画像を順次表示してもよい。このような処理を実行することで、端末装置10は、例えば、クエリ候補画像を生成する際の待ち時間により生じる利用者の心理的な不快感を軽減することができる。
なお、端末装置10は、表示されたクエリ候補画像のうちいずれかのクエリ候補画像が選択された場合は、クエリ候補画像の生成中断指示を各生成サーバ100へと提供してもよい。上述したイテレーションの実行中に、生成中断指示を受付けた場合、生成サーバ100は、クエリ候補画像の生成を終了してもよい。
〔1−7.検索サーバに提供されるクエリ候補画像について〕
ここで、端末装置10は、手書き画像から生成されたクエリ候補画像をクエリ画像として検索サーバ200に提供するのであれば、任意の態様でクエリ候補画像を検索サーバ200に提供して良い。例えば、図2は、実施形態に係る端末装置の表示態様の一例を示す図である。
例えば、端末装置10は、入力ウインドウPA、鉛筆アイコンSP、筆アイコンCP、ショッピングアイコンSI、戻るアイコンBI、繰り返しアイコンRDI、消しゴムアイコンEI、および表示ウインドウDAを画面上に表示する。入力インドウPAは、手書き画像の入力を受け付ける領域であり、例えば、手書きペイントの入力を受け付けるキャンパスに相当する。
鉛筆アイコンSPは、手書き画像として線を入力するための鉛筆を示すアイコンである。例えば、端末装置10は、利用者が鉛筆アイコンSPを選択し、入力ウインドウPA内で指を移動させた場合は、指の移動と対応する形状の線が入力されたものとする。筆アイコンCPは、手書き画像として色を付与するための筆を示すアイコンである。例えば、端末装置10は、利用者が筆アイコンCPのいずれかを選択し、入力ウインドウPA内で指を移動させた場合は、指の移動と対応する位置に、選択された筆アイコンCPと対応する色が付されたものとする。すなわち、端末装置10は、所謂ペイントアプリと同様のUI(User Interface)を介して、手書き画像の入力を受け付ける。
戻るアイコンBIは、前回の入力を取り消すためのアイコンである。また、繰り返しアイコンRDIは、前回の入力と同じ入力を行うためのアイコンである。また、消しゴムアイコンEIは、入力された線や付された色を消すためのアイコンである。また、表示ウインドウDAは、クエリ候補画像を表示するための領域である。また、ショッピングアイコンSIは、クエリ候補画像を用いて電子商店街の検索を行うためのアイコンである。
例えば、端末装置10は、入力ウインドウPAを介して、利用者から手書き画像の入力を受け付ける。このような場合、端末装置10は、所定の条件を満たす入力を受け付ける度に、新たな画像を取得する。例えば、端末装置10は、利用者が入力ウインドウPAに触れる度、線を描く度、色を塗る度、ストロークの度、所定の時間間隔等、任意のタイミングで入力インドウPAの手書き画像を生成サーバ100へと送信する。
なお、端末装置10は、例えば、画像解析技術等を用いて、利用者が所定の物体を描く度に手書き画像を生成サーバ100に送信してもよい。例えば、端末装置10は、利用者が靴ひもを描いたと推定される場合、靴の外観を描いたと推定される場合、ロゴを描いたと推定される場合等、所定の物体を描いたと推定される度に、手書き画像を生成サーバ100へと送信してもよい。また、端末装置10は、利用者が同じ様な操作を連続して行うと推定される場合には、それらの操作が完了したと推定された後で、手書き画像の送信を行ってもよい。例えば、端末装置10は、利用者が平行に近い線の入力を2回以上連続して行った場合、利用者が異なる態様の線を入力した後で、手書き画像の送信を行ってもよい。
ここで、鉛筆アイコンSPが選択された際に入力された線は、取引対象の形状を示す情報であると言える。また、筆アイコンCPが選択された際に付された色や、色が付された領域は、取引対象の色を示す情報であると言える。そこで、端末装置10は、所謂ペイントアプリとは異なり、鉛筆アイコンSPが選択された際に入力された線と筆アイコンCPが選択された際に付された色とを個別に保持する。そして、端末装置10は、手書き画像を送信する際、筆アイコンCPを用いて描かれた線の情報である線情報SIと、筆アイコンCPを用いて色が付された領域の情報である色領域情報CAIと、色領域情報CARが示す領域に付与された色を示す色情報CIとを生成サーバ100に送信する。
このような場合、生成サーバ100は、線情報SI、色領域情報CAI、および色情報CIとに基づく制約をベクトルに対して適用することで、複数のクエリ候補画像QCPを生成する。そして、生成サーバ100は、例えば、クエリ候補画像QCPを生成する度に、生成したクエリ候補画像QCPを端末装置10へと提供する。この結果、端末装置10は、例えば、ストロークごとに生成される複数のクエリ候補画像QCPを、生成サーバ100から取得する度に、表示ウインドウDA上に表示する。
このように、端末装置10は、生成サーバ100から取得されるクエリ候補画像QCPのうち、最も最後に取得されたクエリ候補画像QCPのみを表示することとなる。例えば、端末装置10は、利用者の入力に対してインタラクティブにクエリ候補画像QCPを取得し、取得したクエリ候補画像WCPを表示ウインドウDAに表示する。そして、端末装置10は、利用者がショッピングアイコンSIを選択した場合は、表示ウインドウDAに表示されていたクエリ候補画像QCP、すなわち、取得した複数のクエリ候補画像QCPのうち最後に取得したクエリ候補画像QCPを検索サーバ200に提供する。
なお、端末装置10は、例えば、利用者が表示ウインドウDAを選択した場合は、生成サーバ100からこれまでに取得したクエリ候補画像の一覧を表示してもよい。また、端末装置10は、一覧表示されたクエリ候補画像のうち、利用者が選択したクエリ候補画像を検索サーバ200に送信してもよい。ここで、端末装置10は、クエリ候補画像の一覧を表示する場合、全生成サーバ100が生成したクエリ候補画像をすべて表示してもよく、例えば、各生成サーバ100が生成したクエリ候補画像のうち最後に取得されたクエリ候補画像QCPのみを表示してもよい。
ここで、クエリ候補画像QCPの精度があまり高くない場合、そのクエリ候補画像を手書き画像として新たなクエリ候補画像を生成することで、精度を向上させることができると予測される。そこで、端末装置10は、手書き画像から生成された複数のクエリ候補画像のうちいずれかのクエリ候補画像を利用者が選択した場合は、選択されたクエリ候補画像から新たに生成されるクエリ候補画像を取得してもよい。例えば、端末装置10は、利用者が選択したクエリ候補画像を生成サーバ100に手書き画像として提供してもよい。
〔1−8.その他〕
ここで、生成サーバ100が生成したクエリ候補画像には、利用者が入力した手書き画像の特徴を適切に有していないものが含まれる場合がある。そこで、生成サーバ100は、生成サーバ100から取得したクエリ候補画像のうち、特徴量が所定の条件を満たすクエリ候補画像のみを表示してもよい。例えば、端末装置10は、取得した複数のクエリ候補画像のうち、特徴量が、複数のクエリ候補画像の特徴量空間における重心から所定の範囲内に含まれるクエリ候補画像を表示してもよい。
例えば、端末装置10は、クエリ候補画像を受け付ける度に、それまでに受付けたクエリ候補画像の特徴量の重心を算出する。そして、端末装置10は、新たに受付けたクエリ候補画像の特徴量が、各クエリ候補画像の特徴量の重心から所定の範囲内に収まる場合にのみ、新たに受付けたクエリ候補画像を表示してもよい。また、例えば、生成サーバ100は、これまでに送信したクエリ候補画像の重心を算出し、新たに生成したクエリ候補画像の特徴量が、各クエリ候補画像の特徴量の重心から所定の範囲内に収まる場合にのみ、生成したクエリ候補画像を端末装置10へと送信してもよい。
また、端末装置10は、例えば、所定のテクスチャの入力を受付けてもよい。このようなテクスチャが付された領域やテクスチャの種別は、例えば、筆アイコンCPを用いて入力された色が付された領域や色の種別と同様の処理により、クエリ候補画像を生成する際の制約となりえる。また、端末装置10は、スタンプ等の所定のテンプレートの入力を受付けてもよい。
〔1−9.端末装置と生成サーバとが実行する処理の一例〕
次に、図1に戻り、端末装置10が実行する提供処理と、生成サーバ100が実行する生成処理との流れの一例を説明する。まず、端末装置10は、取引対象が属するカテゴリの指定と共に、手書き画像を受け付ける(ステップS1)。このような場合、端末装置10は、所定のタイミングでその時点における手書き画像HPと指定されたカテゴリとを各生成サーバ100へと送信する(ステップS2)。
このような場合、各生成サーバ100は、それぞれ異なるカテゴリに属する取引対象の画像をランダムベクトルから生成するように学習が行われたモデルのうち、指定されたカテゴリと対応するモデルに対し、手書き画像に基づく制約条件を適用したベクトルを入力することで、クエリ候補画像を生成する(ステップS3)。例えば、生成サーバ100は、利用者が選択されたカテゴリと対応するモデルMを選択し、ランダムベクトル生成器Gが出力したランダムベクトルをモデルMに入力する。そして、生成サーバ100は、モデルMがランダムベクトルから生成したクエリ候補画像QCPが、手書き画像HPに近づくように、ランダムベクトルに対する制約を加える。
例えば、生成サーバ100は、色領域情報CAIおよび色情報CIとに基づく色制約CRとクエリ候補画像QCPとの差に基づいた制約V0を生成する。また、生成サーバ100は、線情報SIに基づく線制約SRとクエリ候補画像QCPとの差に基づいた制約V1を生成する。そして、生成サーバ100は、制約V0と制約V1とに基づいて、新たなベクトル、すなわち、前回生成したクエリ候補画像QCPをより手書き画像HPへと近づけるためのベクトルを生成し、生成したベクトルを用いて新たなクエリ候補画像QCPを生成する。なお、生成サーバ100は、このようなクエリ候補画像QCPを生成する処理を所定の回数だけ繰り返し実行する。
また、生成サーバ100は、クエリ候補画像QCPを生成した場合は、生成したクエリ候補画像QCPを端末装置10へと提供する(ステップS4)。このような場合、端末装置10は、クエリ候補画像QCPを表示する(ステップS5)。そして、端末装置10は、クエリ候補画像QCPの選択を受付けた場合は(ステップS6)、選択されたクエリ候補画像QCPをクエリ画像として検索サーバ200に送信する(ステップS7)。
ここで、検索サーバ200は、任意の画像検索手法により、クエリ画像として提供されたクエリ候補画像QCPと類似する画像を電子商店街に登録された登録画像の中から検索する。例えば、検索サーバ200は、畳み込みニューラルネットワークを用いて、クエリ画像として提供されたクエリ候補画像QCPの特徴量を抽出する(ステップS8)。そして、検索サーバ200は、近傍ベクトル検索の技術を用いて、クエリ画像候補QCPと特徴量が類似する画像の取引対象を検索する(ステップS9)。そして、検索サーバ200は、検索結果を端末装置10へと提供する(ステップS10)。この結果、端末装置10は、クエリ画像候補QCPを用いた画像検索の結果を利用者に提供することとなる。
〔1−10.取引対象の予測について〕
ここで、端末装置10は、受付けられた入力画像の履歴に基づいて生成された画像を取得してもよい。例えば、端末装置10は、受付けられた入力画像の履歴に基づいて推定された、将来受付けうる入力画像に基づいて生成されたクエリ候補画像を取得してもよい。
例えば、利用者が手書き画像として鞄を描く場合、鞄の持ち手を描いてから鞄の本体を描くと予測される。ここで、利用者が鞄の持ち手を描いていることが推定される場合、鞄の本体が描かれていなくとも、鞄全体を示すクエリ候補画像を提供することで、利用者の検索をより容易にすることができるとも考えられる。
そこで、端末装置10や生成サーバ100は、手書き画像の履歴に基づいて、利用者が描く取引対象の推定を行い、推定された取引対象のクエリ候補画像を提供してもよい。例えば、生成サーバ100は、端末装置10から取得した手書き画像の履歴に基づいて、利用者が将来入力しうる入力画像(以下、「推定画像」と記載する。)の推定を行う。例えば、生成サーバ100は、利用者が鞄の持ち手を描いていると推定される場合は、鞄全体を示す推定画像を生成する。このような推定画像は、例えば、クエリ候補画像の生成を行うモデルと同様のモデルを用いて推定されてもよく、例えば、利用者が指定したカテゴリのうち、利用者が描いた部分と類似する部分を有する取引対象の登録画像を用いて生成されてもよい。
そして、生成サーバ100は、生成された推定画像を用いて、クエリ候補画像の生成を行い、生成したクエリ候補画像を端末装置10に提供する。このような処理の結果、例えば、端末装置10は、利用者が鞄の持ち手を描いている間に、そのような持ち手を有する鞄全体のクエリ候補画像を提供することができるので、利用者による画像検索をより容易にすることができる。
〔1−11.処理の実行主体について〕
ここで、端末装置10は、生成サーバ100が実行した生成処理を自装置内で実行してもよい。すなわち、端末装置10は、手書き画像からクエリ候補画像を生成し、生成したクエリ候補画像を検索サーバ200に提供してもよい。また、生成サーバ100は、生成したクエリ画像候補QCPを端末装置10に提供するのではなく、例えば、検索サーバ200に提供してもよい。このような処理が実行される場合、検索結果は、検索サーバ200から端末装置10へと直接送信されてもよく、検索サーバ200から生成サーバ100を介して端末装置10へと送信されてもよい。
〔2.端末装置および生成サーバの構成〕
以下、上記した学習処理を実現する端末装置10および生成サーバ100が有する機能構成の一例について説明する。なお、以下の説明では、利用者が端末装置10を用いて入力した手書き画像を入力画像と総称する。また、以下の説明では、まず端末装置10が有する機能構成の一例について説明し、その後、生成サーバ100が有する機能構成の一例について説明する。
図3は、実施形態に係る端末装置および生成サーバの構成例を示す図である。図3に示すように、端末装置10は、通信部20、記憶部30、タッチパネル50、および制御部40を有する。通信部20は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部20は、ネットワークNと有線または無線で接続され、生成サーバ100や検索サーバ200との間で情報の送受信を行う。
記憶部30は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。また、記憶部30は、クエリ候補画像データベース31を記憶する。
クエリ候補画像データベース31には、生成サーバ100から取得したクエリ候補画像が登録される。例えば、図4は、実施形態に係るクエリ候補画像データベースに登録される情報の一例を示す図である。図4に示すように、クエリ候補画像データベース31には、「クエリ候補画像ID(Identifier)」、「画像データ」、および「取得順序」といった項目を有する情報が登録される。
ここで、「クエリ候補画像ID」とは、クエリ候補画像を示す識別子である。また、「画像データ」とは、クエリ候補画像の画像に関するデータである。また、「取得順序」とは、クエリ候補画像を取得した順序を示す情報である。例えば、図4に示す例では、クエリ候補画像ID「候補#1」、画像データ「クエリ候補画像#1」、および取得順序「1」が対応付けて登録されている。このような情報は、クエリ候補画像ID「候補#1」が示すクエリ候補画像のデータが画像データ「クエリ候補画像#1」であり、クエリ候補画像ID「候補#1」が示すクエリ候補画像が「1」番目に取得された画像である旨を示す。
なお、図4に示す例では「候補#1」、「クエリ候補画像#1」といった概念的な値を記載したが、実際には、クエリ候補画像を識別するための数値や文字列、各種様式の画像データ等がクエリ候補画像データベース31に登録されることとなる。なお、クエリ候補画像データベース31には、図4に示す情報以外にも、任意の情報が登録されていてよい。
図3に戻り、説明を続ける。タッチパネル50は、端末装置10が有する入力装置および表示装置である。例えば、タッチパネル50は、手書き画像の入力を受け付けるとともに、受付けた手書き画像の表示、および生成サーバ100が生成したクエリ候補画像の表示を行う。また、タッチパネル50は、利用者からの各種操作を受け付けるとともに、検索サーバ200から取得した検索結果の表示等を実現する。
制御部40は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等のプロセッサによって、端末装置10内部の記憶装置に記憶されている各種プログラムがRAM等を作業領域として実行されることにより実現される。また、制御部40は、コントローラ(controller)であり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現されてもよい。
制御部40は、入力画像受付部41、クエリ候補画像取得部42、表示部43、およびクエリ画像提供部44を有する。入力画像受付部41は、利用者が入力した画像である入力画像を受け付ける。例えば、入力画像受付部41は、タッチパネル50を介して利用者から入力画像の入力を受け付ける。例えば、入力画像受付部41は、入力画像として、形状を示す情報と、色を示す情報とを個別に受け付ける。より具体的には、入力画像受付部41は、色を示す情報として、色が付与された領域を示す情報と、領域に付与された色を示す情報とを個別に受け付ける。また、入力画像受付部41は、入力画像とともに、検索対象となる分野の指定をさらに受け付ける。
クエリ候補画像取得部42は、受け付けられた入力画像から生成される画像を取得する。例えば、クエリ候補画像取得部42は、入力画像と類似するように生成された画像をクエリ候補画像として取得する。より具体的には、クエリ候補画像取得部42は、所定のタイミングで、入力画像受付部41が受け付けた入力画像を生成サーバ100へと送信することで、生成サーバ100が生成処理により入力画像から生成した候補画像を取得する。例えば、クエリ候補画像取得部42は、所定の条件を満たす入力を受け付ける度に、入力画像を生成サーバ100へと送信することで、新たな画像を取得する。
ここで、生成サーバ100は、生成処理を実行することで、入力画像からクエリ候補画像を生成することとなる。このため、クエリ候補画像取得部42は、入力画像から生成された画像であって、取引対象の画像に類似する画像を取得することとなる。また、クエリ候補画像取得部42は、複数の生成サーバ100が生成したクエリ候補画像や、生成サーバ100がイテレーションの度に生成したクエリ候補画像を取得する。このため、クエリ候補画像取得部42は、入力画像から生成されるクエリ候補画像であって、それぞれ異なる複数のクエリ候補画像を取得することとなる。
ここで、クエリ候補画像取得部42は、入力画像からクエリ候補画像を生成する生成サーバ100であって、入力画像からクエリ候補画像を生成する処理の反復回数がそれぞれ異なる複数の生成サーバ100のそれぞれに入力画像を送信することで、各生成サーバ100から、それぞれ異なる複数のクエリ候補画像を順次取得してもよい。また、クエリ候補画像取得部42は、入力画像から生成された複数のクエリ候補画像のうちいずれかのクエリ候補画像を利用者が選択した場合は、選択されたクエリ候補画像を入力画像として再度生成サーバ100に送信することで、生成サーバ100が新たに生成したクエリ候補画像を取得してもよい。
また、クエリ候補画像取得部42は、検索サーバの検索対象となる画像の特徴を学習したモデルを用いて入力画像から生成されたクエリ候補画像を取得してもよい。例えば、クエリ候補画像取得部42は、所定の入力から検索サーバ200の検索対象となる画像と類似する画像を出力するように学習が行われたモデルが入力画像と類似する画像を出力するように、モデルに対する入力を変更することで生成された画像を取得する。例えば、クエリ候補画像取得部42は、モデルとして、画像の特徴が入力された場合に検索サーバ200の検索対象となる画像を生成するように学習が行われたモデルを用いて入力画像から生成されたクエリ候補画像を取得してもよい。また、クエリ候補画像取得部42は、モデルが出力するクエリ候補画像が入力画像に近づくように、制約が適用されたベクトルを入力することで生成された画像を取得してもよい。例えば、クエリ候補画像取得部42は、モデルとして、ランダムなベクトルから画像を生成するように学習が行われたGANに対し、入力画像に基づいた制約が適用されたベクトルを入力することで生成されたクエリ候補画像を取得してもよい。
また、クエリ候補画像取得部42は、形状を示す情報に基づいた条件と色を示す情報に基づいた条件とに基づいて生成されるクエリ候補画像を取得してもよい。また、クエリ候補画像取得部42は、色を示す情報に基づいた条件として、色が付与された領域を示す情報に基づいた条件と、領域に付与された色を示す情報に基づいた条件とに基づいて生成されるクエリ候補画像を取得してもよい。また、クエリ候補画像取得部42は、分野ごとに検索サーバ200の検索対象となる画像の特徴を学習した複数のモデルのうち、利用者から指定を受付けた分野と対応するモデルを用いて入力画像から生成されたクエリ候補画像を取得してもよい。例えば、クエリ候補画像取得部42は、利用者が指定したカテゴリを、入力画像とともに、生成サーバ100に送信することで、生成サーバ100が利用者から指定を受付けた分野と対応するモデルを用いて入力画像から生成したクエリ候補画像を取得してもよい。
また、クエリ候補画像取得部42は、受付けられた入力画像の履歴に基づいて生成された画像を取得してもよい。例えば、クエリ候補画像取得部42は、受付けられた入力画像の履歴に基づいて推定された、将来受付けうる入力画像に基づいて生成されたクエリ候補画像を取得してもよい。
表示部43は、新たなクエリ候補画像を取得する度に、取得したクエリ候補画像を表示する。例えば、表示部43は、画面上に表示ウインドウDAを設け、生成サーバ100からクエリ候補画像が取得される度に、取得されたクエリ候補画像のうち、最後に取得された画像を表示ウインドウDAに表示する。なお、表示部43は、入力ウインドウPAを表示ウインドウDAとともに設けることで、利用者が入力した入力画像と共に、取得されたクエリ候補画像を表示してもよい。また、表示部43は、取得した複数のクエリ候補画像の特徴量の重心を算出し、新たに取得されたクエリ候補画像の特徴量が、クエリ候補画像の重心から所定の範囲内に含まれる場合にのみ、新たに取得されたクエリ候補画像を表示してもよい。
クエリ画像提供部44は、画像検索を行う検索サーバ200に対して取得されたクエリ候補画像を提供する。例えば、クエリ画像提供部44は、電子商店街における取引対象の画像検索を行う検索サーバ200に対し、クエリ候補画像を提供する。このような場合、表示部43は、検索サーバ200による検索結果を表示することとなる。
なお、クエリ画像提供部44は、利用者から検索の指示を受付けた場合は、表示ウインドウDAに表示されていたクエリ候補画像を検索サーバ200に送信してもよく、取得されたクエリ候補画像のうち、最後に取得されたクエリ候補画像を検索サーバ200に提供してもよい。また、クエリ画像提供部44は、それまでに取得されたクエリ候補画像の一覧を利用者に提供し、提供したクエリ候補画像のうち利用者が選択したクエリ候補画像を検索サーバ200に送信してもよい。
続いて、生成サーバ100が有する機能構成の一例について説明する。生成サーバ100は、通信部120、記憶部130、および制御部140を有する。通信部120は、例えば、NIC等によって実現される。そして、通信部120は、ネットワークNと有線または無線で接続され、端末装置10や検索サーバ200との間で情報の送受信を行う。
記憶部130は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。また、記憶部130は、学習データデータベース131、およびモデルデータベース132を記憶する。
学習データデータベース131には、モデルの学習に用いるデータ、例えば、電子商店街に登録された取引対象の画像データが登録される。例えば、図5は、実施形態に係る学習データデータベースに登録される情報の一例を示す図である。図5に示す例では、学習データデータベース131には、「カテゴリID」、「取引対象ID」、および「画像データ」といった情報が登録される。なお、学習データデータベース131には、図5に示す情報以外にも、取引対象に関する任意の情報(例えば、価格等)が登録されていてもよい。
例えば、図5に示す例では、学習データデータベース131には、カテゴリID「カテゴリ#1」、取引対象ID「取引対象#1」、および画像データ「画像#1」といった情報が登録される。このような情報は、取引対象ID「取引対象#1」が示す取引対象が、カテゴリID「カテゴリ#1」が示すカテゴリに属する取引対象であり、その取引対象の登録画像が画像データ「画像#1」である旨を示す。なお、図5に示す例では「カテゴリ#1」、「取引対象#1」、「画像#1」といった概念的な値を記載したが、実際には、カテゴリや取引対象を識別するための数値や文字列、各種様式の画像データ等が学習データデータベース131に登録されることとなる。
図3に戻り、説明を続ける。モデルデータベース132には、登録画像の特徴を学習した各種のモデルが登録される。例えば、図6は、実施形態に係るモデルデータベースに登録される情報の一例を示す図である。図6に示す例では、モデルデータベース132には、「対応カテゴリ」、および「モデルデータ」といった情報が登録される。なお、モデルデータベース132には、図6に示す情報以外にも、モデルに対する任意の情報が登録されていてもよい。ここで、「対応カテゴリ」とは、対応付けられたモデルがどのカテゴリに属する取引対象の登録画像の特徴を学習したモデルであるかを示す情報であり、例えば、カテゴリIDである。また、モデルデータとは、モデルの構成や各種パラメータを示すデータである。
例えば、図6に示す例では、モデルデータベース132には、対応カテゴリ「カテゴリ#1」、およびモデルデータ「モデル#1」といった情報が登録される。このような情報は、対応カテゴリ「カテゴリ#1」が示すカテゴリの取引対象の登録画像の特徴を学習したモデルが、モデルデータ「モデル#1」で示されるモデルである旨を示す。なお、図6に示す例では「モデル#1」といった概念的な値を記載したが、実際には、各ノード間の接続関係や、ノード間の接続係数(すなわち、重み係数)を示す情報がモデルデータベース132に登録される。
ここで、モデルがGANやDNN等のニューラルネットワーク、若しくはSVM等といった単純パーセプトロンと同価のモデルである場合、モデルデータベース132には、モデルに入力される情報である入力情報が入力される入力層と、入力層に入力された入力情報に対して所定の処理を順次行う複数の中間層と、複数の中間層のうち最後に処理を行う終端中間層の出力に基づいて、入力情報に対応する出力情報を生成する出力層とを有するモデルのデータが登録されている。より具体的には、モデルデータベース132には、各ノードの接続関係や、ノード間の接続係数を示すデータが登録される。
ここで、モデルは、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力された情報に対し、出力層以外の各層に属する各要素を第1要素として、第1要素と第1要素の重みとに基づく演算を行うことにより、入力層に入力された情報と対応する情報を出力層から出力するようコンピュータを機能させる。なお、モデルは、人工知能ソフトウェアの一部であるプログラムモジュールとしての利用が想定されるものであってもよい。
このようなモデルは、入力層に手書き画像等の入力画像に基づく情報が入力された場合に、出力層から、入力画像が示す取引対象の特徴と類似若しくは共通する特徴を有する取引対象の画像であって、入力画像よりも詳細に取引対象の特徴を示すクエリ候補画像を出力するようコンピュータを機能させる。例えば、モデルは、CPU及びメモリを備えるコンピュータにて用いられる。具体的には、コンピュータのCPUが、メモリに記憶された学習済モデルからの指令に従って、モデルの入力層に入力された情報に対して、ニューラルネットワークにおける学習済みの重みづけ係数と応答関数等に基づく演算を行い、出力層から、入力画像が示す取引対象の特徴と類似若しくは共通する特徴を有する取引対象の画像であって、入力画像よりも詳細に取引対象の特徴を示すクエリ候補画像を出力するよう動作する。
ここで、モデルがGANにより実現される場合、モデルデータベース132に登録されるモデルは、ランダムベクトルから対応する取引対象の登録画像を生成するように学習が行われたジェネレータ(すなわち、生成器)を有し、入力画像に基づく制約が適用されたランダムベクトルが入力された場合に、出力層からクエリ候補画像を出力するようコンピュータを機能させる。例えば、モデルは、ジェネレータの出力層が前回出力したクエリ候補画像が、入力画像に近づくように、制約が適用されたランダムベクトルをジェネレータの入力層に入力することで、新たなクエリ候補画像を生成する処理を繰り返し実行するようコンピュータを機能させる。
ここで、モデルをDNN等、1つまたは複数の中間層を有するニューラルネットワークで実現される場合、各モデルが含む第1要素とは、入力層または中間層が有するいずれかのノードと見做すことができ、第2要素とは、第1要素と対応するノードから値が伝達されるノード、すなわち、次段のノードと対応し、第1要素の重みとは、第1要素と対応するノードから第2要素と対応するノードに伝達される値に対して考慮される重み、すなわち、接続係数である。
ここで、端末装置10は、学習データデータベース131に登録される学習データを用いて、入力画像からクエリ候補画像を生成するモデルを生成する。すなわち、学習データデータベース131に登録される学習データは、入力情報が入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、取引対象の登録画像の特徴を反映させた重みに基づく演算を行うことにより、入力層に手書き画像等の入力画像に基づく情報が入力された場合に、出力層から、入力画像が示す取引対象の特徴と類似若しくは共通する特徴を有する取引対象の画像であって、入力画像よりも詳細に取引対象の特徴を示すクエリ候補画像を出力するようコンピュータを機能させるためのデータである。
図3に戻り、説明を続ける。制御部140は、コントローラであり、例えば、CPU、MPU等のプロセッサによって、生成サーバ100内部の記憶装置に記憶されている各種プログラムがRAM等を作業領域として実行されることにより実現される。また、制御部140は、コントローラであり、例えば、ASICやFPGA等の集積回路により実現されてもよい。
また、制御部140は、記憶部130に記憶されるモデルに従った情報処理により、クエリ候補画像を生成する処理を実行する。例えば、制御部140は、入力画像に基づく制約が適用された情報をモデルに入力し、モデルが出力するクエリ候補画像が入力画像に近づくように修正された制約が適用された情報を再度モデルに入力する処理を繰り返し実行することで、クエリ候補画像をモデルから出力させる処理を実行する。
図3に示すように、制御部140は、処理画像受付部141、生成部142、クエリ候補画像提供部143、および学習部144を有する。処理画像受付部141は、利用者が入力した画像である入力画像を受け付ける。例えば、処理画像受付部141は、端末装置10がタッチパネル50等を介して利用者から入力を受付けた入力画像を受け付ける。
生成部142は、受け付けられた入力画像から生成される画像であって、画像検索を行う検索サーバ200に対して検索クエリとして提供される画像、すなわち、クエリ候補画像を生成する。例えば、生成部142は、端末装置10から入力画像と、利用者が指定したカテゴリとを受け付けると、モデルデータベース132を参照し、指定されたカテゴリと対応するモデルを読み出す。そして、生成部142は、読み出したモデルを用いて、入力画像からクエリ候補画像を生成する生成処理を実行する。
例えば、生成部142は、モデルに対して入力画像に基づく制約が適用された情報を入力し、モデルにクエリ候補画像を出力させる。そして、生成部142は、出力されたクエリ候補画像が、入力画像により近づくように、モデルに対して入力する情報に新たな制約を適用し、モデルに新たなクエリ候補画像を出力させる。このような処理を繰り返し実行することで、生成部142は、入力画像からクエリ候補画像の生成を行う。
なお、各生成サーバ100は、それぞれ異なる回数だけ、クエリ候補画像を生成する際の繰り返し処理を実行してもよい。また、生成部142は、検索サーバ200の検索対象となる画像の特徴を学習したモデルを用いて入力画像からクエリ候補画像を生成してもよい。また、生成部142は、画像の特徴が入力された場合に検索サーバ200の検索対象となる画像を生成するように学習が行われたモデルを用いて入力画像からクエリ候補画像を生成してもよい。また、生成部142は、モデルとして、ランダムなベクトルから画像を生成するように学習が行われたGANに対し、入力画像に基づいた制約が適用されたベクトルを入力することでクエリ候補画像を生成してもよい。また、生成部142は、モデルが出力する画像が入力画像に近づくように、制約が適用されたベクトルを入力することでクエリ候補画像を繰り返し生成してもよい。
また、生成部142は、入力画像として、形状を示す情報と、前記色を示す情報とを個別に受け付けた場合、形状を示す情報に基づいた条件と色を示す情報に基づいた条件とを個別に用いて、クエリ候補画像を生成してもよい。例えば、生成部142は、モデルが生成したクエリ候補画像に含まれる像の形状が、入力画像として受付けた情報が示す形状に近くなり、かつ、クエリ候補画像に含まれる像の色や色が付された領域が、入力画像として受付けた情報が示す色に近くなるように、モデルに入力するベクトルを修正してもよい。
また、生成部142は、色を示す情報として、色が付与された領域を示す情報と、当該領域に付与された色を示す情報とを個別に受け付けた場合、色を示す情報に基づいた条件として、色が付与された領域を示す情報に基づいた条件と、領域に付与された色を示す情報に基づいた条件とに基づいて、クエリ候補画像の生成を行ってもよい。すなわち、生成部142は、上述した各種の生成処理により、入力画像から、クエリ候補画像の生成を行う。
なお、生成部142は、推定画像の生成や、推定画像を用いたクエリ候補画像の生成を行ってもよい。例えば、生成部142は手書き画像の履歴に基づいて、推定画像の推定をう。そして、生成部142は、推定画像をモデルに入力することで、利用者が将来入力すると推定される推定画像に基づいたクエリ候補画像の生成を行ってもよい。
クエリ候補画像提供部143は、生成された画像を提供する。例えばクエリ候補画像提供部143は、生成部142がクエリ候補画像を生成する度に、生成されたクエリ候補画像を端末装置10へと送信する。なお、クエリ候補画像提供部143は、生成された各クエリ候補画像の特徴量を算出し、算出した各特徴量の重心を求めるとともに、新たに生成されたクエリ候補画像の特徴量が重心から所定の範囲内に含まれる場合にのみ、新たに生成されたクエリ候補画像を端末装置10へと提供してもよい。また、クエリ候補画像提供部143は、生成部142が所定の回数だけイテレーションを実行した場合に、最後に生成されたクエリ候補画像のみを提供してもよく、例えば、生成部142が生成したクエリ候補画像のうち、特徴量が重心に最も近いクエリ候補画像のみを提供してもよい。また、クエリ候補画像提供部143は、生成したクエリ候補画像を直接検索サーバ200へと提供してもよい。
学習部144は、モデルの学習を行う。例えば、学習部144は、電子商店街における取引対象の登録画像を、取引対象が属するカテゴリごとに収集し、モデルに対して、登録画像が有する特徴をカテゴリごとに学習させる。
例えば、学習部144は、学習データデータベース131を参照し、所定のカテゴリに属する取引対象の登録画像を読み出す。続いて、学習部144は、ジェネレータとディスクリミネイタとを有するGANを所定のカテゴリと対応するモデルとして生成する。また、学習部144は、生成したモデルのジェネレータにランダムベクトルを入力した際にジェネレータが生成する画像と、読み出した登録画像とに異なるラベルを付与するようにディスクリミネイタの学習を行い、ランダムベクトルが入力された際に生成する画像と、読み出した登録画像とにディスクリミネイタが同じラベルを付与するようにジェネレータの学習を行う。そして、学習部144は、生成したモデルをモデルデータベース132に登録する。このような学習処理により学習が行われたモデルは、取引対象の登録画像が有する特徴がノード間の重みづけ係数に反映されることとなる。
〔3.処理フロー〕
次に、図7、図8を用いて、端末装置10および生成サーバ100が実行する提供処理および生成処理の手順の一例について説明する。図7は、実施形態に係る端末装置が実行する処理の流れの一例を示すフローチャートである。また、図8は、実施形態に係る生成サーバが実行する処理の流れの一例を示すフローチャートである。
まず、図7を用いて、端末装置10が実行する処理の流れの一例を説明する。まず、端末装置10は、利用者からカテゴリの指定と、入力画像とを受け付ける(ステップS101)。このような場合、端末装置10は、入力画像を複数の生成サーバ100に送信し、入力画像を制約条件として制約付きGANが生成した画像をクエリ候補画像として取得する(ステップS102)。そして、端末装置10は、取得したクエリ画像候補を表示する(ステップS103)。
ここで、端末装置10は、検索指示を受付けたか否かを判定し(ステップS104)、受付けていない場合は(ステップS104:No)、ステップS102を実行する。一方、端末装置10は、検索指示を受付けた場合は(ステップS104:Yes)、指定されたクエリ画像候補、あるいは、最後に取得したクエリ画像候補を検索サーバ200に提供する(ステップS105)。そして、端末装置10は、検索結果を表示し(ステップS106)、処理を終了する。
続いて、図8を用いて、生成サーバ100が実行する処理の流れの一例を説明する。まず、生成サーバ100は、入力画像と指定されたカテゴリとを受け付ける(ステップS201)。このような場合、生成サーバ100は、モデルのうち、指定されたカテゴリと対応するモデルを選択する(ステップS202)。そして、生成サーバ100は、選択したモデルを用いて、ランダムベクトルから画像を生成し(ステップS203)、生成した画像が入力画像に近づくように、ランダムベクトルに対して制約を適用し、新たな画像を生成する(ステップS204)。ここで、生成サーバ100は、ステップS204の処理を所定回数行った否かを判定し(ステップS205)、行っていない場合は(ステップS205:No)、ステップS204を再度実行する。
一方、生成サーバ100は、処理を所定回数行った場合は(ステップS205:Yes)、生成した画像をクエリ候補画像として提供し(ステップS206)、処理を終了する。なお、例えば、生成サーバ100は、ステップS204の次にステップS206を実行し、その後、ステップS205の処理を実行してもよい。
〔4.変形例〕
上記では、端末装置10および生成サーバ100による提供処理および生成処理の一例について説明した。しかしながら、実施形態は、これに限定されるものではない。以下、端末装置10および生成サーバ100による提供処理および生成処理のバリエーションについて説明する。
〔4−1.装置構成〕
端末装置10は、任意の数の生成サーバ100と通信可能に接続されていてもよい。また、生成サーバ100が実行する生成処理は、端末装置10により実現されてもよい。また、端末装置10により実行させる提供処理は、生成サーバ100により実現されてもよい。例えば、端末装置10は、図3に示す入力画像受付部41のみを有し、クエリ候補画像取得部42やクエリ画像提供部44は、生成サーバ100が有していてもよい。また、記憶部130に登録された各種の情報は、生成サーバ100外部のストレージサーバにより管理されるものであってもよい。
〔4−2.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、上記してきた各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
〔5.プログラム〕
また、上述した実施形態に係る端末装置10および生成サーバ100は、例えば図9に示すような構成のコンピュータ1000によって実現される。図9は、ハードウェア構成の一例を示す図である。コンピュータ1000は、出力装置1010、入力装置1020と接続され、演算装置1030、一次記憶装置1040、二次記憶装置1050、出力IF(Interface)1060、入力IF1070、ネットワークIF1080がバス1090により接続された形態を有する。
演算装置1030は、一次記憶装置1040や二次記憶装置1050に格納されたプログラムや入力装置1020から読み出したプログラム等に基づいて動作し、各種の処理を実行する。一次記憶装置1040は、RAM等、演算装置1030が各種の演算に用いるデータを一次的に記憶するメモリ装置である。また、二次記憶装置1050は、演算装置1030が各種の演算に用いるデータや、各種のデータベースが登録される記憶装置であり、ROM(Read Only Memory)、HDD(Hard Disk Drive)、フラッシュメモリ等により実現される。
出力IF1060は、モニタやプリンタといった各種の情報を出力する出力装置1010に対し、出力対象となる情報を送信するためのインタフェースであり、例えば、USB(Universal Serial Bus)やDVI(Digital Visual Interface)、HDMI(登録商標)(High Definition Multimedia Interface)といった規格のコネクタにより実現される。また、入力IF1070は、マウス、キーボード、およびスキャナ等といった各種の入力装置1020から情報を受信するためのインタフェースであり、例えば、USB等により実現される。
なお、入力装置1020は、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等から情報を読み出す装置であってもよい。また、入力装置1020は、USBメモリ等の外付け記憶媒体であってもよい。
ネットワークIF1080は、ネットワークNを介して他の機器からデータを受信して演算装置1030へ送り、また、ネットワークNを介して演算装置1030が生成したデータを他の機器へ送信する。
演算装置1030は、出力IF1060や入力IF1070を介して、出力装置1010や入力装置1020の制御を行う。例えば、演算装置1030は、入力装置1020や二次記憶装置1050からプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行する。
例えば、コンピュータ1000が端末装置10として機能する場合、コンピュータ1000の演算装置1030は、一次記憶装置1040上にロードされたプログラムまたはデータ(例えば、モデル)を実行することにより、制御部40の機能を実現する。また、コンピュータ1000が生成サーバ100として機能する場合、コンピュータ1000の演算装置1030は、一次記憶装置1040上にロードされたプログラムまたはデータ(例えば、モデル)を実行することにより、制御部140の機能を実現する。コンピュータ1000の演算装置1030は、これらのプログラムまたはデータ(例えば、モデル)を一次記憶装置1040から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。
〔6.効果〕
上述したように、端末装置10は、利用者が入力した画像である入力画像を受け付けると、受け付けられた入力画像から生成されるクエリ候補画像を取得し、画像検索を行う検索サーバ200に対して取得されたクエリ候補画像を提供する。例えば、端末装置10は、入力画像から生成された画像であって、入力画像と類似するように生成された画像をクエリ候補画像として取得する。より具体的な例を挙げると、端末装置10は、取引対象の画像に類似するクエリ候補画像を取得し、検索サーバ200にクエリ候補画像を提供する。このように、端末装置10は、入力画像そのものをクエリ画像とするのではなく、入力画像から生成されたクエリ候補画像をクエリ画像とするので、より精度の高い検索を実現できる結果、利用者が所望する検索を容易にすることができる。
また、端末装置10は、入力画像から生成されるクエリ候補画像であって、それぞれ異なる複数のクエリ候補画像を取得する。このため、端末装置10は、複数のクエリ候補画像から利用者が所望する取引対象を示すクエリ候補画像の選択を受け付けることができる。
また、端末装置10は、入力画像からクエリ候補画像を生成する生成サーバ100であって、入力画像からクエリ候補画像を生成する処理の反復回数がそれぞれ異なる複数の生成サーバ100から、複数の画像を順次取得する。このため、端末装置10は、徐々に精度が向上する複数のクエリ候補画像を順番に取得するので、クエリ候補画像を生成する際の待ち時間にともなう利用者の心理的な負担を軽減することができる。
また、端末装置10は、取得した複数のクエリ候補画像のうち、最後に取得されたクエリ候補画像を検索サーバ200に対して提供する。このため、端末装置10は、利用者が所望する取引対象の特徴を最も適切に表していると推定されるクエリ候補画像を、検索サーバ200に提供することができるので、利用者が所望する検索を精度よく行うことができる。
また、端末装置10は、新たなクエリ候補画像を取得する度に、取得したクエリ候補画像を表示する。また、端末装置10は、表示されたクエリ候補画像のうち、利用者によって選択されたクエリ候補画像を検索サーバ200に提供する。もしくは、端末装置10は、取得されたクエリ候補画像のうち、最後に取得されたクエリ候補画像を表示する。また、端末装置10は、利用者から検索の指示を受付けた際に表示されていたクエリ候補画像を検索サーバ200に提供する。また、端末装置10は、利用者が入力した入力画像と共に、取得されたクエリ候補画像を表示する。このため、端末装置10は、利用者に対してクエリ候補画像を提供し、利用者が選択したクエリ候補画像をクエリ画像とするので、利用者が所望する検索を精度よく行うことができる。
また、端末装置10は、複数のクエリ候補画像のうち、特徴量が、その複数の画像の特徴量空間における重心から所定の範囲内に含まれるクエリ候補画像を表示する。このため、端末装置10は、明らかに誤りと推定されるクエリ候補画像の表示やクエリ画像としての採用を防ぐことができる。
また、端末装置10は、所定の条件を満たす入力を受け付ける度に、新たなクエリ候補画像を取得する。このため、端末装置10は、利用者に対し、現在の入力に対するクエリ候補画像を示唆することができる。
また、端末装置10は、入力画像から生成された複数のクエリ候補画像のうちいずれかのクエリ候補画像を利用者が選択した場合は、選択されたクエリ候補画像から新たに生成されるクエリ候補画像を取得する。このため、端末装置10は、より精度の高いクエリ候補画像を利用者に提供できる。
また、端末装置10は、検索サーバ200の検索対象となる画像の特徴を学習したモデルを用いて入力画像から生成されたクエリ候補画像を取得する。例えば、端末装置10は、所定の入力から検索サーバ200の検索対象となる画像と類似する画像を出力するように学習が行われたモデルが入力画像と類似する画像を出力するように、モデルに対する入力を変更することで生成された画像を取得する。また、端末装置10は、モデルとして、画像の特徴が入力された場合に検索サーバ200の検索対象となる画像を生成するように学習が行われたモデルを用いて入力画像から生成されクエリ候補た画像を取得する。また、端末装置10は、モデルとして、ランダムなベクトルから画像を生成するように学習が行われたGANに対し、入力画像に基づいた制約が適用されたベクトルを入力することで生成されたクエリ候補画像を取得する。また、端末装置10は、モデルが出力する画像が入力画像に近づくように、制約が適用されたベクトルを入力することで生成されたクエリ候補画像を取得する。このため、端末装置10は、入力画像よりも検索精度の向上が可能なクエリ候補を提供することができる。
また、端末装置10は、入力画像として、形状を示す情報と、色を示す情報とを個別に受け付け、形状を示す情報に基づいた条件と色を示す情報に基づいた条件とに基づいて生成されるクエリ候補画像を取得する。また、端末装置10は、色を示す情報として、色が付与された領域を示す情報と、その領域に付与された色を示す情報とを個別に受け付け、色を示す情報に基づいた条件として、色が付与された領域を示す情報に基づいた条件と、その領域に付与された色を示す情報に基づいた条件とに基づいて生成されるクエリ候補画像を取得する。このため、端末装置10は、入力情報が示す取引対象の特徴を適切に示すクエリ候補画像を取得することができる。
また、端末装置10は、検索対象となる分野の指定をさらに受付け、分野ごとに検索サーバ200の検索対象となる画像の特徴を学習した複数のモデルのうち、指定を受付けた分野と対応するモデルを用いて入力画像から生成されたクエリ候補画像を取得する。このため、端末装置10は、クエリ候補画像の精度をさらに向上させることができる。
また、端末装置10は、受付けられた入力画像の履歴に基づいて生成された画像を取得する。例えば、端末装置10は、受付けられた入力画像の履歴に基づいて推定された、将来受付けうる入力画像に基づいて生成されたクエリ候補画像を取得する。この結果、例えば、端末装置10は、利用者が鞄の持ち手を描いたと推定される場合に、そのような持ち手から推定された鞄の画像を入力画像として用いたクエリ候補画像を取得するので、利用者による画像検索をより容易にすることができる。
また、生成サーバ100は、利用者が入力した画像である入力画像を受付け、受け付けられた入力画像から生成されるクエリ候補画像であって、画像検索を行う検索サーバ200に対して検索クエリとして提供される画像を生成し、生成されたクエリ候補画像を提供する。このため、生成サーバ100は、利用者が所望する検索を容易にすることができる。
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
また、上記してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、生成部は、配信手段や配信回路に読み替えることができる。