(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-18
(45)【発行日】2024-10-28
(54)【発明の名称】演算処理装置
(51)【国際特許分類】
G06N 3/063 20230101AFI20241021BHJP
G06N 3/0464 20230101ALI20241021BHJP
【FI】
G06N3/063
G06N3/0464
(21)【出願番号】P 2023562024
(86)(22)【出願日】2021-11-18
(86)【国際出願番号】 JP2021042496
(87)【国際公開番号】W WO2023089745
(87)【国際公開日】2023-05-25
【審査請求日】2024-03-12
(73)【特許権者】
【識別番号】000000376
【氏名又は名称】オリンパス株式会社
(74)【代理人】
【識別番号】100149548
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100139686
【氏名又は名称】鈴木 史朗
(74)【代理人】
【識別番号】100147267
【氏名又は名称】大槻 真紀子
(74)【代理人】
【識別番号】100207789
【氏名又は名称】石田 良平
(72)【発明者】
【氏名】古川 英明
【審査官】北川 純次
(56)【参考文献】
【文献】特開2021-128720(JP,A)
【文献】特開2016-149707(JP,A)
【文献】米国特許出願公開第2020/0364289(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02 - 3/10
G06N 20/00
G06T 1/40
G06T 7/00
(57)【特許請求の範囲】
【請求項1】
入力される情報セットのデータストリームの先頭を被比較値として保持し、前記先頭以外のデータを比較値として、前記被比較値と前記比較値とを比較し、比較結果に基づいて双方の値を更新し、更新された前記比較値を後段に出力する比較更新部と、
前記比較更新部がK個多段に接続されているデータ比較部と、
N個のデータ列である情報セットが格納されているメモリからなるデータ格納バッファと、
多段に接続された前記比較更新部の出力データである前記比較値を順次取得し、その後、前記比較更新部の前記被比較値を取得するデータ取得部と、
メモリ制御部と、
を備え、
前記メモリ制御部は、
前記データ格納バッファに格納されたデータストリームから前記情報セットを連続的に読み出し、最初にK個の前記被比較値となるデータを読み出し、K個の前記被比較値をそれぞれ前記データ比較部のK個の前記比較更新部に送信し、
前記被比較値を前記データ格納バッファから全て読み終えたら、次は前記データ格納バッファから前記被比較値となったデータ以外の全てのデータを読み出し、
2回目以降の比較を行う場合は、前回の比較までの更新内容を前記データ格納バッファから取得したデータに反映させて前記比較更新部に出力する、
演算処理装置。
【請求項2】
更新されたデータ要素がゼロであるか否かを識別できるゼロ情報が格納されるメモリからなるゼロ情報バッファを更に備え、
前記データ取得部は、多段に接続された前記比較更新部の出力データある前記比較値を順次取得すると、値が更新されたデータ要素を識別できるゼロ情報を前記ゼロ情報バッファに書き出し、前記比較更新部から全ての前記比較値の取得が終わった後で前記比較更新部から前記被比較値を取得すると、前記被比較値についてもゼロ情報を前記ゼロ情報バッファに書き出し、
前記メモリ制御部は、2回目以降の比較を行う場合は、前記ゼロ情報バッファから比較を行うデータ要素と対になるゼロ情報を同時に読み出し、前回の比較までの更新内容を前記データ格納バッファから取得したデータに反映させて前記比較更新部に出力する、
請求項1に記載の演算処理装置。
【請求項3】
前記メモリ制御部は、変更内容をデータに反映させた結果、その値がそれ以上他のデータとの比較の必要が無い値となった場合、そのデータを無効データとしてデータストリームから除外する、請求項1または2に記載の演算処理装置。
【請求項4】
前記比較更新部は、保持している被比較値が、それ以上他のデータとの比較の必要が無い値となった場合、比較・更新を行わずにデータをスルー出力する、請求項1から3のいずれか1項に記載の演算処理装置。
【請求項5】
前記比較更新部は、ストリームデータと同期して比較・更新実行可否判定信号が入力され、比較・更新実行可否判定信号が実行を示すときだけ、データの比較・更新を行う、請求項1に記載の演算処理装置。
【請求項6】
前記情報セットは、ディープラーニングを用いたCNNの後段の被写体推定処理において、被写体の特徴量からなる情報セットであって、前記情報セットの各々は、M次元の独立要素を持つクラス信頼性情報を含み、
前記クラス信頼性情報と1:1で対応し、検出した被写体の位置・サイズを格納した位置・サイズ情報格納バッファを更に備え、
前記比較更新部が行う比較・更新は、前記クラス信頼性情報の各次元同士で値を比較し、小さいほうの値をゼロに置換する操作であり、
ゼロ情報バッファに格納されるゼロ情報は、前記クラス信頼性情報の各次元の値がゼロか否かを判定できる情報であり、
前記比較更新部は、比較するクラス信頼性情報に対応する位置・サイズ情報から、情報セットから抽出した被写体の位置・サイズ情報を画像上に枠として表示した時の枠の重なり度合いを数値化したIOUを計算し、前記IOUが所定の閾値以上の時にのみ比較・更新を実行する、
請求項2から5のいずれか一つに記載の演算処理装置。
【請求項7】
前記ゼロ情報バッファに格納されるゼロ情報は、前記クラス信頼性情報の各次元の値がゼロになっている部分を1、それ以外を0とするフラグであって、
前記メモリ制御部は、前記ゼロ情報バッファの全てのゼロ情報が1のときに他のデータとの比較の必要が無いと判断する、
請求項6に記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算処理装置に関する。
【背景技術】
【0002】
従来、複数の処理層が階層的に接続されたニューラルネットワークを用いて演算を実行する演算処理装置がある。特に画像認識を行う演算処理装置では、畳み込みニューラルネットワーク(Convolutional Neural Network、以下CNNという)を用いたディープラーニングが広く行われている。
【0003】
図1は、CNNを用いたディープラーニングによる画像認識の処理の一例を示す図である。CNNを用いたディープラーニングによる画像認識では、入力された画像データ(ピクセルデータ)に対して、CNNの複数の処理層における処理が順次施されることにより、画像に含まれる対象物が認識された最終的な演算結果データが得られる。
【0004】
CNNの処理層は、畳み込み演算処理、非線形処理、縮小処理(プーリング処理)等を含むConvolution処理を行うConvolution層と、全ての入力データ(ピクセルデータ)にフィルタ係数を乗じて累積加算するFullConnect処理を行うFullConnect層(全結合層)とに大きく分類される。ただし、FullConnect層がない畳み込みニューラルネットワークも存在する。
【0005】
CNNを用いたディープラーニングによる画像認識は以下のようにして行われる。まず、画像データに対して、ある領域を抽出してフィルタ係数の異なる複数のフィルタを乗じて特徴量マップ(Feature Map、FM)を作成する畳み込み演算処理と、特徴量マップの一部領域を縮小する縮小処理(プーリング処理)の組合せを1つの処理層として、これを複数回(複数の処理層において)行う。これらの処理が、Convolution層の処理である。
【0006】
Convolution処理では、最初に、画像データから1ピクセルおよびその近傍のピクセルを抽出して、夫々にフィルタ係数の異なるフィルタ処理を行う(畳み込み演算処理)。これらを全て累積加算することにより、1ピクセルに対応するデータができる。作成されたデータに対し、非線形変換および縮小処理(プーリング処理)を行い、以上の処理を画像データの全ピクセルに対して行うことで、出力特徴量マップ(oFM)が1面分生成される。これを複数回繰り返すことでoFMを複数面生成する。実際の回路では上記全てがパイプライン処理される。
【0007】
生成された出力特徴量マップ(oFM)を、次のConvolution処理の入力特徴量マップ(iFM)として、さらにフィルタ係数の異なるフィルタ処理を行うことにより、Convolution処理を繰り返す。このようにして複数回のConvolution処理を行い、出力特徴量マップ(oFM)を得る。
【0008】
図2は、Convolution処理によって、入力特徴量マップ(iFM)から出力特徴量マップ(oFM)を得るイメージ図である。Convolution処理は、入力される全てのiFMデータに異なるフィルタ係数をかけ(フィルタ処理)、それらを全て累積加算し、非線形変換、プーリング(縮小処理)などの処理を施すことにより、oFMデータを得る。oFMデータの1ピクセル(1画素)を計算するのに必要な情報として、出力(oFMの1ピクセル)に対応するiFMデータの座標の近傍にある全てのピクセルの情報(iFMデータおよびフィルタ係数)が必要である。
【0009】
N面の入力特徴量マップ(iFM)に、フィルタ処理、累積加算、非線形変換、プーリングなどのConvolution処理を行い、M面の出力特徴量マップ(oFM)を出力する。N面(N次元)の入力特徴量マップ(iFM)は並列して処理され、M面(M次元)の出力特徴量マップ(oFM)が並列して出力される。N、Mは1以上の正数である。この処理は、入力N並列×出力M並列の回路構成で実現することができる。
【0010】
Convolution処理が進み、特徴量マップ(FM)をある程度まで小さくしたところで、画像データを1次元のデータ列と読み変える。この1次元のデータ列の各データに対して、各々異なる係数を乗じて累積加算を行うFullConnect処理を複数回(複数の処理層において)行う。これらの処理が、全結合層(FullConnect層)の処理である。
【0011】
FullConnect処理の後、得られた特徴量から被写体を検出・推定する処理(被写体推定処理)が行われる。被写体推定処理の結果として、画像に含まれる対象物が検出された確率(被写体検出の確率)が出力される。
図1の例では、最終的な演算結果データとして、犬が検出された確率は0.01(1%)、猫が検出された確率は0.04(4%)、ボートが検出された確率は0.94(94%)、鳥が検出された確率は0.02(2%)である。
【0012】
図1のCNNは、元の画像に何が写っているかを確率表示するだけのもので、これで完結している。すなわち、被写体が、どこに、どのような大きさで写っているかの情報は得られない。しかし、デジタルカメラ等では、被写体が、どこに、どのような大きさで写っているかを知る必要がある。そうすると、
図1のCNNで得られる情報では不足しており、位置情報、サイズ情報などを得る必要がある。
【0013】
撮影者が撮影する画像には、一般に、様々な被写体が写っている。そのため、画像から、様々な被写体を、しかも複数(後述の説明ではM種類)検出する必要がある。そのような情報を出力するCNNを作る事は可能だが、後述するような様々な問題があるため、本発明では、CNNの出力結果に対して欲しい情報だけを取り出す処理(=被写体推定処理)を行う。
【0014】
被写体推定処理の一例を説明する。本発明で対象とするCNNの出力結果である被写体の特徴量は、次のような情報を1単位とした複数(N個とする)の情報セットである。
・被写体の位置情報
・被写体の大きさ(サイズ)情報
・被写体の信頼性情報
・クラス信頼性情報(M次元)
【0015】
図3は、情報セットの内容の一例を示す図である。本発明で対象とするCNNは、
図3に示すN個の高次元データ(位置、サイズ、被写体信頼性、クラス信頼性)を出力する。なお、情報セットの内容はネットワークによって異なる。被写体の位置情報は、画像内における被写体の位置(X、Y)である。被写体の大きさ(サイズ)情報は、画像内における被写体のサイズ(W、H)である。被写体の信頼性情報は、被写体である確からしさを示す指標である。
【0016】
クラス信頼性情報は、クラス信頼性(信頼度)を示し、例えば、「犬」70%、「猫」10%、…などである。M次元のクラス信頼性情報はクラス分けしたい被写体の種類をM個用意できる。例えば、クラス信頼性情報において、1次元目に被写体が「犬」である確からしさ70%が書き込まれ、2次元目に被写体が「猫」である確からしさ10%が書き込まれ、これがM次元目まで続いている。
【0017】
なお、この結果だけではノイズが多いので、出力された情報セットに対して、被写体推定処理でノイズを減らして欲しい情報だけをピックアップする。
図4は、画像認識を行う画像データであり、被写体として、犬、自転車、トラックが含まれている。被写体推定処理では、情報セットを取得する。
図5は、取得した情報セットから抽出した被写体の位置情報とサイズ情報の全てを画像上に枠として表示した時のイメージである被写体推定処理終了後の結果を、ファームウェア(またはGPU、回路)によって画像上に枠として重畳している。
【0018】
被写体推定処理において、
図5のように、同じ被写体を複数の情報セットが検出している事が多々ある。例えば
図5では、犬の情報セットを示す境界ボックスが3つ、自転車の情報セットを示す境界ボックスが3つ、トラックの情報セットを示す境界ボックスが2つ描かれているが、このように、同じ被写体の情報セットが大量に出てくる。これを防ぐため、最もクラス信頼性の高い情報セットだけを残し、重複する情報セットを排除する必要がある。
【0019】
そこで、枠の重なり度合いを数値化したIOUを計算する。IOUが大きい情報セットがあれば、クラス信頼性の高い方だけを残し、クラス信頼性の低い方の値をゼロにする。
【0020】
図6は、情報セットから抽出した被写体の位置情報とサイズ情報を画像上に枠として表示した時の枠の重なり度合い(IOU)を示す図である。IOUは、情報セットPと情報セットQの重なり部分cの全体に対する割合である。重なり部分を除いた情報セットPの面積をp、重なり部分を除いた情報セットQの面積をq、重なり部分の面積をcとすると、IOU=c/p+q+cとなる。なお、これは一例であり、例えば、IOU=c/p+qとしてもよい。
【0021】
IOUを求める演算では、N個の情報セットの先頭から順に、総当たりで、2つのクラス信頼性情報の大小比較を行い、クラス信頼性の高い方だけ残す(クラス信頼性の小さい方の値を変更する)。採用するモデルによるが、Nは数千、Mは数十となる事があり、この場合、比較回数は数千万となる。この比較演算の総当たり処理を並列でおこなう。ひとつのフレームでこれだけの処理が必要となるので、動画フレームレートが60fpsの場合、比較回数は億を超え、パイプライン処理したとしても処理時間が掛かりすぎる問題がある。
【先行技術文献】
【特許文献】
【0022】
【発明の概要】
【発明が解決しようとする課題】
【0023】
上述のように、IOUを求める演算では、全ての情報セットを、先頭から順に総当たりに比較・更新するため、被写体推定処理において、被写体の特徴量からなる情報セットのクラス信頼性情報の大小の比較をおこなう演算の処理時間を短縮する課題がある。
【0024】
特許文献1は、ディープニューラルネットワーク(DNN)によって得られた特徴量から算出する「顕著度」の信頼性を向上する方法の提案である。顕著度の算出の過程で初期に取得した顕著度を修整処理している。しかし、特許文献1は処理を高速化する事に関する言及がない。これは、特徴量の数が少ないか、動画対応のシステムでない為と思われる。
【0025】
上述の事情を踏まえ、本発明は、演算処理装置において、情報セットの大小の比較をおこなう演算の処理時間を短縮することを目的とする。
【課題を解決するための手段】
【0026】
本発明の一態様は、入力される情報セットのデータストリームの先頭を被比較値として保持し、前記先頭以外のデータを比較値として、前記被比較値と前記比較値とを比較し、比較結果に基づいて双方の値を更新し、更新された前記比較値を後段に出力する比較更新部と、前記比較更新部がK個多段に接続されているデータ比較部と、N個のデータ列である情報セットが格納されているメモリからなるデータ格納バッファと、多段に接続された前記比較更新部の出力データである前記比較値を順次取得し、その後、前記比較更新部の前記被比較値を取得するデータ取得部と、メモリ制御部と、を備え、前記メモリ制御部は、前記データ格納バッファに格納されたデータストリームから前記情報セットを連続的に読み出し、最初にK個の前記被比較値となるデータを読み出し、K個の前記被比較値をそれぞれ前記データ比較部のK個の前記比較更新部に送信し、前記被比較値を前記データ格納バッファから全て読み終えたら、次は前記データ格納バッファから前記被比較値となったデータ以外の全てのデータを読み出し、2回目以降の比較を行う場合は、前回の比較までの更新内容を前記データ格納バッファから取得したデータに反映させて前記比較更新部に出力する、演算処理装置である。
【0027】
更新されたデータ要素がゼロであるか否かを識別できるゼロ情報が格納されるメモリからなるゼロ情報バッファを更に備え、前記データ取得部は、多段に接続された前記比較更新部の出力データある前記比較値を順次取得すると、値が更新されたデータ要素を識別できるゼロ情報を前記ゼロ情報バッファに書き出し、前記比較更新部から全ての前記比較値の取得が終わった後で前記比較更新部から前記被比較値を取得すると、前記被比較値についてもゼロ情報を前記ゼロ情報バッファに書き出し、前記メモリ制御部は、2回目以降の比較を行う場合は、前記ゼロ情報バッファから比較を行うデータ要素と対になるゼロ情報を同時に読み出し、前回の比較までの更新内容を前記データ格納バッファから取得したデータに反映させて前記比較更新部に出力してもよい。
【0028】
前記メモリ制御部は、変更内容をデータに反映させた結果、その値がそれ以上他のデータとの比較の必要が無い値となった場合、そのデータを無効データとしてデータストリームから除外してもよい。
【0029】
前記比較更新部は、保持している被比較値が、それ以上他のデータとの比較の必要が無い値となった場合、比較・更新を行わずにデータをスルー出力してもよい。
【0030】
前記比較更新部は、ストリームデータと同期して比較・更新実行可否判定信号が入力され、比較・更新実行可否判定信号が実行を示すときだけ、データの比較・更新を行ってもよい。
【0031】
前記情報セットは、ディープラーニングを用いたCNNの後段の被写体推定処理において、被写体の特徴量からなる情報セットであって、前記情報セットの各々は、M次元の独立要素を持つクラス信頼性情報を含み、前記クラス信頼性情報と1:1で対応し、検出した被写体の位置・サイズを格納した位置・サイズ情報格納バッファを更に備え、前記比較更新部が行う比較・更新は、前記クラス信頼性情報の各次元同士で値を比較し、小さいほうの値をゼロに置換する操作であり、前記ゼロ情報バッファに格納される前記ゼロ情報は、前記クラス信頼性情報の各次元の値がゼロか否かを判定できる情報であり、前記比較更新部は、比較するクラス信頼性情報に対応する位置・サイズ情報から枠の重なり度合いを数値化したIOUを計算し、前記IOUが所定の閾値以上の時にのみ比較・更新を実行してもよい。
【0032】
前記ゼロ情報バッファに格納されるゼロ情報は、前記クラス信頼性情報の各次元の値がゼロになっている部分を1、それ以外を0とするフラグであって、前記メモリ制御部は、前記ゼロ情報バッファの全てのゼロ情報が1のときに他のデータとの比較の必要が無いと判断してもよい。
【発明の効果】
【0033】
本発明の各態様によれば、演算処理装置において、情報セットの大小の比較をおこなう演算の処理時間を短縮することができる。
【図面の簡単な説明】
【0034】
【
図1】CNNを用いたディープラーニングによる画像認識の処理の一例を示す図である。
【
図2】Convolution処理によって、入力特徴量マップ(iFM)から出力特徴量マップ(oFM)を得るイメージ図である。
【
図5】取得した情報セットから抽出した被写体の位置情報とサイズ情報の全てを画像上に枠として表示した時のイメージである。
【
図6】情報セットから抽出した被写体の位置情報とサイズ情報を画像上に枠として表示した時の枠の重なり度合い(IOU)を示す図である。
【
図7】画像データにおいて、A、B、Cの3つの被写体が密集している例を示す図である。
【
図8】比較・更新の順番が異なる場合の比較更新処理の結果を示す図である。
【
図10】本発明の第1実施形態の1回目の比較更新処理を示す図である。
【
図11】本発明の第1実施形態の2回目以降の比較更新処理を示す図である。
【
図12】本発明の第1実施形態の並列処理を行う回路(演算処理装置)の例を示す図である。
【
図13】各比較更新部でのデータ処理を示すタイミングチャートである。
【
図14】データ取得時に情報セットの全要素がゼロである場合の比較更新処理を示す図である。
【
図15】被比較値側の全要素が途中でゼロになった場合の比較更新処理を示す図である。
【
図16】本発明の第2実施形態のデータ処理を示すタイミングチャートである。
【
図17】データ処理のサイクルを示すタイミングチャートである。
【
図18】本実施形態の第3実施形態に係るクラス信頼性判定部を示すブロック図である。
【
図19】判定部で得られた信頼性判定結果の例を示す図である。
【
図20】本実施形態の第3実施形態のタイミングチャートの例を示す図である。
【発明を実施するための形態】
【0035】
情報セットのうち、クラス信頼性の部分を抽出して配列D[n]とする。D[n]はそれぞれがM次元の情報(Mは0以上の整数)を持つ。D[n]のp番目とq番目を比較・更新する処理を、関数f(D[p]、D[q])であらわしたとき、比較更新処理は、以下の式(1)を実施した後のD[ ]となる。比較更新処理を1回実施する毎にD[n]の要素は更新される。
【0036】
【0037】
この処理を、並列処理により高速化したいが、比較・更新の順番を守らなければならない。同じクラスの被写体が密集している様なケースで、比較・更新の順番が異なる場合を考える。
図7は、画像データにおいて、A、B、Cの3つの被写体が密集している例を示す。被写体AとBの間は、IOUが小さいので、異なる被写体であると考え、AとBの間の比較更新処理は行わない。AとCの間は、IOUが大きいので、クラス信頼性を比較・更新する。同様に、BとCの間は、IOUが大きいので、クラス信頼性を比較・更新する。
【0038】
このようなケースでは、比較・更新の順番が異なると結果が異なる。
図8は、比較・更新の順番が異なる場合の比較更新処理の結果を示す図である。被写体Aのクラス信頼性は50、被写体Bのクラス信頼性は200、被写体Cのクラス信頼性は100である。
【0039】
図8の左側では、まずAとCの間で比較更新処理を行い、Cのクラス信頼性の方が大きいので、Aのクラス信頼性を0に更新する。次にBとCの間で比較更新処理を行い、Bのクラス信頼性の方が大きいので、Cのクラス信頼性を0に更新する。比較更新処理の結果、被写体Aのクラス信頼性は0、被写体Bのクラス信頼性は200、被写体Cのクラス信頼性は0となる。
【0040】
図8の右側では、まずBとCの間で比較更新処理を行い、Bのクラス信頼性の方が大きいので、Cのクラス信頼性を0に更新する。次にAとCの間で比較更新処理を行い、Aのクラス信頼性の方が大きいので、Cのクラス信頼性は0のままとなる。比較更新処理の結果、被写体Aのクラス信頼性は50、被写体Bのクラス信頼性は200、被写体Cのクラス信頼性は0となる。そのため、
図8の左側と右側とで、比較更新処理の結果が異なる。
【0041】
このように、比較更新処理の順番を変えると結果が変わる可能性があるため、比較更新処理の順番を変えない必要がある。そこで、これを、比較更新処理の順番を変えないように並列処理することが本発明のポイントである。すなわち、式(1)の順番を変えずに並列処理できる回路を実現する。
【0042】
(第1実施形態)
本発明の第1実施形態について、図面を用いて説明する。まず、情報セットの比較方法について説明する。
図9は、情報セットの構成を示す図である。以下、情報セットのクラス信頼性の部分に注目して説明する。クラス信頼性を6次元と仮定する。
【0043】
図10は、本実施形態の1回目の比較更新処理を示す図である。情報セット格納バッファに格納されていた2つの情報セットのクラス信頼性を比較する。一方の情報セットのクラス信頼性を「被比較値」、他方の情報セットのクラス信頼性を「比較値」とする。被比較値と比較値を次元ごとに比較して、小さい方の値をゼロに置換する。そして、比較結果がゼロだった部分に対応するゼロ情報バッファにフラグ1を書き込む。その結果、クラス信頼性が大きい値に対応するゼロ情報バッファは、フラグ0のままである。このように、更新した値を情報セット格納バッファに書き戻すのでなく、別バッファ(ゼロ情報バッファ)に、書き換えた部分に関する情報(ゼロ情報)を記憶しておく。
【0044】
図11は、本実施形態の2回目以降の比較更新処理を示す図である。まず、情報セット格納バッファに格納されていた2つの情報セットのクラス信頼性に、ゼロ情報バッファから取得した変更情報を反映させる。すなわち、ゼロ情報バッファにフラグ1が書き込まれていた部分に対応するクラス信頼性の値をゼロに置換する(ゼロ反映)。そして、ゼロが反映された2つの情報セットのクラス信頼性各要素を比較して、小さい方の値をゼロに置換する(比較・更新)。このように、2回目以降の比較更新処理では、ゼロ情報バッファから取得した変更情報を反映させてから比較実施する。そして、比較結果がゼロだった値に対応するゼロ情報バッファにフラグ1を上書きする。
【0045】
図12は、本実施形態の並列処理を行う回路(演算処理装置)の例を示す図である。演算処理装置1は、データ比較部10と、データ格納バッファ20と、ゼロ情報バッファ30とを備える。データ格納バッファ20は、N個のデータ列(情報セット)が、格納されているメモリからなる。ゼロ情報バッファ30は、更新されたデータ要素がゼロであるかを識別できる内容が格納されるメモリからなる。
【0046】
データ比較部10は、多段に接続されている比較更新部11、12、13と、データ取得部15と、メモリ制御部16とを備える。比較更新部の段数(並列度に対応)は任意に設定可能であるが、この例では、並列度K=3、すなわち3並列である。各比較更新部は、最初に入力されるデータストリーム(D*)の先頭を被比較値(CP*)として保持する。そして、各比較更新部は、他のデータ(2番目以降に入力されるデータ)を比較値として、順次、被比較値と比較値とを比較して、その結果により双方の値を更新し、後段には比較値を出力する。
【0047】
具体的には、第1比較更新部11は、1番目のデータ(D1)を被比較値として保持し続け、2番目以降のデータ(D2、D3、…、DN)を比較値として比較・更新する。第2比較更新部12は、2番目のデータ(D2)を被比較値として保持し続け、3番目以降のデータ(D3、D4、…、DN)を比較値として比較・更新する。第3比較更新部13は、3番目のデータ(D3)を被比較値として保持し続け、4番目以降のデータ(D4、D5、…、DN)を比較値として比較・更新する。このような構成により、1番目のデータの比較・更新、2番目のデータの比較・更新、および3番目のデータの比較・更新を同時に行うことができる。
【0048】
データ取得部15は、多段に接続された比較更新部の出力データを順次取得し、値が更新された要素が識別できる内容(ゼロ情報)をゼロ情報バッファ30に書き出す。そして、データ取得部15は、全てのデータの取得が終わったら、比較更新部の被比較値についても同様の情報(ゼロ情報)を書き出す。
【0049】
メモリ制御部16は、データ格納バッファ20およびゼロ情報バッファ30を制御する。メモリ制御部16は、被比較値となるデータを先頭に、全データを読み出し、これを繰り返す。メモリ制御部16は、全てのデータとの比較・更新が終わったデータへのアクセスは行わない。
【0050】
具体的には、メモリ制御部16は、データ格納バッファ20に格納されたデータストリームからN個のデータを連続的に読み出し、最初にK個の被比較値となるデータを読み出す。K個の被比較値はそれぞれデータ比較部10のK個(図の例では3個)の比較更新部に送られる。メモリ制御部16は、被比較値をデータ格納バッファ20から全て読み終えたら、次は、データ格納バッファ20から、他のデータ(被比較値となったデータ以外の全て)を読み出す。この時も、先頭のK個のデータを被比較値とする。
【0051】
2回目以降の比較を行う場合は、メモリ制御部16は、そのデータ要素と対になるゼロ情報バッファからデータを同時に読み出し、前回までの変更内容をデータ格納バッファから取得したデータに反映させて出力する。
【0052】
このように、メモリからN個の情報セットを、処理順に連続的に回路に投入し、それを複数回繰り返す事で、総当たりで比較・更新する処理を、処理順序を変えることなく並列実行できる。これにより処理を高速化できる。
【0053】
図13は、各比較更新部でのデータ処理を示すタイミングチャートである。なお、比較・更新処理の内容は処理の並列化に関して言えば実際方法を問わない。しかし、以降の説明での一貫性を確保するために、情報セット中のクラス信頼性情報(信頼度)を次元毎に比較して小さいほうの値をゼロにする処理であるとして説明する。
【0054】
図において、ひとつの箱D**はひとつの情報セットを示し、末尾の数値は情報セットのIDであり、情報セットの配列D[n]のnに相当する。zは情報セット数Nである。D**の中央の添え字(a、b、c、…)は比較・更新されて値が変化していく過程を示す。信号L*は、最後の情報セットを識別する信号である。
【0055】
1回目は、ゼロ情報バッファにはデータがない(ZERO_R)。まず、メモリ制御部がデータ格納バッファからデータ列(=情報セット)D**を先頭から順に全て読み出す。メモリ制御部は、データ列D**を、有効であることを示す有効信号en*とともに出力する。データを出力する際、最初の情報セットについては先頭を識別する信号F*を付け、最後の情報セットについては最後を識別する信号L*を付けて後段に出力する。
【0056】
第1比較更新部において、データ格納バッファからのデータ列(Da1、…、Daz)が入力され、D1(Db1、…、Dbz)となる。同時に有効信号en1、先頭を識別する信号F1、最後を識別する信号L1が入力される。第1比較更新部では、F1とともに入力される最初の情報セット(Db1)を被比較値CP2として保持し、その次から入力されるデータ(Db2、…、Dbz)を比較値としてCP2(=Db1)と順次比較・更新したのち、比較値側を後段に出力する。図のCP2はレジスタを表し、比較・更新で値が変化していく。D2(Dc2、…、Dcz)は、第1比較更新部から後段(第2比較更新部)へ出力されるデータ列である。
【0057】
第2比較更新部において、第1比較更新部からのデータ列D2(Dc2、…、Dcz)が入力される。同時に有効信号en2、先頭を識別する信号F2、最後を識別する信号L2が入力される。第2比較更新部では、F2とともに入力される最初の情報セット(Dc2)を被比較値CP3として保持し、その次から入力されるデータ(Dc3、…、Dcz)を比較値としてCP3(=Dc2)と順次比較・更新したのち、比較値側を後段に出力する。図のCP3はレジスタを表し、比較・更新で値が変化していく。D3(Dd3、…、Ddz)は、第2比較更新部から後段(第3比較更新部)へ出力されるデータ列である。
【0058】
第3比較更新部において、第2比較更新部からのデータ列D3(Dd3、…、Ddz)が入力される。同時に有効信号en3、先頭を識別する信号F3、最後を識別する信号L3が入力される。第3比較更新部では、F3とともに入力される最初の情報セット(Dd3)を被比較値CP4として保持し、その次から入力されるデータ(Dd4、…、Ddz)を比較値としてCP4(=Dd3)と順次比較・更新したのち、比較値側を後段に出力する。図のCP4はレジスタを表し、比較・更新で値が変化していく。D4(De4、…、Dez)は、第3比較更新部から後段へ出力されるデータ列である。
【0059】
ゼロ情報バッファには、該当する要素の値がゼロであればフラグ1が、そうでなければフラグ0が書き込まれている。データ取得部は、この値がフラグ1だった部分の情報セットの要素をゼロに置換して後段に出力する。なお、説明の都合上、ゼロ情報はデータと1:1で対応するイメージとして描いているが、一つの要素に対してゼロ情報は1ビットで良いので、一つの情報セットのゼロ情報を一度に読み出して内部レジスタに記憶する。
【0060】
比較更新部の最終段の出力はデータ取得部で取得し、データ要素がゼロであればフラグ1、そうでなければフラグ0をゼロ情報バッファに書き出す。また、データ取得部は、L4信号を受け取ったら、その信号で情報セットは最後と見做し、ゼロ情報バッファへの出力が終わったあとに各比較更新部で抱えている被比較値(CP2=Dc1、CP3=Dd2、CP4=De3)を順に取得してゼロ情報バッファにゼロ情報(ZERO_W)を書き出す(Z1、Z2、Z3)。
【0061】
以上で3段の比較更新部が異なる被比較値を持って、順番を守って全てのデータとの比較・更新を並列実行し、更新結果はゼロ情報バッファに格納される。以降同様にして先頭番地をKずつ増やしながら、Nと等しくなるかNを超えるまで繰り返す事で、上述の式(1)を実行可能である。情報セットが並列度Kで割り切れない場合は、比較更新処理に影響を与えない全ゼロのデータを水増しして入力させれば良い。
【0062】
情報セットが一度以上比較・更新されると、値が変更されている可能性がある。本実施形態ではデータ格納バッファを更新するのではなく、データが変化している事を記憶するゼロ情報バッファから対応するデータを読み込んで情報セットの更新結果を反映する。
【0063】
このような構成により、本実施形態では、メモリからN個の情報セットを、処理順に連続的に回路に投入し、それを複数回繰り返すことで、総当たりで比較・更新する処理を、処理順序を変えることなく並列実行できる。すなわち、並列処理だが比較の順序を変えずに処理できるので、高精度の結果が得られ、被写体認識の処理速度の向上に効果がある。
【0064】
(第2実施形態)
次に、本発明の第2実施形態について説明する。第1実施形態では、更新処理が「小さいほうの値をゼロにする」であったが、どちらかの情報セットの全要素がゼロであれば比較・更新しても結果は変わらない。そこで、本実施形態の第1の例では、先にゼロ情報バッファのデータを読んで、比較・更新結果が変わらない、すなわち、情報セットの全要素値がゼロである事が判明したら、そのデータを無効化してしまう。
【0065】
図14は、データ取得時に情報セットの全要素がゼロである場合の比較更新処理を示す図である。第1実施形態の2回目以降の比較更新処理と同様に、情報セット格納バッファに格納されていた2つの情報セットのクラス信頼性に、ゼロ情報バッファから取得した変更情報を反映させる。すなわち、ゼロ情報バッファにフラグ1が書き込まれていた部分に対応するクラス信頼性の値をゼロにする(ゼロ反映)。
【0066】
この時、比較値のゼロ情報バッファの全要素がフラグ1であるとする。ゼロ反映させると、比較値の情報セットの全要素がゼロとなる。そして、ゼロが反映された2つの情報セットのクラス信頼性各要素を比較して、小さい方の値をゼロに置換する(比較・更新)。しかし、比較値の情報セットの全要素がゼロであるので、比較・更新の結果は変わらない。
【0067】
そこで、本例では、ゼロ情報バッファのデータを読んで、情報セットの全要素値がゼロである事が判明したら、そのデータを無効化してしまう。すなわち、ゼロ情報バッファのデータを読んで、ゼロ情報バッファの全要素がフラグ1の場合、そのデータを無効化してしまう。そのデータを無効データとしてデータストリームから除外してもよい。
【0068】
このように、本例では、比較結果に影響を及ぼさなくなった情報セットを除外して、比較・更新を行わずにデータをスルー出力するので、処理を高速化でき、消費電力を削減できる。
【0069】
次に、本実施形態の第2の例について説明する。
図15は、被比較値側の全要素が途中でゼロになった場合の比較更新処理を示す図である。
図15のケースでは、比較更新処理の後、被比較値の全要素が途中で全てゼロになっている。このような状態になった後は、比較値側は比較更新処理を行っても変わらない。すなわち、このような状態になった以降は比較値との比較を実行する必要はなくなる。
【0070】
そこで、本例では、保持している被比較値が、それ以上他のデータとの比較の必要が無い値となった場合、比較・更新を行わずにデータをスルー出力する。図の例では、被比較値の全要素が途中で全てゼロになった場合、それ以降は比較値との比較を行わない。
【0071】
このように、本例では、被比較値が比較更新処理に影響しなくなった時に、比較・更新を行わない。すなわち、比較結果に影響を及ぼさなくなった情報セットを除外して、比較・更新を行わずにデータをスルー出力するので、処理を高速化でき、消費電力を削減できる。
【0072】
図16は、本実施形態のデータ処理を示すタイミングチャートである。このケースでは、ゼロ情報バッファから取り出した値(ZERO_R)において、z6の全要素がゼロである。そこで、データ格納バッファからの不要なデータDa6を第1比較更新部に送ることを入口で防止している。また、CP3は、最初の値がDc5となる被比較値であるが、Dc9との比較・更新の結果、ある時点から全要素がゼロになり、それ以降の入力(Dca以降)は比較・更新機能を停止してそのままスルー出力している。ちなみに、第3比較更新部にはDc6に相当する信号が入力されないので、Dc7を被比較値として抱える事になる。
【0073】
図17は、データ処理のサイクルを示すタイミングチャートである。
図17の(a)では、毎サイクル1個ずつのデータを処理する回路において、MサイクルでMビットのデータを処理している。全要素がゼロの場合、全要素がゼロであるz6の部分は処理の空きサイクルが生じるように見える。すなわち、
図16において、ゼロ情報バッファの情報を反映して情報セットの全要素がゼロになった場合は、enがゼロとなって無効データが流れるだけに見える。
【0074】
実際には、1つの箱がデータセットであるので、全てゼロの場合、Mサイクルかけずに、1サイクルで処理を飛ばすことができる。すなわち、
図17の(b)に示すように、z3の全要素がゼロと分かったら、Mサイクルを1サイクルに縮めて処理することができ、処理を高速化できる。
【0075】
先述した通り、ゼロ情報バッファから情報セットに対応するM次元分のデータ取得は短いサイクル(例えば1サイクル)で取り出せるので、直ぐに比較・更新を行わない判断ができる。すなわち、要素が全てゼロであるかを認識するのは、1クロックでよい。
【0076】
なお、情報セットの最初のK個(=並列度数)の中で上記のような全要素ゼロのデータが生じた場合、その情報セットはスキップしてK個分の情報セットを取得できるまでループを増やせばよい。
【0077】
(第3実施形態)
次に、本発明の第3実施形態について説明する。本実施例では、ディープラーニングにおける被写体推定処理への適用を例に説明する。
図3のように、CNNの最終出力がM次元の情報セットN個である。この情報セットから、被写体信頼性を計算する。その際、
図6に示すように、情報セットのP番目とQ番目に着目し、位置・サイズ情報からIOUを計算する。
【0078】
IOUが所定の閾値より大きい場合は、被写体の重なり度合いが大きく、同じ被写体である可能性が高い。そこで、IOUが所定の閾値より大きい(つまり、重なり度合が大きい)情報セットがあれば、M次元のクラス信頼性の各要素を比較して、クラス信頼性の高い方だけを残す。すなわち、クラス信頼性の低い方の値をゼロに変更する。この処理を、全ての情報セットの組み合わせについて行う。すなわち、被写体推定処理では、全ての情報セットの先頭から順にIOUを算出し、比較・変更する。
【0079】
なお、もともと被写体推定処理では、IOUが大きいときに比較・更新を行い、IOUが小さいときには何もしない。そこで、IOUが所定の閾値より大きいか否か、すなわち、比較・更新する必要のある/なしを外部から指示できるようにする必要がある。
【0080】
図18は、本実施形態に係るクラス信頼性判定部40を示すブロック図である。
図12の第1実施形態のデータ比較部10と異なる点は、判定部41、42、43が設けられていることと、データ格納バッファが、位置・サイズ情報バッファ21とクラス信頼性情報バッファ22に分かれていることである。判定部と比較更新部は対になっており、同じ情報セットのデータに対して処理を行う。判定部は、IOUが所定の閾値より大きいか否かを判定する。
【0081】
判定部には、メモリ制御部16を介して、情報セットに含まれる位置・サイズ情報(P*)が入力される。判定部は、情報セットの位置・サイズ情報からIOUを計算し、IOUが所定の閾値より大きい場合は、同じ被写体である可能性が高いと判断し、トリガexec=1(比較・更新実行可否判定信号)を比較更新部に送信する。
【0082】
比較更新部は、クラス信頼性情報を受け取り、exec=1であり、かつ、比較値または被比較値の全要素がゼロでないときに、M次元のクラス信頼性の各要素を比較・更新処理し、それ以外の場合はスルーする。すなわち、比較更新部は、ストリームデータと同期して比較・更新実行可否判定信号が入力され、比較・更新実行可否判定信号が実行を示すときだけ、データの比較・更新を行う。このように、比較更新部は、IOUが大きい場合のみ処理を行う。
【0083】
比較更新部の動作としては、判定部からトリガexecが入力される点以外は、
図12の第1実施形態と同じである。すなわち、本実施形態では、IOU計算結果による信頼性判定結果(exec)を外部(判定部)から入力している。
【0084】
図19は、判定部で得られた信頼性判定結果の例を示す図である。フラグ1の所は、IOUが大きいと判定されたことを示す。例えば、D1とD2の間、D1とD5の間、およびD1とD6の間はIOUが大きいと判定されている。
【0085】
図20は、本実施形態のタイミングチャートの例を示す図である。図の下のほうには比較更新部の処理の流れが記載されているが、比較更新部の処理は、
図13の第1実施形態と同様である。また、
図16の例と同様に、最初に全要素がゼロのデータ(z3=0)が入力され、CP3の全要素が途中からゼロになったケースを示している。
【0086】
図19の信頼性判定結果で、D1とD2の間、D1とD5の間、およびD1とD6の間はIOUが大きいと判定されたので、その部分でexec1のパルスが立っている。それとタイミングを合わせて、比較更新部では、exec1のパルスが立っているときにだけ比較・更新を行う。
【0087】
第1比較更新部において、D1は、exec1=1となるDb2、Db5、Db6について被比較値と比較・更新される。第2比較更新部において、D2は、exec2=1となるDc4、Dc6、Dc8が被比較値と比較・更新されるが、CP3とDc6とを比較した結果、CP3の全要素がゼロになるので、それ以降に被写体信頼性が低いと知らされても比較・更新の結果が変わらない。このためDc7以降の比較・更新は実行されずにスルーとなり、比較・更新対象であったDc8もそのまま出力される。
【0088】
上述のような構成により、本実施形態は、ディープラーニングの被写体推定処理に適用できる。なお、上述の説明において、判定部と比較更新部は別の構成として説明したが、同じ回路上にあってもよい。この場合、比較更新部に、比較するクラス信頼性情報に対応する位置・サイズ情報が入力され、IOUを計算して、比較・更新実行可否の判定を行う。
【0089】
以上、本発明の実施形態について説明したが、本発明の技術範囲は上記実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲において構成要素の組み合わせを変えたり、各構成要素に種々の変更を加えたり、削除したりすることができる。
【0090】
各構成要素は、それぞれの構成要素に係る機能や処理を説明するためのものである。複数の構成要素に係る機能や処理を、1つの構成(回路)が同時に実現してもよい。
【0091】
各構成要素は、それぞれもしくは全体として、1個又は複数のプロセッサ、論理回路、メモリ、入出力インタフェース及びコンピュータ読み取り可能な記録媒体などからなるコンピュータで実現するようにしてもよい。その場合、各構成要素もしくは全体の機能を実現するためのプログラムを記録媒体に記録しておき、記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって、上述した種々の機能や処理を実現してもよい。
【0092】
この場合、例えば、プロセッサは、CPU、DSP(Digital Signal Processor)、およびGPU(Graphics Processing Unit)の少なくとも1つである。例えば、論理回路は、ASIC(Application Specific Integrated Circuit)およびFPGA(Field-Programmable Gate Array)の少なくとも1つである。
【0093】
また、ここでいう「コンピュータシステム」とは、OSや周辺機器などのハードウェアを含むものであってもよい。また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリなどの書き込み可能な不揮発性メモリ、CD-ROMなどの可搬媒体、コンピュータシステムに内蔵されるハードディスクなどの記憶装置をいう。
【0094】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネットなどのネットワークや電話回線などの通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。
【0095】
また、上記プログラムは、このプログラムを記憶装置などに格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネットなどのネットワーク(通信網)や電話回線などの通信回線(通信線)のように情報を伝送する機能を有する媒体をいう。また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現するもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【産業上の利用可能性】
【0096】
本発明は、演算処理装置に広く適用できる。
【符号の説明】
【0097】
10 データ比較部
11、12、13 比較更新部
15 データ取得部
16 メモリ制御部
20 データ格納バッファ
21 位置・サイズ情報バッファ
22 クラス信頼性情報バッファ
30 ゼロ情報バッファ
40 クラス信頼性判定部
41、42、43 判定部(比較更新部)