JP2023159945A - 情報処理装置、情報処理方法、情報処理プログラム、ソフトウェア作成装置、ソフトウェア作成方法、及びソフトウェア作成プログラム - Google Patents
情報処理装置、情報処理方法、情報処理プログラム、ソフトウェア作成装置、ソフトウェア作成方法、及びソフトウェア作成プログラム Download PDFInfo
- Publication number
- JP2023159945A JP2023159945A JP2022069885A JP2022069885A JP2023159945A JP 2023159945 A JP2023159945 A JP 2023159945A JP 2022069885 A JP2022069885 A JP 2022069885A JP 2022069885 A JP2022069885 A JP 2022069885A JP 2023159945 A JP2023159945 A JP 2023159945A
- Authority
- JP
- Japan
- Prior art keywords
- processing
- data
- convolution
- activation function
- software
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 327
- 238000000034 method Methods 0.000 title claims description 115
- 230000010365 information processing Effects 0.000 title claims description 34
- 230000006870 function Effects 0.000 claims abstract description 88
- 238000013528 artificial neural network Methods 0.000 claims abstract description 74
- 230000004913 activation Effects 0.000 claims abstract description 72
- 238000003672 processing method Methods 0.000 claims description 5
- 238000013459 approach Methods 0.000 claims description 2
- 238000001994 activation Methods 0.000 description 34
- 238000010586 diagram Methods 0.000 description 34
- 238000004364 calculation method Methods 0.000 description 30
- 238000012546 transfer Methods 0.000 description 10
- 238000007796 conventional method Methods 0.000 description 5
- 230000000052 comparative effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005401 electroluminescence Methods 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Algebra (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Databases & Information Systems (AREA)
- Image Analysis (AREA)
- Complex Calculations (AREA)
Abstract
【課題】ニューラルネットワーク処理の処理時間を短縮する。【解決手段】情報処理装置は、プロセッサとメモリとを有する。プロセッサは、複数の入力データと複数の重みデータの間の積和演算を行って複数の中間データを生成する畳み込み処理と、複数の中間データを入力とする所定の関数の値を計算して複数の出力データを生成する活性化関数処理と、を含むニューラルネットワーク処理を実行する。プロセッサは、活性化関数処理を、畳み込み処理のループ処理内で実行する。【選択図】図5
Description
本発明は、情報処理装置、情報処理方法、情報処理プログラム、ソフトウェア作成装置、ソフトウェア作成方法、及びソフトウェア作成プログラムに関する。
人間の脳の神経細胞の構造を模したニューラルネットワークを用いて情報処理を行うニューラルネットワーク処理装置の第1の従来例として、特許文献1に記載されたものがある。このニューラルネットワーク処理装置は、複数の入力データと複数の重みデータの間の積和演算を行い複数の中間データを生成する畳み込み処理と、複数の中間データを入力として予め定められた関数を計算し複数の出力データを生成する活性化関数処理を実行するレイヤを複数組み合わせて画像等の認識を行う。また、この従来例にはGPU(Graphics Processing Unit)と呼ばれる多数の演算器を内蔵した回路を使用して畳み込み処理を高速に実行することが記載されている。
また、ニューラルネットワーク処理装置の第2の従来例として、特許文献2に記載されたものがある。このニューラルネットワーク処理装置は、行列演算部と活性化関数演算部を有する専用の推論演算部を設けることで高速に処理を行うことを可能としている。
ニューラルネットワーク処理装置は、例えば自動車の自動運転装置でカメラで撮影した周囲の画像の認識処理を行うなど、演算リソースの限られた環境で使用する用途が増加している。また、自動車の自動運転装置などでは周囲の広い範囲に対する認識処理が必要なうえ、認識結果の誤りが事故に直結する可能性があるため、高い認識精度が求められる。その様な背景から、ニューラルネットワーク処理は複雑な構成となってきていおり、かつ、多数の画像に対する認識処理を行う必要があるため、演算量が膨大となる。限られた演算リソースで膨大な演算量の処理を行うと処理時間が期待されるものより多くなり、必要な処理性能が得られないという問題がある。
上記第1の従来例はGPUを用いて処理時間を短縮しているが、汎用のハードウェア上のソフトウェアの処理では処理時間短縮の効果は限定的であり、必要な処理性能を達成できないケースが多い。上記第2の従来技術は専用の推論演算部を設けていることから、GPUを使用するより処理時間を短縮できる可能性があるが、専用の推論演算部を開発するためには膨大な開発コストがかかるため、出荷数量の少ない装置に適用するのは困難である。従って、汎用のハードウェア上のソフトウェアでニューラルネットワーク処理を行う場合の処理時間を短縮したいというニーズがある。
本発明はこの様な状況に対応するため、ニューラルネットワーク処理の処理時間を短縮することを目的とする。
上述した課題を解決するため、本発明の情報処理装置は、プロセッサとメモリとを有する情報処理装置であって、前記プロセッサは、複数の入力データと複数の重みデータの間の積和演算を行って複数の中間データを生成する畳み込み処理と、前記複数の中間データを入力とする所定の関数の値を計算して複数の出力データを生成する活性化関数処理と、を含むニューラルネットワーク処理を実行し、前記活性化関数処理を、前記畳み込み処理のループ処理内で実行することを特徴とする。
本発明によれば、中間データの容量が削減されるため、中間データをプロセッシングユニットの内部に格納することが可能となり、プロセッシングユニットと外部メモリとの間のデータ転送が削減されるため、ニューラルネットワーク処理の処理時間を短縮することができる。
以下、図面を参照して本願開示に係る実施形態を説明する。以下の実施形態は、図面も含め本発明を説明するための例示であって、説明の明確化のため、適宜、省略及び簡略化がなされている。本発明は、他の種々の形態でも実施することが可能である。特に限定しない限り、各構成要素は単数でも複数でもよい。
以下の実施形態において、プログラムによって実行される処理を説明する場合がある。サーバやクライアントといった計算機は、プロセッサ(例えばCPU(Central Processing Unit)、GPU)によりプログラムを実行し、記憶資源(例えばメモリ)やインターフェースデバイス(例えば通信ポート)等を用いながら、プログラムで定められた処理ステップを行う。そのため、プログラムを実行して行う処理の主体を、プロセッサとしてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードでもよい。プログラムを実行して行う処理の主体は、演算部であればよく、特定の処理を行う専用回路を含んでいてもよい。ここで、専用回路とは、例えばFPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)、CPLD(Complex Programmable Logic Device)、量子コンピュータ等である。
プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記憶メディアでもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、実施形態において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
以下の実施形態において、「YYY(処理)部」、「YYYステップ」、及び「YYY手順」は、装置(またはシステム)、方法、及びプログラムの異なるカテゴリのそれぞれ対応する構成要素である。例えば“YYYステップ”を実行するプロセッサ又はコンピュータは、“YYY処理部”に対応する。また、プロセッサ又はコンピュータに実行させた“YYY手順”は、“YYYステップ”に対応する。
以下の実施形態において、同一あるいは同様の機能を有する構成要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。また、これらの複数の構成要素を区別する必要がない場合には、添字を省略して説明する場合がある。
以下の実施形態においては、「ソフトウェア」は、プログラム及びライブラリなどのその他のファイルを含むコンポーネントであっても、プログラムそのものであってもよい。
[実施形態1]
(実施形態1に係る情報処理装置10の構成)
図1は、実施形態1に係る情報処理装置10の構成を示す図である。情報処理装置10は、マイクロプロセッサ11、ROM(Read Only Memory)12、RAM(Random Access Memory)13,15、及びGPU14を含んで構成される。
(実施形態1に係る情報処理装置10の構成)
図1は、実施形態1に係る情報処理装置10の構成を示す図である。情報処理装置10は、マイクロプロセッサ11、ROM(Read Only Memory)12、RAM(Random Access Memory)13,15、及びGPU14を含んで構成される。
マイクロプロセッサ11は、CPU11a、及びインタフェース回路11b1,11b2,11b3,11b4,11b5を含んで構成される。
ROM12は、インタフェース回路11b1を介してマイクロプロセッサ11と接続される。RAM13は、インタフェース回路11b2を介してマイクロプロセッサ11と接続される。GPU14は、RAM15と接続される。また、GPU14は、インタフェース回路11b3を介してマイクロプロセッサ11と接続される。
カメラ111a,111bは、インタフェース回路11b4を介してマイクロプロセッサ11と接続される。ディスプレイ装置112は、インタフェース回路11b5を介してマイクロプロセッサ11と接続される。
情報処理装置10は、カメラ111a,111bから画像データを入力し、ニューラルネットワーク処理による認識を行った後、認識結果をディスプレイ装置112に表示する。認識結果は、スピーカから音声出力されても良い。なお、本実施形態では画像認識を行う例を示すが、画像認識に限定されず、音声認識などの他のニューラルネットワーク処理全般に適用が可能である。
カメラ111a,111bは、それぞれ異なる方向の画像を撮影する。これによって、認識したい領域の全ての画像を取り込んで認識処理を行うことが可能となる。また、カメラ111a,111bとして画素数が多く撮影範囲の広いカメラを使用しても良い。これによって、認識したい領域が広い場合でも少ないカメラの台数で全ての領域をカバーすることが可能となる。この場合、1つのカメラで撮影した画像を複数の領域に分割して別々に認識処理を行っても良い。これによって、空などの認識が不要な領域を除外して必要な領域のみに認識処理を行うことが可能となる。
マイクロプロセッサ11は、CPU11a、及びインタフェース回路11b1,11b2,11b3,11b4,11b5を1つのチップに集積したLSI(Large Scale Integration)である。この構成は一例であり、ROM12、RAM13、GPU14、及びRAM15の一部又は全部をマイクロプロセッサ11内に内蔵しても良い。
CPU11aは、インタフェース回路11b1を経由してROM12に格納されているソフトウェアを読み込んで実行する。なお、ROM12は、RAM13に比べると読書きの速度が低速である場合が多いため、起動時にROM12からRAM13にソフトウェアをコピーし、その後はRAM13からソフトウェアを読み込む様にしても良い。CPU11aは、ROM12、又はRAM13から読み込んだソフトウェアに従い、以下の一連の処理を行う。
先ずCPU11aは、インタフェース回路11b4を経由してカメラ111a,111bから画像データを取得し、インタフェース回路11b2を経由してRAM13に格納する。次にCPU11aは、インタフェース回路11b2を経由してRAM13に格納されている画像データを読み出し、インタフェース回路11b3を経由してGPU14に転送する。
次にCPU11aは、インタフェース回路11b1経由してROM12、もしくはインタフェース回路11b2を経由してRAM13に格納されているソフトウェアを読み出し、インタフェース回路11b3を経由してGPU14に転送する。そしてCPU11aは、GPU14に対してソフトウェアによる演算開始を指示する。
次にCPU11aは、インタフェース回路11b3を経由してGPU14から演算終了の通知を受け取ると、インタフェース回路11b3を経由してGPU14から演算結果を取得し、インタフェース回路11b2を経由してRAM13に格納する。
次にCPU11aは、インタフェース回路11b2を経由してRAM13からGPU14の演算結果を読み込み、所定の処理を行ったうえでインタフェース回路11b5を経由してディスプレイ装置112に表示する。
GPU14は、インタフェース回路11b3を経由してCPU11aから画像データを受け取ると、RAM15に格納する。また、GPU14は、インタフェース回路11b3を経由してCPU11aからソフトウェアを受け取ると、そのソフトウェアを実行し、演算結果をRAM15に格納する。
また、GPU14は、インタフェース回路11b3を経由してCPU11aから演算結果の読み出し要求を受け取ると、RAM15から演算結果を読み出してインタフェース回路11b3を経由してCPU11aに出力する。
(ニューラルネットワーク処理)
図2は、ニューラルネットワーク処理の構成を示す図である。なお、図2は単一の入力画像に対する認識処理を記載したものであり、複数の画像に対して認識処理を行う場合には入力画像毎に図2の処理を実行する。その際、処理の内容は全ての画像に対して同一の構成であっても良いし、認識処理の目的に合わせて画像毎に異なる構成であっても良い。
図2は、ニューラルネットワーク処理の構成を示す図である。なお、図2は単一の入力画像に対する認識処理を記載したものであり、複数の画像に対して認識処理を行う場合には入力画像毎に図2の処理を実行する。その際、処理の内容は全ての画像に対して同一の構成であっても良いし、認識処理の目的に合わせて画像毎に異なる構成であっても良い。
図2に示すニューラルネットワーク処理は、N層のレイヤ(Layer)i(レイヤ1(Layer1)、レイヤ2(Layer2)、・・・、レイヤN(LayerN))から構成される。レイヤ1は入力画像(Input Image)を入力し、処理結果をレイヤ2に出力する。レイヤ(i+1)(i=1,2,・・・,N-2)は、1つ前のレイヤiからデータを受け取り、処理結果をレイヤ(i+2)に出力する。レイヤNは、1つ前のレイヤ(N-1)からデータを受け取り、処理結果を、入力画像の認識結果として出力する。
N個の各レイヤiは、畳み込み処理(Convolution)と活性化関数処理(Activation Function)からなる。畳み込み処理と活性化関数処理の詳細は後述する。
(比較例である第1の従来技術に係るニューラルネットワーク処理のレイヤ処理)
ここで、実施形態1の比較例である第1の従来技術に係るニューラルネットワーク処理ついて説明する。図3は、第1の従来技術に係るニューラルネットワーク処理の1つのレイヤを処理するアルゴリズムを示す図である。第1の従来技術のニューラルネットワーク処理を実行するハードウェアは、実施形態1の情報処理装置10と同様である。
ここで、実施形態1の比較例である第1の従来技術に係るニューラルネットワーク処理ついて説明する。図3は、第1の従来技術に係るニューラルネットワーク処理の1つのレイヤを処理するアルゴリズムを示す図である。第1の従来技術のニューラルネットワーク処理を実行するハードウェアは、実施形態1の情報処理装置10と同様である。
CPU11aは、図3に示す第n層(n=1,2,・・・,N)のレイヤ処理(layer_n())を実行する際、7~20行目の畳み込み処理(convolution_n())、及び、22~32行目の活性化関数処理(activation_n())を起動する。畳み込み処理(convolution_n())では、入力データ(in[])と重みデータ(k[])の間の積和演算を行い、中間データ(d[])が生成される。活性化関数処理(activation_n())では、中間データ(d[])を入力として、予め定められた所定の関数(f())の値を計算し出力データ(out[])が生成される。
convolution_n()及びactivation_n()はGPU14で実行される。これに限らず、convolution_n()及びactivation_n()はCPU11aで実行されてもよい。
convolution_n()及びactivation_n()の引数“H”は、画像の縦方向の画素数を示す。図3の9~19行目の変数hに関するループ処理は、画像の縦方向の座標ごとの処理を示す。また、引数“W”は、画像の横方向の画素数を示す。図3の10~18行目の変数“w”に関するループ処理は画像の横方法の座標ごとの処理を示す。
また、引数“CO”は、出力データの各画素の属性情報の種類数を示す。図3の11~17行目の変数“co”に関するループ処理は、出力データの単一画素の属性情報の種類毎の処理を示す。引数“CO”の値は、数十~数百となる場合が多い。
また、引数“CI”は、入力データの各画素の属性情報の種類数を示す。図3の13~16行目の変数“ci”に関するループ処理は、入力データの単一画素の属性情報の種類毎の処理を示す。引数“CI”の値は、入力画像を入力データとするレイヤ1では3(R(赤),G(緑),B(青)の3原色に相当)となるのが一般的である。レイヤ1以外では1つ前のレイヤの出力を入力とするため、数十~数百となる場合が多い。
また、引数“k”は、処理対象のレイヤnの重みデータである。
図4は、第1の従来技術に係るニューラルネットワーク処理のアルゴリズムの実行時の処理態様を示す図である。図4に示すように、畳み込み処理(convolution_n())では、入力データ(in[])と重みデータ(k[])をメモリから読み出し、中間データd[]をメモリに書き込む。
メモリには、プロセッシングユニット(本実施形態ではGPU14)に内蔵されたキャッシュメモリとプロセッシングユニットの外部に接続された外部メモリ(本実施形態ではRAM15)がある。例えば画像の認識処理などを行う場合には、入力データ(in[])や中間データ(d[])は容量が大きいため、キャッシュメモリには格納することができず、外部メモリへのアクセスが発生する。
本願発明者は、プロセッシングユニットと外部メモリとの間のデータ転送は、キャッシュメモリに比べると時間がかかり、外部メモリとの間のデータ転送の処理時間が演算処理そのものに比して無視できない量となっていることを見出した。活性化関数処理(activation_n())も同様であり、プロセッシングユニットと外部メモリとの間のデータ転送の処理時間が演算処理そのものに比して無視できない量となっていた。
すなわち、第1の従来技術では、畳み込み処理(convolution_n())の入力データ(in[])の読み出し、中間データ(d[])の書き込み、活性化関数処理(activation_n())の中間データ(d[])の読み出し、及び、出力データ(out[])の書き込みで、GPU14とRAM15との間のデータ転送が発生し、GPU14といった汎用のハードウェア上のソフトウェアで行うニューラルネットワーク処理のボトルネックとなっていることが見い出された。
(実施形態1に係るニューラルネットワーク処理のレイヤ処理)
図5は、実施形態1に係るニューラルネットワーク処理の1つのレイヤを処理するアルゴリズムを示す図である。CPU11aは、図5に示すレイヤ処理(layer_n())を実行する際、図3と比較して、畳み込み処理と活性化関数処理を融合した処理(convact_n())を起動するのみである。
図5は、実施形態1に係るニューラルネットワーク処理の1つのレイヤを処理するアルゴリズムを示す図である。CPU11aは、図5に示すレイヤ処理(layer_n())を実行する際、図3と比較して、畳み込み処理と活性化関数処理を融合した処理(convact_n())を起動するのみである。
図5に示すように、10~16行目の変数“co”に関するループ処理の中で、12~14行目の変数“ci”に関するループ処理を終了する毎に、中間データ(d)に対して15行目の活性化関数処理を実施して出力データ(out[])が生成される。
図6は、実施形態1に係るニューラルネットワーク処理のアルゴリズムの実行時の処理態様を示す図である。図5に示した実施形態1に係るニューラルネットワーク処理のアルゴリズムは、図3に示した第1の従来技術のアルゴリズムとは異なり、中間データが配列ではない一次元の変数dに格納されているため、GPU14の内部(例えばキャッシュメモリ)に保持することが可能となり、RAM15との間のデータ転送が不要となる。このため、GPU14とRAM15との間のデータ転送量が削減され、処理時間を短縮することができる。
[実施形態2]
(比較例である第2の従来技術に係るニューラルネットワーク処理のレイヤ処理)
先ず、実施形態2の比較例である第2の従来技術に係るニューラルネットワーク処理ついて説明する。図7は、第2の従来技術に係るニューラルネットワーク処理の1つのレイヤを処理するアルゴリズムを示す図である。図3の第1の従来技術に係るアルゴリズムでは、畳み込み処理は積和演算のみで構成されている。一方、図7の第2の従来技術に係るアルゴリズムでは、図7の13~38行目の畳み込み処理に28~38行目のバイアス値加算処理が追加されている。バイアス値加算処理は、N層のレイヤからなるニューラルネットワークの各層毎のバイアス値を積和演算の演算結果に加算する処理である。これによって、認識結果が向上するケースがあることが知られている。
(比較例である第2の従来技術に係るニューラルネットワーク処理のレイヤ処理)
先ず、実施形態2の比較例である第2の従来技術に係るニューラルネットワーク処理ついて説明する。図7は、第2の従来技術に係るニューラルネットワーク処理の1つのレイヤを処理するアルゴリズムを示す図である。図3の第1の従来技術に係るアルゴリズムでは、畳み込み処理は積和演算のみで構成されている。一方、図7の第2の従来技術に係るアルゴリズムでは、図7の13~38行目の畳み込み処理に28~38行目のバイアス値加算処理が追加されている。バイアス値加算処理は、N層のレイヤからなるニューラルネットワークの各層毎のバイアス値を積和演算の演算結果に加算する処理である。これによって、認識結果が向上するケースがあることが知られている。
図8は、第2の従来技術に係るニューラルネットワーク処理のアルゴリズムの実行時の処理態様を示す図である。図4と比較して、バイアス加算の入力データ(b[]、d1[])のRAM15からの読み出し、及び、バイアス加算の演算結果(d2[])のRAM15への書き込みの処理が追加されていることから、GPU14とRAM15との間のデータ転送の処理時間が増加する。
(実施形態2に係るニューラルネットワーク処理のレイヤ処理)
図9は、実施形態2に係るニューラルネットワーク処理の1つのレイヤを処理するアルゴリズムを示す図である。本実施形態では、図7の積和演算(図7の13~26行目のmultiadd_n())、バイアス加算(図7の28~38行目のBiasadd_n())、活性化関数処理(図7の40~50行目のactivation_n())を1つのループ処理(図9の8~19行目)で実行する。
図9は、実施形態2に係るニューラルネットワーク処理の1つのレイヤを処理するアルゴリズムを示す図である。本実施形態では、図7の積和演算(図7の13~26行目のmultiadd_n())、バイアス加算(図7の28~38行目のBiasadd_n())、活性化関数処理(図7の40~50行目のactivation_n())を1つのループ処理(図9の8~19行目)で実行する。
図9に示すように、10~17行目の変数“co”に関するループ処理の中で、12~14行目の変数“ci”に関するループ処理を終了する毎に、15行目のように中間データ(d1)にバイアス値(b[])を加算して中間データ(d2)が計算される。そして、16行目のように、中間データ(d2)に対して15行目の活性化関数処理を実施して出力データ(out[])が生成される。
図10は、実施形態2に係るニューラルネットワーク処理のアルゴリズムの実行時の処理態様を示す図である。図9に示した実施形態2に係るニューラルネットワーク処理のアルゴリズムは、図7に示した第2の従来技術のアルゴリズムとは異なり、2種類の中間データが配列ではない一次元の変数d1,d2にそれぞれ格納されている。このため、中間データd1,d2をGPU14の内部(例えばキャッシュメモリ)に保持することが可能となり、RAM15との間のデータ転送が不要となる。よって、GPU14とRAM15との間のデータ転送量が削減され、処理時間を短縮することができる。
[実施形態3]
(実施形態3に係るニューラルネットワーク処理のレイヤ処理)
図11は、実施形態3に係るニューラルネットワーク処理の1つのレイヤを処理するアルゴリズムを示す図である。実施形態3に係るニューラルネットワーク処理のアルゴリズムでは、図11に示すように、図9の実施形態2のアルゴリズムとは異なり、積和演算のみ異なるループ処理(8~19行目)で実行し、バイアス値加算処理と活性化関数処理を1つのループ処理(24~32行目)で実行する。
(実施形態3に係るニューラルネットワーク処理のレイヤ処理)
図11は、実施形態3に係るニューラルネットワーク処理の1つのレイヤを処理するアルゴリズムを示す図である。実施形態3に係るニューラルネットワーク処理のアルゴリズムでは、図11に示すように、図9の実施形態2のアルゴリズムとは異なり、積和演算のみ異なるループ処理(8~19行目)で実行し、バイアス値加算処理と活性化関数処理を1つのループ処理(24~32行目)で実行する。
一般に積和演算は演算量が多く、ニューラルネットワーク処理全体に占める処理時間の比率が多いため、GPUメーカなどが提供する最適化したライブラリを使用して処理時間を短縮する場合が多い。図9の実施形態2のアルゴリズムの場合は、積和演算と同一のループ処理にバイアス値加算処理や活性化関数処理が組み込まれているため積和演算のライブラリを使用することができず、積和演算の処理時間がライブラリを使用する場合より長くなる可能性がある。一方、図11の本実施形態のアルゴリズムの場合、積和演算の処理部分のみライブラリに置き換えることが可能となり、積和演算の処理時間増加を防止することができる。
図12は、実施形態3に係るニューラルネットワーク処理のアルゴリズムの実行時の処理態様を示す図である。本実施形態に係るニューラルネットワーク処理は、図8の第2の従来技術と比較して、バイアス値加算処理(biasadd-n())の処理結果(d2)のメモリへの書き込みとメモリからの読み出しが不要となるため、GPU14とRAM15との間のデータ転送量が削減され、処理時間を短縮することができる。また、本実施形態に係るニューラルネットワーク処理は、図10の実施形態2と比較して、積和演算(multiadd-n())の処理結果(d1[])のメモリへの書き込みと読み出しの処理が増えるため、GPU14とRAM15との間のデータ転送量は増加し処理時間も増加する。しかし、積和演算(multiadd-n())にライブラリを使用することが可能となり、積和演算の処理時間の増加を防止できるため、図10の実施形態2と比較して、トータルの処理時間を削減できる可能性がある。
[実施形態4]
本願開示に係る実施形態では、畳み込み処理と活性化関数処理を1つのループ処理で実行する。このため、畳み込み処理と活性化関数処理にそれぞれ複数のバリエーションがあると、ニューラルネットワーク処理のソフトウェアの作成時に、両者のバリエーションの数の積に相当する数の処理を記述する必要があり、ソフトウェアの作成や動作確認に膨大な時間がかかる可能性がある。
本願開示に係る実施形態では、畳み込み処理と活性化関数処理を1つのループ処理で実行する。このため、畳み込み処理と活性化関数処理にそれぞれ複数のバリエーションがあると、ニューラルネットワーク処理のソフトウェアの作成時に、両者のバリエーションの数の積に相当する数の処理を記述する必要があり、ソフトウェアの作成や動作確認に膨大な時間がかかる可能性がある。
畳み込み処理に関しては、その一部である積和演算処理のアルゴリズムに多数のバリエーションがあることが知られている。図13は、実施形態4に係る積和演算処理を行うアルゴリズムのバリエーションと対応するパラメータの例を示す図である。
図13における“INPUT FORM(入力形式)”は、入力データの並び順を示すもので、“CHW”と“HWC”の2通りがある。“CHW”は、まず属性情報の種類の軸でデータを並べ、次に属性情報の種類の軸の値が同じデータ同士で画像の縦方向の軸でデータを並べ、最後に属性情報の種類の軸と画像の縦方向の軸の値が同じデータ同士で画像の横方向の軸でデータを並べる。
“HWC”は、まず画像の縦方向の軸でデータを並べ、次に画像の縦方向の軸の値が同じデータ同士で画像の横方向の軸でデータを並べ、最後に画像の縦方向の軸と画像の横方法の軸の値が同じデータ同士で属性情報の種類の軸でデータを並べる。
なお、図3、図5、図7、図9、及び図11に示したアルゴリズムは、入力形式が“HWC”に対応したソフトウェアであり、入力形式が“CHW”の場合には適用できない。
図13における“WEIGHT FORM(重み形式)”は、重みデータの並べ順を示すもので、“CHW”と“HWC”の2通りがある。“CHW”と“HWC”の意味は、入力形式と同様である。図3、図5、図7、図9、及び図11に示したアルゴリズムは、重み形式が“HWC”に対応したソフトウェアであり、重み形式が“CHW”の場合には適用できない。
図13における“OUTPUT FORM(出力形式)”は、出力データの並べ順を示すもので、“CHW”と“HWC”の2通りがある。“CHW”と“HWC”の意味は、入力形式と同様である。図3、図5、図7、図9、及び図11に示したアルゴリズムは、出力形式が“HWC”に対応したソフトウェアであり、出力形式が“CHW”の場合には適用できない。
図13における“WEIGHT SIZE(重みサイズ)”は、出力データの各画素に影響を与える入力データの画素の範囲を示す。図3、図5、図7、図9、及び図11に示したアルゴリズムでは、出力データの各画素は入力データのうちの縦方向と横方向の軸の値が同じ画素からのみ影響を受ける。これを図13では“1x1”と表記した。これ以外に、縦方向と横方向の軸の値が同じ画素に加えて上下1画素ずつ範囲を広げた3画素四方の入力データから影響を受ける計算方法もあり、これを図13で“3x3”と表記した。
図13における“CI”は、入力データの各画素の属性情報の種類数であり、図3で説明した通り、レイヤ1では3、それ以外では数十~数百の値を取りうる。ここでは、スペースの都合で“3”と“32”の2通りのみ記載した。
図13における“CO”は、出力データの各画素の属性情報の種類数であり、図3で説明した通り、数十~数百の値を取りうる。ここでは、スペースの都合で“32”の1通りのみ記載した。
図13で積和演算処理を行うアルゴリズムのバリエーションの全てを網羅しているとは限らないが、それでも32通りのバリエーションが存在する。
図14は、実施形態4に係る活性化関数処理を行うアルゴリズムのバリエーションと対応するパラメータの例を示す図である。図14には、それぞれの活性化関数の名称を記載し、関数の計算式は省略している。図14でバリエーションの全てを網羅しているとは限らないが、それでも10通りのバリエーションが存在する。
図13に示す積和演算処理のバリエーションと、図14に示す活性化関数処理のバリエーションを掛け合わせると320通りとなる。これは、畳み込み処理と活性化関数処理を1つのループ処理で実行するためには、320通りの処理を記述することが必要となることを意味する。このため、図13のバリエーションを持つ積和演算処理及び図14のバリエーションを持つ活性化関数処理を含むニューラルネットワーク処理のソフトウェアの作成や動作確認に膨大な時間がかかると考えられる。
この課題に対応するため、アプリケーションに依存して必要な組み合わせのみ処理を記述する方法が考えられる。以下にその開発フローを説明する。
図15は、実施形態4に係るニューラルネットワーク処理の各レイヤに対する積和演算処理と活性化関数処理のパラメータの組の例を示す図である。複雑な認識処理を行う場合には、100以上のレイヤを実行する場合も多いが、ここではスペースの都合でレイヤ数が30の例を記載した。図15からわかる通り、パラメータの組み合わせが同一のレイヤが複数存在する。
図16は、実施形態4に係るパラメータの組み合わせの中から重複を除いたパラメータの組み合わせを選択した結果を示す図である。図16に示すように、図15のパラメータの組み合わせの中から重複を除いたパラメータの組み合わせを選択した結果として、パラメータの組み合わせは3種類に絞られることが確認できる。よって、畳み込み処理と活性化関数処理を1つのループ処理で実行する場合、3通りのソフトウェアを記述すれば良いことがわかる。
GPUメーカがライブラリを提供する場合、畳み込みと活性化関数のどの組み合わせをユーザが使用するかが不明のため、320通りの全てのバリエーションに対応する記述のソフトウェアを作成する必要がある。この様な膨大なバリエーションがボトルネックとなり、ライブラリの作成が困難となる可能性がある。一方、ユーザの立場で本願開示に係る実施形態を実施する場合、アプリケーションに依存して必要な組み合わせのみ処理を記述すれば良いため、図16に従って例えば3通りのパラメータの組み合わせに絞ってソフトウェアを作成すれば良いので、ソフトウェアの記述作成に要する時間を大幅に短縮することが可能である。
(実施形態4に係るソフトウェア作成方法を実行するコンピュータ100のハードウェア)
図17は、実施形態4に係るソフトウェア作成方法を実行するコンピュータ100の構成例を示すハードウェア図である。
図17は、実施形態4に係るソフトウェア作成方法を実行するコンピュータ100の構成例を示すハードウェア図である。
コンピュータ100は、バス等の内部通信線109を介して相互に接続されたCPUをはじめとするプロセッサ101、主記憶装置102、補助記憶装置103、ネットワークインタフェース104、入力装置105、及び出力装置106を備えるコンピュータである。
プロセッサ101は、コンピュータ100全体の動作制御を司る。また主記憶装置102は、例えば揮発性の半導体メモリから構成され、プロセッサ101のワークメモリとして利用される。補助記憶装置103は、ハードディスク装置、SSD(Solid State Drive)、またはフラッシュメモリ等の大容量の不揮発性の記憶装置から構成され、各種プログラムやデータを長期間保持するために利用される。
補助記憶装置103に格納されたソフトウェア作成プログラム103aがコンピュータ100の起動時や必要時に主記憶装置102にロードされ、主記憶装置102にロードされたソフトウェア作成プログラム103aをプロセッサ101が実行することにより、ソフトウェア作成方法を実行するソフトウェア作成装置が実現される。
なお、ソフトウェア作成プログラム103aは、非一時的記録媒体に記録され、媒体読み取り装置によって非一時的記録媒体から読み出されて、主記憶装置102にロードされてもよい。または、ソフトウェア作成プログラム103aは、ネットワークを介して外部のコンピュータから取得されて、主記憶装置102にロードされてもよい。
ネットワークインタフェース104は、コンピュータ100をシステム内の各ネットワークに接続する、あるいは他のコンピュータと通信するためのインタフェース装置である。ネットワークインタフェース104は、例えば、有線LAN(Local Area Network)や無線LAN等のNIC(Network Interface Card)から構成される。
入力装置105は、キーボードや、マウス等のポインティングデバイス等から構成され、ユーザがコンピュータ100に各種指示や情報を入力するために利用される。出力装置106は、例えば、液晶ディスプレイ又は有機EL(Electro Luminescence)ディスプレイ等の表示装置や、スピーカ等の音声出力装置から構成され、必要時に必要な情報をユーザに提示するために利用される。
(実施形態4に係るソフトウェア作成処理)
図18は、実施形態4に係るソフトウェア作成処理を示すフローチャートである。
図18は、実施形態4に係るソフトウェア作成処理を示すフローチャートである。
先ずステップS11では、コンピュータ100は、対象のニューラルネットワークの複数のレイヤ処理のそれぞれについて畳み込み処理と活性化関数処理のパラメータの組み合わせのリストを作成する第1ステップを実行する。
次にステップS12では、コンピュータ100は、ステップS11で作成したパラメータのリストの中から重複を除外したパラメータの組み合わせを選択する第2ステップを実行する。
次にステップS13では、コンピュータ100は、作成するソフトウェアが推論用か否かを判定する。コンピュータ100は、作成するソフトウェアが推論処理用である場合(ステップS13YES)にステップS14へ処理を移し、学習処理用である場合(ステップS13NO)にステップS15へ処理を移す。
ステップS14では、コンピュータ100は、ステップS13によって選択されたパラメータの組み合わせに対応する畳み込み処理と活性化関数処理に関して、活性化関数処理を、畳み込み処理のループ処理内で実行するプログラムを作成する第3ステップを実行する。
一方、ステップS15では、コンピュータ100は、ステップS13によって選択されたパラメータの組み合わせに対応する畳み込み処理と活性化関数処理に関して、活性化関数処理を、畳み込み処理とは異なるループ処理内で実行するプログラムを作成する第4ステップを実行する。
なお、上記ステップS11からS15の一部または全てを人手で実行してもよい。
本実施形態によれば、ニューラルネットワーク処理のソフトウェアの作成時に、パラメータの組み合わせを絞ってソフトウェアを作成すれば良いので、ソフトウェアの作成及び動作テストに要する時間を大幅に短縮することが可能である。
(その他の実施形態)
なお、ソフトウェアの記述作成に要する時間を短縮するその他の実施形態として、ニューラルネットワーク処理が使用される用途に着目する観点もある。一般にニューラルネットワーク処理は、学習処理と推論処理という2種類の用途に用いられる。学習処理は、入力データとして既知のデータを入力し、出力データが期待される値に近付く様に重みデータの調整を行う。一方、推論処理は、入力データとして未知のデータを入力して出力データを認識結果として使用する。学習処理は通常は計算リソースの豊富なサーバで行われる場合が多く、かつ、処理時間の制約は緩い。従って、処理時間短縮の必要性は比較的少ない。
なお、ソフトウェアの記述作成に要する時間を短縮するその他の実施形態として、ニューラルネットワーク処理が使用される用途に着目する観点もある。一般にニューラルネットワーク処理は、学習処理と推論処理という2種類の用途に用いられる。学習処理は、入力データとして既知のデータを入力し、出力データが期待される値に近付く様に重みデータの調整を行う。一方、推論処理は、入力データとして未知のデータを入力して出力データを認識結果として使用する。学習処理は通常は計算リソースの豊富なサーバで行われる場合が多く、かつ、処理時間の制約は緩い。従って、処理時間短縮の必要性は比較的少ない。
一方、推論処理は、例えば自動車などに搭載される機器で実行されるケースがあり、計算リソースが限定されているケースがある。また、自動運転などの様に認識結果を機器の制御に使用する場合には、タイムリーに機器を制御できる様にするため、処理時間の制約が比較的厳しい。従って、処理時間短縮の必要性が比較的高い。そこで、推論処理に使用するソフトウェアには本願開示に係る実施形態を適用して処理時間を短縮し、学習処理に使用するソフトウェアには本願開示に係る実施形態を適用せずに既存のソフトウェアを使用することで、ニーズを満たしつつソフトウェアの作成に要する時間を短縮することができる。
本願開示に係る実施形態では、推論の畳み込み演算のループの中で活性化処理を実行するソフトウェアの作成がユーザ負担となる場合がある一方、自動車などの車載装置といったエッジ端末での処理速度及び認識精度の両立という効果を奏する。本開示に係る実施形態では、実施形態4にて重複するパラメータの組み合わせを絞り込んで、作成するソフトウェアのアルゴリズムの数を減らすプログラム作成方法を提供することで、ソフトウェアの作成のユーザ負担を軽減することができる。
本発明は上述の実施形態に限定されるものではなく、様々な変形例を含む。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、矛盾しない限りにおいて、ある実施形態の構成の一部を他の実施形態の構成で置き換え、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、構成の追加、削除、置換、統合、又は分散をすることが可能である。また、実施形態で示した構成及び処理は、処理効率又は実装効率に基づいて適宜分散、統合、または入れ替えることが可能である。
10:情報処理装置、100:コンピュータ
Claims (14)
- プロセッサとメモリとを有する情報処理装置であって、
前記プロセッサは、
複数の入力データと複数の重みデータの間の積和演算を行って複数の中間データを生成する畳み込み処理と、
前記複数の中間データを入力とする所定の関数の値を計算して複数の出力データを生成する活性化関数処理と、を含むニューラルネットワーク処理を実行し、
前記活性化関数処理を、前記畳み込み処理のループ処理内で実行する
ことを特徴とする情報処理装置。 - 請求項1に記載の情報処理装置であって、
前記プロセッサは、
前記ループ処理の中で、前記積和演算を行って前記複数の中間データのうちの1つの中間データを生成する都度、前記活性化関数処理を行って該1つの中間データを入力とする前記所定の関数の値を計算して前記複数の出力データのうちの1つの出力データを生成する
ことを特徴とする情報処理装置。 - 請求項1に記載の情報処理装置であって、
前記畳み込み処理は、前記積和演算の結果にバイアス値を加算するバイアス値加算処理を含み、
前記バイアス値加算処理を、前記活性化関数処理と同一のループ処理内で実行する
ことを特徴とする情報処理装置。 - プロセッサとメモリとを有する情報処理装置であって、
前記プロセッサは、
複数の入力データと複数の重みデータの間の積和演算を行って複数の中間データを生成する畳み込み処理と、
前記複数の中間データを入力とする所定の関数の値を計算して複数の出力データを生成する活性化関数処理と、を含むニューラルネットワーク処理を実行し、
前記畳み込み処理は、前記積和演算の結果にバイアス値を加算するバイアス値加算処理を含み、
前記プロセッサは、
前記バイアス値加算処理を、前記活性化関数処理と同一のループ処理内で実行し、
前記バイアス値加算処理及び前記活性化関数処理を、前記畳み込み処理とは異なるループ処理内で実行する
ことを特徴とする情報処理装置。 - 請求項1~4の何れか1項に記載の情報処理装置であって、
前記複数の入力データは、複数の範囲に対応する複数の画像データであり、
前記出力データは、前記複数の画像データに対する画像認識の処理結果である
ことを特徴とする情報処理装置。 - プロセッサとメモリとを有する情報処理装置が実行する情報処理方法であって、
前記プロセッサが、複数の入力データと複数の重みデータの間の積和演算を行って複数の中間データを生成する畳み込み処理ステップと、
前記プロセッサが、前記複数の中間データを入力とする所定の関数の値を計算して複数の出力データを生成する活性化関数処理ステップと、
を含むニューラルネットワーク処理ステップを有し、
前記プロセッサが、前記活性化関数処理ステップを、前記畳み込み処理ステップのループ処理内で実行する
ことを特徴とする情報処理方法。 - プロセッサとメモリとを有する情報処理装置が実行する情報処理方法であって、
前記プロセッサが、複数の入力データと複数の重みデータの間の積和演算を行って複数の中間データを生成する畳み込み処理ステップと、
前記プロセッサが、前記複数の中間データを入力とする所定の関数の値を計算して複数の出力データを生成する活性化関数処理ステップと、
を含むニューラルネットワーク処理ステップを有し、
前記畳み込み処理ステップは、前記プロセッサが、前記積和演算の結果にバイアス値を加算するバイアス値加算処理ステップを含み、
前記プロセッサが、
前記バイアス値加算処理ステップを、前記活性化関数処理ステップと同一のループ処理内で実行し、
前記バイアス値加算処理ステップ及び前記活性化関数処理ステップを、前記畳み込み処理ステップとは異なるループ処理内で実行する
ことを特徴とする情報処理方法。 - プロセッサとメモリとを有するコンピュータに、
複数の入力データと複数の重みデータの間の積和演算を行って複数の中間データを生成する畳み込み処理手順と、
前記複数の中間データを入力とする所定の関数の値を計算して複数の出力データを生成する活性化関数処理手順と、
を含むニューラルネットワーク処理手順を実行させ、
前記活性化関数処理手順を、前記畳み込み処理手順のループ処理内で実行させる
ことを特徴とする情報処理プログラム。 - プロセッサとメモリとを有するコンピュータに、
複数の入力データと複数の重みデータの間の積和演算を行って複数の中間データを生成する畳み込み処理手順と、
前記複数の中間データを入力とする所定の関数の値を計算して複数の出力データを生成する活性化関数処理手順と、
を含むニューラルネットワーク処理手順を実行させ、
前記畳み込み処理手順は、前記積和演算の結果にバイアス値を加算するバイアス値加算処理手順を含み、
前記プロセッサに、
前記バイアス値加算処理手順を、前記活性化関数処理手順と同一のループ処理内で実行させ、
前記バイアス値加算処理手順及び前記活性化関数処理手順を、前記畳み込み処理手順とは異なるループ処理内で実行させる
ことを特徴とする情報処理プログラム。 - 複数の入力データと複数の重みデータの間の積和演算を行って複数の中間データを生成する畳み込み処理と、前記複数の中間データを入力として所定の関数の値を計算して複数の出力データを生成する活性化関数処理と、をそれぞれ含む複数のレイヤ処理を組み合わせて前記入力データの認識処理を行うニューラルネットワーク処理を情報処理装置に実行させるソフトウェアを作成するソフトウェア作成装置であって、
各前記レイヤ処理の前記畳み込み処理と前記活性化関数処理のパラメータの組み合わせのリストを作成する第1処理部と、
前記リストの中から重複を除外したパラメータの組み合わせを選択する第2処理部と、
前記第2処理部によって選択された前記パラメータの組み合わせに対応する前記畳み込み処理と前記活性化関数処理に関して、該活性化関数処理を、該畳み込み処理のループ処理内で実行するソフトウェアを作成する第3処理部と
を有することを特徴とするソフトウェア作成装置。 - 請求項10に記載のソフトウェア作成装置であって、
前記第3処理部は、
前記複数の入力データとして未知のデータを入力して前記複数の出力データを認識結果として使用する推論処理のソフトウェアの作成時には、前記第2処理部によって選択された前記パラメータの組み合わせに対応する前記畳み込み処理と前記活性化関数処理に関して、該活性化関数処理を、該畳み込み処理のループ処理内で実行するソフトウェアを作成し、
前記複数の入力データとして既知のデータを入力し、前記複数の出力データが期待される値に近付く様に前記複数の重みデータの調整を行う学習処理のソフトウェアの作成時には、前記第2処理部によって選択された前記パラメータの組み合わせに対応する前記畳み込み処理と前記活性化関数処理に関して、該活性化関数処理を、該畳み込み処理とは異なるループ処理内で実行するソフトウェアを作成する
ことを特徴とするソフトウェア作成装置。 - プロセッサとメモリとを有するコンピュータが、複数の入力データと複数の重みデータの間の積和演算を行って複数の中間データを生成する畳み込み処理と、前記複数の中間データを入力として所定の関数の値を計算して複数の出力データを生成する活性化関数処理と、をそれぞれ含む複数のレイヤ処理を組み合わせて前記入力データの認識処理を行うニューラルネットワーク処理を情報処理装置に実行させるソフトウェアを作成するソフトウェア作成方法であって、
前記コンピュータが、各前記レイヤ処理の前記畳み込み処理と前記活性化関数処理のパラメータの組み合わせのリストを作成する第1ステップと、
前記コンピュータが、前記リストの中から重複を除外したパラメータの組み合わせを選択する第2ステップと、
前記コンピュータが、前記第2ステップによって選択された前記パラメータの組み合わせに対応する前記畳み込み処理と前記活性化関数処理に関して、該活性化関数処理を、該畳み込み処理のループ処理内で実行するソフトウェアを作成する第3ステップと
を有することを特徴とするソフトウェア作成方法。 - プロセッサとメモリとを有するコンピュータに、
複数の入力データと複数の重みデータの間の積和演算を行って複数の中間データを生成する畳み込み処理と、前記複数の中間データを入力として所定の関数の値を計算して複数の出力データを生成する活性化関数処理と、をそれぞれ含む複数のレイヤ処理を組み合わせて前記入力データの認識処理を行うニューラルネットワーク処理を情報処理装置に実行させるソフトウェアを作成させるためのソフトウェア作成プログラムであって、
前記コンピュータに、
各前記レイヤ処理の前記畳み込み処理と前記活性化関数処理のパラメータの組み合わせのリストを作成する第1手順と、
前記リストの中から重複を除外したパラメータの組み合わせを選択する第2手順と、
前記第2手順によって選択された前記パラメータの組み合わせに対応する前記畳み込み処理と前記活性化関数処理に関して、該活性化関数処理を、該畳み込み処理のループ処理内で実行するソフトウェアを作成する第3手順と
を実行させることを特徴とするソフトウェア作成プログラム。 - 複数の入力データと複数の重みデータの間の積和演算を行って複数の中間データを生成する畳み込み処理と、前記複数の中間データを入力として所定の関数の値を計算して複数の出力データを生成する活性化関数処理と、をそれぞれ含む複数のレイヤ処理を組み合わせて前記入力データの認識処理を行うニューラルネットワーク処理を情報処理装置に実行させるソフトウェアを作成するソフトウェア作成方法であって、
各前記レイヤ処理の前記畳み込み処理と前記活性化関数処理のパラメータの組み合わせのリストを作成する第1ステップと、
前記リストの中から重複を除外したパラメータの組み合わせを選択する第2ステップと、
前記第2ステップによって選択された前記パラメータの組み合わせに対応する前記畳み込み処理と前記活性化関数処理に関して、該活性化関数処理を、該畳み込み処理のループ処理内で実行するソフトウェアを作成する第3ステップと
を有することを特徴とするソフトウェア作成方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022069885A JP2023159945A (ja) | 2022-04-21 | 2022-04-21 | 情報処理装置、情報処理方法、情報処理プログラム、ソフトウェア作成装置、ソフトウェア作成方法、及びソフトウェア作成プログラム |
PCT/JP2023/014229 WO2023204041A1 (ja) | 2022-04-21 | 2023-04-06 | 情報処理装置、情報処理方法、情報処理プログラム、ソフトウェア作成装置、ソフトウェア作成方法、及びソフトウェア作成プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022069885A JP2023159945A (ja) | 2022-04-21 | 2022-04-21 | 情報処理装置、情報処理方法、情報処理プログラム、ソフトウェア作成装置、ソフトウェア作成方法、及びソフトウェア作成プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023159945A true JP2023159945A (ja) | 2023-11-02 |
Family
ID=88419875
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022069885A Pending JP2023159945A (ja) | 2022-04-21 | 2022-04-21 | 情報処理装置、情報処理方法、情報処理プログラム、ソフトウェア作成装置、ソフトウェア作成方法、及びソフトウェア作成プログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2023159945A (ja) |
WO (1) | WO2023204041A1 (ja) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6645252B2 (ja) * | 2016-02-23 | 2020-02-14 | 株式会社デンソー | 演算処理装置 |
US11468302B2 (en) * | 2018-03-13 | 2022-10-11 | Recogni Inc. | Efficient convolutional engine |
-
2022
- 2022-04-21 JP JP2022069885A patent/JP2023159945A/ja active Pending
-
2023
- 2023-04-06 WO PCT/JP2023/014229 patent/WO2023204041A1/ja unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023204041A1 (ja) | 2023-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11449576B2 (en) | Convolution operation processing method and related product | |
US11321423B2 (en) | Operation accelerator | |
JP7021904B2 (ja) | 畳み込み神経網処理方法及び装置 | |
JP6657137B2 (ja) | 情報処理装置、情報処理方法、及びプログラム | |
US20220383068A1 (en) | Systems and methods for improved neural network execution | |
US20190236759A1 (en) | Method of image completion | |
US20180253641A1 (en) | Arithmetic processing apparatus and control method therefor | |
US20200394516A1 (en) | Filter processing device and method of performing convolution operation at filter processing device | |
US20200111235A1 (en) | Information processing apparatus, information processing method, non-transitory computer-readable storage medium | |
WO2024027039A1 (zh) | 数据处理方法、装置、设备和可读存储介质 | |
US20180129914A1 (en) | Image recognition device and image recognition method | |
JP2019067084A (ja) | 情報処理システム、情報処理装置、及び、転送先決定方法 | |
JP2017027314A (ja) | 並列演算装置、画像処理装置及び並列演算方法 | |
WO2023204041A1 (ja) | 情報処理装置、情報処理方法、情報処理プログラム、ソフトウェア作成装置、ソフトウェア作成方法、及びソフトウェア作成プログラム | |
CN114912590A (zh) | 处理器、操作处理器的方法以及包括处理器的电子装置 | |
US20240012966A1 (en) | Method and system for providing a three-dimensional computer aided-design (cad) model in a cad environment | |
CN117573911A (zh) | 物理架构视图的自动布局方法、装置、设备和存储介质 | |
US11775809B2 (en) | Image processing apparatus, imaging apparatus, image processing method, non-transitory computer-readable storage medium | |
JP2024068105A (ja) | 欠陥検出方法及び装置 | |
CN112257859B (zh) | 特征数据处理方法及装置、设备、存储介质 | |
US11636321B2 (en) | Data processing apparatus and control method | |
US10938999B2 (en) | Image processing apparatus that performs filter operation on group of regions in an image, image processing method and non-transitory computer- readable storage medium | |
JP6160317B2 (ja) | 画像処理装置及びプログラム | |
US20230252756A1 (en) | Method and electronic device for processing input frame for on-device ai model | |
CN111027682A (zh) | 神经网络处理器、电子设备及数据处理方法 |