Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7613484B2 - データ処理装置、データ処理方法、及びデータ処理プログラム - Google Patents
[go: Go Back, main page]

JP7613484B2 - データ処理装置、データ処理方法、及びデータ処理プログラム - Google Patents

データ処理装置、データ処理方法、及びデータ処理プログラム Download PDF

Info

Publication number
JP7613484B2
JP7613484B2 JP2022572858A JP2022572858A JP7613484B2 JP 7613484 B2 JP7613484 B2 JP 7613484B2 JP 2022572858 A JP2022572858 A JP 2022572858A JP 2022572858 A JP2022572858 A JP 2022572858A JP 7613484 B2 JP7613484 B2 JP 7613484B2
Authority
JP
Japan
Prior art keywords
point position
decimal point
processing
calculation
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022572858A
Other languages
English (en)
Other versions
JPWO2022145016A1 (ja
Inventor
彩希 八田
寛之 鵜澤
周平 吉田
大祐 小林
優也 大森
健 中村
高庸 新田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Inc
NTT Inc USA
Original Assignee
Nippon Telegraph and Telephone Corp
NTT Inc USA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp, NTT Inc USA filed Critical Nippon Telegraph and Telephone Corp
Publication of JPWO2022145016A1 publication Critical patent/JPWO2022145016A1/ja
Application granted granted Critical
Publication of JP7613484B2 publication Critical patent/JP7613484B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)

Description

開示の技術は、データ処理装置、データ処理方法、及びデータ処理プログラムに関する。
多層ニューラルネットワークと深層学習を用いた様々なデータ処理技術が開発されている。その応用範囲は認識および検出など様々な分野に広がっている。例えば、物体検出は、入力画像の中から、その画像に含まれる物体の位置(物体を囲む四角い枠)と属性(人、車などの物体の種別)、及び各物体の認識精度とから成るメタデータを検出する技術である。物体検出については、近年、深層学習の結果に基づいてメタデータを検出する技術がある。例えば、非特許文献1には、YOLO(You Only Look Once)が開示されている。また、非特許文献2には、SSD(Single Shot Multibox Detector)が開示されている。これらの技術は、自動運転、及び監視カメラなどのリアルタイム性を必要とする物体検出システムへの適用が検討されている。
自動運転及び監視カメラなどの物体検出装置は、ネットワークトラフィック負荷分散及びセキュリティ保護の観点から、ネットワークのエッジ、すなわち端末側に搭載されることも検討されている。物体検出装置をネットワークのエッジに搭載するには、装置の小型化及び低電力化が必要不可欠である。
小型化及び低電力化を実現するために、深層学習に基づく物体検出処理をハードウェアで実装し、かつ、演算器が扱う各データのデータビット幅を削減する構成が提案されている(非特許文献3参照)。各データとしては、入力、出力(特徴マップ)、重み(カーネル)、及びバイアスが挙げられる。一般的にソフトウェアで深層学習の推論処理を実行する場合、積和演算に用いられる各データは32ビット浮動小数点データとして扱われる。なぜなら、各データの値のとりうる範囲が広く、画像ごと、又は畳み込みニューラルネットワークを構成するConvolution層などの層ごとに、その範囲が異なるからである。非特許文献3においては、統計情報を用いて畳み込みニューラルネットワークの各層におけるデータビット幅をあらかじめ決定し、8~16ビットまで削減することにより、回路規模と電力を削減する効果が得られることが報告されている。
また、これらのアプローチに対して、各データ幅を一律に固定小数点数nビット(n<32)とし、入力される画像ごと及び層ごとに小数点位置を動的に制御する手法が開示されている(非特許文献4参照)。
Joseph Redmon et.al, "YOLOv3: An Incremental Improvement",https://arxiv.org/abs/1804.02767 Wei Liu et.al, " SSD: Single Shot MultiBox Detector",https://arxiv.org/pdf/1512.02325.pdf Zhisheng Li et.al, "Laius: An 8-Bit Fixed-Point CNN Hard ware Inference Engine," 2017 IEEE International Symposium on Parallel and Distributed Processing with Applications and 2017 IEEE International Conference on Ubiquitous Computing and Communications (ISPA/IUCC), Guangzhou, 2017, pp. 143-150, doi: 10.1109/ISPA/IUCC.2017.00030. 八田彩希、鵜澤寛之、吉田周平、新田高庸、"物体検出AI推論用ハードウェア向け動的小数点位置制御手法の提案"、電子情報通信学会、2020年9月.
しかしながら、小数点位置を動的に制御する手法は、全画素値に対して演算を行う構成であった。また、例え同値の特徴マップの値が連続しても常時演算を実行していた。そのため、消費電力の低減が困難である、という課題があった。
開示の技術は、上記の点に鑑みてなされたものであり、出力の同値率を高めることによって可能となる演算のスキップにより、消費電力を低減できるデータ処理装置、データ処理方法、及びデータ処理プログラムを提供することを目的とする。
本開示の第1態様は、データ処理装置であって、多層ニューラルネットワークを構成する複数の層のそれぞれに対応して、Nビット(Nは2以上の自然数)の固定長データの小数点位置を設定するように構成されており、前記固定長データの小数点位置を設定する小数点位置制御部と、前記小数点位置制御部によって前記小数点位置が設定された前記Nビットの固定長データに対して、前記多層ニューラルネットワークの処理アルゴリズムに従って、連続して入力される処理対象データの各々に対し、前記多層ニューラルネットワークを構成する前記複数の層のそれぞれに対応する演算処理を行うように構成されており、演算処理において処理時点の前記処理対象データの飽和率に応じて増加する同値データを判定して、前記同値データの2回目以降の演算処理をスキップすると共に、演算処理において処理時点の前記処理対象データ内の物体の検出数、物体を囲む枠、属性、及び当該属性の認識精度を含むメタデータを検出する検出演算部と、前記検出演算部の前記層ごとの演算処理の過程において、前記小数点位置によって定まる値域の上限値(全bit列1時の値)を超えた回数である上限カウンタ値、及び前記値域の下限値(全bit列のうち、LSBのみ1時の値)を下回った回数である下限カウンタ値をカウントするカウンタ部と、飽和率制御部と、認識精度合成部とを含み、前記小数点位置制御部は、第1制御として、前記上限カウンタ値が第1閾値の範囲内、前記下限カウンタ値が第2閾値の範囲内にそれぞれ収まるように、層ごとに移動させた小数点位置を決定して、前記検出演算部による処理時点の前記処理対象データに対する演算処理を行わせ、前記飽和率制御部は、前記小数点位置制御部によって繰り返される第2制御として、前記第1制御の結果に対して、カウントされる前記下限カウンタ値の大きさに比例する下限飽和率を増加させるような制御として、少なくとも前記小数点位置を移動させる指示を前記小数点位置制御部に対して行い、前記小数点位置制御部は、前記第2制御として、前記飽和率制御部からの前記指示と前記メタデータとに基づいて、所定の判定を行い、層ごとに移動させた前記小数点位置を決定し、前記検出演算部による処理時点の前記処理対象データに対する演算処理を行わせ、前記認識精度合成部は、前記第2制御として、前記検出演算部の演算処理で得られる前記認識精度を、記憶されている精度の高い方の認識精度に置き換える。
本開示の第2態様は、データ処理方法であって、多層ニューラルネットワークを構成する複数の層のそれぞれに対応して、Nビット(Nは2以上の自然数)の固定長データの小数点位置を設定するように構成されており、前記固定長データの小数点位置を設定し、前記小数点位置が設定された前記Nビットの固定長データに対して、前記多層ニューラルネットワークの処理アルゴリズムに従って、連続して入力される処理対象データの各々に対し、前記多層ニューラルネットワークを構成する前記複数の層のそれぞれに対応する演算処理を行うように構成されており、演算処理において処理時点の前記処理対象データの飽和率に応じて増加する同値データを判定して、前記同値データの2回目以降の演算処理をスキップすると共に、演算処理において処理時点の前記処理対象データ内の物体の検出数、物体を囲む枠、属性、及び当該属性の認識精度を含むメタデータを検出し、前記層ごとの演算処理の過程において、前記小数点位置によって定まる値域の上限値を超えた回数である上限カウンタ値、及び前記値域の下限値を下回る回数である下限カウンタ値をカウントし、第1制御として、前記上限カウンタ値が第1閾値の範囲内、前記下限カウンタ値が第2閾値の範囲内にそれぞれ収まるように、層ごとに移動させた小数点位置を決定して、処理時点の前記処理対象データに対する演算処理を行わせ、繰り返される第2制御として、前記第1制御の結果に対して、カウントされる前記下限カウンタ値の大きさに比例する下限飽和率を増加させるような制御として、少なくとも前記小数点位置を移動させる指示を行い、前記第2制御として、前記指示と前記メタデータとに基づいて、所定の判定を行い、層ごとに移動させた前記小数点位置を決定し、処理時点の前記処理対象データに対する演算処理を行わせ、前記第2制御として、演算処理で得られる前記認識精度を、記憶されている精度の高い方の認識精度に置き換える、処理をコンピュータが実行することを特徴とする。
開示の技術によれば、出力の同値率を高めることによって可能となる演算のスキップにより、消費電力を低減することができる。
参考例に係る物体検出装置の構成を示す図である。 参考例におけるCNNの一例を示す図である。 参考例の検出演算部における畳み込み演算のフローを示す図である。 参考例の小数点位置制御部の小数点位置制御フローの流れを示す図である。 参考例の初期小数点位置を決定するための処理の一例となるフローを示す図である。 参考例のカウンタを用いた各層の小数点位置を決定するための処理の一例となるフローを示す。 本開示の各実施形態の物体検出装置のハードウェア構成を示すブロック図である。 本開示の各実施形態の物体検出装置の構成を示すブロック図である。 本開示の実施形態の検出演算部において、カーネルデータを1ストライドずつずらしていき1ch分の積和演算処理を行う例を示す図である。 第1実施形態における下限飽和率を最適化するための制御方法の概要について示す図である。 第1実施形態の小数点位置制御部の小数点位置制御フロー(下限飽和値制御フロー)の流れを示す図である。 第2実施形態の小数点位置制御部の小数点位置制御フロー(下限飽和値制御フロー)の流れを示す図である。 第3実施形態の小数点位置制御部の小数点位置制御フロー(下限飽和値制御フロー)の流れを示す図である。
以下、開示の技術の実施形態の一例を、図面を参照しつつ説明する。なお、各図面において同一又は等価な構成要素及び部分には同一の参照符号を付与している。また、図面の寸法比率は、説明の都合上誇張されており、実際の比率とは異なる場合がある。
まず、本開示の実施形態について説明する前に、本開示の技術の前提となる非特許文献4の技術について、参考例としての構成及び作用を説明する。
[参考例]
参考例では、データ処理装置に相当する物体検出装置を例に説明する。物体検出装置は、映像から連続して入力される一連の複数の入力画像(以下、画像と省略して記載する場合がある)を受け付けて処理を行う。物体検出装置は、当該画像に含まれる物体の検出数、物体を囲む枠、属性、及び当該属性の認識精度を含むメタデータを検出することにより物体検出を行う装置である。ここで物体の位置は、画像内における物体の中心の座標又は物体を囲む四角い枠によって表される。また、属性は、人、又は車などの物体の種別であり、カテゴリーと呼ばれることもある。また、認識精度は、例えば、検出された物体が特定の属性を有する確率である。なお、映像から連続して入力される一連の複数の入力画像(画像)が本開示の技術の「連続して入力される処理対象データの各々」の一例である。
図1に示すように、参考例に係る物体検出装置10は、検出演算部101と、小数点位置制御部102と、カウンタ部103とから構成される。検出演算部101は、入力された画像に対して深層学習の推論処理に基づく演算処理を行うように構成されている。小数点位置制御部102は、検出演算部101における演算対象となる、固定長データの小数点の位置(以下、単に「小数点位置」という)を決定する。カウンタ部103は、上限カウンタ及び下限カウンタの総称である。カウンタ部103は、検出演算部101による演算処理の過程において、データが小数点位置制御部102によって設定された小数点位置によって定まる値域の上限及び下限を超えた回数をそれぞれ層ごとにカウントするように構成されている。データが小数点位置制御部102によって設定された小数点位置によって定まる値域の上限を超えた回数、及び上限を超えた回数がカウンタ部103でカウントされる。
検出演算部101は、ハードウェアとしては、多層ニューラルネットワークの処理アルゴリズムに従って、多層ニューラルネットワークを構成する複数の層のそれぞれに対応する演算処理を行うように構成された演算処理回路である。検出演算部101における多層ニューラルネットワークによる処理は、典型的には、畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)を用いている。
図2は参考例におけるCNNの一例を示す図である。CNNは、畳み込み層(CONV1,CONV2_1,CONV2_2)と、畳み込み処理の結果をダウンサイジングする「プーリング(Pooling)」処理を行うプーリング層(Pooling1,Pooling2)とが交互に配置されている。畳み込み層は、入力された画像に対して所定のフィルタを畳み込む。また、CNNは、特徴マップを作成する「特徴抽出パート」と、複数の全結合層(FC:Fully Connected Layers;FC1,FC2)により、特徴マップから入力された画像に含まれる物体を特定する「識別パート」からなる。特徴抽出パートでは、画像に対してフィルタを畳み込む演算が行われる。また、識別パートでは、特徴マップの各画素の値に重みを乗じて和をとる積和演算と、その積和演算の結果にバイアスを加えて活性化関数に入力し、その出力を得る演算が繰り返される。なお、活性化関数としては、ReLU(Rectified Linear Unit)などが用いられる。重み及び活性化関数のパラメータの値は、学習によって決定することができる。また、図2において、「BRAM」は、各層における演算結果を記憶するブロックRAM(Block RAM)を表している。
検出演算部101は、深層学習に基づく物体検出アルゴリズムを用いて、推論処理の畳み込み演算及び結合処理を行って、入力された画像に含まれるメタデータを出力する。物体検出アルゴリズムは、例えばYOLO(非特許文献1)又はSSD(非特許文献2)などである。
参考例の検出演算部101が多層ニューラルネットワークの各層で扱うデータは、例えば、入力、出力(特徴マップ)、重み(カーネル)、及びバイアス等は、32ビットよりも小さなビット幅を有する固定長データである。固定長データは、層ごとに異なる小数点位置を有することが可能なデータ構造となっている。より具体的には、参考例において、検出演算部101は、例えば、8ビットのビット幅を有する固定長データに対して、多層ニューラルネットワークを構成する複数の層のそれぞれに対応する演算処理を行い、かつ、扱うデータの小数点位置は、後述する小数点位置制御部102によって層ごとに設定される。
図3に、検出演算部101における畳み込み演算のフローを示す。例えば、入力を8ビット、重みを8ビットとした場合、その積和演算で得られる結果は最大16ビットとなる。検出演算部101は、16ビットの計算結果に対してバイアスを加算し、活性化関数をかけ、16ビットの途中特徴マップとする。特徴マップは次の層における入力になるため、16ビットの途中入力マップを8ビット幅まで小さくし、次層入力用の特徴マップとする。なお、層の数や活性化関数、バイアス加算の方法は、使用する物体検出アルゴリズムごとに適宜選択されるものであり、参考例の技術を限定するものではない。
[小数点位置制御部]
小数点位置制御部102は、上述したように、多層ニューラルネットワークを構成する複数の層のそれぞれに対応して、検出演算部101における演算対象となる固定長データの小数点位置を決定する処理回路である。
参考例においては、小数点位置制御部102が、カウンタ部103の値に基づいて各層の小数点位置を更新し、検出演算部101に通知する。検出演算部101は、当該通知に基づいて各層の小数点位置を変更する。カウンタ部103を用いれば、複数の層を1度に最適化することが可能である。
[小数点位置制御フローの概要]
物体検出装置10の作用は、小数点位置制御部102の小数点位置制御フローによって説明される。図4は、小数点位置制御部102の小数点位置制御フローの流れを示す図である。図4の小数点位置制御フローは基本フローであり、各サブルーチンについては後述する。以下の説明において、i番目の層に対応して設定される固定長データの小数点位置を、単に「i層の小数点位置」(ただしiは、i>0の整数)という場合がある。
図4のフローにおいて、最適な小数点位置を決定する処理は、大きく分けて2つのステップ(Step AおよびStep C)からなり、小数点位置が決定された後は、画像種別等に大きな変化があるまで待機する処理(Step E、Step F)となる。
まず、最初に、多層ニューラルネットワークを構成する層毎に小数点位置の初期値(初期小数点位置nopt_first)を決定し、その初期値に基づいて設定された小数点位置の固定長データを用いて物体検出を行う(Step A)。そして、この物体検出の結果として得られた物体の総検出数(Nd)及び“犬”、“人間”などの検出属性(Nobj)を保存する(Step B)。次に、各層の小数点位置(nopt_i,0<i)をチューニングして最適な小数点位置を決定する(Step C)。
各層の小数点位置をチューニングした後、各層の小数点位置を検出演算部101に通知して、物体検出処理を行い、得られた検出結果(Nd、Nobj)を確定する(Step D)。その後は、画像変化の待ち状態に入り(Step E、Step F)、画像に大きな変化がなければ(Step F:NO)、画像変化チェック(Step E)を継続する。画像に大きな変化があった場合に(Step F:YES)、Step Aに戻り、最適化処理を再スタートする。
画像変化チェック(Step E)では、(A)総検出数Ndを用いた判定処理、又は(B)検出された物体の属性(Nobj)を用いた判定処理の何れかにより、画像変化をチェックすればよい。
(A)総検出数Ndを用いた判定処理では、小数点位置を移動する前と後の総検出数を比較する。なお、小数点位置を移動する前の総検出数とは、図4のStep B又はStep Dでの総検出数である。比較において、変化率が0のとき“変化なし”、総検出数の変化率が0以上で検出数閾値を超えない場合に“小さな変化”、総検出数の変化率が検出数閾値を超える場合に、“大きな変化”があったと識別すればよい。
(B)検出された物体の属性(Nobj)を用いた判定処理では、新たな属性が加わった場合に、その属性Nobjの物体の検出数が総検出数Ndに対してどの程度の割合なのかを判定し、“変化なし”、“小さな変化”又は“大きな変化”を識別する。
以下に、上述した小数点位置制御フローにおける、初期小数点位置(nopt_first)の決定(Step A)、及びi層の小数点位置(nopt_i)の決定(Step C)の処理について、それぞれ詳しく説明する。
[Step A:初期小数点位置(nopt_first)の決定]
図5に、初期小数点位置(nopt_first)を決定するための処理の一例となるフローを示す。この決定手法では、小数点位置を変えながら、すべての層の小数点位置を共通にすることによって各層に対応する演算処理において用いられる固定長データの値域と最小ステップ幅を共通にして物体検出を行う。そして、検出結果が最も良い小数点位置nを全層に共通する初期小数点位置nopt_firstとする。
具体的には、まず、すべての層の小数点位置nを初期値ninitから最大値nmaxまで順に変化させながら入力画像毎に物体検出を行い、小数点位置ごとに総検出数Ndと認識精度Aを保存する(Step A1)。そして、小数点位置ごとに得られた総検出数Ndと認識精度Aとから、検出された物体1つあたりの認識精度A、すなわち認識精度Aの平均値(ΣA/Nd)を求める。そして、認識精度Aの平均値が最も大きくなる小数点位置nを初期小数点位置nopt_firstとする(Step A2)。なお、初期値ninit及び最大値nmaxは、装置の設計者が決めるものであり、参考例の技術を限定するものではない。
また、初期小数点位置(nopt_first)の決定手法の一例として、複数の入力画像を用いて初期値を決定する手法を説明したが、参考例においては、これに限ることはない。例えば、あらかじめ物体検出シミュレータ等を用いて複数の画像について出力結果である特徴マップの値域を解析し、その解析結果に基づいて決定してもよい。また、参考例において、“検出結果が一番良い小数点位置”の定義を“認識精度の平均値が最も大きくなる小数点の位置”としたが、これに限ることはない。例えば、“検出数が最も多くなる小数点位置”を“検出結果が一番良い小数点位置”としても良い。
[Step C:i層の小数点位置(nopt_i)の決定]
図6に、カウンタ部103を用いた各層の小数点位置(nopt_i)を決定するための処理の一例となるフローを示す。ここで、カウンタ部103の値は、上限カウンタ値及び下限カウンタ値である。上限カウンタ値は、各層において扱う固定長データがその層の小数点位置によって定まる値域の上限値(全bit列1時の値)を超えた回数である。また、下限カウンタ値は、各層において扱う固定長データがその層の小数点位置によって定まる値域の下限値(全bit列のうち、LSB(最下位ビット)のみ1時の値)を下回った回数である。
Step Cでは、まず、初期値ninitとして物体検出を行った結果、上限カウンタ値と下限カウンタ値とが、それぞれ第1閾値UPthと第2閾値UNth(UPth≧0、UNth≧0)よりも小さい結果をとなった層を判別する。この層については、「小数点位置が最適化されている層」とみなして、その層の小数点位置は変更せずにそのままとし、次のStep C2aで当該層以外の層に対して小数点位置制御を行う(Step C1a)。
このとき、閾値UPth及びUNth(≧0)は層ごとに設定可能な数値とする。図6のStep C2aでは、「最適化されていない層」の小数点位置を変更する。具体的には、これらの層の上限カウンタ値、及び下限カウンタ値が上述した条件に収まるようにする。すなわち、上限カウンタ値が第1閾値UPth未満となり、下限カウンタ値が第2閾値UNth未満となるように、画像が入力されるごとに最適化されていない層の小数点位置を変更する。
例えば、まずは上限値に着目し、上限カウンタ値が第1閾値UPthより小さくなるように小数点位置を変更する。上限値とは第1閾値UPthを超えている値であり、下限値とは第2閾値UNthを超えている値である。上限カウンタ値について最適化された後に下限カウンタ値を第2閾値UNthより小さくなるように変更する。上限カウンタ値及び下限カウンタ値が収束した場合、その小数点位置を最適な位置nopt_iとして図4に示すStep Dへ遷移する。上限カウンタ値、及び下限カウンタ値に基づいて制御した結果、いずれかの閾値以下にしかならない層については、層ごとにあらかじめいずれの条件(UPthより小さくするか、UNthより小さくするか)を優先するか決定しておき、優先する条件に当てはまった場合を「最適化された小数点位置」とする。
また、検出演算部101からの出力されるメタデータを用いて、カウンタ部103の値及びメタデータを用いる手法を組み合わせて、小数点位置を変更してもよい。映像内の物体検出をする場合、連続して入力される画像内の物体は少しずつ変化し、短時間で全て変化することは稀である。よってメタデータを用いる手法では、各層の小数点位置を入力画像1枚のみの検出結果から制御するのではなく、複数枚の入力画像に対する物体検出の結果(メタデータ)を用いて各層の小数点位置を算出する処理を繰り返す。これにより少しずつ層ごとの小数点位置を最適化できる。
カウンタ部103とメタデータとを組み合わせる場合には、カウンタ部103の値によって小数点位置を最適化する過程において得られた検出結果(A,Nd)を保存し、保存した結果の中で最良の結果をもたらす小数点位置を選ぶようにすればよい。以上が参考例についての説明である。
[本開示の実施形態の概要]
本開示の実施形態の手法は、非特許文献4及び参考例における課題を解決するためになされた手法である。その目的は回路の小型化を達成するために演算に用いるデータをnビットとし、層ごと及び画像ごとの小数点位置制御によって、認識精度を維持しながら、低電力化を実現することである。
そのため本開示では、演算結果が最大値を上回る(すなわち上限飽和が起きる)又は最小値を下回る(すなわち下限飽和が起きる)時に、上回った結果及び下回った結果は全て最大値及び最小値として同値データになる点に着目した。飽和を意図的に発生させることができれば、演算結果の同値率が高くなる。同値率とは、全画素数に対して結果が同値の割合である。また、演算結果の絶対値が小さい下限値は、認識精度に大きく影響しない点を利用し、下限飽和率を高めることで特徴マップ(前の層からの出力)の同値率を向上させ、演算スキップを実行する。下限飽和率とは、演算対象の特徴マップのデータのうち、下限値が飽和している(下限の閾値を超えている)データの割合である。よって下限飽和率はカウントされる下限カウンタ値の大きさに比例する。すなわち、下限飽和率が増加することにより、同値率を増加させることができる。同値率とは、演算された積和演算結果が同値データになる割合である。また、演算スキップ実行中は回路のクロックを停止することで、低電力化を達成する。更に、同値率の向上により認識精度に劣化が生じ得るが、劣化を補うために当該認識精度の結果を、下限飽和率を高める前の認識精度の結果に置き換える処理を行う。
以上により、認識精度の劣化を抑えながら特徴マップの同値率を高め、演算スキップによって低電力化を実現する。また特徴マップの同値率を高めると、同値が連続する部分の演算については再度演算することなく、1度算出した演算結果を用いることが可能となるため、平均的な演算速度を向上させることも可能となる。
[本開示の第1実施形態]
参考例を元に、以下、本開示の第1実施形態の構成及び作用について説明する。なお、参考例の処理部と同一名称の処理部については同様の処理が可能なものとして説明を省略する。
図7は、本開示の各実施形態の物体検出装置20のハードウェア構成を示すブロック図である。物体検出装置20が、本開示の技術のデータ処理装置の一例である。
図7に示すように、物体検出装置20は、CPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13、ストレージ14、入力部15、表示部16及び通信インタフェース(I/F)17を有する。各構成は、バス19を介して相互に通信可能に接続されている。
CPU11は、中央演算処理ユニットであり、各種プログラムを実行したり、各部を制御したりする。すなわち、CPU11は、ROM12又はストレージ14からプログラムを読み出し、RAM13を作業領域としてプログラムを実行する。CPU11は、ROM12又はストレージ14に記憶されているプログラムに従って、上記各構成の制御及び各種の演算処理を行う。本実施形態では、ROM12又はストレージ14には、物体検出装置20の各種処理を実行するための物体検出プログラムが格納されている。物体検出プログラムが、本開示の技術のデータ処理プログラムの一例である。
ROM12は、各種プログラム及び各種データを格納する。RAM13は、作業領域として一時的にプログラム又はデータを記憶する。ストレージ14は、HDD(Hard Disk Drive)又はSSD(Solid State Drive)等の記憶装置により構成され、オペレーティングシステムを含む各種プログラム、及び各種データを格納する。
入力部15は、マウス等のポインティングデバイス、及びキーボードを含み、各種の入力を行うために使用される。
表示部16は、例えば、液晶ディスプレイであり、各種の情報を表示する。表示部16は、タッチパネル方式を採用して、入力部15として機能してもよい。
通信インタフェース17は、端末等の他の機器と通信するためのインタフェースである。当該通信には、例えば、イーサネット(登録商標)若しくはFDDI等の有線通信の規格、又は、4G、5G、若しくはWi-Fi(登録商標)等の無線通信の規格が用いられる。
次に、物体検出装置20の各機能構成について説明する。図8は、本開示の各実施形態の物体検出装置20の構成を示すブロック図である。各機能構成は、CPU11がROM12又はストレージ14に記憶された物体検出プログラムを読み出し、RAM13に展開して実行することにより実現される。
図8に示すように、物体検出装置20は、検出演算部201と、小数点位置制御部202と、カウンタ部203と、飽和率制御部204と、認識精度合成部205とを含んで構成されている。なお、検出演算部201は、多くの積和演算を実行することから、しばしばマルチコアCPU又はGPU(グラフィックス処理装置)を用いて実現される。なお、検出演算部201を、例えば、FPGA(Field Programmable Gate Array)によって実現してもよい。
検出演算部201は、参考例の検出演算部101と同様の演算処理が可能な演算処理回路である。検出演算部201は、演算処理において処理時点の画像の飽和率に応じて増加する同値データを判定して、同値データの2回目以降の演算処理をスキップする。このように演算スキップを行うことにより、検出演算部201の処理は同値率を考慮することになる。また、演算処理において処理時点の画像内の物体の検出数、物体を囲む枠、属性、及び当該属性の認識精度を含むメタデータ(検出結果)を検出する。メタデータは、後述する飽和率制御部204を用いた下限飽和率を最適化する処理において用いる。
検出演算部201では、参考例に示した基本的な畳み込み演算に加えさらに、カーネルサイズ単位での演算スキップ及びスキップ中のクロックゲートを行う。図9に5×5の入力データと3×3のカーネルデータを1ストライドずつずらしていき1ch分の積和演算処理を行う例を示す。1スライドずらすとは、カーネルサイズを1単位スライドすることである。また、入力データは前層で得られた出力の特徴マップである。図9での入力値太枠で囲まれた領域が第1入力値、入力値点線太枠で囲まれた領域が第2入力値である。カーネルサイズ単位の演算スキップとは、3×3のカーネルの大きさに該当する第1入力値が全て同値かつ、1ストライドずらした次の演算対象となる第2入力値、も全て同値だった場合に、カーネルサイズ単位で可能となる演算のスキップである。図9では、1回目の演算結果を保存しておけば、2回目の演算は保存した値を用いることで演算がスキップできることを示している。まず、カーネルサイズ単位で同値の有無を判定し、全て同値の場合はその積和演算を行い、値を記憶する。次にカーネルをずらした時に、ずらした分の値が全て同値か否かを判定し、同値の場合は保持していた演算結果を用い、その間クロックを停止することで電力を低減させる。例えば図9に示す5×5の入力データと3×3のカーネルデータを1ストライドで1ch分の積和演算を行う場合、入力データのうち、4行目までが全て同値(I00)である。そのため、第1の演算結果となるf00(=I00×(k00+k01+k02+k10+k11+k12+k20+k21+k22))は積和演算結果の2行目まで全て同値となる。この例では2行目までの全6回の計算のうち、1回目を除く2~6回目の演算がスキップ可能となる。なお、層数、活性化関数、及びバイアス加算の方法は使用する物体検出アルゴリズムごとに異なり、本開示で規定するものではない。
小数点位置制御部202と、飽和率制御部204とは連携して制御が行われる。連携による下限飽和率の最適化の処理については作用の説明において詳しく説明するものとし、ここでは機能構成についてのみ記載する。
小数点位置制御部202は、上記参考例と同様の処理によって、小数点位置を決定して演算処理を行わせる第1制御を行う(後述する1stステップの処理である)。小数点位置制御部202は、第1制御として、上限カウンタ値が第1閾値の範囲内、下限カウンタ値が第2閾値の範囲内にそれぞれ収まるように、層ごとの小数点位置を移動させた小数点位置を決定する。そして、第1制御として、検出演算部201による処理時点の画像に対する演算処理を行わせる。
また、小数点位置制御部202は、第2制御を繰り返し行うことにより下限飽和率の最適化を行う(後述する2ndステップの処理である)。小数点位置制御部202は、飽和率制御部204からの指示とメタデータとに基づいて、所定の判定を行い、層ごとの小数点位置を移動させた小数点位置を決定し、検出演算部201による処理時点の画像に対する演算処理を行わせる。
カウンタ部203は、機能構成としては参考例のカウンタ部103と同様である。カウンタ部203は、検出演算部201の層ごとの演算処理の過程において、小数点位置によって定まる値域の上限値を超えた回数である上限カウンタ値、及び値域の下限値を超えた回数である下限カウンタ値をカウントする。
飽和率制御部204は、小数点位置制御部202からの指示により動作する。ここでの指示は、第1制御の結果を受け付けることでもよい。飽和率制御部204は、第1制御の結果に対して、下限飽和率を増加させるような制御を行う。制御としては、少なくとも小数点位置を移動させる指示を小数点位置制御部202に対して行うが、制御の具体的な内容は作用で説明する。
認識精度合成部205は、小数点位置制御部202の判定に応じて、検出演算部201の演算処理で得られる第2制御における認識精度を、記憶されている精度の高い方の第1制御における認識精度に置き換え、検出結果として出力する。
作用について説明する前に、下限飽和率を最適化するための制御方法を説明する。図10は、第1実施形態における下限飽和率を最適化するための制御方法の概要について示す図である。制御フローは大きく2ステップに分かれ、1stステップでは、まず、閾値を用いて層ごとに適切な小数点位置を決定する(標準小数点位置決定)。2ndステップでは、1stステップで決定した小数点位置から下限飽和率が増加するように、下限の第2閾値をΔUNth分ずつ少しずつ大きくする(下限飽和率向上)。これにより下限飽和率を可能な限り大きくし、最大の飽和率が得られる小数点位置を定常状態として動作させる(同値率定常区間)。そして、検出結果に変化が生じた場合は1stステップに戻す。
次に、物体検出装置20の作用について説明する。本実施形態の物体検出装置20の作用は、参考例と同様に小数点位置制御部202の小数点位置制御フローによって説明される。CPU11がROM12又はストレージ14から物体検出プログラムを読み出して、RAM13に展開して実行することにより、小数点位置制御フローの処理が行なわれる。作用における小数点位置制御フローが、本開示の技術のデータ処理方法の一例である。
[第1実施形態の小数点位置制御フロー]
図11は、第1実施形態の小数点位置制御部202の小数点位置制御フロー(下限飽和値制御フロー)の流れを示す図である。なお、ステップS100及びステップS102の処理が、本開示の技術の第1制御の一例であり、以降のステップの処理が第2制御の一例である。小数点位置制御フロー内において、第2制御の箇所が下限飽和値制御フローである。なお、以下、第1閾値及び第2閾値などの用語に付した符号については必要な場合にのみ表記するものとし、適宜省略する。
ステップS100では、CPU11が、上限カウンタ値が第1閾値の範囲内、下限カウンタ値が第2閾値の範囲内にそれぞれ収まるように、層ごとに移動させた小数点位置を決定する。本ステップの処理は、小数点位置制御部202及びカウンタ部203の連携により実行する。なお本ステップの処理は、参考例におけるStep A~Step Cまでの処理と同様の処理により実現することができる。参考例のStep Cに相当する本実施形態の処理について以下に説明する。
上限カウンタ値及び下限カウンタ値は、各層の演算結果がデータビット幅と小数点位置で決定される値域の絶対値をはみ出した回数を計測したカウンタ値である。これらのカウンタ値が大きくなると上限値若しくは下限値、又は0に丸めこまれる数値が多くなり、認識精度が低下する。これらのカウンタ値を小さくするために小数点位置を移動させるが、データビット幅には限りがあるため、小数点位置を変更しても全層においてカウンタ値=0にすることは困難である。そこで、層ごとに初期の第1閾値UPth_first及び第2閾値UNth_firstを設け、その閾値以内にカウンタ値が収まるように小数点位置を制御することによって、認識精度を劣化させずに物体検出が可能となる。
物体検出によって得られた上限カウンタ値及び下限カウンタ値と設定された第1閾値及び第2閾値をそれぞれ比較し、層ごとに下記(A)~(C)のように小数点位置を変更することで、標準小数点位置を決定する。
(A)上限カウンタ値<第1閾値UPth_firstかつ下限カウンタ値<第2閾値UNth_firstの場合には、小数点位置を変更せず、そのままとする。(B)上限カウンタ値≧第1閾値UPth_firstである場合には、小数点位置をLSB側に1移動する。(C)上限カウンタ値=0かつ下限カウンタ値≧UNth_firstである場合には、小数点位置をMSB(最上位ビット)側に1移動する。この操作を、複数枚の画像で繰り返し、上限カウンタ値が第1閾値内に収まり、かつ、下限カウンタ値が第2閾値内に収まるように小数点位置を変更する。なお閾値内に収まらない層に対しては、上限カウンタ値が第1閾値内におさまるように制御する。
ステップS102では、CPU11が、ステップで決定された小数点位置により物体検出処理を行い、得られた検出結果として検出数Nd、属性Nobj、物体の位置を示す枠、及び認識精度を確定し、保存する。
次に2ndステップとして、物体検出数が変更しない範囲で下限飽和率を増加させる。
ステップS104では、CPU11が、小数点位置制御部202として飽和率制御部204に指示を出し、所定の層の第2閾値UNthをΔUNth分増加させる(UNth=UNth+ΔUNth)。ここで所定の層は全層とするが、あらかじめ取り決めておいた指定した層であってもよい。
ステップS106では、CPU11が、第2閾値UNthを大きくした上で、カウンタ値が閾値内に収まるように小数点位置を変更し、物体検出を行う。ここでは、2枚の入力画像を用いて2回物体検出を行い、それぞれの画像に対する物体検出において次のように小数点位置を変更する。(1):全層の小数点位置をLSB側に1移動し、物体検出を行う。LSB側への移動は下限飽和率を増やす方向である。(2):(1)において検出した結果得られた下限カウンタ値が第2閾値UNthよりも大きくなった層はMSB側に1移動して元に戻し、物体検出を行う。なお、検出結果として得られた、検出数Nd、属性Nobj、物体の位置を示す枠、及び認識精度を保存する。本ステップの処理は、小数点位置制御部202及び検出演算部201の連携により実行する。
ステップS108では、CPU11が、ステップS106の上記(2)での検出結果のうち、検出数と属性とをステップS102で記憶したものと比較し、変化があるか否かを判定する。変化がない場合にはステップS110へ移行し、変化がある場合にはステップS120へ移行する。
ステップS110では、CPU11が、ステップS102得られた物体の位置を示す枠と、ステップS106で得られた物体の位置を示す枠との面積の重複度が位置閾値以上であるか否かを判定する。なお、重複度は2回の物体検出の各検出で得られる物体の位置を示す枠を重ねた時に重なる面積を示す。重複度が位置閾値以上の場合、画像変化がなく、誤検出が発生しない範囲で第2閾値を増加できたと判定し、ステップS112へ移行する。重複度が位置閾値以上でない場合、画像変化があったとして、ステップSS120へ移行する。
ステップS112では、CPU11が、各物体の認識精度を第1制御(ステップS102)の認識精度に置き換えて検出結果として出力する。この処理は、小数点位置制御部202は認識精度合成部205に対して精度を置き換えるように指示を出すことにより実行する。本ステップの終了後はステップS104に戻り、これを検出数と属性とが変化するまで繰り返す。これにより、図10に示した下限飽和率向上の処理が行われる。
ステップS120では、CPU11が、各物体の認識精度を第1制御(ステップS102)の認識精度に置き換え、新物体に対しては得られた認識精度を検出結果として出力する。このようにして、検出され続けている物体に対しての認識精度を維持する。
ステップS122では、CPU11が、小数点位置制御部202として飽和率制御部204に指示を出し、所定の層の第2閾値UNthをΔUNth分減少させる(UNth=UNth-ΔUNth)。
ステップS124では、CPU11が、第2閾値UNthを小さくした上で、カウンタ値が閾値内に収まるように小数点位置を変更し、物体検出を行う。検出結果として得られた、検出数Nd、属性Nobj、物体の位置を示す枠、及び認識精度を保存する。本ステップの処理は、小数点位置制御部202及び検出演算部201の連携により実行する。
ステップS126では、CPU11が、ステップS124の検出数と属性とをステップS102で記憶したものと比較し、検出数と属性とが同じであるか否かを判定する。同じである場合にはステップS128へ移行し、同じでない場合にはステップS100の処理に戻る。この判定により、同じである場合には、前のステップS108による判定結果は誤検出の発生による変化であり、ひとつ前の段階の第2閾値であれば認識精度は維持されると判断できる。
ステップS128では、CPU11が、ステップS122で減少させた第2閾値を定常閾値として用いるように決定する。これにより定常閾値によって物体検出が行われるようになり、結果として物体検出における下限飽和率が向上すると共に、同値率が向上する。
ステップS130では、CPU11が、画像変化チェックを行う。画像変化チェックは例えば、参考例と同様に検出数及び属性で判定すればよい。また、これに限ることはなく、例えばタイムアウトを用いて、一定時間の経過により画像変化しているものと扱っても良い。
ステップS132では、CPU11が、画像変化チェックにおいて、画像変化が大きい場合はステップS100の処理に戻り、画像変化が大きくない場合はステップS130及び本ステップを繰り返す。以上により、認識精度を劣化させずに下限飽和率を高めることが可能となる。
上記の作用に示したように、飽和率制御部204は、所定の層の第2閾値UNthをΔUNth分増加させるように指示する(ステップS104)。また、小数点位置制御部202は、指示により増加させた第2閾値UNthに基づき検出演算部201に演算処理を行わせ(ステップS104)、演算結果におけるメタデータの第1制御に対する変化を判定する第1判定を行う(ステップS106~ステップS110)。変化していないと判定した場合に、第2閾値の増加を繰り返す(ステップS104~ステップS112)。また、飽和率制御部204は、第1判定において変化していると判定した場合に、所定の層の第2閾値を減少させるように指示する(ステップS120、及びステップS122)。また、小数点位置制御部202は、指示により減少させた第2閾値UNthに基づき検出演算部201に演算処理を行わせ、演算結果におけるメタデータの第1制御に対する変化を判定する第2判定を行う(ステップS124)。第2判定において変化していないと判定した場合に第2閾値を定常閾値とし、変化していると判定した場合に第1制御に戻る(ステップS126)。
以上説明したように本実施形態の物体検出装置20によれば、出力の同値率を高めることによって可能となる演算のスキップにより、消費電力を低減できる。
[本開示の第2実施形態]
第2実施形態は、第2閾値を変化させずに小数点位置の移動によって下限飽和率を向上させる態様である。第1実施形態では、最適な小数点位置決定後、第2閾値を増加していくことで飽和に達する画素データを増やす手法であった。この場合、第2閾値を増加してから小数点位置を決定するので入力画像を少なくとも2枚使用する必要があった。第2実施形態の第1実施形態との差分は2ndステップにおいて同値率を向上させる手法として閾値を増加させるのではなく、直接小数点位置を変更することである。第2実施形態においては、1枚の入力画像で同値率を向上させる手法について示す。なお、第2実施形態の構成は第1実施形態と同様であるため説明を省略し、作用における処理の差分に関してのみ説明する。
図12に第2実施形態における小数点位置制御フロー(下限飽和値制御フロー)を示す。第1実施形態と異なる点としてはステップS104及びステップS124がない点である。
第2実施形態ではステップS102の後に、ステップS200に移行する。ステップS200では、CPU11が、所定の層の小数点位置をLSB側に1移動して物体検出を行い、検出結果を保存する。ステップS200の後はステップS108へ移行する。また、ステップS120の後に、ステップS202に移行する。ステップS202では、CPU11が、所定の層の小数点位置をMSB側に1移動して物体検出を行い、検出結果を保存する。ステップS202の後はステップS126へ移行する。以上により、より短時間で飽和率を高めることが可能となり、長時間で観察した際の平均電力を低下することが可能となる。
上記の作用に示したように、飽和率制御部204は、指示において所定の層の小数点位置を最下位ビット側にaビット(a>0)移動するように指示する(ステップS200)。また、小数点位置制御部202は、指示に基づき下位ビット側に移動させた移動後の小数点位置を用いて、検出演算部201に演算処理を行わせる(ステップS200)。また、演算結果におけるメタデータの前記第1制御に対する変化を判定する第1判定を行う(ステップS106~ステップS110)。飽和率制御部204は、第1判定において変化していると判定した場合に、所定の層の小数点位置を最上位ビット側にaビット(a>0)移動させるように指示する(ステップS202)。また、小数点位置制御部202は、に基づき最上位ビット側に移動させた移動後の小数点位置を用いて、検出演算部201に演算処理を行わせ、演算結果におけるメタデータの第1制御に対する変化を判定する第2判定を行う(ステップS124)。第2判定において変化していないと判定した場合に第2閾値を定常閾値とし、変化していると判定した場合に第1制御に戻る(ステップS126)。
以上説明したように本実施形態の物体検出装置20によれば、同値率向上の過程を効率化できる。
[本開示の第3実施形態]
第3実施形態は、同値率向上の過程においても、一定期間ごとに最適な小数点位置での物体検出を行い、結果を上書きしていく態様である。第1実施形態及び第2実施形態においては、同値率を高めている間に置き換える認識精度(ステップS112)は第1制御で決定された小数点位置で検出を行った際の認識精度であった。しかし、この場合、同値率を高めている過程で、処理時点の画像において実際の検出対象の物体が増加していたとしても、同値率を高めたことが理由で検出されない物体が存在している恐れがある。そのため、本実施形態では同値率を高める過程においても、一定期間ごとに最適な小数点位置での物体検出を行い、結果を上書きしていく。
図13に第3実施形態における小数点位置制御フロー(下限飽和値制御フロー)を示す。第2実施形態と異なる点としてはステップS112の後にステップS300に移行する点である。
ステップS300では、一定期間が経過したか否かを判定する。一定期間が経過している場合にはステップS302へ移行し、一定期間が経過していない場合にはステップS104に戻る。
ステップS302では、CPU11が、ステップS102で用いた小数点位置、すなわち第1制御において決定した小数点位置に変更して物体検出を行い、検出結果を上書き保存する。これにより、ステップS102の検出結果を更新する。
ステップS304では、CPU11が、ステップS200で移動させた際の小数点位置に、小数点位置を戻し、ステップS200に戻る。
上記の作用により、小数点位置制御部202は、所定の判定を行った後に、所定の条件を満たすか否かを判定する(ステップS300)。小数点位置制御部202は、第1制御において決定された小数点位置を用いて、検出演算部201に、演算処理の時点における処理対象データについて、メタデータを再び求めさせる。認識精度合成部205は、第1制御において求められていたメタデータを、再び求めたメタデータで上書きする(ステップS302)。
以上説明したように本実施形態の物体検出装置20によれば、同値率向上の過程においても、精度を落とすことなく、物体検出を行える。
なお、上記各実施形態でCPUがソフトウェア(プログラム)を読み込んで実行した各種処理を、CPU以外の各種のプロセッサが実行してもよい。この場合のプロセッサとしては、FPGA等の製造後に回路構成を変更可能なPLD(Programmable Logic Device)、及びASIC(Application Specific Integrated Circuit)等の特定の処理を実行させるために専用に設計された回路構成を有するプロセッサである専用電気回路等が例示される。また、各種処理を、これらの各種のプロセッサのうちの1つで実行してもよいし、同種又は異種の2つ以上のプロセッサの組み合わせ(例えば、複数のFPGA、及びCPUとFPGAとの組み合わせ等)で実行してもよい。また、これらの各種のプロセッサのハードウェア的な構造は、より具体的には、半導体素子等の回路素子を組み合わせた電気回路である。
また、上記各実施形態では、物体検出プログラムがストレージ14に予め記憶(インストール)されている態様を説明したが、これに限定されない。プログラムは、CD-ROM(Compact Disk Read Only Memory)、DVD-ROM(Digital Versatile Disk Read Only Memory)、及びUSB(Universal Serial Bus)メモリ等の非一時的(non-transitory)記憶媒体に記憶された形態で提供されてもよい。また、プログラムは、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
以上の実施形態に関し、更に以下の付記を開示する。
(付記項1)
メモリと、
前記メモリに接続された少なくとも1つのプロセッサと、
を含み、
前記プロセッサは、
多層ニューラルネットワークを構成する複数の層のそれぞれに対応して、Nビット(Nは2以上の自然数)の固定長データの小数点位置を設定するように構成されており、前記固定長データの小数点位置を設定し、
前記小数点位置が設定された前記Nビットの固定長データに対して、前記多層ニューラルネットワークの処理アルゴリズムに従って、連続して入力される処理対象データの各々に対し、前記多層ニューラルネットワークを構成する前記複数の層のそれぞれに対応する演算処理を行うように構成されており、演算処理において処理時点の前記処理対象データの飽和率に応じて増加する同値データを判定して、前記同値データの2回目以降の演算処理をスキップすると共に、演算処理において処理時点の前記処理対象データ内の物体の検出数、物体を囲む枠、属性、及び当該属性の認識精度を含むメタデータを検出し、
前記層ごとの演算処理の過程において、前記小数点位置によって定まる値域の上限値を超えた回数である上限カウンタ値、及び前記値域の下限値を下回った回数である下限カウンタ値をカウントし、
第1制御として、前記上限カウンタ値が第1閾値の範囲内、前記下限カウンタ値が第2閾値の範囲内にそれぞれ収まるように、層ごとに移動させた小数点位置を決定して、処理時点の前記処理対象データに対する演算処理を行わせ、
繰り返される第2制御として、前記第1制御の結果に対して、カウントされる前記下限カウンタ値の大きさに比例する下限飽和率を増加させるような制御として、少なくとも前記小数点位置を移動させる指示を行い、
前記第2制御として、前記指示と前記メタデータとに基づいて、所定の判定を行い、層ごとに移動させた前記小数点位置を決定し、処理時点の前記処理対象データに対する演算処理を行わせ、
前記第2制御として、演算処理で得られる前記認識精度を、記憶されている精度の高い方の認識精度に置き換える、
ように構成されているデータ処理装置。
(付記項2)
データ処理を実行するようにコンピュータによって実行可能なプログラムを記憶した非一時的記憶媒体であって、
多層ニューラルネットワークを構成する複数の層のそれぞれに対応して、Nビット(Nは2以上の自然数)の固定長データの小数点位置を設定するように構成されており、前記固定長データの小数点位置を設定し、
前記小数点位置が設定された前記Nビットの固定長データに対して、前記多層ニューラルネットワークの処理アルゴリズムに従って、連続して入力される処理対象データの各々に対し、前記多層ニューラルネットワークを構成する前記複数の層のそれぞれに対応する演算処理を行うように構成されており、演算処理において処理時点の前記処理対象データの飽和率に応じて増加する同値データを判定して、前記同値データの2回目以降の演算処理をスキップすると共に、演算処理において処理時点の前記処理対象データ内の物体の検出数、物体を囲む枠、属性、及び当該属性の認識精度を含むメタデータを検出し、
前記層ごとの演算処理の過程において、前記小数点位置によって定まる値域の上限値を超えた回数である上限カウンタ値、及び前記値域の下限値を下回った回数である下限カウンタ値をカウントし、
第1制御として、前記上限カウンタ値が第1閾値の範囲内、前記下限カウンタ値が第2閾値の範囲内にそれぞれ収まるように、層ごとに移動させた小数点位置を決定して、処理時点の前記処理対象データに対する演算処理を行わせ、
繰り返される第2制御として、前記第1制御の結果に対して、カウントされる前記下限カウンタ値の大きさに比例する下限飽和率を増加させるような制御として、少なくとも前記小数点位置を移動させる指示を行い、
前記第2制御として、前記指示と前記メタデータとに基づいて、所定の判定を行い、層ごとに移動させた前記小数点位置を決定し、処理時点の前記処理対象データに対する演算処理を行わせ、
前記第2制御として、演算処理で得られる前記認識精度を、記憶されている精度の高い方の認識精度に置き換える、
非一時的記憶媒体。
20 物体検出装置
201 検出演算部
202 小数点位置制御部
203 カウンタ部
204 飽和率制御部
205 認識精度合成部

Claims (7)

  1. 多層ニューラルネットワークを構成する複数の層のそれぞれに対応して、Nビット(Nは2以上の自然数)の固定長データの小数点位置を設定するように構成されており、前記固定長データの小数点位置を設定する小数点位置制御部と、
    前記小数点位置制御部によって前記小数点位置が設定された前記Nビットの固定長データに対して、前記多層ニューラルネットワークの処理アルゴリズムに従って、連続して入力される処理対象データの各々に対し、前記多層ニューラルネットワークを構成する前記複数の層のそれぞれに対応する演算処理を行うように構成されており、演算処理において処理時点の前記処理対象データの飽和率に応じて増加する同値データを判定して、前記同値データの2回目以降の演算処理をスキップすると共に、演算処理において処理時点の前記処理対象データ内の物体の検出数、物体を囲む枠、属性、及び当該属性の認識精度を含むメタデータを検出する検出演算部と、
    前記検出演算部の前記層ごとの演算処理の過程において、前記小数点位置によって定まる値域の上限値を超えた回数である上限カウンタ値、及び前記値域の下限値を下回った回数である下限カウンタ値をカウントするカウンタ部と、
    飽和率制御部と、認識精度合成部とを含み、
    前記小数点位置制御部は、第1制御として、前記上限カウンタ値が第1閾値の範囲内、前記下限カウンタ値が第2閾値の範囲内にそれぞれ収まるように、層ごとに移動させた小数点位置を決定して、前記検出演算部による処理時点の前記処理対象データに対する演算処理を行わせ、
    前記飽和率制御部は、前記小数点位置制御部によって繰り返される第2制御として、所定の層の前記第2閾値を増加させるように指示し、
    前記小数点位置制御部は、前記第2制御として、増加させた前記第2閾値に基づき前記検出演算部に演算処理を行わせ、演算結果における前記メタデータの前記第1制御に対する変化を判定する第1判定を行い、前記第1判定において変化していないと判定した場合に、前記第2閾値を増加させることを繰り返し、
    前記認識精度合成部は、前記第2制御として、前記検出演算部の演算処理で得られる前記認識精度を、記憶されている精度の高い方の認識精度に置き換え、
    前記飽和率制御部は、前記第1判定において変化していると判定した場合に、所定の層の前記第2閾値を減少させるように指示し、
    前記小数点位置制御部は、減少させた前記第2閾値に基づき前記検出演算部に演算処理を行わせ、演算結果における前記メタデータの前記第1制御に対する変化を判定する第2判定を行い、前記第2判定において変化していないと判定した場合に当該第2閾値を定常閾値とし、変化していると判定した場合に前記第1制御に戻る、
    データ処理装置。
  2. 多層ニューラルネットワークを構成する複数の層のそれぞれに対応して、Nビット(Nは2以上の自然数)の固定長データの小数点位置を設定するように構成されており、前記固定長データの小数点位置を設定する小数点位置制御部と、
    前記小数点位置制御部によって前記小数点位置が設定された前記Nビットの固定長データに対して、前記多層ニューラルネットワークの処理アルゴリズムに従って、連続して入力される処理対象データの各々に対し、前記多層ニューラルネットワークを構成する前記複数の層のそれぞれに対応する演算処理を行うように構成されており、演算処理において処理時点の前記処理対象データの飽和率に応じて増加する同値データを判定して、前記同値データの2回目以降の演算処理をスキップすると共に、演算処理において処理時点の前記処理対象データ内の物体の検出数、物体を囲む枠、属性、及び当該属性の認識精度を含むメタデータを検出する検出演算部と、
    前記検出演算部の前記層ごとの演算処理の過程において、前記小数点位置によって定まる値域の上限値を超えた回数である上限カウンタ値、及び前記値域の下限値を下回った回数である下限カウンタ値をカウントするカウンタ部と、
    飽和率制御部と、認識精度合成部とを含み、
    前記小数点位置制御部は、第1制御として、前記上限カウンタ値が第1閾値の範囲内、前記下限カウンタ値が第2閾値の範囲内にそれぞれ収まるように、層ごとに移動させた小数点位置を決定して、前記検出演算部による処理時点の前記処理対象データに対する演算処理を行わせ、
    前記飽和率制御部は、前記小数点位置制御部によって繰り返される第2制御として、所定の層の前記小数点位置を最下位ビット側にaビット(a>0)移動させるように指示し、
    前記小数点位置制御部は、前記第2制御として、最下位ビット側に移動させた移動後の前記小数点位置を用いて、前記検出演算部に演算処理を行わせ、演算結果における前記メタデータの前記第1制御に対する変化を判定する第1判定を行い、前記第1判定において変化していないと判定した場合に、前記最下位ビット側への移動を繰り返し、
    前記認識精度合成部は、前記第2制御として、前記検出演算部の演算処理で得られる前記認識精度を、記憶されている精度の高い方の認識精度に置き換え、
    前記飽和率制御部は、前記第1判定において変化していると判定した場合に、所定の層の前記小数点位置を最上位ビット側にaビット(a>0)移動させように指示し、
    前記小数点位置制御部は、最上位ビット側に移動させた移動後の前記小数点位置を用いて、前記検出演算部に演算処理を行わせ、演算結果における前記メタデータの前記第1制御に対する変化を判定する第2判定を行い、前記第2判定において変化していないと判定した場合に当該第2閾値を定常閾値とし、変化していると判定した場合に前記第1制御に戻る、
    データ処理装置。
  3. 前記小数点位置制御部は、前記第1判定を行った後に、所定の条件を満たす場合に、前記第1制御において決定された前記小数点位置を用いて、前記検出演算部に、演算処理の時点における前記処理対象データについて、前記メタデータを再び求めさせ、
    前記認識精度合成部は、前記第1制御において求められていた前記メタデータを、再び求めた前記メタデータで上書きする請求項1又は請求項2に記載のデータ処理装置。
  4. 前記検出演算部は、前記演算処理のスキップを実行中は回路のクロックを停止する請求項1~請求項の何れか1項に記載のデータ処理装置。
  5. 多層ニューラルネットワークを構成する複数の層のそれぞれに対応して、Nビット(Nは2以上の自然数)の固定長データの小数点位置を設定するように構成されており、前記固定長データの小数点位置を設定し、
    前記小数点位置が設定された前記Nビットの固定長データに対して、前記多層ニューラルネットワークの処理アルゴリズムに従って、連続して入力される処理対象データの各々に対し、前記多層ニューラルネットワークを構成する前記複数の層のそれぞれに対応する演算処理を行うように構成されており、演算処理において処理時点の前記処理対象データの飽和率に応じて増加する同値データを判定して、前記同値データの2回目以降の演算処理をスキップすると共に、演算処理において処理時点の前記処理対象データ内の物体の検出数、物体を囲む枠、属性、及び当該属性の認識精度を含むメタデータを検出し、
    前記層ごとの演算処理の過程において、前記小数点位置によって定まる値域の上限値を超えた回数である上限カウンタ値、及び前記値域の下限値を下回った回数である下限カウンタ値をカウントし、
    第1制御として、前記上限カウンタ値が第1閾値の範囲内、前記下限カウンタ値が第2閾値の範囲内にそれぞれ収まるように、層ごとに移動させた小数点位置を決定して、処理時点の前記処理対象データに対する演算処理を行わせ、
    繰り返される第2制御として、所定の層の前記第2閾値を増加させるように指示し、
    前記第2制御として、増加させた前記第2閾値に基づき演算処理を行わせ、演算結果における前記メタデータの前記第1制御に対する変化を判定する第1判定を行い、前記第1判定において変化していないと判定した場合に、前記第2閾値を増加させることを繰り返し、
    前記第2制御として、演算処理で得られる前記認識精度を、記憶されている精度の高い方の認識精度に置き換え、
    前記第1判定において変化していると判定した場合に、所定の層の前記第2閾値を減少させるように指示し、
    減少させた前記第2閾値に基づき演算処理を行わせ、演算結果における前記メタデータの前記第1制御に対する変化を判定する第2判定を行い、前記第2判定において変化していないと判定した場合に当該第2閾値を定常閾値とし、変化していると判定した場合に前記第1制御に戻る、
    処理をコンピュータに実行させるデータ処理方法。
  6. 多層ニューラルネットワークを構成する複数の層のそれぞれに対応して、Nビット(Nは2以上の自然数)の固定長データの小数点位置を設定するように構成されており、前記固定長データの小数点位置を設定し、
    前記小数点位置が設定された前記Nビットの固定長データに対して、前記多層ニューラルネットワークの処理アルゴリズムに従って、連続して入力される処理対象データの各々に対し、前記多層ニューラルネットワークを構成する前記複数の層のそれぞれに対応する演算処理を行うように構成されており、演算処理において処理時点の前記処理対象データの飽和率に応じて増加する同値データを判定して、前記同値データの2回目以降の演算処理をスキップすると共に、演算処理において処理時点の前記処理対象データ内の物体の検出数、物体を囲む枠、属性、及び当該属性の認識精度を含むメタデータを検出し、
    前記層ごとの演算処理の過程において、前記小数点位置によって定まる値域の上限値を超えた回数である上限カウンタ値、及び前記値域の下限値を下回った回数である下限カウンタ値をカウントし、
    第1制御として、前記上限カウンタ値が第1閾値の範囲内、前記下限カウンタ値が第2閾値の範囲内にそれぞれ収まるように、層ごとに移動させた小数点位置を決定して、処理時点の前記処理対象データに対する演算処理を行わせ、
    繰り返される第2制御として、所定の層の前記小数点位置を最下位ビット側にaビット(a>0)移動させるように指示し、
    前記第2制御として、最下位ビット側に移動させた移動後の前記小数点位置を用いて、演算処理を行わせ、演算結果における前記メタデータの前記第1制御に対する変化を判定する第1判定を行い、前記第1判定において変化していないと判定した場合に、前記最下位ビット側への移動を繰り返し、
    前記第2制御として、演算処理で得られる前記認識精度を、記憶されている精度の高い方の認識精度に置き換え、
    前記第1判定において変化していると判定した場合に、所定の層の前記小数点位置を最上位ビット側にaビット(a>0)移動させように指示し、
    最上位ビット側に移動させた移動後の前記小数点位置を用いて、演算処理を行わせ、演算結果における前記メタデータの前記第1制御に対する変化を判定する第2判定を行い、前記第2判定において変化していないと判定した場合に当該第2閾値を定常閾値とし、変化していると判定した場合に前記第1制御に戻る、
    処理をコンピュータに実行させるデータ処理方法。
  7. コンピュータを、請求項1~請求項の何れか1項に記載のデータ処理装置の各部として機能させるためのデータ処理プログラム。
JP2022572858A 2020-12-28 2020-12-28 データ処理装置、データ処理方法、及びデータ処理プログラム Active JP7613484B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/049249 WO2022145016A1 (ja) 2020-12-28 2020-12-28 データ処理装置、データ処理方法、及びデータ処理プログラム

Publications (2)

Publication Number Publication Date
JPWO2022145016A1 JPWO2022145016A1 (ja) 2022-07-07
JP7613484B2 true JP7613484B2 (ja) 2025-01-15

Family

ID=82259151

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022572858A Active JP7613484B2 (ja) 2020-12-28 2020-12-28 データ処理装置、データ処理方法、及びデータ処理プログラム

Country Status (4)

Country Link
US (1) US20240232593A9 (ja)
EP (1) EP4270252B1 (ja)
JP (1) JP7613484B2 (ja)
WO (1) WO2022145016A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102600978B1 (ko) * 2021-01-08 2023-11-10 한국과학기술원 저비트 정밀도 심층신경망 학습 장치 및 그 방법
CN116541416B (zh) * 2023-04-07 2024-03-15 杭州浩联智能科技有限公司 一种请求数据的优化处理方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10552119B2 (en) * 2016-04-29 2020-02-04 Intel Corporation Dynamic management of numerical representation in a distributed matrix processor architecture
JP6540725B2 (ja) * 2017-01-30 2019-07-10 富士通株式会社 演算処理装置、方法、およびプログラム
JP6528893B1 (ja) * 2018-11-07 2019-06-12 富士通株式会社 学習プログラム、学習方法、情報処理装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
LI, Zhisheng et al.,Laius: An 8-Bit Fixed-Point CNN Hardware Inference Engine,2017 IEEE International Symposium on Parallel and DistributedProcessing with Applications and 2017 I,IEEE,2017年12月12日,pp.143-150,Retrieved from the Internet: <URL: https://ieeexplore.ieee.org/document/8367260>,<DOI: 10.1109/ISPA/IUCC.2017.00030>, 特にIV.節参照
REAGEN, Brandon et al.,Minerva: Enabling Low-Power, Highly-Accurate Deep Neural Network Accelerators,2016 ACM/IEEE 43rd Annual International Symposium on Computer Architecture (ISCA) [online],IEEE,2016年06月18日,pp.267-278,Retrieved from the Internet: <URL: https://ieeexplore.ieee.org/abstract/document/7551399>,<DOI: 10.1109/ISCA.2016.32>, 特に2. 6.及び7.節参照
八田 彩希 ほか,物体検出AI推論用ハードウェア向け動的小数点位置制御手法の提案,電子情報通信学会2020年基礎・境界ソサイエティ/NOLTAソサイエティ大会講演論文集,一般社団法人電子情報通信学会,2020年09月01日,p.33

Also Published As

Publication number Publication date
WO2022145016A1 (ja) 2022-07-07
US20240135155A1 (en) 2024-04-25
EP4270252A1 (en) 2023-11-01
JPWO2022145016A1 (ja) 2022-07-07
EP4270252A4 (en) 2024-10-09
EP4270252B1 (en) 2026-03-18
US20240232593A9 (en) 2024-07-11

Similar Documents

Publication Publication Date Title
JP7613484B2 (ja) データ処理装置、データ処理方法、及びデータ処理プログラム
JP5058681B2 (ja) 情報処理方法及び装置、プログラム、記憶媒体
US20230004809A1 (en) Method and Device for Model Compression of Neural Network
CN112085192A (zh) 一种神经网络的量化参数确定方法及相关产品
US11195083B2 (en) Object detection system and object detection method
JP7491379B2 (ja) データ処理装置およびデータ処理方法
JP7710507B2 (ja) 表畳み込みおよびアクセラレーション
Li et al. A multistage dataflow implementation of a deep convolutional neural network based on FPGA for high-speed object recognition
WO2022249316A1 (ja) 物体検出装置、物体検出方法、及び物体検出プログラム
KR20200076800A (ko) 출력 특징 맵의 0에 대한 연산을 스킵할 수 있는 합성곱 신경망의 연산 장치 및 그 동작 방법
US20230004810A1 (en) Parameter optimization device, parameter optimization method, and parameter optimization program
CN117475129A (zh) 检测框筛选及目标检测方法、装置、电子设备及存储介质
US20260023958A1 (en) Arithmetic processing device, arithmetic processing methods, and arithmetic processing program
US9818045B2 (en) Apparatus and method for detecting a feature in an image
CN113743602B (zh) 一种提高模型后处理速度的方法
CN112615910A (zh) 一种数据流连接优化方法、系统、终端以及存储介质
Gupta et al. Tabconv: Low-computation cnn inference via table lookups
JP6740920B2 (ja) 演算処理装置
CN116795326A (zh) 人工智能芯片检测计算方法
Graziosi et al. Edge computing optimization method. Analyzed task: Crowd counting
CN113963338B (zh) 针对图像中的文本识别的特征提取方法及装置
US20260065625A1 (en) Inference device and inference method
CN113383347A (zh) 信息处理装置、信息处理方法和信息处理程序
WO2026004004A1 (ja) 値域制御装置及び方法
CN119653028B (zh) 设备控制方法、装置、设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230623

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240326

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240522

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240716

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240909

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20241126

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20241209

R150 Certificate of patent or registration of utility model

Ref document number: 7613484

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350