(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023183130
(43)【公開日】2023-12-27
(54)【発明の名称】情報処理プログラム、情報処理方法、情報処理装置および情報処理システム
(51)【国際特許分類】
G06F 16/583 20190101AFI20231220BHJP
G06F 16/53 20190101ALI20231220BHJP
【FI】
G06F16/583
G06F16/53
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022096589
(22)【出願日】2022-06-15
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】山田 萌
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175DA02
5B175FA01
5B175GB05
5B175HB03
(57)【要約】
【課題】ユーザに入力される検索文章に対する各候補画像の類似度計算を、効率的に算出すること。
【解決手段】情報処理装置は、複数の画像データにそれぞれ対応する複数の第1特徴量データを、通信可能なサーバ装置から受信する。情報処理装置は、検索条件に含まれるテキストデータを取得する。情報処理装置は、取得したテキストデータをサーバ装置に送信することに応じて、サーバ装置から送信される、テキストデータに対応する第2特徴量データを受信する。情報処理装置は、複数の第1特徴量データと第2特徴量データとの複数の類似度を算出する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数の画像データにそれぞれ対応する複数の第1特徴量データを、通信可能なサーバ装置から受信し、
検索条件に含まれるテキストデータを取得し、
取得した前記テキストデータを前記サーバ装置に送信することに応じて、前記サーバ装置から送信される、前記テキストデータに対応する第2特徴量データを受信し、
前記複数の第1特徴量データと前記第2特徴量データとの複数の類似度を算出する
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項2】
前記複数の類似度の算出結果を出力する処理を更にコンピュータに実行させることを特徴とする請求項1に記載の情報処理プログラム。
【請求項3】
前記第1特徴量データおよび前記第2特徴量データは、ベクトルデータであり、前記複数の類似度を算出する処理は、前記複数の第1特徴量データと前記第2特徴量データとの複数のコサイン類似度、内積、ユークリッド距離の少なくともいずれかに基づいて、前記複数の類似度を算出することを特徴とする請求項1に記載の情報処理プログラム。
【請求項4】
前記複数の類似度のうち、前記第2特徴量データとの類似度が、最大類似度から所定数番目までの複数の類似度に対応する複数の第1特徴量データであって、該複数の第1特徴量データに対応する画像データを、特定画像データとして選択し、選択した複数の特定画像データと、前記テキストデータとを前記サーバ装置に送信して、前記サーバ装置により算出された前記複数の特定画像データと前記テキストデータとの複数の類似度を受信し、受信した複数の類似度によって、前記算出する処理により算出された複数の類似度を修正する処理を更にコンピュータに実行させることを特徴とする請求項1に記載の情報処理プログラム。
【請求項5】
複数の画像データにそれぞれ対応する複数の第1特徴量データを、通信可能なサーバ装置から受信し、
検索条件に含まれるテキストデータを取得し、
取得した前記テキストデータを前記サーバ装置に送信することに応じて、前記サーバ装置から送信される、前記テキストデータに対応する第2特徴量データを受信し、
前記複数の第1特徴量データと前記第2特徴量データとの複数の類似度を算出する
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項6】
複数の画像データにそれぞれ対応する複数の第1特徴量データを、通信可能なサーバ装置から受信し、
検索条件に含まれるテキストデータを取得し、
取得した前記テキストデータを前記サーバ装置に送信することに応じて、前記サーバ装置から送信される、前記テキストデータに対応する第2特徴量データを受信し、
前記複数の第1特徴量データと前記第2特徴量データとの複数の類似度を算出する
処理を実行する制御部を有する情報処理装置。
【請求項7】
情報処理装置と、前記情報処理装置と通信可能なサーバ装置とを有する情報処理システムであって、
前記情報処理装置は、
複数の画像データにそれぞれ対応する複数の第1特徴量データを、前記サーバ装置から受信し、
検索条件に含まれるテキストデータを取得し、
取得した前記テキストデータを前記サーバ装置に送信することに応じて、前記サーバ装置から送信される、前記テキストデータに対応する第2特徴量データを受信し、
前記複数の第1特徴量データと前記第2特徴量データとの複数の類似度を算出する
処理を実行する制御部を有することを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラム等に関する。
【背景技術】
【0002】
ユーザに与えられた文章と候補画像との類似度を求めてユーザに返すWebサービスとして、従来技術1、従来技術2、従来技術3等がある。以下において、従来技術1、従来技術2、従来技術3について、順に説明を行う。
【0003】
まず、従来技術1について説明する。
図12は、従来技術1を説明するための図である。
図12には、ユーザ端末10と、ユーザ側のサーバ11aと、サービスプロバイダ側のサーバ11bとが含まれる。サーバ11aは、ユーザ端末10から検索文章5の入力を受け付けると、検索文章5と、サーバ11aが保持する複数の候補画像6とを、サーバ11bに送信する。
【0004】
サーバ11bは、検索文章5および複数の候補画像6を受信すると、類似度計算プログラムを実行する。サーバ11bは、類似度計算プログラムを実行することで、検索文章5の文章ベクトルおよび複数の候補画像6の各画像ベクトルを算出し、文章ベクトルと、各画像ベクトルとの類似度を計算する。これによって、サーバ11bは、検索文章5と、複数の候補画像6との類似度を計算し、検索文章5と複数の候補画像6との類似度を、サーバ11aに送信する。サーバ11aは、検索文章5と複数の候補画像6との類似度を、処理結果として、ユーザ端末10に通知する。
【0005】
サーバ11aは、ユーザ端末10から、検索文章5の入力を受け付ける度に、上記処理を繰り返し実行し、サーバ11bから、検索文章5と複数の候補画像6との類似度を受信する。
【0006】
続いて、従来技術2について説明する。
図13は、従来技術2を説明するための図である。
図13には、ユーザ端末12と、ユーザ側のサーバ13aと、サービスプロバイダ側のサーバ13bとが含まれる。サーバ13aは、サーバ13aが保持する複数の候補画像6を、サーバ13bに、事前に送信する。たとえば、サーバ13bは、複数の候補画像6の各画像ベクトルI
1,I
2,I
3,・・・を算出し、算出した各画像ベクトルI
1,I
2,I
3,・・・を保持する。
【0007】
サーバ13aは、ユーザ端末12から検索文章5の入力を受け付けると、検索文章5をサーバ13bに送信する。サーバ13bは、検索文章5を受信すると、検索文章5の文章ベクトルを計算し、計算した文章ベクトルと、保持しておいた各画像ベクトルI1,I2,I3,・・・との類似度を計算する。これによって、サーバ13bは、検索文章5と、複数の候補画像6との類似度を計算し、検索文章5と複数の候補画像6との類似度のランキングを、サーバ13aに送信する。サーバ13aは、検索文章5と複数の候補画像6との類似度のランキングを、処理結果として、ユーザ端末12に通知する。
【0008】
サーバ13aは、ユーザ端末12から、検索文章5の入力を受け付ける度に、上記処理を繰り返し実行し、サーバ13bから、検索文章5と複数の候補画像6との類似度を受信する。
【0009】
続いて、従来技術3について説明する。
図14は、従来技術3を説明するための図である。
図14には、ユーザ端末14と、サーバ15(ユーザ側のサーバ)とが含まれる。サーバ15は、
図13で説明したユーザ側のサーバ13aの機能と、プロバイダ側のサーバ13bの機能とを有するサーバである。サーバ15は、サーバ15が保持する複数の候補画像6の各画像ベクトルI
1,I
2,I
3,・・・を算出し、算出した各画像ベクトルI
1,I
2,I
3,・・・を保持する。
【0010】
サーバ15は、ユーザ端末14から検索文章5の入力を受け付けると、検索文章5の文章ベクトルを計算し、計算した文章ベクトルと、保持しておいた各画像ベクトルI1,I2,I3,・・・との類似度を計算する。これによって、サーバ15は、検索文章5と、複数の候補画像6との類似度を計算し、検索文章5と複数の候補画像6との類似度のランキングを、ユーザ端末14に通知する。
【先行技術文献】
【特許文献】
【0011】
【発明の概要】
【発明が解決しようとする課題】
【0012】
たとえば、従来技術1では、サーバ11aが、ユーザ端末10から検索文章5の入力を受け付ける度に、検索文章5と複数の候補画像6を、サーバ11bに送信するため、ネットワーク負荷が大きい。また、サーバ11aが、サーバ11bから類似度の算出結果を受信するまでに時間を要する。
【0013】
ここで、従来技術2では、従来技術1と比較して、ネットワーク負荷を軽減でき、類似度の計算結果を受信するまでの時間を短縮できるが、サーバ13bに複数の候補画像6の画像ベクトルが保持されたままとなる。画像ベクトルから、元の候補画像を復元できる場合があるため、候補画像にユーザ側の機密情報が含まれている場合には、従来技術2を利用することは難しい。
【0014】
一方、従来技術3では、ユーザ側のサーバ15が、複数の候補画像6の画像ベクトルを保持するため、候補画像にユーザ側の機密情報が含まれている場合も利用可能である。しかし、検索文章5、候補画像6をベクトル化するための大規模な計算リソースが、ユーザ側のサーバ15に備えられていることが前提となり、ユーザのコスト面の負担が大きくなる。
【0015】
このため、ユーザに入力される検索文章に対する各候補画像の類似度を、効率的に算出することが求められる。すなわち、ユーザに入力される検索文章に対する各候補画像の類似度を算出する場合に、ユーザ側のサーバに大規模な計算リソースを準備せずに、ネットワーク負荷をかけず、高速に処理結果をユーザ端末に通知することが好ましい。
【0016】
1つの側面では、本発明は、検索文章と各候補画像との類似度計算を効率的に実行することができる情報処理プログラム、情報処理方法、情報処理装置および情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【0017】
第1の案では、コンピュータに次の処理を実行させる。コンピュータは、複数の画像データにそれぞれ対応する複数の第1特徴量データを、通信可能なサーバ装置から受信する。コンピュータは、検索条件に含まれるテキストデータを取得する。コンピュータは、取得したテキストデータをサーバ装置に送信することに応じて、サーバ装置から送信される、テキストデータに対応する第2特徴量データを受信する。コンピュータは、複数の第1特徴量データと第2特徴量データとの複数の類似度を算出する。
【発明の効果】
【0018】
ユーザに入力される検索文章に対する各候補画像の類似度計算を、効率的に算出できる。
【図面の簡単な説明】
【0019】
【
図1】
図1は、本実施例に係る情報処理システムの処理を説明するための図である。
【
図2】
図2は、本実施例に係るユーザ側のサーバの構成を示す機能ブロック図である。
【
図3】
図3は、候補画像テーブルのデータ構造の一例を示す図である。
【
図4】
図4は、類似度テーブルのデータ構造の一例を示す図である。
【
図5】
図5は、サービスプロバイダ側のサーバの構成を示す機能ブロック図である。
【
図6】
図6は、本実施例に係るユーザ側のサーバの処理手順を示すフローチャートである。
【
図7】
図7は、本実施例に係るサービスプロバイダ側のサーバの処理手順を示すフローチャートである。
【
図8】
図8は、その他の情報処理システムの例を示す図(1)である。
【
図9】
図9は、その他の情報処理システムの例を示す図(2)である。
【
図10】
図10は、実施例のユーザ側のサーバと同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【
図11】
図11は、実施例のサービスプロバイダ側のサーバと同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【0020】
以下に、本願の開示する情報処理プログラム、情報処理方法、情報処理装置および情報処理システムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例0021】
本実施例に係る情報処理システムの処理の一例について説明する。
図1は、本実施例に係る情報処理システムの処理を説明するための図である。
図1に示す情報処理システムは、ユーザ端末20と、ユーザ側のサーバ100と、サービスプロバイダ側のサーバ200とを有する。
【0022】
ユーザ端末20と、サーバ100とはネットワークを介して相互に接続される。サーバ100と、サーバ200とはネットワークを介して相互に接続される。たとえば、サーバ100と、サーバ200とは、以下に示すステップS1~S4の処理を行う。
【0023】
サーバ100は、候補画像データIm1,Im2,Im3を保持しており、候補画像データIm1,Im2,Im3を、サーバ200に送信する(ステップS1)。
【0024】
サーバ200は、候補画像データIm1,Im2,Im3を受信すると、候補画像データIm1,Im2,Im3の画像ベクトルI1,I2,I3を算出する。サーバ200は、画像ベクトルI1,I2,I3をサーバ100に送信する(ステップS2)。サーバ200は、画像ベクトルI1,I2,I3をサーバ100に送信した後、画像ベクトルI1,I2,I3を自装置(サーバ200)に保存せず、削除する。
【0025】
サーバ100は、ユーザ端末20から、検索文章データ30の入力を受け付けると、検索文章データ30を、サーバ200に送信する(ステップS3)。
【0026】
サーバ200は、検索文章データ30を受信すると、検索文章データ30の文章ベクトルを算出し、算出した文章ベクトルをサーバ100に送信する(ステップS4)。サーバ200は、文章ベクトルをサーバ100に送信した後、文章ベクトルを自装置(サーバ200)に保存せず、削除する。
【0027】
サーバ100は、画像ベクトルI1,I2,I3と、検索文章データ30の文章ベクトルとのコサイン類似度を算出し、類似度を基にして、候補画像データIm1,Im2,Im3のランキングを行い、ランキング結果を、ユーザ端末20に通知する。
【0028】
たとえば、画像ベクトルI
1と文章ベクトルとの類似度をR1とする。画像ベクトルI
2と文章ベクトルとの類似度をR2とする。画像ベクトルI
3と文章ベクトルとの類似度をR3とする。類似度の大小関係を、R3>R2>R1とすると、候補画像データIm1,Im2,Im3のランキングは、上位から、候補画像データIm3、候補画像データIm2、候補画像データIm1となる。
図1では、候補画像データIm1,Im2,Im3のみを示すが、サーバ100は、他の複数の候補画像データを有していてもよく、他の複数の候補画像データを含めて、上記処理を実行し、各候補画像データのランキングを行ってもよい。
【0029】
上記のようにユーザ側のサーバ100は、検索条件の検索文章データ30を取得した際、文章ベクトルの算出をサーバ200に依頼し、サーバ200から通知される文章ベクトルを受信する。サーバ100は、受信した文章ベクトルと、サーバ200から事前に取得したおいた複数の画像ベクトルとを用いて、検索文章データと候補画像データとの類似度を算出し、類似度算出について、効率化を図ることができる。すなわち、検索文章データに対する各候補画像データの類似度を算出する場合に、ユーザ側のサーバ100に大規模な計算リソースを準備せずに、ネットワーク負荷をかけず、高速に処理結果をユーザ端末20に通知することができる。
【0030】
ここで、情報処理システムのサーバ100およびサーバ200は、上記の処理に加えて、下記に示すS5、S6の処理を行ってもよい。
【0031】
サーバ100は、M個の候補画像データのうち、ランキングが最上位からN番目までの候補画像データを選択する。MおよびNは自然数であり、M>Nとする。サーバ100は、選択したN個の候補画像データと検索文章データ30とを、サーバ200に送信する(ステップS5)。
【0032】
サーバ200は、N個の候補画像データと検索文章データ30と受信すると、サーバ100よりも高精度な処理によって、N個の候補画像データと検索文章データ30との類似度をそれぞれ算出し、N個の候補画像データと検索文章データ30との複数の類似度をサーバ100に送信する(ステップS6)。サーバ100は、サーバ200から受信した類似度によって、ランキングが最上位からN番目までの候補画像データと、文章ベクトルとの類似度を更新し、更新した類似度によって、各候補画像データのランキングを更新する。サーバ100は、更新したランキング結果を、ユーザ端末20に通知する。
【0033】
たとえば、サーバ100は、類似度の計算を行う場合、候補画像データの画像ベクトルと、検索文章データの文章ベクトルとのコサイン類似度を計算する。一方、サーバ200は、訓練済みの学習モデル(NN:Neural Network)に、候補画像データと、検索文章データとを入力することで、候補画像データと、検索文章データとの類似度を算出する。コサイン類似度は、計算コストが少ないが、学習モデルによる類似度の算出結果と比較して、精度が低い。上記のような処理を行うことで、コサイン類似度によるランキング結果を先に通知し、後から、学習モデルを用いた結果によって、ランキング結果を修正することができ、より正確な類似度の情報を、ユーザ端末20に通知することができる。なお、候補画像データの画像ベクトルと検索文章データの文章ベクトルとの類似度の算出には、コサイン類似度に代えて、例えば、候補画像データの画像ベクトルと検索文章データの文章ベクトルの内積やユークリッド距離を用いられてもよい。ベクトルの内積やユークリッド距離についても、計算コストが少ない類似度の算出手法として採用することが可能である。ベクトルの内積を類似度に用いる場合、内積の値が大きいほど類似度は高くなる。ベクトルのユークリッド距離を類似度に用いる場合、ユークリッド距離の値が小さい(距離が近い)ほど類似度は高くなる。また、候補画像データの画像ベクトルと検索文章データの文章ベクトルとの類似度は、ベクトルのコサイン類似度、内積、ユークリッド距離の2つ以上に基づいて算出される指標値であってもよい。
【0034】
次に、本実施例に係るユーザ側のサーバ100の構成例と、サービスプロバイダ側のサーバ200の構成例とについて順に説明する。
【0035】
まず、ユーザ側のサーバ100の構成例について説明する。
図2は、本実施例に係るユーザ側のサーバの構成を示す機能ブロック図である。
図2に示すように、サーバ100は、通信部110、入力部120、表示部130、記憶部140、制御部150を有する。
【0036】
通信部110は、ネットワークを介して、ユーザ端末20、サーバ200との間でデータ通信を実行する。後述する制御部150は、通信部110を介して、ユーザ端末20、サーバ200との間でデータをやり取りする。
【0037】
入力部120は、サーバ100の制御部150に各種の情報を入力する入力装置である。入力部120は、キーボードやマウス、タッチパネル等に対応する。
【0038】
表示部130は、制御部150から出力される情報を表示する表示装置である。
【0039】
記憶部140は、検索文章データ30と、文章ベクトル31と、候補画像テーブル141と、類似度テーブル142とを有する。記憶部140は、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子や、HDD(Hard Disk Drive)などの記憶装置に対応する。
【0040】
検索文章データ30は、ユーザ端末20から受け付けるテキストデータである。たとえば、検索文章データ30は「dog running in the park」である。検索文章データ30は、「dog running in the park」以外のテキストデータであってもよい。
【0041】
文章ベクトル31は、検索文章データ30を基に算出されるベクトルである。文章ベクトル31は、サーバ200によって算出される。
【0042】
候補画像テーブル141は、候補画像データに関する情報を保持する。
図3は、候補画像テーブルのデータ構造の一例を示す図である。
図3に示すように、この候補画像テーブルは、識別情報と、候補画像データと、画像ベクトルとを対応付ける。識別情報は、候補画像データを識別する情報である。候補画像データは、検索文章データとの類似度の比較対象となる画像データである。画像ベクトルは、候補画像データを基に算出されるベクトルである。画像ベクトルは、サーバ200によって算出される。
【0043】
以下の説明では、適宜、識別情報「Imn」の候補画像データを、候補画像データImnと表記する。nは自然数である。たとえば、識別情報Im1の候補画像データを、候補画像データIm1と表記する。
【0044】
類似度テーブル142は、文章ベクトル31と、各画像ベクトルとの類似度の情報を保持するテーブルである。
図4は、類似度テーブルのデータ構造の一例を示す図である。
図4に示すように、この類似度テーブル142は、識別情報と、類似度とを対応付ける。識別情報は、候補画像データを識別する情報である。類似度は、該当する候補画像データの画像ベクトルと、文章ベクトル31との類似度を示す。たとえば、
図4の1行目のレコードでは、識別情報Im1の候補画像データの画像ベクトルと、文章ベクトル31との類似度が「Si
1」であることが示される。
【0045】
図2の説明に戻る。制御部150は、取得部151、ベクトル要求部152、算出部153、ランキング処理部154、通知部155を有する。制御部150は、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジック等によって実現される。
【0046】
取得部151は、ユーザ端末20から検索文章データ30を取得する。取得部151は、取得した検索文章データ30を記憶部140に格納する。本実施例では、取得部151は、ユーザ端末20から検索文章データ30を取得する場合について説明するが、入力部120から、検索文章データを取得してもよい。
【0047】
ベクトル要求部152は、候補画像テーブル141に登録された全ての候補画像データを、サーバ200に送信し、各候補画像データの画像ベクトルを要求する。たとえば、ベクトル要求部152は、各候補画像データの画像ベクトルを要求する場合、第1要求データを、サーバ200に送信する。第1要求データには、候補画像テーブル141に登録された全ての候補画像データが含まれ、各候補画像データには、識別情報を付与される。
【0048】
ベクトル要求部152は、第1要求データを送信した後、サーバ200から、各候補画像データの画像ベクトルを受信すると、各候補画像データの画像ベクトルを、識別情報と対応付けて、候補画像テーブル141に格納する。画像ベクトルには、対応する候補画像データに識別情報が付与されているものとする。ベクトル要求部152は、上記の処理を事前に実行する。
【0049】
また、ベクトル要求部152は、取得部151によって、検索文章データ30が、記憶部140に格納された時点で、検索文章データ30を、サーバ200に送信し、文章ベクトルを要求する。ベクトル要求部152は、サーバ200から、文章ベクトル31を受信すると、受信した文章ベクトル31を、記憶部140に格納する。
【0050】
算出部153は、候補画像テーブル141に格納された各候補画像データの画像ベクトルと、文章ベクトル31との類似度(コサイン類似度)を算出する。算出部153は、算出した類似度を、該当する識別情報に対応付けて、類似度テーブル142に格納する。たとえば、算出部153は、候補画像データImnと、文章ベクトル31との類似度を、識別情報「Imn」と対応付けて、類似度テーブル142に登録する。
【0051】
算出部153は、候補画像テーブル141に格納された各画像ベクトルについて、上記処理を繰り返し実行する。
【0052】
ランキング処理部154は、類似度テーブル142を基にして、検索文章データ30に類似する候補画像データのランキングを行う。たとえば、ランキング処理部154は、類似度テーブル142の識別情報を、類似度の大きいものから降順にソートし、最上位からN位までの識別情報を特定する。ランキング処理部154は、最上位からN位までの識別情報を、通知部155に出力する。
【0053】
また、ランキング処理部154は、最上位からN位までの識別情報に対応する候補画像データを、候補画像テーブル141から取得する。以下の説明では、最上位からN位までの識別情報に対応する候補画像データを「特定画像データ」と表記する。
【0054】
ランキング処理部154は、N個の特定画像データと、検索文章データ30とを含む第2要求データを、サーバ200に送信して、類似度の算出を要求する。第2要求データに含まれるN個の特定画像データには、識別情報が付与される。
【0055】
ランキング処理部154は、第2要求データを送信した後、サーバ200から、各特定画像データと、検索文章データ30との類似度を受信すると、受信した類似度を基にして、類似度テーブル142の特定画像データの識別情報に対応する類似度を更新する。
【0056】
ランキング処理部154は、類似度テーブル142を更新した後に、類似度テーブル142を基にして、検索文章データ30に類似する候補画像データのランキングを再度実行し、最上位からN位までの識別情報を、通知部155に出力する。
【0057】
通知部155は、ランキング処理部154から、最上位からN位までの識別情報を受け付け、受け付けた識別情報に対応する候補画像データを、候補画像テーブル141から取得する。通知部155は、取得した候補画像データを、処理結果として、ユーザ端末20に通知する。
【0058】
続いて、サービスプロバイダ側のサーバ200の構成例について説明する。
図5は、サービスプロバイダ側のサーバの構成を示す機能ブロック図である。
図5に示すように、サーバ200は、通信部210、記憶部240、制御部250を有する。
【0059】
通信部210は、ネットワークを介して、ユーザ側のサーバ100との間でデータ通信を実行する。後述する制御部250は、通信部210を介して、サーバ100との間でデータをやり取りする。
【0060】
記憶部240は、制御部250が利用する各種のデータを格納する。記憶部240は、サーバ100から送信される候補画像データ、検索文章データ30等を一時的に保持する。記憶部240は、RAM、フラッシュメモリなどの半導体メモリ素子や、HDDなどの記憶装置に対応する。
【0061】
制御部250は、受付部251、ベクトル算出部252、類似度算出部253、送信部254を有する。制御部250は、CPUやGPU、ASICやFPGAなどのハードワイヤードロジック等によって実現される。
【0062】
受付部251は、サーバ100から各種の要求を受付ける。受付部251は、サーバ100から、第1要求データを受信した場合には、第1要求データを、ベクトル算出部252に出力する。受付部251は、サーバ100から、検索文章データ30を受信した場合には、検索文章データ30を、ベクトル算出部252に出力する。受付部251は、第2要求データを受信した場合には、第2要求データを、類似度算出部253に出力する。
【0063】
ベクトル算出部252は、第1要求データを受け付けると、第1要求データに含まれる複数の候補画像データの画像ベクトルをそれぞれ算出する。ベクトル算出部252は、算出した各画像ベクトルに、対応する候補画像データの識別情報を付与し、各画像ベクトルを、送信部254に出力する。ベクトル算出部252は、画像ベクトルを算出した後、候補画像データを削除する。
【0064】
ベクトル算出部252は、検索文章データ30を受け付けると、検索文章データ30の文章ベクトル31を算出する。ベクトル算出部252は、算出した文章ベクトル31を、送信部254に出力する。ベクトル算出部252は、文章ベクトル31を算出した後、検索文章データ30を削除する。
【0065】
たとえば、ベクトル算出部252は、参考技術(Pretraining Task-Agnostic Visiolinguistic Representations for Vision-and-Language Tasks, https://arxiv.org/abs/1908.02265)に記載された第1学習モデル(ViLBERT)を用いて、画像ベクトル、文章ベクトルを算出する。かかる第1学習モデルは、ある文章の文章ベクトルと、このある文章に対応する画像データの画像ベクトルとが類似するように、訓練されている。たとえば、ある文章「dog running in the park」の文章ベクトルと、犬が入っている画像データの画像ベクトルとが類似するベクトルとなるように、第1学習モデルのパラメータは訓練されている。
【0066】
ベクトル算出部252は、候補画像データを、第1学習モデルに入力することで、画像ベクトルを算出する。ベクトル算出部252は、検索文章データ30を、第1学習モデルに入力することで、文章ベクトルを算出する。なお、候補画像データと、文章データとを同時に、第1学習モデルに入力すると、画像ベクトルと、文章ベクトルとが出力される。
【0067】
類似度算出部253は、第2要求データを受け付けると、第2要求データに含まれる複数の特定画像データ(N個の特定画像データ)と、検索文章データ30との類似度をそれぞれ算出する。たとえば、類似度算出部253は、第2学習モデルに、一つの特定画像データと、検索文章データ30とを入力することで、係る一つの特定画像データと、検索文章データ30との類似度を算出する。係る第2学習モデルは、ある画像データおよびある文章データを入力とし、係るある画像データとある文章データとの類似度を正解ラベルとした訓練データセットを用いて、事前に訓練されているものとする。
【0068】
類似度算出部253は、算出した複数の類似度(N個の類似度)に、対応する特定画像データの識別情報を付与し、複数の類似度を、送信部254に出力する。類似度算出部253は、類似度を算出した後、各特定画像データ、検索文章データ30を削除する。
【0069】
送信部254は、ベクトル算出部252から、各候補画像データの識別情報が付与された複数の画像ベクトルを受け付けた場合には、複数の画像ベクトルを、サーバ100に送信する。送信部254は、複数の画像ベクトルを、サーバ100に送信した後、画像ベクトルを削除する。
【0070】
送信部254は、ベクトル算出部252から、検索文章データ30の文章ベクトル31を受け付けた場合には、文章ベクトル31を、サーバ100に送信する。送信部254は、文章ベクトル31を、サーバ100に送信した後、文章ベクトル31を削除する。
【0071】
送信部254は、類似度算出部253から、各特定画像データの識別情報が付与された複数の類似度を受け付けた場合には、複数の類似度を、サーバ100に送信する。
【0072】
次に、
図2に示したユーザ側のサーバ100の処理手順の一例について説明する。
図6は、本実施例に係るユーザ側のサーバの処理手順を示すフローチャートである。
図6に示すように、サーバ100のベクトル要求部152は、第1要求データを、サービスプロバイダ側のサーバ200に送信する(ステップS101)。ベクトル要求部152は、サービスプロバイダ側のサーバ200から、各候補画像の画像ベクトルを受信し、候補画像テーブル141に格納する(ステップS102)。
【0073】
サーバ100の取得部151は、ユーザ端末20から検索文章データ30を取得しない場合には(ステップS103,No)、再度、ステップS103に移行する。一方、取得部151は、ユーザ端末20から検索文章データ30を取得した場合には(ステップS103,Yes)、ステップS104に移行する。
【0074】
ベクトル要求部152は、検索文章データ30を、サービスプロバイダ側のサーバ200に送信する(ステップS104)。ベクトル要求部152は、サービスプロバイダ側のサーバ200から、文章ベクトル31を受信し、記憶部140に格納する(ステップS105)。
【0075】
サーバ100の算出部153は、候補画像テーブル141に格納された各画像ベクトルと、文章ベクトルとの類似度を算出し、算出結果を類似度テーブル142に格納する(ステップS106)。
【0076】
サーバ100のランキング処理部154は、各類似度を基にして、最上位からN位までの特定画像データをランキングする(ステップS107)。サーバ100の通知部155は、ランキング結果をユーザ端末20に通知する(ステップS108)。
【0077】
ランキング処理部154は、第2要求データを、サービスプロバイダ側のサーバ200に送信する(ステップS109)。ランキング処理部154は、サービスプロバイダ側のサーバ200から、各類似度を受信し、類似度テーブル142の類似度を更新する(ステップS110)。
【0078】
ランキング処理部154は、更新した各類似度を基にして、最上位からN位までの特定画像データを再度ランキングする(ステップS111)。通知部155は、ランキング結果をユーザ端末20に再度通知する(ステップS112)。
【0079】
次に、
図5に示したサービスプロバイダ側のサーバ200の処理手順の一例について説明する。
図7は、本実施例に係るサービスプロバイダ側のサーバの処理手順を示すフローチャートである。
図7に示すように、サーバ200の受付部251は、第1要求データを、ユーザ側のサーバ100から受信する(ステップS201)。
【0080】
サーバ200のベクトル算出部252は、第1要求データに含まれる各候補画像データの画像ベクトルを算出する(ステップS202)。サーバ200の送信部254は、各候補画像データの画像ベクトルを、ユーザ側のサーバ100に送信する(ステップS203)。
【0081】
受付部251は、検索文章データ30を、ユーザ側のサーバ100から受信する(ステップS204)。ベクトル算出部252は、検索文章データ30の文章ベクトル31を算出する(ステップS205)。送信部254は、文章ベクトル31を、ユーザ側のサーバ100に送信する(ステップS206)。
【0082】
受付部251は、第2要求データを、ユーザ側のサーバ100から受信する(ステップS207)。サーバ200の類似度算出部253は、第2要求データに含まれる各特定画像データと、検索文章データ30との類似度を算出する(ステップS208)。送信部254は、各類似度を、ユーザ側のサーバ100に送信する(ステップS209)。
【0083】
次に、本実施例に係る情報処理システムの効果について説明する。ユーザ側のサーバ100は、検索条件の検索文章データ30を取得した際、文章ベクトルの算出をサーバ200に依頼し、サーバ200から通知される文章ベクトルを受信する。サーバ100は、受信した文章ベクトルと、サーバ200から事前に取得したおいた複数の画像ベクトルとを用いて、検索文章データと候補画像データとの類似度を算出し、類似度算出について、効率化を図ることができる。すなわち、検索文章データに対する各候補画像データの類似度を算出する場合に、ユーザ側のサーバ100に大規模な計算リソースを準備せずに、ネットワーク負荷をかけず、高速に処理結果をユーザ端末20に通知することができる。
【0084】
また、サーバ100は、類似度の計算を行う場合、候補画像データの画像ベクトルと、検索文章データの文章ベクトルとのコサイン類似度を計算する。一方、サーバ200は、訓練済みの学習モデルに、候補画像データと、検索文章データとを入力することで、候補画像データと、検索文章データとの類似度を算出する。コサイン類似度は、計算コストが少ないが、学習モデルによる類似度の算出結果と比較して、精度が低い。サーバ100は、コサイン類似度に基づくランキング結果を、ユーザ端末20に通知しておき、第2要求データを、サーバ200に送信して、精度のよりよい類似度を受信する。サーバ100が、かかる処理を行うことで、コサイン類似度によるランキング結果を先に通知し、後から、学習モデルを用いた結果によって、ランキング結果を修正することができ、より正確なランキング情報を、ユーザ端末20に通知することができる。
【0085】
ところで、上述した情報処理システムは一例であり、たとえば、
図1の情報システムに限定されるものではない。以下では、その他の情報処理システムの一例について説明する。
【0086】
図8は、その他の情報処理システムの例を示す図(1)である。
図8に示すように、この情報処理システムは、ユーザ側のサーバが複数存在する。たとえば、ユーザ側のサーバを、サーバ100a,100bとする。サーバ100aは、ユーザ端末20a,20b,20cから、検索文章データを取得し、
図2で説明したサーバ100に対応する処理を実行する。サーバ100bは、ユーザ端末20d,20e,20fから、検索文章データを取得し、
図2で説明したサーバ100に対応する処理を実行する。サーバ200は、サーバ100a,100bから、ベクトル算出、類似度算出の要求を受付け、算出結果を、サーバ100a,100bに送信する。
【0087】
図8に情報処理システムの構成とすることで、ユーザ端末のあるグループ毎に、それぞれ独自の候補画像データを格納して、検索文章データに対応するランキング結果を通知することができる。たとえば、ユーザ端末20a~20cと、ユーザ端末20d~20fとで、候補画像データを共有できない場合に、
図8の情報処理システムは有効である。
【0088】
図9は、その他の情報処理システムの例を示す図(2)である。
図9に示すように、この情報処理システムは、ユーザ端末21a,21bと、サーバ200とを有する。ユーザ端末21a、21bは、
図2で説明したサーバ100と同様の機能を有し、サーバ100の代わりに、サーバ200と直接データ通信を行う。サーバ200は、サーバ100と同様の処理を実行するためのプログラムを、ユーザ端末21a,21bに通知して、実行させてもよい。
【0089】
たとえば、ユーザ端末21aは、事前に、第1要求データをサーバ200に送信しておき、候補画像データの画像ベクトルを受信しておく。また、検索文章データを、サーバ200に送信して、文章ベクトルを受信し、各画像ベクトルと、文章ベクトルとの類似度を算出し、ランキングを行う。ユーザ端末21bも、ユーザ端末21aと同様の処理を実行する。
【0090】
図9に情報処理システムの構成とすることで、ユーザ端末毎に、それぞれ独自の候補画像データを格納している場合でも、各ユーザ端末が、ランキング結果を得ることができる。
【0091】
次に、上述したユーザ側のサーバ100と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。
図10は、実施例のユーザ側のサーバと同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【0092】
図10に示すように、コンピュータ300は、各種演算処理を実行するCPU301と、ユーザからのデータの入力を受け付ける入力装置302と、ディスプレイ303とを有する。また、コンピュータ300は、有線または無線ネットワークを介して、外部装置等との間でデータの授受を行う通信装置304と、インタフェース装置305とを有する。また、コンピュータ300は、各種情報を一時記憶するRAM306と、ハードディスク装置307とを有する。そして、各装置301~307は、バス308に接続される。
【0093】
ハードディスク装置307は、取得プログラム307a、ベクトル要求プログラム307b、算出プログラム307c、ランキング処理プログラム307d、通知プログラム307eを有する。また、CPU301は、各プログラム307a~307eを読み出してRAM306に展開する。
【0094】
取得プログラム307aは、取得プロセス306aとして機能する。ベクトル要求プログラム307bは、ベクトル要求プロセス306bとして機能する。算出プログラム307cは、算出プロセス306cとして機能する。ランキング処理プログラム307dは、ランキング処理プロセス306dとして機能する。通知プログラム307eは、通知プロセス306eとして機能する。
【0095】
取得プロセス306aの処理は、取得部151の処理に対応する。ベクトル要求プロセス306bの処理は、ベクトル要求部152の処理に対応する。算出プロセス306cの処理は、算出部153の処理に対応する。ランキング処理プロセス306dの処理は、ランキング処理部154の処理に対応する。通知プロセス306eの処理は、通知部155の処理に対応する。
【0096】
なお、各プログラム307a~307eについては、必ずしも最初からハードディスク装置307に記憶させておかなくても良い。例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD-ROM、DVD、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ300が各プログラム307a~307eを読み出して実行するようにしてもよい。
【0097】
上述したサービスプロバイダ側のサーバ200と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。
図11は、実施例のサービスプロバイダ側のサーバと同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【0098】
図11に示すように、コンピュータ400は、各種演算処理を実行するCPU401と、ユーザからのデータの入力を受け付ける入力装置402と、ディスプレイ403とを有する。また、コンピュータ400は、有線または無線ネットワークを介して、外部装置等との間でデータの授受を行う通信装置404と、インタフェース装置405とを有する。また、コンピュータ400は、各種情報を一時記憶するRAM406と、ハードディスク装置407とを有する。そして、各装置401~407は、バス408に接続される。
【0099】
ハードディスク装置407は、受付プログラム407a、ベクトル算出プログラム407b、類似度算出プログラム407c、送信プログラム407dを有する。また、CPU401は、各プログラム407a~407dを読み出してRAM406に展開する。
【0100】
受付プログラム407aは、受付プロセス406aとして機能する。ベクトル算出プログラム407bは、ベクトル算出プロセス406bとして機能する。類似度算出プログラム407cは、類似度算出プロセス406cとして機能する。送信プログラム407dは、送信プロセス406dとして機能する。
【0101】
受付プロセス406aの処理は、受付部251の処理に対応する。ベクトル算出プロセス406bの処理は、ベクトル算出部252の処理に対応する。類似度算出プロセス406cの処理は、類似度算出部253の処理に対応する。送信プロセス406dの処理は、送信部254の処理に対応する。
【0102】
なお、各プログラム407a~407dについては、必ずしも最初からハードディスク装置407に記憶させておかなくても良い。例えば、コンピュータ400に挿入されるフレキシブルディスク(FD)、CD-ROM、DVD、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ400が各プログラム407a~407dを読み出して実行するようにしてもよい。
【0103】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0104】
(付記1)複数の画像データにそれぞれ対応する複数の第1特徴量データを、通信可能なサーバ装置から受信し、
検索条件に含まれるテキストデータを取得し、
取得した前記テキストデータを前記サーバ装置に送信することに応じて、前記サーバ装置から送信される、前記テキストデータに対応する第2特徴量データを受信し、
前記複数の第1特徴量データと前記第2特徴量データとの複数の類似度を算出する
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【0105】
(付記2)前記複数の類似度の算出結果を出力する処理を更にコンピュータに実行させることを特徴とする付記1に記載の情報処理プログラム。
【0106】
(付記3)前記第1特徴量データおよび前記第2特徴量データは、ベクトルデータであり、前記複数の類似度を算出する処理は、前記複数の第1特徴量データと前記第2特徴量データとの複数のコサイン類似度、内積、ユークリッド距離の少なくともいずれかに基づいて、前記複数の類似度を算出することを特徴とする付記1に記載の情報処理プログラム。
【0107】
(付記4)前記複数の類似度のうち、前記第2特徴量データとの類似度が、最大類似度から所定数番目までの複数の類似度に対応する複数の第1特徴量データであって、該複数の第1特徴量データに対応する画像データを、特定画像データとして選択し、選択した複数の特定画像データと、前記テキストデータとを前記サーバ装置に送信して、前記サーバ装置により算出された前記複数の特定画像データと前記テキストデータとの複数の類似度を受信し、受信した複数の類似度によって、前記算出する処理により算出された複数の類似度を修正する処理を更にコンピュータに実行させることを特徴とする付記1に記載の情報処理プログラム。
【0108】
(付記5)複数の画像データにそれぞれ対応する複数の第1特徴量データを、通信可能なサーバ装置から受信し、
検索条件に含まれるテキストデータを取得し、
取得した前記テキストデータを前記サーバ装置に送信することに応じて、前記サーバ装置から送信される、前記テキストデータに対応する第2特徴量データを受信し、
前記複数の第1特徴量データと前記第2特徴量データとの複数の類似度を算出する
処理をコンピュータが実行することを特徴とする情報処理方法。
【0109】
(付記6)前記複数の類似度の算出結果を出力する処理を更にコンピュータが実行することを特徴とする付記5に記載の情報処理方法。
【0110】
(付記7)前記第1特徴量データおよび前記第2特徴量データは、ベクトルデータであり、前記複数の類似度を算出する処理は、前記複数の第1特徴量データと前記第2特徴量データとの複数のコサイン類似度、内積、ユークリッド距離の少なくともいずれかに基づいて、前記複数の類似度を算出することを特徴とする付記5に記載の情報処理方法。
【0111】
(付記8)前記複数の類似度のうち、前記第2特徴量データとの類似度が、最大類似度から所定数番目までの複数の類似度に対応する複数の第1特徴量データであって、該複数の第1特徴量データに対応する画像データを、特定画像データとして選択し、選択した複数の特定画像データと、前記テキストデータとを前記サーバ装置に送信して、前記サーバ装置により算出された前記複数の特定画像データと前記テキストデータとの複数の類似度を受信し、受信した複数の類似度によって、前記算出する処理により算出された複数の類似度を修正する処理を更にコンピュータが実行することを特徴とする付記5に記載の情報処理方法。
【0112】
(付記9)複数の画像データにそれぞれ対応する複数の第1特徴量データを、通信可能なサーバ装置から受信し、
検索条件に含まれるテキストデータを取得し、
取得した前記テキストデータを前記サーバ装置に送信することに応じて、前記サーバ装置から送信される、前記テキストデータに対応する第2特徴量データを受信し、
前記複数の第1特徴量データと前記第2特徴量データとの複数の類似度を算出する
処理を実行する制御部を有する情報処理装置。
【0113】
(付記10)前記制御部は、前記複数の類似度の算出結果を出力する処理を更に実行することを特徴とする付記9に記載の情報処理装置。
【0114】
(付記11)前記第1特徴量データおよび前記第2特徴量データは、ベクトルデータであり、前記複数の類似度を算出する処理は、前記複数の第1特徴量データと前記第2特徴量データとの複数のコサイン類似度、内積、ユークリッド距離の少なくともいずれかに基づいて、前記複数の類似度を算出することを特徴とする付記9に記載の情報処理装置。
【0115】
(付記12)前記制御部は、前記複数の類似度のうち、前記第2特徴量データとの類似度が、最大類似度から所定数番目までの複数の類似度に対応する複数の第1特徴量データであって、該複数の第1特徴量データに対応する画像データを、特定画像データとして選択し、選択した複数の特定画像データと、前記テキストデータとを前記サーバ装置に送信して、前記サーバ装置により算出された前記複数の特定画像データと前記テキストデータとの複数の類似度を受信し、受信した複数の類似度によって、前記算出する処理により算出された複数の類似度を修正する処理を更に実行することを特徴とする付記9に記載の情報処理装置。
【0116】
(付記13)情報処理装置と、前記情報処理装置と通信可能なサーバ装置とを有する情報処理システムであって、
前記情報処理装置は、
複数の画像データにそれぞれ対応する複数の第1特徴量データを、前記サーバ装置から受信し、
検索条件に含まれるテキストデータを取得し、
取得した前記テキストデータを前記サーバ装置に送信することに応じて、前記サーバ装置から送信される、前記テキストデータに対応する第2特徴量データを受信し、
前記複数の第1特徴量データと前記第2特徴量データとの複数の類似度を算出する
処理を実行する制御部を有することを特徴とする情報処理システム。
【0117】
(付記14)前記制御部は、前記複数の類似度の算出結果を出力する処理を更に実行することを特徴とする付記13に記載の情報処理システム。
【0118】
(付記15)前記第1特徴量データおよび前記第2特徴量データは、ベクトルデータであり、前記複数の類似度を算出する処理は、前記複数の第1特徴量データと前記第2特徴量データとの複数のコサイン類似度、内積、ユークリッド距離の少なくともいずれかに基づいて、前記複数の類似度を算出することを特徴とする付記13に記載の情報処理システム。
【0119】
(付記16)前記制御部は、前記複数の類似度のうち、前記第2特徴量データとの類似度が、最大類似度から所定数番目までの複数の類似度に対応する複数の第1特徴量データであって、該複数の第1特徴量データに対応する画像データを、特定画像データとして選択し、選択した複数の特定画像データと、前記テキストデータとを前記サーバ装置に送信して、前記サーバ装置により算出された前記複数の特定画像データと前記テキストデータとの複数の類似度を受信し、受信した複数の類似度によって、前記算出する処理により算出された複数の類似度を修正する処理を更に実行することを特徴とする付記13に記載の情報処理システム。