JP2019109895A - ニューラルネットワークにおける畳み込み計算のための方法および電子デバイス - Google Patents

ニューラルネットワークにおける畳み込み計算のための方法および電子デバイス Download PDF

Info

Publication number
JP2019109895A
JP2019109895A JP2018236272A JP2018236272A JP2019109895A JP 2019109895 A JP2019109895 A JP 2019109895A JP 2018236272 A JP2018236272 A JP 2018236272A JP 2018236272 A JP2018236272 A JP 2018236272A JP 2019109895 A JP2019109895 A JP 2019109895A
Authority
JP
Japan
Prior art keywords
predetermined number
pointwise
points
convolution
convolutional
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.)
Granted
Application number
JP2018236272A
Other languages
English (en)
Other versions
JP6813561B2 (ja
Inventor
▲亮▼ ▲陳▼
▲亮▼ ▲陳▼
Liang Chen
▲暢▼ 黄
Chang Huang
▲暢▼ 黄
坤 凌
Kun Ling
坤 凌
建▲軍▼ 李
Jian Jun Li
建▲軍▼ 李
▲徳▼林 李
De Lin Li
▲徳▼林 李
恒 ▲羅▼
恒 ▲羅▼
Heng Luo
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.)
Nanjing Horizon Robotics Technology Co Ltd
Original Assignee
Nanjing Horizon Robotics Technology Co Ltd
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 Nanjing Horizon Robotics Technology Co Ltd filed Critical Nanjing Horizon Robotics Technology Co Ltd
Publication of JP2019109895A publication Critical patent/JP2019109895A/ja
Application granted granted Critical
Publication of JP6813561B2 publication Critical patent/JP6813561B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • 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
    • 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/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • 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

Abstract

【課題】中間結果を記憶するための記憶領域を減らし得るニューラルネットワーク内の畳み込み計算のための方法および電子デバイスを提供する。【解決手段】ニューラルネットワークにおける畳み込み計算のための方法であって、DRAMから読み出した入力特徴マップ、depthwise畳み込みカーネル、pointwise畳み込みカーネルに基づいて、depthwise畳み込み計算およびpointwise畳み込み計算を、入力特徴マップ、depthwise畳み込みカーネル、pointwise畳み込みカーネルに従って実行して、すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を取得するステップS110と、上記の演算を繰り返して、すべてのpointwise畳み込み出力チャネル上ですべての点の出力特徴値を取得するステップS120とを含む。【選択図】図3

Description

本開示は、ニューラルネットワークの技術分野に関し、より詳細には、ニューラルネットワークにおける畳み込み計算のための方法および電子デバイスに関する。
畳み込みニューラルネットワークに基づくディープラーニング技術は、画像認識および検出、音声認識などを高い精度で行うために使用されてよく、したがって、安全監視、運転補助、インテリジェントコンパニオンロボット、インテリジェント医療などの分野において広く使用されている。
畳み込みニューラルネットワークは演算集約的であるため、ニューラルネットワークのパラメータの数および計算量を減らすことが、現在の研究のホットな動向(hot direction)となっている。モバイルネットワーク(すなわち、MobileNet)は、最新の特別な畳み込みニューラルネットワークであり、これは、従来の3次元畳み込み演算を2つの畳み込み演算、すなわち、depthwise畳み込み(depthwise convolution)とpointwise畳み込み(pointwise convolution)に分解することによって計算量を減らし、その一方で計算精度は従来の畳み込みと少しだけ異なる。
MobileNetの既存の実装ソリューションに関して、それが汎用プロセッサ(CPU)に基づこうと、専用グラフィックスプロセッサ(GPU)に基づこうと、または専用処理チップに基づこうと、depthwise畳み込み演算の出力を最初に計算し、次いで、それらをpointwise畳み込み演算の入力データとして受け取り、次いで、計算を実行することが必要である。
このアプローチの不利点は、入力および出力のデータ量が比較的大きいときに、中間結果をバッファリングするためにより大きいオンチップランダムアクセスメモリ(SRAM)が必要になることである。しかしながら、オンチップSRAMのサイズは固定されている。オンチップSRAMのサイズが、中間結果をバッファリングするのに不十分である場合、depthwise畳み込み演算を複数の計算に分割し、各計算結果を、depthwise畳み込み演算の計算結果が完全に計算され、オフチップメモリ(DDR)に書き込まれるまでオフチップメモリ(DDR)内に書き込み、次いで、これらの結果をバッチでDDRから読み出し、pointwise畳み込み計算を実行する必要がある。明らかに、これは、限られたデータ伝送帯域幅に非常に大きな負担をかけ、システム消費電力の増大を引き起こすことになる。
上記の技術的問題を解決するために、本開示が提案されている。中間結果を記憶するための記憶領域を減らし得るニューラルネットワーク内の畳み込み計算のための方法および電子デバイスが、本開示の実施形態において実現される。
本開示の一態様によれば、開示されているのは、ニューラルネットワークにおける畳み込み計算のための方法であり、これは、ダイナミックランダムアクセスメモリ(DRAM)から入力特徴マップ、depthwise畳み込みカーネル、pointwise畳み込みカーネルを読み出すステップと、入力特徴マップ、depthwise畳み込みカーネル、pointwise畳み込みカーネルに従ってdepthwise畳み込み計算およびpointwise畳み込み計算を実行してすべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を取得するステップと、すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値をオンチップメモリに記憶するステップであって、第1の所定の数pは、オンチップメモリ内の利用可能な空間、depthwise畳み込み計算ユニットの数、ならびに入力特徴マップの幅、高さ、およびチャネルの大きさのうちの少なくとも1つに従って決定される、ステップと、上記の演算を繰り返して、すべてのpointwise畳み込み出力チャネル上ですべての点の出力特徴値を取得するステップとを含む。
一実施形態において、入力特徴マップ、depthwise畳み込みカーネル、pointwise畳み込みカーネルに従ってdepthwise畳み込み計算およびpointwise畳み込み計算を実行してすべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を取得するステップは、入力特徴マップおよびdepthwise畳み込みカーネルに従ってdepthwise畳み込み計算を実行してすべてのdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値を取得するステップと、すべてのdepthwise畳み込み出力チャネルおよびpointwise畳み込みカーネル上で第1の所定の数p個の点の中間特徴値に従ってpointwise畳み込み計算を実行して、すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を取得するステップとを含む。
一実施形態において、入力特徴マップ、depthwise畳み込みカーネル、pointwise畳み込みカーネルに従ってdepthwise畳み込み計算およびpointwise畳み込み計算を実行してすべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を取得するステップは、入力特徴マップおよびdepthwise畳み込みカーネルに従ってdepthwise畳み込み計算を実行して、第2の所定の数m個のdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値を取得するステップと、第1の所定の数p個の点の中間特徴値によるpointwise畳み込み計算を第2の所定の数m個のdepthwise畳み込み出力チャネルおよびpointwise畳み込みカーネルに対して実行して、すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の現在のpointwise畳み込み部分和を得るステップと、すべてのpointwise畳み込み出力チャネル上の第1の所定の数p個の点の現在のpointwise畳み込みの部分和と第1の所定の数p個の点の前の累算計算結果に対する累算計算をそれぞれ実行して、第1の所定の数p個の点の現在の累算計算結果を生成するステップと、上記の演算を繰り返し、次の第2の所定の数m個のdepthwise畳み込み出力チャネルおよびpointwise畳み込みチャネル上で第1の所定の数p個の点の中間特徴値に従ってpointwise畳み込み計算を実行するステップと、それに対応して、その後の演算を、pointwise畳み込み計算および累算計算がすべてのdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値のすべてに対して完了するまで、実行するステップであって、第1の所定の数p個の点の最終的累算計算結果がすべてのpointwise畳み込み出力チャネル上の第1の所定の数p個の点の出力特徴値である、ステップとを含む。
本開示の別の態様によれば、開示されているのは、プロセッサと、プロセッサによって実行されたときに、プロセッサにニューラルネットワークにおいて畳み込み計算のための方法を実行させるコンピュータプログラム命令が記憶されているメモリとを備える電子デバイスであり、方法はダイナミックランダムアクセスメモリ(DRAM)から入力特徴マップ、depthwise畳み込みカーネル、およびpointwise畳み込みカーネルを読み出すステップと、入力特徴マップ、depthwise畳み込みカーネル、pointwise畳み込みカーネルに従ってdepthwise畳み込み計算およびpointwise畳み込み計算を実行してすべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を取得するステップと、すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値をオンチップメモリに記憶するステップであって、第1の所定の数pは、オンチップメモリ内の利用可能な空間、depthwise畳み込み計算ユニットの数、ならびに入力特徴マップの幅、高さ、およびチャネルの大きさのうちの少なくとも1つに従って決定される、ステップと、上記の演算を繰り返して、すべてのpointwise畳み込み出力チャネル上ですべての点の出力特徴値を取得するステップとを含む。
本開示の別の態様によれば、開示されているのは、プロセッサによって実行されたときに、プロセッサにニューラルネットワークにおいて畳み込み計算のための方法を実行させるコンピュータプログラム命令を備えるコンピュータプログラム製品であり、方法はダイナミックランダムアクセスメモリ(DRAM)から入力特徴マップ、depthwise畳み込みカーネル、pointwise畳み込みカーネルを読み出すステップと、入力特徴マップ、depthwise畳み込みカーネル、pointwise畳み込みカーネルに従ってdepthwise畳み込み計算およびpointwise畳み込み計算を実行してすべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を取得するステップと、すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値をオンチップメモリに記憶するステップであって、第1の所定の数pは、オンチップメモリ内の利用可能な空間、depthwise畳み込み計算ユニットの数、ならびに入力特徴マップの幅、高さ、およびチャネルの大きさのうちの少なくとも1つに従って決定される、ステップと、上記の演算を繰り返して、すべてのpointwise畳み込み出力チャネル上ですべての点の出力特徴値を取得するステップとを含む。
本開示の別の態様によれば、開示されているのは、プロセッサによって実行されたときに、プロセッサにニューラルネットワークにおいて畳み込み計算のための方法を実行させるコンピュータプログラム命令が記憶されているコンピュータ可読および書込可能記憶媒体であり、方法はダイナミックランダムアクセスメモリ(DRAM)から入力特徴マップ、depthwise畳み込みカーネル、pointwise畳み込みカーネルを読み出すステップと、入力特徴マップ、depthwise畳み込みカーネル、pointwise畳み込みカーネルに従ってdepthwise畳み込み計算およびpointwise畳み込み計算を実行してすべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を取得するステップと、すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値をオンチップメモリに記憶するステップであって、第1の所定の数pは、オンチップメモリ内の利用可能な空間、depthwise畳み込み計算ユニットの数、ならびに入力特徴マップの幅、高さ、およびチャネルの大きさのうちの少なくとも1つに従って決定される、ステップと、上記の演算を繰り返して、すべてのpointwise畳み込み出力チャネル上ですべての点の出力特徴値を取得するステップとを含む。
従来技術と比較して、ニューラルネットワークにおける畳み込み計算方法および本開示の実施形態による電子デバイスは、入力特徴マップ、depthwise畳み込みカーネル、およびpointwise畳み込みカーネルに従ってdepthwise畳み込み計算およびpointwise畳み込み計算を実行して、すべてのpointwise畳み込み出力チャネル上の第1の所定の数p個の点の出力特徴値を取得し、上記演算を繰り返してすべてのpointwise畳み込み出力チャネル上ですべての点の出力特徴値を取得するものとしてよい。したがって、中間結果を記憶するための記憶領域は減らされ、それにより、より効率的な畳み込みニューラルネットワークが実現され得る。
本開示の上記のならびに他の目的、特徴、および利点は、添付図面を参照しつつより詳しく本開示の実施形態を説明することを通じてさらに明らかになるであろう。図面は、本開示の実施形態をさらに深く理解してもらうために使用されており、本明細書の一部をなし、図面は、本開示の実施形態と併せて、本開示を説明するために使用され、本開示に対する制限を構成しない。図面中、同じ参照番号は、一般的に、同じ部分またはステップを指す。
従来の畳み込みニューラルネットワーク内の畳み込みカーネルを示す概略図である。 MobileNetにおけるdepthwise畳み込み演算の畳み込みカーネルを示す概略図である。 MobileNetにおけるpointwise畳み込み演算の畳み込みカーネルを示す概略図である。 本開示の一実施形態による畳み込み計算のための方法を示すフローチャートである。 本開示の第1の実施形態によるすべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を計算するステップを示すフローチャートである。 本開示の第1の実施形態によるすべてのdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値を計算するステップを示すフローチャートである。 本開示の第1の実施形態によるすべてのdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値を計算するステップを示す概略図である。 中間特徴値によるすべてのpointwise畳み込み出力チャネルおよび本開示の第1の実施形態によるpointwise畳み込みカーネル上で第1の所定の数p個の点の出力特徴値を計算するステップを示すフローチャートである。 中間特徴値によるすべてのpointwise畳み込み出力チャネルおよび本開示の第1の実施形態によるpointwise畳み込みカーネル上で第1の所定の数p個の点の出力特徴値を計算するステップを示す概略図である。 本開示の一実施形態によるdepthwise畳み込み計算を示す概略図である。 本開示の一実施形態によるpointwise畳み込み計算を示す概略図である。 中間特徴値によるすべてのpointwise畳み込み出力チャネルおよび本開示の第2の実施形態によるpointwise畳み込みカーネル上で第1の所定の数p個の点の出力特徴値を計算するステップを示すフローチャートである。 中間特徴値によるすべてのpointwise畳み込み出力チャネルおよび本開示の第2の実施形態によるpointwise畳み込みカーネル上で第1の所定の数p個の点の出力特徴値を計算するステップを示すフローチャートである。 本開示の第3の実施形態によるすべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を計算するステップを示すフローチャートである。 本開示の第3の実施形態によるすべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の現在のpointwise畳み込み部分和を計算するステップを示す概略図である。 本開示の一実施形態による電子デバイスを示すブロック図である。
これ以降、本開示による例示的な一実施形態は、図面を参照しつつ詳しく説明される。明らかに、説明されている実施形態は、本開示の実施形態の一部のみであり、本開示の実施形態すべてではなく、本開示は、本明細書において説明されている例示的な実施形態によって限定されないことは理解されるであろう。
開示の要約
畳み込みニューラルネットワークは、一般的に、複数の畳み込み層を含み得る。各畳み込み層において、層の入力特徴マップ(入力特徴データまたは入力特徴値とも呼ばれる)に対して畳み込み演算を実行して層の出力特徴マップ(出力特徴データまたは出力特徴値とも呼ばれる)を取得するために層の畳み込みカーネルが使用される。畳み込みニューラルネットワークの各層において、入力特徴マップは、特定の幅および高さを有するものとしてよく、特定の数のチャネル(深さとも呼ばれる)を有し得る。各畳み込みカーネルは、入力特徴マップの幅および高さより小さい(または等しい)、同じ(または異なる)幅および高さを有するものとしてよく、入力特徴マップのチャネルの数に等しい、同じ数のチャネルを有し得る。
ライトウェイトニューラルネットワークとしてのMobileNetは、depthwise separable畳み込みの考え方を使用し、畳み込みを計算するときにチャネルを融合する代わりに(たとえば、3*3畳み込みカーネルまたはそれより大きいサイズ)、これは、depthwise(またはchannel-wiseと呼ばれる)および1*1 pointwise畳み込み法を使用して、畳み込みを分解し、それにより、速度およびモデルサイズが最適化され、計算精度は基本的に保たれる。
次に、従来の畳み込みニューラルネットワークの畳み込み計算プロセスとMobileNetの畳み込み計算プロセスとの比較が、図1から図2Bを参照しつつ説明される。
図1は、従来の畳み込みニューラルネットワーク内の畳み込みカーネルの概略図を示し、図2Aは、MobileNetにおけるdepthwise畳み込み演算の畳み込みカーネルの概略図を示し、図2Bは、MobileNetにおけるpointwise畳み込み演算の畳み込みカーネルの概略図を示す。
図1に示されているように、従来の畳み込みニューラルネットワーク内の畳み込みカーネルのサイズは、R行およびS列であり、全部でM個のチャネルとN個のそのような畳み込みカーネルがあると仮定すると、1つの点を出力する入力特徴マップによる畳み込み計算の計算量は、R*S*M*Nとなる。入力特徴マップサイズがX行およびY列であり、全部でM個のチャネルがあると仮定すると、全畳み込み計算の計算量は、R*S*M*N*X*Yとなる。式で表すと、特定の出力点(x,y,n)の値は、
となる。
図2Aに示されているdepthwise畳み込みと図2Bに示されているpointwise畳み込みのカスケードは、図1の従来の畳み込み演算に対応するMobileNet畳み込み演算である。
図2Aのdepthwise畳み込みは、従来の畳み込みにおける1つの畳み込みカーネルのM個のチャネルをM個のdepthwise畳み込みカーネルに分割することとして見なされてよく、その各々はR行およびS列、ならびに1個のチャネルのみを有する。M個のdepthwise畳み込みカーネルは、入力特徴マップのM個のチャネルとそれぞれ畳み込みし、累算することなくM個のチャネルの出力結果を得る。全畳み込み計算の計算量は、R*S*M*1*X*Yである。式で表すと、特定の出力点(x,y,m)の値は、
となる。
図2Bにおけるpointwise畳み込みは、畳み込みカーネルのサイズが1行および1列で、全部でM個のチャネルおよびそのような畳み込みカーネルのうちのN個があることを除き、従来の畳み込み演算と全く同じである。N個のdepthwise畳み込みカーネルは、それぞれ、入力特徴マップと畳み込みし、N個のチャネルの出力結果を得る。全畳み込み計算の計算量は、1*1*M*N*X*Yである。式で表すと、特定の出力点(x,y,n)の値は、
となる。
MobileNet畳み込み演算は、従来の畳み込みの計算量をR*S*M*N*X*YからR*S*M*X*Y+M*N*X*Yに減らし、畳み込み演算の計算量を著しく低減することがわかる。したがって、R*Sが3*3である場合、計算量は、同等の従来の畳み込みの1/9から1/8であることがわかる。
現在、MobileNetの既存の実装ソリューションはすべて、最初に、depthwise畳み込み演算の中間出力結果を計算して、それらを連続的にオンチップSRAMに記憶することをすべての計算が完了するまで行い、次いで、それらをオンチップSRAMからpointwise畳み込み演算の入力データとして読み出し、計算を実行する必要がある。多数のdepthwise畳み込み中間出力結果がオンチップランダムアクセスメモリに記憶されるべきであるので、大量のオンチップメモリが必要であり、そのため、チップ面積およびコストが増大するか、または中間結果がオフチップランダムアクセスメモリに記憶される場合、限られているデータ伝送帯域幅により大きな負担がかかり、システムの消費電力が増大する。
この技術的問題について、MobileNetネットワークの特別な畳み込み構造--depthwise畳み込みとそれに続くpointwise畳み込みを考察することで、本開示は、ニューラルネットワークにおける畳み込み計算のための方法、装置、電子デバイス、コンピュータプログラム製品、およびコンピュータ可読記憶媒体を実現し、入力特徴マップ、depthwiseカーネル、およびpointwiseカーネルに従ってdepthwise畳み込み計算およびpointwise畳み込み計算を実行し、pointwise出力チャネルのすべてにおける第1の所定の数p個の点の出力特徴値を取得し、上記の演算を繰り返してすべてのpointwise出力チャネル上のすべての点の出力特徴値を取得し得る。したがって、depthwise畳み込みの中間出力結果を記憶するための記憶領域は減らされ、それにより、より効率的な畳み込みニューラルネットワークが実現され得る。
当業者であれば、本開示の実施形態による畳み込み計算方法は、MobileNet畳み込みニューラルネットワークに適用されるだけでなく、depthwise畳み込みの後にpointwise畳み込みが続く畳み込み計算プロセスを含む限り、他のタイプの畳み込みニューラルネットワークにも適用されてよく、したがって、本開示の実施形態は、畳み込みニューラルネットワークのタイプに制限を課すことを意図していないことを理解するであろう。
本開示の基本原理を導入した後、本開示の様々な非限定的な実施形態は、MobileNetを例として取りあげ、図面を参照することによって以下で具体的に説明される。
例示的な方法
図3は、本開示の一実施形態による畳み込み計算のための方法を示すフローチャートである。
図3に示されているように、本開示の一実施形態による畳み込み計算方法は以下のステップを含み得る。
ステップS110において、depthwise畳み込み計算およびpointwise畳み込み計算は、入力特徴マップ、depthwise畳み込みカーネル、pointwise畳み込みカーネルに従って実行され、すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を取得する。
第1の所定の数pは、メモリ内の利用可能な空間、depthwise畳み込み計算ユニットの数、高さおよび幅の大きさ、ならびに入力特徴マップのチャネル数の大きさのうちの少なくとも1つに従って決定され得る。
たとえば、メモリは、より高速なアクセス速度を実現し、データ伝送帯域幅を占有するのを回避するためにオンチップランダムアクセスメモリ(SRAM)であってよい。しかし、本開示は、それに限定されない。たとえば、メモリは、オフチップメモリ(DDR)などの、他のメモリであってよい。メモリ内の利用可能な空間は、depthwise畳み込み演算の中間出力結果をバッファリングするために使用され得る。
たとえば、幅および高さがより大きく(すなわち、点が多い)、現在の畳み込み層のチャネルの数がより少ない(すなわち、深さが非常に浅い)(たとえば、現在の層は畳み込みニューラルネットワーク全体の第1の少数の層内にある)ときに、第1の所定の数pは、より大きい値に設定されてよい。反対に、現在の畳み込み層の幅および高さがより小さく(すなわち、点がより少ない)、チャネルの数がより多い(すなわち、深さが非常に深い)(たとえば、現在の層は畳み込みニューラルネットワーク全体の最近の少数の層内にある)ときに、第1の所定の数pは、より小さい値に設定されてよい。
depthwise畳み込みがM個のチャネル(またはM個のdepthwise畳み込みカーネルとも呼ばれる)を有していると仮定すると、メモリ内の利用可能な空間は、depthwise畳み込み演算の中間出力結果をバッファリングする必要がある、すなわち、p*M個の中間特徴値がバッファリングされる必要がある。特徴値が逆量子化データであるときには、利用可能な空間の容量Cは、p*m*32ビット以上であるべきであり、特徴値が8ビット量子化データであるときには、利用可能な空間の容量Cは、p*m*8ビット以上であるべきである。したがって、別の角度から見ると、利用可能な空間の容量Cが固定されている場合、量子化が使用されなければ、第1の所定の数pはC/(M*32)をとってもよく、量子化が使用される場合、第1の所定の数pはC/(M*8)をとってもよい。
さらに、第1の所定の数pは、乗算器-加算器ユニットの数の約数であり得る、depthwise畳み込み計算ユニット(たとえば、乗算器-加算器ユニットMAC)の数によっても制限されることがある。
ステップS120において、上記の演算(すなわち、ステップS110)が繰り返され、すべてのpointwise畳み込み出力チャネル上ですべての点の出力特徴値を取得する。
たとえば、ステップS110が再び実行され、すべてのpointwise畳み込み出力チャネル上で次の第1の所定の数p個の点の出力特徴値が計算され、ステップS110は、すべてのpointwise畳み込み出力チャネル上ですべての点の出力特徴値が取得されるまで連続的に繰り返される。
残りの点の数が、最後の計算のプロセスにおいてp個の点の出力特徴値を生成するのに十分でない場合、これはパディング(たとえば、0がパディングされる)方式で実現され得る。代替的に、これは、畳み込み計算ユニットの作業量を減らすなどの他の方式によっても実現され得る。
既存の実装ソリューションによれば、depthwise畳み込み演算のすべての中間出力結果は、最初に計算され記憶される。depthwise畳み込み演算の中間出力結果として、高さおよび幅の大きさにおいて全部でH行およびW列があると仮定される。本開示の一実施形態において、MobileNetではdepthwise畳み込みの後にpointwise畳み込みが続くという特徴によれば、pointwise畳み込み演算を計算する前にH*W中間出力点のすべてに対する計算が完了しているのを待つ代わりに、pointwise畳み込み演算は、p(pはH*W未満、好ましくはH*Wよりかなり小さく、確かにpはH*Wに等しくてもよい)個の点のdepthwise畳み込み結果が計算された直後にのみ実行され、それにより、depthwise畳み込み演算の中間出力結果に必要な記憶領域は、従来の畳み込みニューラルネットワークに必要な記憶領域のp/(H*W)まで低減され、これは、depthwise畳み込み演算の中間出力結果を記憶するための記憶領域を著しく減らす。depthwise畳み込み演算によって出力される中間データ量がH*W*Mであると仮定すると、本開示の実施形態では、すべてのdepthwise畳み込み演算によって出力される中間結果が計算され、pointwise畳み込み計算のためにバッチで読み出されるまでオンチップ記憶領域が不十分なのでdepthwise畳み込み結果をオフチップメモリにバッチで書き込む複雑なプロセスを回避するために、p*M(H*W*Mよりかなり小さくてよい)サイズを有するオンチップ記憶リソースだけあればよい。統計によれば、オンチップ記憶リソースが畳み込み出力結果の次の完全層を記憶するのに十分でないが、畳み込み出力結果の次の完全層のp/(H*W)が記憶されてよい場合、本開示では、MobileNetネットワークのデータ伝送帯域幅を約50%低減する。
これ以降、本開示の実施形態による入力特徴マップにおいてdepthwise畳み込み計算およびpointwise畳み込み計算を実行しすべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を取得するステップS110を、様々な実施形態において詳しく説明する。
様々な実施形態がそれぞれ説明されているが、様々な実施形態を可能な場合に全体としてまたは一部だけ一緒に組み合わせ得ることに留意されたい。
第1の実施形態
本開示の第1の実施形態において、すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を取得するために、(1)depthwise畳み込み演算を実行してすべてのdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値を取得する演算と、(2)中間特徴値に基づきpointwise畳み込み演算を実行し、1つまたは複数のpointwise畳み込み出力チャネル上でp個の点の出力特徴値を取得する演算と、(3)上記の演算(2)を繰り返して、すべてのpointwise畳み込み出力チャネル上でp個の点の出力特徴値を取得する演算が実行され得る。
図4は、本開示の第1の実施形態によるすべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を計算するステップのフローチャートを示している。
図4に示されているように、本開示の第1の実施形態によれば、すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を計算するステップS110は以下のステップを含み得る。
ステップS210において、depthwise畳み込み計算が入力特徴マップおよびdepthwise畳み込みカーネルに従って実行され、すべてのdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値を取得する。
現在の畳み込み層において、入力特徴マップおよびdepthwise畳み込みカーネルが取得され、depthwise畳み込み計算が実行される。入力特徴マップのサイズがX行およびY列であり、全部でM個のチャネルがあると仮定される。それに対応して、M個のdepthwise畳み込みカーネルがあり、各depthwise畳み込みカーネルのサイズは、R行およびS列、ならびにただ1つのチャネルである。depthwise畳み込み計算を実行するときに、入力特徴マップの第1のチャネルは、第1のdepthwise畳み込みカーネルと畳み込まれて中間特徴マップの第1のチャネルを取得し、入力特徴マットの第2のチャネルは、第2のdepthwise畳み込みカーネルと畳み込まれて中間特徴マップの第2のチャネルを取得する、などと続き、中間特徴値を含み、H行およびW列および全部でM個のチャネルを有する中間特徴マップを取得する。depthwise畳み込み計算のストライドが1であり、パディングが1であるときにH=RおよびW=Sである。
第1の実施形態では、従来技術とは異なり、すべてのM個のdepthwise畳み込み出力チャネル上のすべてのH*W個の点のすべての中間特徴値が直接計算される代わりに、すべてのM個のチャネル上のp個の点の中間特徴値のみが計算される。
ステップS220において、pointwise畳み込み計算は、すべてのdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値、およびpointwise畳み込みカーネルに従って実行され、すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を取得する。
pointwise畳み込みカーネルが取得され、pointwise畳み込み計算が、すべてのM個のチャネル上でp個の点の中間特徴値に対して実行され、すべてのpointwise畳み込み出力チャネル上でp個の点の出力特徴値を取得する。
上で説明されているように、中間特徴マップのサイズは、H行およびW列であり、全部でM個のチャネルがある。それに対応して、各々1行および1列を有し、チャネルを1つだけ有するN個のpointwise畳み込みカーネルがある。pointwise畳み込み計算を実行するときに、中間特徴マップのすべてのチャネルが第1のpointwise畳み込みカーネルのすべてのチャネルと畳み込まれて出力特徴マップの第1のチャネルを取得し、中間特徴マップのすべてのチャネルが、第2のpointwise畳み込みカーネルのすべてのチャネルと畳み込まれて出力特徴マップの第2のチャネルを取得する、などと続き、出力特徴値を含み、E行およびF列を有し、全部でN個のチャネルがある出力特徴マップを取得する。pointwise畳み込み計算のストライドが1であるときに、E=HおよびF=Wである。
第1に、入力特徴マップに対してdepthwise畳み込み計算を実行してすべてのdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値を取得するステップS210は、図5および図6を参照しつつ説明される。
図5は、本開示の第1の実施形態によるすべてのdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値を計算するステップのフローチャートを示している。図6は、本開示の第1の実施形態によるすべてのdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値を計算するステップの概略図を示している。
図5に示されているように、すべてのdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値を計算するステップS210は、以下のステップを含み得る。
ステップS211において、depthwise畳み込み計算が入力特徴マップおよびdepthwise畳み込みカーネルに従って実行され、第2の所定の数m個のdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値を取得する。
たとえば、第2の所定の数mは、depthwise畳み込み計算ユニットの数および第1の所定の数pに従って決定され得る。たとえば、計算効率の考慮事項に基づき、ハードウェア回路内のdepthwise畳み込み計算ユニットを全容量で動作させることが望ましい。この場合、第2の所定の数m*第1の所定の数p=depthwise畳み込み計算ユニットのMACの数である。
depthwise畳み込み計算、たとえば、32個の点(p=32)のdepthwise畳み込み計算に対して512個の乗算器-加算器ユニットがあると仮定すると、16個のチャネル(m=16)が一度に同時に計算され得る。上で述べたように、pおよびmの異なる値も、他の考慮事項に関して選択されてよい。たとえば、現在の畳み込み層の幅および高さが比較的大きく、チャネルの数が比較的小さいときに、pは、より大きい値、たとえば、64、128などに設定されるものとしてよく、それに対応して、mは、より小さい値、たとえば、8、4などに設定されてよい。逆に、現在の畳み込み層の幅および高さがより小さく、チャネルの数がより大きいときに、pは、より小さい値、たとえば、16、8などに設定されるものとしてよく、それに対応して、mは、より大きい値、たとえば、32、64などに設定されてよい。
たとえば、図6に示されているように、中間特徴マップ(1)は、最初に、入力特徴マップ(1)およびdepthwise畳み込みカーネル(1)に基づき計算され得る。図6において、入力特徴マップ(1)は、p個の点、m個の入力チャネルを有する一組の入力特徴点であり、depthwise畳み込みカーネル(1)は、一組のm個のdepthwise畳み込みカーネルである。
一例において、ステップS211は以下のステップを含み得る。
サブステップ1:入力特徴マップの第2の所定の数m個の入力チャネル上で点の第1の所定の数p個のグループの入力特徴値を読み出す。
たとえば、第2の所定の数m個の入力チャネル上で点の第1の所定の数p個のグループの入力特徴値は、入力特徴マップから読み出されるものとしてよく(図6における入力特徴マップに示されているように)、点の各グループは、depthwise畳み込みカーネルにおける重み値の幅および高さ(図6のdepthwise畳み込みカーネル(1)におけるシャドウに示されているような、すなわち、R*S)に等しい幅および高さ(図6の入力特徴マップ(1)におけるシャドウに示されているような)を有し、点の2つの隣接するグループは、depthwise畳み込み計算のストライドに等しいリーディングストライド(reading stride)を有する。
リーディングストライドに応じて、重なり合う部分が、点のp個のグループ内の点の1つおきの隣接するグループの間に配置され得る。
たとえば、第1の実行において、前者のm個の入力チャネル上の点の前者のp個のグループの入力特徴値は、入力特徴マップから読み出されるものとしてよい(図6における入力特徴マップ(1)に示されている入力特徴値)。
サブステップ2:点の第1の所定の数p個のグループの入力特徴値に対応して、第2の所定の数m個の入力チャネル上で第2の所定の数m個のdepthwise畳み込みカーネルの対応する重み値を読み出す。一例において、第2の所定の数m個の入力チャネル上の点の第1の所定の数p個のグループの入力特徴値および対応する重み値は、第2の所定の数m個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値およびpointwise畳み込みカーネルに従ってpointwise畳み込み計算を実行するステップと同時に、入力特徴マップから読み出される。したがって、この例に基づき、畳み込みニューラルネットワークの計算効率は改善され、より効率的な畳み込みニューラルネットワークが得られる。
たとえば、第1の実行において、前者のm個のdepthwise畳み込みカーネルにおける重み値(図6に示されているdepthwise畳み込みカーネル(1)における重み値として)は、depthwise畳み込みカーネル(図6に示されているM個のdepthwise畳み込みカーネル(1)として)から読み出され得る。
サブステップ3:第2の所定の数m個の入力チャネル上の点の第1の所定の数p個のグループの入力特徴値および対応する第2の所定の数m個のdepthwise畳み込みカーネルにおける重み値に対してdepthwise畳み込み計算をそれぞれ実行して、第2の所定の数m個のdepthwise畳み込み出力チャネル上で点の第1の所定の数p個のグループにそれぞれ対応する第1の所定の数p個の点の中間特徴値を取得する。
たとえば、中間特徴マップ(1)は、入力特徴マップ(1)およびdepthwise畳み込みカーネル(1)に従って計算され得る。
たとえば、サブステップ3において、点の第1の所定の数p個のグループの中の点の各グループについて、(1)第2の所定の数m個の入力チャネル上で点のグループの1つの点の入力特徴値、および対応する第2の所定の数m個のdepthwise畳み込みカーネルにおける1つの対応する重み値に対して乗算計算をそれぞれ実行して、点のグループの現在の乗算計算結果を取得する演算、(2)点のグループの現在の乗算計算結果および点のグループの前回の乗算計算結果に対して累算計算をそれぞれ実行する演算であって、前回の乗算計算結果は第2の所定の数m個の入力チャネル上で点のグループ内の前の1つの点の入力特徴値、および対応する第2の所定の数m個のdepthwise畳み込みカーネルにおける対応する前の重み値に対して乗算計算をそれぞれ実行することによって取得される、演算、および(3)上記の演算(1)および(2)を繰り返し、第2の所定の数m個の入力チャネル上で点のグループの次の点の入力特徴値、および対応する第2の所定の数m個のdepthwise畳み込みカーネルにおける対応する次の重み値に対して乗算計算をそれぞれ実行し、それに対応して、その後の演算を、乗算計算および累算計算が第2の所定の数m個の入力チャネル上で点のグループ内のすべての点の入力特徴値、および第2の所定の数m個のdepthwise畳み込み出力チャネル上で点のグループに対応する1つの点(図6の中間特徴マップ(1)内にシャドウで示されているような)の中間特徴値である点のグループの最終累算計算結果に対して完了するまで実行する演算が実行され得る。
点のグループ内の第1の点に対して乗算計算を実行した後に、点のグループの前回の乗算計算結果が存在しないか、または0であるので、累算を実行する必要がない、言い換えれば、累算計算結果は乗算計算結果それ自体である。
図6に示されているように、点の1つのグループ内に全部でR*S個の点がある、すなわち、サブステップ(3)において、R*S回の乗算計算および対応する累算計算が点の1つのグループについて実行される。
上記の計算を通じて、第2の所定の数m個のdepthwise畳み込み出力チャネル上の点の第1の所定の数p個の点の中間特徴値(図6の中間特徴マップ(1)に示されている中間特徴値)が取得され得る。
たとえば、第2の所定の数m個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値は、ステップS211の後にメモリに記憶され得る。言い換えれば、第2の所定の数m個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値を取得した後に、各中間特徴値がメモリの利用可能な空間に記憶される。
畳み込み層の現在の設計パラメータによれば、各中間特徴値を取得した後、ただし記憶する前に、各中間特徴値について、活性化演算および量子化演算のうちの少なくとも一方が実行され得る。
ニューラルネットワークに活性化関数が加えられていない場合、これはある程度線形式と見なされてよく、最終的な式の能力は良好でなく、いくつかの非線形活性化関数が加えられた場合、ネットワーク全体に非線形部分が導入され、ネットワークの式の能力が高められる。現在、人気のある活性化関数は、主にSigmoid、Tanh、ReLu、Softmaxなどを含む。
さらに、量子化演算および逆量子化演算も、計算データに導入され得る。たとえば、高精度の出力データは、シフトまたは乗算および除算によって低精度の出力データに圧縮されてよく、それにより、メモリ内で各データによって占有される記憶領域は低減され、アクセス速度が完全に改善される。
たとえば、逆量子化された高精度データは、32ビットであってよいが、量子化された低精度のデータは、8ビットであり、75%の記憶領域が節約される。
たとえば、任意選択の活性化演算が実行され得、次いで、任意選択の量子化演算が実行される。
ステップS212において、上記の演算が繰り返され(すなわち、ステップS211)、depthwise畳み込み計算は、入力特徴マップおよびdepthwise畳み込みカーネルに従って実行され、次の第2の所定の数m個のdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値を取得し、それに対応して、その後の演算を、すべてのdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値が取得されるまで実行する。
たとえば、次に、図6に示されているように、中間特徴マップ(2)は、入力特徴マップ(2)およびdepthwise畳み込みカーネル(2)に従って計算される、などと続くものとしてよく、中間特徴マップ(z)は、入力特徴マップ(z)およびdepthwise畳み込みカーネル(z)に従って計算され得る。たとえば、
である。最後の計算において、残っているチャネルの数およびdepthwise畳み込みカーネルの数が、m個のdepthwise畳み込みカーネル内の重み値とともにm個のチャネルの入力特徴値を読み出すのに十分でない場合、これはパディング(たとえば、パディング0)方式で実現され得る。代替的に、これは、たとえばdepthwise畳み込み計算ユニットの作業量を減らす、他の方式によっても実現され得る。
最後に、図6の中間特徴マップに示されているように、depthwise畳み込み演算の中間出力結果として中間特徴値を含む完全な中間特徴マップを意味する、中間特徴マップ(1)から中間特徴マップ(z)への組合せについて、中間特徴マップのサイズは点p個分であり、全部でM個のチャネルを有する。
次に、中間特徴マップ上でpointwise畳み込み計算を実行してすべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を取得するステップS220を説明するために図7および図8を参照する。
図7は、中間特徴値によるすべてのpointwise畳み込み出力チャネルおよび本開示の第1の実施形態によるpointwise畳み込みカーネル上で第1の所定の数p個の点の出力特徴値を計算するステップのフローチャートを示している。図8は、中間特徴値によるすべてのpointwise畳み込み出力チャネルおよび本開示の第1の実施形態によるpointwise畳み込みカーネル上で第1の所定の数p個の点の出力特徴値を計算するステップの概略図を示している。
図7に示されているように、中間特徴値によるすべてのdepthwise畳み込み出力チャネルおよびpointwise畳み込みカーネル上で第1の所定の数p個の点の出力特徴値を計算するステップS220は、以下のステップを含み得る。
ステップS221において、pointwise畳み込み計算が、それぞれ、第4の所定の数n個のpointwise畳み込みカーネル内のすべてのpointwise畳み込みチャネル上の重み値とともにすべてのdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値に従って実行され、第4の所定の数n個のpointwise畳み込みカーネルに対応する第4の所定の数n個のpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を取得する。
たとえば、第4の所定の数nは、pointwise畳み込みカーネルの総数N以下である。さらに、第4の所定の数nは、乗算器-加算器ユニットの数の約数であり得る、pointwise畳み込み計算ユニット(たとえば、乗算器-加算器ユニットMAC)の数によっても制限されることがある。
たとえば、図8に示されているように、出力特徴マップ(1)は、最初に、中間特徴マップおよびpointwise畳み込みカーネル(1)に基づき計算され得る。図8では、pointwise畳み込みカーネル(1)は、一組のn個のpointwise畳み込みカーネルである。
一例において、ステップS221は以下のステップを含み得る。
一例において、ステップS221は以下のステップを含み得る。
サブステップ1:第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値(図8の中間特徴マップ(1)に示される中間特徴値としての)をすべてのdepthwise畳み込み出力チャネル(図8の中間特徴マップ(1)に示されるような)上の第1の所定の数p個の点の中間特徴値から読み出す。
たとえば、第3の所定の数m'および第4のプリセットされた数nは、pointwise畳み込み計算ユニットの数および第1の所定の数pに従って決定され得る。たとえば、計算効率の考慮事項に基づき、ハードウェア回路内のpointwise畳み込み計算ユニットを全容量で動作させることが望ましい。この場合、第3の所定の数m'*第4の所定の数n*第1の所定の数p*=pointwise畳み込み計算ユニットのMAC'の数である。
たとえば、異なるハードウェア設計について、pointwise畳み込み計算ユニットMAC'の数は、depthwise畳み込み計算ユニットMACの数に等しい場合も等しくない場合もある。さらに、第3の所定の数m'は、第2の所定の数m以下であってよい。
pointwise畳み込み計算に対しても、たとえば、32個の点(p=32)のpointwise畳み込み計算に対して512個の乗算器-加算器ユニットがあると仮定すると、4個のチャネル(m'=4)および4個の畳み込みカーネル(n=4)が一度に同時に計算され得る。上で述べたように、mおよびnの異なる値も、他の考慮事項に関して選択されてよい。たとえば、現在の畳み込みカーネルの数が比較的大きく、チャネルの数が比較的小さいときに、p=32のままで変更がない場合、nは、より大きい値、たとえば、8、16などに設定されるものとしてよく、それに対応して、m'は、より小さい値、たとえば、2、1などに設定されてよい。逆に、現在の畳み込みカーネルの数が比較的小さく、チャネルの数が比較的大きいときに、p=32のままで変更がない場合、nは、より小さい値、たとえば、2、1などに設定されるものとしてよく、それに対応して、m'は、より小さい値、たとえば、8、16などに設定されてよい。
たとえば、第1の実行において、前者のm'個のチャネル上のp個の点の中間特徴値は、図8における中間特徴マップ(1)に示されているように、depthwise畳み込み計算によって得られる中間特徴マップから読み出されるものとしてよい。
サブステップにおける読み出し演算では、第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第5の所定の数p'個の点の中間特徴値も読み出され得ることに留意されたい。たとえば、第5の所定の数p'は、第1の所定の数p以下である。
サブステップ2:第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値に対応して第4の所定の数n個のpointwise畳み込みカーネル内の対応する第3の所定の数m'個のpointwise畳み込みチャネル上の重み値を読み出す。
たとえば、第1の実行において、前者のm'個のpointwise畳み込みチャネル上の重み値(図8のpointwise畳み込みカーネル(1)内のpointwise畳み込みカーネル(11)によって示される重み値など)は、N個のpointwise畳み込みカーネル内の前者のn個のpointwise畳み込みカーネル(図8のpointwise畳み込みカーネル(1)に示されているような)から読み出され得る。
サブステップ3:pointwise畳み込み計算を、第4の所定の数n個のpointwise畳み込みカーネル内の対応する第3の所定の数m'個のpointwise畳み込みチャネル上の重み値とともに第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値に対して実行して、第4の所定の数n個のpointwise畳み込みカーネルに対応する第4の所定の数n個のpointwise畳み込み出力チャネル上の第1の所定の数p個の点の現在のpointwise畳み込み部分和を取得する。
たとえば、現在のpointwise畳み込み部分和(1)は、中間特徴マップ(1)およびpointwise畳み込みカーネル(11)に従って計算されるものとしてよい(図8の出力特徴マップ(11)に示されているように)。
たとえば、サブステップ3において、第1の所定の数p個の点における各点について、(1)それぞれ、第4の所定の数n個のpointwise畳み込みカーネル内の対応する第3の所定の数m'個のpointwise畳み込みチャネル上の重み値とともに第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値に対して乗算計算を実行して、第4の所定の数n個のグループの結果を取得し、各グループの結果は第3の所定の数m'個の乗算計算結果を含む、演算、および(2)それぞれ、各グループの結果に対する第3の所定の数m'個の乗算計算結果を第4の所定の数n個のグループの結果に足し込んで、第4の所定の数n個のpointwise畳み込みカーネルに対応する第4の所定の数n個のpointwise畳み込み出力チャネル上のこの点の現在のpointwise畳み込み部分和を取得する演算が実行される。
図8に示されているように、中間特徴マップ(1)内のp個の点の各々について、乗算計算が、それぞれ、各点のm'個の中間特徴値およびpointwise畳み込みカーネル(11)の第1の畳み込みカーネル内のm'個の重み値に対して実行され、m'個の乗算計算結果が累積され、第1のチャネル上の第1の出力特徴マップ(11)内のp個の点の現在のpointwise畳み込み部分和を取得する。上記の演算は、pointwise畳み込みカーネル(11)の各畳み込みカーネル内で実行され、前者のn個のチャネル上の第1の出力特徴マップ(11)内のp個の点の現在のpointwise畳み込み部分和を取得する。
サブステップ4:第4の所定の数n個のpointwise畳み込みカーネルに対応する第4の所定の数n個のpointwise畳み込み出力チャネル上の第1の所定の数p個の点の現在のpointwise畳み込み部分和と、第1の所定の数p個の点の前の累算計算結果とに対して累算計算を実行して、第1の所定の数p個の点の現在の累算計算結果を生成する。
前者のn個のチャネル上の第1の出力特徴マップ(11)内のp個の点の現在のpointwise畳み込み部分和を取得した後に、このp個の点の前の累算計算結果が存在しないか、または0であるので、累算を実行する必要がない、すなわち、累算計算結果は乗算計算結果それ自体である。
たとえば、サブステップ4の後に、第1の所定の数p個の点の現在の累算計算結果はメモリに記憶され、第1の所定の数p個の点の前の累算計算結果をカバーする。
サブステップ5:上記の演算(すなわち、サブステップ1〜4)を繰り返し、次の第3の所定の数m'個のdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値を読み出し、第4の所定の数n個のpointwise畳み込みカーネル内の対応する次の第3の所定の数m'個のpointwise畳み込みチャネル上の重み値を読み出し、それに対応して、その後の演算を、pointwise畳み込み計算および累算計算がすべてのdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値に対して完了するまで実行し、第1の所定の数p個の点の最終的累算計算結果が第4の所定の数n個のpointwise畳み込みカーネルに対応する第4の所定の数n個のpointwise畳み込み出力チャネル上の第1の所定の数p個の点の出力特徴値である。
たとえば、次に、図8に示されているように、出力特徴マップ(12)は、中間特徴マップ(2)およびpointwise畳み込みカーネル(12)に従って計算されるものとしてよく、累算計算は、出力特徴マップ(12)および出力特徴マップ(11)、などに対して実行されてよく、出力特徴マップ(1z')は、中間特徴マップ(z')およびpointwise畳み込みカーネル(1z')に従って計算され、累算計算は、出力特徴マップ(1z')および出力特徴マップ(1(z'-1))に対して実行される。たとえば、
である。最後の計算において、残っているチャネルの数が、m'個のチャネルの中間特徴値およびm'個のチャネルのpointwise畳み込み重み値を読み出すのに十分でない場合、これはパディング(たとえば、パディング0)方式で実現され得る。代替的に、これは、たとえばpointwise畳み込み計算ユニットの作業量を減らす、他の方式によっても実現され得る。
最後に、出力特徴マップ(1z')および出力特徴マップ(1(z'-1))の累算結果は、図8の出力特徴マップ(1)に示されているように、n個のpointwise畳み込み出力チャネル上のp個の点の出力特徴値として形成され、出力特徴マップ(1)のサイズは点p個分であり、全部でN個のチャネルがある。
たとえば、活性化演算および量子化演算のうちの少なくとも一方が、第1の所定の数p個の点の最終的累算計算結果が第4の所定の数n個のpointwise畳み込みカーネルに対応する第4の所定の数n個のpointwise畳み込み出力チャネル上の第1の所定の数p個の点の出力特徴値としてメモリに記憶される前に各出力特徴値に対して実行され得る。
ステップS222において、上記の演算が繰り返され(すなわち、ステップS211)、pointwise畳み込み計算は、それぞれ、次の第4の所定の数n個のpointwise畳み込みカーネル内のすべてのpointwise畳み込みチャネル上の重み値とともにすべてのdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値に従って、すべてのpointwise畳み込み出力チャネル上の第1の所定の数p個の点の出力特徴値が取得されるまで実行される。
たとえば、次に、図8に示されているように、出力特徴マップ(2)は、中間特徴マップおよびpointwise畳み込みカーネル(2)に従って計算される、などと続くものとしてよく、出力特徴マップ(g)は、中間特徴マップおよびpointwise畳み込みカーネル(g)に従って計算され得る。たとえば、
である。最後の計算において、残っているpointwise畳み込みカーネルの数が、n個のpointwise畳み込みカーネル内の重み値を読み出すのに十分でない場合、これはまたパディング(たとえば、パディング0)方式で実現され得る。代替的に、これは、たとえばpointwise畳み込み計算ユニットの作業量を減らす、他の方式によっても実現され得る。
最後に、図8の出力特徴図に示されているように、pointwise畳み込み演算の最終的出力結果として出力特徴値を含む完全な出力特徴マップを意味する、出力特徴マップ(1)から出力特徴マップ(g)への組合せについて、出力特徴マップのサイズは点p個分であり、全部でN個のチャネルを有する。
上で説明されているように、出力特徴マップは、任意選択の活性化演算および任意選択の量子化演算を実行し得る。
これ以降、本開示の第1の実施形態による畳み込み計算のための方法は、特定の例を用いて説明される。
たとえば、図6および図8に示されているように、depthwise畳み込みの幅および高さの大きさがS*Rであると仮定すると、チャネルの数(またはチャネル数が1と考えられるときには番号としても見なされ得る)はMであり、depthwise畳み込みの幅および高さの大きさは1*1であり、チャネル数はMであり、番号はNであり、入力特徴マップの幅および高さの大きさはX*Yであり、中間特徴マップの幅および高さの大きさはW*Hであり、出力特徴マップの幅および高さの大きさはE*Fであり、畳み込み計算方法は次のステップを含み得る。
1.depthwise畳み込みについて、最初にp(p<=H*W)点およびm(m<=M)チャネルの乗算および累算結果を計算し、累算はここでは図6に示されているRおよびSとして、畳み込みカーネルの長さおよび幅の方向で実行される累算であり、ここでp*m乗算-累算(MAC)ユニットは共有され、p*m乗算-累算結果が取得される。
図9は、本開示の一実施形態によるdepthwise畳み込み計算を示す概略図である。
図9に示されているように、512個の乗算器-加算器ユニット(MAC)、および32個の点(上述のp=32)があり、16個のチャネル(上述のm=16、すなわち、チャネル変数cは0から15の範囲の値をとる)は一度に同時に計算されると仮定される。畳み込みカーネルのサイズが3*3であると仮定すると、乗算および累算の計算(MultおよびAccu)を9回実行した後(depthwise畳み込みカーネルの高さおよび幅変数rおよびsが0から2にそれぞれ変わり、入力特徴マップの幅変数xが0〜31から2〜33に変わり、高さ変数yが0から2に変わる)、32個の点の出力値、16個のチャネルが得られる。全部で128個のチャネルがあると仮定すると、(128/16)*9=72回の計算の後、32個の点、128個のチャネルの出力データが得られる。
2.ステップ1の上述の結果に対して任意選択の活性化演算を実行し、活性化演算は非線形関数により数値を再マップすることを意味し、活性化関数は限定はしないがReLu関数、Sigmoid関数、arctangent(tan)関数などを含む。
3.上述のステップ2によって取得された結果に対して任意選択の量子化演算を実行し、量子化演算は高精度乗算および累算結果(通常32ビット)をシフトまたは乗算および除算することによって低精度乗算および累算結果(通常8ビット)を取得することを意味している。
4.ステップ3の上述の結果をレジスタまたはオンチップSRAMに記憶する。
5.
回の循環を通じて、M個のチャネル上でp個の点のdepthwise畳み込み結果を計算した後にp*M個の値を取得するが、p*M個の値は活性化関数演算および量子化演算の実行によって得られるかまたは得られない。完全な出力結果の層の点の数は、pよりかなり大きいので、全部でH*W個の点があると仮定すると、ここで使用される記憶領域はdepthwise演算結果の完全な層を計算するためにわずかp/(H*W)である。
6.ステップ5の上述の結果に対してpointwise計算を直接実行する。具体的なプロセスは、次のとおりである。
a)レジスタまたはオンチップSRAMからp個の点、m個のチャネルのdepthwise畳み込み計算の結果を読み出し、p個の点、m個のチャネルの乗算および累算結果を計算し、累算はここではチャネル方向の累算であり、p個の点、1個の出力チャネルのpointwise畳み込み部分和(第1から第mの入力チャネルの部分和)を取得する。
b)
回の循環を通じてp個の点のpointwise畳み込み結果に対する計算の後にp個の点の最終的乗算および累算結果を取得する。
c)上記の結果に対して任意選択の活性化演算を実行し、活性化演算は非線形関数により数値を再マップすることを意味し、活性化関数は限定はしないがReLu関数、Sigmoid関数、arctangent(tan)関数などを含む。
d)上記の結果に対して任意選択の量子化演算を実行し、量子化演算は高精度乗算および累算結果(通常32ビット)をシフトまたは乗算および除算することによって低精度乗算および累算結果(通常8ビット)を取得し、結果をレジスタまたはオンチップSRAMまたはオフチップDDRに記憶することを意味している。
e)pointwise畳み込みに対して全部でN個の畳み込みカーネルがあると仮定して、上記の演算a)、b)、c)、d)のN回の循環を通じてN個のチャネル上でp個の点の計算結果の出力を完了させる。
図10は、本開示の一実施形態によるpointwise畳み込み計算を示す概略図である。
図10に示されているように、pointwise畳み込みの畳み込みカーネルのサイズは1*1であり、また、512個の乗算器-加算器ユニット(ここでは512個の乗算器-加算器ユニットがあり、depthwise計算プロセスの512個の乗算器-加算器ユニットは、同じであっても、異なっていてもよい)があり、32個の点(上述のp=32)、16個のチャネル(上述のm=16、すなわち、チャネル変数cは0から15の範囲内の値をとる)に対する畳み込み、および1つの畳み込みカーネルが、毎回計算され、32個の点、1個の出力チャネルに対する累算和のデータの一部が取得されると仮定される。全部で128個のチャネルがあると仮定すると、128/16=8回の計算の後(チャネル変数cは0〜15から112〜127に変わる)、32個の点および1つの出力チャネルの累算和のデータが取得される。256個の畳み込みカーネルがあると仮定すると、256*(128/16)=2048回の計算の後、32個の点および256個の出力チャネルの累算和のデータが取得される。すなわち、32個の点の出力特徴値が取得される。
7.完全な出力特徴マップが取得されるまで次のp個の点を連続的に計算することによってステップ1〜6の上記の演算を繰り返す。
第2の実施形態
本開示の第2の実施形態において、すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を取得するために、1)depthwise畳み込み演算を実行してすべてのdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値を取得する演算、2)中間特徴値に従ってpointwise畳み込み演算を実行してpointwise畳み込み出力チャネルのすべての上でp個の点に対する現在のpointwise畳み込み部分和を取得する演算、(3)現在のpointwise畳み込み部分和および前の累算計算結果に対して累算を実行して、現在の累算計算結果を生成する演算、(4)上記の演算(2)および(3)を繰り返して、すべてのpointwise畳み込み出力チャネル上でp個の点の出力特徴値を取得する演算が実行され得る。
すなわち、第2の実施形態においてdepthwise畳み込み演算を実行するステップ(ステップ210)は、第1の実施形態においてdepthwise畳み込み演算を実行するステップと同じであり、第2の実施形態においてpointwise畳み込み演算を実行するステップ(ステップ220)は、第1の実施形態においてpointwise畳み込み演算を実行するステップと異なる。したがって、次に、2つの実施形態の間の違いが強調して説明される。
図11は、中間特徴値によるすべてのpointwise畳み込み出力チャネルおよび本開示の第2の実施形態によるpointwise畳み込みカーネル上で第1の所定の数p個の点の出力特徴値を計算するステップのフローチャートを示している。図12は、中間特徴値によるすべてのpointwise畳み込み出力チャネルおよび本開示の第2の実施形態によるpointwise畳み込みカーネル上で第1の所定の数p個の点の出力特徴値を計算するステップの概略図を示している。
図11に示されているように、中間特徴値によるすべてのdepthwise畳み込み出力チャネルおよびpointwise畳み込みカーネル上で第1の所定の数p個の点の中間特徴値を計算するステップS220は、以下のステップを含み得る。
ステップS223において、それぞれ、第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値およびすべてのpointwise畳み込みカーネル内の対応する第3の所定の数m'個のpointwise畳み込みチャネル上の重み値に従ってpointwise畳み込み計算を実行し、すべてのpointwise畳み込み出力チャネル上の第1の所定の数p個の点の現在のpointwise畳み込み部分和を取得する。
たとえば、第3の所定の数m'は、第2の所定の数m以下である。さらに、第3の所定の数m'は、乗算器-加算器ユニットの数の約数であり得る、pointwise畳み込み計算ユニット(たとえば、乗算器-加算器ユニットMAC)の数によっても制限されることがある。
一例において、ステップS223は以下のステップを含み得る。
サブステップ1:pointwise畳み込み計算を、第4の所定の数n個のpointwise畳み込みカーネル内の対応する第3の所定の数m'個のpointwise畳み込みチャネル上の重み値とともに第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値に従って実行して、第4の所定の数n個のpointwise畳み込みカーネルに対応する第4の所定の数n個のpointwise畳み込み出力チャネル上の第1の所定の数p個の点の現在のpointwise畳み込み部分和を取得する。
たとえば、サブステップ1において、次のステップが実行され得る。
(1)すべてのdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値から第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値を読み出す。
たとえば、第1の実行において、前者のm'個のチャネル上のp個の点の中間特徴値は、図12における中間特徴マップ(1)に示されているように、depthwise畳み込み計算によって得られる中間特徴マップから読み出されるものとしてよい。
(2)第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の入力特徴値に対応して第4の所定の数n個のpointwise畳み込みカーネル内の対応する第3の所定の数m'個のpointwise畳み込みチャネル上の重み値を読み出す。
たとえば、第1の実行において、前者のm'個のpointwise畳み込みチャネル上の重み値(図12のpointwise畳み込みカーネル(1)のpointwise畳み込みカーネル(11)によって示される重み値など)は、N個のpointwise畳み込みカーネル内の前者のn個のpointwise畳み込みカーネル(図12のpointwise畳み込みカーネル(1)に示されているような)から読み出され得る。
(3)pointwise畳み込み計算を、第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値、および第4の所定の数n個のpointwise畳み込みカーネル内の対応する第3の所定の数m'個のpointwise畳み込みチャネル上の重み値上で実行して、第4の所定の数n個のpointwise畳み込みカーネルに対応する第4の所定の数n個のpointwise畳み込み出力チャネル上の第1の所定の数p個の点の現在のpointwise畳み込み部分和を取得する。
たとえば、現在のpointwise畳み込み部分和(11)は、中間特徴マップ(1)およびpointwise畳み込みカーネル(11)に基づき計算されるものとしてよい(図12の出力特徴マップ(11)に示されているように)。
このステップは、第1の実施形態におけるステップS221のサブステップ3と同じであり、したがって、その詳細な説明は省かれる。
サブステップ2:pointwise畳み込み計算を、第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値および次の第4の所定の数n個のpointwise畳み込みカーネル内の対応する第3の所定の数m'個のpointwise畳み込みチャネル上の重み値上で実行して、次の第4の所定の数n個のpointwise畳み込みカーネルに対応する次の第4の所定の数n個のpointwise畳み込み出力チャネル上の第1の所定の数p個の点の現在のpointwise畳み込み部分和を取得することによって、すべてのpointwise畳み込み出力チャネル上の第1の所定の数p個の点の現在のpointwise畳み込み部分和が取得されるまで上記の演算を繰り返す。
たとえば、次に、図12に示されているように、現在のpointwise畳み込み部分和(21)は、中間特徴マップ(1)およびpointwise畳み込みカーネル(21)に従って計算される(図12の出力特徴マップ(21)に示されているように)、などと続くものとしてよく、現在のpointwise畳み込み部分和(g1)は、中間特徴マップ(1)およびpointwise畳み込みカーネル(g1)に従って計算される(図12の出力特徴マップ(g1)に示されているように)。
最後に、現在のpointwise畳み込み部分和(g1)に対する現在のpointwise畳み込み部分和(11)が組み合わされるが、これは、サイズが点p個分であり、全部でN個のチャネルを有する、すべてのpointwise畳み込み出力チャネル上のp個の点のすべてのpointwise畳み込み出力チャネル(1)上のp個の点の現在のpointwise畳み込み部分和を意味する。
ステップS224において、累算計算が、それぞれ、すべてのpointwise畳み込み出力チャネル上の第1の所定の数p個の点の現在のpointwise畳み込みの部分和と第1の所定の数p個の点の前の累算計算結果とに対して実行され、第1の所定の数p個の点の現在の累算計算結果を生成する。
pointwise畳み込み出力チャネルのすべての上のp個の点の現在のpointwise畳み込み部分和(1)を取得した後に、前の累算計算結果が存在しないか、または0であるので、累算を実行する必要がない、すなわち、現在のpointwise畳み込み部分和(1)は現在の累算計算結果である。
ステップS224の後に、現在の累算計算結果は、第1の所定の数p個の点の前の累算計算結果をカバーするようにメモリに記憶される。
ステップS225において、上記の演算(すなわち、ステップS223およびステップS224)が繰り返され、pointwise畳み込み計算は、それぞれ、次の第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値およびすべてのpointwise畳み込みカーネル内の対応する次の第3の所定の数m'個のpointwise畳み込みチャネル上の重み値に従って実行され、その後の演算は、それに対応して、pointwise畳み込み計算および累算計算がすべてのdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値のすべてに対して完了するまで実行され、第1の所定の数p個の点の最終的累算計算結果がすべてのpointwise畳み込み出力チャネル上の第1の所定の数p個の点の出力特徴値である。
たとえば、次に、図12に示されているように、現在のpointwise畳み込み部分和(12)は、中間特徴マップ(2)およびpointwise畳み込みカーネル(12)に従って計算されるものとしてよく、現在のpointwise畳み込み部分和(22)は、中間特徴マップ(2)およびpointwise畳み込みカーネル(22)に従って計算される、などとしてよく、現在のpointwise畳み込み部分和(g2)は、中間特徴マップ(2)およびpointwise畳み込みカーネル(g2)に従って計算される。
現在のpointwise畳み込み部分和(g2)に対する現在のpointwise畳み込み部分和(12)は、一緒に組み合わされて、サイズが点p個分であり、全部でN個のチャネルを有する、すべてのpointwise畳み込み出力チャネル上のp個の点の現在のpointwise畳み込み部分和(2)を取得する。
pointwise畳み込み出力チャネルのすべての上のp個の点の現在のpointwise畳み込み部分和(2)を取得した後、現在のpointwise畳み込み部分和(2)は、前の累算計算結果(すなわち、現在のpointwise畳み込み部分和(1))と累算される。
同様に、現在のpointwise畳み込み部分和(gz')に対する現在のpointwise畳み込み部分和(1z')は、一緒に組み合わされて、サイズが点p個分であり、全部でN個のチャネルを有する、すべてのpointwise畳み込み出力チャネル上のp個の点の現在のpointwise畳み込み部分和(z')を取得する。
pointwise畳み込み出力チャネルのすべての上のp個の点の現在のpointwise畳み込み部分和(z')を取得した後、現在のpointwise畳み込み部分和(z')は、前の累算計算結果(すなわち、現在のpointwise畳み込み部分和(z'-1)への現在のpointwise畳み込み部分和(1))と累算され、それにより、pointwise畳み込み演算の最終的出力結果として出力特徴値を含む出力特徴マップは、図8の出力特徴図に示されているように、取得され、そのサイズは点p個分であり、全部でN個のチャネルを有する。
たとえば、活性化演算および量子化演算のうちの少なくとも一方が、第1の所定の数p個の点の最終的累算計算結果がすべてのpointwise畳み込み出力チャネル上の第1の所定の数p個の点の出力特徴値としてメモリに記憶される前に各出力特徴値に対して実行され得る。
第3の実施形態
本開示の第3の実施形態において、すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を取得するために、(1)depthwise畳み込み演算を実行して第2の所定の数m個のdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値を取得する演算、(2)中間特徴値に従ってpointwise畳み込み演算を実行してdepthwise畳み込み出力チャネルのすべての上でp個の点の現在のpointwise畳み込み部分和を取得する演算、(3)現在のpointwise畳み込み部分和および前の累算計算結果に対して累算を実行して、現在の累算計算結果を生成する演算、(4)上記の演算(1)および(3)を繰り返して、すべてのpointwise畳み込み出力チャネル上でp個の点の出力特徴値を取得する演算が実行され得る。
図13は、本開示の第3の実施形態によるすべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を計算するステップのフローチャートを示している。図14は、本開示の第3の実施形態によるすべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の現在のpointwise畳み込み部分和
を計算するステップを示す概略図である。
図13に示されているように、本開示の第3の実施形態によれば、すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を計算するステップS110は以下のステップを含み得る。
ステップS310において、depthwise畳み込み計算が入力特徴マップおよびdepthwise畳み込みカーネルに従って実行され、第2の所定の数m個のdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値を取得する。
たとえば、第2の所定の数mは、depthwise畳み込み計算ユニットの数および第1の所定の数pに従って決定される。
一例において、ステップS310は以下のステップを含み得る。
サブステップ1:入力特徴マップから第2の所定の数m個の入力チャネル上で点の第1の所定の数p個のグループの入力特徴値を読み出す。
サブステップ2:第2の所定の数m個の入力チャネル上で点の第1の所定の数p個のグループの入力特徴値に対応して対応する第2の所定の数m個のdepthwise畳み込みカーネルにおける重み値を読み出す。
サブステップ3:対応する第2の所定の数m個のdepthwise畳み込みカーネルにおける重み値ととも第2の所定の数m個の入力チャネル上の点の第1の所定の数p個のグループの入力特徴値に対してdepthwise畳み込み計算をそれぞれ実行して、第2の所定の数m個のdepthwise畳み込み出力チャネル上で点の第1の所定の数p個のグループにそれぞれ対応する第1の所定の数p個の点の中間特徴値を取得する。
このステップS310におけるサブステップ1〜3は、第1の実施形態におけるステップS211のサブステップ1〜3と同じであり、したがって、その詳細な説明は省かれる。
たとえば、第1の実行において、最初に、前者のm個の入力チャネル上の点の前者のp個のグループの入力特徴値は、入力特徴マップから読み出されるものとしてよい(図14における入力特徴マップ(i=1)に示されている入力特徴値)。次いで、前者のm個のdepthwise畳み込みカーネルにおける重み値(図6のdepthwise畳み込みカーネル(1)に示されている重み値として)は、depthwise畳み込みカーネル(図6のM個のdepthwise畳み込みカーネルに示されているような)から読み出され得る。最後に、中間特徴マップ(i=1)は、入力特徴マップ(1)およびdepthwise畳み込みカーネル(1)に従って計算され得る。
たとえば、第2の所定の数m個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値は、サブステップ3の後にメモリに記憶され得る。言い換えれば、第2の所定の数m個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値を取得した後に、各中間特徴値がメモリの利用可能な空間に記憶される。
さらに、畳み込み層の現在の設計パラメータによれば、各中間特徴値が取得された後、記憶される前に、各中間特徴値について、活性化演算および量子化演算のうちの少なくとも一方が実行され得る。
ステップS320において、pointwise畳み込み計算は、第2の所定の数m個のdepthwise畳み込み出力チャネルおよびpointwise畳み込みカーネルに対して第1の所定の数p個の点の中間特徴値に従って実行され、すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の現在のpointwise畳み込み部分和を取得する。
一例において、ステップS320は以下のステップを含み得る。
サブステップ1:それぞれ、第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値およびすべてのpointwise畳み込みカーネル内の対応する第3の所定の数m'個のpointwise畳み込みチャネル上の重み値に従ってpointwise畳み込み計算を実行し、すべてのpointwise畳み込み出力チャネル上の第1の所定の数p個の点の現在のpointwise畳み込み下位部分和を取得する。
たとえば、サブステップ1において、(1)pointwise畳み込み計算を、第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値、および第4の所定の数n個のpointwise畳み込みカーネル内の対応する第3の所定の数m'個のpointwise畳み込みチャネル上の重み値に従って実行して、第4の所定の数n個のpointwise畳み込みカーネルに対応する第4の所定の数n個のpointwise畳み込み出力チャネル上の第1の所定の数p個の点の現在のpointwise畳み込み下位部分和を取得するステップが実行され得る。
たとえば、第3の所定の数m'および第4の所定の数nは、pointwise畳み込み計算ユニットの数および第1の所定の数pに従って決定され得る。
たとえば、演算(1)は、(1-1)第2の所定の数m個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値から第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値を読み出すステップと、(1-2)第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値に対応して第4の所定の数n個のpointwise畳み込みカーネル内の対応する第3の所定の数m'個のpointwise畳み込みチャネル上の重み値を読み出すステップと、(1-3)pointwise畳み込み計算を、第4の所定の数n個のpointwise畳み込みカーネル内の対応する第3の所定の数m'個のpointwise畳み込みチャネル上の重み値とともに第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値に対してそれぞれ実行して、第4の所定の数n個のpointwise畳み込みカーネルに対応する第4の所定の数n個のpointwise畳み込み出力チャネル上の第1の所定の数p個の点の現在のpointwise畳み込み下位部分和を取得するステップとを含み得る。
特に、(1-3)において、第1の所定の数p個の点の各々について、それぞれ、第4の所定の数n個のpointwise畳み込みカーネル内の対応する第3の所定の数m'個のpointwise畳み込みチャネル上の重み値とともに第3の所定の数m'個のdepthwise畳み込み出力チャネル上の点の中間特徴値に対して乗算計算を実行して、第4の所定の数n個のグループの結果を取得する演算であって、その各グループが第3の所定の数m'個の乗算計算結果を含む、演算、およびそれぞれ、第4の所定の数n個のグループの結果の各グループの結果に第3の所定の数m'個の乗算計算結果を足し込んで、第4の所定の数n個のpointwise畳み込みカーネルに対応する第4の所定の数n個のpointwise畳み込み出力チャネル上のこの点に対する現在のpointwise畳み込み下位部分和を取得する演算が実行され得る。
(2)pointwise畳み込み計算を、次の第4の所定の数n個のpointwise畳み込みカーネル内の対応する第3の所定の数m'個のpointwise畳み込みチャネル上の重み値とともに第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値に対して実行して、次の第4の所定の数n個のpointwise畳み込みカーネルに対応する次の第4の所定の数n個のpointwise畳み込み出力チャネル上の第1の所定の数p個の点の現在のpointwise畳み込み下位部分和を取得することによって、すべてのpointwise畳み込み出力チャネル上の第1の所定の数p個の点の現在のpointwise畳み込み下位部分和が取得されるまで上記の演算を繰り返す。
サブステップ2:すべてのpointwise畳み込み出力チャネル上の第1の所定の数p個の点の現在のpointwise畳み込みの下位部分和と第1の所定の数p個の点の前の累算計算部分結果に対する累算計算を実行して、第1の所定の数p個の点の現在の累算計算部分結果を生成する。
たとえば、第1の所定の数p個の点の現在の累算計算部分結果を生成した後、現在の累算計算部分結果はメモリに記憶され、第1の所定の数p個の点の前の累算計算部分結果をカバーし得る。
サブステップ3:上記の演算を、それぞれ、すべてのpointwise畳み込みカーネル内の対応する次の第3の所定の数m'個のpointwise畳み込みチャネル上の重み値とともに次の第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の中間特徴値に従ってpointwise畳み込み計算を実行することによって繰り返し、それに対応して、その後の演算を、pointwise畳み込み計算および累算計算が第2の所定の数m個のdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値のすべてに対して完了するまで実行し、第1の所定の数p個の点の最終的累算計算部分結果はすべてのpointwise畳み込み出力チャネル上の第1の所定の数p個の点の現在のpointwise畳み込み部分和である。
ステップS320のサブステップ1〜3は、第2の実施形態におけるステップS220のステップS223〜S225に実質的に類似しており、したがって、その詳細な説明は省かれる。
たとえば、第1の実行において、最初に、前者のm'個のdepthwise畳み込み出力チャネル上のp個の点の中間特徴値は、depthwise畳み込み計算によって得られる中間特徴マップから読み出されるものとしてよい。次いで、前者のm'個のpointwise畳み込みチャネル上の重み値が、N個のpointwise畳み込みカーネル内の前者のn個のpointwise畳み込みカーネルから読み出され得る。次に、前者のn個のpointwise畳み込み出力チャネル上のpointwise畳み込み下位部分和が、両方に従って計算されるものとしてよい。次いで、後者のn個のpointwise畳み込み出力チャネル上のpointwise畳み込み下位部分和は、N個のpointwise畳み込み出力チャネル上のpointwise畳み込み下位部分和が取得されるまで計算される。次に、下位部分和が累算され、後者のm'個のチャネル上のp個の点の中間特徴値が読み出され、上記の演算が繰り返され、pointwise畳み込み出力チャネルのすべての上でp個の点の現在のpointwise畳み込み部分和を取得する。
本明細書において説明されている内容は、繰り返しが最初にpointwise畳み込みカーネルの数の大きさ(n)に関して実行され、次いで、繰り返しがチャネルの数の大きさ(m)に関して実行されるが、ただし、本開示の実施形態はそれに限定されないことに留意されたい。たとえば、繰り返しは、チャネルの数の大きさ(m)に関して実行されてもよく、次いで、繰り返しは、pointwise畳み込みカーネルの数の大きさ(n)に関して実行される。
単純な場合において、m'=mであれば、第1の実行において、最初に、第1のm個のチャネル上のp個の点の中間特徴値は、図14の中間特徴マップ(i=1)に示されているように、読み出されるものとしてよい。次いで、N個のpointwise畳み込みカーネルにおける前者のm個のpointwise畳み込みチャネル上の重み値は図14のpointwise畳み込みカーネル(i=1)に示されているように読み出され得る。次に、現在のpointwise畳み込み部分和は、図14の出力特徴マップ(i=1)に示されているように、両方に従って計算されるものとしてよい。
ステップS330において、累算計算が、それぞれ、すべてのpointwise畳み込み出力チャネル上の第1の所定の数p個の点の現在のpointwise畳み込みの部分和と第1の所定の数p個の点の前の累算計算結果とに対して実行され、第1の所定の数p個の点の現在の累算計算結果を生成する。
たとえば、第1の所定の数p個の点の現在の累算計算部分結果を生成した後、現在の累算計算結果はメモリに記憶され、第1の所定の数p個の点の前の累算計算結果をカバーする。
ステップS340において、上記の演算が繰り返され、pointwise畳み込み計算は、次の第2の所定の数m個のdepthwise畳み込み出力チャネルおよびpointwise畳み込みチャネル上で第1の所定の数p個の点の中間特徴値に従って実行され、その後の演算は、それに対応して、pointwise畳み込み計算および累算計算がすべてのdepthwise畳み込み出力チャネル上で第1の所定の数p個の点の中間特徴値のすべてに対して完了するまで実行され、第1の所定の数p個の点の最終的累算計算結果がすべてのpointwise畳み込み出力チャネル上の第1の所定の数p個の点の出力特徴値である。
たとえば、次に、中間特徴マップ(i=2)は、入力特徴マップ(i=2)およびdepthwise畳み込みカーネル(i=2)に従って計算されてよく、次いで、現在のpointwise畳み込み部分和は、図14の出力特徴マップ(i=2)に示されているように、中間特徴マップ(i=2)およびpointwise畳み込みカーネル(i=2)に従って計算されてよく、次に、出力特徴マップ(i=2)は、前の累算計算結果(すなわち、図14の出力特徴マップ(i=1))と累算され、現在の累算計算結果を生成する。同様にして、中間特徴マップ(i=z)は、入力特徴マップ(i=z)およびdepthwise畳み込みカーネル(i=z)に従って計算されてよく、次いで、現在のpointwise畳み込み部分和は、図14の出力特徴マップ(i=z)に示されているように、中間特徴マップ(i=z)およびpointwise畳み込みカーネル(i=z)に従って計算されてよく、次に、出力特徴マップ(i=z)は、前の累算計算結果(すなわち、現在のpointwise畳み込み部分和(z'-1)に対する現在のpointwise畳み込み部分和(1))と累算され、それにより、pointwise畳み込み演算の最終的出力結果として出力特徴値を含む出力特徴マップは、図8の出力特徴図に示されているように、取得され、そのサイズは点p個分であり、全部でN個のチャネルを有する。
たとえば、活性化演算および量子化演算のうちの少なくとも一方が、第1の所定の数p個の点の最終的累算計算結果がすべてのpointwise畳み込み出力チャネル上の第1の所定の数p個の点の出力特徴値としてメモリに記憶される前に各出力特徴値に対して実行され得る。
これ以降、本開示の第1の実施形態による畳み込み計算法は、特定の例を用いて説明される。
たとえば、図14に示されているように、depthwise畳み込みの幅および高さの大きさがS*Rであると仮定すると、チャネルの数(またはチャネル数が1と考えられるときには番号としても見なされ得る)はMであり、depthwise畳み込みの幅および高さの大きさは1*1であり、チャネル数はMであり、番号はNであり、入力特徴マップの幅および高さの大きさはX*Yであり、中間特徴マップの幅および高さの大きさはW*Hであり、出力特徴マップの幅および高さの大きさはE*Fであり、畳み込み計算方法は次のステップを含み得る。
1.depthwise畳み込みについて、最初にp(p<=H*W)点およびm(m<=M)チャネルの乗算および累算結果を計算し、累算はここでは図6に示されているRおよびSとして、畳み込みカーネルの長さおよび幅の方向で実行される累算であり、p*m乗算-累算(MAC)ユニットはここで共有され、p*m乗算-累算結果が取得される。
図9に示されているように、512個の乗算器-加算器ユニット(MAC)、および32個の点(上述のp=32)があり、16個のチャネル(上述のm=16、すなわち、チャネル変数cは0から15の範囲の値をとる)は一度に同時に計算されると仮定される。畳み込みカーネルのサイズが3*3であると仮定すると、乗算および累算の計算(MultおよびAccu)を9回実行した後(depthwise畳み込みカーネルの高さおよび幅変数rおよびsが0から2にそれぞれ変わり、入力特徴マップの幅変数xが0〜31から2〜33に変わり、高さ変数yが0から2に変わる)、32個の点の出力値、16個のチャネルが得られる。
2.上述のステップ1の結果に対して任意選択の活性化演算を実行し、活性化演算は非線形関数により数値を再マップすることを意味し、活性化関数は限定はしないがReLu関数、Sigmoid関数、arctangent(tan)関数などを含む。
3.上述のステップ2の結果に対して任意選択の量子化演算を実行し、量子化演算は高精度(通常32ビット)を有する乗算および累算結果をシフトまたは乗算および除算することによって低精度(通常8ビット)を有する乗算および累算結果を取得することを意味している。
4.上述のステップ3の結果をレジスタまたはオンチップSRAMに記憶する。
5.上述のステップ4の結果に対してpointwise計算を直接実行し、レジスタまたはオンチップSRAMからp個の点、m個のチャネルのdepthwise畳み込み計算の結果を読み出し、p個の点、m個のチャネルの乗算および累算結果を計算し、累算はここではチャネル方向の累算であり、p個の点、1個の出力チャネルのpointwise畳み込み部分和(第1から第mの入力チャネルの部分和)を取得する。
6.上述のステップ5の結果をレジスタまたはオンチップSRAMに記憶する。
7.ステップ5およびステップ6の演算をN回循環させることによってp個の点、N個の出力チャネルのpointwise畳み込み部分和(第1から第mまでの入力チャネルの部分和)の計算および記憶を完了させるが、ただし、pointwise畳み込みは、全部でn個の畳み込みカーネルを有し、N個の出力チャネル上のp個の出力点の部分和の結果はレジスタまたはオンチップSRAMに記憶されると仮定する。
図10に示されているように、pointwise畳み込みの畳み込みカーネルのサイズは1*1であり、また、512個の乗算器-加算器ユニット(ここでは512個の乗算器-加算器ユニットがあり、depthwise計算プロセスの512個の乗算器-加算器ユニットは、同じ512個の乗算器-加算器ユニットであっても、異なっていてもよい)があり、32個の点(上述のp=32)、16個のチャネル(上述のm=16、すなわち、チャネル変数cは0から15の範囲からの値をとる)、1つの畳み込みカーネルの畳み込みを毎回計算し、1個の出力チャネル上で32個の点の部分和のデータを取得すると仮定される。256個の畳み込みカーネルがあると仮定すると、256*(128/16)=2048回の計算の後、256個の出力チャネル上の32個の点の部分和のデータが取得される。
8.ステップ1〜7の演算を繰り返し、連続的に計算して、次のm個の出力チャネル上のp個の点の部分和(第m+1から第2mまでの入力チャネル上の部分和)を取得し、これらの部分和を前に記憶された部分和とともに累算し、累算結果をレジスタまたはオンチップSRAMに記憶し、このようにして、
回の循環を通じてN個の出力チャネル上のp個の出力点のpointwise畳み込みの最終的累算結果を取得する。
9.上述のステップ8の結果に対して任意選択の活性化演算を実行し、活性化演算は非線形関数により数値を再マップすることを意味し、活性化関数は限定はしないがReLu関数、Sigmoid関数、arctangent(tan)関数などを含む。
10.上述のステップ9の結果に対して任意選択の量子化演算を実行し、量子化演算は高精度乗算および累算結果(通常32ビット)をシフトまたは乗算および除算することによって低精度乗算および累算結果(通常8ビット)を取得することを意味している。
11.完全な出力特徴マップが取得されるまで次のp個の点を連続的に計算することによってステップ1〜10の上記の演算を繰り返す。
第1の実施形態の特定の例および第3の実施形態の特定の例と比較すると、depthwise畳み込みがM個のチャネルを有している場合(またはチャネルの数が1であると考えられるときには、これは番号と見なされてもよい)、およびpointwise畳み込みがN個の畳み込みカーネルを有している場合に、前者のソリューションは、一般的に量子化されるp*M個のdepthwise畳み込み結果データをバッファリングする必要があり(8bi)、p*M*8ビットのバッファ領域が必要であることがわかる。後者のソリューションは、一般的に高精度で、逆量子化されているp*N個の部分和データ(32ビット)をバッファリングする必要があり、次いで、p*N*32ビットの記憶領域が必要である。depthwise畳み込み結果が量子化され、部分和結果が量子化されていない典型的な場合において、M>4nであれば、後者のソリューションは、より多くの記憶領域を節減し、そうでなければ、前者のソリューションは、より多くの記憶領域を節減する。
したがって、本開示の一実施形態において、ニューラルネットワークにおける畳み込み計算法は、畳み込みカーネルのチャネル(または番号)Mの数とpointwise畳み込みカーネルの数Nとを比較するステップと、M>4Nであることに応答して、本開示の第1の実施形態による畳み込み計算法を実行して出力特徴値を計算するステップと、そうでなければ、本開示の第3の実施形態による畳み込み計算法を選択して出力特徴値を計算するステップとをさらに含み得る。
例示的な電子デバイス
これ以降、本開示の一実施形態による電子デバイスが、図15を参照しつつ説明される。
図15は、本開示の一実施形態による電子デバイスのブロック図を示している。
図15に示されているように、電子デバイス10は、1つまたは複数のプロセッサ11とメモリ12とを備える。
プロセッサ11は、データ処理機能および/または命令実行機能を有する任意の形態の処理ユニットであってよく、電子デバイス10内の他のアセンブリを制御して所望の機能を実行し得る。
メモリ12は、揮発性メモリおよび/または不揮発性メモリなどの、様々な形態のコンピュータ可読および書込可能記憶媒体を備え得る1つまたは複数のコンピュータプログラム製品を含み得る。揮発性メモリは、たとえば、ランダムアクセスメモリ(RAM)および/またはキャッシュなどを含むものとしてよい。不揮発性メモリは、たとえば、リードオンリーメモリ(ROM)、ハードディスク、フラッシュメモリなどを含み得る。1つまたは複数のコンピュータプログラム命令は、コンピュータ可読記憶媒体に格納されてよく、プロセッサ11はプログラム命令を実行して、上で説明されているような本開示の様々な実施形態のニューラルネットワークにおける畳み込み計算方法および/または他の所望の機能を実装し得る。
一例において、電子デバイス10は、入力デバイス13および出力デバイス14も備えてよく、これらのアセンブリは、バスシステムおよび/または他の形態の接続メカニズム(図示せず)によって相互接続される。
たとえば、入力デバイス13は、たとえば、キーボード、マウス、ならびに通信ネットワークおよびそれが接続されるリモート入力デバイスならびに同様のものを含み得る。
たとえば、出力デバイス14は、たとえば、ディスプレイ、プリンタ、ならびに通信ネットワークおよびそれが接続されるリモート出力デバイスならびに同様のものを含み得る。
もちろん、簡単のため、電子デバイス10における本開示に関係するアセンブリの一部のみが図15に示されており、バス、入出力インターフェース、および同様のものなどのアセンブリは省かれている。図15に示されている電子デバイス10のアセンブリおよび構造は、例にすぎず、また限定するものでなく、電子デバイス10は、必要に応じて他のアセンブリおよび構造を有し得ることに留意されたい。
例示的なコンピュータプログラム製品およびコンピュータ可読および書込可能記憶媒体
上で説明されている方法および装置に加えて、本開示の実施形態は、また、コンピュータプログラム命令を含むコンピュータプログラム製品であってよく、前記コンピュータプログラム命令は、プロセッサによって実行されたときに、プロセッサに、本開示の上述の「例示的な方法」部分で説明されているように本開示の様々な実施形態によりニューラルネットワークのための複合演算方法におけるステップを実行させる。
コンピュータプログラム製品は、Java(登録商標)、C++、などのオブジェクト指向プログラミング言語、および「C」言語または類似のプログラミング言語などの伝統的な手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで本開示の実施形態の演算を実行するためのプログラムコードを書くものとしてよい。プログラムコードは、全体がユーザコンピューティングデバイス上で実行されるか、ユーザデバイス上に部分的に実行されるか、スタンドアロンソフトウェアパッケージとして実行されるか、ユーザコンピューティングデバイス上で一部が実行されリモートコンピューティングデバイス上で一部が実行されるか、または全体がリモートコンピューティングデバイスもしくはサーバ上で実行され得る。
さらに、本開示の実施形態は、また、コンピュータプログラム命令が記憶されているコンピュータ可読および書込可能記憶媒体であってよく、前記コンピュータプログラム命令は、プロセッサによって実行されたときに、プロセッサに、本開示の上述の「例示的な方法」部分で説明されているように本開示の様々な実施形態によりニューラルネットワークのための複合演算方法におけるステップを実行させる。
コンピュータ可読および書込可能記憶媒体は、1つまたは複数の可読および書込可能媒体の任意の組合せを使用し得る。可読および書込可能媒体は、可読および書込可能信号媒体または可読および書込可能記憶媒体であってよい。可読および書込可能記憶媒体は、限定はしないが、電気、磁気、光学、電磁気、赤外線、または半導体のシステム、装置、もしくはデバイス、または上記の任意の組合せを含み得る。可読および書込可能記憶媒体のより具体的な例(非網羅的なリスト)は、1つまたは複数の電線を有する電気的接続、携帯型ディスク、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能プログラム可能リードオンリーメモリ(EPROMまたはフラッシュメモリ)、光ファイバ、携帯型コンパクトディスクリードオンリーメモリ(CD-ROM)、光学式記憶装置デバイス、磁気記憶装置デバイス、または上記のものの任意の好適な組合せを含む。
本開示の基本原理は、特定の実施形態と併せて上で説明されている。しかしながら、本開示において言及されている利点、優れている点、および効果などは単なる例であるが、本発明を制限することを意図していないことを指摘しておく必要がある。これらの利点、優れている点、効果などは、本開示の実施形態に本質的であるとは考えられない。それに加えて、前記の開示の特定の詳細は、例示することおよび理解しやすくすることのみを目的としており、限定することを目的としておらず、上記の詳細は、上で述べた特定の詳細において実装されるべきアプリケーションを制限しない。
本開示において関係するデバイス、装置、機器、システムのブロック図は、単に図解している例にすぎず、接続、配置構成、および構成がブロック図内で示されている方式で行われなければならないことを要求するか、または暗示することを意図していない。当業者であれば、デバイス、装置、機器、システムは、任意の方式で接続されるか、配置構成されるか、または構成され得ることを理解するであろう。「含む」、「備える」、「有する」および同様の語は開放語であり、「限定はしないが含む」ことを意味し、交換して使用され得る。本明細書で使用されているような「または」および「および」という語は、「および/または」を指し、文脈上明らかにそうでないことを示さない限り交換して使用され得る。本明細書で使用されているような「など」という語は、「限定はしないが、...など」という語句を指し、交換して使用される。
本開示の装置、機器、および方法において、各コンポーネントまたは各ステップは、分解され、および/または組み換えられ得ることにも留意されたい。これらの分解および/または組換は、本開示と同等であると見なされるべきである。
開示されている態様の上記の説明は、当業者が本出願を製作または使用することができるようにするために提示されている。これらの態様への様々な修正は、当業者には非常に明白であり、本明細書で定義される一般原理は、本出願の範囲から逸脱することなく他の態様に適用され得る。したがって、本開示は、本明細書に示されている態様に限定されることを意図されておらず、むしろ本明細書で開示されている原理および新規性のある特徴と一致する最も広い範囲を提示することを意図されている。
上記の説明は、例示および説明を目的として提示されている。それに加えて、説明は、本開示の実施形態を本明細書で開示されている形態に限定することを意図されていない。様々な例示的な態様および実施形態が上で説明されたが、当業者であれば、様々な変形、修正、変更、追加、および部分組合せを認識するであろう。
10 電子デバイス
11 プロセッサ
12 メモリ
13 入力デバイス
14 出力デバイス

Claims (16)

  1. ニューラルネットワークにおける畳み込み計算のための方法であって、
    ダイナミックランダムアクセスメモリ(DRAM)から入力特徴マップ、depthwise畳み込みカーネル、pointwise畳み込みカーネルを読み出すステップと、
    depthwise畳み込み計算およびpointwise畳み込み計算を、前記入力特徴マップ、前記depthwise畳み込みカーネル、前記pointwise畳み込みカーネルに従って実行して、すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を取得するステップと、
    すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の前記出力特徴値をオンチップメモリに記憶するステップであって、前記第1の所定の数pは、前記オンチップメモリ内の利用可能な空間、前記depthwise畳み込み計算ユニットの数、前記入力特徴マップの高さと幅、およびチャネルの数の大きさ、のうちの少なくとも1つに従って決定される、ステップと、
    上記の演算を繰り返して、すべてのpointwise畳み込み出力チャネル上ですべての点の出力特徴値を取得するステップとを含む方法。
  2. 前記実行するステップは、
    前記depthwise畳み込み計算を、前記入力特徴マップおよび前記depthwise畳み込みカーネルに従って実行して、すべてのdepthwise畳み込み出力チャネル上で前記第1の所定の数p個の点の中間特徴値を取得するステップと、
    前記pointwise畳み込み計算を、すべてのdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記中間特徴値、および前記pointwise畳み込みカーネルに従って実行して、すべてのpointwise畳み込み出力チャネル上で前記第1の所定の数p個の点の前記出力特徴値を取得するステップとを含む請求項1に記載の方法。
  3. 前記depthwise畳み込み計算を、前記入力特徴マップおよび前記depthwise畳み込みカーネルに従って実行して、すべてのdepthwise畳み込み出力チャネル上で前記第1の所定の数p個の点の中間特徴値を取得するステップは、
    前記depthwise畳み込み計算を、前記入力特徴マップおよび前記depthwise畳み込みカーネルに従って実行して、第2の所定の数m個のdepthwise畳み込み出力チャネル上で前記第1の所定の数p個の点の中間特徴値を取得し、各中間特徴値を前記オンチップメモリに記憶するステップであって、前記第2の所定の数mは、depthwise畳み込み計算ユニットの数および前記第1の所定の数pに従って決定される、ステップと、
    上記の演算を、前記入力特徴マップおよび前記depthwise畳み込みカーネルに従って前記depthwise畳み込み計算を実行して、次の第2の所定の数m個のdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の中間特徴値を取得し、それに対応して、すべてのdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記中間特徴値が得られるまでその後の演算を実行することによって繰り返すステップとを含む請求項2に記載の方法。
  4. 前記depthwise畳み込み計算を、前記入力特徴マップおよび前記depthwise畳み込みカーネルに従って実行して、第2の所定の数m個のdepthwise畳み込み出力チャネル上で前記第1の所定の数p個の点の中間特徴値を取得するステップは、
    前記入力特徴マップから前記第2の所定の数m個の入力チャネル上で点の前記第1の所定の数p個のグループの入力特徴値を読み出すステップであって、点の各グループは前記depthwise畳み込みカーネルにおける重み値の幅および高さに等しい幅および高さを有し、点の2つの隣接するグループは前記depthwise畳み込み計算のストライドに等しいストライドを有する、ステップと、
    前記第2の所定の数m個の入力チャネル上で点の前記第1の所定の数p個のグループの前記入力特徴値に対応する、対応する第2の所定の数m個のdepthwise畳み込みカーネルにおける重み値を読み出すステップと、
    前記対応する第2の所定の数m個のdepthwise畳み込みカーネルにおける前記重み値とともに前記第2の所定の数m個の入力チャネル上の点の前記第1の所定の数p個のグループの前記入力特徴値上で前記depthwise畳み込み計算をそれぞれ実行して、前記第2の所定の数m個のdepthwise畳み込み出力チャネル上で点の前記第1の所定の数p個のグループにそれぞれ対応する前記第1の所定の数p個の点の前記中間特徴値を取得するステップとを含む請求項3に記載の方法。
  5. 前記pointwise畳み込み計算を実行するステップと同時に、前記入力特徴マップから前記第2の所定の数m個の入力チャネル上の点の前記第1の所定の数p個のグループの前記入力特徴値と、前記対応する重み値とを読み出すステップをさらに含む請求項4に記載の方法。
  6. 前記対応する第2の所定の数m個のdepthwise畳み込みカーネルにおける前記重み値とともに前記第2の所定の数m個の入力チャネル上の点の前記第1の所定の数p個のグループの前記入力特徴値に対して前記depthwise畳み込み計算をそれぞれ実行して、前記第2の所定の数m個のdepthwise畳み込み出力チャネル上で点の前記第1の所定の数p個のグループにそれぞれ対応する前記第1の所定の数p個の点の中間特徴値を取得するステップは、
    点の前記第1の所定の数p個のグループ内の点の各グループに対して、
    前記第2の所定の数m個の入力チャネル上の点の前記グループ内の1つの点の入力特徴値、および前記対応する第2の所定の数m個のdepthwise畳み込みカーネルにおける対応する重み値に対して乗算計算をそれぞれ実行して、点の前記グループの現在の乗算計算結果を取得する演算と、
    点の前記グループの前記現在の乗算計算結果および点の前記グループの前の乗算計算結果に対して累算計算をそれぞれ実行する演算であって、前記前の乗算計算結果は前記第2の所定の数m個の入力チャネル上の点の前記グループ内の前の1つの点の前記入力特徴値、および前記対応する第2の所定の数m個のdepthwise畳み込みカーネルにおける対応する前の重み値に対して乗算計算をそれぞれ実行することによって取得される、演算と、
    上記演算を、前記第2の所定の数m個の入力チャネル上の点の前記グループ内の次の点の入力特徴値、および前記対応する第2の所定の数m個のdepthwise畳み込みカーネルにおける対応する次の重み値に対して乗算計算をそれぞれ実行し、それに対応して、前記第2の所定の数m個の入力チャネル上の点の前記グループ内のすべての点の前記入力特徴値に対する前記乗算および累算演算が完了するまでその後の演算を実行することによって繰り返す演算であって、点の前記グループの前記最終的累算計算結果は前記第2の所定の数m個のdepthwise畳み込み出力チャネル上の点の前記グループに対応する1つの点の前記中間特徴値である、演算とを実行するステップを含む請求項4に記載の方法。
  7. 活性化演算および量子化演算のうちの少なくとも一方を各中間特徴値に対して、それを前記オンチップメモリに記憶する前に実行するステップをさらに含む請求項3に記載の方法。
  8. 前記pointwise畳み込み計算を、すべてのdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の中間特徴値、および前記pointwise畳み込みカーネルに従って実行して、すべてのpointwise畳み込み出力チャネル上で前記第1の所定の数p個の点の出力特徴値を取得するステップは、
    前記pointwise畳み込み計算を、それぞれ、すべてのdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記中間特徴値、および第4の所定の数n個のpointwise畳み込みカーネル内のすべてのpointwise畳み込みチャネル上の重み値に従って実行して、前記第4の所定の数n個のpointwise畳み込みカーネルに対応する第4の所定の数n個のpointwise畳み込み出力チャネル上で前記第1の所定の数p個の点の出力特徴値を取得するステップと、
    上記の演算を、すべてのpointwise畳み込み出力チャネル上の前記第1の所定の数p個の点の出力特徴値を取得するまで、前記pointwise畳み込み計算を、それぞれ、すべてのdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記中間特徴値およびすべてのpointwise畳み込みチャネル上の次の第4の所定の数n個のpointwise畳み込みカーネルの重み値に従って実行することによって繰り返すステップとを含む請求項2に記載の方法。
  9. 前記pointwise畳み込み計算を、それぞれ、すべてのdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記中間特徴値およびすべてのpointwise畳み込みチャネル上の第4の所定の数n個のpointwise畳み込みカーネルの重み値に従って実行して、前記第4の所定の数n個のpointwise畳み込みカーネルに対応する第4の所定の数n個のpointwise畳み込み出力チャネル上の前記第1の所定の数p個の点の出力特徴値を取得するステップは、
    すべてのdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記中間特徴値から第3の所定の数m'個のdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の中間特徴値を読み出すステップと、
    前記第3の所定の数m'個のdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記中間特徴値に対応する、対応する第3の所定の数m'個のpointwise畳み込みチャネル上の第4の所定の数n個のpointwise畳み込みカーネルの重み値を読み出すステップと、
    前記pointwise畳み込み計算を、前記第4の所定の数n個のpointwise畳み込みカーネル内の前記対応する第3の所定の数m'個のpointwise畳み込みチャネル上の前記重み値とともに前記第3の所定の数m'個のdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記中間特徴値に対してそれぞれ実行して、前記第4の所定の数n個のpointwise畳み込みカーネルに対応する前記第4の所定の数n個のpointwise畳み込み出力チャネル上の前記第1の所定の数p個の点の現在のpointwise畳み込み部分和を取得するステップと、
    前記第4の所定の数n個のpointwise畳み込みカーネルに対応する前記第4の所定の数n個のpointwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記現在のpointwise畳み込み部分和と、前記第1の所定の数p個の点の前の累算計算結果とに対して累算計算をそれぞれ実行して、前記第1の所定の数p個の点の現在の累算計算結果を生成し、前記現在の累算計算結果を前記オンチップメモリに、前記第1の所定の数p個の点の前記前の累算計算結果をカバーするように記憶するステップであって、前記第3の所定の数m'および前記第4のプリセットされた数nは、pointwise畳み込み計算ユニットの数および前記第1の所定の数pに従って決定される、ステップと、
    上記の演算を、次の第3の所定の数m'個のdepthwise畳み込み出力チャネル上で前記第1の所定の数p個の点の中間特徴値を読み出し、対応する次の第3の所定の数m'個のpointwise畳み込みチャネル上の前記第4の所定の数n個のpointwise畳み込みカーネルの重み値を読み出し、それに対応して、その後の演算を、前記pointwise畳み込み計算および累算計算がすべてのdepthwise畳み込み出力チャネル上で前記第1の所定の数p個の点の前記中間特徴値に対して完了するまで実行し、前記第1の所定の数p個の点の前記最終的累算計算結果が前記第4の所定の数n個のpointwise畳み込みカーネルに対応する前記第4の所定の数n個のpointwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記出力特徴値である、ステップとを含む請求項8に記載の方法。
  10. 前記pointwise畳み込み計算を、前記第4の所定の数n個のpointwise畳み込みカーネル内の前記対応する第3の所定の数m'個のpointwise畳み込みチャネル上の前記重み値とともに前記第3の所定の数m'個のdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記中間特徴値に対して実行して、前記第4の所定の数n個のpointwise畳み込みカーネルに対応する前記第4の所定の数n個のpointwise畳み込み出力チャネル上の前記第1の所定の数p個の点の現在のpointwise畳み込み部分和を取得するステップは、
    前記第1の所定の数p個の点のうちの各点に対して、
    それぞれ、乗算計算を、前記第4の所定の数n個のpointwise畳み込みカーネル内の前記対応する第3の所定の数m'個のpointwise畳み込みチャネル上の前記重み値とともに前記第3の所定の数m'個のdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点のうちの前記点の前記中間特徴値に対して実行して、結果の第4の所定の数n個のグループを取得し、その各グループは第3の所定の数m'個の乗算計算結果を含む、演算と、
    それぞれ、結果の前記第4の所定の数n個のグループから結果の各グループの前記第3の所定の数m'個の乗算計算結果を加算して、前記第4の所定の数n個のpointwise畳み込みカーネルに対応する前記第4の所定の数n個のpointwise畳み込み出力チャネル上の前記点の現在のpointwise畳み込み部分和を取得する演算とを実行するステップを含む請求項9に記載の方法。
  11. 活性化演算および量子化演算のうちの少なくとも一方を、前記第1の所定の数p個の点の前記最終的累算計算結果を前記出力特徴値として前記オンチップメモリに記憶する前に、前記第4の所定の数n個のpointwise畳み込みカーネルに対応する前記第4の所定の数n個のpointwise畳み込み出力チャネル上の前記第1の所定の数p個の点の各出力特徴値に対して実行するステップをさらに含む請求項9に記載の方法。
  12. 前記pointwise畳み込み計算を、すべてのdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記中間特徴値、および前記pointwise畳み込みカーネルに従って実行して、すべてのpointwise畳み込み出力チャネル上で前記第1の所定の数p個の点の前記出力特徴値を取得するステップは、
    それぞれ、前記pointwise畳み込み計算を、第3の所定の数m'個のdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の中間特徴値、および対応する第3の所定の数m'個のpointwise畳み込みチャネル上のすべてのpointwise畳み込みカーネルの重み値に従って実行して、すべてのpointwise畳み込み出力チャネル上の前記第1の所定の数p個の点の現在のpointwise畳み込み部分和を取得するステップと、
    累算計算を、すべてのpointwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記現在のpointwise畳み込みの部分和と前記第1の所定の数p個の点の前の累算計算結果に対してそれぞれ実行して、前記第1の所定の数p個の点の現在の累算計算結果を生成し、前記第1の所定の数p個の点の前記現在の累算計算結果を前記オンチップメモリに記憶し、前記第1の所定の数p個の点の前記前の累算計算結果をカバーするステップと、
    上記の演算を、それぞれ次の第3の所定の数m'個のdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の中間特徴値、および対応する次の第3の所定の数m'個のpointwise畳み込みチャネル上のすべてのpointwise畳み込みカーネルの重み値に従って前記pointwise畳み込み計算を実行し、それに対応して、その後の演算を、すべてのdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記中間特徴値のすべてがpointwise畳み込み計算および累算計算を完了するまで実行するステップであって、前記第1の所定の数p個の点の最終的累算計算結果がすべてのpointwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記出力特徴値である、ステップとを含む請求項2に記載の方法。
  13. それぞれ、前記pointwise畳み込み計算を、第3の所定の数m'個のdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の中間特徴値、および対応する第3の所定の数m'個のpointwise畳み込みチャネル上のすべてのpointwise畳み込みカーネル内の重み値に従って実行して、すべてのpointwise畳み込み出力チャネル上の前記第1の所定の数p個の点の現在のpointwise畳み込み部分和を取得するステップは、
    前記pointwise畳み込み計算を、前記第3の所定の数m'個のdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記中間特徴値、および対応する第3の所定の数m'個のpointwise畳み込みチャネル上の第4の所定の数n個のpointwise畳み込みカーネルの重み値に従って実行して、前記第4の所定の数n個のpointwise畳み込みカーネルに対応する第4の所定の数n個のpointwise畳み込み出力チャネル上の前記第1の所定の数p個の点の現在のpointwise畳み込み部分和を取得するステップと、
    前記pointwise畳み込み計算を、前記第3の所定の数m'個のdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記中間特徴値および前記対応する第3の所定の数m'個のpointwise畳み込みチャネル上の次の第4の所定の数n個のpointwise畳み込みカーネルの重み値に対して実行して、次の第4の所定の数n個のpointwise畳み込みカーネルに対応する次の第4の所定の数n個のpointwise畳み込み出力チャネル上の前記第1の所定の数p個の点の現在のpointwise畳み込み部分和を取得することによって、すべてのpointwise畳み込み出力チャネル上の前記第1の所定の数p個の点の現在のpointwise畳み込み部分和を取得するまで上記の演算を繰り返すステップとを請求項12に記載の方法。
  14. それぞれ、前記pointwise畳み込み計算を、前記第3の所定の数m'個のdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記中間特徴値および前記対応する第3の所定の数m'個のpointwise畳み込みチャネル上のすべてのpointwise畳み込みカーネルの重み値に従って実行して、すべてのpointwise畳み込み出力チャネル上の前記第1の所定の数p個の点の現在のpointwise畳み込み部分和を取得するステップは、
    すべてのdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記中間特徴値から前記第3の所定の数m'個のdepthwise畳み込み出力チャネル上の第1の所定の数p個の点の前記中間特徴値を読み出すステップと、
    前記第3の所定の数m'個のdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の中間特徴値に対応して前記対応する第3の所定の数m'個のpointwise畳み込みチャネル上の第4の所定の数n個のpointwise畳み込みカーネルの重み値を読み出すステップと、
    前記pointwise畳み込み計算を、前記対応する第3の所定の数m'個のpointwise畳み込みチャネル上の前記第4の所定の数n個のpointwise畳み込みカーネル内の重み値とともに前記第3の所定の数m'個のdepthwise畳み込み出力チャネル上の前記第1の所定の数p個の点の前記中間特徴値に対して実行して、前記第4の所定の数n個のpointwise畳み込みカーネルに対応する前記第4の所定の数n個のpointwise畳み込み出力チャネル上の前記第1の所定の数p個の点の現在のpointwise畳み込み部分和を取得するステップを含む請求項13に記載の方法。
  15. 活性化演算および量子化演算のうちの少なくとも一方を、前記第1の所定の数p個の点の前記最終的累算計算結果を前記出力特徴値として前記オンチップメモリに記憶する前に、すべてのpointwise畳み込み出力チャネル上の前記第1の所定の数p個の点の各出力特徴値に対して実行するステップをさらに含む請求項12に記載の方法。
  16. 電子デバイスであって、
    プロセッサと、
    コンピュータプログラム命令が記憶されているメモリであって、前記命令は、前記プロセッサによって実行されたときに、ニューラルネットワークにおける畳み込み計算法の方法を前記プロセッサに実行させ、前記命令は
    ダイナミックランダムアクセスメモリ(DRAM)から入力特徴マップ、depthwise畳み込みカーネル、pointwise畳み込みカーネルを読み出すステップと、
    depthwise畳み込み計算およびpointwise畳み込み計算を、前記入力特徴マップ、前記depthwise畳み込みカーネル、前記pointwise畳み込みカーネルに従って実行して、すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の出力特徴値を取得するステップと、
    すべてのpointwise畳み込み出力チャネル上で第1の所定の数p個の点の前記出力特徴値をオンチップメモリに記憶するステップであって、前記第1の所定の数pは、前記オンチップメモリ内の利用可能な空間、前記depthwise畳み込み計算ユニットの数、ならびに前記入力特徴マップの幅、高さ、およびチャネルの大きさ、のうちの少なくとも1つに従って決定される、ステップと、
    上記の演算を繰り返して、すべてのpointwise畳み込み出力チャネル上ですべての点の出力特徴値を取得するステップとを含む、メモリとを備える電子デバイス。
JP2018236272A 2017-12-18 2018-12-18 ニューラルネットワークにおける畳み込み計算のための方法および電子デバイス Active JP6813561B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201711361938.6 2017-12-18
CN201711361938.6A CN108108811B (zh) 2017-12-18 2017-12-18 神经网络中的卷积计算方法和电子设备

Publications (2)

Publication Number Publication Date
JP2019109895A true JP2019109895A (ja) 2019-07-04
JP6813561B2 JP6813561B2 (ja) 2021-01-13

Family

ID=62209744

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018236272A Active JP6813561B2 (ja) 2017-12-18 2018-12-18 ニューラルネットワークにおける畳み込み計算のための方法および電子デバイス

Country Status (5)

Country Link
US (1) US11574031B2 (ja)
EP (1) EP3499427A1 (ja)
JP (1) JP6813561B2 (ja)
KR (1) KR102285965B1 (ja)
CN (1) CN108108811B (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110050267B (zh) 2016-12-09 2023-05-26 北京地平线信息技术有限公司 用于数据管理的系统和方法
CN108108811B (zh) 2017-12-18 2021-07-30 南京地平线机器人技术有限公司 神经网络中的卷积计算方法和电子设备
US11676371B2 (en) * 2018-08-17 2023-06-13 Fotonation Limited Apparatus for processing a neural network
CN109102070B (zh) * 2018-08-22 2020-11-24 地平线(上海)人工智能技术有限公司 卷积神经网络数据的预处理方法和装置
WO2020051776A1 (en) * 2018-09-11 2020-03-19 Intel Corporation Method and system of deep supervision object detection for reducing resource usage
CN109359574B (zh) * 2018-09-30 2021-05-14 宁波工程学院 基于信道级联的广域视场行人检测方法
US11449729B2 (en) * 2018-11-08 2022-09-20 Arm Limited Efficient convolutional neural networks
CN109740534B (zh) * 2018-12-29 2021-06-25 北京旷视科技有限公司 图像处理方法、装置及处理设备
US11551082B2 (en) * 2019-01-10 2023-01-10 Koninklijke Philips N.V. Parallel sequence reductions with recursive neural networks
CN110009103B (zh) * 2019-03-26 2021-06-29 深兰科技(上海)有限公司 一种深度学习卷积计算的方法和装置
CN112085175B (zh) * 2019-06-14 2024-05-03 华为技术有限公司 基于神经网络计算的数据处理方法和装置
US11726679B2 (en) * 2019-11-05 2023-08-15 Western Digital Technologies, Inc. Applying endurance groups to zoned namespaces
CN110782396B (zh) * 2019-11-25 2023-03-28 武汉大学 一种轻量化的图像超分辨率重建网络和重建方法
KR102361029B1 (ko) * 2019-11-29 2022-02-10 주식회사 모아이스 골프에 관한 콘텐츠를 추천하기 위한 방법, 디바이스 및 비일시성의 컴퓨터 판독 가능한 기록 매체
CN111341306B (zh) * 2020-02-14 2022-06-17 东南大学 基于语音特征复用的关键词唤醒cnn的存储和计算压缩方法
KR102494565B1 (ko) * 2020-05-20 2023-01-31 연세대학교 산학협력단 콘볼루션 신경망의 하드웨어 구조 최적화 방법
CN111610963B (zh) * 2020-06-24 2021-08-17 上海西井信息科技有限公司 芯片结构及其乘加计算引擎
US11276470B2 (en) 2020-07-17 2022-03-15 Micron Technology, Inc. Bitline driver isolation from page buffer circuitry in memory device
KR20220028899A (ko) 2020-08-31 2022-03-08 삼성전자주식회사 가속기, 가속기의 동작 방법 및 이를 포함한 전자 장치
CN112508137B (zh) * 2021-02-09 2021-07-06 南方电网数字电网研究院有限公司 变压器异常检测方法、装置、计算机设备和存储介质
CN113313056A (zh) * 2021-06-16 2021-08-27 中国科学技术大学 基于紧致3d卷积的唇语识别方法、系统、设备及存储介质
CN113344200A (zh) * 2021-06-17 2021-09-03 阿波罗智联(北京)科技有限公司 用于训练可分离卷积网络的方法、路侧设备及云控平台
CN113239899A (zh) * 2021-06-17 2021-08-10 阿波罗智联(北京)科技有限公司 用于处理图像和生成卷积核的方法、路侧设备和云控平台
TWI828185B (zh) * 2022-06-09 2024-01-01 大陸商星宸科技股份有限公司 三維卷積運算裝置與三維卷積運算方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10083395B2 (en) * 2015-05-21 2018-09-25 Google Llc Batch processing in a neural network processor
US10831444B2 (en) * 2016-04-04 2020-11-10 Technion Research & Development Foundation Limited Quantized neural network training and inference
GB201607713D0 (en) * 2016-05-03 2016-06-15 Imagination Tech Ltd Convolutional neural network
US10733505B2 (en) * 2016-11-10 2020-08-04 Google Llc Performing kernel striding in hardware
US11157814B2 (en) * 2016-11-15 2021-10-26 Google Llc Efficient convolutional neural networks and techniques to reduce associated computational costs
CN106709565A (zh) * 2016-11-16 2017-05-24 广州视源电子科技股份有限公司 一种神经网络的优化方法及装置
CN107153873B (zh) * 2017-05-08 2018-06-01 中国科学院计算技术研究所 一种二值卷积神经网络处理器及其使用方法
CN107798382B (zh) * 2017-11-21 2020-09-01 南京地平线机器人技术有限公司 用于适配卷积神经网络中的特征数据的方法和装置
CN108108811B (zh) 2017-12-18 2021-07-30 南京地平线机器人技术有限公司 神经网络中的卷积计算方法和电子设备

Also Published As

Publication number Publication date
KR102285965B1 (ko) 2021-08-03
JP6813561B2 (ja) 2021-01-13
US11574031B2 (en) 2023-02-07
KR20190073302A (ko) 2019-06-26
US20190197083A1 (en) 2019-06-27
CN108108811A (zh) 2018-06-01
EP3499427A1 (en) 2019-06-19
CN108108811B (zh) 2021-07-30

Similar Documents

Publication Publication Date Title
JP2019109896A (ja) ニューラルネットワークにおける畳み込み計算のための方法および電子デバイス
JP2019109895A (ja) ニューラルネットワークにおける畳み込み計算のための方法および電子デバイス
CN109919311B (zh) 生成指令序列的方法、执行神经网络运算的方法和装置
US20210150685A1 (en) Information processing method and terminal device
KR102347119B1 (ko) 가산기를 이용한 다차원 텐서의 데이터 액세스
JP7035080B2 (ja) 代替ループ限界値
CN109871936B (zh) 用于处理神经网络中的卷积运算的方法和装置
US9411726B2 (en) Low power computation architecture
US10936937B2 (en) Convolution operation device and convolution operation method
CA2929403C (en) Multi-dimensional sliding window operation for a vector processor
CN108629406B (zh) 用于卷积神经网络的运算装置
WO2021202308A1 (en) Counter-based multiplication using processing in memory
CN111767986A (zh) 一种基于神经网络的运算方法及装置
CN113673701A (zh) 神经网络模型的运行方法、可读介质和电子设备
US20220043630A1 (en) Electronic device and control method therefor
KR20230081697A (ko) 팽창 컨볼루션 계산 가속화 방법 및 장치
US11748100B2 (en) Processing in memory methods for convolutional operations
CN110533177B (zh) 一种数据读写装置、方法、设备、介质及卷积加速器
CN112116071A (zh) 神经网络计算方法、装置、可读存储介质以及电子设备
Meng et al. How to avoid zero-spacing in fractionally-strided convolution? a hardware-algorithm co-design methodology
US20230047364A1 (en) Partial sum management and reconfigurable systolic flow architectures for in-memory computation
WO2023004570A1 (en) Activation buffer architecture for data-reuse in a neural network accelerator
US20240095493A1 (en) Desparsified convolution for sparse tensors
US11544213B2 (en) Neural processor
WO2023004374A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190214

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200316

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200616

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201217

R150 Certificate of patent or registration of utility model

Ref document number: 6813561

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250