【文献】
福田悠人外2名,対話物体認識のための材質情報の獲得,第17回画像センシングシンポジウム講演論文集[CD−ROM],画像センシング技術研究会,2011年 6月 8日,pp. IS4-19-1〜IS4-19-6
【文献】
大堀隆文外3名,識別順序を考慮した改良型パーセプトロンによるオンライン手書き漢字認識,電気学会論文誌D,社団法人電気学会,1991年12月20日,第111巻,第12号,pp.1047 - 1056
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
【0012】
図1は、本発明の一実施形態に係る多クラス識別器101のハードウェア構成例を示すブロック図である。
【0013】
この多クラス識別器101は例えば、いわゆるスマートフォンなどの携帯情報端末から花などの撮影画像データを受信して、識別器によってその花などの種類を検索して識別し、その識別結果を携帯情報端末に返す検索システムのコンピュータ上に実現される。
【0014】
多クラス識別器101は、CPU(Central Processing Unit:中央演算処理装置)102と、ROM(Read Only Memory)103と、RAM(Random Access Memory)104を備える。また、多クラス識別器101は、ハードディスク記憶装置やソリッドステートドライブ記憶装置等の外部記憶装置105と、通信インタフェース106と、キーボード装置又はマウス装置などの入力装置107と、ディスプレイ装置などの出力装置108を備える。さらに、多クラス識別器101は、SDメモリカード、USB(Universal Serial Bus)メモリカード、CD(Conpact Disk)、DVD(Digital Versatile Disk)などの可搬記録媒体110をセット可能な可搬記録媒体駆動装置109を備える。上述の各機器102〜109は、バス111によって相互に接続される。
【0015】
ROM103には、後述する
図2及び
図7から
図12のフローチャートによって示される多クラス識別器生成処理の制御プログラムが記憶されている。CPU102は、ROM103から、この制御プログラムを読み出し、RAM104をワークメモリとして実行する。このハードウェア構成に基づいて動作する多クラス識別器は例えばソフトウェアであり、ROM103、RAM104、又は外部記憶装置105に記憶される。なお、多クラス識別器生成処理において入力される学習用データは、例えば外部記憶装置105、あるいは可搬記録媒体駆動装置109にセットされる可搬記録媒体110から供給される。
【0016】
多クラス識別器が生成された後は、CPU102は、ROM103、RAM104、又は外部記憶装置105に記憶された多クラス識別器のソフトウェアを読み出して実行することにより、多クラス識別器として動作する。或いは、多クラス識別器は、他のコンピュータシステムで実行されてもよい。この多クラス識別器は、例えばいわゆるスマートフォンなどの携帯情報端末からインターネットを経由して通信インタフェース106で花の撮影画像データを受信する。そして、多クラス識別器は、その花の種類を検索して識別し、その識別結果を通信インタフェース106からインターネットを経由して、携帯情報端末に返す。なお、多クラス識別器は、例えばスマートフォンの搭載アプリケーションとしてスマートフォンに直接提供されてもよい。
【0017】
図2は、
図1のハードウェア構成で示される多クラス識別器101によって実行される、本実施形態による多クラス識別器生成処理の全体動作を示すフローチャートである。
【0018】
このフローチャートで示される処理は、その詳細を示す
図7から
図12までのフローチャートで示される処理とともに、
図1において、CPU102がROM103に記憶された制御プログラムを実行する処理として実現される。
【0019】
まず、学習用データ収集処理が実行される(
図2のステップS201)。ここでは、例えば
図1の外部記憶装置105に、学習用データが用意される。学習用データは、識別を行うクラス、例えば花の画像であれば花の種別ごとに用意される。そして、各学習用データには、その学習用データが表す特徴のクラス(例えば花の画像の種別)を示すラベルが付与される。全体として、複数のクラス×複数枚の学習用データが用意される。より具体的には例えば、アサガオ、ヒルガオ、ツユクサ、ヒマワリの4種の花画像について、それぞれ50枚ずつの画像データが学習用データとして収集される。集められた画像データそれぞれについて、花の名前と関連付けるラベルデータベースが作成される。
【0020】
次に、第1階層目識別器生成処理(1階層目識別器生成手段の機能を実現する)が実行される(
図2のステップS202)。このステップS202では、複数の学習用データからそれぞれ抽出した各1階層目特徴ベクトルを入力してその各学習用データが表す特徴が複数のクラスのうちの1つのクラスに属するか否かを識別する1階層目識別器を生成する処理が、複数のクラスごとに実行される。この結果、各学習用データが表す特徴が複数のクラスのそれぞれに属するか否かを個別に識別する複数の1階層目識別器が生成される。
【0021】
次に、2階層目識別器生成処理(2階層目識別器生成手段の機能を実現する)が実行される(
図2のステップS203)。このステップS203では、複数の学習用データごとに、学習用データがステップS202で生成された各クラスの1階層目識別器に入力される。その結果、各クラスの1階層目識別器が出力する各スコア値が連結されることにより、入力された学習用データに対応する2階層目特徴ベクトルが生成される。学習用データが入力されるごとに2階層目特徴ベクトルが生成される。続いて、各2階層目特徴ベクトルが入力されてその各2階層目特徴ベクトルに対応する各学習用データが表す特徴が複数のクラスのうちの1つのクラスに属するか否かを識別する2階層目識別器を生成する処理が、複数のクラスごとに実行される。この結果、各学習用データが表す特徴が複数のクラスのそれぞれに属するか否かを個別に識別する複数の2階層目識別器が生成される。
【0022】
図3は、
図2のフローチャートの制御処理によって生成される2階層多クラス識別器の構成図である。
【0023】
図2のステップS202で、例えば、ヒルガオvs残りを識別する#1の1階層目識別器302、アサガオvs残りを識別する#2の1階層目識別器302、ツユクサvs残りを識別する#3の1階層目識別器302、およびヒマワリvs残りを識別する#4の1階層目識別器302が、それぞれ生成される。これらの1階層目識別器302は、ヒルガオ、アサガオ、ツユクサ、またはヒマワリのいずれかの種類に対応するクラスのラベルが付与された複数の学習用データから、画像的な特徴情報(色、テクスチャ等)に基づいてそれぞれ抽出された各1階層目特徴ベクトル301を入力し生成される。
【0024】
この場合、#1から#4の各1階層目識別器302が出力するスコア値は、各クラスの1階層目識別器302を生成した学習用データが他のクラスの学習用データとどれだけ分離しているか(分離度)によって変わってくる。このため、#1から#4の各1階層目識別器302の識別性能が均一にならず、正規化されていない。
【0025】
この問題を、
図4に示される、1階層目特徴ベクトルの特徴空間上での分布例を示す模式図を用いて説明する。
図4は、説明をわかりやすくするために1階層目特徴ベクトル301が(x1,x2)という2つの要素値からなる2次元ベクトルであると仮定した説明図である。また、ヒマワリの分布は省略してある。
【0026】
図4に示される1階層目特徴ベクトル301の特徴空間上での分布例において、例えば、アサガオの分布401とヒルガオの分布402は特徴空間上での両分布間の距離が小さく、これら2つの花は画像的な特徴が非常に似ている。従って、1階層目特徴ベクトル301に基づいて生成されるヒルガオvs残りを識別する#1の1階層目識別器302およびアサガオvs残りを識別する#2の1階層目識別器302は、ともに近いスコア値を出力することが予想される。
【0027】
図5は、
図3の#1から#4の各1階層目識別器302が出力するスコア値の例を示す図である。この例では、アサガオサンプル(学習用データ)が入力されたときの各1階層目識別器302が出力するスコア値の例と、ヒルガオサンプル(学習用データ)が入力されたときの各1階層目識別器302が出力するスコア値の例が示されている。この例の場合、アサガオサンプルが入力されたときの
図3のヒルガオvs残りを識別する#1の1階層目識別器302およびアサガオvs残りを識別する#2の1階層目識別器302の各スコア値は、“0.8±0.5”および“0.9±0.5”というように非常に近い値である。また、ヒルガオサンプルが入力されたときの
図3のヒルガオvs残りを識別する#1の1階層目識別器302およびアサガオvs残りを識別する#2の1階層目識別器302の各スコア値も、“0.9±0.5”および“0.8±0.5”というように非常に近い値である。
【0028】
従って、入力データとしてヒルガオの画像データやアサガオの画像データが入力されたときには、相互に識別誤りを起こしやすいことが予想される。
【0029】
一方、
図4に示される1階層目特徴ベクトル301の特徴空間上での分布例において、例えば、ヒルガオの分布402とツユクサの分布403は特徴空間上での両分布間の距離が大きく、これら2つの花は画像的な特徴が似ていない。従って、1階層目特徴ベクトル301に基づいて生成されるヒルガオvs残りを識別する#1の1階層目識別器302およびツユクサvs残りを識別する#3の1階層目識別器302は、互いに近くないスコア値を出力することが予想される。
【0030】
図5の例において、ヒルガオサンプルが入力されたときの
図3のヒルガオvs残りを識別する#1の1階層目識別器302およびツユクサvs残りを識別する#3の1階層目識別器302の各スコア値は、“0.9±0.5”および“−0.5±0.5”というように近くない値である。
【0031】
従って、入力データとしてヒルガオの画像データとツユクサの画像データが入力されたときには、ヒルガオvs残りを識別する#1の1階層目識別器302およびツユクサvs残りを識別する#3の1階層目識別器302は、相互に識別誤りを起こしにくいことが予想される。
【0032】
なお、
図4に示される1階層目特徴ベクトル301の特徴空間上での分布例において、例えば、アサガオの分布401とツユクサの分布403は特徴空間上での両分布間の距離が中程度であり、これら2つの花は画像的な特徴が似てるとも似てないともいえない。この場合、
図5の例において、アサガオサンプルが入力されたときの
図3のアサガオvs残りを識別する#2の1階層目識別器302およびツユクサvs残りを識別する#3の1階層目識別器302の各スコア値は、“0.9±0.5”および“0.5±0.5”というようにやや近い値となる。
【0033】
このように、各1階層目識別器302の性能が均一にならないと、入力される花の画像の種類によって、識別誤りを起こしやすかったり起こしにくかったりといった状況が発生してしまい、識別の信頼性が低下してしまう。
【0034】
また、#1から#4の各1階層目識別器302を生成するのに使用される学習用データの数は同一であるとは限らず、十分なサンプル数が与えられない場合もあるため、#1から#4の各1階層目識別器302の識別性能は均一ではなくやはり正規化されていないため、識別の信頼性が低下してしまう。
【0035】
そこで、本実施形態ではさらに、
図2のステップS203において、入力された学習用データに対して#1から#4の各1階層目識別器302が出力する各スコア値が連結されることにより、その学習用データに対応する2階層目特徴ベクトル303が生成される。
図6は、2階層目特徴ベクトルのデータ構成例を示す図である。#1から#4の各1階層目識別器302が出力する各スコア値を、X
1 、X
2 、X
3 、およびX
4 とする。本実施形態では、2階層目特徴ベクトル303として、これら4つのスコア値を各要素値とする4次元の特徴ベクトル(X
1 ,X
2 ,X
3 ,X
4 )が生成される。
【0036】
そして、本実施形態では、上記構成を有する2階層目特徴ベクトル303を入力として、ヒルガオvs残りを識別する#1の2階層目識別器304、アサガオvs残りを識別する#2の2階層目識別器304、ツユクサvs残りを識別する#3の2階層目識別器304、およびヒマワリvs残りを識別する#4の2階層目識別器304が、それぞれ生成される。
【0037】
この場合、例えば#1の2階層目識別器304が生成される場合、#1から#4の各1階層目識別器302が出力する各スコア値が評価されることになる。これにより例えば、入力された2階層目特徴ベクトル303において、ヒルガオvs残りを識別する#1の1階層目識別器302が出力するスコア値X
1 が大きく、ツユクサvs残りを識別する#3の1階層目識別器302が出力するスコア値X
3 が小さい場合に、最大スコア判定305において最大のスコア値を出すようなヒルガオvs残りを識別する#1の2階層目識別器304を生成することができる。また、入力された2階層目特徴ベクトル303において、アサガオvs残りを識別する#2の1階層目識別器302が出力するスコア値X
1 が大きく、ツユクサvs残りを識別する#3の1階層目識別器302が出力するスコア値X
3 もやや大きい場合に、最大スコア判定305において最大のスコア値を出すようなアサガオvs残りを識別する#2の2階層目識別器304を生成することができる。
【0038】
このような2階層目識別器304において例えば、アサガオサンプルに対応する2階層目特徴ベクトル303が入力されると、そのベクトル内のスコア値X
3 が比較的大きいため、ヒルガオvs残りを識別する#1の2階層目識別器304が出力するスコア値は大きくならない。また例えば、ヒルガオサンプルに対応する2階層目特徴ベクトル303が入力されると、そのベクトル内のスコア値X
3 が小さいため、アサガオvs残りを識別する#2の2階層目識別器304が出力するスコア値は大きくならない。
【0039】
このようにして、本実施形態では、
図3に示される#1から#4の1階層目識別器302と#1から#4の2階層目識別器304の2階層からなる多クラス識別器によって、#1から#4までの各クラスの識別性能を均等にして正規化することが可能となる。
【0040】
図7は、
図2の1階層目識別器生成処理の詳細を示すフローチャートである。このフローチャートは、入力されるデータ中の特徴が画像の特徴であって例えば、アサガオ、ヒルガオ、ツユクサ、ヒマワリの4クラスの花画像の特徴の識別を行う1階層目識別器を作成する処理を示している。また、画像の特徴抽出では、BOF(Bag Of Features)と呼ばれる画像分類において一般的な方式が実行されることにより、各画像から特徴抽出が行われる。
【0041】
まず、特徴抽出処理が実行される(
図7のステップS701)。この処理では、学習用データのそれぞれにおいて、学習用データが示す画像内の各グリッドに対応させて特徴情報を抽出する処理が実行され、その特徴情報が
図1のRAM104に記憶される。特徴情報としては例えば、画像内のグリッドに対応させて、色およびテクスチャが抽出される。
次に、クラスタリング処理が実行される(
図7のステップS702)。この処理では、ステップS701で抽出された、全ての学習用データが示す例えば4種の花の各50枚の画像内の全てのグリッドに対応する全ての色の特徴情報が、複数(例えば500個)のクラスタにクラスタリングされる。クラスタリングアルゴリズムとしては例えば、k−means法が用いられる。テクスチャの特徴情報についても同様に、複数(例えば500個)のクラスタにクラスタリングされる。
【0042】
次に、ベクトル量子化処理が実行される(
図7のステップS703)。この処理では、学習用データのそれぞれにおいて、次の処理が実行される。ステップS701にて学習用データが示す画像内の各グリッドに対応して抽出され
図1のRAM104に保存されていた各特徴情報ごとに、その特徴情報とステップS702で算出された各クラスタの重心のRGBデータとの距離がそれぞれ算出される。そして、その算出された距離のうち最小の距離に対応するクラスタが最近傍クラスタとして抽出され、その抽出された最近傍クラスタの重心データがその特徴情報のベクトル量子化値とされる。このベクトル量子化処理は例えば、色およびテクスチャの特徴情報ごとに実行され、それぞれステップS702でのクラスタリングにより得られる色のクラスタおよびテクスチャのクラスタを用いて個別にベクトル量子化値が抽出される。学習用データ内の各グリッドの色およびテクスチャの特徴情報ごとに抽出された色およびテクスチャの各ベクトル量子化値は、
図1のRAM104に記憶される。
【0043】
次に、1階層目特徴ベクトル生成処理(ヒストグラム生成処理)が実行される(
図7のステップS704)。この処理では、複数の学習用データのそれぞれにおいて、学習用データが示す画像内の各グリッドに対応してステップS703にてRAM104に得たベクトル量子化値ごとに、そのベクトル量子化値に対応する最近傍クラスタのヒストグラム度数を積算する処理が繰り返し実行される。これにより、その学習用データに対応するヒストグラムが生成され、ヒストグラムのビンごとの各度数値を各要素値とする1階層目特徴ベクトル(
図3の301に対応)が生成されて、その学習用データに付与されているクラスを示すラベルとともに
図1のRAM104に記憶される。ヒストグラムの生成においては例えば、色およびテクスチャごとにステップS703にて抽出されたベクトル量子化値を用いて個別に、色のヒストグラムおよびテクスチャのヒストグラムが生成される。そして、色のヒストグラムのビンごとの各度数値とテクスチャのヒストグラムのビンごとの各度数値を連結したものを各要素値として1階層目特徴ベクトルが生成される。
【0044】
最後に、識別器生成処理が実行される(
図7のステップS705)。ここでは、以下の処理が複数のクラスのそれぞれについて実行される。まず、ステップS704にてRAM104に得た1階層目特徴ベクトルのうち、1つのクラスを示すラベルが付与された第1の1階層目特徴ベクトルのグループが、RAM104から読み出される。また、その1つのクラス以外のクラスを示すラベルが付与された第2の1階層目特徴ベクトルのグループが、RAM104から読み出される。そして、これら1階層目特徴ベクトルの2つのグループに基づいて、その1つのクラスに属するデータが入力されたときに最大のスコア値を出力するその1つのクラスに対応する1階層目識別器が生成される。この処理が、複数のクラスごとに実行されることで、各学習用データが表す特徴が前記複数のクラスのそれぞれに属するか否かを個別に識別する複数の1階層目識別器(
図3の302(#1)〜302(#4)に対応)が生成される。
【0045】
以上の識別器の生成処理において、
図7のステップS701からS704までの一連の処理は、各学習用データに対して1回だけ実行し、その結果を
図1のRAM104に保持しておけばよい。そして、ステップS705の識別器生成処理においては、RAM104に保持されているステップS701からS704までの実行結果を繰り返し読み出して実行することにより、高速に処理を実行することができる。
【0046】
図8は、
図7のステップS701の特徴抽出処理を示すフローチャートである。
【0047】
このフローチャートでは、ステップS801において、学習用データが
図1のRAM104から1枚分ずつ入力されながら、ステップS804で処理すべき次の学習用データがなくなったと判定されるまで、ステップS802とS803の一連の処理が実行される。
【0048】
まず、ステップS801で1枚分の学習用データが入力された後、その学習用データが示す画像内の最初のグリッドに対応する色およびテクスチャの特徴情報が抽出され、RAM104に記憶される(
図8のステップS802)。
【0049】
次に、ステップS803で未処理の次のグリッドがなくなったと判定されるまで、学習用データからグリッドごとにステップS802の特徴情報の抽出処理が実行される(
図8のステップS802→S803→S802の繰返し処理)。
【0050】
学習用データ上のグリッドごとの全ての特徴情報の抽出処理が完了すると、次の学習用データがあるか否かが判定される(
図8のステップS805)。
【0051】
ステップS805の判定がYESならば、ステップS801の処理に戻って、ステップS801からS804の一連の処理が繰り返される。
【0052】
全ての学習用データに対する処理が完了してステップS805の判定がNOになると、
図8のフローチャートで示される
図7のステップS701の特徴抽出処理を終了する。
【0053】
図9は、
図7のステップS703のベクトル量子化処理を示すフローチャートである。
【0054】
このフローチャートでは、ステップS901において、
図1のRAM104上で学習用データが1枚分ずつ指定されながら、ステップS905で指定すべき次の学習用データがなくなったと判定されるまで、ステップS902からS904の一連の処理が実行される。
【0055】
ステップS901でRAM104上の学習用データが指定された後、ステップS904でRAM104からその学習用データに対応する特徴情報が取得されなくなったと判定されるまで、ステップS902とS903の処理が繰り返し実行される。
【0056】
まず、現在の学習用データに対応するグリッドごとの色およびテクスチャの特徴情報が、RAM104から読み出される(
図9のステップS902)。
【0057】
次に、ステップS902で読み出された色の特徴情報と
図7のステップS702で算出された色の各クラスタの重心のRGBデータとの距離がそれぞれ算出される。そして、その算出された距離のうち最小の距離に対応する色のクラスタが最近傍クラスタとして抽出され、その抽出した最近傍クラスタの重心データがその色の特徴情報のベクトル量子化値とされる。テクスチャについても同様に、ステップS902で読み出されたテクスチャの特徴情報と
図7のステップS702で算出されたテクスチャの各クラスタの重心のRGBデータとの距離がそれぞれ算出される。そして、その算出された距離のうち最小の距離に対応するテクスチャのクラスタが最近傍クラスタとして抽出され、その抽出した最近傍クラスタの重心データがそのテクスチャの特徴情報のベクトル量子化値とされる。このようにして、一組の色およびテクスチャの各特徴情報について抽出された各ベクトル量子化値が、RAM104に記憶される(以上、
図9のステップS903)。
【0058】
次に、現在の学習用データに対応するグリッドごとの次の特徴情報がまだRAM104上にあるか否かが判定される(
図9のステップS904)。
【0059】
ステップS904の判定がYESならば、ステップS902の処理に戻って、次の特徴情報に対して、ステップS902とS903の処理が繰り返し実行される。
【0060】
全ての特徴情報に対するベクトル量子化が完了しステップS904の判定がNOとなると、次の学習用データがあるか否かが判定される(
図9のステップS905)。
【0061】
ステップS905の判定がYESならば、ステップS901の処理に戻って、ステップS901からS904の一連の処理が繰り返される。
【0062】
全ての学習用データに対するベクトル量子化処理が完了してステップS905の判定がNOになると、
図9のフローチャートで示される
図7のステップS703のベクトル量子化処理を終了する。
【0063】
図10は、
図7のステップS704の1階層目特徴ベクトル生成処理(ヒストグラム生成処理)を示すフローチャートである。
【0064】
このフローチャートでは、ステップS1001において、
図1のRAM104上で学習用データが1枚分ずつ指定されながら、ステップS1006で指定すべき次の学習用データがなくなったと判定されるまで、ステップS1002からS1005の一連の処理が実行される。
【0065】
ステップS1001でRAM104上で学習用データが指定された後、ステップS1004でRAM104からその学習用データに対応するベクトル量子化値が取得されなくなったと判定されるまで、ステップS1002とS1003の処理が繰り返し実行される。
【0066】
まず、現在の学習用データに対応するグリッドごとのベクトル量子化値、より具体的には色およびテクスチャの各ベクトル量子化値が、RAM104から読み出される(
図10のステップS1002)。
【0067】
次に、その読み出されたそのベクトル量子化値に対応する最近傍クラスタのRAM104上に記憶されているヒストグラム度数がプラス1される。より具体的には、色のベクトル量子化値に対応する色の最近傍クラスタのRAM104上に記憶されている色のヒストグラム度数がプラス1される。同様に、テクスチャのベクトル量子化値に対応するテクスチャの最近傍クラスタのRAM104上に記憶されているテクスチャのヒストグラム度数がプラス1される(以上、
図10のステップS1003)。
【0068】
続いて、現在の学習用データに対応するグリッドごとのベクトル量子化値がまだRAM104上にあるか否かが判定される(
図10のステップS1004)。
【0069】
ステップS1004の判定がYESならば、ステップS1002の処理に戻って、次のベクトル量子化値に対して、ステップS1002とS1003の処理が繰り返し実行される。
【0070】
全てのベクトル量子化値に対するヒストグラムカウントが完了しステップS1004の判定がNOとなると、次の処理が実行される。RAM104に記憶されている全クラスタのヒストグラム度数値を要素値とする1階層目特徴ベクトルが算出される。より具体的には、色のヒストグラムのビンごと(色の全クラスタ)の各度数値とテクスチャのヒストグラムのビンごと(テクスチャの全クラスタ)の各度数値を連結したものを各要素値として、1階層目特徴ベクトルが生成される。このようにして生成された現在の学習用データに対応する1階層目特徴ベクトルがRAM104に記憶される(以上、
図10のステップS1005)。
【0071】
その後、次の学習用データがあるか否かが判定される(
図10のステップS1006)。
【0072】
ステップS1006の判定がYESならば、ステップS1001の処理に戻って、ステップS1001からS1005の一連の処理が繰り返される。
【0073】
全ての学習用データに対するヒストグラム生成処理が完了してステップS1006の判定がNOになると、
図10のフローチャートで示される
図7のステップS704の1階層目特徴ベクトル生成処理(ヒストグラム生成処理)を終了する。
【0074】
図11は、
図7のステップS705の識別器生成処理を示すフローチャートである。
【0075】
まず、複数のクラスのうち識別すべき1つのクラスを示すカテゴリが指定される(
図11のステップS1101)。
【0076】
次に、現在のカテゴリに対応する1vsその他識別用のpositiveデータとnegativeデータが入力される。例えば、カテゴリが花の種類である場合、その種類に対応してステップS1101で指定された1つのクラスのラベルが付与されている学習用データがpositiveデータとされる。また、その1つのクラス以外のクラスのラベルが付与されている学習用データが、negativeデータとされる。そして、positiveデータとされた各学習用データに対応する各1階層目特徴ベクトルが
図1のRAM104から読み込まれて第1のグループとされる。また、negativeデータとされた各学習用データに対応する各1階層目特徴ベクトルがRAM104から読み込まれて第2のグループとされる(以上、
図11のステップS1102)。
【0077】
そして、ステップS1102で得られた1階層目特徴ベクトルの第1および第2のグループに基づいて、ステップS1101で指定された識別すべきカテゴリ1つのクラスに属するデータが入力されたときに最大の前記スコア値を出力する前記1つのクラスに対応するように、上記1つのクラスに1階層目識別器における1vsその他識別用パラメータが演算される(以上、
図11のステップS1103)。
【0078】
具体的には例えば、そのような1階層目識別器において、例えば下記(1)式に示されるような1階層目特徴ベクトルが入力されたとする。ここで、Nは、1階層目特徴ベクトルの要素数であり、例えば色のヒストグラムのビン数とテクスチャのヒストグラムのビン数の和の数である。また、x
i (1≦i≦N)は、例えば色のヒストグラムのビン番号とテクスチャのヒストグラムのビン番号を順に並べたときのi番目のビン番号におけるヒストグラム度数である。
【0079】
1階層目特徴ベクトル=(x
1 ,x
2 ,x
3 ,・・・,x
N ) ・・・(1)
【0080】
下記(2)式のように、(1)式のベクトルの各要素x
1 ,x
2 ,x
3 ,・・・,x
N にそれぞれ個別の重み値c
1 ,c
2 ,c
3 ,・・・,c
N を乗算し、その各乗算結果の総和として、その1階層目識別器に対応するスコア値f(x)を出力する。
【0081】
f(x)=c
1 x
1 ,+c
2 x
2 ,+c
3 x
3 ,+・・・+c
N x
N ・・・(2)
【0082】
この場合、ステップS1103では、上記第1のグループの1階層目特徴ベクトルが上記1階層目識別器に入力されたときに最大のスコア値を出力し、上記第2のグループの1階層目特徴ベクトルが上記1階層目識別器に入力されたときになるべく小さいスコア値を出力するように、上記各重み値c
1 ,c
2 ,c
3 ,・・・,c
N が算出される。
【0083】
この重み値c
1 ,c
2 ,c
3 ,・・・,c
N の算出方法としては例えば、機械学習における線形分類器において用いられる線形判別分析と呼ばれるような公知の手法を採用することができる。
【0084】
1階層目識別器は、このように決定された重み値c
1 ,c
2 ,c
3 ,・・・,c
N を用いて上記(2)式を計算することにより、スコア値を出力する。
【0085】
その後、次のクラスに対応するカテゴリが指定されているか否かが判定される(
図11のステップS1104)。
【0086】
ステップS1104の判定がYESならばステップS1101の処理に戻って、新たなクラスのカテゴリに対応する1階層目識別器の生成処理が実行される。
【0087】
未処理のクラスに対応するカテゴリがなくなってステップS1104の判定がNOになると、
図11のフローチャートで示される
図7のステップS705の識別器生成処理を終了する。
【0088】
図12は、
図2のステップS203の2階層目識別器生成処理の詳細を示すフローチャートである。
【0089】
このフローチャートではまず、
図12のステップS1201において、
図1のRAM104上で学習用データが1枚分ずつ指定されながら、ステップS1203で指定すべき次の学習用データがなくなったと判定されるまで、ステップS1202の処理が実行される。
【0090】
図12のステップS1202では、指定された学習用データが、
図2のステップS202で生成された各クラスの1階層目識別器に入力される。そして、各1階層目識別器から出力される各スコア値を各要素とする2階層目特徴ベクトル(
図3の303に対応)が生成され、ステップS1201で指定された学習用データに対応させられてRAM104に記憶される。
【0091】
以上のステップS1201からS1203の繰り返し処理によって、RAM104に記憶されている複数の学習用データのそれぞれについて、各2階層目特徴ベクトルがRAM104に得られる。その後、
図12のステップS1204において、RAM104に得られた2階層目特徴ベクトルのうち、1つのクラスを示すラベルが付与された学習用データに対応する第1の2階層目特徴ベクトルのグループが、RAM104から読み出される。また、その1つのクラス以外のクラスを示すラベルが付与された学習用データに対応する第2の2階層目特徴ベクトルのグループが、RAM104から読み出される。そして、これら2階層目特徴ベクトルの2つのグループに基づいて、その1つのクラスに属するデータが入力されたときに最大のスコア値を出力するその1つのクラスに対応する2階層目識別器が生成される。この処理が、複数のクラスごとに実行されることで、各学習用データが表す特徴が前記複数のクラスのそれぞれに属するか否かを個別に識別する複数の2階層目識別器(
図3の304(#1)から304(#4)に対応)が生成される。
【0092】
上述のステップS1204の識別器生成処理の詳細は、前述した
図7のステップS705の識別器生成処理の詳細を示す
図11と同様である。この場合に、前述した
図11の説明において、1階層目特徴ベクトルを2階層目特徴ベクトルに読み替え、1階層目識別器を2階層目識別器に読み替えればよい。
【0093】
すなわち、複数のクラスのうち識別すべき1つのクラスを示すカテゴリが指定される(
図11のステップS1101)。
【0094】
次に、現在のカテゴリに対応する1vsその他識別用のpositiveデータとnegativeデータが入力される。例えば、カテゴリが花の種類である場合、その種類に対応してステップS1101で指定された1つのクラスのラベルが付与されている学習用データがpositiveデータとされる。また、その1つのクラス以外のクラスのラベルが付与されている学習用データが、negativeデータとされる。そして、positiveデータとされた各学習用データに対応して
図12のステップS1201〜S1203で得られている各2階層目特徴ベクトルが
図1のRAM104から読み込まれて第1のグループとされる。また、negativeデータとされた各学習用データに対応して
図12のステップS1201〜S1203で得られている各2階層目特徴ベクトルがRAM104から読み込まれて第2のグループとされる(以上、
図11のステップS1102)。
【0095】
そして、ステップS1102で得られた2階層目特徴ベクトルの第1および第2のグループに基づいて、ステップS1101で指定された識別すべきカテゴリ1つのクラスに属するデータが入力されたときに最大の前記スコア値を出力する前記1つのクラスに対応するように、上記1つのクラスに2階層目識別器における1vsその他識別用パラメータが演算される(以上、
図11のステップS1103)。
【0096】
具体的には例えば、そのような2階層目識別器において、例えば下記(3)式に示されるような2階層目特徴ベクトルが入力されたとする。ここで、X
1 ,X
2 ,X
3 およびX
4 はそれぞれ、#1から#4の各1階層目識別器(
図3の#1から#4の302に対応)が出力する各スコア値である。
【0097】
2階層目特徴ベクトル=(X
1 ,X
2 ,X
3 ,X
4 ) ・・・(3)
【0098】
下記(4)式に示されるように、(3)式のベクトルの各要素X
1 ,X
2 ,X
3 ,X
4 にそれぞれ個別の重み値C
1 ,C
2 ,C
3 ,C
4 を乗算し、その各乗算結果の総和として、その1階層目識別器に対応するスコア値F(x)を出力する。
【0099】
F(x)=C
1 X
1 ,+C
2 X
2 ,+C
3 X
3 ,+C
4 X
4 ・・・(4)
【0100】
この場合、ステップS1103では、上記第1のグループの2階層目特徴ベクトルが上記2階層目識別器に入力されたときに最大のスコア値を出力し、上記第2のグループの2階層目特徴ベクトルが上記2階層目識別器に入力されたときになるべく小さいスコア値を出力するように、上記各重み値C
1 ,C
2 ,C
3 ,C
4 が算出される。
【0101】
この重み値C
1 ,C
2 ,C
3 ,C
4 の算出方法としては例えば、機械学習における線形分類器において用いられる線形判別分析と呼ばれるような公知の手法を採用することができる。
【0102】
2階層目識別器は、このようにして決定された重み値C
1 ,C
2 ,C
3 ,C
4 を用いて上記(4)式を計算することにより、スコア値を出力する。
【0103】
その後、次のクラスに対応するカテゴリが指定されているか否かが判定される(
図11のステップS1104)。
【0104】
ステップS1104の判定がYESならばステップS1101の処理に戻って、新たなクラスのカテゴリに対応する2階層目識別器の生成処理が実行される。
【0105】
未処理のクラスに対応するカテゴリがなくなってステップS1104の判定がNOになると、
図11のフローチャートで示される
図7のステップS705の識別器生成処理を終了する。
【0106】
下記(5)式は、例えば前述した
図5に示される、
図3の#1から#4の各1階層目識別器302が出力するスコア値の例に対して前述した(4)式に基づいて生成される、アサガオvs残りを識別する#2の2階層目識別器304(
図3参照)の例を示している。
【0107】
F(x)=0.8X
1 ,+0.9X
2 ,+0.5X
3 ,−0.5X
4 ・・・(5)
【0108】
また、下記(6)式は、同じく
図5の例に対して前述した(4)式に基づいて生成される、ヒルガオvs残りを識別する#1の2階層目識別器304(
図3参照)の例を示している。
【0109】
F(x)=0.9X
1 ,+0.8X
2 ,−0.5X
3 ,−0.5X
4 ・・・(6)
【0110】
上述の(5)式および(6)式から理解されるように、ツユクサvs残りを識別する#3の2階層目識別器304とアサガオvs残りを識別する#2の2階層目識別器304とで、識別器を構成するコスト関数F(X)において、ツユクサvs残りを識別する#3の1階層目識別器302が出力するスコア値X
3 に乗算される重み値C
3 ((4)式参照)を大きく異ならせることができる。これにより、ツユクサvs残りを識別する#3の1階層目識別器302が出力するスコア値を用いて、ヒルガオvs残りを識別する#1の2階層目識別器304とアサガオvs残りを識別する#2の2階層目識別器304の間で識別精度を均一化することが可能となる。
【0111】
以上説明したように、本実施形態によれば、
図3に示したように、多クラス識別器を2階層構成にして、2階層目識別器304において、1階層目識別器302の全スコア値出力を2階層目特徴ベクトル303として参照して識別が行われる。これにより、1階層目識別器302の一部の識別器の質が低くても、他の1階層目識別器302が出力するスコア値を参照して、2階層目識別器304にて誤差を補正することが可能になる。これにより、各クラスの学習用データ数が少なくても、個々のクラスの1階層目識別器302が出力するスコア値を統合的に評価することにより、識別率の低下を抑制することが可能となり、2階層目識別器304において各クラスの識別率の値の正規化が可能となる。
【0112】
以上説明した実施形態において、識別の対象を花の画像として説明を行ったが、本発明はこれに限られるものではない。また、画像データから特徴情報を抽出する処理は、BOF(Bag Of Features)の手法に加えて、例えばGraph Cuts法によって花の領域を切り出してから特徴情報を抽出するような方式であってもよい。その他、種々の特徴情報抽出方式が適用できる。
【0113】
更に、本実施形態では花に代表される画像の識別を例にとって説明したが、画像に限定されるものではなく、音声データや、所定の特徴を表すデータ群の識別に適用することができる。すなわち、機械学習で多クラス分類しようとした場合に、クラス間の識別性能を正規化するような要請に対応可能である。
【0114】
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)
複数の学習用データからそれぞれ抽出した各1階層目特徴ベクトルを入力して該各学習用データが表す特徴が複数のクラスのうちの1つのクラスに属するか否かを識別する1階層目識別器を生成する処理を、前記複数のクラスごとに実行することで、前記各学習用データが表す特徴が前記複数のクラスのそれぞれに属するか否かを個別に識別する複数の1階層目識別器を生成する1階層目識別器生成手段と、
前記複数の学習用データを前記各クラスの1階層目識別器に入力した結果前記各クラスの1階層目識別器が出力する各スコア値を連結することにより2階層目特徴ベクトルを前記各学習用データごとに生成し、該各2階層目特徴ベクトルを入力して該各2階層目特徴ベクトルに対応する前記各学習用データが表す特徴が前記複数のクラスのうちの1つのクラスに属するか否かを識別する2階層目識別器を生成する処理を、前記複数のクラスごとに実行することで、前記各学習用データが表す特徴が前記複数のクラスのそれぞれに属するか否かを個別に識別する複数の2階層目識別器を生成する2階層目識別器生成手段と、
を備え、
入力されたデータを前記複数の1階層目識別器に入力させることにより該複数の1階層目識別器が出力する前記各スコア値を連結して前記2階層目特徴ベクトルを生成し、該2階層目特徴ベクトルを前記複数の2階層目識別器に入力させることにより最大のスコア値を出力した前記2階層目識別器に対応するクラスを、前記入力されたデータが表す特徴が属するクラスとして識別する、
ことを特徴とする多クラス識別器。
(付記2)
前記特徴は画像の特徴であり、
前記1階層目識別器生成手段は、
前記学習用データが示す画像内の各グリッドに対応させて特徴情報を抽出する処理を前記複数の学習用データのそれぞれに対して実行する特徴抽出処理と、
全ての前記学習用データが示す画像内の全ての前記グリッドに対応して抽出された全ての前記特徴情報を複数のクラスタにクラスタリングするクラスタリング処理と、
前記複数の学習用データのそれぞれについて、該学習用データが示す画像内の前記各グリッドに対応して抽出された前記特徴情報ごとに、該特徴情報と前記各クラスタの重心データとの距離をそれぞれ算出し、該算出した距離のうち最小の距離に対応するクラスタを最近傍クラスタとして抽出し、該抽出した最近傍クラスタの重心データを該特徴情報のベクトル量子化値とするベクトル量子化処理と、
前記複数の学習用データのそれぞれについて、該学習用データが示す画像内の前記各グリッドに対応して抽出された前記ベクトル量子化値ごとに該ベクトル量子化値に対応する前記最近傍クラスタのヒストグラム度数を積算する処理を繰り返し実行することにより該学習用データに対応するヒストグラムを生成し、該ヒストグラムのビンごとの各度数値を各要素値とする前記1階層目特徴ベクトルを生成して、該学習用データに付与されている該学習用データが表す特徴のクラスを示すラベルとともに記憶する1階層目特徴ベクトル生成処理と、
前記1階層目特徴ベクトルのうち、前記1つのクラスを示すラベルが付与された第1の1階層目特徴ベクトルのグループと、前記1つのクラス以外のクラスを示すラベルが付与された第2の1階層目特徴ベクトルのグループとに基づいて、前記1つのクラスに属するデータが入力されたときに最大の前記スコア値を出力する前記1つのクラスに対応する1階層目識別器を生成する処理を、前記複数のクラスごとに実行することで、前記各学習用データが表す特徴が前記複数のクラスのそれぞれに属するか否かを個別に識別する複数の1階層目識別器を生成する識別器生成処理と、
を実行することを特徴とする付記1に記載の多クラス識別器。
(付記3)
前記特徴情報は色およびテクスチャであり、
前記クラスタリング処理において、前記色および前記テクスチャごとに、個別にクラスタリングを行い、
前記ベクトル量子化処理において、前記色および前記テクスチャごとに、それぞれ前記クラスタリングにより得られる色のクラスタおよびテクスチャのクラスタを用いて個別にベクトル量子化値を抽出し、
前記1階層目特徴ベクトル生成処理において、前記色および前記テクスチャごとに、それぞれ前記色および前記テクスチャごとに抽出した前記ベクトル量子化値を用いて個別に、前記学習用データごとの色のヒストグラムおよびテクスチャのヒストグラムを生成し、該色のヒストグラムのビンごとの各度数値と該テクスチャのヒストグラムのビンごとの各度数値を連結したものを各要素値として前記1階層目特徴ベクトルを生成する、
ことを実行することを特徴とする付記2に記載の多クラス識別器。
(付記4)
前記2階層目識別器生成手段は、前記1つのクラスに対応する2階層目識別器を生成する処理において、
前記1つのクラスを示すラベルが付与された学習用データから抽出される第1の前記2階層目特徴ベクトルのグループと、前記1つのクラス以外のクラスを示すラベルが付与された学習用データから抽出される第2の前記2階層目特徴ベクトルのグループとに基づいて、前記1つのクラスに属するデータが入力されたときに最大の前記スコア値を出力する前記1つのクラスに対応する2階層目識別器を生成する、
ことを特徴とする付記1ないし3のいずれかに記載の多クラス識別器。
(付記5)
複数の学習用データからそれぞれ抽出した各1階層目特徴ベクトルを入力して該各学習用データが表す特徴が複数のクラスのうちの1つのクラスに属するか否かを識別する1階層目識別器を生成する処理を、前記複数のクラスごとに実行することで、前記各学習用データが表す特徴が前記複数のクラスのそれぞれに属するか否かを個別に識別する複数の1階層目識別器を生成する1階層目識別器生成ステップと、
前記複数の学習用データを前記各クラスの1階層目識別器に入力した結果前記各クラスの1階層目識別器が出力する各スコア値を連結することにより2階層目特徴ベクトルを前記各学習用データごとに生成し、該各2階層目特徴ベクトルを入力して該各2階層目特徴ベクトルに対応する前記各学習用データが表す特徴が前記複数のクラスのうちの1つのクラスに属するか否かを識別する2階層目識別器を生成する処理を、前記複数のクラスごとに実行することで、前記各学習用データが表す特徴が前記複数のクラスのそれぞれに属するか否かを個別に識別する複数の2階層目識別器を生成する2階層目識別器生成ステップと、
を実行することを備え、
入力されたデータを前記複数の1階層目識別器に入力させることにより該複数の1階層目識別器が出力する前記各スコア値を連結して前記2階層目特徴ベクトルを生成し、該2階層目特徴ベクトルを前記複数の2階層目識別器に入力させることにより最大のスコア値を出力した前記2階層目識別器に対応するクラスを、前記入力されたデータが表す特徴が属するクラスとして識別する、
ことを特徴とする多クラス識別方法。
(付記6)
複数の学習用データからそれぞれ抽出した各1階層目特徴ベクトルを入力して該各学習用データが表す特徴が複数のクラスのうちの1つのクラスに属するか否かを識別する1階層目識別器を生成する処理を、前記複数のクラスごとに実行することで、前記各学習用データが表す特徴が前記複数のクラスのそれぞれに属するか否かを個別に識別する複数の1階層目識別器を生成する1階層目識別器生成ステップと、
前記複数の学習用データを前記各クラスの1階層目識別器に入力した結果前記各クラスの1階層目識別器が出力する各スコア値を連結することにより2階層目特徴ベクトルを前記各学習用データごとに生成し、該各2階層目特徴ベクトルを入力して該各2階層目特徴ベクトルに対応する前記各学習用データが表す特徴が前記複数のクラスのうちの1つのクラスに属するか否かを識別する2階層目識別器を生成する処理を、前記複数のクラスごとに実行することで、前記各学習用データが表す特徴が前記複数のクラスのそれぞれに属するか否かを個別に識別する複数の2階層目識別器を生成する2階層目識別器生成ステップと、
をコンピュータに実行させることを備え、
入力されたデータを前記複数の1階層目識別器に入力させることにより該複数の1階層目識別器が出力する前記各スコア値を連結して前記2階層目特徴ベクトルを生成し、該2階層目特徴ベクトルを前記複数の2階層目識別器に入力させることにより最大のスコア値を出力した前記2階層目識別器に対応するクラスを、前記入力されたデータが表す特徴が属するクラスとして識別する、
ことをコンピュータに実行させるためのプログラム。