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

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

▶ 平安科技(深▲せん▼)有限公司の特許一覧

特許7174831畳み込みニューラルネットワークに基づくビデオメモリ処理方法、装置及び記録媒体
<>
  • 特許-畳み込みニューラルネットワークに基づくビデオメモリ処理方法、装置及び記録媒体 図1
  • 特許-畳み込みニューラルネットワークに基づくビデオメモリ処理方法、装置及び記録媒体 図2
  • 特許-畳み込みニューラルネットワークに基づくビデオメモリ処理方法、装置及び記録媒体 図3
  • 特許-畳み込みニューラルネットワークに基づくビデオメモリ処理方法、装置及び記録媒体 図4
  • 特許-畳み込みニューラルネットワークに基づくビデオメモリ処理方法、装置及び記録媒体 図5
  • 特許-畳み込みニューラルネットワークに基づくビデオメモリ処理方法、装置及び記録媒体 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-09
(45)【発行日】2022-11-17
(54)【発明の名称】畳み込みニューラルネットワークに基づくビデオメモリ処理方法、装置及び記録媒体
(51)【国際特許分類】
   G06N 3/10 20060101AFI20221110BHJP
【FI】
G06N3/10
【請求項の数】 18
(21)【出願番号】P 2021506309
(86)(22)【出願日】2019-11-14
(65)【公表番号】
(43)【公表日】2021-11-25
(86)【国際出願番号】 CN2019118467
(87)【国際公開番号】W WO2020248499
(87)【国際公開日】2020-12-17
【審査請求日】2021-02-04
(31)【優先権主張番号】201910497396.8
(32)【優先日】2019-06-10
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】517406065
【氏名又は名称】平安科技(深▲せん▼)有限公司
【氏名又は名称原語表記】PING AN TECHNOLOGY (SHENZHEN) CO.,LTD.
【住所又は居所原語表記】23F,Ping’an Financial Center,No.5033 Yitian Road,Fu’an Community of Futian Street,Futian District Shenzhen,Guangdong 518000 China
(74)【代理人】
【識別番号】110002952
【氏名又は名称】弁理士法人鷲田国際特許事務所
(72)【発明者】
【氏名】チャン モン
(72)【発明者】
【氏名】タン イーチュン
(72)【発明者】
【氏名】カオ ポン
(72)【発明者】
【氏名】チョン チアン
(72)【発明者】
【氏名】シエ クオトン
【審査官】久保 光宏
(56)【参考文献】
【文献】国際公開第2018/074012(WO,A1)
【文献】特開2019-95862(JP,A)
【文献】米国特許出願公開第2019/0156188(US,A1)
【文献】特表2018-537788(JP,A)
【文献】Feng Liang, et al.,"Design of 16-bit fixed-point CNN coprocessor based on FPGA",Proceedings of 2018 IEEE 23rd International Conference on Digital Signal Processing (DSP),IEEE,2018年11月21日,全5頁,ISBN:978-1-5386-6811-5, <DOI: 10.1109/ICDSP.2018.8631564>.
【文献】齋藤 修(外3名),「大規模ニューラルネットワークに対応可能な学習機能内蔵ディジタルニューロチップ」,電子情報通信学会技術研究報告,日本,社団法人 電子情報通信学会,1998年04月23日,Vol.98, No.24,第25~32頁.
(58)【調査した分野】(Int.Cl.,DB名)
G06N3/00-99/00
CSDB(日本国特許庁)
IEEEXplore(IEEE)
(57)【特許請求の範囲】
【請求項1】
電子装置に適用される畳み込みニューラルネットワークに基づくビデオメモリ処理方法であって、
ビデオメモリ内に、入力データ、出力データ、入力誤差及び出力誤差を一時的に記憶する記憶空間である一時記憶空間を作成するステップと、
処理対象データのタイプ及び方向に応じて、前記処理対象データに対応する一時記憶空間を呼び出し、前記処理対象データを呼び出された一時記憶空間に読み込むステップと、
前記呼び出された一時記憶空間内で前記処理対象データに対して所定の処理を行うステップと、
処理後のデータのタイプ及び方向に応じて、前記呼び出された一時記憶空間内のデータを指定された外部記憶空間に書き込むステップと、を含むことを特徴とする、畳み込みニューラルネットワークに基づくビデオメモリ処理方法。
【請求項2】
前記一時記憶空間は、入力データ一時記憶空間、出力データ一時記憶空間、入力誤差一時記憶空間及び出力誤差一時記憶空間を含むことを特徴とする、請求項1に記載の畳み込みニューラルネットワークに基づくビデオメモリ処理方法。
【請求項3】
前記処理対象データに対して所定の処理を行うステップは、
前記処理対象データに対して畳み込み処理、重畳処理、乗算処理又は積分演算のうちの少なくとも1つを行うステップを含むことを特徴とする、請求項1に記載の畳み込みニューラルネットワークに基づくビデオメモリ処理方法。
【請求項4】
前記処理対象データに対して行う所定の処理は、2つの変数をある範囲内で乗算した後に加算した結果を取得する畳み込み処理であることを特徴とする、請求項1に記載の畳み込みニューラルネットワークに基づくビデオメモリ処理方法。
【請求項5】
畳み込みの変数が系列x(n)及びh(n)であれば、畳み込み結果は下式に示すとおりであり、
【数1】
式中、*は畳み込みを示し、nはh(-i)をシフトさせる量であり、異なるnが異なる畳み込み結果に対応し、時系列n=0の場合、系列h(-i)がh(i)の時系列iが反転された結果であり、時系列の反転によりh(i)が縦軸を中心として180度反転することを特徴とする、請求項に記載の畳み込みニューラルネットワークに基づくビデオメモリ処理方法。
【請求項6】
畳み込みの変数がx(t)とh(t)の2つの関数であれば、畳み込み結果は下式に示すとおりであり、
【数2】
*は畳み込みを示し、tは関数h(-p)をシフトさせた量であり、pは積分変数であることを特徴とする、請求項に記載の畳み込みニューラルネットワークに基づくビデオメモリ処理方法。
【請求項7】
前記呼び出された一時記憶空間内のデータを指定された外部記憶空間内に書き込むステップは、
設定された書き込み方式で、前記一時記憶空間内の処理後のデータを指定された外部記憶空間内に書き込むステップを含み、前記書き込み方式は、Additionモード及びConcatモードを含むことを特徴とする、請求項1に記載の畳み込みニューラルネットワークに基づくビデオメモリ処理方法。
【請求項8】
Additionモードが設定されている場合、対応する一時記憶空間内のデータを前記外部記憶空間に累積的に書き込み、
Concatモードが設定されている場合、設定されたデータ長情報に基づいて、対応する一時記憶空間内のデータを前記外部記憶空間に間隔をあけて順次書き込むことを特徴とする、請求項に記載の畳み込みニューラルネットワークに基づくビデオメモリ処理方法。
【請求項9】
前記データのタイプは、入力データ、出力データ、入力誤差及び出力誤差を含み、
前記データの方向は、入力及び出力を含むことを特徴とする、請求項1~のいずれか一項に記載の畳み込みニューラルネットワークに基づくビデオメモリ処理方法。
【請求項10】
ビデオメモリ内に、入力データ、出力データ、入力誤差及び出力誤差を一時的に記憶する記憶空間である一時記憶空間を作成する空間作成部と、
処理対象データのタイプ及び方向に応じて、前記処理対象データに対応する一時記憶空間を呼び出し、前記処理対象データを呼び出された一時記憶空間に読み込むデータ呼び出し部と、
前記呼び出された一時記憶空間内で前記処理対象データに対して所定の処理を行う前処理部と、
処理後のデータのタイプ及び方向に応じて、前記呼び出された一時記憶空間内のデータを指定された外部記憶空間に書き込むデータ書き込み部と、を含むことを特徴とする、畳み込みニューラルネットワークに基づくビデオメモリ処理システム。
【請求項11】
前記空間作成部により作成された一時記憶空間は、入力データ一時記憶空間、出力データ一時記憶空間、入力誤差一時記憶空間及び出力誤差一時記憶空間を含むことを特徴とする、請求項10に記載の畳み込みニューラルネットワークに基づくビデオメモリ処理システム。
【請求項12】
前記前処理部が前記処理対象データに対して行う所定の処理は、前記処理対象データに対する畳み込み処理、重畳処理、乗算処理又は積分演算のうちの少なくとも1つの処理を含むことを特徴とする、請求項10に記載の畳み込みニューラルネットワークに基づくビデオメモリ処理システム。
【請求項13】
前記前処理部が前記処理対象データに対して行う所定の処理は、2つの変数をある範囲内で乗算した後に加算した結果を取得する畳み込み処理であり、
畳み込みの変数が系列x(n)及びh(n)であれば、畳み込み結果は下式に示すとおりであり、
【数3】
式中、*は畳み込みを示し、nはh(-i)をシフトさせる量であり、異なるnが異なる畳み込み結果に対応し、時系列n=0の場合、系列h(-i)がh(i)の時系列iが反転された結果であり、時系列の反転によりh(i)が縦軸を中心として180度反転することを特徴とする、請求項10に記載の畳み込みニューラルネットワークに基づくビデオメモリ処理システム。
【請求項14】
前記前処理部が前記処理対象データに対して行う所定の処理は、2つの変数をある範囲内で乗算した後に加算した結果を取得する畳み込み処理であり、
畳み込みの変数がx(t)とh(t)の2つの関数であれば、畳み込み結果は下式に示すとおりであり、
【数4】
*は畳み込みを示し、tは関数h(-p)をシフトさせた量であり、pは積分変数であることを特徴とする、請求項10に記載の畳み込みニューラルネットワークに基づくビデオメモリ処理システム。
【請求項15】
前記データ書き込み部は、設定された書き込み方式で、前記一時記憶空間内の処理後のデータを指定された外部記憶空間に書き込み、
前記書き込み方式は、Additionモード及びConcatモードを含むことを特徴とする、請求項10に記載の畳み込みニューラルネットワークに基づくビデオメモリ処理システム。
【請求項16】
Additionモードが設定されている場合、前記データ書き込み部は、対応する一時記憶空間内のデータを前記外部記憶空間に累積的に書き込み、
Concatモードが設定されている場合、前記データ書き込み部は、設定されたデータ長情報に基づいて、対応する一時記憶空間内のデータを前記外部記憶空間に間隔をあけて順次書き込むことを特徴とする、請求項10に記載の畳み込みニューラルネットワークに基づくビデオメモリ処理システム。
【請求項17】
メモリ及びプロセッサを含み、
前記メモリは、前記プロセッサによって実行されると、請求項1~のいずれか一項に記載の畳み込みニューラルネットワークに基づくビデオメモリ処理方法のステップを実現する、畳み込みニューラルネットワークに基づくビデオメモリ処理プログラムを含むことを特徴とする、電子装置。
【請求項18】
プロセッサによって実行されると、請求項1~のいずれか一項に記載の畳み込みニューラルネットワークに基づくビデオメモリ処理方法のステップを実現する、畳み込みニューラルネットワークに基づくビデオメモリ処理プログラムを含むことを特徴とする、コンピュータ読取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、中国特許出願番号第201910497396.8号(出願日2019年6月10日、発明の名称「畳み込みニューラルネットワークに基づくビデオメモリ処理方法、装置及び記録媒体」)の特許出願の優先権を主張するものである。
【0002】
本願は、畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)の技術分野に関し、特に畳み込みニューラルネットワークに基づくビデオメモリ処理方法、装置及び記録媒体に関する。
【背景技術】
【0003】
ビデオメモリは、GPU表示コアの一時メモリであり、処理すべきコアデータを一時的に記憶するものである。その役割は、CPU及びメモリの役割と同じである。ビデオメモリの容量は、ビデオメモリがデータを一時的に記憶する能力を決定し、ビデオカードのコアが十分強い場合、大容量ビデオメモリは、データを読み取る回数を低減し、遅延を低減することができる。出願人は、現在の畳み込みニューラルネットワークモデルのトレーニングプロセスにおいて、モデルの入出力データが異なるビデオメモリ空間に繰り返して記憶され、不必要なビデオメモリオーバーヘッドを引き起こし、モデルのトレーニングのバッチ処理数を低減するため、モデルのトレーニングの精度に影響を与えることを着目した。
【0004】
例えば、Concat層及びAddition層は、現在の深層学習分類ネットワーク及びターゲット検出ネットワークにおいてよく使用されている層である。Concat層は、特徴次元で複数の入力データに対してマージ処理を行うものであり、Addition層は、複数の入力データに対して累積処理を行うものである。Caffe、TensorFlowなどの従来の深層学習ネットワークトレーニングフレームワークは、いずれもConcat及びAddition層に対してビデオメモリ最適化を行わないため、入出力データが異なるビデオメモリ空間に繰り返し記憶され、不必要なビデオメモリオーバーヘッドをもたらし、モデルのトレーニングのバッチ処理数の低減を引き起こすため、モデルのトレーニング精度に影響を与える。それと共に、ビデオメモリ空間はまた、自動化機械学習技術autoMLの最適化方式の探索空間などを制限する。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本願は、共有一時記憶空間を作成し、処理すべきデータのタイプ及び指示に応じてデータを対応する一時記憶空間内に読み込むか又は書き込むことを主な目的として、従来のフレームワークと比較して、ユーザが様々なモジュールと任意に組み合わせて新たなCNN構造を形成することができ、ビデオメモリを大幅に節約し、GPU計算の並列度を向上させることができる、畳み込みニューラルネットワークに基づくビデオメモリ処理方法、装置及びコンピュータ読取り可能な記録媒体を提供する。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本願に係る、電子装置に適用される畳み込みニューラルネットワークに基づくビデオメモリ処理方法は、入力データ、出力データ、入力誤差及び出力誤差を一時的に記憶する記憶空間である一時記憶空間を作成するステップと、処理対象データのタイプ及び方向に応じて、前記処理対象データに対応する一時記憶空間を呼び出し、前記処理対象データを呼び出された一時記憶空間に読み込むステップと、前記呼び出された一時記憶空間で前記処理対象データに対して所定の処理を行うステップと、処理後のデータのタイプ及び方向に応じて、前記呼び出された一時記憶空間内のデータを指定された外部記憶空間に書き込むステップと、を含む。
【0007】
本願に係る畳み込みニューラルネットワークに基づくビデオメモリ処理システムは、入力データ、出力データ、入力誤差及び出力誤差を一時的に記憶する記憶空間である一時記憶空間を作成する空間作成部と、処理対象データのタイプ及び方向に応じて、前記処理対象データに対応する一時記憶空間を呼び出し、前記処理対象データを呼び出された一時記憶空間に読み込むデータ呼び出し部と、前記呼び出された一時記憶空間で前記処理対象データに対して所定の処理を行う前処理部と、処理後のデータのタイプ及び方向に応じて、前記呼び出された一時記憶空間内のデータを指定された外部記憶空間に書き込むデータ書き込み部と、を含む。
【0008】
また、上記目的を達成するために、本願に係る電子装置は、メモリ及びプロセッサを含み、前記メモリは、前記プロセッサによって実行されると、前述した畳み込みニューラルネットワークに基づくビデオメモリ処理方法のステップを実現する、畳み込みニューラルネットワークに基づくビデオメモリ処理プログラムを含む。
【0009】
また、上記目的を達成するために、本願に係るコンピュータ読取り可能な記録媒体は、プロセッサによって実行されると、上記畳み込みニューラルネットワークに基づくビデオメモリ処理方法のステップを実現する、畳み込みニューラルネットワークに基づくビデオメモリ処理プログラムを含む。
【発明の効果】
【0010】
本願に係る畳み込みニューラルネットワークに基づくビデオメモリ処理方法、システム、電子装置及びコンピュータ読取り可能な記録媒体は、共有一時記憶空間を設定し、処理すべきデータのタイプ及び指示に応じて、対応する一時記憶空間を呼び出し、かつデータを対応する一時記憶空間内に読み込むか又は書き込んで演算処理を行うことにより、CNNアルゴリズムに適用することができ、他のフレームワークと比較して、Dense、Residual、Inceptionモジュールと任意に組み合わせて新たなCNN構造を形成することができ、約半分のビデオメモリを節約すると共に、GPU計算の並列度を向上させることができる。
【図面の簡単な説明】
【0011】
本願の目的の達成、機能特徴及び利点について、実施例と組み合わせて、図面を参照しながらさらに説明する。
図1】本願の実施例に係る畳み込みニューラルネットワークに基づくビデオメモリ処理方法の適用環境の概略図である。
図2図1における畳み込みニューラルネットワークに基づくビデオメモリ処理プログラムの具体的な実施例のモジュールの概略図である。
図3】従来のCNN構造の部分構造の概略図である。
図4】ビデオメモリ最適化処理後の図3の部分構造の概略図である。
図5】本願の実施例に係る畳み込みニューラルネットワークに基づくビデオメモリ処理方法のフローチャートである。
図6】本願の実施例に係る畳み込みニューラルネットワークに基づくビデオメモリ処理システムの論理構造の概略図である。
【発明を実施するための形態】
【0012】
なお、ここで説明する具体的な実施例は、本願を解釈するためのものに過ぎず、本願を限定するものではない。
【0013】
(実施例1)
本願は、電子装置1に適用される畳み込みニューラルネットワークに基づくビデオメモリ処理方法を提供する。図1に示すように、本願の畳み込みニューラルネットワークに基づくビデオメモリ処理方法の好ましい実施例の適用環境の概略図である。
【0014】
本実施例で、電子装置1は、サーバ、スマートフォン、タブレットコンピュータ、ポータブルコンピュータ、デスクトップコンピュータなどの、演算機能を持つ端末装置であってよい。
【0015】
該電子装置1は、プロセッサ12、メモリ11、ネットワークインタフェース14及び通信バス15を含む。
【0016】
メモリ11は、少なくとも1種の読取り可能な記録媒体を含み、フラッシュメモリ、ハードディスク、マルチメディアカード、カード型メモリ11などの不揮発性記録媒体であってよい。いくつかの実施例では、読取り可能な記録媒体は、上記電子装置1の内部記憶部であってよく、例えば、該電子装置1のハードディスクである。別の実施例では、読取り可能な記録媒体は、上記電子装置1の外部メモリ11であってよく、例えば、電子装置1に搭載されたプラグインハードディスク、スマートメディアカード(Smart Media Card、SMC)、セキュアデジタル(Secure Digital、SD)カード、フラッシュカード(Flash Card)である。
【0017】
本実施例では、メモリ11の読取り可能な記録媒体は、一般的に、電子装置1に搭載された畳み込みニューラルネットワークに基づくビデオメモリ処理プログラム10などを記憶する。また、メモリ11は、出力されたデータ又は出力しようとするデータを一時的に記憶することができる。
【0018】
いくつかの実施例では、プロセッサ12は、中央処理装置(Central Processing Unit、CPU)、マイクロプロセッサ又はその他のデータ処理チップであってよく、メモリ11に記憶されたプログラムコード又は処理データを実行し、例えば、畳み込みニューラルネットワークに基づくビデオメモリ処理プログラム10などを実行する。
【0019】
ネットワークインタフェース14は、好ましくは、標準的な有線インタフェース、無線インタフェース(例えば、WI-FIインタフェース)を含んでよく、一般的に該電子装置1とその他の電子装置との間に通信接続を確立する。
【0020】
通信バス15は、これらのコンポーネントの間の接続通信を実現する。
【0021】
図1でコンポーネント11~15を有する電子装置1のみを示しているが、全ての示されたコンポーネントを実施することを要求せず、より多くの又はより少ないコンポーネントを代替的に実施できることを理解されたい。
【0022】
該電子装置1は、ユーザインタフェース、ディスプレイ、タッチセンサを含んでよく、ユーザインタフェースは、キーボードなどの入力部と、マイクロホンなどの音声認識機能を持つ装置などの音声入力装置と、オーディオ、ヘッドフォンなどの音声出力装置とを含んでよい。ディスプレイは、LEDディスプレイ、液晶ディスプレイ、タッチ式液晶ディスプレイ及び有機発光ダイオード(Organic Light-Emitting Diode、OLED)タッチ装置などであってよい。タッチセンサは、抵抗式タッチセンサ、静電容量式タッチセンサなどであってよい。また、上記タッチセンサは、接触式タッチセンサを含むだけでなく、近接式タッチセンサなどを含んでもよい。また、上記タッチセンサは、単一のセンサであってもよいし、例えばアレイ状に配置された複数のセンサであってもよい。
【0023】
好ましくは、該電子装置1は、無線周波数(Radio Frequency、RF)回路、センサ、オーディオ回路などをさらに含んでよく、ここでは説明を省略する。
【0024】
図1に示す装置の実施例では、コンピュータ記録媒体であるメモリ11には、オペレーティングシステム、畳み込みニューラルネットワークに基づくビデオメモリ処理プログラム10などが含まれてよく、プロセッサ12は、メモリ11に記憶された畳み込みニューラルネットワークに基づくビデオメモリ処理プログラム10を実行すると、入力データ、出力データ、入力誤差及び出力誤差を一時的に記憶する記憶空間である一時記憶空間を作成するステップ1と、処理対象データのタイプ及び方向に応じて、上記処理対象データに対応する一時記憶空間を呼び出し、上記処理対象データを呼び出された一時記憶空間に読み込むステップ2と、呼び出された一時記憶空間で上記処理対象データに対して所定の処理を行うステップ3と、処理後のデータのタイプ及び方向に応じて、上記呼び出された一時記憶空間内のデータを指定された外部記憶空間に書き込むステップ4とを実現する。
【0025】
ステップ1では、一時記憶空間は、入力データ、出力データ、入力誤差及び出力誤差を一時的に記憶する記憶空間であり、対応する一時記憶空間は、入力データ一時記憶空間、出力データ一時記憶空間、入力誤差一時記憶空間及び出力誤差一時記憶空間を含む。該一時記憶空間はビデオメモリ内に設定されてもよく、ビデオメモリはモデル又はデータを記憶するもので、ビデオメモリが大きいほど、動作可能なネットワークも大きくなり、一般的なビデオカードは、主に以下のいくつかの種類を有する。
【表1】
【0026】
ビデオメモリの記憶単位は、主に、
1Byte=8bitと、
1K=1024Byteと、
1KB=1000Byteと、
1M=1024Kと、
1MB=1000KBと、
1G=1024Mと、
1GB=1000GBと、
10K=10*1024Byteと、
10KB=10000Byteと、を含む。
【0027】
一般的な数値のタイプ及びそのサイズは以下の表に示すとおりである。
【表2】
【0028】
上記表において、Intは整数型の数値であり、longは長整数型の数値であり、floatは浮動小数点型の数値である(singleは単精度浮動小数点型の数値であり、doubleは倍精度浮動小数点型の数値である)。
【0029】
ステップ2で、処理対象データのタイプが誤差であり方向が出力である場合、出力誤差データに応じて、対応する出力誤差一時記憶空間を呼び出し、該出力誤差を該出力誤差一時記憶空間内に読み込んで処理することができる。
【0030】
上記処理対象データに対して所定の処理を行うステップは、上記処理対象データに対して畳み込み処理、重畳処理、乗算処理又は積分演算のうちの少なくとも1つを行うステップを含む。
【0031】
例えば、データに対して畳み込み処理を行うときに、主に2つの変数をある範囲内で乗算した後に加算した結果を取得する。畳み込みの変数が系列x(n)及びh(n)であれば、畳み込み結果は下式に示すとおりである。
【数1】
【0032】
式中、*は畳み込みを示す。時系列n=0の場合、系列h(-i)はh(i)の時系列iが反転された結果であり、時系列の反転によりh(i)が縦軸を中心として180度反転するため、このような、乗算後に加算する計算法は、畳み込み和と呼ばれ、畳み込みと略称される。また、nはh(-i)をシフトさせる量であり、異なるnは異なる畳み込み結果に対応する。
【0033】
畳み込みの変数がx(t)とh(t)の2つの関数であれば、畳み込みの計算は下式に従って行われる。
【数2】
【0034】
pは積分変数であり、積分も加算であり、tは関数h(-p)をシフトさせた量であり、*は畳み込みを示す。
【0035】
ビデオメモリを節約するという目的を達成するために、上記これらの演算は、いずれも一時記憶空間内で行うことができる。
【0036】
ステップ4で、上記呼び出された一時記憶空間内のデータを指定された外部記憶空間に書き込むステップは、設定された書き込み方式で上記一時記憶空間内の処理後のデータを指定された外部記憶空間に書き込むステップを含み、上記書き込み方式はAdditionモード及びConcatモードを含む。
【0037】
また、データのタイプは、入力データ、出力データ、入力誤差及び出力誤差を含み、上記データの方向は、入力及び出力を含む。
【0038】
具体的には、ユーザにより設定された書き込み方式(Addition、Concat)に応じて異なる方式でデータを指定されたメモリ空間内に書き込むことができる。例えば、ユーザがAdditionモードを設定した場合、対応する一時記憶空間内のデータを指定された記憶空間内に累積的に書き込み、ユーザがConcatモードを設定した場合、ユーザにより設定されたデータ長情報に基づいて、対応する一時記憶空間内のデータを指定された記憶空間内に間隔をあけて順次書き込む。
【0039】
以下、畳み込みニューラルネットワークを例として、本願の畳み込みニューラルネットワークに基づくビデオメモリ処理プログラムの実行について詳細に説明する。
【0040】
ニューラルネットワークの各層の出力のビデオメモリ使用量状況を取得するには、各層のfeature mapの形状を計算し、かつバックプロパゲーションのために勾配を保存する必要があり、ビデオメモリ使用量はbatch sizeに正比例する。ニューラルネットワーク全体のビデオメモリ使用量は、モデルビデオメモリ+batch size*各サンプルのビデオメモリ使用量であり、モデルが小さい場合に、batch size*各サンプルのビデオメモリ使用量とほぼ等しい。
【0041】
畳み込みニューラルネットワークモデルによるトレーニングプロセスにおけるビデオメモリの使用量を節約するために、例えば、対応する一時記憶空間で複数の入力データにマージ処理を行い、対応する一時記憶空間で複数の入力データに累積処理を行うようにConcat及びAddition層などに対してビデオメモリ最適化を行うことができる。
【0042】
例えば、図3は、ビデオメモリ最適化処理が行われていない従来のCNNネットワークの部分構造である。
【0043】
図3に示すように、逆伝搬を一時的に考慮せず、順伝搬を例とすると、畳み込み層の入力データのサイズは32*32*3であり、batch sizeが5であれば、該層の入力データのサイズは32*32*3*5であり、各入出力データのサイズの計算方式は以上と同じである。したがって、データがfloatで表されると、最適化処理が行われていない該CNNネットワーク部分が使用するビデオメモリは1980kbである。
【0044】
本願の畳み込みニューラルネットワークに基づくビデオメモリ処理方法を利用して上記部分に対してビデオメモリ最適化を行い、最適化後の構成図は図4に示すとおりである。
【0045】
逆伝搬を一時的に考慮しないため、出力データ一時記憶空間を呼び出すことのみを考慮すればよく、該一時記憶空間の寸法又はサイズは、CNNネットワークにおける畳み込み層の出力データの最大サイズに設定され、該実施例では32*32*16である。図4における破線枠内の畳み込み層の出力データに対して、いずれも実際のビデオメモリ空間を割り当てず、出力データ一時記憶空間を呼び出す。
【0046】
以上より、batch sizeが5であり、かつデータがfloatで表される場合、ビデオメモリ最適化後、該CNNネットワーク部分が使用するビデオメモリは1340kbであり、ビデオメモリを32.3%節約することができる。
【0047】
上記実施例に係る電子装置1は、共有一時記憶空間を設定し、処理すべきデータのタイプ及び指示に応じて対応する一時記憶空間を呼び出し、データを対応する一時記憶空間内に読み込むか又は書き込んで演算処理を行うことにより、CNNアルゴリズムに適用することができ、他のフレームワークと比較して、Dense、Residual、Inceptionモジュールと任意に組み合わせて新たなCNN構造を形成することができ、約半分のビデオメモリを節約すると共に、GPU計算の並列度を向上させることができる。
【0048】
他の実施例では、畳み込みニューラルネットワークに基づくビデオメモリ処理プログラム10には、共有一時記憶空間マネージャがさらに設定されてもよく、該マネージャは、入力データ、出力データ、入力誤差及び出力誤差を一時的に記憶する一時記憶空間を含む。該マネージャは、対応する一時記憶空間を取得し操作するいくつかのサブモジュールを提供し、1つ以上のモジュールは、メモリ11に記憶され、かつプロセッサ12により実行されることで、本願を完成させる。本願でいうモジュールとは、特定の機能を実行できる一連のコンピュータプログラム命令セグメントを指す。図2図1における畳み込みニューラルネットワークに基づくビデオメモリ処理プログラム10の好ましい実施例のプログラムモジュールの図である。上記畳み込みニューラルネットワークに基づくビデオメモリ処理プログラム10は、以下のサブモジュール210~230に分割することができる。
【0049】
一時空間取得サブモジュール210は、モジュールに入力されたデータのタイプ(データ又は誤差)及び方向(入力又は出力)に応じて、対応する一時記憶空間を呼び出して出力する。
例えば、該一時空間取得サブモジュールに「誤差及び出力」を入力すれば、該サブモジュールは対応する出力誤差一時記憶空間を呼び出して出力する。
【0050】
データ読み込みサブモジュール220は、該データ読み込みサブモジュールに入力されたデータのタイプ(データ又は誤差)及び方向(入力又は出力)に応じて、指定された記憶空間内のデータを対応する一時記憶空間内に読み込み、かつ該一時記憶空間を出力する。
【0051】
例えば、該データ読み込みサブモジュールに「誤差及び出力」を入力すれば、該モジュールは指定された記憶空間内のデータを出力誤差一時記憶空間内に読み込み、出力誤差一時記憶空間を出力する。
【0052】
上記指定された空間とは、主に、処理対象データが現在存在する記憶空間を指し、処理対象データは該指定された空間から一時記憶空間内に読み込まれて処理される。以下は同じである。
【0053】
データ書き込みサブモジュール230は、該データ書き込みサブモジュールに入力されたデータのタイプ(データ又は誤差)及び方向(入力又は出力)に応じて、対応する一時記憶空間内のデータを指定された一時記憶空間内に書き込む。
【0054】
例えば、該データ書き込みサブモジュールに「誤差及び入力」を入力すれば、該データ書き込みモジュールは入力誤差一時記憶空間内のデータを指定された記憶空間内に書き込む。
【0055】
なお、該データ書き込みサブモジュールはまたユーザにより設定された書き込み方式(Addition¥Concat)に応じて、異なる方式でデータを指定されたメモリ空間内に書き込む場合もある。例えば、ユーザがAdditionモードを設定した場合、該データ書き込みサブモジュールは、対応する一時記憶空間内のデータを指定された記憶空間に累積的に書き込み、ユーザがConcatモードを設定した場合、該データ書き込みサブモジュールは、ユーザにより設定されたデータ長情報に基づいて、対応する一時記憶空間内のデータを指定された記憶空間に間隔をあけて順次書き込む。
【0056】
(実施例2)
本願は、畳み込みニューラルネットワークに基づくビデオメモリ処理方法をさらに提供する。図5は本願に係る畳み込みニューラルネットワークに基づくビデオメモリ処理方法の好ましい実施例のフローチャートである。該方法は、装置によって実行されてよく、該装置は、ソフトウェア及び/又はハードウェアによって実現されてよい。
【0057】
本実施例では、畳み込みニューラルネットワークに基づくビデオメモリ処理方法は、以下のS110~S140を含む。
【0058】
S110では、入力データ、出力データ、入力誤差及び出力誤差を一時的に記憶する記憶空間である一時記憶空間を作成する。
【0059】
該ステップでは、一時記憶空間は、入力データ、出力データ、入力誤差及び出力誤差を一時的に記憶する記憶空間であり、対応する一時記憶空間は、入力データ一時記憶空間、出力データ一時記憶空間、入力誤差一時記憶空間及び出力誤差一時記憶空間を含む。
【0060】
該一時記憶空間はビデオメモリ内に設定されてもよく、ビデオメモリはモデル又はデータを記憶するもので、ビデオメモリが大きいほど、動作可能なネットワークも大きくなり、一般的なビデオカードは、主に以下のいくつかの種類を有する。
【表3】
【0061】
ビデオメモリの記憶単位は、主に、
1Byte=8bitと、
1K=1024Byteと、
1KB=1000Byteと、
1M=1024Kと、
1MB=1000KBと、
1G=1024Mと、
1GB=1000GBと、
10K=10*1024Byteと、
10KB=10000Byteと、を含む。
【0062】
一般的な数値のタイプ及びそのサイズは以下の表に示すとおりである。
【表4】
【0063】
上記表において、Intは整数型の数値であり、longは長整数型の数値であり、floatは浮動小数点型の数値である(singleは単精度浮動小数点型の数値であり、doubleは倍精度浮動小数点型の数値である)。
【0064】
S120では、処理対象データのタイプ及び方向に応じて、上記処理対象データに対応する一時記憶空間を呼び出し、上記処理対象データを呼び出された一時記憶空間内に読み込む。
【0065】
例えば、処理対象データのタイプが誤差であり、方向が出力である場合、出力誤差データに応じて、対応する出力誤差一時記憶空間を呼び出し、該出力誤差を該出力誤差一時記憶空間内に読み込んで処理することができる。
【0066】
S130では、呼び出された一時記憶空間で上記処理対象データに対して所定の処理を行う。
【0067】
上記処理対象データに対して所定の処理を行うステップは、上記処理対象データに対して畳み込み処理、重畳処理、乗算処理又は積分演算のうちの少なくとも1つを行うステップを含む。
【0068】
例えば、データに対して畳み込み処理を行うとき、主に2つの変数をある範囲内で乗算した後に加算した結果を取得する。畳み込みの変数が系列x(n)及びh(n)であれば、畳み込み結果は、下式に示すとおりである。
【数3】
【0069】
式中、*は畳み込みを示す。時系列n=0の場合、系列h(-i)はh(i)の時系列iが反転された結果であり、時系列の反転によりh(i)が縦軸を中心として180度反転するため、このような、乗算後に加算する計算法は、畳み込み和と呼ばれ、畳み込みと略称される。また、nはh(-i)をシフトさせる量であり、異なるnは異なる畳み込み結果に対応する。
【0070】
畳み込みの変数がx(t)とh(t)の2つの関数であれば、畳み込みの計算は、下式に従って行われる。
【数4】
【0071】
pは積分変数であり、積分も加算であり、tは関数h(-p)をシフトさせた量であり、*は畳み込みを示す。
【0072】
同様に、ビデオメモリを節約するという目的を達成するために、上記これらの演算はいずれも一時記憶空間内で行うことができる。
【0073】
S140では、処理後のデータのタイプ及び方向に応じて、上記呼び出された一時記憶空間内のデータを指定された外部記憶空間内に書き込む。
【0074】
該ステップでは、上記呼び出された一時記憶空間内のデータを指定された外部記憶空間内に書き込むステップは、設定された書き込み方式で、上記一時記憶空間内の処理後のデータを指定された外部記憶空間内に書き込むステップを含み、書き込み方式は、additionモード及びconcatモードを含む。
【0075】
また、データのタイプは、入力データ、出力データ、入力誤差及び出力誤差を含み、上記データの方向は、入力及び出力を含む。
【0076】
具体的には、ユーザにより設定された書き込み方式(Addition、Concat)に応じて、異なる方式でデータを指定されたメモリ空間内に書き込むことができる。例えば、ユーザがAdditionモードを設定した場合、対応する一時記憶空間内のデータを指定された記憶空間内に累積的に書き込み、ユーザがConcatモードを設定した場合、ユーザにより設定されたデータ長情報に基づいて、対応する一時記憶空間内のデータを指定された記憶空間内に間隔をあけて順次書き込む。
【0077】
以下、畳み込みニューラルネットワークを例として、本願に係る畳み込みニューラルネットワークに基づくビデオメモリ処理方法について詳細に説明する。
【0078】
ニューラルネットワークの各層の出力のビデオメモリ使用量状況を取得するには、各層のfeature mapの形状を計算し、かつバックプロパゲーションのために勾配を保存する必要があり、ビデオメモリ使用量はbatch sizeに正比例する。ニューラルネットワーク全体のビデオメモリ使用量は、モデルビデオメモリ+batch size*各サンプルのビデオメモリ使用量であり、モデルが小さい場合に、batch size*各サンプルのビデオメモリ使用量とほぼ等しい。
【0079】
畳み込みニューラルネットワークモデルによるトレーニングプロセスにおけるビデオメモリの使用量を節約するために、例えば対応する一時記憶空間内で複数の入力データにマージ処理を行い、対応する一時記憶空間内で複数の入力データに累積処理を行うようにconcat及びaddition層などに対してビデオメモリ最適化を行うことができる。
【0080】
例えば、図3は、ビデオメモリ最適化処理が行われていない従来のCNNネットワークの部分構造である。
【0081】
図3に示すように、逆伝搬を一時的に考慮せず、順伝搬を例とすると、畳み込み層の入力データのサイズは32*32*3であり、batch sizeが5であれば、該層の入力データのサイズは32*32*3*5であり、各入出力データのサイズの計算方式は以上と同じである。したがって、データがfloatで表されると、最適化処理が行われない該CNNネットワーク部分が使用するビデオメモリは1980kbである。
【0082】
本願に係る畳み込みニューラルネットワークに基づくビデオメモリ処理方法を利用して上記部分に対しビデオメモリ最適化を行い、最適化後の構成図は図4に示すとおりである。
【0083】
逆伝搬を一時的に考慮しないため、出力データ一時記憶空間を呼び出すことのみを考慮すればよく、該一時記憶空間の寸法又はサイズは、CNNネットワークにおける畳み込み層の出力データの最大サイズに設定され、該実施例では32*32*16である。図4における破線枠内の畳み込み層の出力データに対して、いずれも実際のビデオメモリ空間を割り当てず、出力データ一時記憶空間を呼び出す。
【0084】
以上より、batch sizeが5であり、かつデータがfloatで表される場合、ビデオメモリ最適化後、該CNNネットワーク部分が使用するビデオメモリは1340kbであり、ビデオメモリを32.3%節約することができる。
【0085】
上記実施例に係る畳み込みニューラルに基づくビデオメモリ処理方法は、共有一時記憶空間を設定し、処理すべきデータのタイプ及び指示に応じて、対応する一時記憶空間を呼び出し、かつデータを対応する一時記憶空間内に読み込むか又は書き込んで演算処理を行うことにより、CNNアルゴリズムに適用することができ、他のフレームワークと比較して、Dense、Residual、Inceptionモジュールと任意に組み合わせて新たなCNN構造を形成することができ、約半分のビデオメモリを節約すると共に、GPU計算の並列度を向上させることができる。
【0086】
(実施例3)
上記実施例2に係る畳み込みニューラルネットワークに基づくビデオメモリ処理方法に対応し、本願は畳み込みニューラルネットワークに基づくビデオメモリ処理システムをさらに提供する。図6は、本実施例に係る畳み込みニューラルネットワークに基づくビデオメモリ処理システムの論理構造を示す。
【0087】
図6に示すように、本実施例に係る畳み込みニューラルネットワークに基づくビデオメモリ処理システム600は、空間作成部610、データ呼び出し部620、前処理部630、及びデータ書き込み部640を含む。空間作成部610、データ呼び出し部620、前処理部630及びデータ書き込み部640により実現される機能は、上記実施例2における畳み込みニューラルネットワークに基づくビデオメモリ処理方法における対応するステップと一対一に対応する。
【0088】
具体的には、空間作成部610は、入力データ、出力データ、入力誤差及び出力誤差を一時的に記憶する記憶空間である一時記憶空間を作成し、空間作成部610は、ビデオメモリ内で一時記憶空間を作成することができ、ビデオメモリは、モデル又はデータを記憶するもので、ビデオメモリが大きいほど、動作可能なネットワークも大きくなる。作成された一時記憶空間は、入力データ一時記憶空間、出力データ一時記憶空間、入力誤差一時記憶空間及び出力誤差一時記憶空間を含んでよい。
【0089】
データ呼び出し部620は、処理対象データのタイプ及び方向に応じて、該処理対象データに対応する一時記憶空間を呼び出し、該処理対象データを呼び出された一時記憶空間内に読み込む。例えば、処理対象データのタイプが誤差であり、方向が出力である場合、出力誤差データに応じて、対応する出力誤差一時記憶空間を呼び出し、該出力誤差を該出力誤差一時記憶空間内に読み込んで処理することができる。
【0090】
前処理部630は、データ呼び出し部620により呼び出された一時記憶空間内で処理対象データに対して所定の処理を行う。該所定の処理は、上記処理対象データに対して行う畳み込み処理、重畳処理、乗算処理又は積分演算のうちの少なくとも1つを含んでよい。
【0091】
例えば、前処理部630がデータに対して畳み込み処理を行うときに、主に2つの変数をある範囲内で乗算した後に加算した結果を取得する。畳み込みの変数が系列x(n)及びh(n)であれば、畳み込み結果は下式に示すとおりである。
【数5】
【0092】
式中、*は畳み込みを示す。時系列n=0の場合、系列h(-i)はh(i)の時系列iが反転された結果であり、時系列の反転によりh(i)が縦軸を中心として180度反転するため、このような乗算後に加算する計算法は畳み込み和と呼ばれ、畳み込みと略称される。また、nはh(-i)をシフトさせる量であり、異なるnは異なる畳み込み結果に対応する。
【0093】
畳み込みの変数がx(t)とh(t)の2つの関数であれば、畳み込みの計算は、下式に従って行われる。
【数6】
【0094】
pは積分変数であり、積分も加算であり、tは関数h(-p)をシフトさせた量であり、*は畳み込みを示す。
【0095】
同様に、ビデオメモリを節約するという目的を達成するために、上記これらの演算はいずれも一時記憶空間内で行うことができる。
【0096】
データ書き込み部640は、処理後のデータのタイプ及び方向に応じて、呼び出された一時記憶空間内のデータを指定された外部記憶空間内に書き込む。
【0097】
データ書き込み部640は、設定された書き込み方式で、上記一時記憶空間内の処理後のデータを指定された外部記憶空間に書き込むことができ、該書き込み方式はAdditionモード及びConcatモードを含む。ユーザがAdditionモードを設定した場合、対応する一時記憶空間内のデータを指定された記憶空間に累積的に書き込み、ユーザがConcatモードを設定した場合、ユーザにより設定されたデータ長情報に基づき、対応する一時記憶空間内のデータを指定された記憶空間に間隔をあけて順次書き込む。
【0098】
上記実施例に係る畳み込みニューラルに基づくビデオメモリ処理システムは、共有一時記憶空間を設定し、処理すべきデータのタイプ及び指示に応じて、対応する一時記憶空間を呼び出し、かつデータを対応する一時記憶空間に読み込むか又は書き込んで演算処理を行うことにより、CNNアルゴリズムに適用することができ、他のフレームワークと比較して、Dense、Residual、Inceptionモジュールと任意に組み合わせて新たなCNN構造を形成することができ、約半分のビデオメモリを節約すると共に、GPU計算の並列度を向上させることができる。
【0099】
(実施例4)
本願の実施例に係るコンピュータ読取り可能な記録媒体は、プロセッサによって実行されると、入力データ、出力データ、入力誤差及び出力誤差を一時的に記憶する記憶空間である一時記憶空間を作成する動作と、処理対象データのタイプ及び方向に応じて、処理対象データに対応する一時記憶空間を呼び出し、処理対象データを呼び出された一時記憶空間内に読み込む動作と、呼び出された一時記憶空間で処理対象データに対して所定の処理を行う動作と、処理後のデータのタイプ及び方向に応じて、呼び出された一時記憶空間内のデータを指定された外部記憶空間に書き込む動作と、を実現する、畳み込みニューラルに基づくビデオメモリ処理プログラムを含む。
【0100】
好ましくは、一時記憶空間は、入力データ一時記憶空間、出力データ一時記憶空間、入力誤差一時記憶空間及び出力誤差一時記憶空間を含む。
【0101】
好ましくは、処理対象データに対して所定の処理を行うステップは、処理対象データに対して畳み込み処理、重畳処理、乗算処理又は積分演算のうちの少なくとも1つを行うステップを含む。
【0102】
好ましくは、上記呼び出された一時記憶空間内のデータを指定された外部記憶空間に書き込むステップは、設定された書き込み方式で、一時記憶空間内の処理後のデータを指定された外部記憶空間に書き込むステップを含み、書き込み方式は、Additionモード及びConcatモードを含む。
【0103】
好ましくは、データのタイプは、入力データ、出力データ、入力誤差及び出力誤差を含み、上記データの方向は、入力及び出力を含む。
【0104】
本願のコンピュータ読取り可能な記録媒体の具体的な実施形態は、上記畳み込みニューラルネットワークに基づくビデオメモリ処理方法、システム、電子装置の具体的な実施形態とほぼ同じであるため、ここでは説明を省略する。
【0105】
なお、本明細書において、用語「含む」、「備える」又はそれらの任意の他の変形は、非排他的な包含をカバーするものであることにより、一連の要素を含むプロセス、装置、物品又は方法は、それらの要素を含むだけでなく、明確に例示されていない他の要素をさらに含むか、又はこれらのプロセス、装置、物品又は方法固有の要素をさらに含む。更なる限定がない限り、語句「……を含む」により限定された要素は、該要素を含むプロセス、装置、物品又は方法に別の同一の要素がさらに存在する可能性がある。
【0106】
本願の上記実施例の番号は、説明のためのものに過ぎず、実施例の優劣を示すものではない。以上の実施形態の説明により、当業者が明確に理解できるように、上記実施例の方法は、ソフトウェアと必要な汎用ハードウェアプラットフォームを併用した方法で実現でき、当然のことながら、ハードウェアでも実現できるが、多くの場合に前者がより好ましい実施形態である。このような理解に基づいて、本願の技術手段は、本質的又は従来技術に寄与する部分が、ソフトウェア製品の形態で具現化されてよく、該コンピュータソフトウェア製品は、上記記録媒体(例えば、ROM/RAM、磁気ディスク、光ディスク)に記憶されており、1台の端末装置(携帯電話、コンピュータ、サーバ又はネットワーク装置などであってよい)に本願の各実施例に記載の方法を実行させるための複数の命令を含む。
【0107】
以上は、本願の好ましい実施例に過ぎず、本願の保護範囲を限定するものではなく、本願の明細書及び図面の内容を利用してなされた等価構造又は等価フロー変換、又は他の関連する技術分野における直接又は間接運用は、いずれも同様に本願の保護範囲に含まれる。
図1
図2
図3
図4
図5
図6