(57)【要約】【課題】  解決しようとする課題は、特徴量を算出する際にメモリの並列性を効率的に利用しつつ特徴量を算出することにある。【解決手段】 上記課題を解決するために、本発明の実施形態の特徴量算出装置は、入力データの特徴値のヒストグラムに基づく特徴量を算出する特徴量算出装置において、前記入力データの一部を保持するためのバッファと、複数のバンクを有し、前記ヒストグラムの算出結果を保持するためのメモリと、前記特徴値を算出しようとする対象データの前記バッファ上での位置と、算出された前記特徴値のカテゴリを投票する前記メモリ上の位置とが対応されたテーブルを生成する生成部と、前記対象データの前記特徴値のカテゴリを求め、前記テーブルが示す前記メモリ上の位置に投票を行う投票部とを備える。【選択図】図１
2012053769.tif 000002
【特許請求の範囲】
【請求項１】
入力データの特徴値のヒストグラムに基づく特徴量を算出する特徴量算出装置において、
前記入力データの一部を保持するためのバッファと、
複数のバンクを有し、前記ヒストグラムの算出結果を保持するためのメモリと、                            
前記特徴値を算出しようとする対象データの前記バッファ上での位置と、算出された前記特徴値のカテゴリを投票する前記メモリ上の位置とが対応されたテーブルを生成する生成部と、
前記対象データの前記特徴値のカテゴリを求め、前記テーブルが示す前記メモリ上の位置に投票を行う投票部とを
備える特徴量算出装置。
【請求項２】
前記メモリは、Ｎ個のバンクを有し、
前記生成部は、Ｎ個以下の組合せが対応されたテーブルを生成する場合には、前記投票する前記メモリ上の位置が組合せ毎に異なる前記バンクに属するような前記テーブルを生成する、
請求項１記載の特徴量算出装置。
【請求項３】
前記生成部は、前記バッファが保持する前記入力データの数に応じた数の前記テーブルを生成し、
前記投票部は、前記テーブルごとに並列して投票を行う
請求項２に記載の特徴量算出装置。
【請求項４】
前記生成部は複数の前記テーブルを生成し、
前記投票部は、前記対象データの前記入力データ内での位置に応じて参照する前記テーブルを選択し、選択された前記テーブルに応じて投票を行う
請求項１記載の特徴量算出装置。
【請求項５】
前記入力データは画像データであり、
前記投票部は、前記画像データの画素値勾配から前記カテゴリを求めることを特徴とする請求項４記載の特徴量算出装置。
【請求項６】
入力データのクラスを識別する識別装置において、
前記入力データの一部を保持するためのバッファと、
複数のバンクを有し、前記ヒストグラムの算出結果を保持するためのメモリと、
前記特徴値を算出する対象データの前記バッファ上での位置と、算出された前記特徴値のカテゴリに応じた重み係数を加算する前記メモリ上の位置とが対応されたテーブルを生成する生成部と、
前記対象データの前記特徴値を求め、求められた前記特徴値のカテゴリに応じて、前記テーブルが示す前記メモリ上の位置の前記重み係数に値を加算する投票部と、
前記入力データに対して求めた前記重み係数と、前記カテゴリごとの前記特徴値とから識別結果を求める算出部と、
を備える識別装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、処理対象のデータのヒストグラムに基づく特徴量を算出する装置及び処理対象のデータの識別を行う装置に関する。
【背景技術】
【０００２】
処理対象のデータ（画像、音声等）のヒストグラム（頻度値分布）を要素とする特徴量を用いて、処理対象のデータのクラス識別・特定部分の検出などに利用する技術がある。
【０００３】
ヒストグラムを算出するための各ビン（カテゴリ）への投票処理は、メモリへのランダムアクセスとなっていた。そのため、投票処理を並列化できず高速に計算することが困難であった。メモリを複数のバンクに分割しヒストグラムのビンとメモリアドレスのマッピングを行う技術がある。これによって並列計算ユニットそれぞれが別のバンクにアクセスすることでヒストグラムを並列処理で求めていた。しかしながら、上記従来技術では、ヒストグラムのビンとメモリ空間のマッピングが固定されているため、メモリ空間および並列性の効率が低下し、処理速度が下がってしまっていた。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Masayuki Hiromoto and Ryusuke Miyamoto: "Hardware Architecture for High-Accuracy Real-Time Pedestrian Detection with CoHOG Features",  in Proc. of the 12th International Conference on Computer Vision Workshops (ICCVW2009) (Kyoto, Japan), pp.894-899, Oct. 2009.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、メモリの並列性を効率的に利用しつつ特徴量を算出することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明の実施形態の特徴量算出装置は、入力データの特徴値のヒストグラムに基づく特徴量を算出する特徴量算出装置において、前記入力データの一部を保持するためのバッファと、複数のバンクを有し、前記ヒストグラムの算出結果を保持するためのメモリと、前記特徴値を算出しようとする対象データの前記バッファ上での位置と、算出された前記特徴値のカテゴリを投票する前記メモリ上の位置とが対応されたテーブルを生成する生成部と、前記対象データの前記特徴値のカテゴリを求め、前記テーブルが示す前記メモリ上の位置に投票を行う投票部とを備える。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態の特徴量算出装置を示すブロック図。
【図２】メモリ１０３の一例を示す図。
【図３】第１の実施形態の特徴量算出装置の動作を表すフローチャート。
【図４】第１の実施形態のテーブルを生成する動作を表すフローチャート。
【図５】第１の実施形態のヒストグラム特徴量を算出する動作を表すフローチャート。
【図６】画像の輝度値ヒストグラムを求める際の（ａ）データバッファの構造、（ｂ）位置データ、（ｃ）テーブルの例を示す図。
【図７】画像の輝度値ヒストグラムを求めるときの（ａ）データバッファの構造、（ｂ）位置データ、（ｃ）テーブルの例を示す図。
【図８】輝度勾配のＣｏＨＯＧ特徴量を計算するときの（ａ）データバッファの構造、（ｂ）位置データ、の例を示す図。
【図９】ＣｏＨＯＧ特徴量計算における勾配方向ペアの部分集合の例を示す図。
【図１０】第２の実施形態の識別装置を示すブロック図。
【図１１】第２の実施形態の動作を表すフローチャート（識別関数計算部分）。
【発明を実施するための形態】
【０００８】
本発明の実施形態について説明する。なお、互いに同様の動作をする構成や処理には共通の符号を付して、重複する説明は省略する。
【０００９】
（第１の実施形態）
本実施形態の特徴量算出装置１１０は、処理対象の入力データの所定のヒストグラムを要素とする特徴量を算出する。ヒストグラムとは、処理対象の入力データの特徴値に対して各カテゴリ（ビン）の度数（データの個数）を求めた頻度値分布を示す。出力される特徴量は、算出されたヒストグラムの各カテゴリの度数を並べたものや、算出されたヒストグラムのうち特定のカテゴリの度数を組み合わせた値を並べたもの等のいずれであっても構わない。本実施形態では、処理対象の入力データが画像データである場合の例について述べるが、音声データ等のヒストグラム特徴量の算出に用いることも可能である。なお、ヒストグラムを算出する際の対象となる特徴値は、例えば画素値や画素値勾配等の処理対象の特性を示す値であればいずれであっても構わない。詳細については後述する。本実施形態では、特徴量算出装置１１０がＰＣ等に組み込まれた例について述べる。
【００１０】
図１は、特徴量算出装置１１０のブロック図である。特徴量算出装置１１０の外部には、処理対象の入力データを保持することができるメモリ装置１２０と、特徴量算出装置１１０のバッファ１０１に対してデータの書込みや消去を指示する制御装置１００とを備える。制御装置１００は、バッファ１０１が保持するデータのヒストグラム特徴量の算出処理が終了すると、バッファ１０１に対してデータの消去を指示し、消去が完了するとメモリ装置１２０が保持する入力データの一部をバッファ１０１に送る。
【００１１】
特徴量算出装置１１０は、入力データの一部を保持するためのバッファ１０１、バッファ１０１上で特徴値を算出すべき位置を記憶する位置データ保持部１０２、複数のバンクを有しヒストグラムの算出結果を保持するためのメモリ１０３、バッファ１０１上で特徴値を算出する位置と、算出された前記特徴値の投票先となるメモリ１０３上での位置とが対応されたテーブル１０５を生成する生成部１０４、対象となるデータの特徴値を算出し、算出された特徴値のカテゴリに応じて、前記テーブルが示す前記メモリ上の位置に投票を行う投票部１０６、を備える。メモリ１０３は独立に並列してアクセス可能な最大数Ｎが設定されているとする。このＮをメモリ１０３の並列数と呼ぶことにする。
【００１２】
図２は、メモリ１０３の一例を示す図である。図２の例では、メモリ１０３が複数（Ｎ個）のバンク（ユニット）に分かれている例を示す。それぞれのバンクに対して、独立にアクセスできるため、並列数＝バンクの数となる。メモリ１０３上への投票処理を並列に行うことで、ヒストグラム特徴量を算出する処理を高速化できる。生成部１０４は、この並列処理の数をできるだけメモリ１０３の並列数Ｎに近くなるよう投票先のメモリアドレスを決めるのが好ましい。
【００１３】
図３は、本実施形態の特徴量算出装置の動作を表すフローチャートである。
【００１４】
生成部１０４は、位置データ保持部１０２が示す位置データを取得する（ＳＴ３０１）。取得した位置データに基づいて、生成部はテーブル１０５を生成する（ＳＴ３０２）。制御装置１００は、バッファに対して入力データの一部を転送する（ＳＴ３０３）。投票部１０６は、特徴値を求め、特徴値に対応するメモリ１０３のビンへの投票を行ってヒストグラム特徴量を算出する（ＳＴ３０４）。
【００１５】
図４は、生成部１０４が行うＳＴ３０２の詳細な動作を示すフローチャート図である。生成部１０４は、メモリ１０３の並列数Ｎを取得する（ＳＴ４０１）。並列数はメモリ１０３に固有の値のため、毎回メモリ１０３に問い合わせる必要はない。ＲＯＭ（図示しない）にその値を書き込んでおく、または生成部１０４のプログラムに固定値として書き込んでおくなどして取得しても良い。生成部１０４は、テーブル１０６のインデックスｊを１に初期化する（ＳＴ４０２）。生成部１０４は複数個のテーブルを生成することができる。生成部１０４は、各テーブルの要素のインデックスｉを１に初期化する（ＳＴ４０３）。生成部１０４は、位置データ保持部１０２から位置データを一つ読み出す（ＳＴ４０４）。位置データは、特徴値を算出する対象のデータがバッファ上でどの位置に記憶されているかを示す。生成部１０４は、読み出したデータの投票先メモリ位置を決定する（ＳＴ４０５）。図２のようなメモリ１０３構成の場合、メモリ位置とは１つのヒストグラムデータが格納されるメモリブロックの先頭アドレスのことである。これはメモリバンクのＩＤ番号Ｂとバンク内のアドレスＡの組で表現できる。メモリ位置の決定により投票を行うヒストグラムは決まるが、ヒストグラムのどのビンに投票するかはデータの特徴値によって決まる。メモリ位置の組（Ｂ,Ａ）について、一つのテーブルに含まれる投票先のメモリバンクは全て異なっている必要がある。これは、一度に並列して投票処理を実現するには投票先のメモリバンクが全て異なっている必要があるからである。最も簡単にこれを実現するにはＳＴ４０５の処理をＢ＝１から始めて、１ずつ足していけば良い。アドレスについてはそれぞれのバンクの最も小さいアドレスから順に与えていくのが簡単である。もちろんＮ回の繰り返しで１〜Ｎが一回ずつ現れるような数字列を生成できればどのような手法を用いても良い。例えばバンクのIDをインクリメントするのと同時にアドレスもインクリメントしていくというやり方もある。また、最も大きなアドレスからデクリメントしながら割り当てていっても問題ない。このようにして決めたメモリ位置とバッファ１０１からのデータ読み出し位置をテーブル１０５のｊ番目のテーブルの第ｉ要素に書き込む。そしてテーブル要素のインデックスｉをインクリメントする（ＳＴ４０６）。全ての位置データを読み出したかを判定する（ＳＴ４０７）。全て読み込んでテーブルに書き込んでいればＳＴ４１０に進んで処理を終了し、そうでなければＳＴ４０８に進む。ｊ番目のテーブルに書き込んだ要素数ｉが並列数Ｎを超えていないかを判定する（ＳＴ４０８）。ＳＴ４０８の条件を満たしているとき、テーブルには投票先としてバンク１〜Ｎが一度ずつ登場しているので、これ以上並列に処理することはできない。そこで新たなテーブルを生成して位置データと投票先のメモリ位置の対応を追加する（ＳＴ４０９）。以上の処理により、ヒストグラム算出時にバッファのどの位置からデータを読み込むか、読み込んだデータをメモリのどこに投票するかの対応関係が決まる。さらに、一つのテーブルに書かれている投票先のメモリ位置は全て別バンクになっているため、一つのテーブルに書かれた投票処理は並列に実行可能である。ここで示したテーブルの生成方法は位置データが並列数Ｎを上回る場合、最初のテーブルの要素数が必ずＮになり、その後のテーブルに残ったものが入る。これだと要素数に偏りが出るため、位置データの要素数をＭとして、Ｍ／Ｎ以上で最小の整数Ｋを求めてテーブルの数を先に算出しておき、一つのテーブルにＭ／Ｋ（端数がある場合は切り上げ、もしくは切り捨て）個の要素を割り当てていくというやり方もある。その場合はＳＴ４０８のテーブルの切り替え条件がことなるだけでテーブルを生成することができる。要素数がＮ以下でそれぞれの投票先メモリ位置のバンクが異なっていればこの他のテーブル生成方法であっても構わない。
【００１６】
図５は、投票部１０６が行うＳＴ３０４の処理の詳細を示す図である。テーブルのインデックスｊを１に初期化する（ＳＴ５０１）。制御装置１００がバッファ１０１にデータを充填する（ＳＴ５０２）。ここで読み込むデータは画像データの輝度値、輝度値を量子化した値、音声データ、その他の数値列など、ヒストグラムを算出できるデータ列であれば何でも良い。読み出し元もＲＡＭ部、ディスク部、フラッシュメモリなど特に限定されない。これらの読み出し元からは一度に複数のデータを読み出すことができないので、バッファ１０１に一部のデータを読み出して一時的に蓄積する。バッファ１０１は例えばレジスタで構成されており、バッファ中の全てのデータを並列して読み出せる仕様になっているとする。ＳＴ５０３から５０６までの処理は並列して同時に実行される。
【００１７】
投票部１０６は、テーブル１０５からバッファを読み出す位置と投票先のメモリ位置の対応を読み込む（ＳＴ５０３）。読み込むテーブル１０５のインデックスは並列に実行されるＭ個の実行単位それぞれで異なる。投票部１０６は、バッファ１０１の指定された位置からデータｄを読み出す（ＳＴ５０４）。テーブル１０５に書かれたメモリバンクＩＤとアドレスの組（Ｂ, Ａ）と前述のデータｄにより投票先のビンのアドレスを決定する（ＳＴ５０５）。（Ｂ, Ａ）の組により指定されるメモリ空間にはそれぞれ１つのヒストグラムが格納されており、データｄにより投票するビンを決定する。本実施形態で算出されるヒストグラム特徴量とはいくつかのヒストグラムを並べたものである。投票部１０６は、決められたヒストグラムのビンに対して投票処理を実行する（ＳＴ５０６）。つまり、指定されたビンのデータをメモリから読み出し、値をインクリメントし、元のメモリ位置に書き込むという処理を行う。このときビンの値に対して単に１を足すのではなく、別に指定された値を加算していっても良い。ここまでの処理でＭ個の投票処理を並列に実行する。
【００１８】
あとは算出していないテーブルがないかをチェックして（ＳＴ５０７、５０８）、残りがあればＳＴ５０３からの並列投票処理を繰り返す。テーブルを全て処理したらＳＴ５０９に進み、全てのデータを処理したかをチェックする。データが残っていればＳＴ５１０で制御装置１００はバッファの一部のデータを捨てて、新たなデータをバッファに読み込む（ＳＴ５０１，５０２）。全てのデータを処理し終えたらＳＴ５１１に進んで全体の処理を終了する。投票したヒストグラムを全て並べたものがヒストグラム特徴量となる。
【００１９】
次にいくつかの事例を挙げて具体的な算出の様子を説明する。まず、簡単な例として、入力データが図６（a）の画像データ６０１、バッファ１０１が６０２のように１画素の輝度値だけを読み出す処理で画像全体の輝度ヒストグラムを算出する事例を挙げる。これは画像の明るさを補正するための前処理として典型的に行われる処理である。この場合、バッファ１０１には一度に一画素をしか保持できないので、位置データには図６（b）のように１つだけが記述されることになる。これはバッファ１０１の位置１(保持された唯一の輝度データ)を読み込んでビンにすることを表す。このデータから生成されるテーブル１０５は図６(c)のように１要素だけになる。つまり読んだ輝度値をビンとして全て一つのヒストグラムに投票処理を行うということになる。この例の場合、一度に一画素しか読めないため、メモリ１０３が複数のバンクで構成されていたとしても、同時に一つしか投票処理を行えない。投票処理を行ったらバッファ１０１のデータを捨て、次の画素をラスタスキャン順に読み込む。
【００２０】
次に、図７(a)のように複数の画素の輝度値を読み出せるバッファ１０１を使って輝度ヒストグラムを算出する例を示す。この場合の位置データは図７(b)のように指定でき、テーブルは図７(c)のようになる。したがってこの例では３画素分の投票処理を並列して算出できるようになる。これにより得られるヒストグラム特徴量は１つの画像データに対して３つのヒストグラムを並べたものになる。そのため、画像全体の輝度ヒストグラムを得るにはヒストグラムの値を足す必要がある。この算出に必要な計算量はビンの数に比例するが、多くの画像ではビンの数は２５６個で対象とする画像の画素数に比べると非常に小さい。そのため画素の並列化による計算効率の向上は大きい。この例の場合ＳＴ５１０では読み込んだ３画素を全て捨て、次の３画素をラスタスキャン順に読み込むことになる。この例では３画素を読み込むバッファの例を挙げたが、バッファのサイズが増やしていくとメモリの並列数Ｎを上限として並列に実行できる数が増加する。バッファサイズがＮを超えるとテーブルが複数になり、テーブル数に分割して投票処理を実行することになる。テーブルの生成手法によって、一度に読み出せる画素の数（バッファサイズ）やヒストグラムを保存するメモリの数に合わせて並列度合いを自動で調整できることになる。
【００２１】
さらに別の例として勾配方向の組み合わせに基づくヒストグラム特徴量の事例を説明する。「T. Watanabe, S. Ito, and K. Yokoi, “Co-occurrence histograms of oriented gradients for pedestrian detection”, in PSIVT, 2009, pp. 37−47.」で提案されているＣｏＨＯＧ特徴量は、特徴値として画素ごとの勾配方向を算出し、注目画素と近傍の画素との勾配方向の組み合わせをビンとするヒストグラムを並べた画像特徴量である。さらに対象領域全体を一つのヒストグラムにするのではなく、いくつかのブロックに分割してブロックごとにヒストグラムを算出することで、領域の場所ごとの特徴を表現できるようになっている。
【００２２】
このような特徴量も本実施形態の特徴量算出装置の算出対象になる。ＣｏＨＯＧ特徴量を算出する場合の入力データは輝度勾配画像であり、元画像から画素ごとに勾配方向を量子化した値を画素値として持つ。バッファ１０１は図８(a)のような幅９、高さ５の矩形状になる。このバッファから注目画素（５番の画素）の勾配方向の単独ヒストグラムと注目画素と近傍の画素の勾配方向の組み合わせに対するヒストグラムを算出して並べたものがＣｏＨＯＧ特徴量になる。読む画素の位置関係ごとに別のヒストグラムを生成する。図８(b)はＣｏＨＯＧ特徴量の位置データである。注目画素単独の勾配方向と３０組の近傍画素との勾配方向ペアに対してヒストグラムを生成するようになっている。前述の例と同様にこの位置データに対してもメモリの並列数に合わせたテーブルを生成できる。並列数が３１以上の場合、注目画素１つに対する単独、組み合わせヒストグラムを一度に並列して算出できる。３１よりも少ない場合は、テーブルが複数になり、その数に分割して投票処理を実行する。ＣｏＨＯＧ特徴量の場合、対象領域中のブロックごとに投票先が異なるので、ブロックごとにテーブル集合を用意しておき、読み込む画素が属するブロックが変わったらテーブル集合を切り替えることで対応できる。バッファ１０１へのデータの充填については、はじめは対象領域の左上から右方向に、右端に到達したら位置画素下に下がって左方向に進む、というように注目画素をジグザグに辿って行くようにすると、バッファに追加するデータが少なくてすむので効率が良くなる。
【００２３】
ＣｏＨＯＧ特徴量は多くの組み合わせヒストグラムを並べたものになるので特徴量の要素数が膨大になってしまう。そこで、全ての勾配方向ペアのヒストグラムを算出するのでなく、その部分集合を使うことで特徴量の要素数を削減することができる。このとき対象領域中の全てのブロックで同じ部分集合を使わずに、図９に示すようなブロックごとに異なる部分集合を利用することができる。ＣｏＨＯＧ特徴量は画像があるクラス（歩行者、自動車、標識など）に属するかどうかを判定する識別問題に利用される。このような問題ではクラスごとに判定にとって重要な部位とそうでない部位が生じるのでブロックごとに異なる勾配方向ペアの集合を採用することで、重要な部位にはヒストグラムを算出するペア数を多くし、そうでない部位はペア数を減らして特徴量全体の要素数は削減しながら、識別性能は確保する、といった調整が可能になる。このようなことも本実施形態の特徴量算出装置で実現できる。全ての勾配方向ペアは図８(b)の位置データによって表現できるので、その部分集合を使う場合は図８(b)の一部を取り出せばよい。ブロックごとに異なる位置データを指定することで、部位によって勾配方向ペアの数を調整することができる。判定に重要な部位は対象となるクラスによって異なるので、特徴量算出に用いられる勾配方向ペアはクラスによって変わる。本実施形態ではテーブルを動的に計算する仕組みを持つため、対象となるクラスを途中で切り替えるような場合であっても、それに合わせて並列計算の組み合わせを変更することができる。そのため、ヒストグラムを算出するデータの位置が部位によって異なったり、ヒストグラムの数が場合によって変わったりするようなときにもそれぞれの条件に合わせて並列処理を実現できる。そのため、条件に合わせて高速にヒストグラム特徴量を算出できる。
【００２４】
第１の実施形態の特徴量算出装置では、バッファ１０１の大きさ、ヒストグラムの算出位置、メモリ１０３の並列度といったスペック情報を利用して並列に投票処理を実行する範囲を決め、並列に特徴量を算出する。この決定を動的に行うのでスペックが変わればそれに合わせて並列度合いを変化させることが可能である。
【００２５】
（第２の実施形態）
第２の実施形態の識別装置１１００の動作を説明する。入力データからヒストグラムを明示的に求めずに、ヒストグラム特徴量として辞書データが示す識別関数とヒストグラムの各ビンの値の内積を算出する点が第１の実施形態の特徴量算出装置とは異なる。
【００２６】
図１０は、本実施形態の識別装置のブロック図である。図１の第１の実施形態と異なるのはメモリ１００３がヒストグラムデータを保存するのではなく、ヒストグラムデータに対応する線形識別関数の重み係数（辞書データとも呼ばれる）を保持するために使われることと、識別結果算出部１０６でヒストグラム特徴量とメモリ１００３に保存された重み係数との内積値
g(x)= w1 x1+ w2 x2+ w2 x2+・・・+ wＮ xＮ+b  ・・・(1)  
を算出することである。x1、x2、・・・xＮはヒストグラム特徴量の要素、w1、w2、・・・wＮはそれに対応する重み係数、bはスカラー定数を表す。w1、w2、・・・wＮとbの値は線形ＳＶＭなどの学習手法によりあらかじめ算出しておく。内積値g(x)の符号により、入力したヒストグラム特徴量が特定のカテゴリに属するか否かを判定することができる。識別装置１１００は、内積値を出力しても、符号を出力してもどちらでも構わない。内積値を算出するため算出部１０６は内部に関数値の途中経過を保持するレジスタと加算器を持っている。第１の実施形態と同じようにこの実施形態でもテーブルを算出する処理とそれ以降の処理に大別できる。異なるのは特徴量そのものではなく内積値だけを出力するため、出力されるデータ量が減少することである。前述のＣｏＨＯＧ特徴量などは要素数が多いため出力されるデータサイズが大きくなってしまうが、本実施形態だとスカラー値１つだけになりそのような問題を解消できる。テーブルを算出する処理は実施形態１のフローチャート図４と同じで、バッファ１０１中でヒストグラムを算出する位置とメモリ１００３の並列度に合わせて並列動作させる組み合わせを決定する。得られるテーブルを使ってヒストグラム特徴量を算出し、内積値を算出する処理のフローチャートは図１１のようになる。ＳＴ１１０１では内積値を０に初期化する。次のＳＴ１１０２ではテーブルのインデックスを初期化する。ＳＴ１１０３はバッファ１０１に入力データを読み込む処理である。読む込むデータは説明に用いている画像データに限らず、ヒストグラムを算出可能な数値列であれば同じ手法が適用可能である。ＳＴ１１０４から１１０７までの処理は並列して処理することができる。ＳＴ１１０４ではテーブルから一要素を読んで、ヒストグラムを算出するデータの位置と、これに対応する重み係数が格納されたメモリ位置を取得する。メモリ位置はやはりメモリバンクＩＤとアドレスの組（Ｂ, Ａ）で与えられる。次のＳＴ１１０５は指定されたバッファ位置からデータｄを読み込む。ＣｏＨＯＧ特徴量のように二つのデータの組み合わせを使う場合は、二つのデータを両方読むことになる。ＳＴ１１０６は重み係数のメモリ位置（Ｂ,Ａ）とデータｄから重み係数のメモリアドレスを決定する。ここまでの処理はフローチャート図５とあまり変わることがない。異なるのはＳＴ１１０７の処理で、決定されたメモリアドレスの値をインクリメントして投票を行う代わりに、その値を読み出して内積値に加算する。式（１）の一つの項wixiのxiはヒストグラムの値である。そのためwiとxiを個別に求めた後乗算するのではなく、wiをxi回加算することでwixiの値を得るというのがここで行っている処理である。この並列処理をテーブルが複数あるときはその数だけ繰り返す。さらに、この処理を入力データ全体に渡って繰り返すことで内積値を算出し、出力する。以上の処理は図５の処理と比較すると、メモリ１００３に対する投票処理が重み係数の読み出しと加算に置き換わることになるので、第１の実施形態と同じく、ヒストグラムを算出するバッファ位置の組み合わせやメモリ１００３の並列数に応じた並列化が実現できるという効果がある。さらに、本実施形態では複数種類の辞書データを異なるメモリ空間に配置することにより、線形識別関数の並列計算も可能になる。要素を削減したＣｏＨＯＧ特徴量の例で考えると、あるブロックではクラスＡの識別を行うために勾配方向ペアを１３組、Ｂの識別には７組用いるとする。さらに、識別結果算出部を２つ以上持っていたとすると、メモリ並列数が２０以上の場合、二つの辞書のデータを並列に呼び出し、加算も二つ並列に実行することができる。一方、並列数が１９以下の場合、２回に分けて処理するなど、部の規模に合わせた並列化が実現できるのは第１の実施形態と共通した効果である。
【００２７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００２８】
特徴量算出装置１１０、バッファ１０１、位置データ保持部１０２、メモリ１０３、１００３、生成部１０４、テーブル１０５、投票部１０６、
メモリ装置１２０
制御装置１００
識別器１１００
識別結果算出部１００６
【図１】
2012053769.tif 000003
【図２】
2012053769.tif 000004
【図３】
2012053769.tif 000005
【図４】
2012053769.tif 000006
【図５】
2012053769.tif 000007
【図６】
2012053769.tif 000008
【図７】
2012053769.tif 000009
【図８】
2012053769.tif 000010
【図９】
2012053769.tif 000011
【図１０】
2012053769.tif 000012
【図１１】
2012053769.tif 000013