(57)【要約】  【課題】  二値特徴量を演算するのに適した特徴量演算装置を提供する。  【解決手段】  特徴量演算装置は、入力画像と入力画像を複数の倍率でそれぞれ拡大又は縮小してなる複数のリサイズ画像からなるピラミッド画像の各々から抽出された特徴量を二値化する特徴量二値化部と、二値化された前記特徴量に対してサイズの異なる複数の辞書からなる辞書セットを適用して入力画像と辞書との関連性を判定する特徴量演算部とを備え、特徴量演算部は、ピラミッド画像の各々について、同一又は類似の辞書セットを適用する。【選択図】  図９
2015230715.tif 000002
【特許請求の範囲】
【請求項１】
入力画像と前記入力画像を複数の倍率でそれぞれ拡大又は縮小してなる複数のリサイズ画像からなるピラミッド画像の各々から抽出された特徴量を二値化する特徴量二値化部と、
二値化された前記特徴量に対してサイズの異なる複数の辞書からなる辞書セットを適用して前記入力画像と前記複数の辞書との関連性を判定する特徴量演算部と、
を備え、
前記特徴量演算部は、前記ピラミッド画像の各々について、前記複数の辞書に対して、二値化された前記特徴量を共通して用いて、前記複数の辞書との関連性を判定することを特徴とする特徴量演算装置。
【請求項２】
前記ピラミッド画像の各々から前記特徴量を抽出する特徴量抽出部をさらに備え、
前記特徴量二値化部は、前記特徴量抽出部にて抽出された特徴量を二値化することを特徴とする請求項１に記載の特徴量演算装置。
【請求項３】
前記特徴量演算部は、前記入力画像に対して、前記辞書を用いた識別を行うことを特徴とする請求項１又は２に記載の特徴量演算装置。
【請求項４】
前記特徴量演算部は、前記ピラミッド画像の各々について、前記複数の辞書のうちの全部又は一部の辞書が同一である前記辞書セットを適用することを特徴とする請求項１ないし３のいずれか一項に記載の特徴量演算装置。
【請求項５】
二値化された前記特徴量の共起要素を用いて識別能力を強化するよう前記特徴量を変換する特徴量変換部をさらに備えたことを特徴とする請求項３に記載の特徴量演算装置。
【請求項６】
実数を要素として持つ実数ベクトルを二値または三値の離散値のみから構成された要素を持つ複数の基底ベクトルの線形和に分解することで得られた前記複数の基底ベクトルを取得する基底ベクトル取得部をさらに備え、
前記辞書は、前記複数の基底ベクトルを用いて生成されており、
前記特徴量演算部は、前記特徴量を示す特徴ベクトルと前記複数の基底ベクトルの各々との内積計算を順次行うことで、前記実数ベクトルと前記特徴ベクトルとの関連性を判定することを特徴とする請求項１ないし５のいずれか一項に記載の特徴量演算装置。
【請求項７】
前記特徴量演算部にて関連性があると判定された特徴ベクトルの共起要素を用いて識別能力を強化するよう前記特徴ベクトルを変換する特徴量変換部と、
前記特徴量変換部にて変換された特徴ベクトルに対して、さらに複数の基底ベクトルの各々との内積計算を順次行うことで、前記実数ベクトルと前記特徴ベクトルとの関連性を判定する第２の特徴量演算部と、
をさらに備えたことを特徴とする請求項６に記載の特徴量演算装置。
【請求項８】
前記特徴量演算部は、前記ピラミッド画像の各々について、ウィンドウをスライドさせながら特徴量を切り出し、前記ウィンドウから切り出された特徴量について、前記辞書セットを適用して関連性を判定することを特徴とする請求項１ないし７のいずれか一項に記載の特徴量演算装置。
【請求項９】
実数を要素として持つ複数の実数ベクトルからなる実数行列を、係数行列と、要素として二値または三値の離散値のみを持つ複数の基底ベクトルからなる基底行列との積に分解する実数行列分解部をさらに備え、
前記辞書は、前記複数の基底行列を用いて生成されており、
前記特徴量演算部は、前記特徴量を示す特徴ベクトルと前記複数の実数ベクトルの各々との内積の計算として、前記特徴ベクトルと前記基底行列との積を計算し、さらに当該積と前記係数行列との積を計算して、その結果を用いて、前記複数の実数ベクトルの各々と前記特徴ベクトルとの関連性を判定することを特徴とする請求項８に記載の特徴量演算装置。
【請求項１０】
入力画像と前記入力画像を複数の倍率でそれぞれ拡大又は縮小してなる複数のリサイズ画像からなるピラミッド画像の各々から抽出された特徴量を二値化する特徴量二値化ステップと、
二値化された前記特徴量に対してサイズの異なる複数の辞書からなる辞書セットを適用して前記入力画像と前記複数の辞書との関連性を判定する特徴量演算ステップと、
を含み、
前記特徴量演算ステップでは、前記ピラミッド画像の各々について、前記複数の辞書に対して、二値化された前記特徴量を共通して用いて、前記複数の辞書との関連性を判定することを特徴とする特徴量演算方法。
【請求項１１】
コンピュータに、
入力画像と前記入力画像を複数の倍率でそれぞれ拡大又は縮小してなる複数のリサイズ画像からなるピラミッド画像の各々から抽出された特徴量を二値化する特徴量二値化ステップと、
二値化された前記特徴量に対してサイズの異なる複数の辞書からなる辞書セットを適用して前記入力画像と前記複数の辞書との関連性を判定する特徴量演算ステップと、
を実行させるための特徴量演算プログラムであって、
前記特徴量演算ステップでは、前記ピラミッド画像の各々について、前記複数の辞書に対して、二値化された前記特徴量を共通して用いて、前記複数の辞書との関連性を判定することを特徴とする特徴量演算プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像から抽出された特徴量を演算する特徴量演算装置、特徴量演算方法、及び特徴量演算プログラムに関し、特に、二値化された特徴量を演算する特徴量演算装置、特徴量演算方法、及び特徴量演算プログラムに関するものである。
【背景技術】
【０００２】
従来より、画像検索、音声認識、文章検索、パターン認識など、多くの分野で特徴量が用いられている。特徴量とは、画像、音声、文章などの情報を、計算機で扱いやすいように変換したものである。特徴量は、Ｄ次元のベクトル（特徴ベクトル）で表される。
【０００３】
特徴ベクトルを用いた特徴量演算を行うことで、例えば、コンテンツの類似度を判定することができる。すなわち、画像αの特徴ベクトルと、画像βの特徴ベクトルの距離が小さければ、αとβは似ているとみなすことができる。同様に、音声波形αの特徴ベクトルと、音声波形βの特徴ベクトルとの距離が小さければ、αとβは似ているとみなすことができる。このように、音声認識、文章検索、パターン認識等の情報処理では、情報を特徴ベクトルに変換して、特徴ベクトル同士を比較して、その距離を求めることにより情報の類似度を判断する。
【０００４】
特徴ベクトル間の距離の尺度としては、Ｌ１ノルム、Ｌ２ノルム、ベクトル間角度などが用いられる。これらは、特徴ベクトルｘ，ｙ∈ＲDについて、次のように計算できる。
Ｌ１ノルム
【数１】
2015230715.tif 000003
Ｌ２ノルム
【数２】
2015230715.tif 000004
ベクトル間角度
【数３】
2015230715.tif 000005
【０００５】
ここで、抽出される特徴ベクトルが実数ベクトルである場合には、以下のような問題がある。まず、２つの特徴ベクトルｘ，ｙ∈ＲDの間の距離の計算が遅くなるという問題がある。例えば、Ｌ２ノルムの二乗を距離の尺度として用いる場合、
【数４】
2015230715.tif 000006
であるから、実数について、Ｄ回の引き算、Ｄ回の乗算、Ｄ−１回の加算が必要である。特に、特徴ベクトルが浮動小数で表現される場合には、この計算負荷は非常に高くなる。特徴ベクトルが高次元になれば、この計算負荷はさらに高くなる。
【０００６】
また、大量のメモリを消費する点も問題となる。特徴ベクトルを４バイトの単精度実数で表現する場合、Ｄ次元の特徴ベクトルは４Ｄバイトのメモリを消費する。特徴ベクトルが高次元になれば、このメモリ消費量は大きくなる。大量の特徴ベクトルを扱う場合、扱う特徴ベクトルの数だけメモリを消費することになる。
【０００７】
そこで近年、特徴ベクトルを０と１の列から成るバイナリコードに変換することにより、これら２つの問題を解決する手法が提案されている。代表的な手法として、ランダムプロジェクション（random projection、非特許文献１参照）、ベリースパースランダムプロジェクション（very sparse random projection、非特許文献２参照）、及びスペクトラルハッシング（Spectral Hashing、非特許文献３参照）がある。
【０００８】
これらの手法では、Ｄ次元の特徴ベクトルがｄビットのバイナリコードに変換される。この変換は、もともとの空間における距離が、変換後の空間におけるハミング距離と強く相関するように行われる（もともとの空間における距離と、変換後の空間におけるハミング距離と強く相関する根拠については、非特許文献１の１１２１ページのＬｅｍｍａ３．２を参照）。これによって、特徴ベクトル間の距離の計算を、バイナリコード同士のハミング距離計算で代用できるようになる。
【０００９】
ハミング距離とは、二つのバイナリコードのうち、異なるビットの数を数えたものである。この計算は、二つのコードのＸＯＲをとった後に１が立っているビット数を数えるだけなので、非常に高速に行うことができる。多くの場合、バイナリコード変換によって、数十〜数百倍程度の高速化が可能である。また、特徴ベクトル間の距離の計算を、バイナリコード同士のハミング距離計算で代用することにより、もともと４Ｄバイトであったメモリの必要容量を、ｄ／８バイトまで削減できる。これにより、数十〜数百分の一にメモリ容量を節約できる。
【００１０】
抽出された特徴量をバイナリコードに変換して、さまざまなアルゴリズムを適用することで、コンテンツの検索や認識などが可能となる。例えば類似コンテンツを検索する場合には、あらかじめデータベースに登録されているコンテンツの特徴量を、すべてバイナリコードに変換しておく。また、入力クエリとして与えられたコンテンツの特徴量をバイナリコードに変換する。そして、入力クエリのバイナリコードと、データベースに登録されているすべてのバイナリコードとの間のハミング距離を計算することで、入力クエリに類似するコンテンツを検索して出力できる。
【００１１】
バイナリコードはｄビットの０と１の列からなる。これを、各要素が−１及び１の二値のみを取るｄ次元のベクトルと考えることもできる。以下の説明における混乱を避けるために、「バイナリコード」と「二値ベクトル」という用語について、以下のように区別をする。「バイナリコード」は、０と１の列からなるデータ表現である。例えば、Ｃ言語において１２８ビットのバイナリコードをメモリ上に格納する場合は、符号無し整数（unsigned char）型の１６要素分の配列を用意すればよい（８ｂｉｔ×１６＝１２８ｂｉｔ）。
【００１２】
一方、「二値ベクトル」は、各要素が二値のみを取るベクトルである。例えば、二値ベクトルを各要素が−１及び１のみをとるベクトルとする場合には、バイナリコード「０１１０１１１０」に対応する二値ベクトルは、（−１，１，１，−１，１，１，１，−１）Tである。もちろん、各要素が０及び１の二値のみを取るベクトルも二値ベクトルであるし、さらには、各要素が任意のα及びβ（ここでα≠βである）の二値のみを取るベクトルも二値ベクトルである。ただし、「バイナリコード」と「二値ベクトル」の違いは、情報の表現に関するものであり、両者に本質的な違いはない。
【先行技術文献】
【非特許文献】
【００１３】
【非特許文献１】Michel X. Goemans, avid P. Williamson, "Improved approximation algorithms for maximum cut and satisfiability problems using semidefinite programming", Journal of the ACM Volume 42 , Issue 6 (November 1995) Pages: 1115-1145
【非特許文献２】Ping Li, Trevor J. Hastie, Kenneth W. Church, "very sparse random projections", KDD '06 Proceedings of the 12th ACM SIGKDD international conference on Knowledge discovery and data mining (2006)
【非特許文献３】Y. Weiss, A. Torralba, R. Fergus., "Spectral Hashing", Advances in Neural Information Processing Systems, 2008.
【発明の概要】
【発明が解決しようとする課題】
【００１４】
特徴量を用いた演算を行うためには、入力コンテンツから特徴量を抽出する必要がある。以下では、特徴量演算として、入力コンテンツとしての入力画像に含まれる識別対象の識別を行う場合を例に、本発明の課題を説明する。
【００１５】
一般に、物体認識ではＨＯＧ（Histograms of Oriented Gradients）特徴量が用いられる。そこで、まずＨＯＧ特徴量を用いた識別について概略を述べる。図４９は、入力画像からＨＯＧ特徴量を抽出する方法を説明するための図である。ＨＯＧ特徴量を抽出するためには、識別装置は、まず、入力画像をＭピクセル×Ｍピクセル（Ｍは自然数）ごとに分割し、そこからＤ種類（Ｄは自然数）の方向の勾配方向ヒストグラムを求める。このＭピクセル×Ｍピクセルの小領域を一つの単位として「セル」と呼ぶ。１つのセルにはＤ次元の特徴ベクトルが与えられることになる。さらに、Ｎセル×Ｎセルを一つの単位としてまとめたものを「ブロック」と呼ぶ。各セルにＤ次元の特徴ベクトルが与えられるので、１つのブロックには（Ｎ×Ｎ×Ｄ）次元の特徴ベクトルが与えられることになる。
【００１６】
通常、ブロックに与えられた（Ｎ×Ｎ×Ｄ）次元のベクトルは、長さが１になるように正規化される。これは照明条件の変化にロバストにするための措置である。隣接するブロックは重なり合うように配置される。すなわち、左右に隣接するブロックでは幾つかのセルを共有するように配置される。
【００１７】
識別装置は、ここから横Ｈブロック×縦Ｖブロックのウィンドウを用いて、（Ｎ×Ｎ×Ｄ×Ｈ×Ｖ）次元の特徴量を切り出す。識別装置は、これを物体の特徴量と考え、識別処理を適用することで、このウィンドウに映っている物体が特定の対象（例えば歩行者）であるか否かを判定する。
【００１８】
歩行者認識の場合、Ｍ＝８、Ｎ＝２、Ｄ＝３２、Ｈ＝８、Ｖ＝１６が適切なパラメータであることが知られている。例えば、上記の標準的なパラメータにおいて幅６４０ピクセル×高さ４８０ピクセルの入力画像からＨＯＧ特徴量を抽出する場合、横７９ブロック×縦５９ブロックのウィンドウを用いて切出されたＨＯＧ特徴量が抽出される。
【００１９】
入力画像に含まれる特定の対象の当該入力画像内での位置が不明である場合には、識別装置は、Ｈブロック×Ｖブロックのウィンドウを入力画像内でスライドさせながら（Ｎ×Ｎ×Ｄ×Ｈ×Ｖ）次元の特徴量を切り出して、その都度識別処理を適用することで、入力画像に特定の対象が含まれるか否かを判定する。さらに、入力画像における識別対象のサイズが不明である場合もある。識別対象のサイズが不明である場合に識別対象を識別する手法として、以下の手法がある。
【００２０】
（第１の手法：フィーチャ・ピラミッド法）
図１は、フィーチャ・ピラミッド法を説明するための図である。この手法では、識別装置は、入力画像をＬ通りのサイズに変形（リサイズ）して、Ｌ枚のサイズの異なる画像を生成し、それぞれの画像について特徴量を抽出する。識別装置は、各画像について同じサイズのウィンドウＷを用いて、識別のための特徴量演算を行う。
【００２１】
図２は、フィーチャ・ピラミッド法の識別処理を説明する図である。識別装置は、入力画像１０が得られると、それを複数とおりの縮小率で縮小して、複数のリサイズ（縮小）画像１１を生成する。識別装置は、入力画像及び複数のリサイズ画像（合計Ｌ枚）の各々について特徴量を抽出して、フィーチャ・ピラミッドを生成する。すなわち、識別装置は特徴量の抽出処理をＬ回行う。識別装置は、各サイズの画像から抽出された複数段の特徴量を用いて、識別のための特徴量演算を行う。このとき、ウィンドウのサイズは固定されているので、識別のための辞書は当該ウィンドウのサイズに対応するものを用意しておけば足りる。
【００２２】
図３は、フィーチャ・ピラミッド法に上述の特徴量の二値化による高速化の技術を適用した場合の識別処理を説明する図である。図２の場合と同様に、識別装置は、入力画像１０が得られると、それを複数とおりの縮小率で縮小して、複数のリサイズ（縮小）画像１１を生成し、入力画像及び複数のリサイズ画像（合計Ｌ枚）の各々について特徴量を抽出して、フィーチャ・ピラミッドを生成する。識別装置は、各サイズの画像から抽出された複数段の特徴量の各々を二値化する。すなわち、識別装置は、特徴量の二値化処理をＬ回行う。識別装置は、各段の二値特徴量を用いて、識別のための特徴量演算を行う。二値特徴量を用いているので、この特徴量演算は高速化される。
【００２３】
しかしながら、まず、フィーチャ・ピラミッド法では、サイズの異なる複数の画像について特徴量抽出の処理を行う必要があるので、この点で特徴量抽出が遅いという問題がある。また、特徴量の二値化によって特徴量演算の高速化を図る場合にも、特徴量の二値化処理をリサイズの段数だけ行わなければならず、この点で、特徴量の二値化による特徴量演算の高速化の恩恵を十分に受けることができない。
【００２４】
（第２の手法：クラシファイア・ピラミッド法）
図４は、クラシファイア・ピラミッド法を説明するための図である。この手法では、識別装置は、入力画像から特徴量を抽出する際のセルのサイズを２×２ピクセル、３×３ピクセル、・・・とＬ通りのサイズに変形（リサイズ）して、Ｌ段の特徴量を抽出する。ブロックのサイズＮや物体モデル（ウィンドウ）の縦横ブロック数Ｈ、Ｖは、例えば上記のように、Ｎ＝２、Ｈ＝８、Ｖ＝１６とすることができる。識別装置は、各段の特徴量についてＬ通りの異なるサイズのウィンドウＷを用いて、識別のための特徴量演算を行う。ウィンドウＷの縦横ピクセルサイズは、セルのサイズに応じで変わることになるが、特徴量の次元数は変わらない。
【００２５】
図５は、クラシファイア・ピラミッド法の識別処理を説明する図である。識別装置は、入力画像１０が得られると、この入力画像についてＬ通りの異なるセルのサイズ（例えば、２×２ピクセル、３×３ピクセル、・・・）で特徴量を抽出する。このとき、セル内の勾配ヒストグラムを求める操作には冗長性があるので、特徴量の積分画像を用いる等の手法によって特徴量の抽出処理の負荷を軽減できるものの、原理的には特徴量の抽出処理（ブロックの構成、ブロックに与えられた特徴量の正規化）をＬ回行う必要がある。識別装置は、各セルサイズで抽出された複数段の特徴量を用いて、識別のための特徴量演算を行う。
【００２６】
図６は、クラシファイア・ピラミッド法に上述の特徴量の二値化による高速化の技術を適用した場合の識別処理を説明する図である。図３の場合と同様に、識別装置は、入力画像１０が得られると、この入力画像についてＬ通りの異なるセルのサイズ（例えば、２×２ピクセル、３×３ピクセル、・・・）で特徴量を抽出する。識別装置は、各セルサイズの特徴量の各々を二値化する。すなわち、識別装置は、特徴量の二値化処理をＬ回行う。識別装置は、各段の二値特徴量を用いて、識別のための特徴量演算を行う。二値特徴量を用いているので、この特徴量演算は高速化される。
【００２７】
しかしながら、まず、クラシファイア・ピラミッド法では、特徴量がスケール不変でない場合には、特徴量が苦手なスケールでは識別性能が劣化する。例えば、上述のＨＯＧ特徴量はスケール不変ではないので、クラシファイア・ピラミッド法は適さない。より具体的にいうと、ＨＯＧ特徴量はセルのサイズが８ピクセル×８ピクセルが適切であることが知られているが、クラシファイア・ピラミッド法では、見かけ上大きな物体を検出したい場合にはセルのサイズを非常に大きくしなければならず、また逆に見かけ上小さな物体を検出したい場合にはセルのサイズを非常に小さくしなければならず、その場合の物体認識精度は著しく劣化し得る。また、複数のブロックサイズごとに辞書を学習しなければならないという問題もある。
【００２８】
また、クラシファイア・ピラミッド法では、異なるブロックサイズの特徴量の冗長性を利用した特徴量抽出処理の高速化、及び特徴量を二値化することによる識別処理の高速化が可能であるが、これは単なる二つの技術の寄せ集めに過ぎず、それらの相乗的な効果が得られているわけではない。
【００２９】
本発明は、上記の問題に鑑みてなされたものであり、二値特徴量を演算するのに適した特徴量演算装置を提供することを目的とする。
【課題を解決するための手段】
【００３０】
本発明の一態様の特徴量演算装置は、入力画像と前記入力画像を複数の倍率でそれぞれ拡大又は縮小してなる複数のリサイズ画像からなるピラミッド画像の各々から抽出された特徴量を二値化する特徴量二値化部と、二値化された前記特徴量に対してサイズの異なる複数の辞書からなる辞書セットを適用して前記入力画像と前記辞書との関連性を判定する特徴量演算部とを備え、前記特徴量演算部は、前記ピラミッド画像の各々について、前記複数の辞書に対して、二値化された前記特徴量を共通して用いて、前記複数の辞書との関連性を判定する構成を有している。
【００３１】
この構成により、ピラミッド画像の各々から抽出された特徴量を二値化した上で、各二値特徴量に対してサイズの異なる複数の辞書を適用するので、フィーチャ・ピラミッド法のように、ピラミッド画像の各々から特徴量を抽出して、特徴量ごとに同一の辞書を用いて演算を行う場合と比較して、特徴量の抽出回数を減らすことができ、特徴量の抽出処理の負荷を軽減して高速化できる。また、クラシファイア・ピラミッド法のように、ピラミッド画像を生成せずに入力画像から複数のセルサイズの異なる特徴量抽出を行い、特徴量ごとに異なる辞書を用いて演算を行う場合と比較しても、二値化の処理回数を減らすことができ、二値化処理の負荷を軽減して高速化できる。すなわち、上記の構成では、複数の辞書に対して二値化特徴量を共通して用いるので、入力画像内の関連性を判定したい対象（例えば歩行者）の入力画像に対するサイズの違いに対応するためのセル数の異なる複数の辞書が、セル毎には共通化された二値化特徴量を用いることで、計算を要する特徴量の数を減少させることができ、これによって関連性判定の処理を高速化できる。
【００３２】
上記の特徴量演算装置は、前記ピラミッド画像の各々から前記特徴量を抽出する特徴量抽出部をさらに備えていてよく、前記特徴量二値化部は、前記特徴量抽出部にて抽出された特徴量を二値化してよい。
【００３３】
この構成により、ピラミッド画像の各々から抽出された実数の特徴量を二値化することができる。
【００３４】
上記の特徴量演算装置において、前記特徴量演算部は、前記入力画像に対して、前記辞書を用いた識別を行ってよい。
【００３５】
この構成により、処理負荷を増やすことなく特徴量の二値化による識別の高速化を実現できるので、例えば、連続的に入力される画像（動画像）について、リアルタイムに認識を行うことも可能となる。
【００３６】
上記の特徴量演算装置において、前記特徴量演算部は、前記ピラミッド画像の各々について、前記複数の辞書のうちの全部又は一部の辞書が同一である前記辞書セットを適用してよい。
【００３７】
この構成により、複数の辞書からなる辞書セットの容量を小さくできる。
【００３８】
上記の特徴量演算装置は、二値化された前記特徴量の共起要素を用いて識別能力を強化するよう前記特徴量を変換する特徴量変換部をさらに備えていてよい。
【００３９】
この構成により、特徴量演算部における入力画像の識別の精度を向上できる。
【００４０】
上記の特徴量演算装置は、実数を要素として持つ実数ベクトルを二値または三値の離散値のみから構成された要素を持つ複数の基底ベクトルの線形和に分解することで得られた前記複数の基底ベクトルを取得する基底ベクトル取得部をさらに備えていてよく、前記辞書は、前記複数の基底ベクトルを用いて生成されていてよく、前記特徴量演算部は、前記特徴量を示す特徴ベクトルと前記複数の基底ベクトルの各々との内積計算を順次行うことで、前記実数ベクトルと前記特徴ベクトルとの関連性を判定してよい。
【００４１】
この構成により、辞書の離散化によるベクトル演算を高速化することで、特徴量と実数ベクトルとの関連性を高速に判定できる。
【００４２】
上記の特徴量演算装置は、前記特徴量演算部にて関連性があると判定された特徴ベクトルの共起要素を用いて識別能力を強化するよう前記特徴ベクトルを変換する特徴量変換部と、前記特徴量変換部にて変換された特徴ベクトルに対して、さらに複数の基底ベクトルの各々との内積計算を順次行うことで、前記実数ベクトルと前記特徴ベクトルとの関連性を判定する第２の特徴量演算部とをさらに備えていてよい。
【００４３】
この構成により、共起を用いない関連性判定で精度の粗い判定を行って、関連性があると判定された特徴ベクトルについて共起を用いた関連性判定を行うというカスケード処理によって、関連性判定のさらなる高速化が可能となる。
【００４４】
上記の特徴量演算装置において、前記特徴量演算部は、前記ピラミッド画像の各々について、ウィンドウをスライドさせながら特徴量を切り出し、前記ウィンドウから切り出された特徴量について、前記辞書セットを適用して関連性を判定してよい。
【００４５】
この構成により、適用すべき辞書が複数であるのに対し、特徴量の切出しは一度でよいため、処理が簡略化される。
【００４６】
上記の特徴量演算装置は、実数を要素として持つ複数の実数ベクトルからなる実数行列を、係数行列と、要素として二値または三値の離散値のみを持つ複数の基底ベクトルからなる基底行列との積に分解する実数行列分解部をさらに備えていてよく、前記辞書は、前記複数の基底行列を用いて生成されていてよく、前記特徴量演算部は、前記特徴量を示す特徴ベクトルと前記複数の実数ベクトルの各々との内積の計算として、前記特徴ベクトルと前記基底行列との積を計算し、さらに当該積と前記係数行列との積を計算して、その結果を用いて、前記複数の実数ベクトルの各々と前記特徴ベクトルとの関連性を判定してよい。
【００４７】
この構成により、辞書の離散化によるベクトル演算を高速化することで、特徴量と複数の実数ベクトルの各々との関連性を高速に判定できる。
【００４８】
本発明の一態様の特徴量演算方法は、入力画像と前記入力画像を複数の倍率でそれぞれ拡大又は縮小してなる複数のリサイズ画像からなるピラミッド画像の各々から抽出された特徴量を二値化する特徴量二値化ステップと、二値化された前記特徴量に対してサイズの異なる複数の辞書からなる辞書セットを適用して前記入力画像と前記辞書との関連性を判定する特徴量演算ステップとを含み、前記特徴量演算ステップでは、前記ピラミッド画像の各々について、前記複数の辞書のうちの全部又は一部の辞書が同一である前記辞書セットを適用する構成を有している。
【００４９】
この構成によっても、ピラミッド画像の各々から抽出された特徴量を二値化した上で、各二値特徴量に対してサイズの異なる複数の辞書を適用するので、フィーチャ・ピラミッド法のように、ピラミッド画像の各々から特徴量を抽出して、特徴量ごとに異なる辞書を用いて演算を行う場合と比較して、特徴量の抽出回数を減らすことができ、特徴量の抽出処理の負荷を軽減して高速化できる。また、クラシファイア・ピラミッド法のように、ピラミッド画像を生成せずに入力画像から複数のセルサイズの異なる特徴量抽出を行い、特徴量ごとに異なる辞書を用いて演算を行う場合と比較しても、二値化の処理回数を減らすことができ、二値化処理の負荷を軽減して高速化できる。すなわち、上記の構成では、複数の辞書に対して二値化特徴量を共通して用いるので、入力画像内の関連性を判定したい対象（例えば歩行者）の入力画像に対するサイズの違いに対応するためのセル数の異なる複数の辞書が、セル毎には共通化された二値化特徴量を用いることで、計算を要する特徴量の数を減少させることができ、これによって関連性判定の処理を高速化できる。
【００５０】
本発明の一態様の特徴量演算プログラムは、コンピュータに、入力画像と前記入力画像を複数の倍率でそれぞれ拡大又は縮小してなる複数のリサイズ画像からなるピラミッド画像の各々から抽出された特徴量を二値化する特徴量二値化ステップと、二値化された前記特徴量に対してサイズの異なる複数の辞書からなる辞書セットを適用して前記入力画像と前記辞書との関連性を判定する特徴量演算ステップとを実行させるための特徴量演算プログラムであって、前記特徴量演算ステップでは、前記ピラミッド画像の各々について、前記複数の辞書のうちの全部又は一部の辞書が同一である前記辞書セットを適用する構成を有している。
【００５１】
この構成によっても、ピラミッド画像の各々から抽出された特徴量を二値化した上で、各二値特徴量に対してサイズの異なる複数の辞書を適用するので、フィーチャ・ピラミッド法のように、ピラミッド画像の各々から特徴量を抽出して、特徴量ごとに異なる辞書を用いて演算を行う場合と比較して、特徴量の抽出回数を減らすことができ、特徴量の抽出処理の負荷を軽減して高速化できる。また、クラシファイア・ピラミッド法のように、ピラミッド画像を生成せずに入力画像から複数のセルサイズの異なる特徴量抽出を行い、特徴量ごとに異なる辞書を用いて演算を行う場合と比較しても、二値化の処理回数を減らすことができ、二値化処理の負荷を軽減して高速化できる。すなわち、上記の構成では、複数の辞書に対して二値化特徴量を共通して用いるので、入力画像内の関連性を判定したい対象（例えば歩行者）の入力画像に対するサイズの違いに対応するためのセル数の異なる複数の辞書が、セル毎には共通化された二値化特徴量を用いることで、計算を要する特徴量の数を減少させることができ、これによって関連性判定の処理を高速化できる。
【発明の効果】
【００５２】
本発明によれば、特徴量の抽出回数及び二値化の処理回数を減らすことができるので、関連性判定の処理を高速化できる。
【図面の簡単な説明】
【００５３】
【図１】フィーチャ・ピラミッド法を説明するための図
【図２】フィーチャ・ピラミッド法の識別処理を説明する図
【図３】フィーチャ・ピラミッド法に上述の特徴量の二値化による高速化の技術を適用した場合の識別処理を説明する図
【図４】クラシファイア・ピラミッド法を説明するための図
【図５】クラシファイア・ピラミッド法の識別処理を説明する図
【図６】クラシファイア・ピラミッド法に上述の特徴量の二値化による高速化の技術を適用した場合の識別処理を説明する図
【図７】ハイブリッド・ピラミッド法を説明するための図
【図８】ハイブリッド・ピラミッド法の識別処理を説明する図
【図９】ハイブリッド・ピラミッド法に特徴量の二値化による高速化の技術を適用した本発明の実施の形態の識別処理を説明する図
【図１０】本発明の第２の実施の形態の第１の例における二値の特徴ベクトルの要素の例を示す図
【図１１】本発明の第２の実施の形態の第１の例におけるＸＯＲと調和平均との関係を示す表
【図１２】本発明の第２の実施の形態の第１の例における二値の特徴ベクトルのすべて要素の組み合わせのＸＯＲを示す表
【図１３】本発明の第２の実施の形態の第１の例におけるキャリーなしローテートシフトによる共起要素の計算を示す図
【図１４】本発明の第２の実施の形態の第１の例における二値の特徴ベクトルのすべて要素の組み合わせのＸＯＲを示す表
【図１５】本発明の第２の実施の形態の第１の例におけるキャリーなしローテートシフトによる共起要素の計算を示す図
【図１６】本発明の第２の実施の形態の第１の例における二値の特徴ベクトルのすべて要素の組み合わせのＸＯＲを示す表
【図１７】本発明の第２の実施の形態の第１の例におけるキャリーなしローテートシフトによる共起要素の計算を示す図
【図１８】本発明の第２の実施の形態の第１の例における二値の特徴ベクトルのすべて要素の組み合わせのＸＯＲを示す表
【図１９】本発明の第２の実施の形態の第１の例におけるキャリーなしローテートシフトによる共起要素の計算を示す図
【図２０】本発明の第２の実施の形態の第１の例における二値の特徴ベクトルのすべて要素の組み合わせのＸＯＲを示す表
【図２１】本発明の第２の実施の形態の第１の例における特徴量変換装置の構成を示すブロック図
【図２２】本発明の第２の実施の形態の第２の例における画像の１ブロック分のＨＯＧ特徴量とそれを二値化した結果を示す図
【図２３】本発明の第２の実施の形態の第２の例における多重閾値による特徴記述能力の強化を説明する図
【図２４】本発明の第２の実施の形態の第２の例における特徴量変換を説明する図
【図２５】本発明の第２の実施の形態の第２の例における特徴量変換装置の構成を示すブロック図
【図２６】比較例のプログラムコード
【図２７】実施例のプログラムコード
【図２８】学習によって認識モデルを生成した後に認識装置にて認識を行ったときの誤検出と検出率との関係を示すグラフ
【図２９】本発明の第３の実施の形態の第１の例における特徴量演算装置の構成を示すブロック図
【図３０】本発明の第３の実施の形態の第１の例における実数ベクトルの分解を示す図
【図３１】本発明の第３の実施の形態の第２の例における計算例を示す図
【図３２】本発明の第３の実施の形態の第３の例におけるベクトル演算部におけるカスケードによる閾値処理の高速化のフロー図
【図３３】本発明の第３の実施の形態の第１の応用例における物体認識装置の構成を示すブロック図
【図３４】本発明の第３の実施の形態の第２の応用例におけるｋ−ｍｅａｎｓクラスタリング装置の構成を示すブロック図
【図３５】本発明の第４の実施の形態における複数の識別基準で画像中の人を識別する場合の線形ＳＶＭの例を示す図
【図３６】本発明の第４の実施の形態における複数の識別基準で画像中の人を識別する場合の線形ＳＶＭの例を示す図
【図３７】本発明の第４の実施の形態の第１の例における特徴量演算装置の構成を示すブロック図
【図３８】本発明の第４の実施の形態の第１の例における実数行列の分解を示す図
【図３９】本発明の第４の実施の形態の第１の例における実数行列と基底行列との関係を説明するための図
【図４０】本発明の第４の実施の形態の第２の例における計算例を示す図
【図４１】本発明の第４の実施の形態の第１の応用例における物体認識装置の構成を示すブロック図
【図４２】本本発明の第４の実施の形態の第１の応用例における回転する道路標識と回転角度ごとの辞書及びバイアスを示す図
【図４３】本発明の第４の実施の形態の第１の応用例における係数行列の性質を示す図
【図４４】本発明の第４の実施の形態の第１の応用例における識別関数の例を示すグラフ
【図４５】本発明の第４の実施の形態の第２の応用例におけるｋ−ｍｅａｎｓクラスタリング装置の構成を示すブロック図
【図４６】本発明の第５の実施の形態の第１の例の識別装置における処理を示すブロック図
【図４７】本発明の第５の実施の形態の第２の例の識別装置における処理を示すブロック図
【図４８】本発明の第５の実施の形態の第３の例の識別装置における処理を示すブロック図
【図４９】入力画像からＨＯＧ特徴量を抽出する方法を説明するための図
【発明を実施するための形態】
【００５４】
以下、本発明の実施の形態の特徴量演算装置について、図面を参照しながら説明する。なお、以下に説明する実施の形態は、本発明を実施する場合の一例を示すものであって、本発明を以下に説明する具体的構成に限定するものではない。本発明の実施にあたっては、実施の形態に応じた具体的構成が適宜採用されてよい。
【００５５】
１．第１の実施の形態
本発明の実施の形態の特徴量演算装置を説明するのに先立って、図１〜６に倣って、本発明の実施の形態の特徴量演算装置における特徴量抽出及び特徴量演算の処理の概要を説明する。以下では、本実施の形態の特徴量演算装置が識別装置であり、抽出する特徴量がＨＯＧ特徴量であり、特徴量演算処理が識別処理である場合を例に説明する。本実施の形態の特徴量演算装置としての識別装置は、上記のフィーチャ・ピラミッド法とクラシファイア・ピラミッド法を融合したハイブリッド・ピラミッド法を採用する。
【００５６】
図７は、ハイブリッド・ピラミッド法を説明するための図である。識別装置は、入力画像をＬ／Ｋ通りのサイズに変形（リサイズ）して、Ｌ／Ｋ枚のサイズの異なる画像を生成し、それぞれの画像についてＨＯＧ特徴量を抽出する。識別装置は、各段の特徴量についてＫ通りの異なるサイズのウィンドウＷを用いて、識別のための特徴量演算を行う。
【００５７】
図８は、ハイブリッド・ピラミッド法の識別処理を説明する図である。識別装置は、入力画像１０が得られると、それを複数とおりの縮小率で縮小して、複数のリサイズ（縮小）画像１１を生成する。具体的には、識別装置は、入力画像１０を１／２に縮小した１／２画像、１／４に縮小した１／４画像、１／８に縮小した１／８画像、・・・というように、２のべき乗で順次縮小したリサイズ画像によってピラミッド画像を生成する。
【００５８】
次に、識別装置は、入力画像及び複数のリサイズ画像（合計Ｌ／Ｋ枚）からなるピラミッド画像の各々についてＨＯＧ特徴量を抽出する。すなわち、識別装置は、特徴量の抽出処理をＬ／Ｋ回行う。ここで、Ｋは、オクターブ間隔であり、ピラミッド画像の各々に対していくつのテンプレートを用意するか（図７において各画像に重畳されている枠の数）を示すものである。識別装置は、モデルサイズの異なる複数（Ｋ種類）の辞書からなる辞書セットを記憶しており、各ＨＯＧ特徴量について、特徴量の切り出しを行うサイズごとに対応する辞書を用いて、識別のための特徴量演算を行う。このとき、識別装置は、ピラミッド画像の各々に対して同じ辞書セットを用いて識別を行う。
【００５９】
図９は、ハイブリッド・ピラミッド法に特徴量の二値化による高速化の技術を適用した本発明の実施の形態の識別処理を説明する図である。識別装置は、入力画像１０が得られると、それを複数とおりの縮小率で縮小して、複数のリサイズ（縮小）画像１１を生成する。具体的には、識別装置は、入力画像１０を１／２に縮小した１／２画像、１／４に縮小した１／４画像、１／８に縮小した１／８画像、・・・というように、２のべき乗で順次縮小したリサイズ画像によってピラミッド画像を生成する。なお、識別装置は、入力画像を縮小することによってリサイズ画像を生成するだけでなく、入力画像を拡大することによってリサイズ画像を生成してもよい。
【００６０】
次に、識別装置は、入力画像及び複数のリサイズ画像（合計Ｌ／Ｋ枚）からなるピラミッド画像の各々についてＨＯＧ特徴量を抽出する。すなわち、識別装置は、特徴量の抽出処理をＬ／Ｋ回行う。識別装置は、各サイズの画像から抽出された複数段のＨＯＧ特徴量の各々を二値化する。すなわち、識別装置は、特徴量の二値化処理をＬ／Ｋ回行う。識別装置は、モデルサイズの異なる複数（Ｋ種類）の辞書からなる辞書セットを記憶しており、各二値ＨＯＧ特徴量について、特徴量の切り出しを行うサイズごとに対応する辞書を用いて、識別のための特徴量演算を行う。このとき、識別装置は、ピラミッド画像の各々に対して同じ辞書セットを用いて識別を行う。
【００６１】
このように、本実施の形態の識別装置は、二値化処理を加えても、ピラミッドの階層分（Ｌ／Ｋ）だけしか二値化処理が必要でなく、この点で二値特徴量を抽出する処理を高速化できる。また、二値化処理が多くないにもかかわらず、二値化による識別処理の高速化の恩恵を十分に受けることができる。さらに、ハイブリッド・ピラミッドで特徴量のサイズが減り、さらにそれが二値化されるので、特徴量によるメモリ消費量が少なくてすむ。よって、ハイブリッド・ピラミッド法と特徴量の二値化による識別処理の高速化技術とを組み合わせると、二値化の処理負荷を抑えつつ、二値化による識別処理の高速化の恩恵を最大限に活かすという相乗効果が得られる。
【００６２】
すなわち、入力画像から歩行者を検出する識別装置を例にすると、フィーチャ・ピラミッド法では、検出したい歩行者が特定のピクセル数になるように入力画像をリサイズするが、このとき、１セルのピクセル数はＭ×Ｍとなり、辞書のセル数も一定となる。また、クラシファイア・ピラミッド法では、検出したい歩行者に合わせて１セルのピクセル数をリサイズし、辞書のセル数は一定となる。これに対して、本実施の形態のハイブリッド・ピラミッド法では、検出したい歩行者に合わせて、ある程度入力画像をリサイズしてピラミッド画像を生成し、ピラミッド画像ごとにセル数の異なる辞書を用意して適用する。これによって、複数辞書を識別するのに用いる特徴量を共通化できるので、特徴計算時間を短縮できることになる。
【００６３】
なお、上述で説明した識別装置では、ピラミッド画像に含まれる各画像について、同じ辞書セットを用いて識別を行ったが、辞書セットは完全に同一でなくてもよく、ピラミッド画像の各画像に用いる辞書セットが互いに類似するものであってもよい。辞書セットが類似するということは、辞書セットに含まれる複数の辞書のうちの一部のみが共通であることをいう。
【００６４】
２．第２の実施の形態
２−１．背景
従来、画像検索、音声認識、文章検索などの多くの分野で機械学習によって対象を認識する認識装置が実用化されている。この認識のために、画像、音声、文章などの情報から特徴量が抽出される。画像から特定の対象を認識する場合には、画像の特徴量として、例えばＨＯＧ特徴量を用いることができる（例えば、Navneet Dalal and Bill Triggs, "Histograms of Oriented Gradients for Human Detection", CVPR '05 Proceedings of the 2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'05) - Volume 1 - Volume 01, Pages 886-893を参照）。特徴量は、計算機で扱いやすいように特徴ベクトルの形式で扱われる。すなわち、画像、音声、文章などの情報は、対象認識のために特徴ベクトルに変換される。
【００６５】
認識装置は、特徴ベクトルを認識モデルに適用することで対象を認識する。例えば、線形識別器の認識モデルは、式（１）で与えられる。
【数５】
2015230715.tif 000007
ここで、ｘは特徴ベクトルであり、ｗは重みベクトルであり、ｂはバイアスである。線形識別器は、特徴ベクトルｘが与えられたときに、ｆ（ｘ）がゼロより大きいか小さいかによって、二値分類を行う。
【００６６】
このような認識モデルは、学習用に準備された多数の特徴ベクトルを用いて学習を行うことによって決定される。上記の線形識別器の例では、多数の正例と負例を学習データとして用いることで、重みベクトルｗ及びバイアスｂが決定される。具体的な方法としては、例えば、ＳＶＭ（support vector machine）による学習を採用できる。
【００６７】
線形識別器は、学習及び識別に要する計算が速いため、特に有用である。しかしながら、線形識別器は、線形判別（二値分類）しかできないため、識別能力に乏しいという欠点がある。そこで、特徴量に予め非線形変換をかけておくことで、特徴量の記述能力を向上させる試みがされている。例えば、特徴量の共起性を用いることで、識別能力を強化する試みが行われている。具体的には、ＦＩＮＤ（Feature Interaction Descriptor）特徴量がこれに相当する（例えば、Hui CAO, Koichiro YAMAGUCHI, Mitsuhiko OHTA, Takashi NAITO, and Yoshiki NINOMIYA, "Feature Interaction Descriptor for Pedestrian Detection", IEICE TRANSACTIONS on Information and Systems Vol.E93-D No.9 pp.2656-2659を参照）。
【００６８】
ＦＩＮＤ特徴量は、特徴ベクトルの各要素のすべての組み合わせに関して調和平均をとることで、共起要素とし、特徴量の識別能力を高めるものである。具体的には、Ｄ次元の特徴ベクトルｘ＝（ｘ1，ｘ2，・・・，ｘD）Tが与えられたときに、すべての要素の組み合わせに対して、下式（２）の非線形な計算を行う。
【数６】
2015230715.tif 000008
このとき、ＦＩＮＤ特徴量は、ｙ＝（ｙ11，ｙ12，・・・，ｙDD）Tで与えられる。
【００６９】
例えば、特徴ベクトルｘが３２次元であるとき、組み合わせの重複を取り除いたＦＩＮＤ特徴量は５２８次元となる。なお、必要に応じて、ｙは長さが１となるように正規化されてよい。
【００７０】
２−２．概要
しかしながら、ＦＩＮＤ特徴量を求めるには、特徴ベクトルの要素のすべての組み合わせの計算が必要であり、この計算量は次元数に対して二乗のオーダーになる。また、各要素の計算において割り算が発生するため、きわめて遅いという問題がある。さらに、特徴量の次元数が大きいため、メモリの消費量が大きくなるという問題もある。
【００７１】
本実施の形態は、上記の問題に鑑みて、特徴量が二値であるときに、特徴量の非線形変換を高速に行う特徴量変換装置を提供することを目的とする。
【００７２】
本実施の形態の他の目的は、特徴ベクトルが二値でない場合にも、これを二値に変換する特徴量変換装置を提供することである。
【００７３】
本実施の形態の第一の態様の特徴量変換装置は、入力された二値の特徴ベクトルの要素をそれぞれ異なる配列に再配列した複数の再配列ビット列を生成するビット再配列部と、前記複数の再配列ビット列の各々と入力された前記特徴ベクトルとの論理演算をそれぞれ行って、複数の論理演算ビット列を生成する論理演算部と、生成された複数の前記論理演算ビット列を統合して、非線形変換特徴ベクトルを生成する特徴統合部とを備えた構成を有している。この構成により、入力された特徴ベクトルの共起要素を、入力された特徴ベクトルの再配列と論理演算によって算出するので、共起要素の演算を高速にできる。
【００７４】
前記特徴統合部は、さらに、入力された前記特徴ベクトルの要素も生成された複数の前記論理演算ビット列とともに統合してよい。この構成によれば、もとの特徴ベクトルの要素も利用することで、演算量を増大させることなくより記述能力の高い非線形変換特徴ベクトルを得ることができる。
【００７５】
前記論理演算部は、前記再配列ビット列と、入力された前記特徴ベクトルとの排他的論理和を計算してよい。排他的論理和は、調和平均と等価であり、「＋１」と「−１」の出現確率も同じであるので、この構成によれば、ＦＩＮＤ相当の高い特徴記述能力をもつ共起要素を算出できる。
【００７６】
前記ビット再配列部は、入力された前記特徴ベクトルの要素に対して、キャリーなしローテートシフトを行うことで前記再配列ビット列を生成してよい。この構成によれば、特徴記述能力の高い共起要素を効率よく算出できる。
【００７７】
前記特徴量変換装置は、入力された前記特徴ベクトルがｄ次元であるときに、ｄ／２個の前記ビット再配列部を備えていてよい。この構成によれば、各ビット再配列部が１ビットずつずらしたキャリーなしローテートシフトを行うことで、複数のビット再配列部によって、入力された特徴ベクトルの要素のすべての組み合わせを生成できる。
【００７８】
前記ビット再配列部は、入力された前記特徴ベクトルの要素に対して、ランダムな再配列を行ってよい。この構成によっても、特徴記述能力の高い共起要素を算出できる。
【００７９】
前記特徴量変換装置は、入力された実数の特徴ベクトルを二値化して前記二値の特徴ベクトルを生成する複数の二値化部と、前記複数の前記二値化部の各々に対応する複数の共起要素生成部とを備え、前記複数の共起要素生成部の各々は、前記複数のビット再配列部と前記複数の論理演算部とを備え、前記複数の共起要素生成部の各々には、対応する前記二値化部から前記二値の特徴ベクトルが入力され、前記特徴統合部は、複数の前記共起要素生成部の複数の前記論理演算部の各々によって生成された前記論理演算ビット列のすべてを統合して、前記非線形変換ベクトルを生成してよい。この構成によれば、特徴ベクトルの要素が実数である場合にも、特徴記述能力の高い二値の特徴ベクトルを高速に得ることができる。
【００８０】
前記二値の特徴ベクトルはＨＯＧ特徴量を二値化して得られた特徴ベクトルであってよい。
【００８１】
本実施の形態の第二の態様の特徴量変換装置は、入力された二値の特徴ベクトルの要素を再配列して再配列ビット列を生成するビット再配列部と、前記再配列ビット列と入力された前記特徴ベクトルとの論理演算を行って、論理演算ビット列を生成する論理演算部と、前記特徴ベクトルの要素と生成された前記論理演算ビット列を統合して、非線形変換特徴ベクトルを生成する特徴統合部とを備えた構成を有している。この構成によっても、入力された特徴ベクトルの共起要素を、入力された特徴ベクトルの再配列と論理演算によって算出するので、共起要素の演算を高速にできる。
【００８２】
本実施の形態の第三の態様の特徴量変換装置は、入力された二値の特徴ベクトルの要素をそれぞれ異なる配列に再配列した再配列ビット列を生成する複数のビット再配列部と、前記複数のビット再配列部にて生成されたそれぞれの前記再配列ビット列どうしの論理演算を行って、論理演算ビット列を生成する論理演算部と、前記特徴ベクトルの要素と生成された複数の前記論理演算ビット列を統合して、非線形変換特徴ベクトルを生成する特徴統合部とを備えた構成を有している。この構成によっても、入力された特徴ベクトルの共起要素を、入力された特徴ベクトルの再配列と論理演算によって算出するので、共起要素の演算を高速にできる。
【００８３】
本実施の形態の第四の態様の特徴量変換装置は、入力された二値の特徴ベクトルの要素をそれぞれ異なる配列に再配列した再配列ビット列を生成する複数のビット再配列部と、前記複数のビット再配列部にて生成されたそれぞれの前記再配列ビット列どうしの論理演算を行って、それぞれ論理演算ビット列を生成する複数の論理演算部と、生成された複数の前記論理演算ビット列を統合して、非線形変換特徴ベクトルを生成する特徴統合部とを備えた構成を有している。この構成によっても、入力された特徴ベクトルの共起要素を、入力された特徴ベクトルの再配列と論理演算によって算出するので、共起要素の演算を高速にできる。
【００８４】
本実施の形態の学習装置は、上記の特徴量変換装置と、前記特徴量変換装置にて生成された前記非線形変換特徴ベクトルを用いて学習を行う学習部とを備えた構成を有している。この構成によっても、入力された特徴ベクトルの共起要素を、入力された特徴ベクトルの再配列と論理演算によって算出するので、共起要素の演算を高速にできる。
【００８５】
本実施の形態の認識装置は、上記の特徴量変換装置と、前記特徴量変換装置にて生成された前記非線形変換特徴ベクトルを用いて認識を行う認識部とを備えた構成を有している。この構成によっても、入力された特徴ベクトルの共起要素を、入力された特徴ベクトルの再配列と論理演算によって算出するので、共起要素の演算を高速にできる。
【００８６】
上記の認識装置において、前記認識部は、前記認識における重みベクトルと前記非線形変換特徴ベクトルのとの内積計算において、分布の広い順又はエントロピーの値が高い順に計算をして、前記内積が認識のための所定の閾値より大きくなる、又は小さくなると判断できる時点で、前記内積の計算を打ち切ってよい。この構成により、認識処理を高速化できる。
【００８７】
本実施の形態の特徴量変換プログラムは、コンピュータを、入力された二値の特徴ベクトルの要素をそれぞれ異なる配列に再配列してそれぞれ再配列ビット列を生成する複数のビット再配列部、前記複数の再配列ビット列の各々と入力された前記特徴ベクトルとの論理演算をそれぞれ行って、それぞれ論理演算ビット列を生成する複数の論理演算部、及び生成された複数の前記論理演算ビット列を統合して、非線形変換特徴ベクトルを生成する特徴統合部として機能させる。この構成によっても、入力された特徴ベクトルの共起要素を、入力された特徴ベクトルの再配列と論理演算によって算出するので、共起要素の演算を高速にできる。
【００８８】
２−３．効果
本実施の形態によれば、入力された特徴ベクトルの共起要素を、入力された特徴ベクトルの再配列と論理演算によって算出するので、共起要素の演算を高速にできる。
【００８９】
２−４．第２の実施の形態の第１の例
第１の例の特徴量変換装置は、第１の実施の形態で説明したように、ハイブリッド・ピラミッド法によってＨＯＧ特徴量を抽出して、抽出したＨＯＧ特徴量を二値化する。第１の例の特徴量変換装置は、二値のＨＯＧ特徴量である特徴ベクトルが与えられたときに、この特徴ベクトルに対して非線形変換を行うことで、識別力の向上した特徴ベクトル（以下、「非線形変換特徴ベクトル」という。）を得る。例えば、８ピクセル×８ピクセルを１単位とした領域をセルと定義したとき、ＨＯＧ特徴量は、２×２のセルで構成されるブロックごとに３２次元のベクトルとして得られる。また、本例では、このＨＯＧ特徴量が二値化されたベクトルとして得られているものとする。本例の特徴量変換装置の構成を説明する前に、二値の特徴ベクトルに対して非線形変換を行ってＦＩＮＤ相当の共起要素を有する非線形変換特徴ベクトルを求める原理について説明する。
【００９０】
図１０は、二値の特徴ベクトルの要素の例を示す図である。特徴ベクトルの各要素は、「＋１」か「−１」の値をとる。図１０において、縦軸は各要素の値を示しており、横軸は要素数（次元数）を示している。図１０の例では、要素数は３２である。
【００９１】
ＦＩＮＤ特徴量を求める場合には、これらの要素を用いて、式（３）による調和平均を計算する。
【数７】
2015230715.tif 000009
ここで、ａ、ｂは各要素の値（「＋１」か「−１」）である。ａ、ｂは、「＋１」又は「−１」のいずれかであるので、その組み合わせは４通りに限られる。よって、特徴ベクトルの要素が「＋１」か「−１」の二値である場合には、この調和平均はＸＯＲと等価になる。
【００９２】
図１１は、ＸＯＲと調和平均との関係を示す表である。図１１に示すように、ＸＯＲと調和平均との関係は、（−１／２）×ＸＯＲ＝調和平均という関係にある。よって、「＋１」及び「−１」に二値化された特徴量については、それらのすべての組み合わせの調和平均を求める代わりに、それらのすべての組み合わせのＸＯＲを求めても、ＦＩＮＤ特徴量と同等に識別力が向上した特徴量に変換できる。そこで、本例の特徴量変換装置は、「＋１」及び「−１」の値をとる二値の特徴ベクトルに対して、それらの組み合わせのＸＯＲをとることで、識別力を向上させる。
【００９３】
図１２は、「１」及び「−１」の値をとる二値の特徴ベクトルのすべて要素の組み合わせのＸＯＲを示す表である。図１２では、図の簡略化のために、二値の特徴ベクトルの次元数が８である場合を示している。１行目の数列及び１行目の数列は特徴ベクトルである。図１２の例では、特徴ベクトルは（＋１，＋１，−１，−１，＋１，＋１，−１，−１）である。
【００９４】
式（３）から明らかなように、ａとｂとはこれを入れ替えても調和平均は変わらないため、図１２の表の太線で囲った部分が、この特徴ベクトルの要素のすべての組み合わせのＸＯＲのうちの重複部分を除いた部分となる。よって、本例では、この部分を共起要素として採用する。なお、同じ要素同士によるＸＯＲは必ず「−１」となるので、本例ではこれらを共起要素として採用しない。
【００９５】
本例のもとの特徴ベクトルの要素と、図１２の太線で囲った部分の要素（共起要素）とを並べるとＦＩＮＤ相当の特徴量が得られる。このとき、もとの特徴ベクトルにキャリーなしローテートシフトを行って各要素同士のＸＯＲを計算することで、高速に共起要素を計算できる。
【００９６】
図１３は、キャリーなしローテートシフトによる共起要素の計算を示す図である。もとの特徴ベクトルのビット列１００を右に１ビットシフトして、最右のビットは１ビット目（最左）に持ってくることでキャリーなしローテートシフトを行って、再配列ビット列１０１を用意する。ビット列１００と再配列ビット列１０１のＸＯＲをとると、論理演算ビット列１０２が得られる。この論理演算ビット列１０２が共起要素となる。
【００９７】
図１４に再び二値の特徴ベクトルのすべて要素の組み合わせのＸＯＲを示す。図１３の論理演算ビット列１０２は、図１４において太枠で囲った部分に相当する。要素Ｅ８１は、要素Ｅ１８と同じである。
【００９８】
図１５は、キャリーなしローテートシフトによる共起要素の計算を示す図である。もとの特徴ベクトルのビット列１００を右に２ビットシフトして、最右の２ビットは１ビット目及び２ビット目にシフトすることでキャリーなしローテートシフトを行って、再配列ビット列２０１を用意する。ビット列１００と再配列ビット列２０１のＸＯＲをとると、論理演算ビット列２０２が得られる。この論理演算ビット列２０２が共起要素となる。
【００９９】
図１６に二値の特徴ベクトルのすべて要素の組み合わせのＸＯＲを示す。図１５の論理演算ビット列２０２は、図１６において太枠で囲った部分に相当する。要素Ｅ７１、Ｅ８２は、要素Ｅ１７、Ｅ２８とそれぞれ同じである。
【０１００】
図１７は、キャリーなしローテートシフトによる共起要素の計算を示す図である。もとの特徴ベクトルのビット列１００を右に３ビットシフトして、最右の３ビットは１ビット目２ビット目、及び３ビット目にシフトすることでキャリーなしローテートシフトを行って、再配列ビット列３０１を用意する。ビット列１００と再配列ビット列３０１のＸＯＲをとると、論理演算ビット列３０２が得られる。この論理演算ビット列３０２が共起要素となる。
【０１０１】
図１８に二値の特徴ベクトルのすべて要素の組み合わせのＸＯＲを示す。図１７の論理演算ビット列３０２は、図１８において太枠で囲った部分に相当する。要素Ｅ６１、Ｅ７２、Ｅ８３は、要素Ｅ１６、Ｅ２７、Ｅ３８とそれぞれ同じである。
【０１０２】
図１９は、キャリーなしローテートシフトによる共起要素の計算を示す図である。もとの特徴ベクトルのビット列１００を右に４ビットシフトして、右側の４ビットは１ビット目、２ビット目、３ビット目、４ビット目にシフトすることでキャリーなしローテートシフトを行って、再配列ビット列４０１を用意する。ビット列１００と再配列ビット列４０１のＸＯＲをとると、論理演算ビット列４０２が得られる。この論理演算ビット列４０２が共起要素となる。
【０１０３】
図２０に二値の特徴ベクトルのすべて要素の組み合わせのＸＯＲを示す。図１９の論理演算ビット列４０２は、図２０において太枠で囲った部分に相当する。要素Ｅ５１、Ｅ６２、Ｅ７３、Ｅ８１は、それぞれ要素Ｅ１５、Ｅ２６、Ｅ３７、Ｅ４８と同じであり、いずれか一方は不要であるが、計算の都合上、これをこのまま用いることとする。
【０１０４】
図１３、図１５、図１７、図１９の計算を行うことで、図１２において太線で囲った部分の要素がすべて計算できることになる。すなわち、ビット数が８である特徴ベクトルの共起要素の計算は、４回のキャリーなしローテートシフト及びＸＯＲの計算によって得ることができる。同様に、二値の特徴ベクトルのビット数（次元数）が３２である場合には、１６回のキャリーなしローテートシフト及びＸＯＲの計算によって得ることができ、一般的には、二値の特徴ベクトルのビット数（次元数）がｄである場合には、ｄ／２回のキャリーなしローテートシフト及びＸＯＲの計算によって得ることができる。
【０１０５】
特徴量変換装置は、上記のようにして求めた共起要素に、もとの特徴ベクトルの要素を加えて、非線形変換特徴ベクトルを得る。よって、３２次元の二値の特徴ベクトルを変換すると、得られる非線形変換特徴ベクトルの次元数は、３２×１６＋３２＝５４４次元となる。以下では、上記のような特徴ベクトルの変換を実現する特徴量変換装置の構成を説明する。
【０１０６】
図２１は、本例の特徴量変換装置の構成を示すブロック図である。特徴量変換装置１０１は、Ｎ個のビット再配列器１１１〜１１Ｎと、ビット再配列器と同数（Ｎ個）の論理演算器１２１〜１２Ｎと、特徴量統合器１３０を備えている。これらのビット再配列器１１１〜１１Ｎ、論理演算器１２１〜１２Ｎ、及び特徴量統合器１３０の一部又は全部は、コンピュータが特徴量変換プログラムを実行することによって実現されてよく、又はハードウェアによって実現されてもよい。
【０１０７】
本例では、特徴量変換装置１０１に、変換すべき特徴量として、二値化された特徴ベクトルが入力される。特徴ベクトルは、Ｎ個のビット再配列器１１１〜１１Ｎ及びＮ個の論理演算器１２１〜１２Ｎにそれぞれ入力される。Ｎ個の論理演算器１２１〜１２Ｎにはさらに対応するビット配列器１１１〜１１Ｎの出力が入力される。
【０１０８】
ビット再配列器１１１〜１１Ｎは、入力された二値の特徴ベクトルに対して、キャリーなしローテートシフトによる再配列を行って、再配列ビット列を生成する。具体的には、ビット再配列器１１１は、特徴ベクトルを右に１ビットのキャリーなしローテートシフトを行い、ビット再配列器１１２は、特徴ベクトルを右に２ビットのキャリーなしローテートシフトを行い、ビット再配列器１１３は特徴ベクトルを右に３ビットのキャリーなしローテートシフトを行い、ビット再配列器１１Ｎは特徴ベクトルを右にＮビットのキャリーなしローテートシフトを行う。
【０１０９】
本例では、入力される二値の特徴ベクトルをｄ次元とすると、Ｎ＝ｄ／２とする。これにより、特徴ベクトルのすべての要素のすべての組み合わせについてＸＯＲを計算することができる。
【０１１０】
論理演算器１２１〜１２Ｎは、それぞれ対応するビット再配列器１１１〜１１Ｎから出力された再配列ビット列ともとの特徴ベクトルのビット列とのＸＯＲを計算する。具体的には、論理演算器１２１は、ビット再配列器１１１から出力された再配列ビット列ともとの特徴ベクトルのビット列とのＸＯＲを計算し（図１３参照）、論理演算器１２２は、ビット再配列器１１２から出力された再配列ビット列ともとの特徴ベクトルのビット列とのＸＯＲを計算し（図１５参照）、論理演算器１２３は、ビット再配列器１１３から出力された再配列ビット列ともとの特徴ベクトルのビット列とのＸＯＲを計算し（図１７参照）、論理演算器１２Ｎは、ビット再配列器１１Ｎから出力された再配列ビット列ともとの特徴ベクトルのビット列とのＸＯＲを計算する。
【０１１１】
特徴統合器１１３は、もとの特徴ベクトルと、論理演算器１２１〜１２Ｎからの出力（論理演算ビット列）を並べて、それらを要素とする非線形変換特徴ベクトルを生成する。上述のように、入力される特徴ベクトルが３２次元であるとき、特徴統合器１１３で生成される非線形変換特徴ベクトルは５４４次元となる。
【０１１２】
以上のように、本例の特徴量変換装置１０１によれば、二値化された特徴ベクトルの要素にそれらの共起要素（論理演算ビット列の要素）を付け足して特徴ベクトルの次元を増加させるので、特徴ベクトルの識別力を向上できる。
【０１１３】
また、本例の特徴量変換装置１０１は、もとの特徴ベクトルの要素が「＋１」及び「−１」であるのでＦＩＮＤ特徴量のようにそれらの調和平均を共起要素とすることと各要素のＸＯＲを共起要素とすることが等価であることに着目して、各要素のすべての組み合わせのＸＯＲを計算して、それらを共起要素とするので、共起要素の計算を高速に行うことができる。
【０１１４】
さらに、本例の特徴量変換装置１０１は、各要素のＸＯＲを計算するために、もとの特徴ベクトルのビット列と、それに対してキャリーなしローテートシフトを行ったビット列とのＸＯＲを計算するので、計算機のレジスタの幅がもとの特徴ベクトルのビット数（ＸＯＲの計算の数）以下である場合には、このＸＯＲの計算を同時に行うことができ、従って共起要素の計算を高速に行うことができる。
【０１１５】
２−５．第２の実施の形態の第２の例
次に、第２の例として、ＨＯＧ特徴量が二値ベクトルではなく、実数ベクトルとして得られている場合について、それを識別力の高い二値ベクトルに変換する特徴量変換装置について説明する。
【０１１６】
図２２は、画像の１ブロック分のＨＯＧ特徴量とそれを二値化した結果を示す図である。本例のＨＯＧ特徴量は、３２次元の特徴ベクトルとして得られる。図２２の上段は、この特徴ベクトルの各要素を示しており、縦軸は各要素の大きさ、横軸は要素数を示している。
【０１１７】
各要素は、二値化されて、下段の二値化された特徴ベクトルが得られる。具体的には、各要素のレンジの所定の位置に二値化のための閾値を設け、要素の値が設定された閾値以上である場合は、その要素を「＋１」とし、要素の値が設定された閾値より小さい場合は、その要素を「−１」とする。なお、各要素のレンジはそれぞれ異なるため、要素ごとに異なる閾値（３２種類）が設定される。特徴ベクトルの３２個の実数の要素をそれぞれ二値化することで、３２個の要素を持つ二値化された特徴ベクトル（３２ビット）に変換できる。
【０１１８】
ここで、多重閾値を用いることによって、特徴ベクトルの特徴記述能力を強化（情報量を増大）させることができる。すなわち、ｋ種類の異なる閾値を設定して、各閾値について、図２２に示した二値化を行うことで二値化された特徴ベクトルの次元数を増やすことが可能である。
【０１１９】
図２３は、多重閾値による特徴記述能力の強化を説明する図である。この例では、４種類の閾値を用いて二値化を行っている。３２次元の実数ベクトルの各要素が、そのレンジの２０％位置を閾値として二値化されて、３２ビット分の要素が生成される。同様に、３２次元の実数ベクトルの各要素が、そのレンジの４０％位置、６０％位置、８０％位置をそれぞれ閾値として二値化されて、各々３２ビット分の要素が再生される。これらの要素を統合すると、二値化された１２８次元の特徴ベクトル（１２８ビット）が得られる。
【０１２０】
特徴ベクトルが実数ベクトルとして与えられた場合に、図２３に示すように多重閾値による二値化を行って特徴ベクトルの特徴記述能力を向上させた上で、第１の例として説明した特徴量変換装置１０によって非線形変換を行い、さらに情報量を増加させることができる。
【０１２１】
ここで、ＨＯＧ特徴量の二値化を高速化する工夫について説明する。一般に、ＨＯＧ特徴量はブロック単位で長さを１に正規化しなければならない。この正規化によって、明るさに対して頑健（ロバスト）になるからである。
【０１２２】
正規化前の３２次元の実数のＨＯＧ特徴量を
【数８】
2015230715.tif 000010
とおく。また、正規化後の３２次元の実数のＨＯＧ特徴量を
【数９】
2015230715.tif 000011
とおく。このとき、
【数１０】
2015230715.tif 000012
である。
【０１２３】
二値化後の３２次元のＨＯＧ特徴量を
【数１１】
2015230715.tif 000013
とする。このとき、
【数１２】
2015230715.tif 000014
である。
【０１２４】
この二値化は、平方根の演算、及び割り算が一度ずつ発生するため、非常に遅い。そこで、ＨＯＧ特徴量が非負であることに着目し、上記の不等式
【数１３】
2015230715.tif 000015
の両辺を二乗し、左辺の分母を右辺に移項して、下式を得る。
【数１４】
2015230715.tif 000016
【０１２５】
このように変形することで、平方根の演算、及び割り算を行うことなく、下式によって実数のＨＯＧ特徴量を二値化することができる。
【数１５】
2015230715.tif 000017
【０１２６】
ここで、例えば、レンジの２０％位置を閾値として二値化した結果「−１」（閾値より小さい）と判断された要素は、レンジの４０％位置、６０％位置、８０％位置を閾値として二値化した場合にも当然に「−１」となる。この意味で、多重閾値による二値化によって得られた１２８ビットの二値化ベクトルは冗長な要素を含んでいる。従って、この１２８ビットの二値化ベクトルをそのまま第１の例の特徴量変換装置１０に適用して共起要素を求めることは効率的でない。そこで、本例では、このような冗長性を軽減してより効率よく共起要素を求めることができる特徴量変換装置を提供する。
【０１２７】
図２４は、本例の特徴量変換を説明する図である。本例の特徴量変換装置は、実数ベクトルとして得られている特徴ベクトルを、ｋ種類の異なる閾値で二値化する。図２４の例では、レンジの２０％位置、４０％位置、６０％位置、８０％位置の４種類の閾値でもって、３２次元の実数ベクトルをそれぞれ二値化することで、それぞれ３２個の要素を持つビット列を得る。ここまでは、図２３の例と同様である。
【０１２８】
本例の特徴量変換装置では、各閾値によって得られたビット列を統合する前に、それらのビット列を用いて、それぞれ共起要素を求める。これによって、図２４に示すように、各３２ビットのビット列から５４４ビットのビット列を得ることができる。最終的には、これらの４つのビット列を統合して、２１７６ビットの二値化された非線形変換特徴ベクトルが得られる。
【０１２９】
図２５は、本例の特徴量変換装置の構成を示すブロック図である。特徴量変換装置１０２は、Ｎ個の二値化器２１１〜２１Ｎと、二値化器と同数（Ｎ個）の共起要素生成器２２１〜２２Ｎと、特徴量統合器２３を備えている。これらの二値化器２１１〜２１Ｎ、共起要素生成器２２１〜２２Ｎ、及び特徴量統合器２３の一部又は全部は、コンピュータが特徴量変換プログラムを実行することによって実現されてよく、又はハードウェアによって実現されてもよい。
【０１３０】
本例では、特徴量変換装置１０２に実数の特徴ベクトルが入力される。特徴ベクトルは、Ｎ個の二値化器２１１〜２１Ｎにそれぞれ入力される。二値化器２１１〜２１Ｎは、それぞれ異なる閾値で実数の特徴ベクトルを二値化する。二値化された特徴ベクトルは、それぞれ対応する共起要素生成器２２１〜２２Ｎに入力される。
【０１３１】
共起要素生成器２２１〜２２Ｎは、それぞれ、第１の例で説明した特徴量変換装置１０１と同じ構成を有している。すなわち、各共起要素生成器２２１〜２２Ｎは、複数のビット再配列器１１１〜１１Ｎと、複数の論理演算器１２１〜１２Ｎと、特徴統合器１３を備え、キャリーなしローテートシフト及びＸＯＲ演算によって共起要素を算出し、それらと入力されたビット列とを統合する。
【０１３２】
各共起要素生成器２２１〜２２Ｎに３２ビットのビット列が入力されると、各共起要素生成器２２１〜２２Ｎからはそれぞれ５４４ビットのビット列が出力される。特徴統合器２３は、共起要素生成器２２１〜２２Ｎからの出力を並べて、それらを要素とする非線形変換特徴ベクトルを生成する。上述のように、入力される特徴ベクトルが３２次元であるとき、特徴統合器２１３で生成される特徴ベクトルは２１７６次元（２１７６ビット）となる。
【０１３３】
以上のように、本例の特徴量変換装置２０によれば、特徴量が実数ベクトルとして得られた場合にも、それを二値化するとともにその二値化ベクトルの情報量を多くすることができる。
【０１３４】
２−６．第２の実施の形態の変形例
第１の例の特徴量変換装置１０１及び第２の例の特徴量変換装置１０２は、多数の学習用データから認識モデルを決定する際に、学習用データとして入力される特徴ベクトルに対して上記の非線形変換を行って、非線形変換特徴ベクトルを取得する。この非線形変換特徴ベクトルが、学習装置によるＳＶＭ等による学習処理に用いられて、認識モデルが確定する。すなわち、特徴量変換装置１０１、１０２は、学習装置に用いられ得る。また、特徴量変換装置１０１、１０２は、認識モデルが確定した後に、認識を行うべきデータが学習用データと同様の形式の特徴ベクトルとして入力されたときにも、その特徴ベクトルに対して上記の非線形変換を行って非線形変換特徴ベクトルを取得する。この非線形変換特徴ベクトルが、認識装置による線形識別等に用いられて、認識結果が得られる。すなわち、特徴量変換装置１０１、１０２は、認識装置に用いられ得る。
【０１３５】
なお、論理演算器１２１〜１２Ｎでは、必ずしも論理演算としてＸＯＲを計算しなくてもよく、例えばＡＮＤやＯＲを計算してもよい。但し、上述のように、ＸＯＲはＦＩＮＤ特徴量を求める際の調和平均と等価であり、かつ、図１１の表から明らかなように、特徴ベクトルが任意である場合には、ＸＯＲの値として「＋１」と「−１」とが等確率で出現するため、共起要素のエントロピーが高くなり（情報量が多くなり）、非線形変換特徴ベクトルの記述能力が向上するので、論理演算器１２１〜１２ＮがＸＯＲを計算することは有利である。
【０１３６】
また、特徴量変換装置１０１及び共起要素生成器２２１〜２２Ｎは、特徴ベクトルの次元数ｄに対して、ｄ／２個のビット再配列器１１１〜１１Ｎを備えていたが、ビット再配列器の個数は、これより少なくてもよく（Ｎ＝１でもよく）、これより多くてもよい。また、論理演算器１２１〜１２Ｎの個数も、ｄ／２より少なくてもよく（Ｎ＝１でもよく）、ｄ／２より多くてもよい。
【０１３７】
また、ビット再配列器１１１〜１１Ｎは、それぞれもとの特徴ベクトルのビット列に対してキャリーなしローテートシフトをすることで新たなビット列を生成したが、各再配列器１１１〜１１Ｎは、例えばもとの特徴ベクトルのビット列をランダムに並び替えることで新たなビット列を生成してもよい。但し、シフトなしキャリーローテートは、最小のビット数ですべての組み合わせを網羅できるとともに、ロジックがシンプルで処理速度が速いという点で有利である。
【０１３８】
また、論理演算器１２１〜１２Ｎは、もとの特徴ベクトルのビット列とビット再配列器で再配列されたビット列との論理演算を行ったが、一部又はすべての論理演算器が、ビット再配列器で再配列されたビット列どうしの論理演算を行ってもよい。このとき、ビット再配列器で得られるビット列の次元数ともとの特徴ベクトルの次元数とが異なっていてもよい。また、二値化器２１１〜２１Ｎの入力と出力とで次元が異なっていてもよい。さらに、特徴統合器１３は、もとの特徴ベクトルの要素も用いて非線形変換特徴ベクトルを生成したが、もとの特徴ベクトルは用いなくてもよい。
【０１３９】
また、上記の第２の例では、各共起要素生成器２２１〜２２Ｎが第１の例の特徴量変換装置１０１と同様の構成を有し、すなわち複数のビット再配列器１１１〜１１Ｎ、複数の論理演算器１２１〜１２Ｎ、及び特徴統合器１３を備えていたが、各共起要素生成器２２１〜２２Ｎが、特徴統合器１３を備えずに、複数の論理演算器１２１〜１２Ｎから出力される複数の論理演算ビット列を直接特徴統合器２３に出力して、特徴統合器２３がこられを統合して非線形変換特徴ベクトルを生成してもよい。
【０１４０】
また、上記の第１及び第２の例では、画像の識別を行う例を説明したが、識別の対象は音声、文章等の他のデータであってもよい。また、認識処理は線形識別ではない他の認識処理であってもよい。
【０１４１】
また、上記の第１及び第２の例では、複数のビット再配列器１１１〜１１Ｎがそれぞれ再配列ビット列を生成することで複数の再配列ビット列を生成し、複数の論理演算器１２１〜１２Ｎがそれぞれ論理演算を行うことで、複数の再配列ビット列の各々ともとの特徴ベクトルのビット列とのＸＯＲを計算した。これらの複数のビット再配列器１１１〜１１Ｎ、複数の論理演算器１２１〜１２Ｎは、それぞれ本実施の形態のビット再配列部及び論理演算部に相当する。本実施の形態のビット再配列部及び論理演算部は、上記の例に限られず、例えば、ソフトウェアの処理によって複数の再配列ビットの生成及び複数の論理演算を行ってもよい。
【０１４２】
２−７．実施例
次に、本実施の形態の特徴量変換装置を用いた実施例を説明する。図２６は、比較例のプログラムコードであり、図２７は実施例のプログラムコードである。比較例は、３２次元の実数の要素を持つ特徴量をＦＩＮＤ特徴量に変換するプログラムである。実施例は、３２次元の二値化された要素を持つ特徴量に対して、第１の例の特徴量変換装置１０によって非線形変換を行うプログラムである。以下、説明の便宜を図るため、ｋは二値化の閾値の段階数である。
【０１４３】
比較例及び実施例のプログラムによって、同一の擬似データを変換した。その結果、比較例では、１ブロックあたりの計算時間は、７２１２．７１ナノ秒となった。これに対して、実施例で、同一の擬似データを変換した場合の１ブロックあたりの計算時間は、ｋ＝１のときに２２．０４ナノ秒（比較例の３２７．３２倍の速度）、ｋ＝２のときに３３．２０ナノ秒（比較例の２１７．２２倍の速度）、ｋ＝３のときに４２．１４ナノ秒（比較例の１７１．１７倍の速度）、ｋ＝４のときに５３．７６ナノ秒（比較例の１３４．１６倍の速度）となった。このように、実施例の非線形変換は、比較例と比較して十分に高速であった。
【０１４４】
図２８は、学習によって認識モデルを生成した後に認識装置にて認識を行ったときの誤検出と検出率との関係を示すグラフである。横軸は誤検出を示し、縦軸は検出率を示している。認識装置においては、誤検出が小さく、かつ検出率が高いことが望ましい。すなわち、図２８のグラフでは、左上の角に近いグラフほど認識性能が高い。
【０１４５】
図２８において、破線は、Ｄａｌａｌ氏のオリジナルの実装によるＨＯＧ特徴量をそのまま用いて学習及び認識を行った場合のグラフであり、一点鎖線は、Ｃパラメータを最適にチューニングして得られたＦＩＮＤ特徴量を用いて学習及び認識を行った場合のグラフであり、実線は、実施例を示しており、具体的には、ｋ＝４として本実施の形態の第２の例によって得られた非線形変換特徴ベクトルを用いて学習及び認識を行った場合のグラフである。
【０１４６】
図２８から明らかなように、ＦＩＮＤ特徴量及び実施例は、ＨＯＧ特徴量をそのまま用いた場合と比較して、認識性能が高い。実施例は、二値化をしているのでＦＩＮＤ特徴量よりも認識性能が劣るが、その劣化は僅かである。以上の結果から、本実施の形態によれば、ＦＩＮＤ特徴量と比較して、処理速度は格段に向上する一方で、認識性能はほとんど劣らないことが確認された。
【０１４７】
本実施の形態の更なる例を説明する。本例は、実数の特徴量をｋ種類の閾値で二値化した場合における識別器での認識をカスケード処理によって高速化する。実数の特徴量Ｘをｋ種類の閾値で二値化して得られるベクトルを、
【数１６】
2015230715.tif 000018
とおく。識別などの目的の場合には、下式のｗTｂを計算し、閾値Ｔｈと比較するという操作が行われる。ここで、ｗは識別のための重みベクトルである。
【数１７】
2015230715.tif 000019
【０１４８】
例えば、ｋ＝４で、ｂ1は２０％、ｂ2は４０％、ｂ3は６０％、ｂ4は８０％の位置で二値化されているものとする。このとき、明らかにｂ2及びｂ3は、ｂ1及びｂ4よりもエントロピーが高くなる。従って、ｗ2Tｂ2及びｗ3Tｂ3は、ｗ1Tｂ1及びｗ4Tｂ4よりも広い値の分布を持つことになる。
【０１４９】
これに着目し、本例では、ｗ2Tｂ2、ｗ3Tｂ3、ｗ1Tｂ1、ｗ4Tｂ4という順序で計算し、途中でｗTｂが所定の閾値Ｔｈよりも確実に大きくなる、もしくは小さくなると判断できる場合は、その時点で処理を打ち切る。これにより処理が高速化できる。すなわち、カスケードの順序は、ｗiTｂiの分布の広い順、もしくはエントロピーの値が高い順に並べる。
【０１５０】
３．第３の実施の形態
３−１．背景
特徴ベクトルを、各要素が−１及び１の二値のみを取るｄ次元の二値ベクトルに変換すれば、ＳＶＭ（サポートベクトルマシン）による識別処理や、ｋ−ｍｅａｎｓクラスタリングなど、さまざまな処理に、バイナリコードを適用できる。しかしながら、これらのケースではハミング距離による高速距離計算の恩恵を受けることができないことがある。すなわち、アルゴリズムによっては、バイナリコード変換による高速距離計算の恩恵を受けられないことがある。
【０１５１】
バイナリコード変換による高速距離計算の恩恵を受けられない例として、以下では、識別装置（Classifier）による認識（識別）処理およびｋ−ｍｅａｎｓクラスタリングを説明する。まず、識別装置による認識処理については、例えば、二値ベクトルｘ∈｛−１，１｝dを２クラスに識別する問題に対して、線形ＳＶＭ（線形サポートベクトルマシン）を適用することを考える。線形ＳＶＭでは以下の式（４）を評価する。
【数１８】
2015230715.tif 000020
識別装置は、評価関数ｆ（ｘ）が正ならば入力ベクトルｘはクラスＡに属し、評価関数（ｘ）が負ならば入力ベクトルｘはクラスＢに属するものとして識別する。 ｗは、重みパラメータであって、ｗ∈Ｒdである。ｂは、バイアスパラメータであって、ｂ∈Ｒ1である。パラメータｗ及びｂは、学習用に用意した特徴量を用いて学習処理により自動的に決定される辞書である。
【０１５２】
ここで、学習用に用意した特徴量が二値ベクトルであっても、ｗ∈Ｒdは二値にならず、実数値になってしまう。ｆ（ｘ）の計算にはｗTｘが含まれているが、ｘが二値である一方でｗが実数値のベクトルであるため、ｗTｘの計算には、浮動小数点演算が必要になってしまう。このように、ＳＶＭを適用する識別器による認識処理では、特徴ベクトルを二値ベクトルとすることによる計算高速化の恩恵を受けることができない。
【０１５３】
次に、二値ベクトルに対して、ｋ−ｍｅａｎｓクラスタリングを適用する場合、すなわち、ｄ次元の二値ベクトルがＮ個与えられたとき、互いに距離が近い二値ベクトルをまとめたｋ個のクラスタを求める問題を考える。ｋ−ｍｅａｎｓとは、次の手順によりｋ個のクラスタと代表ベクトルを算出するアルゴリズムである。
【０１５４】
ステップ１：Ｎ個の特徴量からｋ個をランダムに選出し、これをクラスタの代表ベクトルとする。
ステップ２：入力として与えられたＮ個の特徴量それぞれについて、最も距離が近い代表ベクトルを求める。
ステップ３：各代表ベクトルに所属する特徴量の平均を計算し、これを新しい代表ベクトルとする。
ステップ４：ステップ２、ステップ３を収束するまで繰り返す。
【０１５５】
ｋ−ｍｅａｎｓクラスタリングにおいて問題となるのは、ステップ３において、新しい代表ベクトルが二値ベクトルの平均で定義される点である。入力として与えられたデータが二値ベクトルであっても、平均の演算により、代表ベクトルは実数のベクトルになる。そのため、ステップ２における距離計算では、二値ベクトルと実数ベクトルとの間の距離を求めなければならなくなる。つまり、浮動小数点演算が必要になってしまう。このように、ｋ−ｍｅａｎｓクラスタリングにおいても、特徴ベクトルを二値ベクトルとすることによる計算高速化の恩恵を受けることができない。
【０１５６】
上記のように、識別装置（Classifier）による認識処理やｋ−ｍｅａｎｓクラスタリングでは、特徴ベクトルを二値ベクトルとすることによる計算高速化の恩恵を受けることができない。その理由は、いずれもｄ次元の二値ベクトルｐ∈｛−１，１｝dと、ｄ次元の実数ベクトルｑ∈Ｒdとの内積演算が必要であるという点にある。なお、ｋ−ｍｅａｎｓクラスタリングで必要なのは、ｄビットの二値ベクトルｐ∈｛−１，１｝dと、ｄ次元の実数ベクトルｑ∈Ｒdとの間の「距離」であるが、これも結局のところ、ｐTｑという内積の演算に帰着される。なぜなら、ｐとｑとの間のユークリッド距離の二乗は、下式で表現されるからである。
【数１９】
2015230715.tif 000021
【０１５７】
よって、識別装置による認識処理においてもｋ−ｍｅａｎｓクラスタリングにおいても、二値ベクトルとｄ次元の実数ベクトルとの内積の演算を高速化することこそが、問題の解決につながる。
【０１５８】
３−２．概要
そこで、本実施の形態の関連性判定装置は、特徴ベクトルがｄ次元の二値ベクトルｐ∈｛−１，１｝dである場合において、そのような特徴ベクトルとｄ次元の実数ベクトルｑ∈Ｒdとの間の内積（ｐTｑもしくはｑTｐ）の演算を高速に行うために、以下の構成を有する。
【０１５９】
本実施の形態の第一の態様の関連性判定装置は、二値化された特徴ベクトルを取得する特徴ベクトル取得部と、実数ベクトルを二値または三値の離散値のみから構成された要素を持つ複数の基底ベクトルの線形和に分解することで得られた前記複数の基底ベクトルを取得する基底ベクトル取得部と、前記特徴ベクトルと前記複数の基底ベクトルの各々との内積計算を順次行うことで、前記実数ベクトルと前記特徴ベクトルとの関連性を判定するベクトル演算部とを備えた構成を有している。
【０１６０】
前記特徴ベクトルと前記基底ベクトルとの内積計算は、−１及び１のみを要素としてもつ第１の二値ベクトルと−１及び１のみを要素としてもつ複数の第２の二値ベクトルとの内積計算を含んでいてよい。
【０１６１】
前記第１の二値ベクトルは、前記特徴ベクトルであってよく、前記特徴ベクトルの各要素を所定の係数で除したベクトルであってよく、その各要素を線形変換することで前記特徴ベクトルが得られるベクトルであってよい。
【０１６２】
前記第２の二値ベクトルは、前記基底ベクトルであってよく、前記基底ベクトルの各要素を所定の係数で除したベクトルであってよく、前記第２の二値ベクトルは、その各要素を線形変換することで前記基底ベクトルが得られるベクトルであってよい。
【０１６３】
前記特徴ベクトルと前記基底ベクトルとの内積計算は、−１及び１のみを要素としてもつ二値ベクトルと−１、０及び１のみを要素としてもつ複数の三値ベクトルとの内積計算を含んでいてよい。
【０１６４】
前記二値ベクトルは、前記特徴ベクトルであってよく、前記特徴ベクトルの各要素を所定の係数で除したベクトルであってもよく、その各要素を線形変換することで前記特徴ベクトルが得られるベクトルであってもよい。
【０１６５】
前記複数の三値ベクトルは、前記複数の基底ベクトルであってよく、前記複数の基底ベクトルの各要素を所定の係数で除したベクトルであってもよく、その各要素を線形変換することで前記複数の基底ベクトルが得られるベクトルであってもよい。
【０１６６】
前記ベクトル演算部は、前記第１の二値ベクトルと前記第２の二値ベクトルとの排他的論理和をとることで、前記第１の二値ベクトルと前記第２の二値ベクトルとの内積を計算してよい。
【０１６７】
前記ベクトル演算部は、前記二値ベクトルと前記三値ベクトルとの内積計算において、前記三値ベクトルの０の要素を−１又は１の任意のいずれかに置換して０置換ベクトルを生成し、前記三値ベクトルの０の要素を−１に置換し、かつ０以外の要素を１に置換してフィルタベクトルを生成し、前記二値ベクトルと前記０置換ベクトルとの排他的論理和と前記フィルタベクトルとの論理積をとることで、前記二値ベクトルと前記三値ベクトルとの間の非０で異なる要素の要素数Ｄfilterd＿hammingを求め、前記要素数Ｄfilterd＿hamming及び非０の要素数を前記二値ベクトルの要素数から引くことで、前記二値ベクトルと前記三値ベクトルとの間の非０で同一の要素の要素数を求め、前記二値ベクトルと前記三値ベクトルとの間の非０で同一の要素の要素数から前記二値ベクトルと前記三値ベクトルとの間の非０で異なる要素の要素数を引くことで、前記二値ベクトルと前記三値ベクトルとの内積を求めてよい。
【０１６８】
前記複数の基底ベクトルは、前記実数ベクトルと、前記複数の基底ベクトルの線形和との差分を分解誤差として、前記分解誤差が最小になるように、求められてよい。
【０１６９】
記複数の基底ベクトルは、前記実数ベクトルと前記特徴ベクトルとの内積と、前記複数の基底ベクトルの線形和と前記特徴ベクトルとの内積との差分を分解誤差として、前記分解誤差が最小になるように、求められてよい。
【０１７０】
前記複数の基底ベクトルは、前記複数の基底ベクトルの要素を固定して、前記分解誤差が最小になるように、前記複数の基底ベクトルに係る複数の係数を更新する第１の更新と、前記複数の係数を固定して、前記分解誤差が最小になるように前記基底ベクトルの要素を更新する第２の更新とを繰り返すことで、前記複数の係数とともに求められてよい。
【０１７１】
前記複数の基底ベクトルは、前記分解誤差の減少量が所定の値以下になるまで前記第１の更新と前記第２の更新を繰り返すことで求められてよい。
【０１７２】
前記複数の基底ベクトルは、前記複数の基底ベクトル及び前記複数の係数の初期値を変えて、複数とおりの前記複数の基底ベクトル及び前記複数の係数を求め、前記分解誤差が最小となる前記複数の基底ベクトル及び前記複数の係数を採用することで求められてよい。
【０１７３】
前記複数の基底ベクトルに係る複数の係数は離散値であってよい。
【０１７４】
前記複数の基底ベクトルは、前記実数ベクトルの要素の平均値を前記実数ベクトルの各要素から引いたオフセット実数ベクトルを前記基底ベクトルの線形和に分解することで求められてよい。
【０１７５】
前記ベクトル演算部は、前記特徴ベクトルと前記基底ベクトルとの前記内積計算を実行する度に、前記内積計算の結果の合計と、前記実数ベクトルと前記特徴ベクトルとが関連している場合に前記積算値がとり得る範囲を求め、前記合計が前記とり得る範囲外である場合に、前記内積計算を打ち切って、前記特徴ベクトルと前記基底ベクトルとの内積と所定の閾値との大小関係を判定してよい。
【０１７６】
前記ベクトル演算部は、前記特徴ベクトルと前記複数の基底ベクトルの各々との内積計算ごとに、当該基底ベクトルまでの前記内積計算の結果の合計が、最大側早期判定用閾値より大きい場合に、前記内積計算を打ち切って、前記実数ベクトルと前記特徴ベクトルとの内積が前記閾値より大きいと判定してよい。
【０１７７】
前記ベクトル演算部は、前記特徴ベクトルと前記複数の基底ベクトルの各々との内積がとり得る最小値を学習によって求めて、前記閾値から前記内積計算を行なっていない前記基底ベクトルと前記特徴ベクトルとの内積がとり得る値の最小値の合計を引いて、前記最大側早期判定用閾値を求めてよい。
【０１７８】
前記特徴ベクトルと前記複数の基底ベクトルの各々との内積がとり得る最小値は、前記特徴ベクトルと前記複数の基底ベクトルの各々との内積がとり得る値のうちの最小側の上位の所定の割合にある値であってよい。
【０１７９】
前記ベクトル演算部は、前記実数ベクトルと前記特徴ベクトルとの内積が前記閾値より大きいと判定したときに、前記特徴ベクトルと前記基底ベクトルとは関連していないと判定してよい。
【０１８０】
前記ベクトル演算部は、前記特徴ベクトルと前記複数の基底ベクトルの各々との内積計算ごとに、当該基底ベクトルまでの前記内積計算の結果の合計が、最小側早期判定用閾値より小さい場合に、前記内積計算を打ち切って、前記実数ベクトルと前記特徴ベクトルとの内積が前記閾値より小さいと判定してよい。
【０１８１】
前記ベクトル演算部は、前記特徴ベクトルと前記複数の基底ベクトルの各々との内積がとり得る最大値を学習によって求めて、前記閾値から前記内積計算を行なっていない前記基底ベクトルと前記特徴ベクトルとの内積がとり得る値の最大値の合計を引いて、前記最小側早期判定用閾値を求めてよい。
【０１８２】
前記特徴ベクトルと前記複数の基底ベクトルの各々との内積がとり得る最大値は、前記特徴ベクトルと前記複数の基底ベクトルの各々との内積がとり得る値のうちの最大側の上位の所定の割合にある値であってよい。
【０１８３】
前記最小側早期判定用閾値は、前記実数ベクトルと前記特徴ベクトルとが関連している場合にとり得る前記内積計算の結果の合計の最小値であってよい。
【０１８４】
前記ベクトル演算部は、前記実数ベクトルと前記特徴ベクトルとの内積が前記閾値より小さいと判定したときに、前記特徴ベクトルと前記基底ベクトルとは関連していないと判定してよい。
【０１８５】
前記ベクトル演算部は、係数の絶対値が大きい前記基底ベクトルから順に前記内積計算を行ってよい。
【０１８６】
記ベクトル演算部は、前記特徴ベクトルと、分解された前記実数ベクトルをそれぞれ複数の部分ベクトルに分解し、前記特徴ベクトルの分解ベクトルと分解された前記実数ベクトルの部分ベクトルとの内積が、前記閾値よりも大きくなるか否か、及び／又は前記閾値よりも小さくなるか否かを判断してよい。
【０１８７】
前記特徴ベクトルは、ＨＯＧ特徴量であり、前記実数ベクトルは、線形ＳＶＭの重みベクトルであり、前記ベクトル演算部は、前記関連性の判定として、線形ＳＶＭによって前記特徴ベクトルの識別を行なってよい。
【０１８８】
前記特徴ベクトルは、ｋ−ｍｅａｎｓクラスタリングによるクラスタリングの対象となるベクトルであり、前記実数ベクトルは、ｋ−ｍｅａｎｓクラスタリングにおける代表ベクトルであり、前記ベクトル演算部は、前記関連性の判定として、前記特徴ベクトルと前記代表ベクトルとの間の距離の演算を含むクラスタリング処理を行なってよい。
【０１８９】
前記特徴ベクトルは、ｋ−ｍｅａｎｓ  ｔｒｅｅによる近似最近傍探索の対象となるベクトルであり、前記実数ベクトルは、ｋ−分木のノードに登録されている代表ベクトルであり、前記ベクトル演算部は、前記関連性の判定として、前記特徴ベクトルと前記代表ベクトルとの間の距離の演算を含むクラスタリング処理を行なってよい。
【０１９０】
前記特徴ベクトルは、画像の特徴量を表すベクトルであってよい。
【０１９１】
本実施の形態の関連性判定プログラムは、コンピュータを、上記の関連性判定装置として機能させる構成を有している。
【０１９２】
本実施の形態の関連性判定方法は、二値化された特徴ベクトルを取得する特徴ベクトル取得ステップと、実数ベクトルを二値または三値の離散値のみから構成された要素を持つ複数の基底ベクトルの線形和に分解して得られた前記複数の基底ベクトルを取得する基底ベクトル取得ステップと、前記特徴ベクトルと前記複数の基底ベクトルの各々との内積計算を順次行うことで、前記実数ベクトルと前記特徴ベクトルとの関連性を判定するベクトル演算ステップとを含む構成を有している。
【０１９３】
３−３．効果
本実施の形態によれば、実数ベクトルは二値の基底ベクトルの線形和に分解されたうえで二値化された特徴ベクトルとの内積計算が行なわれるので、特徴ベクトルと実数ベクトルの内積計算を高速化できる。
【０１９４】
３−４．第３の実施の形態の第１の例
図２９は、本実施の形態の第１の例の特徴量演算装置１０３の構成を示すブロック図である。特徴量演算装置１０３は、コンテンツ取得部１３１と、特徴ベクトル生成部１３２と、特徴ベクトル二値化部１３３と、実数ベクトル取得部１３４と、実数ベクトル分解部１３５と、ベクトル演算部１３６と、データベース１３７とを備えている。
【０１９５】
本例の特徴量演算装置１０３は、後述するように、特徴ベクトルと辞書データとしてデータベースに保存された実数ベクトルとの内積演算を伴うベクトル演算によって、特徴ベクトルと実数ベクトルとの関連性を判定する関連性判定装置として機能する。すなわち、特徴演算装置１０３は、本実施の形態の関連性判定装置に相当する。
【０１９６】
関連性判定装置としての特徴量演算装置１０３は、コンピュータが本実施の形態の関連性判定プログラムを実行することにより実現される。関連性判定プログラムは、記録媒体に記録されて、記録媒体からコンピュータによって読み出されてもよいし、ネットワークを通じてコンピュータにダウンロードされてもよい。
【０１９７】
コンテンツ取得部１３１は、画像データ、音声データ、文字データ等のコンテンツデータを取得する。これらのコンテンツデータは、外部機器から与えられるものであってもよく、コンテンツ取得部１３１で生成されるものであってもよい。例えば、コンテンツ取得部１３１がカメラであり、そこでコンテンツデータとして画像データが生成されてよい。
【０１９８】
特徴ベクトル生成部１３２は、コンテンツ取得部１３１にて取得されたコンテンツデータからＤ次元の特徴ベクトルを生成する。例えばコンテンツが画像である場合には、特徴ベクトル生成部１３２は、画像の特徴量を抽出する。特徴ベクトル二値化部１３３は、特徴ベクトル生成部１３２で生成されたＤ次元の特徴ベクトルを二値化して、各要素が−１及び１の二値のみをとるｄ次元の二値ベクトルｐ∈｛−１，１｝dを生成する。
【０１９９】
なお、コンテンツ取得部１３１、特徴ベクトル生成部１３２、及び特徴ベクトル二値化部１３３からなる構成は、最終的に二値化された特徴ベクトルを取得できる構成であればよく、例えば、コンテンツ取得部１３１及び特徴ベクトル１３２を備えずに、特徴ベクトル二値化部１３３が外部機器から特徴ベクトルを取得して、その取得した特徴ベクトルを二値化する構成であってよいし、また、外部機器から二値化された特徴ベクトルを直接取得する構成であってもよい。
【０２００】
実数ベクトル取得部１３４は、ｄ次元の実数ベクトルｑ∈Ｒdを取得する。実数ベクトルは、外部機器から与えられるものであってもよく、特徴量演算装置１０３の図示しない記憶装置から読み出されるものであってもよく、実数ベクトル取得部１３４で生成されるものであってもよい。実数ベクトルは、その要素に浮動小数を含む実数を持つ。
【０２０１】
実数ベクトル分解部１３５は、ｄ次元の実数ベクトルｑ∈Ｒdを、二値の基底ベクトルｍi∈｛−１，１｝dの線形和に分解する。具体的には、実数ベクトル分解部１３５は、ｄ次元の実数ベクトルｑ∈Ｒdを、下式（５）によって、二値の要素を持つ基底行列Ｍと実数の要素を持つ係数ベクトルｃに分解する。
【数２０】
2015230715.tif 000022
ここで、Ｍ＝（ｍ1，ｍ2，…，ｍk）∈｛−１，１｝dxkであり、ｃ＝（ｃ1，ｃ2，…，ｃk）T∈Ｒkである。すなわち、基底行列Ｍは、ｋ個の基底ベクトルｍiからなり、ここで、基底ベクトルｍiは、要素が−１及び１のみをとるｄ次元の二値ベクトルであり、従って、基底行列Ｍは、要素が−１及び１のみをとるｄ行ｋ列の二値行列である。また、係数ベクトルｃは、ｋ個の基底ベクトルに係る実数の係数を要素として持つｋ次元の実数ベクトルである。もちろん、ｑとＭｃはなるべく一致するように分解することが好ましいが、誤差を含んでもよい。
【０２０２】
３−４−１．第１の分解手法
実数ベクトル分解部１３５は、誤差最少化によって実数ベクトルを分解する。第１の分解手法の手順は、以下のとおりである。
（１）基底行列Ｍ及び係数ベクトルｃをランダムに初期化する。
（２）基底行列Ｍを固定して、分解の誤差
【数２１】
2015230715.tif 000023
が最小になるように係数ベクトルｃを更新する。これは、最小二乗法により求めることができる。
（３）係数ベクトルｃを固定して、分解の誤差
【数２２】
2015230715.tif 000024
が最小になるように基底行列Ｍを更新する。この最小化アルゴリズムについては、後に詳しく述べる。
（４）収束するまで（２）及び（３）を繰り返す。例えば、
【数２３】
2015230715.tif 000025
の減少量が一定値以下になったとき、収束したと判定する。
（５）ステップ（１）〜ステップ（４）により得た解を候補として保持する。
（６）ステップ（１）〜ステップ（５）を繰り返し、最も
【数２４】
2015230715.tif 000026
を小さくできた候補基底行列Ｍ及びｃを最終結果として採用する。なお、このステップ（１）〜ステップ（５）の繰り返しはなくてもよいが、複数回繰り返すことで、初期値依存の問題を回避できる。
【０２０３】
次に、ステップ（３）における基底行列Ｍの更新処理を説明する。図３０は、式（５）を図式化したものである。図３０の破線枠で囲ったように、基底行列Ｍのｉ行目の行ベクトルの要素は、実数ベクトルｑのｉ番目の要素のみに依存する。基底行列Ｍのｉ行目の行ベクトルは、本例のように二値分解の場合は２k通りしか存在しない（なお、後述の第２の例の三値分解の場合にも３k通りしか存在しない）。よって、実数ベクトル分解部１０５は、これらをすべて網羅的にチェックし、分解誤差
【数２５】
2015230715.tif 000027
を最小化する行ベクトルを採用する。これを基底行列Ｍのすべての行ベクトルに対して適用して、基底行列Ｍの要素を更新する。
【０２０４】
３−４−２．第２の分解手法
次に、第２の分解手法を説明する。第１の分解手法では、分解誤差を
【数２６】
2015230715.tif 000028
として定義し、この分解誤差を最小化することを考えた。しかしながら、実数ベクトルを基底ベクトルの線形和に近似した後に実際に近似をしたいのは、特徴ベクトルと実数ベクトルの内積ｐTｑである。
【０２０５】
そこで、第２の分解手法では、特徴ベクトルｐをあらかじめＮ個集め、これをまとめたものをＰ∈ＲdxNとする。そして、分解誤差を
【数２７】
2015230715.tif 000029
と定義して、これを最小化する。こうすることで、実数ベクトルは、実際のデータの分布に従って分解されることになるため、内積の近似精度が向上する。
【０２０６】
この近似分解は、ｍiを逐次的に求めることで行うことができる。第２の分解手法の手順は以下のとおりである。
（１）ｒにｑを代入する（ｒ←ｑ）
（２）ｉに１を代入する（ｉ←１）
（３）第１の分解手法によって
【数２８】
2015230715.tif 000030
を最小化してｍi、ｃiを得る。
【０２０７】
（４）ステップ（３）で得られたｍi、ｃiを初期値として、次の手順で
【数２９】
2015230715.tif 000031
を最小化する。
（４−１）ｍiを固定して、
【数３０】
2015230715.tif 000032
が最小になるように、ｃiを更新する。これは、最小二乗法により求めることができる。
（４−２）ｃiを固定して、
【数３１】
2015230715.tif 000033
が最小になるように、ｍiを更新する。ｍiが離散値であるため、これは組合最適化問題となり、例えば、グリーディアルゴリズム（Greedy algorithm）、タブ−サーチ（tabu search）、シミュレイテッドアニーリング（simulated annealing）等のアルゴリズムを用いて最小化を行うことができる。ステップ（３）でよい初期値が得られているので、これらのアルゴリズムでも良好に分解誤差を最小化できる。
（４−３）収束するまで（４−１）及び（４−２）を繰り返す。例えば、
【数３２】
2015230715.tif 000034
の減少量が一定値以下になったときに、収束したと判定する。
【０２０８】
（５）ｒにｒ−ｍiｃiを代入し（ｒ←ｒ−ｍiｃi）、ｉにｉ＋１を代入し（ｉ←ｉ＋１）、ｉ≦ｋであればステップ（３）に戻り、ｉ＞ｋであればステップ（６）に進む。
（６）ステップ（１）〜（６）により得た解Ｍ、ｃを候補として保持する。
（７）ステップ（１）〜（６）を繰り返し、最も
【数３３】
2015230715.tif 000035
を小さくできた候補Ｍ、ｃを最終結果として採用する。なお、ステップ（７）の繰り返しはなくてもよいが、複数回繰り返すことで、初期値依存の問題を軽減できる。
【０２０９】
なお、上記の第１及び第２の分解手法は、かならずしも基底行列Ｍが二値（又は第２の例の三値）でなくともよく、基底行列Ｍのとり得る要素の種類が有限の数であれば適用可能である。また、係数ベクトルｃも、基底行列Ｍと同様にあらかじめ定められた離散的な値でもよい。たとえば、２のべき乗に制約してもよく、そうすることで、処理を高速化できる。また、分解する実数ベクトルｑの要素の平均値が著しく大きい（若しくは小さい）場合、すなわち、平均値が０から著しく離れている場合には、この平均値をあらかじめ実数ベクトルｑの各要素から引いてオフセット実数ベクトルを生成し、このオフセット実数ベクトルを基底行列Ｍと係数ベクトルｃに分解すると、より少ない基底で式（５）の近似分解を行うことができる。
【０２１０】
ベクトル演算部１３６は、特徴ベクトルを用いた演算を行なう。演算の具体的内容については、後述にて、本例の特徴量演算装置１０３の応用例とともに具体的に説明する。この特徴ベクトルを用いた演算には、二値化された特徴ベクトルｐ∈｛−１，１｝dと実数ベクトル分解部１３５にて二値ベクトルの線形和に分解された実数ベクトルｑとの内積ｐTｑの計算が含まれる。以下では、まず、この内積ｐTｑの計算について説明する。
【０２１１】
内積ｐTｑは、下式（６）のように式変形できる。
【数３４】
2015230715.tif 000036
ここで、ｐTｍiは二値ベクトル同士の内積である。この二値ベクトル同士の内積ｐTｍiは、極めて高速に計算可能である。その理由は以下のとおりである。
【０２１２】
二値ベクトル同士の内積は、ハミング距離の演算に帰着できる。ハミング距離とは、２つのバイナリコードにおいて、値が異なるビットを数えたものであり、２つの二値ベクトルの間のハミング距離は、すなわち値が異なる要素数を数えたものである。ここで、ｐとｍiのハミング距離をＤhamming（ｐ，ｍi）と記述すると、内積ｐTｍiは、Ｄhamming（ｐ，ｍi）と下式（７）の関係がある。
【数３５】
2015230715.tif 000037
ここで、前述のとおり、ｄはバイナリコードのビット数である。
【０２１３】
ハミング距離の演算は、２つのバイナリコードにおいて、ＸＯＲを適用した後に、１が立っているビットを数えることで計算できるので、極めて高速である。二値ベクトルがバイナリコード（０と１のビット列）で表現されているのであれば、ハミング距離は、下式（８）で計算できる。
【数３６】
2015230715.tif 000038
ここで、ＸＯＲ関数はｐとｍiをバイナリコード表現で考えたときに排他的論理和を取る操作であり、ＢＩＴＣＯＵＮＴ関数はバイナリコードの１が立っているビット数を数えあげる処理のことである。
【０２１４】
以上をまとめると、内積ｐTｑは下式（９）のように変形できる。
【数３７】
2015230715.tif 000039
すなわち、ｄビットのハミング距離計算をｋ回行い、ｋ個のハミング距離について、係数ベクトルｃに関する重み付け和を計算し、定数項を足したものがｐTｑになる。よって、ｋが十分小さければ、ｐTｑを浮動小数点精度で計算するよりも、はるかに高速に計算できるようになる。
【０２１５】
なお、上記の内積計算において、二値化された特徴ベクトルｐは、「第１の二値ベクトル」に相当し、基底ベクトルｍiは、「第２の二値ベクトル」に相当する。
【０２１６】
データベース１３７には、実数ベクトル分解部１３５にて分解された複数の実数ベクトル、すなわち複数の基底ベクトルの線形和が辞書データとして記憶されている。ベクトル演算部１３６は、データベース１３７から基底ベクトルの線形和を読み出して、上記の演算を行う。このデータベース１３７は、「基底ベクトル取得部」に相当する。
【０２１７】
以上のように、本例の特徴量演算装置１０３によれば、特徴ベクトルを用いた演算処理に特徴ベクトルと他の実数ベクトルとの内積演算が含まれている場合にも、特徴ベクトルを二値化したうえで、実数ベクトルについても二値ベクトルの線形和に分解するので、それらの内積演算を高速化できる。
【０２１８】
３−５．第３の実施の形態の第１の例の拡張
上記の第１の例では、二値ベクトルｐ、ｍiを、それぞれ、ｐ∈｛−１，１｝d、ｍi∈｛−１，１｝dと定義して、実数ベクトルを二値ベクトルの線形和に分解することで内積演算ｐTｍiが高速になることを説明した。しかしながら、ｐ、ｍiをより一般的な二値ベクトルｐ´∈｛−ａ，ａ｝d、ｍi´∈｛−ａ，ａ｝dとしても、それらの高速な内積演算が可能である。この場合、ｐ´Tｍi´＝ａ2（ｐTｍi）であることから、−１及び１により定義される二値ベクトル同士の内積にａ2を掛ければよい。なお、この場合には、特徴ベクトルｐ´を係数ａで除して得られる二値ベクトルｐが「第１の二値ベクトル」に相当し、基底ベクトルｍi´を係数ａで除して得られる二値ベクトルｍiが「第２の二値ベクトル」に相当する。
【０２１９】
さらに、特徴ベクトル及び基底ベクトルを任意の二値ベクトルｐ´´∈｛α，β｝d、ｍi´´∈｛γ，δ｝dとしても、高速な内積演算が可能である。ここで、係数α、β、γ、δは実数であり、α≠β、γ≠δである。この場合、ｐ´´およびｍi´´は、−１及び１により定義される二値ベクトルｐ及びｍiの各要素に線形変換を施すことで得られ、下式（１０）及び（１１）のように展開される。
【数３８】
2015230715.tif 000040
【数３９】
2015230715.tif 000041
なお、式（１０）及び（１１）中の太字の「１」は、長さがｄですべての要素が１であるベクトルである。また、式（１０）及び（１１）中のＡ、Ｂ、Ｃ、Ｄは実数であり、式（１０）及び（１１）が成立するようにあらかじめ計算しておけばよい。
【０２２０】
内積ｐ´´Tｍi´´は、下式（１２）のように展開できる。
【数４０】
2015230715.tif 000042
式（１２）の括弧内の計算は、−１及び１からなる二値ベクトル同士の内積である。従って、特徴ベクトルが任意の二値の要素をもつ二値ベクトルにされ、かつ、実数ベクトルを任意の二値の要素を持つ二値ベクトルの線形和に展開した場合にも、高速演算が可能である。なお、この場合には、各要素を線形変換することで特徴ベクトルｐ´´が得られる上記の二値ベクトルｐが「第１の二値ベクトル」に相当し、各要素を線形変換することで基底ベクトルｍi´´が得られる上記の二値ベクトルｍiが「第２の二値ベクトル」に相当する。
【０２２１】
３−６．第３の実施の形態の第２の例
次に、第２の例の特徴量演算装置を説明する。第２の例の特徴量演算装置の構成は、図２９に示した第１の例のそれと同じである。第１の例では、実数ベクトル分解部１３５は、実数ベクトルを式（５）によって二値ベクトルの線形和に分解したが、本例の特徴量演算装置の実数ベクトル分解部１３５は、実数ベクトルを三値ベクトルの線形和に分解する。
【０２２２】
実数ベクトル分解部１３５は、ｄ次元の実数ベクトルｑ∈Ｒdを、三値ベクトルの線形和に分解する。具体的には、実数ベクトル分解部１３５は、ｄ次元の実数ベクトルｑ∈Ｒdを、下式（１３）によって、三値の要素を持つ基底行列Ｍと実数の要素を持つ係数ベクトルｃに分解する。
【数４１】
2015230715.tif 000043
ここで、Ｍ＝（ｍ1，ｍ2，…，ｍk）∈｛−１，０，１｝dxkであり、ｃ＝（ｃ1，ｃ2，…，ｃk）T∈Ｒkである。すなわち、基底行列Ｍは、ｋ個の基底ベクトルｍiからなり、ここで、基底ベクトルｍiは、要素が−１、０、及び１のみをとるｄ次元の三値ベクトルであり、従って、基底行列Ｍは、要素が−１、０、及び１のみをとるｄ行ｋ列の三値行列である。また、係数ベクトルｃは、ｋ個の基底ベクトルに係る実数の係数を要素として持つｋ次元の実数ベクトルである。もちろん、ｑとＭｃはなるべく一致するように分解することが好ましいが、誤差を含んでもよい。実数ベクトル分解部１３５は、第１の例と同様にして、誤差最小化によって実数ベクトルを分解する。
【０２２３】
ベクトル演算部１３６は、内積ｐTｑを計算する。以下では、内積ｐTｑを計算するベクトル演算部１３６を特に、内積演算部１３６とも呼ぶ。内積ｐTｑは、下式（１４）のように式変形できる。
【数４２】
2015230715.tif 000044
ここで、ｐTｍiは、二値ベクトルｐと三値ベクトルｍiとの内積である。内積演算部１０６は、ここで、三値ベクトルｍiの代わりに、以下に定義する０置換ベクトルｍibin、フィルタベクトルｍifilter、及び０要素数ｚiを用いる。
【０２２４】
まず、内積演算部１３６は、ｍiの０の要素を、−１又１に置き換える。ｍiの各要素について、それを−１に置き換えるか、１に置き換えるかは、いずれでもよい。この置き換えによって、０置換ベクトルｍibin∈｛−１，１｝dが生成される。この０置換ベクトルｍibin∈｛−１，１｝dは二値ベクトルである。
【０２２５】
また、内積演算部１３６は、ｍiの０の要素を−１に置き換え、０以外の要素を１に置き換える。この置き換えによって、フィルタベクトルｍifilter∈｛−１，１｝dが生成される。このフィルタベクトルｍifilterも二値ベクトルである。
【０２２６】
さらに、内積演算部１３６は、ｍiの０の要素数ｚiを求める。ｚiは整数となる。内積演算部１３６は、これらの二値ベクトルｍibin、フィルタベクトルｍifilter、及び０要素数ｚiを用いて、式（１４）におけるｐTｍiを、下の式（１５）及び式（１６）によって計算する。
【数４３】
2015230715.tif 000045
【数４４】
2015230715.tif 000046
ここで、式（１５）のＡＮＤ関数は、二値ベクトルをバイナリコード表現で考えたときに、論理積を取る操作である。
【０２２７】
以下、図３１を参照して、具体例を用いて、式（１５）及び（１６）の導出を説明する。図３１は、本例の計算例を示す図である。図３１の例では、ｐ＝｛−１，１，−１，１，−１，１｝であり、ｍi＝｛−１，０，１，０，１，１｝である。この例では、ｍibin＝｛−１，＊，１，＊，１，１｝となる。ここで、「＊」は−１又は１の任意のいずれかを示す。また、ｍifilter＝｛１，−１，１，−１，１，１｝となり、ｚi＝２となる。
【０２２８】
式（１５）におけるｐとｍibinとの排他的論理和は、ＸＯＲ（ｐ，ｍibin）＝｛−１，＊，１，＊，１，−１｝となり、すなわち、ｐとｍiの要素のうち、非０で異なっている要素すなわち−１と１又は１と−１の組となる要素が１となり、−１と−１又は１と１の組となる要素が−１となる。
【０２２９】
次に、その排他的論理和とｍifilterとの論理積は、ＡＮＤ（ＸＯＲ（ｐ，ｍibin），ｍifilter））＝｛−１，−１，１，−１，１，−１｝となり、ｐとｍiの要素のうち、非０で異なっている要素に１が立ち、それ以外は−１となる。このビットカウントを取ると、１である要素の個数、すなわち非０で異なっている要素の個数が数え上げられ、Ｄfilterd＿hamming（ｐ，ｍibin，ｍifilter）＝２となる。
【０２３０】
ここで、ｐとｍiの要素のうち、１と１又は−１と−１の組となる要素の個数は、全要素数ｄ＝６から、非０で異なっている要素の個数Ｄfilterd＿hamming＝２と０である要素の個数ｚi＝２を引くことで求められる。すなわち、１と１又は−１と−１の組となる要素の数＝ｄ−Ｄfilterd＿hamming−ｚi＝６−２−２＝２となる。
【０２３１】
ｐとｍiは、１と１又は−１と−１の組となる要素（積が１になる要素の組）の個数から、−１と１又は１と−１との組となる要素（積が−１になる要素の組）の個数を引いた値と等しいため、ｐTｍi＝（ｄ−Ｄfilterd＿hamming−ｚi）−Ｄfilterd＿hamming＝ｄ−ｚi−２Ｄfilterd＿hammingとなり、式（１６）が得られ、その値は、６−２−２×２＝０となる。なお、この結果は、当然ながら、ｐTｍi＝｛−１，１，−１，１，−１，１｝×｛−１，０，１，０，１，１｝＝１＋０＋（−１）＋０＋（−１）＋１＝０と一致する。
【０２３２】
式（１５）〜（１６）をまとめると、内積ｐTｑは、下式（１７）のように変形できる。
【数４５】
2015230715.tif 000047
内積演算部１０６は、この式（１７）によって、内積ｐTｑを計算する。
【０２３３】
関数Ｄfilterd＿hamming（ｐ，ｍibin，ｍifilter）は、ハミング距離演算と非常に似ており、ＡＮＤ演算が加わっただけである。したがって、ｑ∈Ｒdを、三値ベクトルの線形和に分解した場合でも、ｐTｑを浮動小数点精度で計算するよりも、はるかに高速にｐTｑを計算できるようになる。
【０２３４】
以上のように、ｄ次元の実数ベクトルｑ∈Ｒdを、二値ではなく三値ベクトルの線形和に分解することの利点は、式（１３）の近似が、より少ない数のベクトルの線形和でも成立するようになることにある。すなわち、ｋの値を小さく抑えられることになるため、さらなる高速化につながる。
【０２３５】
３−７．第３の実施の形態の第２の例の拡張
上記の第２の例では、二値ベクトルｐ及び三値ベクトルｍiを、それぞれ、ｐ∈｛−１，１｝d、ｍi∈｛−１，０，１｝dと定義して、実数ベクトルを三値ベクトルの線形和に分解することで内積演算ｐTｍiが高速になることを説明した。しかしながら、ｐ、ｍiをより一般的な二値ベクトルｐ´∈｛−ａ，ａ｝d、三値ベクトルｍi∈｛−ａ，０，ａ｝dとしても、それらの高速な内積演算が可能である。この場合、ｐ´Tｍi´＝ａ2（ｐTｍi）であることから、−１及び１により定義される二値ベクトル同士の内積にａ2を掛ければよい。
【０２３６】
さらに、二値ベクトルｐ及び三値ベクトルｍiをｐ∈｛α，β｝d、ｍi∈｛γ−δ，γ，γ＋δ｝dと一般化しても、高速な内積演算が可能である。ここで、α、β、γ、δは実数であり、α≠β、δ≠０である。この場合、ｐ及びｍiの各要素に下式（１８）及び（１９）の線形変換を施すことで、それぞれｐ´´およびｍi´´が得られる。
【数４６】
2015230715.tif 000048
【数４７】
2015230715.tif 000049
なお、式（１８）及び（１９）中の太字の「１」は、長さがｄですべての要素が１であるベクトルである。また、式（１８）及び（１９）中のＡ、Ｂ、Ｃ、Ｄは実数であり、式（１８）及び（１９）が成立するようにあらかじめ計算しておく。
【０２３７】
内積ｐ´´Tｍi´´は、下式（２０）のように展開できる。
【数４８】
2015230715.tif 000050
式（２０）の括弧内の計算は、−１及び１からなる二値ベクトル同士の内積、又は−１及び１からなる二値ベクトルと−１、０、１からなる三値ベクトルとの内積である。従って、特徴ベクトルが任意の二値ベクトルにされ、かつ、実数ベクトルを上記のとおり一般化した三値ベクトルの線形和に展開した場合にも、高速演算が可能である。
【０２３８】
３−８．第３の実施の形態の第３の例
第１及び第２の例では、ベクトル演算部１３６における演算処理において行なわれる特徴ベクトルｐと実数ベクトルｑとの内積演算について説明した。特徴ベクトルｐと実数ベクトルｑとの内積演算を伴う演算処理については、後述にて応用例として説明するが、演算処理として、内積ｐTｑがある閾値Ｔと比較されることがある。例えば、特徴ベクトルの識別を行なう場合には、内積ｐTｑがある閾値Ｔと比較される。
【０２３９】
第１の例及び第２の例において、内積ｐTｑは、式（６）（実数ベクトルｑを二値ベクトルの線形和に分解する場合）及び式（１４）（実数ベクトルｑを三値ベクトルの線形和に分解する場合）に示すように、下式（２１）で表される。
【数４９】
2015230715.tif 000051
この点に着目して、ベクトル演算部１３６は、特徴ベクトルを用いた演算に、内積ｐTｑと閾値との比較の処理（閾値処理）が含まれる場合には、閾値処理をｋ段階に分けること（カスケード）により、閾値処理を高速化できる。
【０２４０】
３−８−１．第１のカスケード
以下、第１のカスケードによる閾値処理の高速化をする。以下の例では、閾値をＴとして、ｐTｑ＞Ｔを判定する。図３２は、ベクトル演算部１３６おけるカスケードによる閾値処理の高速化のフロー図である。ベクトル演算部１３６は、まずｉ＝１、ｙ＝０とする（ステップＳ１１）。次に、ｙをｙ＋ｃi（ｐTｍi）に更新する（ステップＳ１２）。次に、ｙがＴiminより大きいか否かを判断する（ステップＳ１３）。なお、Ｔiminは、ｐTｑ＜Ｔを早期に判定するための最小側早期判定閾値であり、その決定方法については、後述する。ｙがＴiminより小さい場合には（ステップＳ１３にてＹＥＳ）、ｐTｑ＜Ｔであると判定して（ステップＳ１４）、そこで特徴ベクトルｐと実数ベクトルｑとの内積演算を打ち切って、処理を終了する。
【０２４１】
ｙがＴimin以上である場合は（ステップＳ１３にてＮＯ）、次にｙがＴimaxより大きいか否かを判断する（ステップＳ１５）。なお、Ｔimaxは、ｐTｑ＞Ｔを早期に判定するための最大側早期判定閾値であり、その決定方法については、後述する。ｙがＴimaxより大きい場合には（ステップＳ１５にてＹＥＳ）、ｐTｑ＞Ｔであると判定して（ステップＳ１６）、そこで特徴ベクトルｐと実数ベクトルｑとの内積演算を打ち切って、処理を終了する。
【０２４２】
ｙがＴimax以下である場合には（ステップＳ１５にてＮＯ）、ｉ＝ｋであるか否か、すなわち、まだ計算していない基底ｍiがあるか否かを判断する（ステップＳ１７）、ｉ＝ｋでない場合には（ステップＳ１７にてＮＯ）、ｉをインクリメントして（ステップＳ１８）、ステップＳ１２に戻る。ｉ＝ｋである場合、すなわちすべての基底ｍiを計算している場合には（ステップＳ１７にてＹＥＳ）、ステップＳ１４に移行して、ｐTｑ＜Ｔであると判断して処理を終了する。
【０２４３】
以上のように、二値ベクトルｐと実数ベクトルｑとの内積を計算する際に、実数ベクトルｑを二値ベクトル又は三値ベクトルの線形和に分解することで、閾値処理をｋ段階に分けることができ、それによって、ｐTｑ＜Ｔが明らかに成立する場合、及びｐTｑ＞Ｔが明らかに成立する場合は、そのような閾値処理の結果を早期に得ることができる。これによって、二値ベクトルｐと実数ベクトルｑの内積演算をｋ回より少ない回数に抑えることができる。
【０２４４】
なお、判定結果は、カスケードを採用しない（非カスケード）場合と完全に一致はしないが、Ｔimin及びＴimaxを適切に選択することで、判定結果を非カスケードの場合と限りなく一致させることができる。
【０２４５】
なお、ｃiを大きさによって並べ替えることで、早期判定の効果を高めることができる。また、ｃiの大きさに差がつくように分解することで、早期判定の効果を高めることができる。
【０２４６】
次に、最小側早期判定用閾値Ｔimin及び最大側早期判定用閾値Ｔimaxの決定方法について説明する。カスケード一段目における最小側早期判定用閾値Ｔ1min及び最大側早期判定用閾値Ｔ1maxを決定することを考えると、ｃi（ｐTｍi）（ｉ＝２，３，…，ｋ）が未知の状態で、安全に判定できる閾値を決めなければならない。そこで、あらかじめｃi（ｐTｍi）のとり得る最大値Ｐimax及び最小値Ｐiminを求めておく。これは、事前に学習用に準備した複数のデータから抽出した二値の特徴量ｐをｃi（ｐTｍi）に代入することで得られる。
【０２４７】
最小側早期判定用閾値Ｔiminは、次のようにして決定できる。
【数５０】
2015230715.tif 000052
すなわち、
【数５１】
2015230715.tif 000053
が成立するのであれば、カスケードの二段目以降は、どのような大きな値が入ってきたとしてもｐTｑ＜Ｔが成立するので、この時点で必ずｐTｑ＜Ｔが成立するといえる。従って、下式（２２）によってＴiminを求めることができる。
【数５２】
2015230715.tif 000054
二段目以降のＴiminについても、同じ要領で決定することができる。
【０２４８】
最大側早期判定用閾値Ｔimaxは、次のようにして決定できる。
【数５３】
2015230715.tif 000055
すなわち、
【数５４】
2015230715.tif 000056
が成立するのであれば、カスケードの二段目以降は、どのような小さな値が入ってきたとしてもｐTｑ＞Ｔが成立するので、この時点で必ずｐTｑ＞Ｔが成立するといえる。従って、下式（２３）によってＴimaxを求めることができる。
【数５５】
2015230715.tif 000057
二段目以降のＴimaxについても、同じ要領で決定することができる。なお、上記説明から明らかなように、Ｔkmin及びＴimaxはＴである。
【０２４９】
なお、式（２３）において、Ｐiminは最小でなくても、十分小さい上位数％内の値として選択してもよい。また、式（２２）においても、Ｐimaxは最大でなくても、十分に大きい上位数％の値として選択してもよい。
【０２５０】
３−８−２．第２のカスケード
第２のカスケードでは、実数ベクトルを複数のサブベクトルに分解することでより深いカスケードを実施し、これにより、閾値との比較処理をより高速化する。すなわち、第１のカスケードでは、
【数５６】
2015230715.tif 000058
であることに着目して、閾値処理をｋ段階に分けた。第２のカスケードでは、これを以下のように拡張する。
【０２５１】
まず、下式（２４）のように、ｑ∈Ｒdをｍ個の部分ベクトルに分解する。
【数５７】
2015230715.tif 000059
同様に、下式（２５）のように、ｐ∈｛１，１｝dをｍ個の部分ベクトルに分解する。
【数５８】
2015230715.tif 000060
ここで、ｑiとｐiの次元数は同じであるものとする。
【０２５２】
このとき、内積ｐTｑは、下式（２６）のように書ける。
【数５９】
2015230715.tif 000061
ｍ個のそれぞれの内積ｐiTｑiは、二値ベクトルと実数ベクトルの内積であるため、これらもまた、それぞれ二値／三値分解法を適用可能である。例えば、内積ｐiTｑiをそれぞれｋ個に分解するのであれば、ｐTｑは、ｍｋ段階のカスケード処理に分解できる。これによりカスケードの段階数が増加し、早期判定の効果を向上できる。なお、第２のカスケードにおいても、カスケード処理の順序は、係数の絶対値順、又は誤識別が少なくなるような順序に選ぶことで、早期判定の効果をより向上できる。
【０２５３】
なお、上記の第３の例では、ｐTｑ＞Ｔを判断するために、基底ごとに、明らかにｐTｑ＜Ｔが成立する（すなわち明らかにｐTｑ＞Ｔが成立しない）か否か、及び明らかにｐTｑ＞Ｔが成立するか否かを判断したが、このいずれか一方のみを判断してもよい。
【０２５４】
次に、ベクトル演算部１３６における演算処理について説明する。上記の第１及び第２の例のベクトル演算部１３６は、二値化された特徴ベクトルｐと実数ベクトルｑの内積計算を伴うものであるが、そのような演算処理は種々ある。すなわち、本実施の形態の上記の例は、特徴ベクトルを用いて演算処理を行なう種々の装置に応用できる。なお、上記の第３の例は、上述のとおり、特に特徴ベクトルを閾値と比較する処理を伴う演算処理を行なう種々の装置に応用できる。そこで、以下、本実施の形態の応用例を説明する。
【０２５５】
３−９．第３の実施の形態の第１の応用例
本応用例では、本実施の形態がＨＯＧによる物体認識に応用される。図３３は、物体認識装置の構成を示すブロック図である。物体認識装置１０４は、ＨＯＧによる物体認識を行なう。物体認識装置１０４は、ピラミッド画像生成部１４１と、ＨＯＧ特徴量抽出部１４２と、バイナリコード変換部１４３と、パラメータ決定部１４４と、パラメータ行列分解部１４５と、線形ＳＶＭ識別部１４６とを備えている。
【０２５６】
ピラミッド画像生成部１４１は、入力クエリとしての画像を取得して、当該画像を複数段階の倍率でそれぞれ縮小してなるピラミッド画像を生成する。これにより、サイズの異なる物体に対処できる。このピラミッド画像生成部１４１は、図２９に示したコンテンツ取得部１３１に対応する。ＨＯＧ特徴量抽出部１４２は、ピラミッド画像の各段における画像を、８×８ピクセルのサイズのセルに分割し、各セルからＨＯＧ特徴量を抽出する。ＨＯＧ特徴量抽出部１４２は、各セルからＤ次元の特徴量を抽出する。このＨＯＧ特徴量抽出部１４２は、図２９に示した特徴ベクトル抽出部１０２に対応する。バイナリコード変換部１４３は、各セルに与えられたＤ次元の特徴量を、ｄ次元の二値ベクトルに変換する。このバイナリコード変換部１４３は、図２９に示した特徴ベクトル二値化部１３３に対応する。
【０２５７】
パラメータ決定部１４４は、線形ＳＶＭ識別部１４６における線形ＳＶＭにて用いる重みベクトルｗ及び実数のバイアスｂを決定する。パラメータ決定部１４４は、学習用に用意された特徴量を用いて、学習処理によって重みベクトルｗ及びバイアスｂを決定する。パラメータ行列分解部１４５は、重みベクトルｗを第１又は第２の例で説明した式（５）又は式（１３）によって離散値ベクトルの線形和に分解する。
【０２５８】
線形ＳＶＭ識別部１４６は、線形ＳＶＭによって特徴ベクトルの識別を行なう。線形ＳＶＭ識別部１４６は、まず、Ｗ×Ｈセルをひとまとまりとして、ウィンドウを構成する。１つのウィンドウから抽出される特徴ベクトルは、Ｗ×Ｈ×ｄ次元のベクトルとなる。線形ＳＶＭ識別部１４６は、この特徴ベクトルに対して、下式（２７）の線形ＳＶＭを適用する。
【数６０】
2015230715.tif 000062
ここで、線形ＳＶＭにおける内積演算ｗTｘは、第１又は第２の例として説明した実数ベクトルと二値ベクトルの高速内積演算により実現できる。
【０２５９】
３−１０．第３の実施の形態の第２の応用例
本応用例では、本実施の形態がｋ−ｍｅａｎｓクラスタリングに応用される。図３４は、ｋ−ｍｅａｎｓクラスタリング装置の構成を示すブロック図である。ｋ−ｍｅａｎｓクラスタリング装置１０５は、コンテンツ取得部１５１と、特徴ベクトル生成部１５２と、特徴ベクトル二値化部１５３と、代表ベクトル更新部１５４と、収束判定部１５５と、代表ベクトル分解部１５６と、最近接代表ベクトル探索部１５７とを備えている。
【０２６０】
コンテンツ取得部１５１は、クラスタリングの対象となるＮ個のコンテンツを取得する。特徴ベクトル生成部１５２は、コンテンツ取得部１５１にて取得した各コンテンツからそれらの特徴量を特徴ベクトルとして抽出する。特徴ベクトル二値化部１５３は、特徴ベクトル抽出部１５２にて抽出された各特徴ベクトルを二値化する。
【０２６１】
代表ベクトル更新部１５４は、まず、特徴ベクトル二値化部１５３で二値化されたＮ個の特徴ベクトルからｋ個をランダムに選出してこれを代表ベクトルとする。収束判定部１５５は、代表ベクトル更新部１５４が代表ベクトルを更新するごとに収束判定を行なう。収束判定部１５５にて収束したと判定された場合には、ｋ−ｍｅａｎｓクラスタリング装置１０５はクラスタリングの処理を終了する。代表ベクトル分解部１５６は、代表ベクトル更新部１５４にて更新された代表ベクトルを離散値（二値又は三値）ベクトルに分解する。
【０２６２】
最近接代表ベクトル探索部１５７は、特徴ベクトル二値化部１５３より入力されるＮ個の二値ベクトルをそれぞれ最も近傍の代表ベクトルに所属させる。最近接代表ベクトル１５７は、この結果を代表ベクトル更新部１５４に出力する。代表ベクトル更新部１５４は、各代表ベクトルについて、それに所属する特徴ベクトル（二値化されている）の平均ベクトルを算出して、これを新しい代表ベクトルとする。このようにして代表ベクトル更新部１５４で更新される代表ベクトルは、二値ベクトルの平均で算出されるので、実数ベクトルとなる。
【０２６３】
従って、仮に代表ベクトル分解部１５６がなければ、最近接代表ベクトル探索部１５７は、更新された代表ベクトル（実数ベクトル）と特徴ベクトル（二値ベクトル）との距離を求めるためにそれらの内積を計算しなければならない。そこで、本応用例では、上記のように、この代表ベクトル（実数ベクトル）を代表ベクトル分解部１５６によって、第１又は第２の例で説明したように、離散値（二値又は三値）ベクトルに分解する。それによって、最近接代表ベクトル探索部１５７における、各特徴ベクトルと各代表ベクトルとの距離の計算を高速にでき、よって各特徴ベクトルが最も近接する代表ベクトル（すなわち、所属すべき代表ベクトル）を高速に探索できる。
【０２６４】
３−１１．第３の実施の形態の第３の応用例
本応用例では、本実施の形態がｋ−ｍｅａｎｓ  ｔｒｅｅによる近似最近傍探索に応用される。本例の近似最近傍探索装置は、ｋ−ｍｅａｎｓを用いたｋ−分木による近似最近傍探索手法として、Marius Muja and David G. Lowe, "Fast Approximate Nearest Neighbors with Automatic Algorithm Configuration", in International Conference on Computer Vision Theory and Applications (VISAPP' 09), 2009（http://www.cs.ubc.ca/~mariusm/index.php/FLANN/FLANN、http://people .cs.ubc.ca/~mariusm/uploads/FLANN/flann_visapp09.pdf）に提案されている手法を採用する。
【０２６５】
具体的には、本例の近似最近傍探索装置は、Ｎ個のデータに対してｋ−ｍｅａｎｓを再帰的に適用することでｋ−分木を構築し、上記提案の木探索の原理により近似的に最近傍点を探索する。この手法は、データが実数ベクトルであり、かつノードに登録されている代表ベクトルが二値ベクトルである場合を前提として設計される。但し、データが二値ベクトルであって、ノードに登録されている代表ベクトルが実数ベクトルである場合にも、第１又は第２の例を採用することで、木探索を高速化できる。
【０２６６】
３−１２．第３の実施の形態の変形例
特徴量演算装置１０３において、コンテンツ取得部１３１、特徴ベクトル生成部１３２、特徴ベクトル二値化部１３３、実数ベクトル取得部１３４、実数ベクトル分解部１３５、及びベクトル演算部１３６の一部と他の部分とが別々の装置として構成されていてもよい。特に、コンテンツ取得部１３１、特徴ベクトル生成部１３２、特徴ベクトル二値化部１３３、及びベクトル演算部１３６が特徴演算装置１０３に搭載され、実数ベクトル取得部１３４、及び実数ベクトル分解部１３５が別の装置に搭載されてよい。この場合には、実数ベクトル分解部１３５にて分解された複数の実数ベクトル（複数の係数ベクトルと基底ベクトルの組）が特徴演算装置１０３のデータベースに記憶され、ベクトル演算部１３６は、データベースから分解された複数の実数ベクトルを取得する。このとき、ベクトル演算部１３６は、基底ベクトル取得部（第１及び第２の例）、あるいは、二値ベクトル取得部（第１の例）、三値ベクトル取得部（第２の例）として機能する。
【０２６７】
なお、コンテンツ取得部１３１にて取得されるコンテンツデータは、車両から得られる計測データであってよい。さらに、車両から得られる計測データは、例えば、車両に設置されたカメラで撮影された画像データ、車両に設置されたセンサで計測されたセンシングデータであってよい。この場合に、関連性判定装置としての特徴演算装置１０３のベクトル演算部１３６は、計測データと辞書データとの関連性を判定する。例えば、計測データとして、車両に設置されたカメラで撮影された画像データが取得される場合には、辞書データとして複数の人物画像のデータがデータベースに保存されており、関連性判定装置としての特徴演算装置１０３のベクトル演算部１３６は、第４ないし第６の例のいずれかによって、画像データの画像に人物が含まれるか否かを判定してよい。
【０２６８】
４．第４の実施の形態
４−１．背景
第３の実施の形態では、識別器による認識処理においてもｋ−ｍｅａｎｓクラスタリングにおいても、二値ベクトルとｄ次元の実数ベクトルとの内積の演算を高速化することこそが、問題の解決につながるとの認識の下、特徴ベクトルがｄ次元の二値ベクトルｐ∈｛−１，１｝dである場合において、そのような特徴ベクトルとｄ次元の実数ベクトルｑ∈Ｒdとの間の内積（ｐTｑもしくはｑTｐ）の演算を高速に行う関連性判定装置を説明した。
【０２６９】
すなわち、第３の実施の形態の関連性判定装置は、二値化された特徴ベクトルを取得する特徴ベクトル取得部と、実数ベクトルを二値または三値の離散値のみから構成された要素を持つ複数の基底ベクトルの線形和に分解することで得られた前記複数の基底ベクトルを取得する基底ベクトル取得部と、前記特徴ベクトルと前記複数の基底ベクトルの各々との内積計算を順次行うことで、前記実数ベクトルと前記特徴ベクトルとの関連性を判定するベクトル演算部とを備えており、この構成により、実数ベクトルは複数の二値の基底ベクトルの線形和に分解されたうえで二値化された特徴ベクトルとの内積計算が行なわれるので、特徴ベクトルと実数ベクトルの内積計算を高速化できた。
【０２７０】
ところで、二値化された特徴ベクトルと複数の実数ベクトルとの内積を計算することで、特徴ベクトルと複数の実数ベクトルの各々との関連性を判定する必要がある場合がある。例えば、上述のように、線形ＳＶＭでは、特徴ベクトルがクラスＡに属するか、クラスＢに属するか、すなわち、特徴ベクトルがある識別基準に該当するか否かのみを判断するものであるが、このような識別を複数の基準について行いたい場合がある。具体的な例としては、撮影された画像に映っているのが、大人であるか否か、子供であるか否か、車であるか否か、道路標識であるか否かをそれぞれ判断したい場合がある。
【０２７１】
また、上述のｋ−ｍｅａｎｓクラスタリングでは、入力として与えられたＮ個の特徴ベクトルの各々について、ｋ個の代表ベクトルとの間で内積計算を伴う距離の計算を行う。ここで、ｋ個の代表ベクトルの各々は、上述のように、二値ベクトルの平均で定義されるので、実数ベクトルである。よって、ｋ−ｍｅａｎｓクラスタリングでも、二値化された特徴ベクトルと複数の実数ベクトルとの内積計算が必要となる。
【０２７２】
４−２．概要
そこで、本実施の形態は、二値化された特徴ベクトルと複数の実数ベクトルとの内積計算を高速化することで、そのような特徴ベクトルと複数の実数ベクトルとの関連性の判定を高速に行うことを目的とする。
【０２７３】
本実施の形態の関連性判定装置は、二値化された特徴ベクトルを取得する特徴ベクトル取得部と、複数の実数ベクトルからなる実数行列を、係数行列と、要素として二値または三値の離散値のみを持つ複数の基底ベクトルからなる基底行列との積に分解する実数行列分解部と、前記特徴ベクトルと前記複数の実数ベクトルの各々との内積の計算として、前記特徴ベクトルと前記基底行列との積を計算し、さらに当該積と前記係数行列との積を計算して、その結果を用いて、前記複数の実数ベクトルの各々と前記特徴ベクトルとの関連性を判定するベクトル演算部とを備えた構成を有している。この構成により、特徴ベクトルと複数の実数ベクトルの各々との内積を計算のために、複数の実数ベクトルからなる実数行列を離散値の基底行列と係数行列に分解したうえで、特徴ベクトルと基底行列との積を計算し、さらに係数行列との積を計算するので、特徴ベクトルと複数の実数ベクトルの各々との内積演算の結果を高速に取得でき、よって特徴ベクトルと複数の実数ベクトルとの関連性の判定を高速に行うことができる。
【０２７４】
上記の関連性判定装置は、前記複数の実数ベクトルを並べることで前記実数行列を生成する実数行列生成部をさらに備えていてよい。この構成により、容易に複数の実数ベクトルから実数行列を生成できる。
【０２７５】
上記の関連性判定装置において、前記実数行列生成部は、前記複数の実数ベクトルが所定のパラメータを有する場合に、当該パラメータの順に従って前記複数の実数ベクトルを並べることにより前記実数行列を生成してよい。この構成により、実数行列において互いに似た実数ベクトルが隣り合うこととなるので、隣り合う係数行列もまた類似するようになる。
【０２７６】
上記の関連性判定装置において、前記実数行列分解部は、
【数６１】
2015230715.tif 000063
をコスト関数として、前記コスト関数を解くことにより前記実数行列を分解してよい。ここで、Ｑは前記実数行列、Ｍは前記基底行列、Ｃは前記係数行列である。この構成により、実数行列を基底行列と係数行列との積に分解したときの誤差をコストとして評価して、実数行列を分解するので、容易かつ高精度に実数行列を分解できる。具体的には、このコスト関数を最小にする（所定の収束条件を満たす）基底行列及び係数行列で実数行列を分解することができる。
【０２７７】
上記の関連性判定装置において、前記実数行列分解部は、前記基底行列の要素を固定して前記係数行列の要素を最小二乗法で最適化する第１の更新と、前記係数行列の要素を固定して前記基底行列の要素を全探索で最適化する第２の更新とを繰り返すことで、前記基底行列及び前記係数行列を求めてよい。この構成により、容易に実数行列を分解できる。なお、係数行列の要素を固定すると、基底行列の各行を求めるときに探索すべき組み合わせ数は、二値分解の場合は２k通り、三値分解の場合は３k通りしかないので、全探索を行っても計算量が多くなりすぎることはない。
【０２７８】
上記の関連性判定装置において、前記実数行列分解部は、
【数６２】
2015230715.tif 000064
をコスト関数として、前記コスト関数を解くことにより前記実数行列を分解してよい。ここで、Ｑは前記実数行列、Ｍは前記基底行列、Ｃは前記係数行列、λは係数である。この構成によっても、実数行列を基底行列と係数行列との積に分解したときの誤差をコストとして評価して、容易かつ高精度に実数行列を分解できるとともに、係数行列を疎にすることができるので、特徴ベクトルと実数行列との積を高速に計算できる。具体的には、このコスト関数を最小にする（所定の収束条件を満たす）基底行列及び係数行列で実数行列を分解することができる。
【０２７９】
上記の関連性判定装置において、前記実数行列分解部は、前記基底行列の要素を固定して前記係数行列の要素を近接勾配法で最適化する第１の更新と、前記係数行列の要素を固定して前記基底行列の要素を全探索で最適化する第２の更新とを繰り返すことで、前記基底行列及び前記係数行列を求めてよい。この構成により、容易に実数行列を分解できる。なお、係数行列の要素を固定すると、基底行列の各行を求めるときに探索すべき組み合わせ数は、二値分解の場合は２k通り、三値分解の場合は３k通りしかないので、全探索を行っても計算量が多くなりすぎることがない。
【０２８０】
上記の関連性判定装置において、前記実数行列分解部は、
【数６３】
2015230715.tif 000065
をコスト関数として、前記コスト関数を解くことにより前記実数行列を分解してよい。ここで、Ｑは前記実数行列、Ｍは前記基底行列、Ｃは前記係数行列、Ｐは複数の前記特徴ベクトルの集合である。この構成により、実数行列の分解の誤差ではなく、複数の特徴ベクトルを用いて、特徴ベクトルと実数行列との積の分解による誤差をコストとして評価するので（データ依存分解）、特徴ベクトルと実数行列との積をより高精度に近似できる。具体的には、このコスト関数を最小にする（所定の収束条件を満たす）基底行列及び係数行列で実数行列を分解することができる。
【０２８１】
上記の関連性判定装置において、前記実数行列分解部は、前記基底行列の要素を固定して前記係数行列の要素を最小二乗法で最適化する第１の更新と、前記係数行列の要素を固定して組合最適化問題を解くことで前記基底行列の要素を最適化する第２の更新とを繰り返すことで、前記基底行列及び前記係数行列を求めてよい。この構成により、容易に実数行列を分解できる。なお、組合最適化問題は、例えば、グリーディアルゴリズム、タブ−サーチ、シミュレイテッドアニーリング等のアルゴリズムを用いて解くことができる。
【０２８２】
上記の関連性判定装置において、前記実数行列分解部は、
【数６４】
2015230715.tif 000066
をコスト関数として、前記コスト関数を解くことにより前記実数行列を分解してよい。ここで、Ｑは前記実数行列、Ｍは前記基底行列、Ｃは前記係数行列、Ｐは複数の前記特徴ベクトルの集合、λは係数である。この構成により、実数行列の分解の誤差ではなく、複数の特徴ベクトルを用いて、特徴ベクトルと実数行列との積の分解による誤差をコストとして評価するので（データ依存分解）、特徴ベクトルと実数行列との積をより高精度に近似できるとともに、係数行列を疎にすることで特徴ベクトルと実数行列との積を高速に計算できる。具体的には、このコスト関数を最小にする（所定の収束条件を満たす）基底行列及び係数行列で実数行列を分解することができる。
【０２８３】
上記の関連性判定装置において、前記実数行列分解部は、前記基底行列の要素を固定して前記係数行列の要素を近接勾配法で最適化する第１の更新と、前記係数行列の要素を固定して組合最適化問題を解くことで前記基底行列の要素を最適化する第２の更新とを繰り返すことで、前記基底行列及び前記係数行列を求めてよい。この構成により、容易に実数行列を分解できる。なお、組合最適化問題は、例えば、グリーディアルゴリズム、タブーサーチ、シミュレイテッドアニーリング等のアルゴリズムを用いて解くことができる。
【０２８４】
上記の関連性判定装置において、前記実数行列分解部は、
【数６５】
2015230715.tif 000067
をコスト関数として、前記コスト関数を解くことにより前記実数行列を分解して前記基底行列及び前記係数行列の要素の初期値を求め、又は、
【数６６】
2015230715.tif 000068
をコスト関数として、前記コスト関数を解くことにより前記実数行列を分解して前記基底行列及び前記係数行列の要素の初期値を求めてよい。この構成により、データ非依分解により得られた基底行列及び係数行列を初期値とするので、十分に良好な初期解からデータ依存分解のための更新の繰り返しを開始でき、よって効果的にコストを減少させることができる。
【０２８５】
上記の関連性判定装置において、前記実数行列分解部は、前記基底行列及び前記係数行列の要素の初期値を変えて、複数とおりの前記基底行列及び前記係数行列を求め、前記コスト関数が最小となる前記基底行列及び前記係数行列を採用することで前記実数行列を分解してよい。この構成により、初期値によるばらつきを軽減して、分解の誤差をより小さくできる。
【０２８６】
上記の関連性判定装置において、前記特徴ベクトルは、ＨＯＧ特徴量であってよく、前記複数の実数ベクトルは、複数の線形識別器のパラメータに対応する複数の重みベクトルであってよく、前記ベクトル演算部は、前記関連性の判定として、前記複数の線形識別器の識別関数によって、前記複数の基準の各々に対する前記特徴ベクトルの識別を行なってよい。この構成により、複数の線形識別器による特徴ベクトルの識別を高速化できる。
【０２８７】
上記の関連性判定装置において、前記実数行列生成部は、前記特徴ベクトル及び前記複数の実数ベクトルが１又は複数のパラメータを有する場合に、当該パラメータの順に従って前記複数の実数ベクトルを並べることにより前記実数行列を生成し、前記ベクトル演算部は、前記係数行列を構成する複数のベクトルであって前記複数の実数ベクトルが並べられた方向と同方向の複数のベクトルの各々を前記パラメータに関する連続関数で表現し、前記識別関数を最大にする前記パラメータを、前記特徴ベクトルのパラメータ値として求めてよい。この構成により、複数の実数ベクトルをまとめて実数行列を生成する際に、複数の実数ベクトルをそれが滑らかに変化するパラメータの順に並べて実数行列を生成することで、識別関数をそのパラメータに関する連続関数で表現できるので、高い分解能で特徴ベクトルのパラメータ値を求めることができる。
【０２８８】
上記の関連性判定装置において、前記特徴ベクトルは、ｋ−ｍｅａｎｓクラスタリングによるクラスタリングの対象となるベクトルであってよく、前記実数ベクトルは、ｋ−ｍｅａｎｓクラスタリングにおける代表ベクトルであってよく、前記ベクトル演算部は、前記関連性の判定として、前記特徴ベクトルと前記代表ベクトルとの間の距離の演算を含むクラスタリング処理を行なってよい。この構成により、ｋ−ｍｅａｎｓクラスタリングにおける特徴ベクトルと代表ベクトルとの間の距離の演算を高速化できる。
【０２８９】
上記の関連性判定装置において、前記特徴ベクトルは、ｋ−ｍｅａｎｓ  ｔｒｅｅによる近似最近傍探索の対象となるベクトルであってよく、前記実数ベクトルは、ｋ−分木のノードに登録されている代表ベクトルであってよく、前記ベクトル演算部は、前記関連性の判定として、前記特徴ベクトルと前記代表ベクトルとの間の距離の演算を含むクラスタリング処理を行なってよい。この構成により、ｋ−ｍｅａｎｓ  ｔｒｅｅによる近似最近傍探索における特徴ベクトルとｋ−分木のノードに登録されている代表ベクトルとの間の距離の演算を高速化できる。
【０２９０】
上記の関連性判定装置において、前記特徴ベクトルは、画像の特徴量を表すベクトルであってよい。この構成により、画像の特徴量の演算における特徴ベクトルと複数の実数ベクトルの内積計算を高速化できる。
【０２９１】
本実施の形態の関連性判定プログラムは、コンピュータを、上記の関連性判定装置として機能させるための関連性判定プログラムである。この構成によっても、特徴ベクトルと複数の実数ベクトルの各々との内積を計算のために、複数の実数ベクトルからなる実数行列を離散値の基底行列と係数行列に分解したうえで、特徴ベクトルと基底行列との積を計算し、さらに係数行列との積を計算するので、特徴ベクトルと複数の実数ベクトルの各々との内積演算の結果を高速に取得でき、よって特徴ベクトルと複数の実数ベクトルとの関連性の判定を高速に行うことができる。
【０２９２】
本実施の形態の関連性判定方法は、二値化された特徴ベクトルを取得する特徴ベクトル取得ステップと、複数の実数ベクトルからなる実数行列を、係数行列と、要素として二値または三値の離散値のみを持つ複数の基底ベクトルからなる基底行列との積に分解する実数行列分解ステップと、前記特徴ベクトルと前記複数の実数ベクトルの各々との内積の計算として、前記特徴ベクトルと前記基底行列との積を計算し、さらに当該積と前記係数行列との積を計算して、その結果を用いて、前記複数の実数ベクトルの各々と前記特徴ベクトルとの関連性を判定するベクトル演算ステップとを含む構成を有している。この構成によっても、特徴ベクトルと複数の実数ベクトルの各々との内積を計算のために、複数の実数ベクトルからなる実数行列を離散値の基底行列と係数行列に分解したうえで、特徴ベクトルと基底行列との積を計算し、さらに係数行列との積を計算するので、特徴ベクトルと複数の実数ベクトルの各々との内積演算の結果を高速に取得でき、よって特徴ベクトルと複数の実数ベクトルとの関連性の判定を高速に行うことができる。
４−３．効果
【０２９３】
本実施の形態によれば、二値化された特徴ベクトルと複数の実数ベクトルの各々との内積計算を高速化でき、そのような特徴ベクトルと複数の実数ベクトルの各々との関連性の判定を高速に行うことができる。
【０２９４】
以下、本実施の形態の特徴量演算装置について、図面を参照しながら説明する。
【０２９５】
４−４．実数ベクトルが複数ある状況
まず、特徴ベクトルとの内積を計算すべき実数ベクトルが複数ある状況について説明する。図３５は、複数の識別基準で画像中の人を識別する場合の線形ＳＶＭの例を示す図である。この例では、入力されたある特徴ベクトルに対して、図３５に示すように、単にその特徴ベクトルの画像内に人がいるか否かの識別ではなく、それが「大人（正面）」であるか否か、「大人（横）」であるか否か、「子供（正面）」であるか否かをそれぞれ識別する。即ち、特徴ベクトルを識別する基準が複数ある。この場合、図３５に示すように、識線形ＳＶＭの評価式ｆ（ｘ）の重みパラメータ（以下、「辞書」ともいう。）ｗは、識別基準ごとに複数（ｗ1，ｗ2，ｗ3，…，ｗL）用意する必要があり、バイアスｂも識別基準ごとに複数（ｂ1，ｂ2，ｂ3，…，ｂL）用意する必要がある。
【０２９６】
図３６は、被写体までの距離に応じた複数の識別基準で画像中の人を識別する場合の線形ＳＶＭの例を示す図である。この例では、人の識別が、被写体までの距離、即ち画像内の被写体のスケールの変化に対してロバストとなるように、入力されたある特徴ベクトルに対して、図３６に示すように、単にその特徴ベクトルの画像内に大人がいるか否かを識別するだけでなく、それが「大人（遠）」であるか否か、「大人（中距離）」であるか否か、「大人（近）」であるか否かをそれぞれ識別する。即ち、この場合も、特徴ベクトルを識別する基準が複数あり、よって、図３６に示すように、線形ＳＶＭの辞書ｗは、識別基準ごとに複数（ｗ1，ｗ2，ｗ3，…，ｗL）用意する必要があり、バイアスｂも識別基準ごとに複数（ｂ1，ｂ2，ｂ3，…，ｂL）用意する必要がある。
【０２９７】
このように、ある特徴ベクトルに対して複数の基準で識別を行う場合には、それらの複数の基準が互いに似ていることが多い。図３５及び図３６もそのような例を示しており、即ち、図３５の例では、「大人（正面）」と「大人（横）」は、大人という共通点を有し、「大人（正面）」と「子供（正面）」は、人の正面という共通点を有し、また、「大人（正面）」と「大人（横）」と「子供（正面）」は、人という共通点を有する。図３６の例でも、「大人（遠）」と「大人（中距離）」と「大人（近）」は、「大人」という共通点を有する。よって、図３５及び図３６の複数の実数ベクトルである辞書（ｗ1，ｗ2，ｗ3，…，ｗL）は互いに似ている。また、ｋ−ｍｅａｎｓクラスタリングにおいても、ｋ個の実数ベクトルである代表ベクトルが互いに似ていることが多い。本実施の形態の関連性判定装置は、このように複数の実数ベクトルが互いに似ているという性質を生かして、処理を高速化する。
【０２９８】
４−５．第４の実施の形態の第１の例
図３７は、第４の実施の形態の第１の例の特徴量演算装置１０６の構成を示すブロック図である。特徴量演算装置１０６は、コンテンツ取得部１６１と、特徴ベクトル生成部１６２と、特徴ベクトル二値化部１６３と、実数行列取得部１６４と、実数行列分解部１６５と、ベクトル演算部１６６と、データベース１６７とを備えている。
【０２９９】
本例の特徴量演算装置１０６は、後述するように、特徴ベクトルと辞書データとしてデータベースに保存された複数の実数ベクトルとの内積演算を伴うベクトル演算によって、特徴ベクトルと複数の実数ベクトルとの関連性を判定する関連性判定装置として機能する。即ち、特徴演算装置１０６は、本実施の形態の関連性判定装置に相当する。
【０３００】
関連性判定装置としての特徴量演算装置１０６は、コンピュータが本実施の形態の関連性判定プログラムを実行することにより実現される。関連性判定プログラムは、記録媒体に記録されて、記録媒体からコンピュータによって読み出されてもよいし、ネットワークを通じてコンピュータにダウンロードされてもよい。
【０３０１】
コンテンツ取得部１６１は、画像データ、音声データ、文字データ等のコンテンツデータを取得する。これらのコンテンツデータは、外部機器から与えられるものであってもよく、コンテンツ取得部１６１で生成されるものであってもよい。例えば、コンテンツ取得部１６１がカメラであり、そこでコンテンツデータとして画像データが生成されてよい。
【０３０２】
特徴ベクトル生成部１６２は、コンテンツ取得部１６１にて取得されたコンテンツデータからＤ次元の特徴ベクトルを生成する。例えばコンテンツが画像である場合には、特徴ベクトル生成部１６２は、画像の特徴量を抽出する。特徴ベクトル二値化部１６３は、特徴ベクトル生成部１６２で生成されたＤ次元の特徴ベクトルを二値化して、各要素が−１及び１の二値のみをとるｄ次元の二値ベクトルｐ∈｛−１，１｝dを生成する。この特徴ベクトル二値化部１６３は、本実施の形態の「特徴ベクトル取得部」に相当する。
【０３０３】
なお、コンテンツ取得部１６１、特徴ベクトル生成部１６２、及び特徴ベクトル二値化部１６３からなる構成は、最終的に二値化された特徴ベクトルを取得できる構成であればよく、例えば、コンテンツ取得部１６１及び特徴ベクトル生成部１６２を備えずに、特徴ベクトル二値化部１６３が外部機器から特徴ベクトルを取得して、その取得した特徴ベクトルを二値化する構成であってよいし、また、特徴ベクトル二値化部１６３が外部機器から二値化された特徴ベクトルを直接取得する構成であってもよい。
【０３０４】
実数行列取得部１６４は、複数のｄ次元の実数ベクトルｑn∈Ｒd（ｎ＝１，２，…，Ｌ）を取得する。複数の実数ベクトルｑnは、外部機器から与えられるものであってもよく、特徴量演算装置１０６の図示しない記憶装置から読み出されるものであってもよく、実数行列取得部１６４で生成されるものであってもよい。各実数ベクトルｑnは、その要素に浮動小数を含む実数を持つ。ここで、複数の実数ベクトルｑnを並べたものを実数行列Ｑ＝（ｑ1，ｑ2，…，ｑL）∈ＲdｘLと表記する。
【０３０５】
このように複数の実数ベクトルｑnをまとめた実数行列Ｑを用いると、図３５及び図３６の複数の線形ＳＶＭは、下式（２８）のようにまとめて表現することができる。
【数６７】
2015230715.tif 000069
【０３０６】
実数行列分解部１０５は、図３８に示すように、ｄ行Ｌ列の実数行列Ｑを、二値の基底行列Ｍ∈｛−１，１｝dxkと係数行列との積に分解する。具体的には、実数行列分解部１０５は、ｄ行Ｌ列の実数行列Ｑを、下式（２９）によって、二値の要素を持つ基底行列Ｍと実数の要素を持つ係数行列Ｃに分解する。
【数６８】
2015230715.tif 000070
ここで、図３８に示すように、Ｍ＝（ｍ1，ｍ2，…，ｍk）∈｛−１，１｝dxkであり、Ｃ＝（ｃ1，ｃ2，…，ｃL）T∈ＲkxLである。
【０３０７】
すなわち、基底行列Ｍは、ｋ個の基底ベクトルｍiからなり、ここで、基底ベクトルｍiは、要素が−１及び１のみをとるｄ次元の二値ベクトルであり、従って、基底行列Ｍは、要素が−１及び１のみをとるｄ行ｋ列の二値行列である。
【０３０８】
また、係数行列Ｃは、Ｌ個（Ｌはクラス数）の係数ベクトルｃnからなり、ここで、係数ベクトルｃnは、ｋ個（ｋは基底数）の基底ベクトルに係る実数の係数を要素として持つｋ次元の実数ベクトルである。もちろん、ＱとＭＣはなるべく一致するように分解することが好ましいが、誤差を含んでもよい。以下、実数行列分解部１０５が実数行列Ｑを式（２９）のように分解する手法を説明する。
【０３０９】
４−５−１．第１の分解手法
第１の分解手法として、データ非依存型の分解手法を説明する。第１の分解手法では、実数行列分解部１０５は、分解誤差を表す下式（３０）のコスト関数ｇ1を解くことで分解を行う。
【数６９】
2015230715.tif 000071
ただし、基底行列Ｍは二値であり、Ｍ∈｛−１，１｝dxkである。
【０３１０】
実数行列分解部１０５は、以下の手順で上記のコスト関数ｇ1を解く。
（１）基底行列Ｍ及び係数行列Ｃをランダムに初期化する。
（２）基底行列Ｍの要素を固定して、係数行列Ｃの要素を最小二乗法により最適化することで、コスト関数ｇ1が最小になるように係数行列Ｃの要素を更新する。
（３）係数行列Ｃの要素を固定して、コスト関数ｇ1が最小になるように全探索で基底行列Ｍの要素を更新する。この最小化アルゴリズムである全探索については、後に詳しく述べる。
（４）収束するまで（２）及び（３）を繰り返す。例えば、コスト関数ｇ1が所定の収束条件（例えば、減少量が一定値以下となる）を満たしたときに、収束したと判定する。
（５）ステップ（１）〜ステップ（４）により得た解を候補として保持する。
（６）ステップ（１）〜ステップ（５）を繰り返し、最もコスト関数ｇ1を小さくできた候補基底行列Ｍ及び候補係数行列Ｃを最終結果として採用する。なお、このステップ（１）〜ステップ（５）の繰り返しはなくてもよいが、複数回繰り返すことで、初期値依存の問題を回避できる。
【０３１１】
次に、ステップ（３）における基底行列Ｍの更新処理を説明する。図３９の破線枠で囲ったように、基底行列Ｍのｊ行目の行ベクトルの要素は、実数行列のｊ行目の要素のみに依存する。よって、基底行列Ｍの各行ベクトルの値は、他の行とは独立して最適化することができるので、基底行列Ｍは、行ごとに網羅探索（全探索）を行うことができる。基底行列Ｍのｊ行目の行ベクトルは、本例のように二値分解の場合は２k通りしか存在しない（なお、後述の第２の例の三値分解の場合にも３k通りしか存在しない）。よって、実数行列分解部１０５は、これらをすべて網羅的にチェックし、コスト関数ｇ1を最小化する行ベクトルを採用する。これを基底行列Ｍのすべての行ベクトルに対して適用して、基底行列Ｍの要素を更新する。
【０３１２】
４−５−２．第２の分解手法
第２の分解手法として、係数行列Ｃを疎にするデータ非依存型の分解手法を説明する。第２の分解手法では、実数行列分解部１０５は、分解誤差である下式（３１）のコスト関数ｇ2を解くことで分解を行う。
【数７０】
2015230715.tif 000072
ただし、基底行列Ｍは二値であり、Ｍ∈｛−１，１｝dxkである。また、｜Ｃ｜1は、係数行列Ｃの要素のＬ１ノルムであり、λはその係数である。
【０３１３】
実数行列分解部１０５は、以下の手順で上記のコスト関数ｇ2を解く。
（１）基底行列Ｍ及び係数行列Ｃをランダムに初期化する。
（２）基底行列Ｍの要素を固定して、係数行列Ｃの要素を近接勾配法で最適化する。
（３）係数行列Ｃの要素を固定して、コスト関数ｇ2が最小になるように全探索で基底行列Ｍの要素を更新する。
（４）収束するまで（２）及び（３）を繰り返す。例えば、コスト関数ｇ2が所定の収束条件（例えば、減少量が一定値以下となる）を満たしたときに、収束したと判定する。
（５）ステップ（１）〜ステップ（４）により得た解を候補として保持する。
（６）ステップ（１）〜ステップ（５）を繰り返し、最もコスト関数ｇ2を小さくできた候補基底行列Ｍ及び候補係数行列Ｃを最終結果として採用する。なお、このステップ（１）〜ステップ（５）の繰り返しはなくてもよいが、複数回繰り返すことで、初期値依存の問題を回避できる。
【０３１４】
第２の分解手法によれば、係数行列Ｃを疎にすることができる。係数行列Ｃを疎にすることで、積ＭＣの計算において、係数行列Ｃのゼロ要素にかかわる部分を省略することができ、さらに高速に内積計算を行うことができる。
【０３１５】
４−５−３．第３の分解手法
次に、第３の分解手法を説明する。第１の分解手法では、コスト関数ｇ1として、分解誤差
【数７１】
2015230715.tif 000073
を定義し、この分解誤差を最小化することを考えた。しかしながら、実数行列を基底行列と係数行列との積に近似した後に実際に近似をしたいのは、特徴ベクトルと実数行列の積ＱTｐである。
【０３１６】
そこで、第３の分解手法では、特徴ベクトルｐをあらかじめＳ個集め、これをまとめたものをＰ∈ＲdxSとする。そして、分解誤差を
【数７２】
2015230715.tif 000074
と定義して、これを最小化する。即ち、第３の分解手法では、実数行列分解部１０５は、下式（３２）のコスト関数ｇ3を解くことで分解を行う。
【数７３】
2015230715.tif 000075
このコスト関数ｇ3によれば、実数行列Ｑは、実際のデータの分布に従って分解されることになるため、分解の際の近似精度が向上する。
【０３１７】
この近似分解は、基底ベクトルｍiを逐次的に求めることで行うことができる。第３の分解手法の手順は以下のとおりである。
（１）第１又は第２の分解手法によって、基底行列Ｍ及び係数行列Ｃを求めて、これをそれらの初期値とする。
（２）基底行列Ｍの要素を固定して、係数行列Ｃの要素を最小二乗法で最適化する。
（３）係数行列Ｃの要素を固定して、基底行列Ｍの要素を最適化することで、基底行列Ｍの要素を更新する。この基底行列Ｍの更新処理については後述する。
（４）収束するまで（２）及び（３）を繰り返し、コスト関数ｇ3を最小化した基底行列Ｍ及び係数行列Ｃを候補として保持する。
（５）ステップ（１）〜（６）を繰り返し、コスト関数ｇ3を最小化した基底行列Ｍ及び係数行列Ｃを最終結果として採用する。なお、ステップ（１）では再度第１又は第２の分解手法による基底行列Ｍ及び係数行列Ｃの最適化が行われるので、初期値が変更される。また、ステップ（５）の繰り返しはなくてもよいが、複数回繰り返すことで、初期値依存の問題を軽減できる。
【０３１８】
次に、ステップ（３）における基底行列Ｍの更新処理を説明する。データ依存分解の場合、基底行列Ｍの行ベクトルの値は、もはや他の行と独立せず、依存してしまう。基底行列Ｍの要素は、二値又は三値、即ち離散値であるため、基底行列Ｍの最適化は、組合最適化問題となる。よって、基底行列Ｍの最適化には、例えば、グリーディアルゴリズム（Greedy algorithm）、タブ−サーチ（Tabu search）、シミュレイテッドアニーリング（Simulated annealing）等のアルゴリズムを用いることができる。ステップ（１）でよい初期値が得られているので、これらのアルゴリズムでも良好に分解誤差を最小化できる。
【０３１９】
例えばグリーディアルゴリズムを用いる場合は、以下の手順で基底行列Ｍを最適化する。
（３−１）基底行列Ｍの要素のうち、ランダムにＴ個を選択する。
（３−２）２T通りの組み合わせ（後述の三値分解の場合は３T通り）を試し、最もコスト関数ｇ3を最小化したものを採用する。
（３−３）ステップ（３−１）及びステップ（３−２）を収束するまで繰り返す。
【０３２０】
４−５−４．第４の分解手法
第４の分解手法は、第２の分解手法と第３の分解手法とを組み合わせてものである。具体的には、実数行列分解部１０５は、下式（３３）のコスト関数ｇ4を解くことで分解を行う。
【数７４】
2015230715.tif 000076
このコスト関数ｇ4によれば、実数行列Ｑは、実際のデータの分布に従って分解されることになるため、分解の際の近似精度が向上するとともに、係数行列Ｃを疎にすることができる。即ち、第２の分解手法のメリットと第３の分解手法のメリットをいずれも得ることができる。具体的な分解の手順は、第３の分解手法と同様である。
【０３２１】
４−５−５．第１及び第２の分解手法の変形例
上記の第１及び第２のデータ非依存分解の手法は、分解数をｋとしたとき、ｋ2通り（三値分解の場合はｋ3通り）の探索が必要であるため、ｋが大きいときは、適用が難しい。そのような場合は、あらかじめ実数行列Ｑに所属する実数ベクトルｑnの互いの類似度を調べ、似ている実数ベクトルどうしをクラスタリングし、各クラスタに対して第１又は第２の分解手法を適用すればよい。
【０３２２】
ベクトル演算部１０６は、特徴ベクトルを用いた演算を行なう。演算の具体的内容については、後述にて、本例の特徴量演算装置１００の応用例とともに具体的に説明する。この特徴ベクトルを用いた演算には、二値化された特徴ベクトルｐ∈｛−１，１｝dと実数行列分解部１０５にて分解された実数行列Ｑとの積ＱTｐの計算が含まれる。以下では、まず、この積ＱTｐの計算について説明する。
【０３２３】
積ＱTｐは、下式（３４）のように式変形できる。
【数７５】
2015230715.tif 000077
ここで、ｍiTｐは二値ベクトル同士の内積である。また、ｃn,iは、ｎ番目のクラスの係数ベクトルｃnのｉ番目の要素、即ち係数行列Ｃのｉ行ｎ列の要素である。この二値ベクトル同士の内積ｍiTｐは、極めて高速に計算可能である。その理由は以下のとおりである。
【０３２４】
二値ベクトル同士の内積は、ハミング距離の演算に帰着できる。ハミング距離とは、２つのバイナリコードにおいて、値が異なるビットを数えたものであり、２つの二値ベクトルの間のハミング距離は、すなわち値が異なる要素数を数えたものである。ここで、ｍiとｐのハミング距離をＤhamming（ｍi，ｐ）と記述すると、内積ｍiTｐは、
Ｄhamming（ｍi，ｐ）と下式（３５）の関係がある。
【数７６】
2015230715.tif 000078
ここで、前述のとおり、ｄはバイナリコードのビット数である。
【０３２５】
ハミング距離の演算は、２つのバイナリコードにおいて、ＸＯＲを適用した後に、１が立っているビットを数えることで計算できるので、極めて高速である。二値ベクトルがバイナリコード（０と１のビット列）で表現されているのであれば、ハミング距離は、下式（３６）で計算できる。
【数７７】
2015230715.tif 000079
ここで、ＸＯＲ関数はｍiとｐをバイナリコード表現で考えたときに排他的論理和を
取る操作であり、ＢＩＴＣＯＵＮＴ関数はバイナリコードの１が立っているビット数を数えあげる処理のことである。
【０３２６】
以上をまとめると、積ＱTｐは下式（３７）のように変形できる。
【数７８】
2015230715.tif 000080
すなわち、ｄビットのハミング距離計算をｋ回行い、ｋ個のハミング距離について、係数行列Ｃに関する重み付け和を計算し、定数項を足したものがＱTｐになる。よって、ｋが十分小さければ、ＱTｐを浮動小数点精度で計算するよりも、はるかに高速に計算できるようになる。
【０３２７】
データベース１０７には、実数行列分解部１０５にて分解された複数の実数行列Ｑについて、基底行列Ｍと係数行列Ｃの積が辞書データとして記憶されている。ベクトル演算部１０６は、データベース１０７から基底行列Ｍと係数行列Ｃとの積を読み出して、上記の演算を行う。
【０３２８】
以上のように、本例の特徴量演算装置１００によれば、特徴ベクトルを用いた演算処理に特徴ベクトルと実数行列との積演算が含まれている場合にも、特徴ベクトルを二値化した上で、実数行列についても、二値行列である基底行列と係数行列との積に分解するので、特徴ベクトルと実数行列との積の計算において、特徴ベクトルと基底行列との積を計算した上で、さらに係数行列との積を計算することで、特徴ベクトルと実数行列との積演算を高速化できる。
【０３２９】
また、複数の実数ベクトルを１つの実数行列としてまとめ、その実数行列を二値行列である基底行列と係数行列とに分解するので、先願の技術のように各実数ベクトルをそれぞれ分解する場合と比較して、基底行列を構成する基底ベクトルの個数、即ち基底数を小さくすることができる。原理的には、１クラスあたり１個以下の基底数（即ち、基底数ｋ≦クラス数Ｌ）とすることも可能である。
【０３３０】
４−６．第４の実施の形態の第１の例の拡張
上記の第１の例では、二値ベクトルｍi、ｐを、それぞれ、ｍi∈｛−１，１｝d、ｐ∈｛−１，１｝dと定義して、実数行列を二値の基底行列と実数の係数行列との積に分解することで積演算ＱTｐが高速になることを説明した。しかしながら、ｍi、ｐをより一般的な二値ベクトルｍi´∈｛−ａ，ａ｝d、ｐ´∈｛−ａ，ａ｝dとしても、それらの高速な積演算が可能である。この場合、ｍi´Tｐ´＝ａ2（ｍiTｐ）であることから、−１及び１により定義される二値ベクトル同士の内積にａ2を掛ければよい。
【０３３１】
さらに、特徴ベクトル及び基底ベクトルを任意の二値ベクトルｍi´´∈｛α，β｝d、ｐ´´∈｛γ，δ｝dとしても、高速な内積演算が可能である。ここで、係数α、β、γ、δは実数であり、α≠β、γ≠δである。この場合、ｍi´´及びｐ´´は、−１及び１により定義される二値ベクトルｍi及びｐの各要素に線形変換を施すことで得られ、下式（３８）及び（３９）のように展開される。
【数７９】
2015230715.tif 000081
【数８０】
2015230715.tif 000082
なお、式（３８）及び（３９）中の太字の「１」は、長さがｄですべての要素が１であるベクトルである。また、式（３８）及び（３９）中のＡ、Ｂ、Ｃ、Ｄは実数であり、式（３８）及び（３９）が成立するようにあらかじめ計算しておけばよい。
【０３３２】
内積ｍi´´Tｐ´´は、下式（４０）のように展開できる。
【数８１】
2015230715.tif 000083
式（４０）の括弧内の計算は、−１及び１からなる二値ベクトル同士の内積である。従って、特徴ベクトルが任意の二値の要素をもつ二値ベクトルにされ、かつ、実数行列を二値の基底行列と実数の係数行列との積に展開した場合にも、高速演算が可能である。
【０３３３】
４−７．第４の実施の形態の第２の例
次に、第２の例の特徴量演算装置を説明する。第２の例の特徴量演算装置の構成は、図３５に示した第１の例のそれと同じである。第１の例では、実数行列分解部１０５は、実数行列Ｑを式（２８）によって二値の基底行列と実数の係数行列に分解したが、本例の特徴量演算装置１００の実数行列分解部１０５は、実数行列を三値の基底行列と実数の係数行列に分解する。
【０３３４】
実数行列分解部１０５は、ｄ行Ｌ列の実数行列Ｑ∈ＲdxLを、三値の基底行列と実数の係数行列の積に分解する。具体的には、実数行列分解部１０５は、ｄ行Ｌ列の実数行列Ｑ∈ＲdxLを、下式（４１）によって、三値の要素を持つ基底行列Ｍと実数の要素を持つ係数行列Ｃに分解する。
【数８２】
2015230715.tif 000084
ここで、Ｍ＝（ｍ1，ｍ2，…，ｍk）∈｛−１，０，１｝dxkであり、Ｃ＝（ｃ1，ｃ2，…，ｃL）T∈ＲkxLである。すなわち、基底行列Ｍは、ｋ個の基底ベクトルｍiからなり、ここで、基底ベクトルｍiは、要素が−１、０、及び１のみをとるｄ次元の三値ベクトルであり、従って、基底行列Ｍは、要素が−１、０、及び１のみをとるｄ行ｋ列の三値行列である。
【０３３５】
また、係数行列Ｃは、Ｌ個（Ｌはクラス数）の係数ベクトルｃnからなり、ここで、係数ベクトルｃnは、ｋ個の基底ベクトルに係る実数の係数を要素として持つｋ次元の実数ベクトルである。もちろん、ＱとＭＣはなるべく一致するように分解することが好ましいが、誤差を含んでもよい。実数行列分解部１０５は、第１の例と同様にして、第１〜第３の分解手法によって実数行列Ｑを分解できる。
【０３３６】
ベクトル演算部１０６は、積ＱTｐを計算する。以下では、積ＱTｐを計算するベクトル演算部１０６を特に、積演算部１０６とも呼ぶ。積ＱTｐは、下式（４２）のように式変形できる。
【数８３】
2015230715.tif 000085
ここで、ｍiTｐは、三値ベクトルｍiと二値ベクトルｐとの内積である。積演算部１０６は、ここで、三値ベクトルｍiの代わりに、以下に定義する０置換ベクトルｍibin、フィルタベクトルｍifilter、及び０要素数ｚiを用いる。
【０３３７】
まず、積演算部１０６は、ｍiの０の要素を、−１又１に置き換える。ｍiの各要素について、それを−１に置き換えるか、１に置き換えるかは、いずれでもよい。この置き換えによって、０置換ベクトルｍibin∈｛−１，１｝dが生成される。この０置換ベクトルｍibin∈｛−１，１｝dは二値ベクトルである。
【０３３８】
また、積演算部１０６は、ｍiの０の要素を−１に置き換え、０以外の要素を１に置き換える。この置き換えによって、フィルタベクトルｍifilter∈｛−１，１｝dが生成される。このフィルタベクトルｍifilterも二値ベクトルである。
【０３３９】
さらに、積演算部１０６は、ｍiの０の要素数ｚiを求める。ｚiは整数となる。積演算部１０６は、これらの二値ベクトルｍibin、フィルタベクトルｍifilter、及び０要素数ｚiを用いて、式（４２）におけるｍiTｐを、下の式（４３）及び式（４４）によって計算する。
【数８４】
2015230715.tif 000086
【数８５】
2015230715.tif 000087
ここで、式（４４）のＡＮＤ関数は、二値ベクトルをバイナリコード表現で考えたときに、論理積を取る操作である。
【０３４０】
以下、図４０の具体例を用いて、式（４３）及び（４４）の導出を説明する。図４０は、本例の計算例を示す図である。図４０の例では、ｐ＝｛−１，１，−１，１，−１，１｝であり、ｍi＝｛−１，０，１，０，１，１｝である。この例では、ｍibin＝｛−１，＊，１，＊，１，１｝となる。ここで、「＊」は−１又は１の任意のいずれかを示す。また、ｍifilter＝｛１，−１，１，−１，１，１｝となり、ｚi＝２となる。
【０３４１】
式（４４）におけるｐとｍibinとの排他的論理和は、ＸＯＲ（ｐ，ｍibin）＝｛−１，＊，１，＊，１，−１｝となり、すなわち、ｐとｍiの要素のうち、非０で異なっている要素すなわち−１と１又は１と−１の組となる要素が１となり、−１と−１又は１と１の組となる要素が−１となる。
【０３４２】
次に、その排他的論理和とｍifilterとの論理積は、ＡＮＤ（ＸＯＲ（ｐ，ｍibin），ｍifilter））＝｛−１，−１，１，−１，１，−１｝となり、ｐとｍiの要素のうち、非０で異なっている要素に１が立ち、それ以外は−１となる。このビットカウントを取ると、１である要素の個数、すなわち非０で異なっている要素の個数が数え上げられ、Ｄfilterd＿hamming（ｐ，ｍibin，ｍifilter）＝２となる。
【０３４３】
ここで、ｐとｍiの要素のうち、１と１又は−１と−１の組となる要素の個数は、全要素数ｄ＝６から、非０で異なっている要素の個数Ｄfilterd＿hamming＝２と０である要素の個数ｚi＝２を引くことで求められる。すなわち、１と１又は−１と−１の組となる要素の数＝ｄ−Ｄfilterd＿hamming−ｚi＝６−２−２＝２となる。
【０３４４】
ｍiTｐは、１と１又は−１と−１の組となる要素（積が１になる要素の組）の個数から、−１と１又は１と−１との組となる要素（積が−１になる要素の組）の個数を引いた値と等しいため、ｍiTｐ＝（ｄ−Ｄfilterd＿hamming−ｚi）−Ｄfilterd＿hamming＝ｄ−ｚi−２Ｄfilterd＿hammingとなり、式（４３）が得られ、その値は、６−２−２×２＝０となる。なお、この結果は、当然ながら、ｐTｍi＝｛−１，１，−１，１，−１，１｝×｛−１，０，１，０，１，１｝＝１＋０＋（−１）＋０＋（−１）＋１＝０と一致する。
【０３４５】
式（４２）〜（４４）をまとめると、積ＱTｐは、下式（４５）のように変形できる。
【数８６】
2015230715.tif 000088
積演算部１０６は、この式（４５）によって、積ＱTｐを計算する。
【０３４６】
関数Ｄfilterd＿hamming（ｐ，ｍibin，ｍifilter）は、ハミング距離演算と非常に似ており、ＡＮＤ演算が加わっただけである。したがって、Ｑ∈ＲdｘLを、三値行列と係数行列との積に分解した場合でも、ＱTｐを浮動小数点精度で計算するよりも、はるかに高速にＱTｐを計算できるようになる。
【０３４７】
以上のように、ｄ次元の実数行列Ｑ∈ＲdxLを、二値ではなく三値の基底行列と係数行列との積に分解することの利点は、式（３７）の近似が、より少ない数の基底数の基底行列でも成立するようになることにある。すなわち、基底数を小さく抑えられることになるため、さらなる高速化につながる。
【０３４８】
４−８．第４の実施の形態の第２の例の拡張
上記の第２の例では、二値ベクトルｐ及び三値ベクトルｍiを、それぞれ、ｐ∈｛−１，１｝d、ｍi∈｛−１，０，１｝dと定義して、複数の実数ベクトルからなる実数行列を三値の基底行列と係数行列との積に分解することで内積演算ｐTｍiが高速になることを説明した。しかしながら、ｐ、ｍiをより一般的な二値ベクトルｐ´∈｛−ａ，ａ｝d、三値ベクトルｍi∈｛−ａ，０，ａ｝dとしても、それらの高速な内積演算が可能である。この場合、ｐ´Tｍi´＝ａ2（ｐTｍi）であることから、−１及び１により定義される二値ベクトル同士の内積にａ2を掛ければよい。
【０３４９】
さらに、二値ベクトルｐ及び三値ベクトルｍiをｐ∈｛α，β｝d、ｍi∈｛γ−δ，γ，γ＋δ｝dと一般化しても、高速な内積演算が可能である。ここで、α、β、γ、δは実数であり、α≠β、δ≠０である。この場合、ｍi及びｐの各要素に下式（４６）及び（４７）の線形変換を施すことで、それぞれｍi´´及びｐ´´が得られる。
【数８７】
2015230715.tif 000089
【数８８】
2015230715.tif 000090
なお、式（４６）及び（４７）中の太字の「１」は、長さがｄですべての要素が１であるベクトルである。また、式（４６）及び（４７）中のＡ、Ｂ、Ｃ、Ｄは実数であり、式（４６）及び（４７）が成立するようにあらかじめ計算しておく。
【０３５０】
内積ｍi´´Tｐ´´は、下式（４８）のように展開できる。
【数８９】
2015230715.tif 000091
式（４８）の括弧内の計算は、−１及び１からなる二値ベクトル同士の内積、又は−１及び１からなる二値ベクトルと−１、０、１からなる三値ベクトルとの内積である。従って、特徴ベクトルが任意の二値ベクトルにされ、かつ、実数行列を上記のとおり一般化した三値行列を用いて展開した場合にも、そのような特徴ベクトルと実数行列との積を高速に演算できる。
【０３５１】
４−９．応用例
次に、ベクトル演算部１０６における演算処理について説明する。上記の第１及び第２の例のベクトル演算部１０６は、二値化された特徴ベクトルｐと複数の実数ベクトルｑをまとめた実数行列Ｑとの積の計算を伴うものであるが、そのような演算処理は種々ある。すなわち、本実施の形態の上記の例は、特徴ベクトルを用いて演算処理を行なう種々の装置に応用できる。
【０３５２】
４−９−１．第４の実施の形態の第１の応用例
本応用では、本実施の形態がＨＯＧ特徴量を用いてＳＶＭにより複数種類の物体を認識する物体認識装置に応用される。図４１は、物体認識装置の構成を示すブロック図である。物体認識装置１０７は、ピラミッド画像生成部１７１と、ＨＯＧ特徴量抽出部１７２と、バイナリコード変換部１７３と、パラメータ決定部１７４と、パラメータ行列分解部１７５と、線形ＳＶＭ識別部１７６と、ピーク検出部１７７とを備えている。
【０３５３】
ピラミッド画像生成部１７１は、入力クエリとしての画像を取得して、当該画像を複数段階の倍率でそれぞれ縮小してなるＧ段のピラミッド画像を生成する。これにより、サイズの異なる物体に対処できる。このピラミッド画像生成部１７１は、図３７に示したコンテンツ取得部１６１に対応する。ＨＯＧ特徴量抽出部１７２は、ピラミッド画像の各段における画像を、１６×１６ピクセルのサイズのブロックに分割し、各ブロックからＨＯＧ特徴量を抽出する。ＨＯＧ特徴量抽出部１７２は、各ブロックからＤ次元の特徴量を抽出する。このＨＯＧ特徴量抽出部１７２は、図３７に示した特徴ベクトル抽出部１６２に対応する。バイナリコード変換部１７３は、各セルに与えられたＤ次元の特徴量を、ｄ次元の二値ベクトルに変換する。このバイナリコード変換部１７３は、図３７に示した特徴ベクトル二値化部１６３に対応する。
【０３５４】
パラメータ決定部１７４は、認識したい対象の種類（大人、子供、車、バイクといった種類であって、パラメータで定義される）ごとに、それぞれ線形ＳＶＭ識別部１７６における線形ＳＶＭにて用いる重みベクトルｗn（ｎ＝１，２，…，Ｌ）及び実数のバイアスｂn（ｎ＝１，２，…，Ｌ）を決定する。パラメータ決定部１７４は、学習用に用意された特徴量を用いて、学習処理によってＬ種類の重みベクトルｗn及びバイアスｂnを決定して、重みベクトルｗnをまとめた重み行列Ｗを生成する。このパラメータ決定部１７４は、図３７に示した実数行列取得部１６４に対応する。パラメータ行列分解部１７５は、重み行列Ｗを第１又は第２の例で説明した式（２９）又は式（４１）によって離散値の基底行列と係数行列との積に分解する。このパラメータ行列分解部１７５は、図３７に示した実数行列分解部１６５に対応する。
【０３５５】
線形ＳＶＭ識別部１７６は、線形ＳＶＭによって特徴ベクトルの識別を行なう。線形ＳＶＭ識別部１７６は、まず、ｓx×ｓyブロックをひとまとまりとして、ウィンドウを構成する。１つのウィンドウから抽出される特徴ベクトルは、ｓx×ｓy×ｄ次元のベクトルとなる。線形ＳＶＭ識別部１７６は、この特徴ベクトルに対して、下式（４９）の線形ＳＶＭを適用する。
【数９０】
2015230715.tif 000092
ここで、線形ＳＶＭにおける積演算ＷTｘは、第１又は第２の例として説明した実数行列と二値ベクトルの高速な積演算により実現できる。
【０３５６】
検出位置付近では、検出結果が固まることがある。そこで、ピーク検出部１７７は、周辺でｆ（ｘ）の値が最大になったところを、代表的な検出位置とする。この線形ＳＶＭ識別部１７６及びピーク検出部１７７は、特徴ベクトルを用いた処理を行なう構成であり、図３７のベクトル演算部１６６に対応する。
【０３５７】
次に、この物体認識装置１０７において、ＨＯＧ特徴量により、回転し得る物体を検出する例を説明する。図４２は、回転する道路標識について、それぞれの回転角度で辞書ｗn及びバイアスｂnを作成する場合を示している。図４２において左右方向は道路標識の回転角度θを示している。
【０３５８】
従来のアプローチでは、回転角度ごとに学習処理を行って辞書ｗn及びバイアスｂnを取得する。その後、入力画像からＨＯＧ特徴量を抽出して、ウィンドウ（スライディングウィンドウ）をＬ回適用することでこの道路標識の検出を行っている。しかしながら、このような従来の手法では、１ウィンドウあたりＬ回の内積計算が必要となり、計算量が多くなる。また、検出の角度分解能は２ｐｉ／Ｌであり、荒い。
【０３５９】
そこで、本応用例では、パラメータ決定部１７４が辞書ｗnをまとめて行列Ｑとし、ＳＶＭ識別部１７６は、下式（５０）により複数の辞書ｗnと特徴ベクトルｐとの内積計算をまとめて行う。
【数９１】
2015230715.tif 000093
このようにｋ個の整数基底に分解することにより、１ウィンドウあたり、ｋ回の二値と二値との内積演算又は二値と三値との内積演算で処理が可能となる。このとき、隣り合う辞書同士が似ているため、整数基底の数ｋを小さくすることができ、原理的には１クラスあたり１個以下（ｋ≦Ｌ）とすることも可能である。
【０３６０】
本応用例では、さらに、ピーク検出部１７７が、係数行列Ｃの性質に着目した検出分解能の高精度化を行う。図４３は、係数行列Ｃの性質を示す図である。実数ベクトルｑnが回転角度θをパラメータとして、そのパラメータに従って変化するものである場合には、複数の実数ベクトルｑnをまとめて実数行列Ｑを生成する際に、図４２に示すように、複数の実数ベクトルｑnをパラメータθの順に並べると、図４３に示すように、係数行列Ｃの実数ベクトルｑnが並べられた方向と同方向の各ベクトル、即ち係数行列Ｃの各行ベクトルの要素の行方向の変化が滑らかになる。
【０３６１】
そこで、ピーク検出部１７７は、係数行列Ｃの行ベクトルを多項式でフィッティングして、下式（５１）のように連続関数で表現する。
【数９２】
2015230715.tif 000094
ここで、αiは、フィッティングの係数である。
【０３６２】
これを用いて識別関数の式を整理すると、回転角度θにおける識別関数は下式（５２）のようにパラメータθに関する連続関数の形式で表現できる。
【数９３】
2015230715.tif 000095
ピーク検出部１７７は、この識別関数を用いてピークの検出を行う。ｃi（θ）は式（５１）に示すように多項式であるから、ｆθ（ｐ）もまた連続関数（連続の多項式）となる。図４４は、ｆθ（ｐ）の例を示すグラフである。図４４において、横軸は回転角度θであり、縦軸はｆθ（ｐ）である。ピーク検出部１７７は、ｆθ（ｐ）が正の最大をとるときのθを対象の回転角度、即ち特徴ベクトルｐのパラメータ値として検出する。
【０３６３】
以上のように、複数の辞書ｗnをまとめて行列Ｑを生成する際に、複数の辞書ｗnをそれが滑らかに変化するように、パラメータ（図４２の例ではθ）の順に並べて行列Ｑを生成することで、識別関数をそのパラメータに関する多項式の形式で表現できるので、高い分解能でそのパラメータを検出できるようになる。
【０３６４】
なお、上記ではパラメータを回転角度として説明したが、パラメータは例えばスケールであってもよい。すなわち、図３６のようにウィンドウの大きさは固定とし、ウィンドウ内における人物のサイズ（スケール）ごとに、別々に識別器を学習しておき、スケールσに関して多項式のフィッティングを行い、スケールσに関して識別器のピークを求めることで、高精度にスケール推定をおこなえるようになる。また、このように工夫することで、ピラミッド画像自体の生成を不要とできる。さらにパラメータが複数であってもよい。例えば、回転角度θとスケールσの両方に関して上記の多項式へのフィッティングを行ってもよい。この場合、係数はｃi（θ，σ）のように、二次元の多項式となる。
【０３６５】
また、係数αiは、まず係数行列Ｃを求めてから各行をフィッティングして求めることができるが、係数行列Ｃの個々の要素ｃn,iを求めずに直接係数αiを求めてもよい。さらに、フィッティングする関数は多項式でなくてもよく、例えば三角関数（サイン、コサイン）にフィッティングしてもよい。
【０３６６】
４−９−２．第４の実施の形態の第２の応用例
本応用例では、本実施の形態がｋ−ｍｅａｎｓクラスタリングに応用される。図４５は、ｋ−ｍｅａｎｓクラスタリング装置の構成を示すブロック図である。ｋ−ｍｅａｎｓクラスタリング装置１０８は、コンテンツ取得部１８１と、特徴ベクトル生成部１８２と、特徴ベクトル二値化部１８３と、代表行列更新部１８４と、収束判定部１８５と、代表行列分解部１８６と、最近接代表ベクトル探索部１８７とを備えている。
【０３６７】
コンテンツ取得部１８１は、クラスタリングの対象となるＮ個のコンテンツを取得する。特徴ベクトル生成部１８２は、コンテンツ取得部１８１にて取得した各コンテンツからそれらの特徴量を特徴ベクトルｐとして抽出する。特徴ベクトル二値化部１８３は、特徴ベクトル抽出部１８２にて抽出された各特徴ベクトルを二値化する。
【０３６８】
代表行列更新部１８４は、まず、特徴ベクトル二値化部１８３で二値化されたＮ個の特徴ベクトルからｋ（＝Ｌ）個をランダムに選出してこれを代表ベクトルｑn（ｎ＝１，２，…，Ｌ）とし、これらの代表ベクトルｑnをまとめた行列を代表行列Ｑとする。収束判定部１８５は、代表行列更新部２４が代表行列を更新するごとに収束判定を行なう。収束判定部１８５にて収束したと判定された場合には、ｋ−ｍｅａｎｓクラスタリング装置１０８はクラスタリングの処理を終了する。代表行列分解部１８６は、代表行列更新部１８４にて更新された代表行列を離散値（二値又は三値）行列に分解する。
【０３６９】
最近接代表ベクトル探索部１８７は、特徴ベクトル二値化部１８３より入力されるＮ個の二値ベクトルをそれぞれ最も近傍の代表ベクトルｑnに所属させる。最近接代表ベクトル探索部１８７は、この結果を代表行列更新部１８４に出力する。代表行列更新部１８４は、各代表ベクトルｑnについて、それに所属する特徴ベクトル（二値化されている）の平均ベクトルを算出して、これを新しい代表ベクトルｑnとする。このようにして代表行列更新部１８４で更新される代表ベクトルｑnは、二値ベクトルの平均で算出されるので、実数ベクトルとなる。
【０３７０】
従って、仮に代表行列分解部１８６がなければ、最近接代表ベクトル探索部１８７は、更新された代表ベクトル（実数ベクトル）と特徴ベクトル（二値ベクトル）との距離を求めるためにそれらの内積を計算しなければならない。そこで、本応用例では、上記のように、この代表ベクトルｑn（実数ベクトル）の集合である代表行列Ｑを代表行列分解部１８６によって、第１又は第２の例で説明したように、離散値（二値又は三値）行列と実数の係数行列との積に分解する。それによって、最近接代表ベクトル探索部１８７における、各特徴ベクトルと各代表ベクトルとの距離の計算を高速にでき、よって各特徴ベクトルが最も近接する代表ベクトル（すなわち、所属すべき代表ベクトル）を高速に探索できる。
【０３７１】
４−９−３．第４の実施の形態の第３の応用例
本応用例では、本実施の形態がｋ−ｍｅａｎｓ  ｔｒｅｅによる近似最近傍探索に応用される。本応用例の近似最近傍探索装置は、ｋ−ｍｅａｎｓを用いたｋ−分木による近似最近傍探索手法として、Marius Muja and David G. Lowe, "Fast Approximate Nearest Neighbors with Automatic Algorithm Configuration", in International Conference on Computer Vision Theory and Applications (VISAPP' 09), 2009（http://www.cs.ubc.ca/~mariusm/index.php/FLANN/FLANN、http://people .cs.ubc.ca/~mariusm/uploads/FLANN/flann_visapp09.pdf）に提案されている手法を採用する。
【０３７２】
具体的には、本応用例の近似最近傍探索装置は、Ｎ個のデータに対してｋ−ｍｅａｎｓを再帰的に適用することでｋ−分木を構築し、上記提案の木探索の原理により近似的に最近傍点を探索する。この手法は、データが実数ベクトルであり、かつノードに登録されている代表ベクトルが二値ベクトルである場合を前提として設計される。但し、データが二値ベクトルであって、ノードに登録されている代表ベクトルが実数ベクトルである場合にも、第１又は第２の例を採用することで、木探索を高速化できる。
【０３７３】
４−１０．第４の実施の形態の変形例
特徴量演算装置１０６において、コンテンツ取得部１６１、特徴ベクトル生成部１６２、特徴ベクトル二値化部１６３、実数行列取得部１６４、実数行列分解部１６５、及びベクトル演算部１６６の一部と他の部分とが別々の装置として構成されていてもよい。特に、コンテンツ取得部１６１、特徴ベクトル生成部１６２、特徴ベクトル二値化部１６３、及びベクトル演算部１６６が特徴演算装置１０６に搭載され、実数行列取得部１６４、及び実数行列分解部１６５が別の装置に搭載されてよい。この場合には、実数行列分解部１６５にて分解された複数の実数行列が特徴演算装置１０６のデータベース１６７に記憶され、ベクトル演算部１６６は、データベース１６７から分解された複数の実数行列を取得する。
【０３７４】
上記の実施の形態の例では、基底行列Ｍが二値又は三値であったが、基底行列Ｍが二値又は三値でなくともよい。基底行列Ｍのとり得る要素の種類が有限の数であれば上記の分解手法を適用して実数行列を分解することができる。また、係数行列Ｃも、基底行列Ｍと同様にあらかじめ定められた離散的な値でもよい。例えば、係数行列Ｃの要素を２のべき乗に制約してもよく、そうすることで、処理を高速化できる。また、分解する実数行列Ｑの要素の平均値が著しく大きい（若しくは小さい）場合、すなわち、平均値が０から著しく離れている場合には、この平均値をあらかじめ実数行列Ｑの各要素から引いてオフセット実数行列を生成し、このオフセット実数行列Ｑ´を基底行列Ｍと係数行列Ｃに分解すると、より少ない基底で式（２９）や式（４１）の近似分解を行うことができる。
【０３７５】
なお、第１及び第２の例において、コンテンツ取得部１６１にて取得されるコンテンツデータは、車両から得られる計測データであってよい。さらに、車両から得られる計測データは、例えば、車両に設置されたカメラで撮影された画像データ、車両に設置されたセンサで計測されたセンシングデータであってよい。この場合に、関連性判定装置としての特徴演算装置１０６のベクトル演算部１６６は、計測データと辞書データとの関連性を判定する。例えば、計測データとして、車両に設置されたカメラで撮影された画像データが取得される場合には、辞書データとして複数の人物画像のデータがデータベースに保存されており、関連性判定装置としての特徴演算装置１０６のベクトル演算部１６６は、上記の応用例のいずれかによって、画像データの画像に人物が含まれるか否かを判定してよい。
【０３７６】
５．第５の実施の形態
上記の第１ないし第４の実施の形態は、組み合わせて実施することが可能である。特に、第１の実施の形態は、第２ないし第４の実施の形態と組み合わせることができる。例えば、第３の実施の形態の第１の応用例として説明した物体認識装置１０４（図３３）におけるピラミッド画像生成部１４１、ＨＯＧ特徴量抽出部１４２、バイナリ変換部１４３、及び線形ＳＶＭ識別部１４６が、第１の実施の形態として説明したハイブリッド・ピラミッド法（図９）に従って各処理を行ってよい。さらに、この物体認識装置１０４のパラメータ分解部１４５が、第４の実施の形態の特徴量演算装置１０５（図３７）の実数行列分解部１５５と同様に、複数の実数ベクトルからなる実数行列を、係数行列と、要素として二値または三値の離散値のみを持つ複数の基底ベクトルからなる基底行列との積に分解して、線形ＳＶＭ識別部１４６が、特徴ベクトルと複数の実数ベクトルの各々との内積の計算として、特徴ベクトルと基底行列との積を計算し、さらに当該積と係数行列との積を計算して、その結果を用いて、複数の実数ベクトルの各々と特徴ベクトルとの関連性を判定してもよい。
【０３７７】
５−１．第５の実施の形態の第１の例
図４６は、第５の実施の形態の第１の例の識別装置における処理を示すブロック図である。この識別装置１０９における処理は、図９に示した二値高速識別の処理に相当する。本例では、入力コンテンツから第１の実施の形態に従ってＨＯＧ特徴量が抽出されて二値化される。識別装置１０９は、入力コンテンツの二値特徴量が得られると、それに対してサイズの異なる複数種類のウィンドウをスライドさせて、ウィンドウ内から特徴量を切り出す（ステップＳ２１）。この切り出し処理は、例えば、横４ブロック×縦８ブロック、横５ブロック×縦１０ブロック・・・というように、ウィンドウのサイズ（縦横ブロック数）を変えながら切り出せばよい。これにより、サイズの異なる複数種類のウィンドウの切り出しが実現できる。この場合、それぞれ切り出した特徴量の次元数は、切り出したときの縦横ブロック数に応じて異なるものになる。
【０３７８】
三値分解済み辞書１１９には、サイズの異なる複数種類のウィンドウに対応する辞書（識別モデル）が記憶されている。この三値分解済み辞書１１９は、第３の実施の形態に従って、実数ベクトルを三値の基底行列と係数の積に分解することで得られたものである。
【０３７９】
特徴量が切り出されると、切り出された二値特徴量と三値分解済み辞書１１９とを用いて、第３の実施の形態に従って、三値基底のカスケードによる認識が行われる（ステップＳ２２）。このようにカスケード識別を行うことで、識別処理を高速化できる。
【０３８０】
５−２．第５の実施の形態の第２の例
図４７は、第５の実施の形態の第２の例の識別装置における処理を示すブロック図である。この識別装置１１０における処理は、図９に示した二値高速識別の処理に相当する。本例でも、入力コンテンツから第１の実施の形態に従ってＨＯＧ特徴量が抽出されて二値化される。入力コンテンツの二値特徴量が得られると、ウィンドウ内から特徴量を切り出す処理が行われる（ステップＳ３１）。本例では、特徴量を切り出す処理（ステップＳ３１ ）は、複数の辞書に対して一度だけ行う。切り出しの処理が一度だけになることで、処理が簡略化される。
【０３８１】
三値分解済み辞書１１０１及び三値分解済み辞書１１０２には、認識したい認識対象に関して、認識したいサイズごとに別々に学習された辞書（識別モデル）を記憶しておけばよい。ステップＳ３１では切り出し処理が一度だけであるため、どの辞書においても検出のためのウィンドウのサイズが一定であるが、学習サンプルを図３６ように認識対象のサイズ（倍率）を変え、倍率ごとに独立して辞書を学習することで、異なるサイズの対象を認識できるようになる。三値分解済み辞書１１０１、 １１０２は、第３の実施の形態に従って、実数ベクトルを三値の基底行列と係数の積に分解することで得られたものである。
【０３８２】
特徴量が切り出されると（ステップＳ３１）、識別装置１１０は、サイズのことなる複数（Ｋ種類）のウィンドウの各々について、識別処理Ｓ３０を行う。各識別処理Ｓ３０では、切り出された二値特徴量と三値分解済み辞書１１０１とを用いて、第３の実施の形態に従って、三値基底のカスケードによる識別が行われる（ステップＳ３２）。このカスケード識別（ステップＳ３２）において検出がされなかった場合には、識別装置１１０は、そのサイズのウィンドウについて、直ちに非検出の結果を出力する。識別装置１１０は、二段階のカスケード識別を行う。最初のカスケード識別（ステップＳ３２）にて検出された場合には、この二値特徴量に対して、第２の実施の形態に従って、ＸＯＲとビットシフトによる共起をとることでＦＩＮＤ特徴量を生成する（ステップＳ３３）。
【０３８３】
ＦＩＮＤ特徴量が生成されると（ステップＳ３３）、ＦＩＮＤ特徴量と三値分解済み辞書１１０２とを用いて、第３の実施の形態に従って、三値基底のカスケードによる識別が行われる（ステップＳ３４）。このように、共起を用いないカスケード識別で精度の粗い識別を行って、検出されたものについて共起を用いたカスケード識別をするという二段階のカスケード識別によって、さらなる高速化が可能である。
【０３８４】
５−２．第５の実施の形態の第３の例
図４８は、第５の実施の形態の第３の例の識別装置における処理を示すブロック図である。この識別装置１２０における処理は、図９に示した二値高速識別の処理に相当する。本例でも、入力コンテンツから第１の実施の形態に従ってＨＯＧ特徴量が抽出されて二値化される。入力コンテンツの二値特徴量が得られると、識別装置１２０は、ウィンドウをスライドさせながら、ウィンドウ内から特徴量を切り出す（ステップＳ４１）。本例では、特徴量を切り出す処理（ステップＳ４１）は、複数の辞書に対して一度だけ行う。切り出しの処理が一度だけになることで、処理が簡略化される。
【０３８５】
三値分解済み辞書１２０１には、認識したい認識対象に関して、認識したいサイズごとに別々に学習された辞書（識別モデル）を記憶しておく。ステップＳ４１では切り出し処理が一度だけであるため、どの辞書においても検出のためのウィンドウのサイズが一定であるが、学習サンプルを図３６ように認識対象のサイズ（倍率）を変え、倍率ごとに独立して辞書を学習することで、異なるサイズの対象を認識できるようになる。特徴量の切り出し（ステップＳ４１）が一度だけであり、どの辞書においても次元数が同じであるため、第４の実施の形態を適用可能となる。そこで、この三値分解済み辞書１２０１は、第４の実施の形態に従って、複数の実数ベクトルをまとめた実数行列を三値の基底行列と係数行列の積に分解することで得られたものとする。
【０３８６】
特徴量が切り出されると（ステップＳ４１）、識別装置１２０は、切り出された二値特徴量と三値分解済み辞書１２０１とを用いて、サイズのことなる複数（Ｋ種類）のウィンドウの各々について、識別処理を行う（ステップＳ４０）。この識別処理では、第４の実施の形態に従って、三値基底のカスケードによる識別を行うが（ステップＳ４２）、このとき、全ての辞書に対応する線形識別関数を一括して計算する。一括して計算した線形識別関数のうち、符号が正になった辞書に対応するウィンドウを検出結果として出力する（ステップＳ４３）。このように、全ての辞書に対応する線形識別関数を一括して計算できるようになるため、さらなる高速化が可能である。
【産業上の利用可能性】
【０３８７】
本発明は、特徴量の抽出回数及び二値化の処理回数を減らすことができるので、関連性判定の処理を高速化できるという効果を有し、画像から抽出された特徴量を演算する特徴量演算装置等として有用である。
【符号の説明】
【０３８８】
１０  入力画像
１１  リサイズ画像
１０１  特徴量変換装置
１１１〜１１Ｎ  ビット再配列器
１２１〜１２Ｎ  論理演算器
１３０  特徴統合器
１０２  特徴量変換装置
２１１〜２１Ｎ  二値化器
２２１〜２２Ｎ  共起要素生成器
２３０  特徴統合器
１０３  特徴量演算装置
１３１  コンテンツ取得部
１３２  特徴ベクトル生成部
１３３  特徴ベクトル二値化部
１３４  実数ベクトル取得部
１３５  実数ベクトル分解部
１３６  ベクトル演算部（内積演算部）
１０５  ｋ−ｍｅａｎｓクラスタリング装置
１５１  コンテンツ取得部
１５２  特徴ベクトル生成部
１５３  特徴ベクトル二値化部
１５４  代表ベクトル更新部
１５５  収束判定部
１５６  代表ベクトル分解部
１５７  最近接代表ベクトル算出部
１０６  特徴量演算装置
１６１  コンテンツ取得部
１６２  特徴ベクトル生成部
１６３  特徴ベクトル二値化部
１６４  実数行列取得部
１６５  実数行列分解部
１６６  ベクトル演算部（積演算部）
１０７  物体認識装置
１７１  ピラミッド画像生成部
１７２  ＨＯＧ特徴量抽出部
１７３  バイナリコード変換部
１７４  パラメータ決定部
１７５  パラメータ行列分解部
１７６  線形ＳＶＭ識別部
１７７  ピーク検出部
１０８  ｋ−ｍｅａｎｓクラスタリング装置
１８１  コンテンツ取得部
１８２  特徴ベクトル生成部
１８３  特徴ベクトル二値化部
１８４  代表行列更新部
１８５  収束判定部
１８６  代表行列分解部
１８７  最近接代表ベクトル算出部
１０９  識別装置
１１９  三値分解済み辞書
１０９、１１０、１２０  識別装置
１１０１、１１０２、１２０１  三値分解済み辞書
【図２】
2015230715.tif 000096
【図３】
2015230715.tif 000097
【図４】
2015230715.tif 000098
【図５】
2015230715.tif 000099
【図６】
2015230715.tif 000100
【図８】
2015230715.tif 000101
【図９】
2015230715.tif 000102
【図１０】
2015230715.tif 000103
【図１１】
2015230715.tif 000104
【図１２】
2015230715.tif 000105
【図１３】
2015230715.tif 000106
【図１４】
2015230715.tif 000107
【図１５】
2015230715.tif 000108
【図１６】
2015230715.tif 000109
【図１７】
2015230715.tif 000110
【図１８】
2015230715.tif 000111
【図１９】
2015230715.tif 000112
【図２０】
2015230715.tif 000113
【図２２】
2015230715.tif 000114
【図２６】
2015230715.tif 000115
【図２７】
2015230715.tif 000116
【図２８】
2015230715.tif 000117
【図２９】
2015230715.tif 000118
【図３１】
2015230715.tif 000119
【図３２】
2015230715.tif 000120
【図３３】
2015230715.tif 000121
【図３４】
2015230715.tif 000122
【図３５】
2015230715.tif 000123
【図３６】
2015230715.tif 000124
【図３７】
2015230715.tif 000125
【図３８】
2015230715.tif 000126
【図３９】
2015230715.tif 000127
【図４０】
2015230715.tif 000128
【図４１】
2015230715.tif 000129
【図４３】
2015230715.tif 000130
【図４４】
2015230715.tif 000131
【図４５】
2015230715.tif 000132
【図４６】
2015230715.tif 000133
【図４８】
2015230715.tif 000134
【図４９】
2015230715.tif 000135
【図１】
2015230715.tif 000136
【図７】
2015230715.tif 000137
【図２１】
2015230715.tif 000138
【図２３】
2015230715.tif 000139
【図２４】
2015230715.tif 000140
【図２５】
2015230715.tif 000141
【図３０】
2015230715.tif 000142
【図４２】
2015230715.tif 000143
【図４７】
2015230715.tif 000144