特徴量算出装置及び識別装置
【課題】 解決しようとする課題は、特徴量を算出する際にメモリの並列性を効率的に利用しつつ特徴量を算出することにある。
【解決手段】
上記課題を解決するために、本発明の実施形態の特徴量算出装置は、入力データの特徴値のヒストグラムに基づく特徴量を算出する特徴量算出装置において、前記入力データの一部を保持するためのバッファと、複数のバンクを有し、前記ヒストグラムの算出結果を保持するためのメモリと、前記特徴値を算出しようとする対象データの前記バッファ上での位置と、算出された前記特徴値のカテゴリを投票する前記メモリ上の位置とが対応されたテーブルを生成する生成部と、前記対象データの前記特徴値のカテゴリを求め、前記テーブルが示す前記メモリ上の位置に投票を行う投票部とを備える。
【解決手段】
上記課題を解決するために、本発明の実施形態の特徴量算出装置は、入力データの特徴値のヒストグラムに基づく特徴量を算出する特徴量算出装置において、前記入力データの一部を保持するためのバッファと、複数のバンクを有し、前記ヒストグラムの算出結果を保持するためのメモリと、前記特徴値を算出しようとする対象データの前記バッファ上での位置と、算出された前記特徴値のカテゴリを投票する前記メモリ上の位置とが対応されたテーブルを生成する生成部と、前記対象データの前記特徴値のカテゴリを求め、前記テーブルが示す前記メモリ上の位置に投票を行う投票部とを備える。
【発明の詳細な説明】
【技術分野】
【0001】
本実施形態は、処理対象のデータのヒストグラムに基づく特徴量を算出する装置及び処理対象のデータの識別を行う装置に関する。
【背景技術】
【0002】
処理対象のデータ(画像、音声等)のヒストグラム(頻度値分布)を要素とする特徴量を用いて、処理対象のデータのクラス識別・特定部分の検出などに利用する技術がある。
【0003】
ヒストグラムを算出するための各ビン(カテゴリ)への投票処理は、メモリへのランダムアクセスとなっていた。そのため、投票処理を並列化できず高速に計算することが困難であった。メモリを複数のバンクに分割しヒストグラムのビンとメモリアドレスのマッピングを行う技術がある。これによって並列計算ユニットそれぞれが別のバンクにアクセスすることでヒストグラムを並列処理で求めていた。しかしながら、上記従来技術では、ヒストグラムのビンとメモリ空間のマッピングが固定されているため、メモリ空間および並列性の効率が低下し、処理速度が下がってしまっていた。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】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.
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明が解決しようとする課題は、メモリの並列性を効率的に利用しつつ特徴量を算出することにある。
【課題を解決するための手段】
【0006】
上記課題を解決するために、本発明の実施形態の特徴量算出装置は、入力データの特徴値のヒストグラムに基づく特徴量を算出する特徴量算出装置において、前記入力データの一部を保持するためのバッファと、複数のバンクを有し、前記ヒストグラムの算出結果を保持するためのメモリと、前記特徴値を算出しようとする対象データの前記バッファ上での位置と、算出された前記特徴値のカテゴリを投票する前記メモリ上の位置とが対応されたテーブルを生成する生成部と、前記対象データの前記特徴値のカテゴリを求め、前記テーブルが示す前記メモリ上の位置に投票を行う投票部とを備える。
【図面の簡単な説明】
【0007】
【図1】第1の実施形態の特徴量算出装置を示すブロック図。
【図2】メモリ103の一例を示す図。
【図3】第1の実施形態の特徴量算出装置の動作を表すフローチャート。
【図4】第1の実施形態のテーブルを生成する動作を表すフローチャート。
【図5】第1の実施形態のヒストグラム特徴量を算出する動作を表すフローチャート。
【図6】画像の輝度値ヒストグラムを求める際の(a)データバッファの構造、(b)位置データ、(c)テーブルの例を示す図。
【図7】画像の輝度値ヒストグラムを求めるときの(a)データバッファの構造、(b)位置データ、(c)テーブルの例を示す図。
【図8】輝度勾配のCoHOG特徴量を計算するときの(a)データバッファの構造、(b)位置データ、の例を示す図。
【図9】CoHOG特徴量計算における勾配方向ペアの部分集合の例を示す図。
【図10】第2の実施形態の識別装置を示すブロック図。
【図11】第2の実施形態の動作を表すフローチャート(識別関数計算部分)。
【発明を実施するための形態】
【0008】
本発明の実施形態について説明する。なお、互いに同様の動作をする構成や処理には共通の符号を付して、重複する説明は省略する。
【0009】
(第1の実施形態)
本実施形態の特徴量算出装置110は、処理対象の入力データの所定のヒストグラムを要素とする特徴量を算出する。ヒストグラムとは、処理対象の入力データの特徴値に対して各カテゴリ(ビン)の度数(データの個数)を求めた頻度値分布を示す。出力される特徴量は、算出されたヒストグラムの各カテゴリの度数を並べたものや、算出されたヒストグラムのうち特定のカテゴリの度数を組み合わせた値を並べたもの等のいずれであっても構わない。本実施形態では、処理対象の入力データが画像データである場合の例について述べるが、音声データ等のヒストグラム特徴量の算出に用いることも可能である。なお、ヒストグラムを算出する際の対象となる特徴値は、例えば画素値や画素値勾配等の処理対象の特性を示す値であればいずれであっても構わない。詳細については後述する。本実施形態では、特徴量算出装置110がPC等に組み込まれた例について述べる。
【0010】
図1は、特徴量算出装置110のブロック図である。特徴量算出装置110の外部には、処理対象の入力データを保持することができるメモリ装置120と、特徴量算出装置110のバッファ101に対してデータの書込みや消去を指示する制御装置100とを備える。制御装置100は、バッファ101が保持するデータのヒストグラム特徴量の算出処理が終了すると、バッファ101に対してデータの消去を指示し、消去が完了するとメモリ装置120が保持する入力データの一部をバッファ101に送る。
【0011】
特徴量算出装置110は、入力データの一部を保持するためのバッファ101、バッファ101上で特徴値を算出すべき位置を記憶する位置データ保持部102、複数のバンクを有しヒストグラムの算出結果を保持するためのメモリ103、バッファ101上で特徴値を算出する位置と、算出された前記特徴値の投票先となるメモリ103上での位置とが対応されたテーブル105を生成する生成部104、対象となるデータの特徴値を算出し、算出された特徴値のカテゴリに応じて、前記テーブルが示す前記メモリ上の位置に投票を行う投票部106、を備える。メモリ103は独立に並列してアクセス可能な最大数Nが設定されているとする。このNをメモリ103の並列数と呼ぶことにする。
【0012】
図2は、メモリ103の一例を示す図である。図2の例では、メモリ103が複数(N個)のバンク(ユニット)に分かれている例を示す。それぞれのバンクに対して、独立にアクセスできるため、並列数=バンクの数となる。メモリ103上への投票処理を並列に行うことで、ヒストグラム特徴量を算出する処理を高速化できる。生成部104は、この並列処理の数をできるだけメモリ103の並列数Nに近くなるよう投票先のメモリアドレスを決めるのが好ましい。
【0013】
図3は、本実施形態の特徴量算出装置の動作を表すフローチャートである。
【0014】
生成部104は、位置データ保持部102が示す位置データを取得する(ST301)。取得した位置データに基づいて、生成部はテーブル105を生成する(ST302)。制御装置100は、バッファに対して入力データの一部を転送する(ST303)。投票部106は、特徴値を求め、特徴値に対応するメモリ103のビンへの投票を行ってヒストグラム特徴量を算出する(ST304)。
【0015】
図4は、生成部104が行うST302の詳細な動作を示すフローチャート図である。生成部104は、メモリ103の並列数Nを取得する(ST401)。並列数はメモリ103に固有の値のため、毎回メモリ103に問い合わせる必要はない。ROM(図示しない)にその値を書き込んでおく、または生成部104のプログラムに固定値として書き込んでおくなどして取得しても良い。生成部104は、テーブル106のインデックスjを1に初期化する(ST402)。生成部104は複数個のテーブルを生成することができる。生成部104は、各テーブルの要素のインデックスiを1に初期化する(ST403)。生成部104は、位置データ保持部102から位置データを一つ読み出す(ST404)。位置データは、特徴値を算出する対象のデータがバッファ上でどの位置に記憶されているかを示す。生成部104は、読み出したデータの投票先メモリ位置を決定する(ST405)。図2のようなメモリ103構成の場合、メモリ位置とは1つのヒストグラムデータが格納されるメモリブロックの先頭アドレスのことである。これはメモリバンクのID番号Bとバンク内のアドレスAの組で表現できる。メモリ位置の決定により投票を行うヒストグラムは決まるが、ヒストグラムのどのビンに投票するかはデータの特徴値によって決まる。メモリ位置の組(B,A)について、一つのテーブルに含まれる投票先のメモリバンクは全て異なっている必要がある。これは、一度に並列して投票処理を実現するには投票先のメモリバンクが全て異なっている必要があるからである。最も簡単にこれを実現するにはST405の処理をB=1から始めて、1ずつ足していけば良い。アドレスについてはそれぞれのバンクの最も小さいアドレスから順に与えていくのが簡単である。もちろんN回の繰り返しで1〜Nが一回ずつ現れるような数字列を生成できればどのような手法を用いても良い。例えばバンクのIDをインクリメントするのと同時にアドレスもインクリメントしていくというやり方もある。また、最も大きなアドレスからデクリメントしながら割り当てていっても問題ない。このようにして決めたメモリ位置とバッファ101からのデータ読み出し位置をテーブル105のj番目のテーブルの第i要素に書き込む。そしてテーブル要素のインデックスiをインクリメントする(ST406)。全ての位置データを読み出したかを判定する(ST407)。全て読み込んでテーブルに書き込んでいればST410に進んで処理を終了し、そうでなければST408に進む。j番目のテーブルに書き込んだ要素数iが並列数Nを超えていないかを判定する(ST408)。ST408の条件を満たしているとき、テーブルには投票先としてバンク1〜Nが一度ずつ登場しているので、これ以上並列に処理することはできない。そこで新たなテーブルを生成して位置データと投票先のメモリ位置の対応を追加する(ST409)。以上の処理により、ヒストグラム算出時にバッファのどの位置からデータを読み込むか、読み込んだデータをメモリのどこに投票するかの対応関係が決まる。さらに、一つのテーブルに書かれている投票先のメモリ位置は全て別バンクになっているため、一つのテーブルに書かれた投票処理は並列に実行可能である。ここで示したテーブルの生成方法は位置データが並列数Nを上回る場合、最初のテーブルの要素数が必ずNになり、その後のテーブルに残ったものが入る。これだと要素数に偏りが出るため、位置データの要素数をMとして、M/N以上で最小の整数Kを求めてテーブルの数を先に算出しておき、一つのテーブルにM/K(端数がある場合は切り上げ、もしくは切り捨て)個の要素を割り当てていくというやり方もある。その場合はST408のテーブルの切り替え条件がことなるだけでテーブルを生成することができる。要素数がN以下でそれぞれの投票先メモリ位置のバンクが異なっていればこの他のテーブル生成方法であっても構わない。
【0016】
図5は、投票部106が行うST304の処理の詳細を示す図である。テーブルのインデックスjを1に初期化する(ST501)。制御装置100がバッファ101にデータを充填する(ST502)。ここで読み込むデータは画像データの輝度値、輝度値を量子化した値、音声データ、その他の数値列など、ヒストグラムを算出できるデータ列であれば何でも良い。読み出し元もRAM部、ディスク部、フラッシュメモリなど特に限定されない。これらの読み出し元からは一度に複数のデータを読み出すことができないので、バッファ101に一部のデータを読み出して一時的に蓄積する。バッファ101は例えばレジスタで構成されており、バッファ中の全てのデータを並列して読み出せる仕様になっているとする。ST503から506までの処理は並列して同時に実行される。
【0017】
投票部106は、テーブル105からバッファを読み出す位置と投票先のメモリ位置の対応を読み込む(ST503)。読み込むテーブル105のインデックスは並列に実行されるM個の実行単位それぞれで異なる。投票部106は、バッファ101の指定された位置からデータdを読み出す(ST504)。テーブル105に書かれたメモリバンクIDとアドレスの組(B, A)と前述のデータdにより投票先のビンのアドレスを決定する(ST505)。(B, A)の組により指定されるメモリ空間にはそれぞれ1つのヒストグラムが格納されており、データdにより投票するビンを決定する。本実施形態で算出されるヒストグラム特徴量とはいくつかのヒストグラムを並べたものである。投票部106は、決められたヒストグラムのビンに対して投票処理を実行する(ST506)。つまり、指定されたビンのデータをメモリから読み出し、値をインクリメントし、元のメモリ位置に書き込むという処理を行う。このときビンの値に対して単に1を足すのではなく、別に指定された値を加算していっても良い。ここまでの処理でM個の投票処理を並列に実行する。
【0018】
あとは算出していないテーブルがないかをチェックして(ST507、508)、残りがあればST503からの並列投票処理を繰り返す。テーブルを全て処理したらST509に進み、全てのデータを処理したかをチェックする。データが残っていればST510で制御装置100はバッファの一部のデータを捨てて、新たなデータをバッファに読み込む(ST501,502)。全てのデータを処理し終えたらST511に進んで全体の処理を終了する。投票したヒストグラムを全て並べたものがヒストグラム特徴量となる。
【0019】
次にいくつかの事例を挙げて具体的な算出の様子を説明する。まず、簡単な例として、入力データが図6(a)の画像データ601、バッファ101が602のように1画素の輝度値だけを読み出す処理で画像全体の輝度ヒストグラムを算出する事例を挙げる。これは画像の明るさを補正するための前処理として典型的に行われる処理である。この場合、バッファ101には一度に一画素をしか保持できないので、位置データには図6(b)のように1つだけが記述されることになる。これはバッファ101の位置1(保持された唯一の輝度データ)を読み込んでビンにすることを表す。このデータから生成されるテーブル105は図6(c)のように1要素だけになる。つまり読んだ輝度値をビンとして全て一つのヒストグラムに投票処理を行うということになる。この例の場合、一度に一画素しか読めないため、メモリ103が複数のバンクで構成されていたとしても、同時に一つしか投票処理を行えない。投票処理を行ったらバッファ101のデータを捨て、次の画素をラスタスキャン順に読み込む。
【0020】
次に、図7(a)のように複数の画素の輝度値を読み出せるバッファ101を使って輝度ヒストグラムを算出する例を示す。この場合の位置データは図7(b)のように指定でき、テーブルは図7(c)のようになる。したがってこの例では3画素分の投票処理を並列して算出できるようになる。これにより得られるヒストグラム特徴量は1つの画像データに対して3つのヒストグラムを並べたものになる。そのため、画像全体の輝度ヒストグラムを得るにはヒストグラムの値を足す必要がある。この算出に必要な計算量はビンの数に比例するが、多くの画像ではビンの数は256個で対象とする画像の画素数に比べると非常に小さい。そのため画素の並列化による計算効率の向上は大きい。この例の場合ST510では読み込んだ3画素を全て捨て、次の3画素をラスタスキャン順に読み込むことになる。この例では3画素を読み込むバッファの例を挙げたが、バッファのサイズが増やしていくとメモリの並列数Nを上限として並列に実行できる数が増加する。バッファサイズがNを超えるとテーブルが複数になり、テーブル数に分割して投票処理を実行することになる。テーブルの生成手法によって、一度に読み出せる画素の数(バッファサイズ)やヒストグラムを保存するメモリの数に合わせて並列度合いを自動で調整できることになる。
【0021】
さらに別の例として勾配方向の組み合わせに基づくヒストグラム特徴量の事例を説明する。「T. Watanabe, S. Ito, and K. Yokoi, “Co-occurrence histograms of oriented gradients for pedestrian detection”, in PSIVT, 2009, pp. 37−47.」で提案されているCoHOG特徴量は、特徴値として画素ごとの勾配方向を算出し、注目画素と近傍の画素との勾配方向の組み合わせをビンとするヒストグラムを並べた画像特徴量である。さらに対象領域全体を一つのヒストグラムにするのではなく、いくつかのブロックに分割してブロックごとにヒストグラムを算出することで、領域の場所ごとの特徴を表現できるようになっている。
【0022】
このような特徴量も本実施形態の特徴量算出装置の算出対象になる。CoHOG特徴量を算出する場合の入力データは輝度勾配画像であり、元画像から画素ごとに勾配方向を量子化した値を画素値として持つ。バッファ101は図8(a)のような幅9、高さ5の矩形状になる。このバッファから注目画素(5番の画素)の勾配方向の単独ヒストグラムと注目画素と近傍の画素の勾配方向の組み合わせに対するヒストグラムを算出して並べたものがCoHOG特徴量になる。読む画素の位置関係ごとに別のヒストグラムを生成する。図8(b)はCoHOG特徴量の位置データである。注目画素単独の勾配方向と30組の近傍画素との勾配方向ペアに対してヒストグラムを生成するようになっている。前述の例と同様にこの位置データに対してもメモリの並列数に合わせたテーブルを生成できる。並列数が31以上の場合、注目画素1つに対する単独、組み合わせヒストグラムを一度に並列して算出できる。31よりも少ない場合は、テーブルが複数になり、その数に分割して投票処理を実行する。CoHOG特徴量の場合、対象領域中のブロックごとに投票先が異なるので、ブロックごとにテーブル集合を用意しておき、読み込む画素が属するブロックが変わったらテーブル集合を切り替えることで対応できる。バッファ101へのデータの充填については、はじめは対象領域の左上から右方向に、右端に到達したら位置画素下に下がって左方向に進む、というように注目画素をジグザグに辿って行くようにすると、バッファに追加するデータが少なくてすむので効率が良くなる。
【0023】
CoHOG特徴量は多くの組み合わせヒストグラムを並べたものになるので特徴量の要素数が膨大になってしまう。そこで、全ての勾配方向ペアのヒストグラムを算出するのでなく、その部分集合を使うことで特徴量の要素数を削減することができる。このとき対象領域中の全てのブロックで同じ部分集合を使わずに、図9に示すようなブロックごとに異なる部分集合を利用することができる。CoHOG特徴量は画像があるクラス(歩行者、自動車、標識など)に属するかどうかを判定する識別問題に利用される。このような問題ではクラスごとに判定にとって重要な部位とそうでない部位が生じるのでブロックごとに異なる勾配方向ペアの集合を採用することで、重要な部位にはヒストグラムを算出するペア数を多くし、そうでない部位はペア数を減らして特徴量全体の要素数は削減しながら、識別性能は確保する、といった調整が可能になる。このようなことも本実施形態の特徴量算出装置で実現できる。全ての勾配方向ペアは図8(b)の位置データによって表現できるので、その部分集合を使う場合は図8(b)の一部を取り出せばよい。ブロックごとに異なる位置データを指定することで、部位によって勾配方向ペアの数を調整することができる。判定に重要な部位は対象となるクラスによって異なるので、特徴量算出に用いられる勾配方向ペアはクラスによって変わる。本実施形態ではテーブルを動的に計算する仕組みを持つため、対象となるクラスを途中で切り替えるような場合であっても、それに合わせて並列計算の組み合わせを変更することができる。そのため、ヒストグラムを算出するデータの位置が部位によって異なったり、ヒストグラムの数が場合によって変わったりするようなときにもそれぞれの条件に合わせて並列処理を実現できる。そのため、条件に合わせて高速にヒストグラム特徴量を算出できる。
【0024】
第1の実施形態の特徴量算出装置では、バッファ101の大きさ、ヒストグラムの算出位置、メモリ103の並列度といったスペック情報を利用して並列に投票処理を実行する範囲を決め、並列に特徴量を算出する。この決定を動的に行うのでスペックが変わればそれに合わせて並列度合いを変化させることが可能である。
【0025】
(第2の実施形態)
第2の実施形態の識別装置1100の動作を説明する。入力データからヒストグラムを明示的に求めずに、ヒストグラム特徴量として辞書データが示す識別関数とヒストグラムの各ビンの値の内積を算出する点が第1の実施形態の特徴量算出装置とは異なる。
【0026】
図10は、本実施形態の識別装置のブロック図である。図1の第1の実施形態と異なるのはメモリ1003がヒストグラムデータを保存するのではなく、ヒストグラムデータに対応する線形識別関数の重み係数(辞書データとも呼ばれる)を保持するために使われることと、識別結果算出部106でヒストグラム特徴量とメモリ1003に保存された重み係数との内積値
g(x)= w1 x1+ w2 x2+ w2 x2+・・・+ wN xN+b ・・・(1)
を算出することである。x1、x2、・・・xNはヒストグラム特徴量の要素、w1、w2、・・・wNはそれに対応する重み係数、bはスカラー定数を表す。w1、w2、・・・wNとbの値は線形SVMなどの学習手法によりあらかじめ算出しておく。内積値g(x)の符号により、入力したヒストグラム特徴量が特定のカテゴリに属するか否かを判定することができる。識別装置1100は、内積値を出力しても、符号を出力してもどちらでも構わない。内積値を算出するため算出部106は内部に関数値の途中経過を保持するレジスタと加算器を持っている。第1の実施形態と同じようにこの実施形態でもテーブルを算出する処理とそれ以降の処理に大別できる。異なるのは特徴量そのものではなく内積値だけを出力するため、出力されるデータ量が減少することである。前述のCoHOG特徴量などは要素数が多いため出力されるデータサイズが大きくなってしまうが、本実施形態だとスカラー値1つだけになりそのような問題を解消できる。テーブルを算出する処理は実施形態1のフローチャート図4と同じで、バッファ101中でヒストグラムを算出する位置とメモリ1003の並列度に合わせて並列動作させる組み合わせを決定する。得られるテーブルを使ってヒストグラム特徴量を算出し、内積値を算出する処理のフローチャートは図11のようになる。ST1101では内積値を0に初期化する。次のST1102ではテーブルのインデックスを初期化する。ST1103はバッファ101に入力データを読み込む処理である。読む込むデータは説明に用いている画像データに限らず、ヒストグラムを算出可能な数値列であれば同じ手法が適用可能である。ST1104から1107までの処理は並列して処理することができる。ST1104ではテーブルから一要素を読んで、ヒストグラムを算出するデータの位置と、これに対応する重み係数が格納されたメモリ位置を取得する。メモリ位置はやはりメモリバンクIDとアドレスの組(B, A)で与えられる。次のST1105は指定されたバッファ位置からデータdを読み込む。CoHOG特徴量のように二つのデータの組み合わせを使う場合は、二つのデータを両方読むことになる。ST1106は重み係数のメモリ位置(B,A)とデータdから重み係数のメモリアドレスを決定する。ここまでの処理はフローチャート図5とあまり変わることがない。異なるのはST1107の処理で、決定されたメモリアドレスの値をインクリメントして投票を行う代わりに、その値を読み出して内積値に加算する。式(1)の一つの項wixiのxiはヒストグラムの値である。そのためwiとxiを個別に求めた後乗算するのではなく、wiをxi回加算することでwixiの値を得るというのがここで行っている処理である。この並列処理をテーブルが複数あるときはその数だけ繰り返す。さらに、この処理を入力データ全体に渡って繰り返すことで内積値を算出し、出力する。以上の処理は図5の処理と比較すると、メモリ1003に対する投票処理が重み係数の読み出しと加算に置き換わることになるので、第1の実施形態と同じく、ヒストグラムを算出するバッファ位置の組み合わせやメモリ1003の並列数に応じた並列化が実現できるという効果がある。さらに、本実施形態では複数種類の辞書データを異なるメモリ空間に配置することにより、線形識別関数の並列計算も可能になる。要素を削減したCoHOG特徴量の例で考えると、あるブロックではクラスAの識別を行うために勾配方向ペアを13組、Bの識別には7組用いるとする。さらに、識別結果算出部を2つ以上持っていたとすると、メモリ並列数が20以上の場合、二つの辞書のデータを並列に呼び出し、加算も二つ並列に実行することができる。一方、並列数が19以下の場合、2回に分けて処理するなど、部の規模に合わせた並列化が実現できるのは第1の実施形態と共通した効果である。
【0027】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0028】
特徴量算出装置110、バッファ101、位置データ保持部102、メモリ103、1003、生成部104、テーブル105、投票部106、
メモリ装置120
制御装置100
識別器1100
識別結果算出部1006
【技術分野】
【0001】
本実施形態は、処理対象のデータのヒストグラムに基づく特徴量を算出する装置及び処理対象のデータの識別を行う装置に関する。
【背景技術】
【0002】
処理対象のデータ(画像、音声等)のヒストグラム(頻度値分布)を要素とする特徴量を用いて、処理対象のデータのクラス識別・特定部分の検出などに利用する技術がある。
【0003】
ヒストグラムを算出するための各ビン(カテゴリ)への投票処理は、メモリへのランダムアクセスとなっていた。そのため、投票処理を並列化できず高速に計算することが困難であった。メモリを複数のバンクに分割しヒストグラムのビンとメモリアドレスのマッピングを行う技術がある。これによって並列計算ユニットそれぞれが別のバンクにアクセスすることでヒストグラムを並列処理で求めていた。しかしながら、上記従来技術では、ヒストグラムのビンとメモリ空間のマッピングが固定されているため、メモリ空間および並列性の効率が低下し、処理速度が下がってしまっていた。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】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.
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明が解決しようとする課題は、メモリの並列性を効率的に利用しつつ特徴量を算出することにある。
【課題を解決するための手段】
【0006】
上記課題を解決するために、本発明の実施形態の特徴量算出装置は、入力データの特徴値のヒストグラムに基づく特徴量を算出する特徴量算出装置において、前記入力データの一部を保持するためのバッファと、複数のバンクを有し、前記ヒストグラムの算出結果を保持するためのメモリと、前記特徴値を算出しようとする対象データの前記バッファ上での位置と、算出された前記特徴値のカテゴリを投票する前記メモリ上の位置とが対応されたテーブルを生成する生成部と、前記対象データの前記特徴値のカテゴリを求め、前記テーブルが示す前記メモリ上の位置に投票を行う投票部とを備える。
【図面の簡単な説明】
【0007】
【図1】第1の実施形態の特徴量算出装置を示すブロック図。
【図2】メモリ103の一例を示す図。
【図3】第1の実施形態の特徴量算出装置の動作を表すフローチャート。
【図4】第1の実施形態のテーブルを生成する動作を表すフローチャート。
【図5】第1の実施形態のヒストグラム特徴量を算出する動作を表すフローチャート。
【図6】画像の輝度値ヒストグラムを求める際の(a)データバッファの構造、(b)位置データ、(c)テーブルの例を示す図。
【図7】画像の輝度値ヒストグラムを求めるときの(a)データバッファの構造、(b)位置データ、(c)テーブルの例を示す図。
【図8】輝度勾配のCoHOG特徴量を計算するときの(a)データバッファの構造、(b)位置データ、の例を示す図。
【図9】CoHOG特徴量計算における勾配方向ペアの部分集合の例を示す図。
【図10】第2の実施形態の識別装置を示すブロック図。
【図11】第2の実施形態の動作を表すフローチャート(識別関数計算部分)。
【発明を実施するための形態】
【0008】
本発明の実施形態について説明する。なお、互いに同様の動作をする構成や処理には共通の符号を付して、重複する説明は省略する。
【0009】
(第1の実施形態)
本実施形態の特徴量算出装置110は、処理対象の入力データの所定のヒストグラムを要素とする特徴量を算出する。ヒストグラムとは、処理対象の入力データの特徴値に対して各カテゴリ(ビン)の度数(データの個数)を求めた頻度値分布を示す。出力される特徴量は、算出されたヒストグラムの各カテゴリの度数を並べたものや、算出されたヒストグラムのうち特定のカテゴリの度数を組み合わせた値を並べたもの等のいずれであっても構わない。本実施形態では、処理対象の入力データが画像データである場合の例について述べるが、音声データ等のヒストグラム特徴量の算出に用いることも可能である。なお、ヒストグラムを算出する際の対象となる特徴値は、例えば画素値や画素値勾配等の処理対象の特性を示す値であればいずれであっても構わない。詳細については後述する。本実施形態では、特徴量算出装置110がPC等に組み込まれた例について述べる。
【0010】
図1は、特徴量算出装置110のブロック図である。特徴量算出装置110の外部には、処理対象の入力データを保持することができるメモリ装置120と、特徴量算出装置110のバッファ101に対してデータの書込みや消去を指示する制御装置100とを備える。制御装置100は、バッファ101が保持するデータのヒストグラム特徴量の算出処理が終了すると、バッファ101に対してデータの消去を指示し、消去が完了するとメモリ装置120が保持する入力データの一部をバッファ101に送る。
【0011】
特徴量算出装置110は、入力データの一部を保持するためのバッファ101、バッファ101上で特徴値を算出すべき位置を記憶する位置データ保持部102、複数のバンクを有しヒストグラムの算出結果を保持するためのメモリ103、バッファ101上で特徴値を算出する位置と、算出された前記特徴値の投票先となるメモリ103上での位置とが対応されたテーブル105を生成する生成部104、対象となるデータの特徴値を算出し、算出された特徴値のカテゴリに応じて、前記テーブルが示す前記メモリ上の位置に投票を行う投票部106、を備える。メモリ103は独立に並列してアクセス可能な最大数Nが設定されているとする。このNをメモリ103の並列数と呼ぶことにする。
【0012】
図2は、メモリ103の一例を示す図である。図2の例では、メモリ103が複数(N個)のバンク(ユニット)に分かれている例を示す。それぞれのバンクに対して、独立にアクセスできるため、並列数=バンクの数となる。メモリ103上への投票処理を並列に行うことで、ヒストグラム特徴量を算出する処理を高速化できる。生成部104は、この並列処理の数をできるだけメモリ103の並列数Nに近くなるよう投票先のメモリアドレスを決めるのが好ましい。
【0013】
図3は、本実施形態の特徴量算出装置の動作を表すフローチャートである。
【0014】
生成部104は、位置データ保持部102が示す位置データを取得する(ST301)。取得した位置データに基づいて、生成部はテーブル105を生成する(ST302)。制御装置100は、バッファに対して入力データの一部を転送する(ST303)。投票部106は、特徴値を求め、特徴値に対応するメモリ103のビンへの投票を行ってヒストグラム特徴量を算出する(ST304)。
【0015】
図4は、生成部104が行うST302の詳細な動作を示すフローチャート図である。生成部104は、メモリ103の並列数Nを取得する(ST401)。並列数はメモリ103に固有の値のため、毎回メモリ103に問い合わせる必要はない。ROM(図示しない)にその値を書き込んでおく、または生成部104のプログラムに固定値として書き込んでおくなどして取得しても良い。生成部104は、テーブル106のインデックスjを1に初期化する(ST402)。生成部104は複数個のテーブルを生成することができる。生成部104は、各テーブルの要素のインデックスiを1に初期化する(ST403)。生成部104は、位置データ保持部102から位置データを一つ読み出す(ST404)。位置データは、特徴値を算出する対象のデータがバッファ上でどの位置に記憶されているかを示す。生成部104は、読み出したデータの投票先メモリ位置を決定する(ST405)。図2のようなメモリ103構成の場合、メモリ位置とは1つのヒストグラムデータが格納されるメモリブロックの先頭アドレスのことである。これはメモリバンクのID番号Bとバンク内のアドレスAの組で表現できる。メモリ位置の決定により投票を行うヒストグラムは決まるが、ヒストグラムのどのビンに投票するかはデータの特徴値によって決まる。メモリ位置の組(B,A)について、一つのテーブルに含まれる投票先のメモリバンクは全て異なっている必要がある。これは、一度に並列して投票処理を実現するには投票先のメモリバンクが全て異なっている必要があるからである。最も簡単にこれを実現するにはST405の処理をB=1から始めて、1ずつ足していけば良い。アドレスについてはそれぞれのバンクの最も小さいアドレスから順に与えていくのが簡単である。もちろんN回の繰り返しで1〜Nが一回ずつ現れるような数字列を生成できればどのような手法を用いても良い。例えばバンクのIDをインクリメントするのと同時にアドレスもインクリメントしていくというやり方もある。また、最も大きなアドレスからデクリメントしながら割り当てていっても問題ない。このようにして決めたメモリ位置とバッファ101からのデータ読み出し位置をテーブル105のj番目のテーブルの第i要素に書き込む。そしてテーブル要素のインデックスiをインクリメントする(ST406)。全ての位置データを読み出したかを判定する(ST407)。全て読み込んでテーブルに書き込んでいればST410に進んで処理を終了し、そうでなければST408に進む。j番目のテーブルに書き込んだ要素数iが並列数Nを超えていないかを判定する(ST408)。ST408の条件を満たしているとき、テーブルには投票先としてバンク1〜Nが一度ずつ登場しているので、これ以上並列に処理することはできない。そこで新たなテーブルを生成して位置データと投票先のメモリ位置の対応を追加する(ST409)。以上の処理により、ヒストグラム算出時にバッファのどの位置からデータを読み込むか、読み込んだデータをメモリのどこに投票するかの対応関係が決まる。さらに、一つのテーブルに書かれている投票先のメモリ位置は全て別バンクになっているため、一つのテーブルに書かれた投票処理は並列に実行可能である。ここで示したテーブルの生成方法は位置データが並列数Nを上回る場合、最初のテーブルの要素数が必ずNになり、その後のテーブルに残ったものが入る。これだと要素数に偏りが出るため、位置データの要素数をMとして、M/N以上で最小の整数Kを求めてテーブルの数を先に算出しておき、一つのテーブルにM/K(端数がある場合は切り上げ、もしくは切り捨て)個の要素を割り当てていくというやり方もある。その場合はST408のテーブルの切り替え条件がことなるだけでテーブルを生成することができる。要素数がN以下でそれぞれの投票先メモリ位置のバンクが異なっていればこの他のテーブル生成方法であっても構わない。
【0016】
図5は、投票部106が行うST304の処理の詳細を示す図である。テーブルのインデックスjを1に初期化する(ST501)。制御装置100がバッファ101にデータを充填する(ST502)。ここで読み込むデータは画像データの輝度値、輝度値を量子化した値、音声データ、その他の数値列など、ヒストグラムを算出できるデータ列であれば何でも良い。読み出し元もRAM部、ディスク部、フラッシュメモリなど特に限定されない。これらの読み出し元からは一度に複数のデータを読み出すことができないので、バッファ101に一部のデータを読み出して一時的に蓄積する。バッファ101は例えばレジスタで構成されており、バッファ中の全てのデータを並列して読み出せる仕様になっているとする。ST503から506までの処理は並列して同時に実行される。
【0017】
投票部106は、テーブル105からバッファを読み出す位置と投票先のメモリ位置の対応を読み込む(ST503)。読み込むテーブル105のインデックスは並列に実行されるM個の実行単位それぞれで異なる。投票部106は、バッファ101の指定された位置からデータdを読み出す(ST504)。テーブル105に書かれたメモリバンクIDとアドレスの組(B, A)と前述のデータdにより投票先のビンのアドレスを決定する(ST505)。(B, A)の組により指定されるメモリ空間にはそれぞれ1つのヒストグラムが格納されており、データdにより投票するビンを決定する。本実施形態で算出されるヒストグラム特徴量とはいくつかのヒストグラムを並べたものである。投票部106は、決められたヒストグラムのビンに対して投票処理を実行する(ST506)。つまり、指定されたビンのデータをメモリから読み出し、値をインクリメントし、元のメモリ位置に書き込むという処理を行う。このときビンの値に対して単に1を足すのではなく、別に指定された値を加算していっても良い。ここまでの処理でM個の投票処理を並列に実行する。
【0018】
あとは算出していないテーブルがないかをチェックして(ST507、508)、残りがあればST503からの並列投票処理を繰り返す。テーブルを全て処理したらST509に進み、全てのデータを処理したかをチェックする。データが残っていればST510で制御装置100はバッファの一部のデータを捨てて、新たなデータをバッファに読み込む(ST501,502)。全てのデータを処理し終えたらST511に進んで全体の処理を終了する。投票したヒストグラムを全て並べたものがヒストグラム特徴量となる。
【0019】
次にいくつかの事例を挙げて具体的な算出の様子を説明する。まず、簡単な例として、入力データが図6(a)の画像データ601、バッファ101が602のように1画素の輝度値だけを読み出す処理で画像全体の輝度ヒストグラムを算出する事例を挙げる。これは画像の明るさを補正するための前処理として典型的に行われる処理である。この場合、バッファ101には一度に一画素をしか保持できないので、位置データには図6(b)のように1つだけが記述されることになる。これはバッファ101の位置1(保持された唯一の輝度データ)を読み込んでビンにすることを表す。このデータから生成されるテーブル105は図6(c)のように1要素だけになる。つまり読んだ輝度値をビンとして全て一つのヒストグラムに投票処理を行うということになる。この例の場合、一度に一画素しか読めないため、メモリ103が複数のバンクで構成されていたとしても、同時に一つしか投票処理を行えない。投票処理を行ったらバッファ101のデータを捨て、次の画素をラスタスキャン順に読み込む。
【0020】
次に、図7(a)のように複数の画素の輝度値を読み出せるバッファ101を使って輝度ヒストグラムを算出する例を示す。この場合の位置データは図7(b)のように指定でき、テーブルは図7(c)のようになる。したがってこの例では3画素分の投票処理を並列して算出できるようになる。これにより得られるヒストグラム特徴量は1つの画像データに対して3つのヒストグラムを並べたものになる。そのため、画像全体の輝度ヒストグラムを得るにはヒストグラムの値を足す必要がある。この算出に必要な計算量はビンの数に比例するが、多くの画像ではビンの数は256個で対象とする画像の画素数に比べると非常に小さい。そのため画素の並列化による計算効率の向上は大きい。この例の場合ST510では読み込んだ3画素を全て捨て、次の3画素をラスタスキャン順に読み込むことになる。この例では3画素を読み込むバッファの例を挙げたが、バッファのサイズが増やしていくとメモリの並列数Nを上限として並列に実行できる数が増加する。バッファサイズがNを超えるとテーブルが複数になり、テーブル数に分割して投票処理を実行することになる。テーブルの生成手法によって、一度に読み出せる画素の数(バッファサイズ)やヒストグラムを保存するメモリの数に合わせて並列度合いを自動で調整できることになる。
【0021】
さらに別の例として勾配方向の組み合わせに基づくヒストグラム特徴量の事例を説明する。「T. Watanabe, S. Ito, and K. Yokoi, “Co-occurrence histograms of oriented gradients for pedestrian detection”, in PSIVT, 2009, pp. 37−47.」で提案されているCoHOG特徴量は、特徴値として画素ごとの勾配方向を算出し、注目画素と近傍の画素との勾配方向の組み合わせをビンとするヒストグラムを並べた画像特徴量である。さらに対象領域全体を一つのヒストグラムにするのではなく、いくつかのブロックに分割してブロックごとにヒストグラムを算出することで、領域の場所ごとの特徴を表現できるようになっている。
【0022】
このような特徴量も本実施形態の特徴量算出装置の算出対象になる。CoHOG特徴量を算出する場合の入力データは輝度勾配画像であり、元画像から画素ごとに勾配方向を量子化した値を画素値として持つ。バッファ101は図8(a)のような幅9、高さ5の矩形状になる。このバッファから注目画素(5番の画素)の勾配方向の単独ヒストグラムと注目画素と近傍の画素の勾配方向の組み合わせに対するヒストグラムを算出して並べたものがCoHOG特徴量になる。読む画素の位置関係ごとに別のヒストグラムを生成する。図8(b)はCoHOG特徴量の位置データである。注目画素単独の勾配方向と30組の近傍画素との勾配方向ペアに対してヒストグラムを生成するようになっている。前述の例と同様にこの位置データに対してもメモリの並列数に合わせたテーブルを生成できる。並列数が31以上の場合、注目画素1つに対する単独、組み合わせヒストグラムを一度に並列して算出できる。31よりも少ない場合は、テーブルが複数になり、その数に分割して投票処理を実行する。CoHOG特徴量の場合、対象領域中のブロックごとに投票先が異なるので、ブロックごとにテーブル集合を用意しておき、読み込む画素が属するブロックが変わったらテーブル集合を切り替えることで対応できる。バッファ101へのデータの充填については、はじめは対象領域の左上から右方向に、右端に到達したら位置画素下に下がって左方向に進む、というように注目画素をジグザグに辿って行くようにすると、バッファに追加するデータが少なくてすむので効率が良くなる。
【0023】
CoHOG特徴量は多くの組み合わせヒストグラムを並べたものになるので特徴量の要素数が膨大になってしまう。そこで、全ての勾配方向ペアのヒストグラムを算出するのでなく、その部分集合を使うことで特徴量の要素数を削減することができる。このとき対象領域中の全てのブロックで同じ部分集合を使わずに、図9に示すようなブロックごとに異なる部分集合を利用することができる。CoHOG特徴量は画像があるクラス(歩行者、自動車、標識など)に属するかどうかを判定する識別問題に利用される。このような問題ではクラスごとに判定にとって重要な部位とそうでない部位が生じるのでブロックごとに異なる勾配方向ペアの集合を採用することで、重要な部位にはヒストグラムを算出するペア数を多くし、そうでない部位はペア数を減らして特徴量全体の要素数は削減しながら、識別性能は確保する、といった調整が可能になる。このようなことも本実施形態の特徴量算出装置で実現できる。全ての勾配方向ペアは図8(b)の位置データによって表現できるので、その部分集合を使う場合は図8(b)の一部を取り出せばよい。ブロックごとに異なる位置データを指定することで、部位によって勾配方向ペアの数を調整することができる。判定に重要な部位は対象となるクラスによって異なるので、特徴量算出に用いられる勾配方向ペアはクラスによって変わる。本実施形態ではテーブルを動的に計算する仕組みを持つため、対象となるクラスを途中で切り替えるような場合であっても、それに合わせて並列計算の組み合わせを変更することができる。そのため、ヒストグラムを算出するデータの位置が部位によって異なったり、ヒストグラムの数が場合によって変わったりするようなときにもそれぞれの条件に合わせて並列処理を実現できる。そのため、条件に合わせて高速にヒストグラム特徴量を算出できる。
【0024】
第1の実施形態の特徴量算出装置では、バッファ101の大きさ、ヒストグラムの算出位置、メモリ103の並列度といったスペック情報を利用して並列に投票処理を実行する範囲を決め、並列に特徴量を算出する。この決定を動的に行うのでスペックが変わればそれに合わせて並列度合いを変化させることが可能である。
【0025】
(第2の実施形態)
第2の実施形態の識別装置1100の動作を説明する。入力データからヒストグラムを明示的に求めずに、ヒストグラム特徴量として辞書データが示す識別関数とヒストグラムの各ビンの値の内積を算出する点が第1の実施形態の特徴量算出装置とは異なる。
【0026】
図10は、本実施形態の識別装置のブロック図である。図1の第1の実施形態と異なるのはメモリ1003がヒストグラムデータを保存するのではなく、ヒストグラムデータに対応する線形識別関数の重み係数(辞書データとも呼ばれる)を保持するために使われることと、識別結果算出部106でヒストグラム特徴量とメモリ1003に保存された重み係数との内積値
g(x)= w1 x1+ w2 x2+ w2 x2+・・・+ wN xN+b ・・・(1)
を算出することである。x1、x2、・・・xNはヒストグラム特徴量の要素、w1、w2、・・・wNはそれに対応する重み係数、bはスカラー定数を表す。w1、w2、・・・wNとbの値は線形SVMなどの学習手法によりあらかじめ算出しておく。内積値g(x)の符号により、入力したヒストグラム特徴量が特定のカテゴリに属するか否かを判定することができる。識別装置1100は、内積値を出力しても、符号を出力してもどちらでも構わない。内積値を算出するため算出部106は内部に関数値の途中経過を保持するレジスタと加算器を持っている。第1の実施形態と同じようにこの実施形態でもテーブルを算出する処理とそれ以降の処理に大別できる。異なるのは特徴量そのものではなく内積値だけを出力するため、出力されるデータ量が減少することである。前述のCoHOG特徴量などは要素数が多いため出力されるデータサイズが大きくなってしまうが、本実施形態だとスカラー値1つだけになりそのような問題を解消できる。テーブルを算出する処理は実施形態1のフローチャート図4と同じで、バッファ101中でヒストグラムを算出する位置とメモリ1003の並列度に合わせて並列動作させる組み合わせを決定する。得られるテーブルを使ってヒストグラム特徴量を算出し、内積値を算出する処理のフローチャートは図11のようになる。ST1101では内積値を0に初期化する。次のST1102ではテーブルのインデックスを初期化する。ST1103はバッファ101に入力データを読み込む処理である。読む込むデータは説明に用いている画像データに限らず、ヒストグラムを算出可能な数値列であれば同じ手法が適用可能である。ST1104から1107までの処理は並列して処理することができる。ST1104ではテーブルから一要素を読んで、ヒストグラムを算出するデータの位置と、これに対応する重み係数が格納されたメモリ位置を取得する。メモリ位置はやはりメモリバンクIDとアドレスの組(B, A)で与えられる。次のST1105は指定されたバッファ位置からデータdを読み込む。CoHOG特徴量のように二つのデータの組み合わせを使う場合は、二つのデータを両方読むことになる。ST1106は重み係数のメモリ位置(B,A)とデータdから重み係数のメモリアドレスを決定する。ここまでの処理はフローチャート図5とあまり変わることがない。異なるのはST1107の処理で、決定されたメモリアドレスの値をインクリメントして投票を行う代わりに、その値を読み出して内積値に加算する。式(1)の一つの項wixiのxiはヒストグラムの値である。そのためwiとxiを個別に求めた後乗算するのではなく、wiをxi回加算することでwixiの値を得るというのがここで行っている処理である。この並列処理をテーブルが複数あるときはその数だけ繰り返す。さらに、この処理を入力データ全体に渡って繰り返すことで内積値を算出し、出力する。以上の処理は図5の処理と比較すると、メモリ1003に対する投票処理が重み係数の読み出しと加算に置き換わることになるので、第1の実施形態と同じく、ヒストグラムを算出するバッファ位置の組み合わせやメモリ1003の並列数に応じた並列化が実現できるという効果がある。さらに、本実施形態では複数種類の辞書データを異なるメモリ空間に配置することにより、線形識別関数の並列計算も可能になる。要素を削減したCoHOG特徴量の例で考えると、あるブロックではクラスAの識別を行うために勾配方向ペアを13組、Bの識別には7組用いるとする。さらに、識別結果算出部を2つ以上持っていたとすると、メモリ並列数が20以上の場合、二つの辞書のデータを並列に呼び出し、加算も二つ並列に実行することができる。一方、並列数が19以下の場合、2回に分けて処理するなど、部の規模に合わせた並列化が実現できるのは第1の実施形態と共通した効果である。
【0027】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0028】
特徴量算出装置110、バッファ101、位置データ保持部102、メモリ103、1003、生成部104、テーブル105、投票部106、
メモリ装置120
制御装置100
識別器1100
識別結果算出部1006
【特許請求の範囲】
【請求項1】
入力データの特徴値のヒストグラムに基づく特徴量を算出する特徴量算出装置において、
前記入力データの一部を保持するためのバッファと、
複数のバンクを有し、前記ヒストグラムの算出結果を保持するためのメモリと、
前記特徴値を算出しようとする対象データの前記バッファ上での位置と、算出された前記特徴値のカテゴリを投票する前記メモリ上の位置とが対応されたテーブルを生成する生成部と、
前記対象データの前記特徴値のカテゴリを求め、前記テーブルが示す前記メモリ上の位置に投票を行う投票部とを
備える特徴量算出装置。
【請求項2】
前記メモリは、N個のバンクを有し、
前記生成部は、N個以下の組合せが対応されたテーブルを生成する場合には、前記投票する前記メモリ上の位置が組合せ毎に異なる前記バンクに属するような前記テーブルを生成する、
請求項1記載の特徴量算出装置。
【請求項3】
前記生成部は、前記バッファが保持する前記入力データの数に応じた数の前記テーブルを生成し、
前記投票部は、前記テーブルごとに並列して投票を行う
請求項2に記載の特徴量算出装置。
【請求項4】
前記生成部は複数の前記テーブルを生成し、
前記投票部は、前記対象データの前記入力データ内での位置に応じて参照する前記テーブルを選択し、選択された前記テーブルに応じて投票を行う
請求項1記載の特徴量算出装置。
【請求項5】
前記入力データは画像データであり、
前記投票部は、前記画像データの画素値勾配から前記カテゴリを求めることを特徴とする請求項4記載の特徴量算出装置。
【請求項6】
入力データのクラスを識別する識別装置において、
前記入力データの一部を保持するためのバッファと、
複数のバンクを有し、前記ヒストグラムの算出結果を保持するためのメモリと、
前記特徴値を算出する対象データの前記バッファ上での位置と、算出された前記特徴値のカテゴリに応じた重み係数を加算する前記メモリ上の位置とが対応されたテーブルを生成する生成部と、
前記対象データの前記特徴値を求め、求められた前記特徴値のカテゴリに応じて、前記テーブルが示す前記メモリ上の位置の前記重み係数に値を加算する投票部と、
前記入力データに対して求めた前記重み係数と、前記カテゴリごとの前記特徴値とから識別結果を求める算出部と、
を備える識別装置。
【請求項1】
入力データの特徴値のヒストグラムに基づく特徴量を算出する特徴量算出装置において、
前記入力データの一部を保持するためのバッファと、
複数のバンクを有し、前記ヒストグラムの算出結果を保持するためのメモリと、
前記特徴値を算出しようとする対象データの前記バッファ上での位置と、算出された前記特徴値のカテゴリを投票する前記メモリ上の位置とが対応されたテーブルを生成する生成部と、
前記対象データの前記特徴値のカテゴリを求め、前記テーブルが示す前記メモリ上の位置に投票を行う投票部とを
備える特徴量算出装置。
【請求項2】
前記メモリは、N個のバンクを有し、
前記生成部は、N個以下の組合せが対応されたテーブルを生成する場合には、前記投票する前記メモリ上の位置が組合せ毎に異なる前記バンクに属するような前記テーブルを生成する、
請求項1記載の特徴量算出装置。
【請求項3】
前記生成部は、前記バッファが保持する前記入力データの数に応じた数の前記テーブルを生成し、
前記投票部は、前記テーブルごとに並列して投票を行う
請求項2に記載の特徴量算出装置。
【請求項4】
前記生成部は複数の前記テーブルを生成し、
前記投票部は、前記対象データの前記入力データ内での位置に応じて参照する前記テーブルを選択し、選択された前記テーブルに応じて投票を行う
請求項1記載の特徴量算出装置。
【請求項5】
前記入力データは画像データであり、
前記投票部は、前記画像データの画素値勾配から前記カテゴリを求めることを特徴とする請求項4記載の特徴量算出装置。
【請求項6】
入力データのクラスを識別する識別装置において、
前記入力データの一部を保持するためのバッファと、
複数のバンクを有し、前記ヒストグラムの算出結果を保持するためのメモリと、
前記特徴値を算出する対象データの前記バッファ上での位置と、算出された前記特徴値のカテゴリに応じた重み係数を加算する前記メモリ上の位置とが対応されたテーブルを生成する生成部と、
前記対象データの前記特徴値を求め、求められた前記特徴値のカテゴリに応じて、前記テーブルが示す前記メモリ上の位置の前記重み係数に値を加算する投票部と、
前記入力データに対して求めた前記重み係数と、前記カテゴリごとの前記特徴値とから識別結果を求める算出部と、
を備える識別装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2012−53769(P2012−53769A)
【公開日】平成24年3月15日(2012.3.15)
【国際特許分類】
【出願番号】特願2010−196982(P2010−196982)
【出願日】平成22年9月2日(2010.9.2)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成24年3月15日(2012.3.15)
【国際特許分類】
【出願日】平成22年9月2日(2010.9.2)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]