IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キヤノン株式会社の特許一覧

特開2024-174542データ処理装置及びその方法、プログラム
<>
  • 特開-データ処理装置及びその方法、プログラム 図1
  • 特開-データ処理装置及びその方法、プログラム 図2
  • 特開-データ処理装置及びその方法、プログラム 図3
  • 特開-データ処理装置及びその方法、プログラム 図4
  • 特開-データ処理装置及びその方法、プログラム 図5
  • 特開-データ処理装置及びその方法、プログラム 図6
  • 特開-データ処理装置及びその方法、プログラム 図7
  • 特開-データ処理装置及びその方法、プログラム 図8
  • 特開-データ処理装置及びその方法、プログラム 図9
  • 特開-データ処理装置及びその方法、プログラム 図10
  • 特開-データ処理装置及びその方法、プログラム 図11
  • 特開-データ処理装置及びその方法、プログラム 図12
  • 特開-データ処理装置及びその方法、プログラム 図13
  • 特開-データ処理装置及びその方法、プログラム 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024174542
(43)【公開日】2024-12-17
(54)【発明の名称】データ処理装置及びその方法、プログラム
(51)【国際特許分類】
   G06N 3/063 20230101AFI20241210BHJP
   G06F 17/10 20060101ALI20241210BHJP
【FI】
G06N3/063
G06F17/10 S
【審査請求】未請求
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2023092414
(22)【出願日】2023-06-05
(71)【出願人】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100126240
【弁理士】
【氏名又は名称】阿部 琢磨
(74)【代理人】
【識別番号】100223941
【弁理士】
【氏名又は名称】高橋 佳子
(74)【代理人】
【識別番号】100159695
【弁理士】
【氏名又は名称】中辻 七朗
(74)【代理人】
【識別番号】100172476
【弁理士】
【氏名又は名称】冨田 一史
(74)【代理人】
【識別番号】100126974
【弁理士】
【氏名又は名称】大朋 靖尚
(72)【発明者】
【氏名】吉永 幹
(72)【発明者】
【氏名】加藤 政美
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB26
5B056BB71
(57)【要約】
【課題】 積和演算結果に対して様々な後処理を実行するデータ処理装置において、プログラムサイズまたは回路規模を抑制する。
【解決手段】 データ処理装置に、与えられた積和演算パラメタに基づいてデータに対して積和演算を行う積和演算手段と、前記積和演算手段の演算結果を保持する演算結果保持手段と、前記演算結果保持手段に保持された前記積和演算結果に対して、与えられたコマンドに基づいて、該コマンドに定義された処理を行うコマンド処理手段と、前記積和演算パラメタと前記コマンドとを組合せたパラメタ列を受け取り、当該組合せの内容と順序とに基づいて、前記積和演算手段に前記積和演算パラメタを与え、前記コマンド処理手段に前記コマンドを与える分配手段とを備える。
【選択図】 図1
【特許請求の範囲】
【請求項1】
与えられた積和演算パラメタに基づいてデータに対して積和演算を行う積和演算手段と、
前記積和演算手段の演算結果を保持する演算結果保持手段と、
前記演算結果保持手段に保持された前記積和演算結果に対して、与えられたコマンドに基づいて、該コマンドに定義された処理を行うコマンド処理手段と、
前記積和演算パラメタと前記コマンドとを組合せたパラメタ列を受け取り、当該組合せの内容と順序とに基づいて、前記積和演算手段に前記積和演算パラメタを与え、前記コマンド処理手段に前記コマンドを与える分配手段とを有することを特徴とするデータ処理装置。
【請求項2】
前記分配手段は、前記積和演算手段及び前記コマンド処理手段に前記積和演算パラメタ及び前記コマンドを与え、
前記積和演算手段及び前記コマンド処理手段は、前記分配手段が前記積和演算パラメタ及び前記コマンドを与えた順に処理を行うことを特徴とする請求項1に記載のデータ処理装置。
【請求項3】
前記積和演算手段は、前記積和演算パラメタの内容に基づいてニューラルネットワークにおける積和演算を行うことを特徴とする請求項1に記載のデータ処理装置。
【請求項4】
前記コマンド処理手段の処理に用いる入力データを保持する入力データ保持手段を更に有し、
前記コマンド処理手段は、前記コマンドの内容に基づいて、外部から受け取った入力データを前記入力データ保持手段に格納する処理を行うことを特徴とする請求項1に記載のデータ処理装置。
【請求項5】
前記コマンド処理手段の処理により得られる出力データを保持する出力データ保持手段を更に有し、
前記コマンド処理手段は、前記コマンドの内容に基づいて、前記出力データ保持手段に保持されている出力データを外部に出力する処理を行うことを特徴とする請求項1に記載のデータ処理装置。
【請求項6】
前記コマンド処理手段の処理に用いる入力データを保持する入力データ保持手段と、
前記コマンド処理手段の処理により得られる出力データを保持する出力データ保持手段とを更に有し、
前記コマンド処理手段は、前記コマンドの内容に基づいて、前記演算結果保持手段及び前記入力データ保持手段が保持するデータを参照した処理を行い、該処理により得られたデータを前記出力データ保持手段に格納する処理を行うことを特徴とする請求項1に記載のデータ処理装置。
【請求項7】
前記コマンド処理手段が前記コマンドの内容に基づいて行う処理のいずれかを行う演算処理手段を更に有し、
前記コマンド処理手段は、前記コマンドの内容に基づいて、前記演算処理手段に処理の開始を命じ、前記演算処理手段による処理の完了を待機することを特徴とする請求項1に記載のデータ処理装置。
【請求項8】
前記分配手段は、前記コマンドの内容に基づいて、前記コマンド処理手段の処理の完了を待機するか否かを決定することを特徴とする請求項1に記載のデータ処理装置。
【請求項9】
前記積和演算手段は、前記コマンド処理手段による前記コマンドに定義された処理と並行して前記積和演算を行うことを特徴とする請求項1に記載のデータ処理装置。
【請求項10】
前記コマンド処理手段は、前記コマンドに基づいて行った処理の結果を前記分配手段に通知し、
前記分配手段は、前記コマンド処理手段からの通知に基づいて、当該コマンド処理手段に送信する前記コマンドを切り替えることを特徴とする請求項1に記載のデータ処理装置。
【請求項11】
前記積和演算手段は、前記積和演算パラメタに基づいて、認識処理における積和演算を行って特徴データを算出することを特徴とする請求項1に記載のデータ処理装置。
【請求項12】
前記コマンド処理手段は、前記コマンドに基づいて、前記特徴データから前記認識処理の結果を算出することを特徴とする請求項11に記載のデータ処理装置。
【請求項13】
積和演算手段と、演算結果保持手段と、コマンド処理手段とを備えたデータ処理装置におけるデータ処理方法であって、
積和演算パラメタとコマンドとを組合せたパラメタ列を受け取り、当該組合せの内容と順序とに基づいて、前記積和演算手段に前記積和演算パラメタを与え、前記コマンド処理手段に前記コマンドを与える分配工程と、
与えられた積和演算パラメタに基づいて、前記積和演算手段によりデータに対して積和演算を行う積和演算工程と、
前記積和演算工程の演算結果を前記演算結果保持手段に格納する格納工程と、
前記演算結果保持手段に保持された前記積和演算結果に対して、与えられたコマンドに基づいて、該コマンドに定義された処理を前記コマンド処理手段により行うコマンド処理工程とを有することを特徴とするデータ処理方法。
【請求項14】
コンピュータを請求項1に記載のデータ処理装置の各手段として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数種類のニューラルネットワークの処理を行うデータ処理装置及びその方法、プログラムに関するものである。
【背景技術】
【0002】
ニューラルネットワーク(Neural Networks,以下NNと呼ぶ)を、より少ないリソース消費で装置に搭載するためのハードウェア実装技術が求められている。NNは、深層学習に用いられる方法として知られ、認識処理に広く用いられる。例えばNNの一種である畳み込みニューラルネットワーク(Convolutional Neural Networks,以下CNNと呼ぶ)は、主に画像認識等のタスクにおいて優れた性能を発揮する。NNの大部分は積和演算から成り、専用ハードウェアによる並列処理の恩恵を受けやすい。また、重み係数すなわち入力パラメタの入れ替えのみで様々な認識処理に対応できる。同一のハードウェア上で多様な認識処理において性能を発揮できることはNNの利点である。
【0003】
例えば、ある認識処理では、所望の被写体が入力画像中のどの位置にいるかを求める。すなわち、入力画像を入力として受け取り、被写体の入力画像中の位置座標を出力として返す処理である。
【0004】
前述の認識処理では、まず入力画像をNNに与えて特徴データを抽出する。特徴データは、例えば入力画像と同じ2次元データであり、NNは認識処理の目的に応じた特徴データを出力するように事前に重み係数を与えられている。例えば前述の認識処理のNNは、被写体の位置付近では値が大きく、それ以外の位置では値が小さいような特徴データを出力する。あるいはNNが複数種類の被写体に対応する場合、前述のような2次元データを複数枚積み上げた3次元データを特徴データとして出力する。これら3次元の特徴データを構成する各2次元データのことをチャネルと呼称する。
【0005】
前述の認識処理では、次に特徴データから被写体の位置座標を算出する。特徴データは入力画像中の被写体と同じ位置で値が大きくなるため、例えば2次元の特徴データ内で値が最大や極大となる位置を求めることで被写体の位置座標を推定することが可能となる。特徴データが3次元の場合は、位置を求めたい被写体に対応するチャネルを参照し、2次元のデータの場合と同様の処理を行う。
【0006】
以上のように、一般に認識処理はNNの演算を行う前段部分と、NNの演算結果を用いて最終的な認識処理結果を求める後段部分とに大別することができる。以下では、前段部分を積和演算部分、後段部分を後処理部分と呼称する。
【0007】
一方で、NNを用いた認識処理の多様化によるプログラムサイズ及び回路規模の増大が問題となる。例えばNNを用いた認識処理では、最適なNNの階層数・階層毎の次元数等が目的や認識対象に応じて変化する。従って、ハードウェアがより多様な認識処理に対応するほど制御部のシーケンスは複雑化し、プログラムサイズや回路規模の増大に繋がる。
【0008】
特許文献1では、NN演算を行うハードウェアの処理シーケンスを外部入力として与える。特許文献1によるデータ処理装置では、外部入力として制御データを複数連結したものを与える。各制御データはNN演算を分割した1つの処理単位に対応し、制御データの並び順が処理の順序を表す。これにより、データ処理装置に新たなシーケンスを追加することなく、制御データを変えることで新たな認識処理を実行できる。
【0009】
特許文献2では、NN演算を行うハードウェアの処理シーケンスを外部入力として与える。特許文献2によるデータ処理装置では、NN演算を構成する各種演算処理を命令に基づいて実行する。複数の命令を組み合わせることで所望のNN演算を実現し、命令を与える順序が処理の順序を表す。これにより、データ処理装置に新たなシーケンスを追加することなく、命令列を変えることで新たな認識処理を実行できる。
【0010】
特許文献3では、認識処理の種類に応じてソフトウェアを生成する。特許文献3によるNNモデル生成装置では、ハードウェアの情報とアルゴリズムの情報を与えることで、所望のNN演算を行うために必要なシーケンスを有するソフトウェアを生成する。すなわち、認識処理の種類毎に異なるソフトウェアを使い分ける。これにより、1つのソフトウェアに搭載するシーケンスを限定し、プログラムサイズの増大を防いでいる。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2020-140546号公報
【特許文献2】米国特許9836691号公報
【特許文献3】特開2022-66974号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
一方で、特許文献1及び特許文献2のようにNN演算部分のシーケンスを外部入力として与える方法では、認識処理の後処理部分の多様化によるプログラムサイズまたは回路規模の増大を抑えることはできない。積和演算部分のみのシーケンスを外部入力として与える方法では、後処理部分を別途ソフトウェアや専用のハードウェアで実現する必要がある。従って、それらによるプログラムサイズまたは回路規模の増大を抑えることはできない。
【0013】
また、特許文献3のように認識処理の種類毎にソフトウェアを生成する方法では、認識処理1種類毎のプログラムサイズを抑えられる一方で、認識処理の切り替えを行う毎にプログラムの書き換えに掛かる処理時間等のオーバヘッドを負うことになる。従って、1つのハードウェアで複数種類の認識処理をサポートできるのは、リアルタイム性を要求されない、メモリ・バス帯域に余裕があるなどの限定された条件下のみとなる。
【課題を解決するための手段】
【0014】
上記課題を解決するため、本発明の1態様によれば、データ処理装置に、与えられた積和演算パラメタに基づいてデータに対して積和演算を行う積和演算手段と、前記積和演算手段の演算結果を保持する演算結果保持手段と、前記演算結果保持手段に保持された前記積和演算結果に対して、与えられたコマンドに基づいて、該コマンドに定義された処理を行うコマンド処理手段と、前記積和演算パラメタと前記コマンドとを組合せたパラメタ列を受け取り、当該組合せの内容と順序とに基づいて、前記積和演算手段に前記積和演算パラメタを与え、前記コマンド処理手段に前記コマンドを与える分配手段とを備える。
【発明の効果】
【0015】
本発明によれば、複数種類のニューラルネットワークの処理を行うデータ処理装置において、プログラムサイズまたは回路規模の増大を抑えつつ、より多くの種類の処理を行うことが可能となる。
【図面の簡単な説明】
【0016】
図1】第1及び第2の実施形態における認識処理部の構成例を示す図、
図2】第1の実施形態における実行対象となる認識処理の構成を示す図、
図3】認識処理毎に異なる後処理を実行するフローチャートの一例を示す図、
図4】第1及び第2の実施形態におけるデータ処理装置の構成例を示す図、
図5】第1の実施形態におけるコマンド処理部102のフローチャートを示す図、
図6図3及び図5に示すフローチャートにおけるプログラムサイズの違いを示す図、
図7】第1の実施形態における入力データとなるパラメタの構成を示す図、
図8】第1の実施形態における認識処理部内のメモリマップを示す図、
図9】第1の実施形態における認識処理部内の動作シーケンスを示す図、
図10】第2の実施形態における実行対象となる認識処理の構成を示す図、
図11】第2の実施形態におけるコマンド処理部のフローチャートを示す図、
図12】第2の実施形態における入力データとなるパラメタの構成を示す図、
図13】第2の実施形態における認識処理部内のメモリマップを示す図、
図14】第2の実施形態における認識処理部内の動作シーケンスを示す図である。
【発明を実施するための形態】
【0017】
以下、図面を参照しながら本発明の好適な実施形態について詳細に説明する。なお、以下の実施形態に記載する構成は代表例であり、本発明の範囲はそれらの具体的構成に必ずしも限定されない。
【0018】
以下、図面に基づいて本発明の実施形態について詳細に説明する。各実施形態では、積和演算部分及び後処理部分を含めた認識処理全体のシーケンスを、各処理のパラメタを並べたパラメタ列(以下では、単にパラメタともいう)として受け取り、その内容に応じて処理を行う。これにより、プログラムサイズまたは回路規模の増大を抑えつつ、認識処理のシーケンスの多様化に対応する。
【0019】
以下に説明するデータ処理装置では、積和演算部分を制御するためのパラメタと後処理部分を制御するためのパラメタとを連結したものを入力として与え、パラメタの並び順が積和演算部分及び後処理部分のシーケンス上の処理順序となる。各実施形態では、目的の認識処理を実現するためにどのようなパラメタを与えるか、またデータ処理装置はそれらパラメタに対してどのような処理を行うか、をそれぞれ示す。
【0020】
なお、以下の実施形態では、簡単のために、図2のフローチャートに相当する部分はソフトウェアとして実装し、本実施形態によるデータ処理装置の目的は、プログラムサイズの増大を防ぐことであるものとする。当該部分をハードウェアで実装する場合は、同様に回路規模の増大を防ぐことが可能である。
【0021】
<実施形態1>
第1の実施形態では、データ処理装置において、適切なパラメタを与えることで目的の認識処理の後処理部分を実現する。また、パラメタによるシーケンスの定義とそれの実現に必要なデータ処理装置及び方法の構成を明らかにする。以上により、本実施形態に係るデータ処理装置により、認識処理の多様化によるプログラムサイズの増加を防ぐことを実現する。
【0022】
<後処理とシーケンスの多様化>
初めに本実施形態におけるデータ処理装置について説明するための前提として、認識処理とそこに含まれる積和演算部分及び後処理部分について一例を挙げる。また、それを踏まえて後処理部分のシーケンスをどのように実装するか、その場合プログラムサイズの観点からどのような問題が起こるか、について述べる。
【0023】
図2に、第1の実施形態で実行対象とする認識処理の構成を示す。図2に示す認識処理は、CNNが1つと、その出力を用いる後処理2つとから成る。この認識処理では、入力画像200と後処理設定203とを受け取り、第1の処理結果206及び第2の処理結果207を返す。
【0024】
第1のCNN201は、入力画像200を受け取り、積和演算を行う。積和演算の結果として、第1の特徴データ202を返す。第1の特徴データ202は、入力画像200に対応する位置のスコアを表すスコアマップであり、複数のスコアマップから成る。以下、スコアマップ1枚1枚のことをチャネルと呼称する。
【0025】
第1のCNN201は、入力画像200において特定の被写体が写っている領域で高いスコアを出力するよう事前に学習されている。例えば、あるチャネルでは人物の頭部が写っている領域でスコアが高くなり、別のチャネルでは人物の胴体が写っている領域でスコアが高くなる。
【0026】
第1の位置推定処理204は、第1の特徴データ202の特定のチャネルを参照し、スコアが周囲よりも高い位置について、入力画像200における座標値を求める。求めた座標値を第1の処理結果206として返す。
【0027】
第2の位置推定処理205は、第1の特徴データ202の別のチャネルを参照して、第1の位置推定処理204と同様の処理を行い、第2の処理結果207を返す。第1の位置推定処理204と第2の位置推定処理205とは、後処理設定203に従って、それぞれ異なるチャネルを参照する。例えば、第1の位置推定処理204は人物の頭部に対応するチャネルを参照する。一方で、第2の位置推定処理205は人物の胴体に対応するチャネルを参照する。
【0028】
以上により、図2に示す認識処理では、CNN及び後処理の組み合わせにより特定の機能を実現する。例えば、入力画像200に写る人物の頭部及び胴体の位置を求め、それぞれ第1の処理結果206及び第2の処理結果207として出力する。
【0029】
NNを含む認識処理においては、認識処理の目的や対象に応じて後処理部分のシーケンスが大きく変化する。図2に示す認識処理のうち、第1のCNN201は積和演算部分、それより後段に位置する各処理は後処理部分にあたる。例えば、人物の頭部のみの位置が得られればよい場合は、図2に示す認識処理から第2の位置推定処理205が除外され、出力も第1の処理結果206のみとなる。あるいは、例えば人物の頭部の位置だけでなくサイズも得たい場合、第2の位置推定処理205は別の処理に置き換わり、第2の処理結果207からは人物頭部のサイズが出力されるようになる。
【0030】
図3に、認識処理毎に異なる後処理を実行するための従来のフローチャートの一例を示す。後処理を開始すると、ステップS301では認識処理の種類に応じて処理が分岐する。ここでは、図2に示す認識処理の後処理部分を実行する場合を例として、分岐0に進むものとする。ステップS302では、後処理に必要な入力データを外部から入力する。ここでは、第1の位置推定処理204及び第2の位置推定処理205の実行に必要な後処理設定203を入力する。
【0031】
ステップS303では、位置推定処理を実行する。これは図2における第1の位置推定処理204に相当する。ステップS304では、位置推定処理を実行する。これは図2における第2の位置推定処理205に相当する。ステップS305では、後処理の結果を外部に出力する。ここでは、ステップS303及び304の処理結果、すなわち図2における第1の処理結果206及び第2の処理結果207を出力する。
【0032】
図3に示すフローチャートの処理をソフトウェアとして実装する場合、認識処理の種類が増えるにつれて総ステップ数は増加する。例えば位置推定処理が1つのみの認識処理を追加する場合、分岐1につながるステップS307‐309が追加される。このとき、各ステップは分岐0に含まれるものと同じステップであっても、その実行回数や並び順が異なる場合、分岐先の各ステップの追加が必要となる。
【0033】
従って、従来技術では、認識処理の種類が増えるに従い、後処理部分のシーケンスを記述したソフトウェアのプログラムサイズは増加していく。そこで、本実施形態に係るデータ処理装置では、積和演算部分及び後処理部分を合わせた認識処理全体のシーケンスをパラメタとして外部から入力することにより、認識処理の多様化によるプログラムサイズの増加を抑える。
【0034】
<データ処理装置の構成例>
図4は、プログラムサイズの増加を抑えつつ多種類の認識処理を処理するための、データ処理装置の構成の一例を示すブロック図である。入力部401は、ユーザからの指示やデータを入力する装置であり、キーボードやポインティング装置やボタン等を含む。また、あるいは公知のタッチスクリーン装置のように、後述する表示部404と入力部401が同一装置であっても良い。その場合には、タッチスクリーンによる入力を入力部401の入力として扱う。
【0035】
データ保存部402は、画像データを保存する部分である。通常はハードディスク、フレキシブルディスク、CD-ROM、CD-RやDVD、メモリーカード、CFカード、スマートメディア、SDカード、メモリスティック、xDピクチャーカード、USBメモリ等で構成される。データ保存部402には画像データの他にプログラムやその他のデータを保存することも可能である。あるいは、RAM409の一部をデータ保存部402として用いても良い。またあるいは、後述する通信部403を介して接続した先の機器の記憶装置を利用する、というように仮想的に構成するのであっても良い。
【0036】
通信部403は、機器間の通信を行うためのI/Fである。なお、図5では入力部401、データ保存部402、後述する表示部404が全て1つの装置内に含まれるような図を示している。しかし、これらの部分が公知の通信方式による通信路で接続されており、全体としてこのような構成となっているのであっても構わない。表示部404は、画像処理前及び画像処理後の画像、あるいはGUI等の画像を表示する装置である。一般的にはCRTや液晶ディスプレイなどが用いられる。あるいは、ケーブル等で接続された装置外部のディスプレイ装置であっても構わない。
【0037】
画像処理部405は、後述するCPU406からのコマンドを受け、データ保存部402に書き込まれた画像データを読み出して画素値のレンジ調整を行う。処理された結果を後述するRAM409に書き込む。CPU406は、本装置全体の動作を制御する。ROM408とRAM409は、その処理に必要なプログラム、データ、作業領域等をCPU406に提供する。後述する処理に必要なプログラムがデータ保存部402やROM408に格納されている場合には、一旦RAM409に読み込まれてから実行される。またあるいは、通信部403を経由して装置がプログラムを受信する場合には、一旦データ保存部402に記録した後にRAM409に読み込まれる。また、直接通信部403からRAM409に直接読み込まれてから実行されても良い。なお、図4においては、CPUが1つ(CPU406)だけである構成だが、これを複数設けるような構成にしても良い。
【0038】
認識処理部407は、CPU406からのコマンドを受け、例えば図2に示すような認識処理を行う。認識処理部407は、演算処理の実行に必要な内部記憶を有する。認識処理部407が入力として受け取るデータは通信部403から直接受け取ったり、一度RAM409に置かれたものを読み込んだりしても良い。また、認識処理部407が出力として返すデータは通信部403に直接送ったり、RAM409に書き込んだりしてもよい。データ処理装置のシステム構成については、上記以外にも様々な構成要素が存在するが、本発明の主眼ではないのでその説明は省略する。
【0039】
<認識処理部の構成例>
図1に認識処理部407の構成を示す。認識処理部407は、パラメタ分配部100、積和演算部101、コマンド処理部102の3つの演算部と、特徴データ保持部103、入力データ保持部104、出力データ保持部105の3つの記憶部とを有する。
【0040】
パラメタ分配部100は、外部からパラメタを受け取り、その内容に応じて積和演算部101またはコマンド処理部102にパラメタを分配する。積和演算部101及びコマンド処理部102は、それぞれ受け取ったパラメタに対応する処理を完了すると、パラメタ分配部100に終了通知を送る。パラメタ分配部100は終了通知を受け取ると、次のパラメタの分配を開始する。
【0041】
パラメタ分配部100が積和演算部101に与えるパラメタを、積和演算パラメタと呼称する。積和演算パラメタには積和演算部101が認識処理の積和演算部分を行うのに必要な情報を含む。例えば、NNの重み係数のようなパラメタや、算出すべき特徴データのチャネルの数といった情報が積和演算パラメタに含まれる。
【0042】
パラメタ分配部100がコマンド処理部102に与えるパラメタを、後処理パラメタと呼称する。後処理パラメタはすなわちコマンド列である。コマンド処理部102が実行する一連の処理、すなわち認識処理の後処理部分は、予め定義された処理の組合せで実現される。パラメタ分配部100は、コマンド処理部102にコマンドを1つ与えることで、予め定義された処理のいずれかを実行させる。
【0043】
パラメタ分配部100は、認識処理部407が実行する一連の認識処理のシーケンスを司る役割を担う。パラメタ分配部100は、認識処理のシーケンスに応じて積和演算部101及びコマンド処理部102を適切な順序で動作させる。一方で、その順序はパラメタ内の積和演算パラメタ及び後処理パラメタの並び順により決定する。従って、認識処理のシーケンスに応じた処理順序を与えるのは、パラメタ分配部100に外部入力としてパラメタを与える側の役割となる。
【0044】
同様に、パラメタ分配部100は、コマンド処理部102が実行する認識処理の後処理部分のシーケンスを司る役割を担うが、その処理順序は後処理パラメタ内のコマンドの並び順により決定される。従って、後処理部分のシーケンスに応じた処理順序を与えるのはパラメタ分配部100に外部入力としてパラメタを与える側の役割となる。
【0045】
積和演算部101は、パラメタ分配部100から受け取った積和演算パラメタに従い、認識処理の積和演算部分の処理を行う。積和演算部分の処理では、積和演算部101は、外部から入力画像を受け取って特徴データを算出し、算出した特徴データを特徴データ保持部103に書き込む。第1の実施形態においては、積和演算部101は、多数の乗算器及び加算器から成る専用ハードウェアによって構成され、例えばCPU406で積和演算を行うよりも効率良く認識処理の積和演算部分を処理可能であるものとする。特徴データ保持部103は、この積和演算部分における積和演算結果を特徴データとして保持する積和演算結果保持部である。
【0046】
なお、積和演算部101が行う演算処理は、NN演算における特徴抽出の役割を果たす、専用ハードウェアによる並列化が容易である、といった積和演算に近しい特徴を有していれば、必ずしも積和演算に限定しないものとする。例えば、±1の2値を取る1ビットの特徴データ及び重み係数を用いるNNでは、乗算及び加算の代わりにXNOR演算とpopcount処理を行う。また、積和演算部101が行う演算処理は、例えば活性化関数の処理やプーリング処理など、積和演算以外の処理を前後に含んでいても良い。
【0047】
コマンド処理部102は、パラメタ分配部100から受け取った後処理パラメタに従い、認識処理の後処理部分の処理を行う。後処理部分では、コマンド処理部102は、積和演算部101が算出した特徴データを特徴データ保持部103から読み出し、入力データ保持部104に置かれた後処理設定に従い処理を行う。処理の結果は出力データ保持部105に書き込む。また、コマンド処理部102は、後処理設定を外部から受け取り、入力データ保持部104に格納する、出力データ保持部105に書き込んだ処理結果を外部に渡す、といった処理も行う。
【0048】
パラメタ分配部100がコマンド処理部102に与える後処理パラメタは、予め定義された処理を示す小さなパラメタの列として構成される。この列をなす小さなパラメタを以下ではコマンドと呼称する。コマンド処理部102は、コマンド毎にコマンドの種類に応じた処理を実行する。コマンドの列により与えられる一連のシーケンスの過程で、上述の処理を行う。
【0049】
なお、認識処理部407で別々の構成要素として挙げているものは、それぞれ物理的に1つの装置により実現されていても良い。例えば、パラメタ分配部100及びコマンド処理部102は、CPU406及びそこに搭載されたプログラムとして実現することができる。その場合、CPU406は、パラメタ分配部100としてパラメタを受け取り、積和演算部101向けのパラメタであれば積和演算部101に転送する。一方、コマンド処理部102向けのパラメタであれば、そのままCPU406内でコマンド処理部102相当の処理を行う。
【0050】
図5に、コマンド処理部102が行う処理のフローチャートを示す。コマンド処理部102は、処理を開始すると、ステップS501でパラメタ分配部100からコマンドを1つずつ受け取り、受け取るごとに、コマンドのループを開始する。
【0051】
ステップS502では、コマンドのTYPEフィールドの値により処理を分岐する。TYPEはコマンドの種類、すなわち予め定義された処理のいずれであるかを示す値である。TYPEが0の場合は「入力処理」を示し、ステップS503に分岐する。TYPEが1の場合は「実行」を示し、ステップS505に分岐する。TYPEが2の場合は「出力処理」を示し、ステップS504に分岐する。
【0052】
ステップS503では、図3におけるステップS302に相当する処理を行う。すなわち、外部から後処理の入力データを受け取り、入力データ保持部104に格納する。ステップS504では、図3におけるステップS305に相当する処理を行う。すなわち、出力データ保持部105に格納された後処理の出力結果を外部に出力する。
【0053】
ステップS505では、図3におけるステップS303‐304に相当する処理を行うため、予め定義された後処理のいずれかを選択する。TYPEが1のコマンドは、SUB_TYPEフィールドを有しており、ステップS505では、SUB_TYPEの値により処理を分岐する。例えば、ステップS303‐304で行う位置推定処理を選択する場合は、SUB_TYPEに0を設定する。他の処理を実行する場合SUB_TYPEに0以外を設定するが、第1の実施形態では取り扱わない。
【0054】
ステップS506では、位置推定処理を実行する。特徴データ保持部103に格納された特徴データを参照し、入力データ保持部104に格納された後処理設定に従い、特定のチャネルにおいてスコアが高い位置の座標を求める。求めた結果を、処理結果として出力データ保持部105に格納する。
【0055】
ステップS507では、コマンド処理部102はパラメタ分配部100に終了通知を送って現在のコマンドのループを終了し、次のコマンドを待つ。
【0056】
<プログラムサイズ>
図6に、図3及び図5に示すフローチャートとそのプログラムサイズとの関係を示す。左側は図3、右側は図5のフローチャートをソフトウェア実装した場合のプログラムサイズの違いを、各処理のプログラムサイズを積み上げたときの高さとして図示している。
【0057】
入力処理のプログラムサイズ600,出力処理のプログラムサイズ601、位置推定処理のプログラムサイズは、図3及び図5いずれのケースにも含まれる。図3及び図5において、これらによるプログラムサイズの差は生じない。
【0058】
その他後処理のプログラムサイズ603は、例えば図3におけるステップS313の紐付け処理など、位置推定処理の他に後処理の種類を追加した場合のプログラムサイズの増加分である。図3及び図5において、サポートする認識処理の種類が全く同じであると仮定した場合、追加される後処理の種類も全く同じであるため、これらによるプログラムサイズの差は生じない。
【0059】
図3のフローチャートにおける共通部分のプログラムサイズ604は、ステップS300‐301やステップS307等、認識処理の種類に依存しない処理によるプログラムサイズの増加分である。
【0060】
図3のフローチャートにおける非共通部分のプログラムサイズ605は、認識処理の種類毎のシーケンスを記述した部分によるプログラムサイズの増加分である。非共通部分のプログラムサイズ604は、認識処理の種類が増えてステップS301以降の分岐が増えるにつれ増大する。
【0061】
一方、図5のフローチャートにおける共通部分のプログラムサイズ606は、ステップS503‐506のような各コマンド処理以外の、繰り返しや分岐といったシーケンスを記述した部分によるプログラムサイズの増加分である。共通部分のプログラムサイズ606は、認識処理の種類が増えたとしても、それを構成するコマンド処理の種類が増えない限りは増大しない。
【0062】
以上のように、図3図5でサポートする認識処理の種類が同じであると仮定したとき、図3のフローチャートにおけるプログラムサイズの累積値は、認識処理の種類が多いほど大きくなる。一方、図5のフローチャートにおけるプログラムサイズの累積値は、認識処理の種類の数によらず一定である。認識処理の種類ごとに異なるシーケンスをパラメタとして外部から与えることで、本実施形態によるデータ処理装置は、プログラムサイズの増加を抑えつつ多様な認識処理をサポートすることが可能となる。
【0063】
<パラメタとシーケンス>
以下では、図2に示す認識処理を実現するために、実際にどのようにパラメタを与えるかを例示する。図7に、図2に示す認識処理を実行するために認識処理部407に与えるパラメタの構成例を示す。パラメタは、積和演算パラメタ700と、後処理パラメタ701をこの順に連結したものである。従って、認識処理部407は、積和演算部101で積和演算部分を処理した後、コマンド処理部102で後処理部分を処理する。
【0064】
積和演算パラメタ700では、第1のCNN201を実行する。積和演算パラメタ700には積和演算部101の処理に必要な制御情報が含まれる。また、DSTフィールドにより、特徴データ保持部103のどの番地に第1の特徴データ202を格納するかを指定する。制御情報の詳細は本発明の主旨とは無関係のため省略する。
【0065】
後処理パラメタ701は、後処理パラメタヘッダ702と、コマンド703‐707からなる。後処理パラメタヘッダ702のLENGTHフィールドにはコマンドの数が与えられる。パラメタ分配部100はLENGTHフィールドを参照し、必要な数だけコマンド処理部102にコマンドを送る。
【0066】
第1のコマンド703では、TYPEフィールドに0を設定し、入力処理を行う。後処理設定203を外部から受け取り、入力データ保持部104に格納する。DSTフィールドには、入力データ保持部104のどの番地に後処理設定203を格納するかを設定する。SIZEフィールドには、外部から受け取るデータサイズ、すなわち後処理設定203のデータサイズを与える。
【0067】
第2のコマンド704では、TYPEフィールドに1、SUB_TYPEフィールドに0を設定し、第1の位置推定処理204を実行する。SRC0フィールドに第1の特徴データ202、SRC1フィールドに後処理設定203の格納場所を与えるため、それぞれ積和演算パラメタ700のDSTフィールド、第1のコマンド703のDSTフィールドと同じ番地を設定する。DSTフィールドには出力データ保持部105のどの番地に第1の処理結果206を格納するかを設定する。
【0068】
第3のコマンド705では、TYPEフィールドに1、SUB_TYPEフィールドに0を設定し、第2の位置推定処理205を実行する。SRC0フィールドに第1の特徴データ202、SRC1フィールドに後処理設定203の格納場所を与えるため、それぞれ積和演算パラメタ700のDSTフィールド、第1のコマンド703のDSTフィールドと同じ番地を設定する。DSTフィールドには出力データ保持部105のどの番地に第2の処理結果207を格納するかを設定する。
【0069】
第4のコマンド706では、TYPEフィールドに2を設定し、出力処理を行う。出力処理では、出力データ保持部105に格納した第1の処理結果206を外部に出力する。SRCフィールドには出力対象である第1の処理結果206の置き場所を与えるため、第2のコマンド704のDSTフィールドと同じ番地を設定する。
【0070】
第5のコマンド707では、TYPEフィールドに2を設定し、出力処理を行う。出力処理では、出力データ保持部105に格納した第2の処理結果207を外部に出力する。SRCフィールドには、出力対象である第2の処理結果207の置き場所を与えるため、第3のコマンド705のDSTフィールドと同じ番地を設定する。
【0071】
図8に、図7に示すパラメタにより認識処理部407が処理を行う場合のメモリマップを示す。なお図7では、特徴データ保持部103、入力データ保持部104、出力データ保持部105は別々のメモリとしているが、例えばRAM409等の1つのメモリでこれら3つを兼ねてもよい。
【0072】
特徴データ保持部103には、第1の特徴データ領域800を設け、第1の特徴データ202を格納する。積和演算パラメタ700のDSTフィールドに従い、第1の特徴データ領域800の開始番地はAAAAとなる。第1の特徴データ領域800にアクセスする第2のコマンド704及び第3のコマンド705では、対応するフィールドすなわちSRC0フィールドにAAAAを設定する。
【0073】
入力データ保持部104には、後処理設定領域801を設け、後処理設定203を格納する。第1のコマンド703のDSTフィールドに従い、後処理設定領域801の開始番地はBBBBとなる。後処理設定領域801にアクセスする第2のコマンド704及び第3のコマンド705では、対応するフィールドすなわちSRC1フィールドにBBBBを設定する。
【0074】
出力データ保持部105には、第1の処理結果領域802及び第2の処理結果領域803を設け、それぞれ第1の処理結果206と第2の処理結果207とを格納する。第2のコマンド704のDSTフィールドに従い、第1の処理結果領域802の開始番地はDDDDとなる。第3のコマンド705のDSTフィールドに従い、第2の処理結果領域803の開始番地はEEEEとなる。第1の処理結果領域802及び第2の処理結果領域803にアクセスする第4のコマンド706及び第5のコマンド707では、対応するフィールドすなわちSRCフィールドに、それぞれDDDD及びEEEEを設定する。
【0075】
なお、例えば第1の処理結果領域802と第2の処理結果領域803を連結して配置し、第1の処理結果206と第2の処理結果207とを1回の出力処理で外部に出力しても良い。その場合、第4のコマンド706及び第5のコマンド707は1つのコマンドに集約され、SRCフィールドには第1の処理結果領域802の先頭位置の番地を設定すればよい。また、SIZEフィールドには第1の処理結果領域802及び第2の処理結果領域803のサイズの和である2×FFFFを与えればよい。
【0076】
図9に、図7に示すパラメタにより認識処理部407が処理を行う場合のシーケンスを示す。ステップS900では、パラメタ分配部100が外部からパラメタを受け取り、図2に示す一連の認識処理を開始する。ステップS901では、パラメタ分配部100は積和演算部101に積和演算パラメタ700を送信する。
【0077】
ステップS902では、積和演算部101は、受け取った積和演算パラメタ700に従い、第1のCNN201の処理を開始する。初めに積和演算部101は外部から入力画像200を受け取る。次に第1の特徴データ202を算出し、特徴データ保持部103に格納する。最後にパラメタ分配部100に処理完了を通知する。ステップS903では、パラメタ分配部100は、後処理パラメタ701の転送を開始する。後処理パラメタヘッダ702のLENGTHフィールドの設定に従い、コマンド処理部102にコマンドを5回送信する。初めに、第1のコマンド703を送信する。
【0078】
ステップS904では、コマンド処理部102は、第1のコマンド703に従い入力処理を開始する。初めに、コマンド処理部102は、外部から後処理設定203を受け取る。次に受け取った後処理設定203を入力データ保持部104に格納する。最後にパラメタ分配部100に処理完了を通知する。
【0079】
ステップS905では、パラメタ分配部100はコマンド処理部102に第2のコマンド704を送信する。ステップS906では、コマンド処理部102は、第2のコマンド704に従い第1の位置推定処理204を開始する。初めに特徴データ保持部103から第1の特徴データ202を、入力データ保持部104から後処理設定203を読み出す。次に第1の特徴データ202の特定のチャネルを参照し、スコアが高い位置の座標を求め、第1の処理結果206として出力データ保持部105に格納する。最後にパラメタ分配部100に処理完了を通知する。
【0080】
ステップS907では、パラメタ分配部100はコマンド処理部102に第3のコマンド705を送信する。ステップS908では、コマンド処理部102は、第3のコマンド705に従い第2の位置推定処理205を開始する。初めに特徴データ保持部103から第1の特徴データ202を、入力データ保持部104から後処理設定203を受け取る。次に第1の特徴データ202の特定のチャネルを参照し、スコアが周囲より高い位置の座標を求め、第2の処理結果207として出力データ保持部105に格納する。最後にパラメタ分配部100に処理完了を通知する。
【0081】
ステップS909では、パラメタ分配部100はコマンド処理部102に第4のコマンド706を送信する。ステップS910では、コマンド処理部102は第4のコマンド706に従い出力処理を開始する。初めに出力データ保持部105から第1の処理結果206を読み出す。次に読み出した第1の処理結果206を外部に出力する。最後にパラメタ分配部100に処理完了を通知する。
【0082】
ステップS911では、パラメタ分配部100はコマンド処理部102に第5のコマンド707を送信する。ステップS912では、コマンド処理部102は第5のコマンド707に従い出力処理を開始する。初めに出力データ保持部105から第2の処理結果207を読み出す。次に読み出した第2の処理結果207を外部に出力する。最後にパラメタ分配部100に処理完了を通知する。
【0083】
以上の通り、図7に示すパラメタを与えることで、認識処理部407は、入力画像200と後処理設定203を受け取ってから、第1の処理結果206と第2の処理結果207を返すまでの、図2に示す一連の認識処理を行うことができる。また、図2とは異なる認識処理を行う場合は、図7とは異なるパラメタでシーケンスを定義すればよい。これにより、認識処理部407は、より多くの種類の認識処理に対応する場合でもプログラムサイズを増加させることなく対応可能となる。
【0084】
第1の実施形態においては、認識処理の後処理部分のシーケンスの変動がコマンド処理部102のプログラムサイズに影響を与えず、全体として認識処理部407のプログラムサイズ増加を抑えていることを示した。認識処理毎に異なる後処理シーケンスをコマンド列として外部から与え、パラメタ分配部100が後処理パラメタ内のコマンドの並び順通りにコマンド処理部102に処理実行を命じる構成によりこれが実現される。
【0085】
<実施形態2>
第2の実施形態では、認識処理の後処理部分を制御するためのパラメタ、すなわちコマンド列だけでなく、認識処理の積和演算部分のパラメタも含めた並び順で認識処理のシーケンスを与える。適切な構成のパラメタを与えることで、第1の実施形態のようなコマンドの並び替えだけでは定義できない認識処理を実現する。また、認識処理をより効率よく処理するためのコマンドの拡張やシーケンスの与え方の一例を示す。
【0086】
なお、以下では、第1の実施形態と異なる部分や新たに追加した部分を中心に説明し、それ以外は省略するものとする。第1の実施形態におけるデータ処理装置が有する構成や特徴は、特に記載が無い限り第2の実施形態においても同様に有するものとする。
【0087】
<後処理とシーケンスの多様化>
図10に、第2の実施形態で認識対象とする認識処理の構成を示す。図10に示す認識処理はCNNが3つと、その出力を用いる後処理3つから成る。入力画像1000と後処理設定1009を受け取り、第1の処理結果1006及び第2の処理結果1011及び第3の処理結果1013を返す。
【0088】
第1のCNN1001は、入力画像1000を受け取り、積和演算を行う。積和演算の演算結果として、第1の特徴データ1002を返す。第1の特徴データ1002は、入力画像1000に対応する位置のスコアを表すスコアマップであり、複数のスコアマップから成る。以下、スコアマップ1枚1枚のことをチャネルと呼称する。
【0089】
第2のCNN1003は、第1の特徴データ1002を受け取り、さらなる積和演算を行う。積和演算の結果を第2の特徴データ1004として返す。第3のCNN1007は、第2のCNN1003と同様に、第1の特徴データ1002を受け取り、さらなる積和演算を行う。積和演算の結果を第3の特徴データ1008として返す。
【0090】
第2のCNN1003、第3のCNN1007は、入力画像1000において特定の被写体が写っている領域で高いスコアを出力するように事前に学習されている。例えば、第2のCNN1003が出力する第2の特徴データ1004では、人物の頭部が写っている領域でスコアが高くなる。また、第3のCNN1007が出力する第3の特徴データ1008では、人物の胴体が写っている領域でスコアが高くなる。従って、第2の実施形態では第1の実施形態において第1のCNN201で実現していた機能を、第1のCNN1001、第2のCNN1003、第3のCNN1007の3つの連結されたCNN群によって実現する。
【0091】
第1の位置推定処理1005は、第2の特徴データ1004を参照し、スコアが周囲より高い位置について、入力画像1000における座標値を求め、求めた座標値を第1の処理結果1006として返す。なお、第1の位置推定処理1005は、複数の被写体についてそれぞれ座標値を求め、第1の処理結果1006は、複数の座標値をリストとして含むものとする。
【0092】
第2の位置推定処理1010は、第3の特徴データ1008を参照し、スコアが周囲より高い位置について、入力画像1000における座標値を求め、求めた座標値を第2の処理結果1011として返す。第2の処理結果1011も、第1の処理結果1006と同様に複数の被写体についての座標値をリストとして含むものとする。
【0093】
以上により、第2の実施形態では、第1のCNN1001から第2の位置推定処理1010までの一連の処理により、図2に示す認識処理とほぼ同等の機能を実現する。これに加えて、第2の実施形態では紐付け処理1012を行う。
【0094】
紐付け処理1012では、第1の処理結果1006と第2の処理結果1011とを受け取り、位置座標を求めた被写体同士の紐づけを行う。例えば、被写体同士の距離や位置関係などの情報を用いて、同じ人物のものであると推測される頭部と胴体同士を紐づける。紐づけの結果は、頭部のインデックスと胴体のインデックスとのペアとして与え、これを第3の処理結果1013として返す。
【0095】
以上により、図10に示す認識処理では、CNN及び後処理の組合せにより特定の機能を実現する。例えば、入力画像1000に写る複数の人物の頭部の位置を求め、第1の処理結果1006として出力する。また、入力画像1000に写る複数の人物の胴体の位置を求め、第2の処理結果1011として出力する。さらに、入力画像1000に頭部と胴体の両方が写っている人物がいれば、それが第1の処理結果1006及び第2の処理結果1011のそれぞれ何番目の被写体であるかを第3の処理結果1013として出力する。
【0096】
図10に示す認識処理のうち、第1のCNN1001、第2のCNN1003、第3のCNN1007は、積和演算部分にあたる。第1の位置推定処理1005、第2の位置推定処理1010、紐付け処理1012は後処理部分にあたる。図10に示す認識処理の後処理部分のみを実行するには、例えば図3に示すフローチャートの分岐2に示す手順を踏む。
【0097】
ステップS310では後処理に必要な入力データを外部から入力する。ここでは、第1の位置推定処理1005、第2の位置推定処理1010、第1の紐づけ処理1012の実行に必要な後処理設定1009を入力する。ステップS311では、位置推定処理を実行する。これは図10における第1の位置推定処理1005に相当する。ステップS312では、位置推定処理を実行する。これは図10における第2の位置推定処理1010に相当する。
【0098】
ステップS313では、紐づけ処理を実行する。これは図10における第1の紐づけ処理1012に相当する。ステップS314では、後処理の結果を外部に出力する。ここではステップS311-313の各処理結果、すなわち図10における第1の処理結果1006、第2の処理結果1011、第3の処理結果1013を出力する。
【0099】
図10に示す認識処理の特徴として、データの依存関係に分岐が存在する。すなわち、第1の特徴データ1002を分岐点とし、第2のCNN1003から続く処理と、第3のCNN1007から続く処理とに分岐する。これらは第1の紐づけ処理で再び合流する。
【0100】
第2の実施形態では、分岐を有する認識処理において、パラメタで適切なシーケンスを定義することで、並列処理による高速化を図る。以下では、それに必要となるコマンド処理部102の拡張と、図10に示す認識処理をより高速に処理するためのパラメタの与え方について述べる。
【0101】
<本実施形態に係るデータ処理装置の構成例>
第2の実施形態では、第1の実施形態と同様に、図4及び図1に示す構成のデータ処理装置及び認識処理部407を用いる。以下では、第1の実施形態と異なる部分や新たに追加した部分について述べる。
【0102】
図11に、第2の実施形態においてコマンド処理部102が行う処理のフローチャートを示す。ステップS1100‐1106は、第1の実施形態におけるステップS500‐506と同等の処理である。ステップS1107では、コマンド処理部102は、紐付け処理を行う。出力データ保持部105に格納された位置推定処理の結果2つを参照し、入力データ保持部104に格納された後処理設定に従い、位置推定処理の結果に含まれる被写体同士の紐づけを行う。紐づけの結果は、処理結果として出力データ保持部105に格納する。
【0103】
第2の実施形態では、認識処理部407が、例えばCPU406のような外部の演算装置と通信を行う。第2の実施形態では、これを実現するために、コマンド処理部102が外部の演算装置と通信を行うための処理を定義する。これらを実行するためには、コマンドのTYPEフィールドに3を設定する。
【0104】
ステップS1108では、TYPEフィールドに3を設定したコマンドについて、外部の演算装置との通信の種別を選択する。TYPEが3のコマンドは、SUB_TYPEフィールドを有する。SUB_TYPEフィールドの値が0の場合は、演算処理の開始指示を行うためステップS1109に進む。1の場合は、演算処理の終了待ちを行うためステップS1110に進む。
【0105】
ステップS1109では、コマンド処理部102は外部の演算装置に処理開始を指示するメッセージを送信する。送信するメッセージの内容はコマンド中のMSGフィールドで指定する。ステップS1110では、コマンド処理部102は、外部の演算装置に終了待ちを行うためのメッセージを送信する。コマンド処理部102は、メッセージの送信後、外部の演算装置がMSGフィールドで指定した処理の終了通知を受け取るまで待機する。
【0106】
以下では簡単のため、外部の演算装置とはCPU406のことを指すものとする。CPU406は、コマンド処理部102から開始指示のメッセージを受け取り、指定された処理を開始する。また、コマンド処理部102から終了待ちのメッセージを受け取り、指定された処理が完了していれば、その場で終了通知を返す。完了していなければ処理を続行し、完了後に終了通知を返す。
【0107】
以上により、第2の実施形態におけるコマンド処理部102は、第1の実施形態でサポートした3種類のコマンドに加えて、外部の演算装置との通信に必要なコマンドをサポートする。なお、図11に示すフローチャートによるコマンド処理部102を含む認識処理部407は、図7に示すパラメタを与えることで、第1の実施形態と同様に図2に示す認識処理を実行可能である。同様に、他の第1の実施形態において実行可能であった認識処理は、いずれも同じパラメタを与えることで第2の実施形態においても処理可能である。
【0108】
<パラメタとシーケンス>
以下では、図10に示す認識処理を実現するために、実際にどのようにパラメタを与えるかを例示する。第2の実施形態では、認識処理部407とCPU406とが並列処理を行い、図10に示す認識処理の高速化を図る。認識処理部407に与えるパラメタ内で、認識処理部407とCPU406との間の連携に必要なシーケンスを定義する。
【0109】
図12に、図10に示す認識処理を実行するために認識処理部407に与えるパラメタの構成例を示す。このパラメタは、第1の積和演算パラメタ1200、第2の積和演算パラメタ1201、第1の後処理パラメタ1202、第3の積和演算パラメタ1206、第2の後処理パラメタ1207をこの順に連結したものである。従って、第2の実施形態では、図3に示すフローチャートのように後処理部分をまとめて実行することはせず、積和演算部分と後処理部分とを交互に実行する。
【0110】
第1の積和演算パラメタ1200では、第1のCNN1001を実行する。第1の積和演算パラメタ1200には、積和演算部の処理に必要な制御情報が含まれる。また、DSTフィールドにより特徴データ保持部103のどの番地に第1の特徴データ1004を格納するかを指定する。第2の積和演算パラメタ1201では、第2のCNN1003を実行する。第2の積和演算パラメタ1201には、積和演算部の処理に必要な制御情報が含まれる。また、DSTフィールドにより特徴データ保持部103のどの番地に第2の特徴データ1008を格納するかを指定する。
【0111】
第1の後処理パラメタ1202は、第1の後処理パラメタヘッダ1203と、コマンド1204‐1205からなる。第1の後処理パラメタヘッダ1203のLENGTHフィールドにはコマンドの数が与えられる。パラメタ分配部100は、LENGTHフィールドを参照し、必要な数だけコマンド処理部102にコマンドを送る。
【0112】
第1のコマンド1204では、TYPEフィールドに0を設定し、入力処理を行う。後処理設定1009を外部から受け取り、入力データ保持部104に格納する。DSTフィールドには、入力データ保持部104のどの番地に後処理設定1009を格納するかを設定する。SIZEフィールドには、外部から受け取るデータサイズ、すなわち後処理設定1009のデータサイズを与える。
【0113】
第2のコマンド1205では、TYPEフィールドに3、SUB_TYPEフィールドに0を設定し、開始指示処理を行う。コマンド処理部102からCPU406にメッセージの送信を行う。CPU406はメッセージ内容に従い第1の位置推定処理1005を開始する。MSGフィールドには、第1の位置推定処理1005に必要なSRC0、SRC1、DSTフィールドの内容を与える。SRC0フィールドに第2の特徴データ1004、SRC1フィールドに後処理設定1009の格納場所を与えるため、それぞれ第2の積和演算パラメタ1201のDSTフィールド、第1のコマンド1204のDSTフィールドと同じ番地を設定する。DSTフィールドには、出力データ保持部105のどの番地に第1の処理結果1006を格納するかを設定する。
【0114】
第3の積和演算パラメタ1206では、第3のCNN1003を実行する。第3の積和演算パラメタ1201には積和演算部の処理に必要な制御情報が含まれる。また、DSTフィールドにより、特徴データ保持部103のどの番地に第3特徴データ1008を格納するかを指定する。
【0115】
第2の後処理パラメタ1207は、第1の後処理パラメタヘッダ1208と、コマンド1209‐12014からなる。第1の後処理パラメタヘッダ1208のLENGTHフィールドにはコマンドの数が与えられる。パラメタ分配部100はLENGTHフィールドを参照し、必要な数だけコマンド処理部102にコマンドを送る。
【0116】
第3のコマンド1209では、TYPEフィールドに1、SUB_TYPEフィールドに0を設定し、第2の位置推定処理1010を実行する。SRC0フィールドに第3の特徴データ1008、SRC1フィールドに後処理設定1009の格納場所を与えるため、それぞれ第2の積和演算パラメタ1206のDSTフィールド、第1のコマンド1204のDSTフィールドと同じ番地を設定する。DSTフィールドには、出力データ保持部105のどの番地に第2の処理結果1011を格納するかを設定する。
【0117】
第4のコマンド1210では、TYPEフィールドに3、SUB_TYPEフィールドに1を設定し、終了待ち処理を行う。コマンド処理部102は、CPU406に対して、第2のコマンド1205で開始指示した第1の位置推定処理1005の終了状況を問い合わせる。CPU406は、第1の位置推定処理1005が完了していれば、コマンド処理部102へ終了通知を返す。コマンド処理部102は、CPU406からの終了通知を受け取るまで待機する。
【0118】
以上により、第2のコマンド1205で開始指示した第1の位置推定処理1005を、第4のコマンド1210により終了待ちする。従って、コマンド処理部102が第2のコマンド1205を処理してから第4のコマンド1210を処理するまでの期間、コマンド処理部102とCPU406とは並行して処理を行う。これによって、第1の位置推定処理1005をコマンド処理部102で処理する場合よりも、全体の処理時間を短縮することが可能となる。
【0119】
第5のコマンド1211では、TYPEフィールドに1、SUB_TYPEフィールドに1を設定し、第1の紐づけ処理1012を実行する。SRC0フィールドには第1の処理結果1006、SRC1フィールドには第2の処理結果1011、SRC2フィールドには後処理設定1009の格納場所を与える。従って、それぞれ第2のコマンド1205のMSGフィールドに設定したDSTフィールドの値、第1のコマンド1204のDSTフィールドと同じ番地を設定する。DSTフィールドには出力データ保持部105のどの番地に第3の処理結果1013を格納するかを設定する。
【0120】
第6のコマンド1212では、TYPEフィールドに2を設定し、出力処理を行う。出力データ保持部105に格納した第1の処理結果1006を外部に出力する。SRCフィールドには出力対象である第1の処理結果1006の置き場所を与えるため、第2のコマンド1205のMSGフィールドのDSTフィールドの値と同じ番地を設定する。
【0121】
第7のコマンド1213では、TYPEフィールドに2を設定し、出力処理を行う。出力データ保持部105に格納した第2の処理結果1011を外部に出力する。SRCフィールドには、出力対象である第1の処理結果1011の置き場所を与えるため、第3のコマンド1209のDSTフィールドと同じ番地を設定する。
【0122】
第8のコマンド1214では、TYPEフィールドに2を設定し、出力処理を行う。出力データ保持部105に格納した第3の処理結果1013を外部に出力する。SRCフィールドには出力対象である第3の処理結果1013の置き場所を与えるため、第5のコマンド1211のDSTフィールドと同じ番地を設定する。
【0123】
図13に、図12に示すパラメタにより認識処理部407が処理を行う場合のメモリマップを示す。第1の実施形態と同様に、特徴データ保持部103、入力データ保持部104、出力データ保持部105に、それぞれ格納するデータ毎に領域を割り当てる。
【0124】
特徴データ保持部103には、第1の特徴データ領域1300、第2の特徴データ領域1301、第3の特徴データ領域1302を設け、それぞれ第1の特徴データ1002、第2の特徴データ1004、第3の特徴データ1008を格納する。第1の積和演算パラメタ1200のDSTフィールドに従い、第1の特徴データ領域800の開始番地はAAAAとなる。第2の積和演算パラメタ1201のDSTフィールドに従い、第2の特徴データ領域1301の開始番地はBBBBとなる。第3の積和演算パラメタ1206のDSTフィールドに従い、第3の特徴データ領域1302の開始番地はCCCCとなる。第2の特徴データ領域1301にアクセスする第2のコマンド1205では、対応するフィールドすなわちMSGフィールドのSRC0フィールドにBBBBを設定する。第3の特徴データ領域1302にアクセスする第3のコマンド1209では、対応するフィールドすなわちSRC0フィールドにCCCCを設定する。
【0125】
入力データ保持部104には、後処理設定領域1303を設け、後処理設定1009を格納する。第1のコマンド1204のDSTフィールドに従い、後処理設定領域1303の開始番地はDDDDとなる。後処理設定領域801にアクセスする第2のコマンド1205、第3のコマンド1209、第5のコマンド1211では、それぞれ対応するフィールドにDDDDを設定する。
【0126】
出力データ保持部105には、第1の処理結果領域1304、第2の処理結果領域1305、第3の処理結果領域1305を設け、それぞれ第1の処理結果1006、第2の処理結果1011,第3の処理結果1013を格納する。第2のコマンド1205のMSGフィールドに従い、第1の処理結果領域1304の開始番地はFFFFとなる。第3のコマンド1209のDSTフィールドに従い、第2の処理結果領域1305の開始番地はGGGGとなる。第1の処理結果領域1304及び第2の処理結果領域1305を参照する第5のコマンド1211では、対応するSRC0フィールド及びSRC1フィールドに、それぞれFFFF及びGGGGを設定する。同様に、第6のコマンド1212及び第7のコマンド1213のSRCフィールドにも、それぞれFFFF及びGGGGを設定する。第5のコマンド1211のDSTフィールドに従い、第3の処理結果領域1306の開始番地はHHHHとなる。第3の処理結果領域1306を参照する第8のコマンド1214の対応するフィールドすなわちSRCフィールドにHHHHを設定する。
【0127】
図14に、図12に示すパラメタにより認識処理部407が処理を行う場合のシーケンスを示す。第2の実施形態では、図12に示す第2のコマンド1205から第5のコマンド1211にかけて、コマンド処理部102とCPU406とが並行処理を行う。図14では、第1の実施形態における図9に加えてCPU406の動作も含めたシーケンスを示す。
【0128】
ステップS1400では、パラメタ分配部100が外部からパラメタを受け取り、図10に示す一連の認識処理を開始する。ステップS1401では、パラメタ分配部100は積和演算部101に第1の積和演算パラメタ1200を送信する。ステップS1402では、積和演算部101は、受け取った第1の積和演算パラメタ1200に従い、第1のCNN1001の処理を開始する。初めに、積和演算部101は、外部から入力画像1000を受け取る。次に第1の特徴データ1002を算出し、特徴データ保持部103に格納する。最後にパラメタ分配部100に処理完了を通知する。
【0129】
ステップS1403では、パラメタ分配部100は、積和演算部101に第2の積和演算パラメタ1201を送信する。ステップS1404では、積和演算部101は、受け取った第2の積和演算パラメタ1201に従い、第2のCNN1003の処理を開始する。初めに、積和演算部101は、特徴データ保持部103から第1の特徴データ1002を受け取る。次に第2の特徴データ1004を算出し、特徴データ保持部103に格納する。最後にパラメタ分配部100に処理完了を通知する。
【0130】
ステップS1405では、パラメタ分配部100は、第1の後処理パラメタ1202の転送を開始する。後処理パラメタヘッダ1203のLENGTHフィールドの設定に従い、コマンド処理部102にコマンドを2回送信する。初めに、第1のコマンド1204を送信する。ステップS1406では、コマンド処理部102は、第1のコマンド1204に従い入力処理を開始する。初めに、コマンド処理部102は、外部から後処理設定1009を受け取る。次に、受け取った後処理設定1009を入力データ保持部104に格納する。最後にパラメタ分配部100に処理完了を通知する。
【0131】
ステップS1407では、パラメタ分配部100は、コマンド処理部102に第2のコマンド1205を送信する。ステップS1408では、コマンド処理部102は、第2のコマンド1205に従い、CPU406に第1の位置推定処理1005の開始指示を行う。コマンド処理部102は、第2のコマンド1205のMSGフィールドの内容をCPU406に送る。CPU406は、受け取ったMSGフィールドの内容に従い、第1の位置推定処理1005を開始する。
【0132】
ステップS1409では、パラメタ分配部100はコマンド処理部102に第3の積和演算パラメタ1206を送信する。一方で、CPU406は特徴データ保持部103から第2の特徴データ1004を、入力データ保持部104から後処理設定1009を読み出す。CPU406は第1の特徴データ1004の特定のチャネルを参照し、スコアが高い位置の座標を求める。
【0133】
ステップS1410では、積和演算部101は、受け取った第3の積和演算パラメタ1206に従い、第3のCNN1007の処理を開始する。初めに積和演算部101は特徴データ保持部103から第1の特徴データ1002を受け取る。次に第3の特徴データ1008を算出し、特徴データ保持部103に格納する。最後にパラメタ分配部100に処理完了を通知する。一方で、CPU406はステップS1409で求めた座標を第1の処理結果1006として出力データ保持部105に格納する。以上によりCPU406は、ステップS1408にてコマンド処理部102から開始指示を受けた第1の位置推定処理1005を完了した状態となる。
【0134】
ステップS1411では、パラメタ分配部100は、第2の後処理パラメタ1207の転送を開始する。後処理パラメタヘッダ1208のLENGTHフィールドの設定に従い、コマンド処理部102にコマンドを6回送信する。初めに、第3のコマンド1209を送信する。ステップS1412では、コマンド処理部102は、第3のコマンド1209に従い第2の位置推定処理1010を開始する。初めに、特徴データ保持部103から第3の特徴データ1008を、入力データ保持部104から後処理設定1009を読み出す。次に、第3の特徴データ1008の特定のチャネルを参照し、スコアが高い位置の座標を求め、第2の処理結果1011として出力データ保持部105に格納する。最後にパラメタ分配部100に処理完了を通知する。
【0135】
ステップS1413では、パラメタ分配部100は、コマンド処理部102に第4のコマンド1210を送信する。ステップS1414では、コマンド処理部102は、第4のコマンド1210に従い、CPU406に対して第1の位置推定処理1005の終了待ちを行う。初めに、コマンド処理部102は、CPU406に対して第1の位置推定処理1005の完了状況を問い合わせる。コマンド処理部102は、CPU406からの完了通知を受け取るまで問合せを継続する。
【0136】
なお、第2の実施形態では、ステップS1410にてCPU406の処理が完了するものとしているが、これは事前にパラメタにより定義されたものではないことに注意されたい。つまり、CPU406の処理が完了するタイミングは、入力画像1000等の実行時点で変動する要因により、ステップS1408‐1414の範囲で変動する。
【0137】
CPU406は、第1の位置推定処理1005が完了していれば、問合せに対する応答としてコマンド処理部102に終了通知を返す。なお、第2の実施形態では、コマンド処理部102が能動的に終了待ちを行う構成を取るが、例えば、CPU406が第1の位置推定処理1005の完了を割り込みでコマンド処理部102に通知する等、CPU406が能動的に終了通知を行う構成であってもよい。コマンド処理部102は、第1の位置推定処理1005の終了待ちが完了すると、パラメタ分配部100に終了通知を返す。
【0138】
ステップS1415では、パラメタ分配部100は、コマンド処理部102に第5のコマンド1211を送信する。ステップS1416では、コマンド処理部102は、第5のコマンド1211に従い紐付け処理1012を開始する。初めに出力データ保持部105から第1の処理結果1006及び第2の処理結果1011を、入力データ保持部104から後処理設定1009を読み出す。次に第1の処理結果1006及び第2の処理結果1011に含まれる複数の被写体、すなわち人物の頭部及び胴体について、同じ人物のものと推定される被写体同士を紐付けする。紐づけの結果は、第3の処理結果1013として出力データ保持部105に格納する。最後にパラメタ分配部100に処理完了を通知する。
【0139】
ステップS1417では、パラメタ分配部100は、コマンド処理部102に第6のコマンド1212を送信する。ステップS1418では、コマンド処理部102は、第6のコマンド1212に従い出力処理を開始する。初めに出力データ保持部105から第1の処理結果1006を読み出す。次に読み出した第1の処理結果1006を外部に出力する。最後にパラメタ分配部100に処理完了を通知する。
【0140】
ステップS1419では、パラメタ分配部100は、コマンド処理部102に第7のコマンド1213を送信する。ステップS1420では、コマンド処理部102は、第7のコマンド1213に従い出力処理を開始する。初めに出力データ保持部105から第2の処理結果1011を読み出す。次に読み出した第2の処理結果1011を外部に出力する。最後にパラメタ分配部100に処理完了を通知する。
【0141】
ステップS1421では、パラメタ分配部100は、コマンド処理部102に第8のコマンド1214を送信する。ステップS1422では、コマンド処理部102は、第8のコマンド1214に従い出力処理を開始する。初めに出力データ保持部105から第3の処理結果1013を読み出す。次に読み出した第3の処理結果1013を外部に出力する。最後にパラメタ分配部100に処理完了を通知する。
【0142】
以上の通り、図12に示すパラメタを与えることで、認識処理部407は、図10に示す一連の認識処理を行うことができる。すなわち、入力画像1000と後処理設定1009とを受け取ってから、第1の処理結果1006、第2の処理結果1011、第3の処理結果1013を返すまでの認識処理を行うことができる。第2の実施形態でも、第1の実施形態と同様に、認識処理部407は、プログラムサイズを増加させることなく異なる認識処理に対応可能となる。
【0143】
第2の実施形態では、ステップS1408‐ステップS1414の期間にわたり、認識処理部407では第3のCNN1008及び第2の位置推定処理1010を、CPU406では第1の処理結果1006を並行して処理した。これにより、図12に示すパラメタによるシーケンス定義において並列処理による認識処理の高速化が可能となる。
【0144】
第2の実施形態では、認識処理部407及びCPU406が並行処理を行い、パラメタ分配部100はこれらの制御を担う。一方で、コマンド処理部102がCPU406への処理開始指示及び終了待ちを行い、これらのシーケンスはパラメタにより定義される。従って、並行処理を追加するにあって新たに必要な構成は、コマンド処理部102に、図11に示すフローチャートのステップS1108‐1110を追加するのみである。また、例えば処理開始及び終了待ちのタイミングや回数を変更する場合は、パラメタの変更のみで済むため、全体として認識処理部407のプログラムサイズ増加を防ぐことができる。
【0145】
一方で、例えば第1の位置推定処理1005より第2の位置推定処理1010の方が、処理時間が大きい傾向にある場合、処理の順序を入れ替えることで高速化を測れる。まず、第3のCNN1007を第2のCNN1003より先に処理する。認識処理部407で第2のCNN1003及び第1の位置推定処理1005を、CPU406で第2の位置推定処理1010を処理する。これを実現するには、第2の積和演算パラメタ1201と第3の積和演算パラメタ1206を入れ替え、第2のコマンド1205のMSGフィールドと第3のコマンドの各フィールドの設定内容を入れ替えればよい。
【0146】
このように、本実施形態に係るデータ処理装置では、パラメタ順序を入れ替えるだけで、目的に応じた認識処理のシーケンスを再定義することが可能となる。この場合においても、認識処理部407、特にコマンド処理部102に新たな構成を追加する必要はないため、異なる認識処理のシーケンスにプログラムサイズの増加を抑えつつ対応できる。
【0147】
第2の実施形態においては、認識処理の後処理部分だけでなく、積和演算部分も含めたシーケンスをパラメタで定義することで、認識処理の高速化という第1の実施形態とは異なる効果が得られる。パラメタ分配部100が、積和演算パラメタ及び後処理パラメタを連結したパラメタを受け取り、その並び順により積和演算部101及びコマンド処理部102の処理順序を決定する構成により、これが実現される。
【0148】
<その他の実施形態>
<積和演算部分の定義>
第1及び第2の実施形態では、画像に対する認識処理を例に挙げ、CNNを含む認識処理を扱う例を示している。しかしながら、本データ処理装置は、CNNに限らず、NN全般を含む認識処理全般について適用可能である。例えば、第1の実施形態における第1のCNN201を、畳み込み演算ではない一般的な多層パーセプトロンで置き換えても良い。
【0149】
<後処理部分の定義>
第1及び第2の実施形態では、ニューラルネットワークの出力から認識結果を得る処理を後処理してコマンド処理部102で処理し、そのシーケンスを後処理パラメタにより定義する。
【0150】
しかしながら、コマンド処理部102で実行する処理は、NNの後段に位置する処理でなくても良い。例えばNN演算の一部をコマンド処理部102の処理として実行してもよいし、次に処理するNNの前処理にあたる部分をコマンド処理部102で先行して処理してもよい。いずれの場合においても、図5に示すフローチャートでTYPEが1のコマンドに新たなSUB_TYPEを定義する。必要な機能をコマンド処理部102に追加し、対応するSUB_TYPEを設定したコマンドにより呼び出して使用する。
【0151】
<コマンド処理部102の構成>
第1及び第2の実施形態では、後処理を3種類または4種類の処理に分割し、それらに対応するコマンドの列としてシーケンスを定義する。そして、コマンド処理部102では、図5及び図11に示すフローチャートの通り、コマンドのTYPEフィールドで処理の種類を判別する。
【0152】
しかしながら、図5及び図11に示すフローチャートにおけるTYPEフィールドの定義は、あくまでも一例であり、第1及び第2の実施形態で使用したコマンドを統合及び分割し、異なる定義でTYPE及びSUB_TYPEの区別を与えてもよい。例えば、入力処理及び出力処理を1つのTYPEに集約し、SUB_TYPEにより区別する構成に変更しても良い。あるいは位置推定処理をより細かい処理群に分割し、それらをTYPEが1の分岐以下に新たなSUB_TYPEの分岐として追加しても良い。
【0153】
<積和演算部101とコマンド処理部102の並行処理>
第1及び第2の実施形態では、パラメタ分配部100が積和演算部101及びコマンド処理部102にパラメタを振り分け交互に動作させている。
【0154】
しかしながら、積和演算部101とコマンド処理部102が並行に動作する構成であってもよい。例えば、図12に示すパラメタを処理する場合、パラメタ分配部100がコマンド処理部102による第2のコマンド1205の処理完了を待たずに、積和演算部101に第3の積和演算パラメタ1206の転送を開始してもよい。
【0155】
この場合、例えば図12に示すパラメタの各コマンドにパラメタ分配部100が終了通知待ちを行うかを示すフィールドを追加すればよい。第2のコマンド1205では当フィールドは0となり、他は全て1となる。パラメタ分配部100は各コマンドの当フィールドを確認し、必要な場合のみ終了通知待ちを行う。
【0156】
<パラメタ分配部100による読み飛ばし>
第1及び第2の実施形態では、パラメタ分配部100はパラメタ内の各積和演算パラメタ及び後処理パラメタを全て処理している。
【0157】
しかしながら、パラメタ分配部100が認識処理の状況に応じて一部のみを選択的に処理する構成であってもよい。例えば、図2に示す第1の位置推定処理204においてスコアの高い位置が第1の特徴データ202内に見つからない、すなわち人物の頭部の位置が出力されない場合、第1の処理結果206の実行は不要となる。
【0158】
この場合、例えばパラメタ分配部100はコマンド処理部102から異常終了通知を受け取ると、対応するコマンドの転送をスキップする構成を追加すればよい。コマンド処理部102は第1の処理結果206が空であるときパラメタ分配部100へ異常終了通知を送る。パラメタ分配部100は異常終了通知を受け取り、第4のコマンド706はコマンド処理部102には転送せず、次の第5のコマンド707に進む。
【0159】
<認識処理部407の実装形態>
第1及び第2の実施形態では、認識処理部407は本発明に係るデータ処理装置の一部を構成するハードウェアとして説明している。しかしながら、例えば認識処理部407全体をCPU上で動作するプログラムとして実現しても良い。その場合も、認識処理部407は、パラメタ分配部100、積和演算部101、コマンド処理部102に対応する機能を有し、図7及び図12に示すようなパラメタにより認識処理のシーケンスを与える。
【0160】
また上述した実施形態では、畳み込み演算をハードウェアで処理する場合について説明した。これをCPU/GPU(Graphics Processing Unit)/DSP(Digital Signal Processing Unit)等のプロセッサで処理しても良い。
【0161】
また本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0162】
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
【符号の説明】
【0163】
100 パラメタ分配部
101 積和演算部
102 コマンド処理部
103 特徴データ保持部
104 入力データ保持部
105 出力データ保持部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14