JP7299770B2 - 演算処理装置及び演算処理方法 - Google Patents

演算処理装置及び演算処理方法 Download PDF

Info

Publication number
JP7299770B2
JP7299770B2 JP2019123135A JP2019123135A JP7299770B2 JP 7299770 B2 JP7299770 B2 JP 7299770B2 JP 2019123135 A JP2019123135 A JP 2019123135A JP 2019123135 A JP2019123135 A JP 2019123135A JP 7299770 B2 JP7299770 B2 JP 7299770B2
Authority
JP
Japan
Prior art keywords
memory
unit
characteristic
layer
feature
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
JP2019123135A
Other languages
English (en)
Other versions
JP2021009566A5 (ja
JP2021009566A (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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2019123135A priority Critical patent/JP7299770B2/ja
Priority to US16/916,507 priority patent/US11704546B2/en
Publication of JP2021009566A publication Critical patent/JP2021009566A/ja
Publication of JP2021009566A5 publication Critical patent/JP2021009566A5/ja
Application granted granted Critical
Publication of JP7299770B2 publication Critical patent/JP7299770B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

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

Description

本発明は、階層型ニューラルネットワークに入力データを入力して該階層型ニューラルネットワークの各階層における演算処理を行うことで、該階層における特徴面を算出する技術に関するものである。
Convolutional Neural Network(以下CNNと略記する)と呼ばれる階層的な演算手法が認識対象の変動に対して頑健なパターン認識を可能にする手法として注目されている。例えば、非特許文献1では様々な応用例・実装例が開示されている。
図9は、簡単なCNNのネットワーク構成例を示す図である。901は入力層であり、画像データに対してCNNによる処理を行う場合、所定サイズの画像データに相当する。903a~903dは第1階層908の特徴面、905a~905dは第2階層909の特徴面、907は第3階層910の特徴面を示す。特徴面とは、所定の特徴抽出演算(コンボリューション演算及び非線形処理)の処理結果に相当するデータ面である。特徴面は上位階層で所定の対象を認識するための特徴抽出結果に相当し、画像データに対する処理結果であるため、処理結果も面で表す。特徴面903a~903dは、入力層901に対応するコンボリューション演算と非線形処理により生成されるものである。例えば、特徴面903aは、9021aとして模式的に示す2次元のコンボリューション演算と演算結果の非線形変換により算出する。例えば、カーネル(係数マトリクス)サイズがcolumnSize×rowSizeのコンボリューション演算は以下の式(1)に示すような積和演算により処理する。
Figure 0007299770000001
input(x,y) : 座標(x、y)での参照画素値
output(x,y) : 座標(x、y)での演算結果
weight(column,row) : output(x、y)の演算に使用する重み係数
columnSize、rowSize : コンボリューションカーネルサイズ
L : 前階層の特徴マップの数
CNNによる処理では、複数のコンボリューションカーネルを画素単位で走査しながら積和演算を繰り返し、最終的な積和結果を非線形変換することで特徴面を算出する。なお、特徴面903aを算出する場合は、前階層との結合数が1であるため、コンボリューションカーネルは1つである。ここで、9021b、9021c、9021dはそれぞれ特徴面903b、903c、903dを算出する際に使用されるコンボリューションカーネルである。
図10は、特徴面905aを算出す場合の例を説明する図である。特徴面905aは、特徴面905aが属する第2階層909の前階層である第1階層908における特徴面903a~dと結合している。特徴面905aのデータを算出する場合、特徴面903aに対しては9041aで模式的に示すカーネルを用いたフィルタ演算を畳み込み演算処理部1001にて行い、該フィルタ演算の結果を累積加算器1002に保持する。特徴面903b、903c、904cに対してはそれぞれ9042a、9043a、9044aで示すカーネルのコンボリューション演算を畳み込み演算処理部1001にて行い、該フィルタ演算の結果を累積加算器1002に蓄積する。この4種類のコンボリューション演算の終了後、累積加算器1002により該4種類のコンボリューション演算の累積加算を行う。そして、該累積加算の結果に対して非線形変換処理部1003によりロジスティック関数や双曲正接関数(tanh関数)を利用した非線形変換処理を行う。
以上の処理を画像全体に対して1画素ずつ走査しながら行うことで、特徴面905aを算出する。同様に特徴面905bは前階層である第1階層908の特徴面に対して9041b/9042b/9043b/9044bで示す4つのカーネルのコンボリューション演算を行い、累積加算、非線形処理し、算出する。これは、特徴面905c、905dについても同様である。更に特徴面907は、前階層である第2階層909の特徴面905a~dに対して9061、9062、9063、9064で示す4つのカーネルのコンボリューション演算を用いて算出する。なお、各カーネル係数はパーセプトロン学習やバックプロパゲーション学習等の一般的な手法を用いて予め学習により決定されているものとする。
CNNを用いた演算を行うCNN処理ハードウェアを組み込みシステムに実装してネットワーク処理する場合、CNN処理ハードウェアは、階層毎に、入力データと重み係数とを用いた演算を行う。そしてCNN処理ハードウェアは、該演算の結果を次の階層の入力データとし、次の階層の重み係数との演算を行うことを繰り返し、最終的なパターン認識結果を得る。
CNNによる処理では、多数のコンボリューションを繰り返すために膨大な回数の積和演算が必要になり、そのためCNN処理ハードウェアは高速で処理を実行することが求められる。
特許第5368687 特開昭61-62187
Yann LeCun, Koray Kavukvuoglu and Clement Farabet: Convolutional Networks and Applications in Vision, Proc. International Symposium on Circuits and Systems (ISCAS'10), IEEE, 2010,
特許文献1の手法では、CNN処理ハードウェア内部にSRAMを備え、中間階層の特徴面903a~d、905a~dの一部または全てを格納する中間バッファとして使用する。中間バッファから読み出したデータをコンボリューション演算し、該コンボリューション演算により得られた処理結果を中間バッファへ格納する。中間バッファをSRAMで構成することでデータアクセス時間を削減し、処理効率を向上させている。
さらにデータアクセス時間を削減するために、一般的なフィルタ演算で必要になる複数ラインを別々のメモリに格納し、同時に読み出すことで高速化を図る技術が特許文献2などに開示されている。
このように、CNN処理ハードウェアは、積和演算を効率的に行うために、複数のデータを短いアクセス時間で同時に読み書きすることができるよう内部に複数のSRAMを備え、複数ラインを別々のメモリに格納し、処理する。
一方、CNN処理ハードウェアが出力するパターン認識結果は、後処理され、検出対象の位置座標が特定される。後処理は例えば、検出位置の精度を高めるための補正処理や、検出位置の抽出、重複した判別結果をマージする処理等が挙げられ、これらの処理により、誤検出を抑制し、出力されたパターン判別結果の精度を向上させることができる。後処理には柔軟性が求められるため、汎用CPUによる処理が適している。一般的にはCNN処理ハードウェアが出力した演算結果は、DMAC等で汎用CPUが使用する共有メモリに転送され、汎用CPUが処理する。そのため、共有メモリにデータを転送する時間が必要となり、処理性能が低下する、また、共有メモリに転送する際にバスを経由してデータを転送するので、バス帯域が逼迫するという課題がある。さらに、CNN処理ハードウェアのメモリと、共有メモリが別々に必要であるためコストがかかる課題がある。
本発明では、階層型ニューラルネットワークに入力データを入力して該階層型ニューラルネットワークの各階層における演算処理を行う場合に、処理性能を低下させずに処理を高速化させるとともに、コストの削減を可能にする技術を提供する。
本発明の一様態は、階層型ニューラルネットワークに入力データを入力して該階層型ニューラルネットワークの各階層における演算処理を行う演算処理装置であって、
前記各階層における特徴面を、該階層の前の階層の特徴面を参照して算出する演算部と、
前記演算部によって算出され、参照される特徴面を保持する複数のメモリを有する特徴面保持部と、
前記演算処理を行うそれぞれの階層に関する情報であるネットワーク情報に基づいて前記複数のメモリに前記演算部によって算出された特徴面を配置して書き込み、該複数のメモリから前記演算部によって参照される特徴面を読み出すメモリアクセス管理部と、
前記特徴面保持部がメモリ空間にアドレスマップされており、前記ネットワーク情報に基づいて該メモリ空間にアドレスマップされた特徴面の画素値のアドレスを算出し、該アドレスを用いて該特徴面保持部から画素値を読み出して処理するプロセッサと
を備えることを特徴とする。
本発明の構成によれば、共有メモリにデータを転送する必要がなく、処理性能を低下せせずに処理を高速化させることができる。さらには共有メモリを別途設ける必要がなく、コストを削減することができる。
認識処理部801のハードウェア構成例を示すブロック図。 画像処理システムの全体動作を示すフローチャート。 ステップS206における処理の詳細を示すフローチャート。 第1階層908と第2階層909の特徴面を特徴面保持部1021のメモリに割り当てる割り当て方法の一例を示す図。 図4に示した割り当て方法に従って割り当てられた各メモリの特徴面のアドレスの割り当て方法の一例を示す図。 ステップS307における処理のフローチャート。 CPU104のメモリマップの一部を示す図。 画像処理システムのハードウェア構成例を示すブロック図。 簡単なCNNのネットワーク構成例を示す図。 特徴面905aを算出す場合の例を説明する図。 認識処理部801の構成例を示すブロック図。
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
[第1の実施形態]
先ず、本実施形態に係る演算処理装置としての認識処理装置を利用した画像処理システムのハードウェア構成例について、図8のブロック図を用いて説明する。本実施形態に係る画像処理システムは、入力された画像データから特定の物体の領域を検出する機能を有する。
画像入力部800は、撮像を行うことで画像データを入力データとして取得する。画像データは動画像における各フレームの画像のデータであっても良いし、静止画像のデータであっても良い。画像入力部800は、光学系、CCD(Charge-Coupled Devices)又はCMOS(Complimentary Metal Oxide Semiconductor)センサ等の光電変換デバイス及びセンサを制御するドライバー回路/ADコンバータ/各種画像補正を司る信号処理回路/フレームバッファ等により構成される。
認識処理部801は、本実施形態に係る演算処理装置としての認識処理装置を含み、画像入力部800による画像データから特定の物体の領域を検出する。DMAC(Direct Memory Access Controller)805は、画像バス802上の各処理部と、CPUバス809上の各処理部と、の間のデータ転送を司る。
ブリッジ803は、画像バス802とCPUバス809のブリッジ機能を提供する。
前処理部804は、認識処理部801による認識処理を効果的に行うための各種の前処理を行う。具体的には、前処理部804は、画像入力部800が取得した画像データに対して色変換処理/コントラスト補正処理等の画像変換処理をハードウェアで処理する。
CPU806は、ROM807やRAM808に格納されているコンピュータプログラムやデータを用いて各種の処理を実行する。これによりCPU806は、画像処理システム全体の動作制御を行うと共に、画像処理システムが行うものとして後述する各処理を実行若しくは制御する。
ROM(Read Only Memory)807には、CPU806の動作を規定する命令を含むコンピュータプログラムやデータなどが格納されている。以下の説明において画像処理システムが既知の情報として取り扱う情報はROM807に格納されている。ROM807に格納されているデータには、認識処理部801を動作させるためのデータセット(階層型ニューラルネットワークの一例であるCNNに応じた動作パラメータと重み係数)も含まれている。このデータセットは、DMAC805を介して認識処理部801に入力される。
RAM808はROM807からロードされたコンピュータプログラムやデータを格納するためのエリア、画像入力部800が取得した画像データを保持するためのエリア、処理対象とするデータを一時的に保持するためのエリア、等を有する。またRAM808は、CPU806が各種の処理を実行する際に用いるワークエリアを有する。このようにRAM808は各種のエリアを適宜提供することができる。
画像入力部800が取得した画像データは前処理部804で前処理されて一端RAM808に格納され、DMAC805により認識処理部801に転送(入力)される。認識処理部801は、入力された前処理後の画像データに対して画素単位で所定の判別処理を行うことで、該画像データが表す画像中の特定の物体の領域を検出する。認識処理部801によって検出された領域に係る情報(画像中の該領域を規定する情報や該領域内の画像など)は、DMAC805によってRAM808に転送されて該RAM808に格納される。
次に、認識処理部801のハードウェア構成例について、図1のブロック図を用いて説明する。制御部101は、認識処理部801の全体を制御する。制御部101は内部にネットワーク情報保持部1011を有しており、該ネットワーク情報保持部1011にはネットワーク情報が設定(格納)される。DMAC805がROM807に予め格納されているネットワーク情報をネットワーク情報保持部1011に転送して設定する。ネットワーク情報は、処理する階層の数、階層の番号、階層毎の特徴面の情報(特徴面の幅、高さ、特徴面の数)、階層間の結合の情報(コンボリューションカーネルの水平サイズ、垂直サイズ)を含む。
また制御部101は、動作制御用のレジスタとしてイネーブルレジスタも備え、CPU806が処理開始を指示する。CPU806は複数階層の処理開始を制御部101へ指示し、制御部101は後述する特徴面格納部102、畳み込み演算部103へ階層単位の処理の開始を複数回指示する。制御部101は、処理の開始指示を示す制御信号と共にネットワーク情報保持部1011に設定(保持)されているネットワーク情報を、制御パラメータとして送信する。
生成した階層の特徴面に後処理を施す場合、特徴面格納部102及び畳み込み演算部103での階層単位の処理が完了すると、制御部101はネットワーク情報保持部1011に設定されているネットワーク情報をCPU104に制御パラメータとして送信する。そして制御部101は処理の開始指示を出す。
特徴面格納部102は、特徴面を格納するためのものであり、特徴面保持部1021と、特徴面保持部1021のデータの読み書きを制御するメモリアクセス管理部1022と、を備える。
特徴面保持部1021は、(N+1)個(Nは1以上の整数)のデュアルポートSRAM(メモリ0~メモリN)を有する。以下の説明では一例としてN=5とする。つまり、以下の説明では、特徴面保持部1021は6つのデュアルポートSRAM(メモリ0~メモリ5)を有するものとする。また、SRAMのデータ幅は4バイトとする。
メモリアクセス管理部1022は、デュアルポートSRAMのインターフェースのうちの片側1ポートを制御する。メモリアクセス管理部1022は、制御部101から受信する制御パラメータ(階層のネットワーク情報)に基づき、畳み込み演算部103の演算結果である各階層の生成された特徴面を6つのデュアルポートSRAMへどのように配置するか決定し、書き込む。また、メモリアクセス管理部1022は、参照特徴面を読み出して畳み込み演算部103へ送信する。そしてメモリアクセス管理部1022は、畳み込み演算部103から、生成する階層の全特徴面を受信すると、制御部101へ完了を通知する。
畳み込み演算部103は、畳み込み演算を行うものであり、フィルタカーネルサイズに応じた重み係数と参照特徴面を入力とし、演算結果として特徴面を出力する。DMAC805がROM807に予め配置された重み係数を畳み込み演算部103に転送する。畳み込み演算部103は、制御部101から制御パラメータとしてフィルタカーネルサイズを受信し、処理開始を指示されると演算処理を行い、生成する階層の全特徴面の演算処理が完了すると、制御部101へ完了を通知する。
CPU104は、特徴面の後処理を行う。CPU104は、画像バス802のバスマスタであり、メモリ空間に、後述するメモリ制御部105を介して特徴面保持部1021のメモリがアドレスマップされている。制御部101から処理開始指示を受信すると、処理対象の階層のネットワーク情報に基づいてデータを取得し、処理する。
メモリ制御部105は、特徴面保持部1021が有するデュアルポートSRAMに対するデータの読み書きを制御するものであり、特徴面保持部1021の6つのデュアルポートSRAMのインターフェースのうちの片側1ポートを制御する。またメモリ制御部105は画像バス802のバススレーブであり、バスマスタから要求を受け、メモリに対するデータの読み書きを行う。
次に、画像処理システムの全体動作について、図2のフローチャートに従って説明する。ステップS202では、CPU806は、画像入力部800を介して画像データ(入力データ)を取得する。ステップS203では、前処理部804は、ステップS202で取得した画像データに対して前処理を施し、RAM808に格納する。
ステップS204では、CPU806はDMAC805に、ROM807に格納されている処理対象の階層のデータセットの開始位置アドレスを設定して起動する。処理対象の階層は1つであっても複数であってもよい。これによりDMAC805は、設定された開始アドレスから処理対象の階層のデータセットを読み出して転送する。
転送完了後、ステップS205では、再びCPU806は、DMAC805にRAM808の前処理後のデータの開始位置アドレスを設定して起動する。これによりDMAC805は、設定された開始アドレスから前処理後のデータを読み出して転送する。
ステップS206では、CPU806は、認識処理部801を起動するので、認識処理部801は処理を実行する。認識処理部801の処理が完了すると、該処理の結果(検出結果や中間階層の特徴データ)が再度RAM808に格納される。
ステップS207では、CPU806は、全階層の処理が完了したか否かを判断する。この判断の結果、全階層の処理が完了した場合には、図2のフローチャートに従った処理は終了する。一方、未だ処理が完了していない階層が残っている場合には、処理はステップS204に進み、未だ処理が完了していない階層についてステップS204以降の処理を行う。
組み込み機器向けの小規模なニューラルネットワークでは、全階層を一度に処理することが可能であるため、この場合はステップS207では「全階層の処理は完了した」と判断して、図2のフローチャートに従った処理は終了する。一方、大規模なニューラルネットワークでは、一度にすべての階層を処理することができないため、ニューラルネットワークを時分割で処理することとなる。この場合、ステップS207では、時分割で行っている処理が未だ施されていない階層が残っている場合には、処理はステップS204に進み、残りの階層の処理を実施する。2回目以降のステップS205の処理は、RAM808に格納した認識処理部801の処理結果を処理対象のデータとして転送する。
次に、上記のステップS206における処理の詳細について、図3のフローチャートに従って説明する。制御部101が全体を制御する。ステップS205の処理が完了した時点で、認識処理部801の処理対象の階層に関する情報はネットワーク情報保持部1011に設定されている。
ステップS302では、制御部101は、ネットワーク情報保持部1011に保持された情報を、階層単位で特徴面格納部102、畳み込み演算部103に対して制御パラメータとして送信し、処理開始指示を出す。
ステップS303では、特徴面格納部102は、入力層の処理であるか否かを判定する。この判定の結果、入力層の処理である場合には、処理はステップS304に進み、入力層以外の階層の処理である場合には、処理はステップS305に進む。
ステップS304では、特徴面格納部102は、画像データを参照特徴面として出力する。一方、ステップS305では、特徴面格納部102は、前階層の特徴面を特徴面保持部1021から読み出し、参照特徴面として出力する。
ステップS306では、畳み込み演算部103は、参照特徴面と重み係数に基づき畳み込み演算を行い、演算結果を特徴面格納部102に送信する。ステップS307では、メモリアクセス管理部1022は、生成された特徴面のメモリ配置を決定し、該決定されたメモリ配置に従って特徴面を特徴面保持部1021に格納する。メモリ配置の詳細については、図4~6を用いて後述する。
次に、ステップS308では、特徴面格納部102は全特徴面の生成が完了したか否かを判定する。この判定の結果、全特徴面の生成が完了した場合には、処理はステップS309に進む。一方、未だ生成が完了していない特徴面が残っている場合には、処理はステップS303に進み、未だ生成が完了していない特徴面についてステップS303以降の処理を行う。
ステップS309では、特徴面格納部102および畳み込み演算部103は制御部101に対して完了通知を出す。そして制御部101は完了通知を受けると、最終階層の処理が完了したか否かを判定する。
この判定の結果、最終階層の処理が完了した場合には、処理はステップS310に進む。一方、最終階層の処理がまだ完了していない場合には、処理はステップS302に進み、さらに制御部101は次の階層の処理を指示する。
ステップS310では、制御部101は最終階層の処理が完了すると、CPU104に最終階層の番号等のネットワーク情報を与え、処理開始指示を出す。CPU104はネットワーク情報に基づき、最終階層の特徴面を読み出し、位置座標を特定し、処理を終了する。ステップS310の処理の詳細(ステップS3101~ステップS3104)については後述する。
次に、図4~6を用いて、メモリアクセス管理部1022が制御するメモリ配置について説明する。図4は、図9の第1階層908と第2階層909の特徴面を特徴面保持部1021のメモリに割り当てる割り当て方法の一例を示す図である。
特徴面格納部102の特徴面は、階層を単位に複数のメモリにインターリーブする。また、特徴面格納部102の特徴面は、ラインを単位に複数のメモリにインターリーブする。
図9の左側には、第1階層908の特徴面903a~d、第2階層909の特徴面905a~dの画素値を示している。特徴面903aの左上隅の位置を(0,0)としたときの位置(x、y)における特徴面903aの画素値をa(x、y)と表している。特徴面903bの左上隅の位置を(0,0)としたときの位置(x、y)における特徴面903bの画素値をb(x、y)と表している。特徴面903cの左上隅の位置を(0,0)としたときの位置(x、y)における特徴面903cの画素値をc(x、y)と表している。特徴面903cの左上隅の位置を(0,0)としたときの位置(x、y)における特徴面903cの画素値をc(x、y)と表している。特徴面905aの左上隅の位置を(0,0)としたときの位置(x、y)における特徴面905aの画素値をa(x、y)と表している。特徴面905bの左上隅の位置を(0,0)としたときの位置(x、y)における特徴面905bの画素値をb(x、y)と表している。特徴面905cの左上隅の位置を(0,0)としたときの位置(x、y)における特徴面905cの画素値をc(x、y)と表している。特徴面905dの左上隅の位置を(0,0)としたときの位置(x、y)における特徴面905dの画素値をd(x、y)と表している。
図4では、第1階層908の特徴面の水平方向のサイズは32画素、垂直方向のサイズは32画素としており、第2階層909の特徴面の水平方向のサイズは16画素、垂直方向のサイズは16画素としている。1座標の画素値のデータは1バイトとする。図4の右側には、各特徴面をメモリに割り当てる方法の一例を示している。
特徴面保持部1021が有するメモリ群を2つのグループに分け、一方のグループを第1のメモリ群、他方のグループを第2のメモリ群とする。本実施形態では、特徴面保持部1021は6つのデュアルポートSRAM(メモリ0~メモリ5)を有するので、メモリ0~メモリ2を第1のメモリ群、メモリ3~メモリ5を第2のメモリ群とする。そして階層ごとに特徴面を、第1のメモリ群、第2のメモリ群の順に交互に配置する。これにより、入力特徴面と出力特徴面を別のメモリに配置し、読み出しと書き込みを同時に行うことができ、高速に処理を行うことができる。さらに、1枚の特徴面をライン(Y座標が同一の画素群をラインと呼ぶ)毎に異なるメモリに割り当てる。つまり、本実施形態の場合、特徴面の連続する3ラインが異なるメモリに配置される。これにより、コンボリューションカーネルのサイズが3×3以下のときは畳み込み演算部103に入力する参照特徴面の画素を同時に読み出すことができ、高速に処理ができる。コンボリューションカーネルサイズが3×3より大きいときは2サイクルで読み出すことができる。
上述の説明に従い、図4の右側に示すように、第1階層908の特徴面903a~dには1ライン毎に、メモリ0、メモリ1、メモリ2を交互に割り当てる。特徴面903aの最終ラインに割り当てたメモリはメモリ1であるので、特徴面903bの1ライン目には次のメモリであるメモリ2を割り当てる。メモリを効率的に使用するために、特徴面を跨ぐときにも、連続するラインと同様にメモリを割り当てる。同様に特徴面903cにもラインごとにメモリ1、メモリ2、メモリ0を交互に割り当て、特徴面903dにもラインごとにメモリ0、メモリ1、メモリ2を交互に割り当てる。
第2階層909の特徴面905a~dには1ライン毎に、メモリ3、メモリ4、メモリ5を交互に割り当てる。特徴面905aの最終ラインに割り当てたメモリはメモリ3であるので、特徴面905bの1ライン目には次のメモリであるメモリ4を割り当てる。メモリを効率的に使用するために、特徴面を跨ぐときにも、連続するラインと同様にメモリを割り当てる。同様に特徴面905cにもラインごとにメモリ3、メモリ4、メモリ5を交互に割り当て、特徴面905dにもラインごとにメモリ3、メモリ4、メモリ5を交互に割り当てる。
図5は、図4に示した割り当て方法に従って割り当てられた各メモリの特徴面のアドレスの割り当て方法の一例を示す図である。メモリはデータ幅4バイトであるから、1アドレスに4画素のデータを格納することになる。x座標が小さい画素から順に下位バイトに詰めるものとする。
メモリ0には、アドレス0~0x7に特徴面903aの1ライン目の画素の画素値、アドレス0x8~0xfに4ライン目の画素の画素値、アドレス0x10~0x17に7ライン目の画素の画素値…と3ラインオフセットの32画素の画素値を格納する。この32画素の画素値のデータサイズは32バイトである。
特徴面903aの11ライン分の画素値を格納後、次のアドレス0x58から特徴面903bの2ライン目の画素の画素値を格納する。同様に、特徴面903c、特徴面903dについても画素値を格納する。メモリ1には、アドレス0~0x7に903aの2ライン目のデータから順に3ラインオフセットで32画素を格納し、続いて、特徴面903b~dについても画素値を格納する。メモリ2にも同様に特徴面903a~dの画素値を格納する。メモリ3~5にも、それぞれ同様に、第2階層908の特徴面905a~dの3ラインオフセットの16画素の画素値(16バイト)を格納する。
次に、上記のステップS307にて、メモリアクセス管理部1022が特徴面番号nの特徴面の座標(x、y)における画素値を格納するメモリと、そのアドレスを決定する方法について、図6のフローチャートに従って説明する。
ステップS302では、制御部101は、制御パラメータとして処理対象及び生成対象の階層の階層番号、特徴面の水平サイズw、垂直サイズh、特徴面数、を階層単位で特徴面格納部102、畳み込み演算部103に対して送信する。畳み込み演算部103は、全特徴面のデータをラスタ順に出力するものとする。畳み込み演算部103が出力すると図6のフローチャートに従った処理が開始される。
ステップS602では、メモリアクセス管理部1022は、特徴面番号n、座標(x、y)の全特徴面のラインの通し番号LをL=(n-1)×h+yを計算することで求める。
ステップS603では、メモリアクセス管理部1022は、通し番号Lを特徴面保持部1021のメモリ数に応じて剰余演算することで、格納先メモリ番号memを決定する。つまりメモリアクセス管理部1022は、mem=mod(L,(メモリ数/2))を計算することで、格納先メモリ番号memを求める。
mem=0の場合(剰余演算結果が0のとき)、処理はステップS604に進む。ステップS604では、メモリアクセス管理部1022は、生成対象の階層の階層番号が奇数か否かを判定し、奇数の場合は処理はステップS605に進み、偶数の場合はステップS606に進む。ステップS605ではメモリアクセス管理部1022は、画素値をメモリ0へ格納し、ステップS606ではメモリアクセス管理部1022は、画素値をメモリ3へ格納する。
mem=1の場合(剰余演算結果が1のとき)、処理はステップS607に進む。ステップS607では、メモリアクセス管理部1022は、生成対象の階層の階層番号が奇数か否かを判定し、奇数の場合は処理はステップS608に進み、偶数の場合はステップS609に進む。ステップS608ではメモリアクセス管理部1022は、画素値をメモリ1へ格納し、ステップS609ではメモリアクセス管理部1022は、画素値をメモリ4へ格納する。
mem=2の場合(剰余演算結果が2のとき)、処理はステップS610に進む。ステップS610では、メモリアクセス管理部1022は、生成対象の階層の階層番号が奇数か否かを判定し、奇数の場合は処理はステップS611に進み、偶数の場合はステップS612に進む。ステップS611ではメモリアクセス管理部1022は、画素値をメモリ2へ格納し、ステップS612ではメモリアクセス管理部1022は、画素値をメモリ5へ格納する。
このように画素値の格納先を決定することで、奇数番号の階層から偶数番号の階層を生成するとき、参照特徴面を読み出すメモリと生成特徴面を書き出すメモリが別々となる。同様に偶数番号の階層から奇数番号の階層を生成するとき、参照特徴面を読み出すメモリと生成特徴面を書き出すメモリが別々となる。また、生成特徴面はラインの通し番号順に1ラインずつ異なるメモリに格納することになり、参照特徴面として読み込むときに複数ラインが同時に読み込める。
そしてステップS613では、メモリアクセス管理部1022は、メモリのアドレスを算出する。1ラインの先頭画素を格納するアドレスA0については、A0=L/(メモリ数/2)×w/4を計算することで求め、アドレスA1については、A0+x/4を計算することで求める。
次に、上記のステップS310における処理の詳細について説明する。図7はCPU104のメモリマップの一部を示す図である。メモリ0~5はそれぞれ8KBのメモリとし、特定のベースアドレスから48KBの連続した領域に割り当てる。メモリ0の先頭アドレスは0番地、メモリ1以降の先頭アドレスは0x2000番地ずつ加算される。
メモリ制御部105は、アクセス要求のアドレスに応じてメモリのチップセレクトを選択する。例えば、0番地から0x1FFF番地へのアクセス要求はメモリ0のチップセレクトを、0x2000番地から0x3FFF番地へのアクセス要求はメモリ1のチップセレクトを選択する。また、メモリのアドレスはアクセス要求のアドレスの[13:2]とする。
ステップS3101では、CPU104は、ネットワーク情報を取得する。制御部101が制御パラメータとして最終階層の階層番号、特徴面の水平サイズw、垂直サイズh、特徴面数を引き渡し、CPU104はこの制御パラメータを参照する。
次に、ステップS3102では、特徴面番号n、座標(x、y)の特徴面の画素値を読み出すために図6のフローチャートに従った処理が実行され、格納メモリとアドレスA1が特定される。ここでは、図6のフローチャートに従った処理はCPU104が行っても良いし、メモリアクセス管理部1022が行っても良い。
そしてステップS3103では、CPU104は、ステップS3102で特定された格納メモリとアドレスA1から、以下のような変換処理を行うことで、メモリマップ上のアドレスを取得する。
格納メモリがメモリ0のとき、アドレス=A1×4
格納メモリがメモリ1のとき、アドレス=A1×4+0x2000
格納メモリがメモリ2のとき、アドレス=A1×4+0x4000
格納メモリがメモリ3のとき、アドレス=A1×4+0x6000
格納メモリがメモリ4のとき、アドレス=A1×4+0x8000
格納メモリがメモリ5のとき、アドレス=A1×4+0xa000
そしてステップS3104ではCPU104は、変換後のアドレスでメモリ制御部105にアクセス要求を出し、該アクセス要求に応じて読み出された特徴面の画素値を取得し、位置座標を特定する。
このように、本実施形態によれば、共有メモリにデータ転送する時間をなくし、かつ、バス帯域を削減することができる。また、CNNの処理を行うハードウェア(CNN処理ハードウェア)のメモリは、CPUのアドレスマップドメモリとなる。そのため、CNN処理ハードウェアが動作しないときはCPUのワークメモリとして使用することもでき、ワークメモリを別途設ける必要がなく、コストを削減できる。
[第2の実施形態]
以下では第1の実施形態との差分について説明し、以下で特に触れない限りは第1の実施形態と同様であるものとする。本実施形態に係る認識処理部801の構成例について、図11のブロック図を用いて説明する。
本実施形態では、メモリマップ上の48KBの連続した領域に、先頭アドレス0番地から順に、処理対象の階層の特徴面がラスタ順に連続して格納されているものとして扱う。つまり、特徴面の水平サイズw、垂直サイズhに応じて、特徴面番号n、座標(x、y)の特徴面のデータのメモリマップ上のアドレスA2は以下の式で決定する。
A2=w×h×n(特徴面オフセット)+y×w(ラインオフセット)+x
メモリ制御部1051は、SRAMインターフェースは1つ(チップセレクトは1つ)であるという構成の元、アクセス要求アドレスをそのままSRAMのアドレス信号とする。SRAMインターフェースはメモリアクセス管理部1024に接続される。ステップS310にてA2へのSRAMアクセスがそのままメモリアクセス管理部1024に通知される。
特徴面保持部1023はシングルポートSRAMとする。メモリアクセス管理部1024は、メモリ制御部1051のSRAMインターフェースからアクセス要求があるとき、そのアドレスと特徴面の水平サイズw、垂直サイズh、階層番号から、特徴面番号n、座標(x、y)を特定する。そして図6のフローチャートに従って格納先メモリとアドレスを決定してメモリからデータを読み込む。リードデータは、メモリ制御部1051へ出力する。
このように、本実施形態では、CNN処理ハードウェアが出力した演算結果に対して後処理するCPU104が、特徴面の水平サイズ、垂直サイズに応じ、メモリマップ上の特定アドレスへのアクセス要求を出す。メモリアクセス管理部1024が中間層および最終層の特徴面を格納するメモリのインターフェースから直接読み出すことで、第1の実施形態と同様の効果を得ることができる。なお、汎用CPU、アドレスマップドメモリとしてそれぞれ、認識処理部801の外部にあるCPU806、RAM808を使用しても良い。
なお、上記の各実施形態では、図1,11に示した全ての機能部をハードウェアで実装したケースについて説明した。しかし、図1,11に示した機能部のうち一部の機能部をソフトウェア(コンピュータプログラム)で実装しても良い。この場合、このコンピュータプログラムはROM807等のメモリに格納され、CPU806等のプロセッサがこのコンピュータプログラムを実行することで、対応する機能部の機能を実現させることができる。
なお、上記の説明において使用した具体的な数値は、具体的な説明を行うために使用したものであって、上記の各実施形態がこれらの数値に限定されることを意図したものではない。なお、以上説明した各実施形態の一部若しくは全部を適宜組み合わせても構わない。また、以上説明した各実施形態の一部若しくは全部を選択的に用いても構わない。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
101:制御部 102:特徴面格納部 1021:特徴面保持部 1022:メモリアクセス管理部 103:畳み込み演算部 104:CPU 105:メモリ制御部

Claims (8)

  1. 階層型ニューラルネットワークに入力データを入力して該階層型ニューラルネットワークの各階層における演算処理を行う演算処理装置であって、
    前記各階層における特徴面を、該階層の前の階層の特徴面を参照して算出する演算部と、
    前記演算部によって算出され、参照される特徴面を保持する複数のメモリを有する特徴面保持部と、
    前記演算処理を行うそれぞれの階層に関する情報であるネットワーク情報に基づいて前記複数のメモリに前記演算部によって算出された特徴面を配置して書き込み、該複数のメモリから前記演算部によって参照される特徴面を読み出すメモリアクセス管理部と、
    前記特徴面保持部がメモリ空間にアドレスマップされており、前記ネットワーク情報に基づいて該メモリ空間にアドレスマップされた特徴面の画素値のアドレスを算出し、該アドレスを用いて該特徴面保持部から画素値を読み出して処理するプロセッサと
    を備えることを特徴とする演算処理装置。
  2. 前記ネットワーク情報は、階層ごとの特徴面の幅および高さ、特徴面の数、を含むことを特徴とする請求項1に記載の演算処理装置。
  3. 前記メモリは前記それぞれの階層のうち中間層または最終層の特徴面を格納し、前記プロセッサは中間層または最終層の特徴面を処理することを特徴とする請求項1に記載の演算処理装置。
  4. 前記プロセッサは前記ネットワーク情報と前記メモリアクセス管理部の情報に基づき前記アドレスを算出することを特徴とする請求項1に記載の演算処理装置。
  5. 前記メモリアクセス管理部は、前記特徴面保持部の特徴面、階層を単位に複数のメモリにインターリーブさせて配置することを特徴とする請求項1に記載の演算処理装置。
  6. 前記メモリアクセス管理部は、前記特徴面保持部の特徴面、ラインを単位に複数のメモリにインターリーブさせて配置することを特徴とする請求項1に記載の演算処理装置。
  7. 前記メモリアクセス管理部は、前記プロセッサのアクセス要求アドレスに基づき、前記メモリの格納先を算出し、データを読み出し、返すことを特徴とする請求項1に記載の演算処理装置。
  8. 階層型ニューラルネットワークに入力データを入力して該階層型ニューラルネットワークの各階層における演算処理を行う演算処理装置が行う演算処理方法であって、
    前記演算処理装置は、
    前記各階層における特徴面を、該階層の前の階層の特徴面を参照して算出する演算部と、
    前記演算部によって算出され、参照される特徴面を保持する複数のメモリを有する特徴面保持部と、
    前記メモリに対する読み書きを管理するメモリアクセス管理部と、
    前記特徴面保持部へアクセスするプロセッサと
    を備え、
    前記メモリアクセス管理部は、前記演算処理を行うそれぞれの階層に関する情報であるネットワーク情報に基づいて、前記複数のメモリに前記演算部によって算出された特徴面を配置して書き込み、該複数のメモリから前記演算部によって参照される特徴面を読み出し、
    前記特徴面保持部がメモリ空間にアドレスマップされており、前記プロセッサは、前記ネットワーク情報に基づいてメモリ空間にアドレスマップされた特徴面の画素値のアドレスを算出し、該アドレスを用いて該特徴面保持部から画素値を読み出して処理することを特徴とする演算処理方法。
JP2019123135A 2019-07-01 2019-07-01 演算処理装置及び演算処理方法 Active JP7299770B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019123135A JP7299770B2 (ja) 2019-07-01 2019-07-01 演算処理装置及び演算処理方法
US16/916,507 US11704546B2 (en) 2019-07-01 2020-06-30 Operation processing apparatus that calculates addresses of feature planes in layers of a neutral network and operation processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019123135A JP7299770B2 (ja) 2019-07-01 2019-07-01 演算処理装置及び演算処理方法

Publications (3)

Publication Number Publication Date
JP2021009566A JP2021009566A (ja) 2021-01-28
JP2021009566A5 JP2021009566A5 (ja) 2022-07-11
JP7299770B2 true JP7299770B2 (ja) 2023-06-28

Family

ID=74066056

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019123135A Active JP7299770B2 (ja) 2019-07-01 2019-07-01 演算処理装置及び演算処理方法

Country Status (2)

Country Link
US (1) US11704546B2 (ja)
JP (1) JP7299770B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6970827B2 (ja) * 2018-06-25 2021-11-24 オリンパス株式会社 演算処理装置
JP7278150B2 (ja) * 2019-05-23 2023-05-19 キヤノン株式会社 画像処理装置、撮像装置、画像処理方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017168174A (ja) 2016-03-18 2017-09-21 力晶科技股▲ふん▼有限公司 半導体記憶装置とそのアドレス制御方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6162187A (ja) 1984-09-03 1986-03-31 Fuji Xerox Co Ltd 画像処理装置
JP5368687B2 (ja) 2007-09-26 2013-12-18 キヤノン株式会社 演算処理装置および方法
JP6700712B2 (ja) * 2015-10-21 2020-05-27 キヤノン株式会社 畳み込み演算装置
US9665799B1 (en) 2016-01-29 2017-05-30 Fotonation Limited Convolutional neural network
JP6964969B2 (ja) * 2016-09-30 2021-11-10 キヤノン株式会社 演算処理装置、演算処理方法及びプログラム
JP6945986B2 (ja) * 2016-10-28 2021-10-06 キヤノン株式会社 演算回路、その制御方法及びプログラム
WO2018103736A1 (en) * 2016-12-09 2018-06-14 Beijing Horizon Information Technology Co., Ltd. Systems and methods for data management
JP6936592B2 (ja) * 2017-03-03 2021-09-15 キヤノン株式会社 演算処理装置およびその制御方法
US10558386B2 (en) 2017-09-22 2020-02-11 Kabushiki Kaisha Toshiba Operation device and operation system
JP2019207458A (ja) 2018-05-28 2019-12-05 ルネサスエレクトロニクス株式会社 半導体装置及びメモリアクセス設定方法
US11443185B2 (en) * 2018-10-11 2022-09-13 Powerchip Semiconductor Manufacturing Corporation Memory chip capable of performing artificial intelligence operation and method thereof

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017168174A (ja) 2016-03-18 2017-09-21 力晶科技股▲ふん▼有限公司 半導体記憶装置とそのアドレス制御方法

Also Published As

Publication number Publication date
US20210004667A1 (en) 2021-01-07
JP2021009566A (ja) 2021-01-28
US11704546B2 (en) 2023-07-18

Similar Documents

Publication Publication Date Title
JP6945986B2 (ja) 演算回路、その制御方法及びプログラム
US11699067B2 (en) Arithmetic processing apparatus and control method therefor
US9135553B2 (en) Convolution operation circuit and object recognition apparatus
JP7299770B2 (ja) 演算処理装置及び演算処理方法
JP6800656B2 (ja) 演算回路、その制御方法及びプログラム
CN110738308A (zh) 一种神经网络加速器
JP7308674B2 (ja) 演算処理装置及び演算処理方法
JP6532334B2 (ja) 並列演算装置、画像処理装置及び並列演算方法
WO2022160704A1 (zh) 一种图像处理方法、装置、计算机设备及存储介质
US11775809B2 (en) Image processing apparatus, imaging apparatus, image processing method, non-transitory computer-readable storage medium
JP7391553B2 (ja) 情報処理装置、情報処理方法、及びプログラム
JP7410961B2 (ja) 演算処理装置
US6809422B2 (en) One-chip image processing apparatus
JP4970378B2 (ja) メモリコントローラおよび画像処理装置
JP7297468B2 (ja) データ処理装置及びその方法
CN115242990A (zh) 图像传感器模块和操作图像传感器模块的方法
US8503793B2 (en) Correlation processing apparatus and medium readable by correlation processing apparatus
US20230334820A1 (en) Image processing apparatus, image processing method, and non-transitory computer-readable storage medium
US11748862B2 (en) Image processing apparatus including neural network processor and method of operation
US20220392207A1 (en) Information processing apparatus, information processing method, and non-transitory computer-readable storage medium
JP4865021B2 (ja) 画像処理装置および画像処理方法
US6489967B1 (en) Image formation apparatus and image formation method
JP6929734B2 (ja) 判別演算装置、判別演算方法及びプログラム
CN117422608A (zh) 图像引导滤波方法及系统
JP6319420B2 (ja) 情報処理装置、デジタルカメラおよびプロセッサ

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20210103

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220701

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220701

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: 20230519

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230517

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230616

R151 Written notification of patent or utility model registration

Ref document number: 7299770

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151