【解決手段】商品特定装置1は、撮像画像を取得する取得部と、取得した前記撮像画像に対して標章検出器を用いて、該当する標章を備えた商品か否かを判定する標章検出部と、前記標章を検出した前記撮像画像に対して、前記標章を備えた商品を学習させた第1のニューラルネットワークを用いて複数の商品群のいずれに属するかを特定する商品群特定部と、前記複数の商品群毎に学習させた第2のニューラルネットワークを用いて、商品を特定する商品特定部とを備えることを特徴とする。
【発明を実施するための形態】
【0011】
以下、本発明をその実施の形態を示す図面に基づいて詳述する。
(実施の形態)
図1は、商品特定システムの構成例を示す模式図である。本実施の形態では、ユーザが撮像した商品の撮像画像から、当該画像に映っている商品を特定する商品特定システムについて説明する。商品特定システムは、商品特定装置1と、端末2とを有する。商品特定装置1及び端末2は、インターネット等のネットワークNを介して通信接続されている。
【0012】
商品特定装置1は、種々の情報処理、情報の送受信が可能な情報処理装置であり、例えばサーバ装置、パーソナルコンピュータ等である。本実施の形態で商品特定装置1はサーバ装置であるものとし、以下では簡潔のためサーバ1と読み替える。サーバ1は、商品を撮像した撮像画像から、当該画像内の商品を特定する処理を行う。具体的には、サーバ1は教師用の商品画像から商品の特徴量を学習する機械学習処理を行い、画像から商品を特定するための学習モデルを構築しておく。サーバ1は、当該学習モデルを参照して、ユーザが撮像した画像に含まれる商品を特定する。
【0013】
端末2は、個々のユーザが所持する端末装置であり、例えばスマートフォン、タブレット端末、パーソナルコンピュータ等である。本実施の形態で端末2は、撮像機能を有するスマートフォンであるものとして説明する。端末2は、ユーザによる操作に従って商品を撮像し、撮像した画像をサーバ1へ送信する。サーバ1は、端末2から取得した画像に対して画像認識を行い、商品を特定する。
【0014】
図2は、サーバ1の構成例を示すブロック図である。サーバ1は、制御部11、主記憶部12、通信部13、補助記憶部14を備える。
制御部11は、一又は複数のCPU(Central Processing Unit)、MPU(Micro-Processing Unit)、GPU(Graphics Processing Unit)等の演算処理装置を有し、補助記憶部14に記憶されたプログラムPを読み出して実行することにより、サーバ1に係る種々の情報処理、制御処理等を行う。主記憶部12は、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)、フラッシュメモリ等の一時記憶領域であり、制御部11が演算処理を実行するために必要なデータを一時的に記憶する。通信部13は、通信に関する処理を行うための処理回路等を含み、端末2等と情報の送受信を行う。
【0015】
補助記憶部14は大容量メモリ、ハードディスク等であり、制御部11が処理を実行するために必要なプログラムP、その他のデータを記憶している。また、補助記憶部14は、機械学習処理によって構築した学習モデルのデータを記憶している。具体的には、補助記憶部14は、商品を撮像した画像から商品容器に付された標章を検出するための標章識別器(標章検出器)141、撮像された商品が予め定められている複数の商品群のいずれに属するかを特定するための商品群識別器142(第1のニューラルネットワーク)、及び具体的な個々の商品を特定するための商品識別器143(第2のニューラルネットワーク)を記憶している。サーバ1は、各識別器を用いて撮像画像から商品を特定する処理を行う。
【0016】
なお、補助記憶部14はサーバ1に接続された外部記憶装置であってもよい。また、サーバ1は複数のコンピュータからなるマルチサーバであってもよく、ソフトウェアによって仮想的に構築された仮想マシンであってもよい。
【0017】
また、本実施の形態においてサーバ1は上記の構成に限られず、例えば操作入力を受け付ける入力部、サーバ1に係る情報を表示する表示部、可搬型記憶媒体に記憶された情報を読み取る読取部等を含んでもよい。
【0018】
図3は、本実施の形態の概要を示す説明図である。
図3では、所定の商品について画像特徴量を学習済みのサーバ1が、端末2より送信される画像内の商品を特定する様子を図示している。
例えばサーバ1は、事前登録されている商品(例えば企業の自社商品)を撮像した教師用の画像データから商品容器の色、形状等の特徴量を学習する機械学習処理を行い、学習モデルを構築しておく。サーバ1は、ユーザが撮像した商品の画像データを端末2から取得し、上記の学習モデルを参照して、撮像画像に含まれる商品が、予め登録されている特定の商品のいずれに該当するかを特定する。例えばサーバ1は、特定した商品の情報をユーザに提供する。
【0019】
しかしながら、未登録の商品(例えば他社商品)をユーザが撮像する場合もあり得る。この場合、サーバ1は、撮像画像の商品を登録商品のいずれかに分類することになる。このように、不特定多数の画像が入力された場合、登録済みの商品のいずれかに強制分類され、誤って商品を特定する虞がある。
【0020】
そこでサーバ1は、未登録商品の画像を除外する前処理を行うことで、上記の事態を防止する。具体的には、サーバ1は標章識別器141を用いて、登録商品に付された標章を撮像画像から検出する。登録商品の標章が検出されない場合、サーバ1は、当該画像を処理対象から除外する。
【0021】
図4は、標章特定処理を説明するための説明図である。
図4Aは、撮像画像から局所特徴量を抽出する様子を図示している。
図4Bでは、抽出した局所特徴量のクラス分類を行う様子を図示している。
例えばサーバ1は、撮像画像から輝度の勾配を示す局所特徴量を抽出し、抽出した局所特徴量に基づき、商品容器に付された標章を検出する。局所特徴量は、例えばHOG(Histograms of Oriented Gradients)特徴量である。HOG特徴量は、撮像画像を所定単位で分割した局所領域(セル)における輝度の勾配方向をヒストグラム化することで、輝度勾配をベクトル表現した特徴量である。HOG特徴量は、
図4Aに示すように、5×5のピクセルを1セルとし、3×3のセルを1ブロックとして、1ブロックの輝度勾配を8方向のバイナリ(
図4Aに示す矢印)のヒストグラムで表現する。なお、上記のブロック及びセルの構成単位は一例であり、任意に変更してよい。また、勾配を表現するバイナリは8方向に限定されない。HOG特徴量は幾何学変化に強く、画像照明の変動に頑健な特長がある。本実施の形態においてサーバ1は、標章を特定するための特徴量として、HOG特徴量を用いる。
【0022】
例えばサーバ1は、HOG特徴量に基づき、SVM(Support Vector Machine)のアルゴリズムを用いて標章を特定する。SVMは、教師あり学習を用いたパターン認識手法であり、入力データ(撮像画像)をクラス分類する手法である。
図4Bに概念的に示すように、SVMでは、多次元の特徴量空間に各クラス(
図4Bでは2クラス)のデータサンプルを射影し、最近傍サンプルからの距離(マージン)が最大となる識別面を求めることで、当該識別面を識別境界としてクラス分類を行う識別器を生成する。SVMでは当該識別器を用い、識別対象である入力データの特徴量が、識別面を境界とした空間のいずれに位置するかを判定することで、クラス分類を行う。
【0023】
本実施の形態においてサーバ1は、容器に標章が付された登録商品の教師用画像に、当該画像における標章部分の座標位置の正解値がラベル付けされた教師データを取得(入力)する。標章は、文字、図形、記号等から成る所謂ロゴであり、消費者が商品を識別する際に着目するマークである。なお、後述する変形例で説明するように、本実施の形態における「標章」はロゴに限定されず、消費者が商品を識別する際に特徴となる商品容器等の構造、すなわち商品の形状も標章に含まれる。サーバ1は、教師用画像から、教師データで規定された座標位置のHOG特徴量を抽出することで、標章部分の輝度勾配を多次元の特徴量ベクトルで表現する。そしてサーバ1は、標章部分のHOG特徴量を多次元の特徴空間に射影し、マージンが最大となる識別境界を求めることで、HOG特徴量から標章を識別する標章識別器141を生成する。端末2から撮像画像を取得した場合、サーバ1は標章識別器141を用いて、当該画像に映っている商品に付された標章を検出する。
【0024】
上記の機械学習時に学習対象とした登録商品の標章が撮像された商品に付されていない、又は標章は付されているが登録商品のものではない等の理由で、登録商品の標章が撮像画像から検出されなかった場合、サーバ1は、撮像画像の商品が登録商品ではないものとして、処理対象から除外する。例えばサーバ1は、標章検出に失敗した旨を端末2に通知し、一連の処理を終了する。
【0025】
図5は、商品特定処理を説明するための説明図である。標章検出に成功した場合、サーバ1は、当該商品が登録商品のいずれに該当するかを特定する。具体的には、サーバ1は、ResNet(Residual Network)に係るニューラルネットワークである商品群識別器142及び商品識別器143を教師データから予め生成し、各識別器を用いて個々の商品を特定していく。
【0026】
ResNetはニューラルネットワークの一種であり、非常に層が深く、識別精度が高いという特長を有する。
図5上側に、ResNetの概念的な模式図を示す。ResNetでは、所定数のニューロン層ずつ(
図5では2層ずつ)入力値と出力値の残差を計算し、計算した残差を入力値として次の層に入力するネットワーク構造を有する。ResNetでは最終層(出力層)まで上記の残差計算を繰り返す。これにより、層数を多くした場合に生じる勾配消失、勾配発散等の問題を抑止し、高い識別精度を確保することができる。
【0027】
本実施の形態ではResNet−101を採用し、サーバ1は、101層のニューロン層を有するニューラルネットワーク構造の識別器を生成する。より詳細には、サーバ1は、畳み込み演算を実行するニューロン層を含むCNN(Convolution Neural Network)モデルの識別器を構築する。サーバ1は、生成した識別器を用いて個々の商品を特定していく。
【0028】
具体的には、サーバ1は、教師用画像と、登録商品が属する商品群、及び商品自体を示す情報とを含む教師データを取得(入力)し、当該教師データから商品群識別器142及び商品識別器143を夫々生成する。商品群は、例えばシリーズ化されている商品ブランドにつき容器が互いに似ている商品など、特徴量がある程度近似する商品の区分である。サーバ1は、商品群の正解値(例えば商品群の名称。以下、「シリーズ名」と呼ぶ)がラベル付けされた教師用画像を取得する。サーバ1は、教師用画像から商品容器の色、形状、あるいは商品容器に表記されたシリーズ名の文字等の特徴量を抽出することで、商品群識別器142を生成する。
【0029】
また、サーバ1は、教師画像に個々の商品を特定可能な情報(例えば商品名)がラベル付けされた教師データから、個別の商品を識別する商品識別器143を生成する。本実施の形態でサーバ1は、商品群毎に異なる商品識別器143a、143b、143c…を生成する。外観が似た商品群毎に個々の商品の特徴を学習し、商品群毎に別々の商品識別器143を用いることで、画像認識処理が複雑にならず、精度を高めることができる。
【0030】
サーバ1は、上記の商品群識別器142及び商品識別器143を用いて商品を特定する。まずサーバ1は、標章識別器141で標章を検出した撮像画像を商品群識別器142に入力し、商品群を特定する。例えばサーバ1は、撮像画像から商品容器の形状、色、あるいは商品容器に付された文字等に係る特徴量を抽出し、商品容器がどの商品群の容器に近いか、あるいはどの商品群のシリーズ名が付されているか等を識別する。これにより、サーバ1は、撮像画像の商品がどの商品群に属するかを特定する。
【0031】
商品群を特定後、サーバ1は、撮像された商品が具体的にどの商品に該当するかを、商品群に応じた商品識別器143を用いて特定する。例えば
図5下側に概念的に示すように、サーバ1は、商品群識別器142で商品のシリーズが「シリーズA」である旨を特定した場合、「シリーズA」の商品を識別するための商品識別器143aを、商品特定に用いる識別器として選択する。サーバ1は商品識別器143aに画像データを入力し、商品容器の色、形状、あるいは商品容器に付された文字等の特徴量を抽出して、撮像された商品が「商品A1」であることを特定する。このように、サーバ1は、商品のシリーズ(商品群)に応じて異なる商品識別器143を用い、個別の商品を特定する。
【0032】
図6は、商品特定画面の一例を示す説明図である。サーバ1は商品の特定結果を出力し、端末2は、
図6に示す商品特定画面を表示する。
図6に示すように、端末2は、特定した商品のサンプル画像と共に、標章(ロゴ)の検出結果、商品のシリーズ名、及び商品名を表示する。なお、
図6でシリーズ名及び商品名に付された数字は、画像認識時に計算された信頼度である。
【0033】
なお、
図6ではシリーズ名及び商品名の双方を表示しているが、例えば画像認識時の信頼度が所定の閾値以下である場合等、サーバ1が個別の商品の認識に失敗し、商品名を特定できない場合もあり得る。この場合にサーバ1は、シリーズ名のみを端末2に表示させる。商品群識別器142が識別対象とする商品群は、外観においてある程度似ている商品容器をまとめて識別するものであるため、個々の商品を識別するよりも精度が高い。この商品群の特定結果(シリーズ名)を最低限ユーザに提示することで、個別の商品特定に失敗した場合であっても、ユーザはシリーズ名を手掛かりに商品情報を得ることができる。
【0034】
なお、商品群特定時の信頼度も低く、商品群の特定にも失敗した場合、サーバ1は、撮像画像から検出した標章の検出結果のみを端末2に出力し、一連の画像認識処理を終了する。
【0035】
図7は、学習モデルの学習処理の処理手順の一例を示すフローチャートである。
図7に基づき、サーバ1が実行する機械学習処理の処理内容について説明する。
サーバ1の制御部11は、学習対象とする商品の商品容器が撮像された教師用画像と、商品容器に付された標章、商品が属する商品群、及び個々の商品を示す情報とを含む教師データを取得する(ステップS11)。標章は、例えば文字、図形、記号から成る所謂ロゴである。商品群は、例えばシリーズ化されている商品ブランドのように、ある程度特徴量が近似する商品の区分である。制御部11は、標章、商品群、及び商品自体の正解値が商品画像にラベル付けされた、訓練用の教師データを取得する。例えば制御部11は、商品容器において標章が付されている座標位置、商品が属する商品群のシリーズ名、個々の商品の商品名等の情報がラベル付けされた教師データを取得する。
【0036】
制御部11は、教師用画像から特徴量を抽出する機械学習処理を行い、撮像画像から標章、商品群、及び商品自体を特定する識別器を夫々生成する(ステップS12)。例えば制御部11は、教師データが示す座標位置の輝度勾配に係る局所特徴量(HOG特徴量)を抽出し、抽出した局所特徴量を特徴空間に射影して識別境界を求めることで、対象商品に付された標章を局所特徴量から検出(クラス分類)可能な標章識別器141を生成する。また、制御部11は、商品容器の色、形状、あるいは商品に付された文字等の特徴量を抽出し、商品群及び商品自体を示す情報(例えばシリーズ名及び商品名)と紐付けることで、画像の特徴量から商品群及び商品を特定する商品群識別器142及び商品識別器143を生成する。具体的には、制御部11は、所定数のニューロン層毎に入力値と出力値の残差計算を繰り返すResNetのネットワーク構造を有し、かつ、畳み込み演算を実行するニューロン層を含むCNNモデルの識別器を夫々生成する。制御部11は、商品群毎に異なる商品識別器143a、143b、143c…を生成する。制御部11は、一連の処理を終了する。
【0037】
図8は、商品特定処理の処理手順の一例を示すフローチャートである。
図8に基づき、上記の学習モデルに基づいて商品を特定する商品特定処理の処理内容について説明する。
サーバ1の制御部11は、ユーザが商品容器を撮像した撮像画像を端末2から取得する(ステップS31)。制御部11は、撮像画像に対して標章識別器141を用いて、画像内の商品の容器に付された標章を検出する(ステップS32)。具体的には、制御部11は撮像画像を所定単位の局所領域に分割し、各局所領域の輝度勾配を示す局所特徴量(HOG特徴量)を抽出する。制御部11は、抽出した局所特徴量が、特徴空間において識別境界により区分されるいずれの空間に位置するかを判定することで、事前登録された商品の標章を検出する。
【0038】
制御部11は、標章の検出に失敗したか否かを判定する(ステップS33)。標章の検出に失敗した場合(S33:YES)、制御部11は、標章検出に失敗した旨を端末2に出力し(ステップS34)、一連の処理を終了する。
【0039】
標章の検出に失敗しなかった場合(S33:NO)、制御部11は商品群識別器142(第1のニューラルネットワーク)を用いて、撮像された商品が予め定められた複数の商品群のいずれに属するかを特定する(ステップS35)。商品群は、例えばシリーズ化されているブランド商品など、特徴量がある程度近似する商品の区分である。制御部11は、ResNetに係るニューラルネットワークである商品群識別器142を用いて、撮像画像の商品が複数の商品群のいずれに属する商品であるかを特定する。
【0040】
制御部11は、商品群の特定に失敗したか否かを判定する(ステップS36)。例えば制御部11は、画像認識時に計算された信頼度が所定の閾値以下であるか否かに応じて判定を行う。商品群の特定に失敗した場合(S36:YES)、制御部11は、ステップS32における標章の検出結果を端末2に出力し(ステップS37)、一連の処理を終了する。
【0041】
商品群の特定に失敗しなかった場合(S36:NO)、制御部11は、特定した商品群に応じて異なる商品識別器143(第2のニューラルネットワーク)を用い、個別の商品を特定する(ステップS38)。商品識別器143は、複数の商品群毎に個別の商品の特徴量を学習したResNetに係るニューラルネットワークである。制御部11は、ステップS35で特定した商品群に応じて異なるニューラルネットワークに撮像画像を入力し、個々の商品を特定する。
【0042】
制御部11は、ステップS35において個別商品の特定に失敗したか否かを判定する(ステップS39)。例えば制御部11は、画像認識時の信頼度が所定の閾値以下であるか否かに応じて判定を行う。商品の特定に失敗しなかった場合(S39:NO)、制御部11は、特定した商品及び商品群を示す商品特定画面を生成し、端末2に出力する(ステップS40)。具体的には
図6に示したように、制御部11は、商品名とシリーズ名とを信頼度付きで示す商品特定画面に出力する。商品の特定に失敗した場合(S39:YES)、制御部11は商品群のみを示す商品特定画面を端末2に出力する(ステップS41)。制御部11は、一連の処理を終了する。
【0043】
なお、上記ではSVM法を用いて標章を検出したが、例えばOCR(Optical Character Recognition)等の光学的手法によって標章を検出してもよい。つまり、画像認識によって標章を検出可能であればよく、検出アルゴリズムは機械学習によるものに限定されない。
【0044】
また、標章検出に用いる特徴量としてHOG特徴量を用いたが、例えばSIFT、SURF等の特徴量を用いてもよい。
【0045】
また、本実施の形態ではユーザ側の端末2ではなく、クラウド上のサーバ1で処理を実行したが、学習モデルのデータを端末2にインストールし、端末2で一連の特定処理を行うようにしても良い。
【0046】
以上より、本実施の形態によれば、サーバ1はまず商品に付された標章を撮像画像から特定し、その後に個別の商品を特定していく。標章は多くの商品に付されており、これを基に処理対象を絞り込むことで、撮像画像から認識された物体が対象とすべき商品であるか否か、適切に判断することができる。また、サーバ1は商品群を特定後、個別の商品を特定していく。このように、商品を大まかに分類してから個別に特定していくことで学習内容が複雑にならず、精度を向上することができる。上記より、撮像画像から商品を適切に特定することができる。
【0047】
また、本実施の形態によれば、サーバ1は、撮像画像から輝度勾配を示す局所特徴量(HOG特徴量)を抽出し、SVM法を用いて特徴空間で標章を検出する。例えばOCR技術を用いた場合、容器表面の材質(凹凸や鏡面等)や標章自体のデザイン等の条件によっては、正常な認識が困難になる虞がある。一方で、本実施の形態のように局所特徴量を抽出してパターン認識を行うことで、精度良く標章を検出することができる。
【0048】
また、本実施の形態によれば、撮像画像から特定した商品及び商品群を示す商品特定画面を端末2に表示することで、ユーザは簡単に商品の情報を取得できるようになり、適切なサービス支援を行うことができる。
【0049】
また、本実施の形態によれば、具体的な商品の特定に失敗した場合であっても、商品群(例えば商品ブランド)をユーザに提示することでき、より適切なサービス支援を行うことができる。
【0050】
(変形例)
上述の実施の形態では、商品容器に付されたロゴを標章と捉え、標章識別器141を用いてロゴを検出するようにした。変形例ではロゴではなく、商品が有する特徴的な形状を標章として捉え、標章識別器141が学習済みの商品形状を有するか否かを検出する形態について説明する。
【0051】
図9は、変形例の概要を示す説明図である。
図9では、撮像された商品の容器の形状(
図9で太線で図示)に基づき、当該商品が自社商品等の登録商品であるか否かを判定する様子を図示してある。
【0052】
変形例においてサーバ1は、教師用の画像から事前に商品容器の形状を学習する学習処理を行い、特定の商品容器の形状を撮像画像から検出(識別)する標章識別器141を生成してある。例えばサーバ1は、商品群ごと、あるいは商品毎などの単位で、各商品A、B、…の標章識別器141a、141b、…を生成してある。
【0053】
サーバ1は、端末2から取得した撮像画像を各標章識別器141に入力し、撮像された商品の容器が、標章として学習済みの形状を有するか否かを判定する。これによりサーバ1は、自社の標章を有する商品であるか否かを判定する。例えば
図9に示すように、自社の商品Aの撮像画像が標章識別器141に入力された場合、この画像から商品Aの容器の形状を検出し、標章に該当する商品形状を有するものと判定する。その結果、サーバ1は当該画像を続く商品群識別器142に入力し、上述の実施の形態と同様に個々の商品の特定を行う。一方で、
図9に示すように他社商品である商品Dの撮像画像が入力された場合、いずれの標章識別器141も標章に該当する商品形状を検出しないため、当該画像は処理対象から除外される。
【0054】
上述の如く、標章は文字、図形、記号等のロゴに限定されず、商品自体の形状であってもよい。
なお、特段説明しなかったが、標章識別器141が標章として検出する商品の形状は商品の全体的な形状のみならず、商品の一部の形状であってもよい。例えば上述の例では、容器のキャップ部分に特徴的な形状を有する場合、キャップ部分のみの形状に基づいて標章を有するか否かを判定してもよい。このように、標章識別器141が検出する標章は商品の全体的な形状であってもよく、一部の形状であってもよい。
【0055】
図10は、変形例に係る商品特定処理の処理手順の一例を示すフローチャートである。商品容器を撮像した画像を取得した後(ステップS31)、サーバ1の制御部11は、以下の処理を実行する。制御部11は、商品容器の形状を学習した標章識別器141を用い、撮像画像から、標章に該当する商品の形状を検出する(ステップS201)。制御部11は、標章に該当する商品形状の検出に失敗したか否かを判定する(ステップS202)。標章に該当する形状の検出に失敗した場合(S202:YES)、制御部11は処理をステップS34に移行する。標章に該当する形状の検出に失敗しなかった場合(S202:NO)、制御部11は処理をステップS35に移行する。
【0056】
以上より、撮像画像から商品を特定するにあたり、商品の形状によっても処理対象とすべき画像を絞り込むことができる。
【0057】
図11は、上述した形態のサーバ1の動作を示す機能ブロック図である。制御部11がプログラムPを実行することにより、サーバ1は以下のように動作する。取得部111は、撮像画像を取得する。標章検出部112は、取得した前記撮像画像に対して標章検出器を用いて、該当する標章を備えた商品か否かを判定する。商品群特定部113は、前記標章を検出した前記撮像画像に対して、前記標章を備えた商品を学習させた第1のニューラルネットワークを用いて複数の商品群のいずれに属するかを特定する。商品特定部114は、前記複数の商品群毎に学習させた第2のニューラルネットワークを用いて、商品を特定する。
【0058】
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。