以下、本発明の実施の形態について説明する。
図1は、本発明の一実施形態に係る画像認識エンジン連携装置2を含む画像認識システム100の構成例を示す図である。
図1に示す画像認識システム100は、利用者端末1と、画像認識エンジン連携装置2と、画像認識エンジン3,4,5と、バーコード検出エンジン6と、物体領域抽出エンジン7と、位置推定エンジン8とを備える。
利用者端末1は、撮影機能を備えたスマートフォン、携帯電話、タブレット端末などの端末である。また、利用者端末1は、利用者端末1の位置、姿勢など種々の情報を検出する各種のセンサを備えている。
利用者端末1は、利用者の操作などに応じて、画像中の被写体の認識を要求する認識要求を画像認識エンジン連携装置2に送信する。認識要求には、利用者端末1により撮影された画像(静止画あるいは動画を構成するフレーム画像)、利用者端末1が備える各種センサで検出された情報(例えば、GPS(Global Positioning System)情報、Bluetooth(登録商標)のビーコンID、無線LAN(Local Area Network)のSSID(Service Set Identifier)、ジャイロセンサ情報)、後述する画像認識エンジン連携装置2が実行するエンジン連携処理(以下、連携シナリオと称する)を識別する識別子(以下、連携シナリオ名と称する)などが含まれる。
また、利用者端末1は、画像認識エンジン連携装置2から送信されてきた、認識要求に対する回答情報を受信し、利用者に提示する。
画像認識エンジン連携装置2は、利用者端末1から受信した認識要求に基づき、画像認識エンジン3,4,5、バーコード検出エンジン6、物体領域抽出エンジン7および位置推定エンジン8の中の1または複数のエンジンに個別要求を送信する。個別要求には、個別要求の送信先のエンジンが処理を実行するためのコマンド、個別要求の送信先のエンジンが処理を実行するための入力データなどが含まれる。個別要求の送信先が画像認識エンジン3,4,5、バーコード検出エンジン6および物体領域抽出エンジン7である場合には、入力データは、認識要求に含まれる画像である。また、個別要求の送信先が位置推定エンジン8である場合には、入力データは、認識要求に含まれるGPS情報、BluetoothのビーコンID、無線LANのSSIDなどである。
また、画像認識エンジン連携装置2は、個別要求の送信先のエンジンから個別要求に対する実行結果である個別結果を受信する。画像認識エンジン連携装置2は、受信した個別結果に対して加工処理や判定処理を行い、個別結果を送信してきたエンジンとは別のエンジンに個別要求を送信するか、あるいは、認識要求に対する回答情報を利用者端末1に送信する。
画像認識エンジン3,4,5は、画像認識エンジン連携装置2から受信した個別要求に含まれる画像(入力画像)を用いて画像認識処理を実行し、認識結果を個別結果として画像認識エンジン連携装置2に送信する。画像認識処理とは、入力画像と画像認識エンジン3,4,5の画像データベースに登録された参照画像とに対して、画像解析により抽出した画像特徴量の類似度を計算し、最も類似度の高い参照画像を決定する処理である。画像認識エンジン3,4,5が送信する個別結果には、入力画像との類似度が最も高いと決定した参照画像を示す識別子(以下、被写体ラベルと称する)、入力画像中の被写体の領域を示す四隅座標、認識処理の信頼度を示すスコアなどが含まれる。
画像認識エンジン3は、例えば、商品のパッケージやラベルの画像を蓄積するデータベースである商品画像DB9に接続し、商品画像DB9に蓄積された画像を参照画像として画像認識処理を行う。画像認識エンジン4は、例えば、東京駅構内の構内看板の画像を蓄積するデータベースである東京駅構内看板画像DB10に接続し、東京駅構内看板画像DB10に蓄積された画像を参照画像として画像認識処理を行う。画像認識エンジン5は、例えば、大阪駅構内の構内看板の画像を蓄積するデータベースである大阪駅構内看板画像DB11に接続し、大阪駅構内看板画像DB11に蓄積された画像を参照画像として画像認識処理を行う。
バーコード検出エンジン6は、画像認識エンジン連携装置2から受信した個別要求に含まれる画像(入力画像)を用いてバーコードの認識処理(バーコード検出処理および検出したバーコードの読み取り処理)を実行し、認識結果を個別結果として画像認識エンジン連携装置2に送信する。バーコード検出エンジン6が送信する個別結果には、入力画像中のバーコードの有無、バーコードが示す文字列(例えば、JAN(Japanese Article Number)コード)、入力画像中のバーコードの領域を示す四隅座標などが含まれる。
一般に、バーコードは所定のパターンに従って作成されており、画像認識エンジン3,4,5が行う画像認識処理のように画像特徴量の抽出などを行うことなく、高精度に読取り可能である。そのため、バーコード検出エンジン6の誤読率は、画像認識エンジン3,4,5の誤認識率と比べて低い。したがって、バーコード検出エンジン6は、画像認識エンジン3,4,5よりも認識結果の信頼性が高いエンジンである。すなわち、バーコード検出エンジン6は、画像認識エンジン3,4,5とは異なる画像解析手法により、画像中の被写体(バーコード)の認識を、画像認識エンジン3,4,5よりも高い精度で行うことができる。バーコード検出エンジン6は、画像認識エンジン3,4,5とは異なる画像解析手法により、画像中の被写体の認識を行う異種エンジンの一例である。
物体領域抽出エンジン7は、画像認識エンジン連携装置2から受信した個別要求に含まれる画像(入力画像)を用いて物体領域抽出処理を行い、抽出結果を個別結果として画像認識エンジン連携装置2に送信する。物体領域抽出処理とは、入力画像に対して視覚特性などを利用した画像解析を行い、入力画像中の被写体(物体や人物)を含む可能性が高い(被写体を含むと想定される)領域(以下、物体領域と称する)を抽出する処理である。物体領域抽出エンジン7が送信する個別結果には、入力画像から抽出された個々の被写体を含む物体領域を区別する識別子、個々の物体領域を示す四隅座標などが含まれる。物体領域抽出エンジン7は、領域抽出エンジンの一例である。
位置推定エンジン8は、画像認識エンジン連携装置2から受信した個別要求に含まれるGPS情報、BluetoothのビーコンID、無線LANのSSIDなどを用いて位置推定処理を行い、推定結果を個別結果として画像認識エンジン連携装置2に送信する。位置推定処理とは、GPS情報、BluetoothのビーコンID、無線LANのSSIDなどを用いて利用者端末1が位置する現在地の地名、建物内の区画などを推定する処理である。位置推定エンジン8が送信する個別結果には、利用者端末1が位置する現在地の地名、建物内の区画などを示す情報(地名情報)が含まれる。
なお、位置推定エンジン8は、撮影機能を有する利用者端末1のセンサ情報に基づき、画像が撮影された際の付帯情報(利用者端末1の位置、姿勢、画像が撮影された時間帯、画像が撮影された際の天候など)を推定する付帯情報推定エンジンの一例である。
次に、本実施形態に係る画像認識エンジン連携装置2の構成について、図2を参照して説明する。なお、利用者端末1、画像認識エンジン3,4,5、バーコード検出エンジン6、物体領域抽出エンジン7および位置推定エンジン8の構成は当業者によく知られており、また、本発明と直接関係しないため、説明を省略する。
図2に示す画像認識エンジン連携装置2は、連携処理部12と、エンジン実行処理部13とを備える。エンジン実行処理部13は、画像認識エンジン3,4,5、バーコード検出エンジン6、物体領域抽出エンジン7および位置推定エンジン8それぞれに対応して設けられている。
連携処理部12は、画像認識エンジン3,4,5および画像認識エンジン3,4,5とは異なる画像解析手法により、画像中の被写体の認識を行う異種エンジンであるバーコード検出エンジン6を含む複数のエンジンへの、入力された画像(入力画像)中の被写体の問い合わせ処理と、問い合わせ処理に応じたエンジンによる被写体の認識結果の受け付け処理とを含むエンジン連携処理を実行する。
具体的には、連携処理部12は、利用者端末1から認識要求を受信すると、問い合わせ処理として、認識要求に含まれる画像(入力画像)中の被写体の認識を要求するエンジン実行要求を、入力画像中の被写体の認識を要求するエンジンに対応するエンジン実行処理部13に出力する。また、連携処理部12は、受け付け処理として、エンジン実行要求の送信先のエンジンによる実行結果であるエンジン実行結果をエンジン実行処理部13から取得する。
そして、連携処理部12は、取得したエンジン実行結果に対して加工処理や判定処理を行い、個別結果を送信してきたエンジンとは別のエンジンに対して個別要求を送信するか、あるいは、認識要求に対する回答情報を利用者端末1に送信する。
エンジン実行処理部13は、連携処理部12から出力されたエンジン実行要求を個別要求に変換して、対応するエンジンに出力する。また、エンジン実行処理部13は、対応するエンジンから送信されてきた個別要求を、エンジン実行結果に変換して連携処理部12に出力する。
次に、連携処理部12およびエンジン実行処理部13の構成について説明する。まず、連携処理部12の構成について説明する。
図2に示す連携処理部12は、連携制御部14と、認識要求キャッシュ部15と、連携シナリオ管理部16と、エンジン実行結果キャッシュ部17と、ID解決部18とを備える。
認識要求キャッシュ部15は、利用者端末1から送信されてきた認識要求を記憶する。
連携シナリオ管理部16は、連携処理部12が実行するエンジン連携処理の内容を記述(規定)する連携シナリオを管理する。すなわち、連携シナリオ管理部16は、連携処理部12が実行するエンジン連携処理を連携シナリオとして管理する。
連携シナリオとしては、例えば、直列型連携処理がある。直列型連携処理とは、被写体の認識結果の信頼性が高いエンジンから順に問い合わせ処理を行い、信頼性の高いエンジンから認識結果が得られない場合に、他のエンジンに問い合わせ処理を行う処理である。また、連携シナリオとしては、例えば、並列型連携処理がある。並列型連携処理とは、複数のエンジンに同時に問い合わせ処理を行い、複数のエンジンの認識結果のうち、最も信頼性の高い認識結果を採用する処理である。
連携シナリオ管理部16は、連携シナリオ毎に、連携シナリオ名、個別要求の送信先のエンジン、直列型連携処理を行うか、並列型連携処理を行うかなどを記憶している。連携シナリオ管理部16で管理される連携シナリオは利用者端末1においても既知である。そのため、利用者端末1は、認識を要求する画像などに応じて、実行を要求する連携シナリオの連携シナリオ名を含む認識要求を画像認識エンジン連携装置2に送信することができる。
エンジン実行結果キャッシュ部17は、エンジン実行処理部13から出力されたエンジン実行結果を記憶する。
連携制御部14は、利用者端末1から受信した認識要求を認識要求キャッシュ部15に記憶させる。また、連携制御部14は、認識要求に含まれる連携シナリオ名に対応する連携シナリオを連携シナリオ管理部16から取得する。
連携制御部14は、連携シナリオ管理部16から取得した連携シナリオに基づき、エンジン実行要求を出力するエンジン実行処理部13(個別要求を送信するエンジンに対応するエンジン実行処理部13)を特定する。そして、連携制御部14は、受信した認識要求に応じたエンジン実行要求を生成し、エンジン実行要求の出力先として特定したエンジン実行処理部13に出力する。エンジン実行要求には、認識要求の送信元の利用者端末1を特定する識別子、エンジン実行要求の識別子、エンジン実行要求を出力するエンジン実行処理部13の名称、認識要求に含まれる画像(利用者端末1が撮影した画像(静止画または動画を構成するフレーム画像))、利用者端末1のセンサで検出された情報などが含まれる。
また、連携制御部14は、エンジン実行要求の出力に応じて、エンジン実行処理部13から出力されたエンジン実行結果を取得する。エンジン実行結果には、認識要求の送信元の利用者端末1の識別子、エンジン実行結果の元となったエンジン実行要求の識別子、エンジン実行結果を出力するエンジン実行処理部13の名称、エンジン実行処理部13に対応するエンジン内において認識対象を区別するために用いられている識別子やコード(以下、局所IDと称する)、エンジン実行処理部13に対応するエンジンの個別結果などが含まれる。局所IDとは、例えば、画像認識エンジン3,4,5により認識結果に含まれる被写体ラベル、バーコード検出エンジン6による認識結果に含まれるバーコード文字列などである。
また、連携制御部14は、エンジン実行結果に含まれる局所IDを用いてID解決部18に問い合わせを行い、画像認識エンジン連携装置2において認識する対象を区別するために用いるコード(以下、共通IDと称する)を取得する。そして、連携制御部14は、受信したエンジン実行要求と、ID解決部18から取得した共通IDとを対応付けて、エンジン実行結果キャッシュ部17に記憶させる。
また、連携制御部14は、連携シナリオ管理部16から取得した連携シナリオに基づき、エンジン実行結果の判定処理を行う。判定処理には、利用者端末1に送信する回答情報に採用する認識結果、他のエンジンへの個別要求の送信の要否の判定などが含まれる。また、連携制御部14は、他のエンジンへの個別要求の入力とするために認識結果を加工する加工処理を行う。また、連携制御部14は、エンジン実行結果に基づき生成した回答情報を利用者端末1に送信する。
ID解決部18は、予め記憶されたID対応表を用いて、連携制御部14から問い合わせを受けた局所IDに対応する共通IDを取得し、連携制御部14に出力する。
図3は、ID解決部18が用いるID対応表の構成例を示す図である。図3に示すように、対応表では、画像認識エンジン3,4,5のエンジン実行結果に含まれる局所ID(画像認識エンジン3,4,5により認識された商品あるいは看板)、あるいは、バーコード検出エンジン6のエンジン実行結果に含まれる局所ID(バーコード検出エンジン6により読み取られたバーコード文字列)と、その商品あるいは看板を特定する識別子である共通IDとが対応付けられている。
例えば、バーコードが貼り付けられた商品において、画像認識エンジン3に被写体として商品のラベル画像が登録されている場合、画像認識エンジン3の被写体ラベルと、バーコード検出エンジン6により読み取られるバーコード文字列とに対して、同一の共通IDが設定される。
次に、エンジン実行処理部13の構成について、図2を再び参照して説明する。
図2に示すエンジン実行処理部13は、実行制御部19と、個別要求生成部20と、個別結果変換部21とを備える。
実行制御部19は、連携処理部12から出力されたエンジン実行要求を取得し、個別要求生成部20に出力する。また、実行制御部19は、個別結果変換部21から出力されたエンジン実行結果を取得し、連携処理部12に出力する。
個別要求生成部20は、実行制御部19から出力されたエンジン実行要求を個別要求に変換し、エンジン実行処理部13に対応するエンジンに送信する。
個別結果変換部21は、エンジン実行処理部13に対応するエンジンから送信されてきた個別結果を受信し、エンジン実行結果に変換して実行制御部19に出力する。
次に、本実施形態に係る画像認識エンジン連携装置2の動作について、連携制御部14の動作を中心に説明する。
図4は、画像認識エンジン3とバーコード検出エンジン6との直列型連携処理の一例を示すフローチャートである。
連携制御部14は、利用者端末1から認識要求を受信すると、受信した認識要求を認識要求キャッシュ部15に記憶(キャッシュ)させる(ステップS1)。なお、図4においては、認識要求には、画像認識エンジン3とバーコード検出エンジン6との直列型連携処理を記述した連携シナリオを示す連携シナリオ名が含まれているものとする。
次に、連携制御部14は、受信した認識要求に含まれる連携シナリオ名に対応する連携シナリオを連携シナリオ管理部16から取得する。そして、連携制御部14は、取得した連携シナリオに基づき、バーコード検出エンジン6に対するエンジン実行要求を認識要求キャッシュ部15に記憶された認識要求から生成し、バーコード検出エンジン6に対応するエンジン実行処理部13に出力する(ステップS2)。上述したように、バーコード検出エンジン6は、画像認識エンジン3よりも認識結果の信頼性が高いエンジンである。連携制御部14は、画像認識エンジン3とバーコード検出エンジン6との直列型連携処理においては、信頼性が高いバーコード検出エンジン6に対応するエンジン実行処理部13からエンジン実行要求を出力する。
バーコード検出エンジン6に対応するエンジン実行処理部13に出力されたエンジン実行要求は、エンジン実行処理部13において個別要求に変換され、バーコード検出エンジン6に送信される。そして、個別要求に応じた処理がバーコード検出エンジン6において実行され、実行結果が個別結果として画像認識エンジン連携装置2に送信される。バーコード検出エンジン6から送信された個別結果は、エンジン実行処理部13においてエンジン実行結果に変換され、連携処理部12に出力される。
連携制御部14は、エンジン実行処理部13から出力されたエンジン実行結果を取得し、エンジン実行結果キャッシュ部17に記憶(キャッシュ)させる。そして、連携制御部14は、取得したエンジン実行結果にバーコード文字列が含まれる場合、そのバーコード文字列に対応する共通IDをID解決部18から取得し、エンジン実行結果とともにエンジン実行結果キャッシュ部17に記憶(キャッシュ)させる(ステップS3)。
共通IDを取得した場合には、連携制御部14は、取得した共通IDを用いて回答情報を生成し(ステップS4)、後述するステップS8の処理に進む。
共通IDを未取得の場合には、連携制御部14は、画像認識エンジン3に対するエンジン実行要求を認識要求キャッシュ部15に記憶された認識要求から生成し、画像認識エンジン3に対応するエンジン実行処理部13に出力する(ステップS5)。連携制御部14は、画像認識エンジン3とバーコード検出エンジン6との直列型連携処理においては、バーコード検出エンジン6から認識結果が得られない場合に、画像認識エンジン3に対応するエンジン実行処理部13にエンジン実行要求を出力する。
画像認識エンジン3に対応するエンジン実行処理部13に出力されたエンジン実行要求は、エンジン実行処理部13において個別要求に変換され、画像認識エンジン3に送信される。そして、個別要求に応じた処理が画像認識エンジン3において実行され、実行結果が個別結果として画像認識エンジン連携装置2に送信される。画像認識エンジン3から送信された個別結果は、エンジン実行処理部13においてエンジン実行結果に変換され、連携処理部12に出力される。
連携制御部14は、エンジン実行処理部13から出力されたエンジン実行結果を取得し、エンジン実行結果キャッシュ部17に記憶(キャッシュ)させる。そして、連携制御部14は、取得したエンジン実行結果に被写体ラベルが含まれる場合、その被写体ラベルに対応する共通IDをID解決部18から取得し、エンジン実行結果とともにエンジン実行結果キャッシュ部17に記憶(キャッシュ)させる(ステップS6)。
共通IDを取得した場合には、連携制御部14は、取得した共通IDから回答情報を生成し(ステップS7)。そして、連携制御部14は、ステップS4またはステップS7で生成した回答情報を利用者端末1に送信する(ステップS8)。なお、連携制御部14は、ステップS7において、エンジン実行結果に被写体ラベルが含まれない場合には、認識結果が無いことを示す回答情報を生成し、利用者端末1に送信する。
上述したように、バーコード検出エンジン6は、画像認識エンジン3よりも認識結果の信頼性が高いエンジンである。図4を参照して説明した画像認識エンジン3とバーコード検出エンジン6との直列型連携処理では、バーコード検出エンジン6のエンジン実行結果から共通IDが得られた場合には、その共通IDを回答情報として採用し、バーコード検出エンジン6のエンジン実行結果から共通IDが得られなかった場合に、画像認識エンジン3のエンジン実行結果から得られた共通IDを回答情報として採用する。そのため、より信頼性の高いエンジンによる認識結果が優先的に回答情報に採用されるので、画像認識エンジン3を単体で用いる場合と比べて、画像中の被写体の認識精度の向上を図ることができる。
図5は、画像認識エンジン3とバーコード検出エンジン6との並列型連携処理の一例を示すフローチャートである。なお、図5において、図4と同様の処理については同じ符号を付し、説明を省略する。また、図5においては、認識要求には、画像認識エンジン3とバーコード検出エンジン6との並列型連携処理を記述した連携シナリオを示す連携シナリオ名が含まれているものとする。
連携制御部14は、利用者端末1から受信した認識要求に含まれる連携シナリオ名に対応する連携シナリオを連携シナリオ管理部16から取得する。
連携制御部14は、取得した連携シナリオに基づき、バーコード検出エンジン6に対するエンジン実行要求を認識要求キャッシュ部15に記憶された認識要求から生成し、バーコード検出エンジン6に対応するエンジン実行処理部13に出力する。また、連携制御部14は、取得した連携シナリオに基づき、画像認識エンジン3に対するエンジン実行要求を認識要求キャッシュ部15に記憶された認識要求から生成し、画像認識エンジン3に対応するエンジン実行処理部13に出力する(ステップS2a)。
バーコード検出エンジン6に対応するエンジン実行処理部13に出力されたエンジン実行要求は、個別要求に変換され、バーコード検出エンジン6に送信される。また、画像認識エンジン3に対応するエンジン実行処理部13に出力されたエンジン実行要求は、個別要求に変換され、画像認識エンジン3に送信される。そして、各エンジンにおいて、個別要求に応じた処理が実行され、実行結果が個別結果として画像認識エンジン連携装置2に送信される。バーコード検出エンジン6および画像認識エンジン3から送信された個別結果は、対応するエンジン実行処理部13においてエンジン実行結果に変換され、連携処理部12に出力される。
連携制御部14は、エンジン実行要求を出力した各エンジンのエンジン実行結果を待ち受ける。連携制御部14は、エンジン実行処理部13から出力された各エンジンのエンジン実行結果を取得し、エンジン実行結果キャッシュ部17に記憶(キャッシュ)させる。そして、連携制御部14は、取得したエンジン実行結果にバーコード文字列あるいは被写体ラベルが含まれる場合、そのバーコード文字列あるいは被写体ラベルに対応する共通IDをID解決部18から取得し、エンジン実行結果とともにエンジン実行結果キャッシュ部17に記憶(キャッシュ)させる(ステップS3a)。
共通IDを取得した場合には、連携制御部14は、取得した共通IDから回答情報を生成する。ここで、連携制御部14は、バーコード検出エンジン6のエンジン実行結果にバーコード文字列が含まれる場合には、そのバーコード文字列に対応する共通IDを用いて回答情報を生成する。また、連携制御部14は、バーコード検出エンジン6のエンジン実行結果にバーコード文字列が含まれず、画像認識エンジン3のエンジン実行結果に被写体ラベルが含まれる場合には、その被写体ラベルに対応する共通IDを用いて回答情報を生成する(ステップS4a)。なお、連携制御部14は、バーコード検出エンジン6のエンジン実行結果にバーコード文字列が含まれず、かつ、画像認識エンジン3のエンジン実行結果に被写体ラベルが含まれない場合には、認識結果が無いことを示す回答情報を生成し、利用者端末1に送信する。
上述したように、バーコード検出エンジン6は、画像認識エンジン3よりも認識結果の信頼性が高いエンジンである。図5を参照して説明した画像認識エンジン3とバーコード検出エンジン6との並列型連携処理では、バーコード検出エンジン6および画像認識エンジン3の両方にエンジン実行要求を出力し、バーコード検出エンジン6のエンジン実行結果から共通IDが得られた場合には、その共通IDを回答情報として採用し、バーコード検出エンジン6のエンジン実行結果から共通IDが得られず、画像認識エンジン3のエンジン実行結果から共通IDが得られた場合には、画像認識エンジン3のエンジン実行結果から得られた共通IDを回答情報として採用する。そのため、より信頼性の高いエンジンによる認識結果が優先的に回答情報に採用されるので、画像認識エンジン3を単体で用いる場合と比べて、画像中の被写体の認識精度の向上を図ることができる。
図6は、画像認識エンジン3と物体領域抽出エンジン7との直列型連携処理の一例を示すフローチャートである。なお、図6において、図4と同様の処理については同じ符号を付し、説明を省略する。また、図6においては、認識要求には、画像認識エンジン3と物体領域抽出エンジン7との直列型連携処理を記述した連携シナリオを示す連携シナリオ名が含まれているものとする。
連携制御部14は、利用者端末1から受信した認識要求に含まれる連携シナリオ名に対応する連携シナリオを連携シナリオ管理部16から取得する。
連携制御部14は、取得した連携シナリオに基づき、物体領域抽出エンジン7に対するエンジン実行要求を認識要求キャッシュ部15に記憶された認識要求から生成し、物体領域抽出エンジン7に対応するエンジン実行処理部13に出力する(ステップS2b)。
物体領域抽出エンジン7に対応するエンジン実行処理部13に出力されたエンジン実行要求は、個別要求に変換され、物体領域抽出エンジン7に送信される。そして、物体領域抽出エンジン7において、個別要求に応じた処理が実行され、実行結果が個別結果として画像認識エンジン連携装置2に送信される。物体領域抽出エンジン7から送信された個別結果は、エンジン実行処理部13においてエンジン実行結果に変換され、連携処理部12に出力される。
連携制御部14は、エンジン実行処理部13から出力されたエンジン実行結果を取得し、エンジン実行結果キャッシュ部17に記憶(キャッシュ)させる(ステップS3b)。そして、連携制御部14は、取得したエンジン実行結果に物体領域の抽出結果が1つ以上含まれる場合には、物体領域抽出エンジン7のエンジン実行結果に基づき、認識要求キャッシュ部15に記憶された認識要求に含まれる入力画像を加工する(ステップS9)。具体的には、連携制御部14は、認識要求に含まれる入力画像を、物体領域の四隅座標でトリミングした画像を新たな入力画像とする。
次に、連携制御部14は、画像認識エンジン3に対するエンジン実行要求を生成し、画像認識エンジン3に対応するエンジン実行処理部13に出力する。ここで、連携制御部14は、物体領域の四隅座標でトリミングした加工後の入力画像を用いてエンジン実行要求を生成する(ステップS5b)。なお、連携制御部14は、物体領域抽出エンジン7のエンジン実行結果に物体領域が含まれない場合には、認識要求に含まれる入力画像を用いてエンジン実行要求を生成する。
画像認識エンジン3に対応するエンジン実行処理部13に出力されたエンジン実行要求は、個別要求に変換され、画像認識エンジン3に送信される。そして、画像認識エンジン3において、個別要求に応じた処理が実行され、実行結果が個別結果として画像認識エンジン連携装置2に送信される。画像認識エンジン3から送信された個別結果は、エンジン実行処理部13においてエンジン実行結果に変換され、連携処理部12に出力される。
連携制御部14は、図4を参照して説明したように、エンジン実行処理部13から出力されたエンジン実行結果に被写体ラベルが含まれる場合、その被写体ラベルに対応する共通IDを取得し、取得した共通IDを用いて回答情報を生成して、利用者端末1に送信する(ステップS6〜S8)。
画像認識処理においては、入力画像全体の画像特徴量と、データベース(参照画像を記憶するデータベース)に登録された被写体の画像の画像特徴量とに対して照合が行われる。そのため、入力画像に複数の被写体が映り込んでいる場合、照合対象の被写体と異なる被写体の画像特徴量がノイズとなって類似度が低下し、誤認識の可能性が高くなる。
図6を参照して説明した画像認識エンジン3と物体領域抽出エンジン7との直列型連携処理では、画像中の被写体を含むと想定される物体領域を抽出する物体領域抽出エンジン7への、入力画像中の物体領域の問い合わせ処理(エンジン実行要求の出力)と、問い合わせ処理に応じた物体領域抽出エンジン7による物体領域の抽出結果の受け付け処理(エンジン実行結果の取得)とが含まれる。そして、連携制御部14は、物体領域抽出エンジン7による物体領域の抽出結果に基づき、入力画像をトリミングした画像を画像認識エンジン3に入力する(入力画像をトリミングした画像を含むエンジン実行要求を出力する)。
入力画像から被写体を含む可能性が高い(被写体を含むと想定される)部分領域を抽出して画像認識エンジン3への入力とすることで、複数の被写体が映り込んだ画像や、背景部分が多い画像をそのまま画像認識エンジン3に入力する場合に比べて、画像中の被写体の認識精度の向上を図ることができる。
図7は、画像認識エンジン4,5と位置推定エンジン8との並列型連携処理の一例を示すフローチャートである。なお、図7において、図4と同様の処理については同じ符号を付し、説明を省略する。また、図7においては、認識要求には、画像認識エンジン4,5と位置推定エンジン8との並列型連携処理を記述した連携シナリオを示す連携シナリオ名が含まれているものとする。
連携制御部14は、利用者端末1から受信した認識要求に含まれる連携シナリオ名に対応する連携シナリオを連携シナリオ管理部16から取得する。
連携制御部14は、取得した連携シナリオに基づき、位置推定エンジン8に対するエンジン実行要求を認識要求キャッシュ部15に記憶された認識要求から生成し、位置推定エンジン8に対応するエンジン実行処理部13に出力する。また、連携制御部14は、取得した連携シナリオに基づき、画像認識エンジン4に対するエンジン実行要求を認識要求から生成し、画像認識エンジン4に対応するエンジン実行処理部13に出力する。また、連携制御部14は、取得した連携シナリオに基づき、画像認識エンジン5に対するエンジン実行要求を認識要求から生成し、画像認識エンジン5に対応するエンジン実行処理部13に出力する(ステップS2c)。
位置推定エンジン8に対応するエンジン実行処理部13に出力されたエンジン実行要求は、個別要求に変換され、位置推定エンジン8に送信される。また、画像認識エンジン4に対応するエンジン実行処理部13に出力されたエンジン実行要求は、個別要求に変換され、画像認識エンジン4に送信される。また、画像認識エンジン5に対応するエンジン実行処理部13に出力されたエンジン実行要求は、個別要求に変換され、画像認識エンジン5に送信される。そして、各エンジンにおいて、個別要求に応じた処理が実行され、実行結果が個別結果として画像認識エンジン連携装置2に送信される。位置推定エンジン8および画像認識エンジン4,5から送信された個別結果は、対応するエンジン実行処理部13においてエンジン実行結果に変換され、連携処理部12に出力される。
連携制御部14は、エンジン実行要求を出力した各エンジンのエンジン実行結果を待ち受ける。連携制御部14は、エンジン実行処理部13から出力された各エンジンのエンジン実行結果を取得し、エンジン実行結果キャッシュ部17に記憶(キャッシュ)させる。そして、連携制御部14は、画像認識エンジン4のエンジン実行結果に被写体ラベルが含まれる場合、その被写体ラベルに対応する共通IDをID解決部18から取得し、エンジン実行結果とともにエンジン実行結果キャッシュ部17に記憶(キャッシュ)させる。また、連携制御部14は、画像認識エンジン5のエンジン実行結果に被写体ラベルが含まれる場合、その被写体ラベルに対応する共通IDをID解決部18から取得し、エンジン実行結果とともにエンジン実行結果キャッシュ部17に記憶(キャッシュ)させる(ステップS3c)。
次に、連携制御部14は、位置推定エンジン8のエンジン実行結果および画像認識エンジン4,5のエンジン実行結果から得られた共通IDを用いて回答情報を生成する。具体的には、連携制御部14は、位置推定エンジン8のエンジン実行結果に含まれる地名情報が「東京駅」を示し、かつ、東京駅構内看板画像DB10に記録された画像を参照する画像認識エンジン4のエンジン実行結果から共通IDを取得した場合、その共通IDから回答情報を生成する。また、連携制御部14は、位置推定エンジン8のエンジン実行結果に含まれる地名情報が「大阪駅」を示し、かつ、大阪駅構内看板画像DB11に記録された画像を参照する画像認識エンジン5のエンジン実行結果から共通IDを取得した場合、その共通IDから回答情報を生成する。また、連携制御部14は、位置推定エンジン8のエンジン実行結果に含まれる地名情報が「東京駅」を示すものでも、「大阪駅」を示すものでもない場合、信頼度のスコアが高い方の画像認識エンジンのエンジン実行結果から得られた共通IDを用いて回答情報を生成する(ステップS4c)。連携制御部14は、画像認識エンジン4のエンジン実行結果にも、画像認識エンジン5のエンジン実行結果にも被写体ラベルが含まれない場合には、認識結果が無いことを示す回答情報を生成する。
なお、図7においては、位置推定エンジン8のエンジン実行結果に含まれる地名情報が「東京駅」を示す場合には、画像認識エンジン4のエンジン実行結果から取得した共通IDを用いて回答情報を生成し、「大阪駅」を示す場合には、画像認識エンジン5のエンジン実行結果から取得した共通IDを用いて回答情報を生成している。すなわち、位置推定エンジン8のエンジン実行結果に含まれる地名情報に応じて、画像認識エンジン4の推定結果の信頼度と、画像認識エンジン5の推定結果の信頼度とに重み付けを行っている。この重み付けは、付帯情報推定エンジンにより推定される付帯情報などに応じて、適宜、設定することができる。
一般に、異なる被写体であっても画像特徴量が類似している画像は、画像特徴量のみを用いた画像認識処理では誤認識する可能性が高い。例えば、異なる駅の構内看板を画像特徴量の類似のみで区別することは困難である。
図7を参照して説明した画像認識エンジン4,5と位置推定エンジン8との並列型連携処理では、画像を撮影する機能を有する利用者端末1により画像が撮影された際の付帯情報を推定する付帯情報推定エンジン(位置推定エンジン8)への、被写体の認識が要求された画像の付帯情報(地名情報)の問い合わせ処理(エンジン実行要求の出力)と、問い合わせ処理に応じた位置推定エンジン8による画像の付帯情報の推定結果の受け付け処理(エンジン実行結果の取得)とがさらに含まれる。そして、連携制御部14は、位置推定エンジン8による地名情報の推定結果に基づき、複数のエンジン(画像認識エンジン4,5)による認識結果の信頼度に対する重み付けを行い、最も信頼度の高い認識結果を採用する。
付帯情報(図7の例では、位置推定エンジン8によって推定された位置)の推定結果に基づき、複数のエンジン(画像認識エンジン4,5)による認識結果の信頼度に対する重み付けを行うことで、画像特徴量が類似する被写体を画像認識エンジンだけで認識する場合に比べて、画像中の被写体の認識精度の向上を図ることができる。
なお、上述した図4から図7においては、連携シナリオが、直列型連携処理あるいは並列型連携処理を記述したものである例を用いて説明したが、これに限られるものではない。連携シナリオは、直列型連携処理と並列型連携処理とを組み合わせたものであってもよい。例えば、画像認識システム100が、画像認識エンジン3,4,5とは異なる手法により画像認識を行うエンジン(例えば、電子透かしを用いた画像認識を行うエンジン)をさらに備える場合、直列型連携処理と並列型連携処理とを組み合わせた連携シナリオを用いることが考えられる。この場合、例えば、まず、画像認識エンジン3とバーコード検出エンジン6との直列型連携処理が行われ、バーコード検出エンジン6から認識結果が得られなかった場合、画像認識エンジン3と画像認識エンジン3とは異なる手法により画像認識を行うエンジンとの並列型連携処理が行われる。こうすることで、バーコード検出エンジン6から認識結果が得られなかった場合、手法の異なる複数の画像解析エンジンの並列型連携処理が行われることで、画像中の被写体の認識精度の向上を図ることができる。
このように本実施形態においては、画像認識エンジン連携装置2は、画像中の被写体の認識を行う画像認識エンジン3,4,5、および、画像認識エンジン3,4,5とは異なる画像解析手法により、画像中の被写体の認識を行う異種エンジン(バーコード検出エンジン6)を含む複数のエンジンへの、入力画像中の被写体の問い合わせ処理と、問い合わせ処理に応じたエンジンによる被写体の認識結果の受け付け処理とを含むエンジン連携処理を実行する連携処理部12を有する。連携処理部12は、エンジン連携処理を連携シナリオとして管理する。そして、連携シナリオは、被写体の認識結果の信頼性が高いエンジンから順に問い合わせ処理を行い、信頼性が高いエンジンから認識結果が得られない場合に、他のエンジンに問い合わせ処理を行う直列型連携処理と、複数のエンジンに同時に問い合わせを処理を行い、複数のエンジンの認識結果のうち、最も信頼性の高い認識結果を採用する並列型連携処理と、直列型連携処理と並列型連携処理との組み合わせとを含む。
直列型連携処理、並列型連携処理あるいはこれらの組み合わせとして規定される連携シナリオによって、画像認識エンジン3,4,5に加え、画像認識エンジン3,4,5とは異なる画像解析手法により、画像中の被写体の認識を行う異種エンジン(バーコード検出エンジン6)への問い合わせ処理と、認識結果の受け付け処理とが行われるので、画像認識エンジン3,4,5単体での画像認識に比べて、画像中の被写体の認識精度の向上を図ることができる。
なお、実施形態では特に触れていないが、画像認識エンジン連携装置2が行う各処理をコンピュータに実行させるプログラムが提供されてもよい。また、プログラムは、コンピュータ読取り可能媒体に記録されていてもよい。コンピュータ読取り可能媒体を用いれば、コンピュータにインストールすることが可能である。ここで、プログラムが記録されたコンピュータ読取り可能媒体は、非一過性の記録媒体であってもよい。非一過性の記録媒体は、特に限定されるものではないが、例えば、CD−ROMやDVD−ROMなどの記録媒体であってもよい。
あるいは、画像認識エンジン連携装置2が行う各処理を実行するためのプログラムは記憶するメモリおよびメモリに記憶されたプログラムを実行するプロセッサによって構成され、画像認識エンジン連携装置2に搭載されるチップが提供されてもよい。
本発明を図面および実施形態に基づき説明してきたが、当業者であれば本開示に基づき種々の変形または修正を行うことが容易であることに注意されたい。したがって、これらの変形または修正は本発明の範囲に含まれることに留意されたい。例えば、各ブロックなどに含まれる機能などは論理的に矛盾しないように再配置可能であり、複数のブロックを1つに組み合わせたり、或いは分割したりすることが可能である。