(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-26
(45)【発行日】2024-04-03
(54)【発明の名称】畳み込みハードウェアによる特徴データに対する逆畳み込み処理方法及び装置
(51)【国際特許分類】
G06F 17/10 20060101AFI20240327BHJP
G06N 3/063 20230101ALI20240327BHJP
G06N 3/0464 20230101ALI20240327BHJP
【FI】
G06F17/10 A
G06N3/063
G06N3/0464
(21)【出願番号】P 2022558105
(86)(22)【出願日】2022-02-10
(86)【国際出願番号】 CN2022075891
(87)【国際公開番号】W WO2022193877
(87)【国際公開日】2022-09-22
【審査請求日】2022-09-22
(31)【優先権主張番号】202110288755.6
(32)【優先日】2021-03-18
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】522375899
【氏名又は名称】北京地平▲線▼机器人技▲術▼研▲発▼有限公司
(74)【代理人】
【識別番号】100105924
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】チャオ、ヂュオラン
(72)【発明者】
【氏名】ユー、カイ
(72)【発明者】
【氏名】ファン、チャン
(72)【発明者】
【氏名】ワン、ジェンジャン
(72)【発明者】
【氏名】リー、ジェンジュン
(72)【発明者】
【氏名】リー、デーリン
(72)【発明者】
【氏名】ジャン、イーナン
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2019-087252(JP,A)
【文献】米国特許出願公開第2019/0138898(US,A1)
【文献】米国特許出願公開第2021/0019363(US,A1)
【文献】米国特許出願公開第2020/0234129(US,A1)
【文献】米国特許出願公開第2020/0057938(US,A1)
【文献】特開2017-130036(JP,A)
【文献】Dawen Xu et al.,Accelerating Generative Neural Networks on Unmodified Deep Learning Processors -- A Software Approach,ARXIV,米国,ARXIV.ORG,2020年04月29日,1-12,[online],[令和 5年9月28日検索],インターネット <URL:https://arxiv.org/abs/1907.01773>
【文献】Lin Bai et al.,A Unified Hardware Architecture for Convolutions and Deconvolutions in CNN,ARXIR,米国,ARXIR.ORG,2020年05月29日,1-5,[online],[令和 5年9月28日検索],インターネット <URL:https://arxiv.org/abs/2006.00053>1-5
【文献】Dawen Xu,,2018 IEEE/ACM Inter national Conference on Compuer-Aided Design (ICCAD),FCN-Engine: Accelerating A Deconvolutional Layers in Classic CNN Processors,米国,IEEE,2018年11月05日,1-6,[online],[令和 5年9月28日検索],インターネット <URL:https://ieeexplore.ieee.org/document/8587762>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/10
G06N 3/063
G06N 3/0464
(57)【特許請求の範囲】
【請求項1】
乗算加算アレイとオンチップメモリとを含む専用の畳み込みハードウェアによる特徴マップに対する逆畳み込み処理方法であって、
特徴マップ及び逆畳み込みカーネルを前記オンチップメモリに読み込み、前記特徴マップにゼロ埋め処理を行うステップと、
前記逆畳み込みカーネルに基づいて複数の畳み込みカーネルを決定するステップと、
各畳み込みカーネルから全要素が無効な重みである行及び/又は列を
削除して最適化畳み込みカーネルを得、ゼロ埋め後の特徴マップから対応する行及び/又は列を
削除して各最適化畳み込みカーネルに対応する最適化特徴マップを得るステップ
であって、前記無効な重みは、各畳み込みカーネルを決定するときに挿入されたゼロ値の重みであるステップと、
前記乗算加算アレイを利用して各最適化畳み込みカーネル及び対応する最適化特徴マップに対して畳み込み処理を行って、複数の畳み込み出力を得るステップと、
前記複数の畳み込み出力に対してインターリーブ合成処理を行って、前記特徴マップ及び前記逆畳み込みカーネルに対応する逆畳み込み出力を含むインターリーブ合成出力を得るステップと、を含む、
ことを特徴とする専用の畳み込みハードウェアによる特徴マップに対する逆畳み込み処理方法。
【請求項2】
前記乗算加算アレイに含まれる乗算器の数は、各最適化畳み込みカーネルに含まれる重み値の数以上である、
ことを特徴とする請求項1に記載の専用の畳み込みハードウェアによる特徴マップに対する逆畳み込み処理方法。
【請求項3】
前記特徴マップに対してゼロ埋め処理を行うステップは、
前記逆畳み込みカーネルの高さサイズと、逆畳み込み演算に用いられる高さ方向のステップサイズ及び高さ方向のゼロ埋めパラメーターと、に基づいて、前記特徴マップの上側でのゼロ埋めの数及び下側でのゼロ埋めの数を決定するステップと、
前記逆畳み込みカーネルの幅サイズと、逆畳み込み演算に用いられる幅方向のステップサイズ及び幅方向のゼロ埋めパラメーターと、に基づいて、前記特徴マップの左側でのゼロ埋めの数及び右側でのゼロ埋めの数を決定するステップと、を含み、
前記下側でのゼロ埋めの数は、前記上側でのゼロ埋めの数より1行多く、
前記右側でのゼロ埋めの数は、前記左側でのゼロ埋めの数より1列多い、
ことを特徴とする請求項1に記載の専用の畳み込みハードウェアによる特徴マップに対する逆畳み込み処理方法。
【請求項4】
前記逆畳み込みカーネルに基づいて複数の畳み込みカーネルを決定するステップは、
前記逆畳み込みカーネルに対応する畳み込みカーネルの数とサイズを決定するステップであって、前記畳み込みカーネルの数は、逆畳み込み演算に用いられる高さ方向のステップサイズと幅方向のステップサイズとの積と等しく、前記畳み込みカーネルの高さサイズは、前記逆畳み込みカーネルの高さサイズと、逆畳み込み演算に用いられる高さ方向のステップサイズ及び高さ方向のゼロ埋めパラメーターとの関数であり、畳み込みカーネルの幅サイズは、前記逆畳み込みカーネルの幅サイズと、逆畳み込み演算に用いられる幅方向のステップサイズ及び幅方向のゼロ埋めパラメーターとの関数であるステップと、
各畳み込みカーネルの各位置について、当該畳み込みカーネルの高さ及び幅方向の二次元インデックスと、当該畳み込みカーネルの高さサイズ及び幅サイズと、当該位置の二次元座標値と、逆畳み込み演算に用いられる高さ方向のステップサイズ及び幅方向のステップサイズと、高さ方向のゼロ埋めパラメーター及び幅方向のゼロ埋めパラメーターと、に基づいて、前記逆畳み込みカーネルの対応する位置の二次元座標値を決定し、前記対応する位置の重み値を前記畳み込みカーネルにおける当該位置の重み値とするステップと、を含み、
決定された前記逆畳み込みカーネルの対応する位置の二次元座標値が前記逆畳み込みカーネルの位置座標範囲を超える場合、前記畳み込みカーネルの当該位置の重みは、ゼロ値を有する無効な重みであると決定する、
ことを特徴とする請求項1に記載の専用の畳み込みハードウェアによる特徴マップに対する逆畳み込み処理方法。
【請求項5】
前記複数の畳み込み出力に対してインターリーブ合成処理を行うステップは、
逆畳み込み演算に用いられる高さ方向のステップサイズ及び幅方向のステップサイズをパディングステップサイズとし、畳み込みカーネルの高さ及び幅方向の二次元インデックスをパディングオフセットとして、各畳み込み出力の各要素を合成行列にパディングするステップを含む、
ことを特徴とする請求項4に記載の専用の畳み込みハードウェアによる特徴マップに対する逆畳み込み処理方法。
【請求項6】
前記複数の畳み込み出力に対してインターリーブ合成処理を行ってインターリーブ合成出力を得た後に、
前記インターリーブ合成出力に不要な部分が含まれている場合、前記インターリーブ合成出力をトリミングして
前記不要な部分を切り取ることにより、前記特徴マップ及び前記逆畳み込みカーネルに対応する逆畳み込み出力を得るステップをさらに含む、
ことを特徴とする請求項1に記載の専用の畳み込みハードウェアによる特徴マップに対する逆畳み込み処理方法。
【請求項7】
前記インターリーブ合成出力をトリミングするステップは、
トリミング後のサイズが前記特徴マップ及び前記逆畳み込みカーネルの逆畳み込み出力のサイズに対応するまで、
前記インターリーブ合成出力をトリミングして前記インターリーブ合成出力の右側及び下側
を切り取るステップを含む、
ことを特徴とする請求項6に記載の専用の畳み込みハードウェアによる特徴マップに対する逆畳み込み処理方法。
【請求項8】
乗算加算アレイとオンチップメモリとを含む専用の畳み込みハードウェアによる特徴マップに対する逆畳み込み処理装置であって、
特徴マップ及び逆畳み込みカーネルを前記オンチップメモリに読み込むために用いられる読み取りモジュールと、
前記特徴マップに対してゼロ埋め処理を行うために用いられるゼロ埋めモジュールと、
前記逆畳み込みカーネルに基づいて、複数の畳み込みカーネルを生成するために用いられる畳み込みカーネル生成モジュールと、
各畳み込みカーネルから全要素が無効な重みである行及び/又は列を
削除して最適化畳み込みカーネルを得、ゼロ埋め後の特徴マップから対応する行及び/又は列を
削除して各最適化畳み込みカーネルに対応する最適化特徴マップを得るために用いられる最適化モジュール
であって、前記無効な重みは、各畳み込みカーネルを決定するときに挿入されたゼロ値の重みである最適化モジュールと、
前記乗算加算アレイを利用して各最適化畳み込みカーネル及び対応する最適化特徴マップに対して畳み込み処理を行って、複数の畳み込み出力を得るために用いられる畳み込みモジュールと、
前記複数の畳み込み出力に対してインターリーブ合成処理を行って、前記特徴マップ及び前記逆畳み込みカーネルに対応する逆畳み込み出力を含むインターリーブ合成出力を得るために用いられるインターリーブ合成モジュールとを含む、
ことを特徴とする専用の畳み込みハードウェアによる特徴マップに対する逆畳み込み処理装置。
【請求項9】
乗算加算アレイとオンチップメモリとを含む専用の畳み込みハードウェアと、
命令が記憶される少なくとも1つのオフチップメモリと、
少なくとも1つのプロセッサと、を含み、
前記命令が前記プロセッサによって実行されると、請求項1~7のいずれか1項に記載の方法を実行する、
ことを特徴とする電子機器。
【請求項10】
コンピュータプログラム命令が記憶され、
前記コンピュータプログラム命令が電子機器のプロセッサによって実行されると、前記電子機器は請求項1~7のいずれか1項に記載の方法を実行し、
前記電子機器は、乗算加算アレイとオンチップメモリとを有する専用の畳み込みハードウェアをさらに含む、
ことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、2021年3月18日に中国国家知識産権局に提出された、出願番号が202110288755.6であり、発明の名称が「畳み込みハードウェアによる特徴データに対する逆畳み込み処理方法及び装置」である中国特許出願の優先権を主張し、その全ての内容が参照により本願に組み込まれる。
【0002】
本開示は、人工知能の技術分野に関し、特に、専用の畳み込みハードウェアによる特徴データに対する逆畳み込み処理方法、装置、機器及び記憶媒体に関する。
【背景技術】
【0003】
畳み込みニューラルネットワーク(Convolutional Neural Networks、CNN)アルゴリズムは、その優れるデータセットフィッティング能力と一般化能力により、現実世界における視覚、音声、センサーの知覚情報及び高レベルのセマンティック情報を分析するためにますます多用されるようになる。逆畳み込みは画像又は特徴データ(「特徴マップともいう」)に内挿又はアップサンプリングを行う操作であり、深層学習の理論更新と用途の開発に伴い、様々な新規の畳み込みニューラルネットワークシステムにおいて、低解像度の画像を高解像度の画像に復元し、又は高次元の特徴マップに基づいて低次元の特徴マップを生成するためにますます多用されるようになる。逆畳み込み処理は、画風変換(style transfer)、超高解像度、オブジェクト検出、セマンティック・セグメンテーション、インスタンス・セグメンテーション、キーポイント(人間骨格のキーポイントを含むが、これに限定されない)検出、深度推定などの分野で幅広く利用されることが予想される。
【0004】
中央処理装置(Central Processing Unit、CPU)やグラフィックス処理装置(Graphics Processing Unit、GPU)などの汎用プロセッサは、特徴マップに対して逆畳み込み処理を行うことができ、カラム対画像(column-to-image、col2im)変換方法を用いることができ、当該方法の例は、
図1に示されている。
図1を参照すると、当該例では、逆畳み込みカーネルKは、3×3行列であり、入力特徴マップXは、2×2行列であり、両者はそれぞれ一次元行列A、Bとして展開されることができる。当該一次元行列Aを転置し別の一次元行列Bと乗算して、9×4の行列Cを得ることができる。次に、カラム対画像により、行列Cの各列を3×3行列で表す二次元画像に変換し、且つ各行列を幅方向の所定のステップサイズs
w及び高さ方向の所定のステップサイズs
hでスプライシングし、オーバーラップ部分を重ね合わせて、出力特徴マップを得る。当該例では、スプライシングするステップサイズs
w、ステップサイズs
hは、いずれも2であり、理解の便利上、行列Cにおいて同じ下付き文字でスプライシング時に互いに重ね合わせる各画素を指示し、得られた出力特徴マップは、5×5行列である。最後に、高さ(h)と幅(w)方向のゼロ埋めパラメーターp
h、p
wと、出力ゼロ埋めパラメーターop
h、op
wとに基づいて、出力特徴マップをトリミングし、上側でp
w行の画素をトリミングし、左側でp
h列の画素をトリミングし、下側で(p
w-op
w)行の画素をトリミングし、右側で(p
h-op
h)列の画素をトリミングすることにより、最終的な逆畳み込み出力特徴マップを得る。
【0005】
図1の方法は、汎用プロセッサを利用して実行することができるが、汎用プロセッサのハードウェアのアーキテクチャ設計が、ニューラルネットワークモデルに含まれている畳み込み、プーリング、逆畳み込みなどの大型の処理に適さないため、動作効率が非常に低い。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本開示は、下記のような技術的課題(1)~(3)に鑑みなされたものであり、専用の畳み込みハードウェアによる特徴データに対する逆畳み込み処理方法、装置、機器及び記憶媒体を提供することを目的とする。
(1)汎用プロセッサのハードウェアアーキテクチャ設計は、ニューラルネットワークモデルに含まれる畳み込み、プーリング、逆畳み込み等の多くの処理に適合しないため、動作効率が非常に低い。
(2)専用のハードウェア加速器を使用してニューラルネットワークモデルを実行する場合、効率は大幅に向上されるが、一般に特定の処理について特定のハードウェアを設計する必要があるため、例えば、畳み込み処理と逆畳み込み処理とに対してそれぞれ個別に畳み込みモジュールと逆畳み込みモジュールとを設計する必要があるため、ハードウェアの複雑さが増加し、チップの面積オーバーヘッドと電力消費オーバーヘッドとが増加されてしまう。
(3)現在、畳み込みハードウェアを使用して逆畳み込み処理を実行する方法が提案されているが、無効な演算が多く含まれているため、ハードウェア加速器の遅延とエネルギー消費とがいずれも大きく、オンチップキャッシュスペースが増加しててしまうため、ハードウェアの高度化が求められる。
【課題を解決するための手段】
【0007】
本開示は、上記の技術的課題(1)~(3)を解決するために、下記のような技術的解決手段を提供する。
本開示の第1態様に係る特徴マップに対する逆畳み込み処理方法は、逆畳み込みカーネルを複数の畳み込みカーネルに分割し、畳み込みカーネルに対して最適化を行ってその中の無効な重みの行及び/又は列を除去する。最適化後の複数の畳み込みカーネル及び対応する特徴マップを用いて畳み込み演算を行い、得られた複数の畳み込み出力特徴マップをインターリーブし、組み合わせ及びトリミングすることにより、逆畳み込み出力結果を得る。本開示の技術的構成は、畳み込みハードウェアを利用して実行することができ、専用の逆畳み込みハードウェアを必要でないため、ハードウェアの複雑さを低減して、チップの面積オーバーヘッド及び電力消費オーバーヘッドを節約することができる。また、本開示の方法は、最適化処理ステップにより大量の無効な重みを除去するため、関連のハードウェアの動作効率を大幅向上させることができ、これによりハードウェアの遅延性能及びエネルギー消費特性を改善することができる。
【0008】
本開示の一態様に係る専用の畳み込みハードウェアによる特徴マップに対する逆畳み込み処理方法において、前記専用の畳み込みハードウェアは、乗算加算アレイとオンチップメモリとを含む。
【0009】
前記方法は、特徴マップ及び逆畳み込みカーネルをオンチップメモリに読み込み、前記特徴マップにゼロ埋め処理を行うステップと、前記逆畳み込みカーネルに基づいて複数の畳み込みカーネルを決定するステップと、各畳み込みカーネルから全要素が無効な重みである行及び/又は列を削除して最適化畳み込みカーネルを得、ゼロ埋め後の特徴マップから対応する行及び/又は列を削除して各最適化畳み込みカーネルに対応する最適化特徴マップを得るステップであって、前記無効な重みは、各畳み込みカーネルを決定するときに挿入されたゼロ値の重みであるステップと、前記乗算加算アレイを利用して各最適化畳み込みカーネル及び対応する最適化特徴マップに対して畳み込み処理を行って、複数の畳み込み出力を得るステップと、前記複数の畳み込み出力に対してインターリーブ合成処理を行って、前記特徴マップ及び前記逆畳み込みカーネルに対応する逆畳み込み出力を含むインターリーブ合成出力を得るステップと、を含む。
【0010】
本開示の第2態様に係る専用の畳み込みハードウェアによる特徴マップに対する逆畳み込み処理装置において、前記専用の畳み込みハードウェアは、乗算加算アレイとオンチップメモリとを含む。
【0011】
前記装置は、特徴マップ及び逆畳み込みカーネルをオンチップメモリに読み込むために用いられる読み取りモジュールと、前記特徴マップにゼロ埋め処理を行うために用いられるゼロ埋めモジュールと、前記逆畳み込みカーネルに基づいて複数の畳み込みカーネルを生成するために用いられる畳み込みカーネル生成モジュールと、各畳み込みカーネルから全要素が無効な重みである行及び/又は列を削除して最適化畳み込みカーネルを得、ゼロ埋め後の特徴マップから対応する行及び/又は列を削除して各最適化畳み込みカーネルに対応する最適化特徴マップを得るために用いられる最適化モジュールであって、前記無効な重みは、各畳み込みカーネルを決定するときに挿入されたゼロ値の重みである最適化モジュールと、前記乗算加算アレイを利用して各最適化畳み込みカーネル及び対応する最適化特徴マップに対して畳み込み処理を行って、複数の畳み込み出力を得るために用いられる畳み込みモジュールと、前記複数の畳み込み出力に対してインターリーブ合成処理を行って、前記特徴マップ及び前記逆畳み込みカーネルに対応する逆畳み込み出力を含むインターリーブ合成出力を得るために用いられるインターリーブ合成モジュールと、を含む。
【0012】
本開示の第3態様に係る電子機器は、乗算加算アレイとオンチップメモリとを含む専用の畳み込みハードウェアと、命令が記憶される少なくとも1つのオフチップメモリと、少なくとも1つのプロセッサと、を含み、前記命令が前記プロセッサによって実行されると、前記電子機器は上記した方法を実行する。
【0013】
本開示の別の態様は、コンピュータプログラム命令が記憶されるコンピュータ可読記憶媒体を提供する。前記コンピュータプログラム命令が電子機器のプロセッサによって実行されると、前記電子機器は上記した方法を実行する。
【0014】
前記電子機器は、乗算加算アレイとオンチップメモリとを有する専用の畳み込みハードウェアをさらに含む。
【発明の効果】
【0015】
本開示の方法は、専用の逆畳み込みハードウェアの実施を必要とせず、畳み込みハードウェアを利用して実行することができるため、ハードウェアの複雑さが低減され、チップの面積オーバーヘッドと電力消費オーバーヘッドとが節約される。しかも、本開示の方法では、最適化処理により大量の無効な演算を減少させて、ハードウェア加速器の動作効率をより一層向上させ、遅延とエネルギー消費特性とを改善し、オンチップキャッシュスペースに対する要求を低下させるため、ハードウェア費用の低減に有利である。
【0016】
以下、図面を参照して本開示の実施例を詳細に説明し、本開示の上記及び他の目的、特徴や利点が一層明瞭になるだろう。図面は、本開示の実施例の更なる理解のためのものであり、明細書を構成する部分として、本開示の実施例と共に本開示の解釈に用いられ、本開示への限定を構成するものではない。図面では、同じ符号が一般に同じ部品又はステップを表す。
【図面の簡単な説明】
【0017】
【
図1】汎用ハードウェアを使用した特徴マップに対する逆畳み込み処理に適合する方法の概略図を示す。
【
図2】逆畳み込みハードウェアを使用した特徴マップに対する逆畳み込み処理に適合する方法の概略図を示す。
【
図3】畳み込みハードウェアを使用した特徴マップに対する逆畳み込み処理に適合する方法の概略図を示す。
【
図4】例示的な一実施例に係る畳み込みハードウェアによる特徴マップに逆畳み込み処理方法のフローチャートを示す。
【
図5】
図4に示す方法に基づいて特徴マップに対して逆畳み込み処理を行うことの概略図を示す。
【
図6】例示的な一実施例に係る特徴マップに対して逆畳み込み処理を行うための装置の機能ブロック図を示す。
【
図7】例示的な一実施例に係る電子機器の構造ブロック図を示す。
【
図8】例示的な一実施例に係る
図7の電子機器に用いられる畳み込みハードウェア加速器の構造ブロック図を示す。
【発明を実施するための形態】
【0018】
以下、図面を参照しながら本開示に係る例示的な実施例を詳細に説明する。勿論、説明される実施例は、本開示の実施例の全てではなく、本開示の実施例の一部に過ぎない。なお、本開示は、ここで説明される例示的な実施例に限定されない。
【0019】
出願の概要
プロセッサの処理性能を向上させるために、一般に汎用プロセッサが高計算能力、大容量のキャッシュとメモリを有することが求められ、その結果、非常に高いエネルギー消費とハードウェア費用が必要となるため、汎用プロセッサは端末機器に適用されることができない。汎用プロセッサのこれらの欠点を克服するために、スライディング・ウィンドウ(sliding window)により畳み込み、プーリング、逆畳み込み等の処理を実行することに適合するとともに、動作効率が高く、電力消費が非常に低い専用のハードウェア加速器が開発された。
【0020】
図2は、専用のハードウェア加速器を使用して実行することに適合する、特徴マップに対する逆畳み込み処理方法を示す。
図2の例では、特徴マップと逆畳み込みカーネルとは、いずれも3×3行列であり、当該方法は、特徴マップにおける各数値をそれぞれ逆畳み込みカーネルと乗算して、サイズ(k
h,k
w)の複数の出力行列を得ることを含み、ここで、k
hは、逆畳み込みカーネルの高さサイズであり、k
wは、逆畳み込みカーネルの幅サイズである。次に、得られた複数の出力行列を高さ方向のステップサイズs
hと幅方向のステップサイズs
wとでスプライシングし、当該例では、ステップサイズs
hとs
wとは、いずれも2であり、オーバーラップ部分を累積して、サイズ7×7の組み合わせ特徴マップを得る。
【0021】
例えば、
図2の例では、特徴マップの1行目1列目の数値「7」と逆畳み込みカーネルの1行目3列目の重み値「3」との積と、特徴マップの1行目2列目の数値「3」と逆畳み込みカーネルの1行目1列目の重み値「-1」との積が、ステップサイズs
h=2、s
w=2でスプライシングする時に累積されて、組み合わせ特徴マップの1行目3列目の数値「18」を得る。特徴マップの1行目1列目の数値「7」と逆畳み込みカーネルの3行目3列目の重み値「1」との積と、特徴マップの1行目2列目の数値「3」と逆畳み込みカーネルの3行目1列目の重み値「1」との積と、特徴マップの2行目1列目の数値「1」と逆畳み込みカーネルの1行目3列目の重み値「3」との積と、特徴マップの2行目2列目の数値「0」と逆畳み込みカーネルの1行目1列目の重み値「-1」との積とが、ステップサイズs
h=2、s
w=2でスプライシングする時に累積されて、組み合わせ特徴マップの3行目3列目の数値「13」を得る。特徴マップにおける他の数値については類似の手順で逆畳み込みカーネルと乗算計算しスプライシングすることができるので、ここではその説明を省略する。
【0022】
次に、高さと幅方向のゼロ埋めパラメーターph、pwと出力ゼロ埋めパラメーターoph、opwとに基づいて、組み合わせ特徴マップをトリミングして、最終的な逆畳み込み出力特徴マップを得る。当該例では、ゼロ埋めパラメーターph、pwと出力ゼロ埋めパラメーターoph、opwとはいずれも1であるため、上側でpw=1行の画素をトリミングし、左側でph=1行の画素をトリミングし、下側で(pw-opw)=0行の画素をトリミングし、右側で(ph-oph)=0行の画素をトリミングして、逆畳み込み出力特徴マップとしてサイズ6×6の行列を得る。
【0023】
図2に示す方法は、専用のハードウェア加速器を使用して実行することができる。しかし、専用のハードウェア加速器は、一般に特定の計算過程に対して設計したものである。
図2に示す逆畳み込み処理が通常の畳み込み処理とは異なるため、専用のハードウェア加速器を用いて
図2の方法を実行する場合には、畳み込みハードウェアとは異なる専用の逆畳み込みハードウェアを設計する必要があり、乗算器と加算器とによって構成されるアレイ(一般には、乗算加算アレイMACという)と、当該アレイに用いられるオンチップキャッシュ(一般には、スタティックランダムアクセスメモリSRAM)とは、
図2を参照して説明される上記の処理過程に適合するように設計される必要がある。つまり、専用のハードウェア加速器において個別の畳み込みモジュール及び個別の逆畳み込みモジュールを設計する必要があり、これにより、ハードウェアの複雑さが増加し、チップの面積オーバーヘッドと電力消費オーバーヘッドが増加されてしまう。
【0024】
したがって、簡単なハードウェアを使用して畳み込み演算と逆畳み込み演算とを処理することが期待される。
図3は、スライディング・ウィンドウ畳み込み演算により逆畳み込み処理を実現する方法を示し、当該逆畳み込み処理方法が畳み込み演算のみに関与するため、専用の畳み込みハードウェアを使用して実行することができ、専用の逆畳み込みハードウェア又はモジュールは必要でない。
図3の方法では、例として、特徴マップサイズh×wは、3×3行列であり、畳み込みカーネルサイズk
h×k
wは、3×3行列であり、スライディングステップサイズs
hとs
wとは、いずれも2であり、埋めるゼロの数p
hとp
wとは、いずれも1であり、出力ゼロ埋めop
hとop
wとは、いずれも1である。
【0025】
図3を参照すると、最初に、特徴マップは、スパース化処理される。具体的には、特徴マップの行の間に(s
h-1)=1行のゼロ画素を追加し、列の間に(s
w-1)=1列のゼロ画素を追加し、上側で(k
h-1-p
h)=1行のゼロ画素を追加し、左側で(k
w-1-p
w)=1列のゼロ画素を追加し、下側で(k
h-1-p
h+op
h)=2行のゼロ画素を追加し、右側で(k
w-1-p
w+op
w)=2列のゼロ画素を追加することができる。そして、逆畳み込みカーネルにおける重み値が転倒され、すなわち、中心の画素を中心として、対称的な位置の重み値を交換する。次に、転倒された逆畳み込みカーネルを利用して、スパース化した特徴マップにステップサイズ(1,1)の畳み込み演算を行い、その出力結果が逆畳み込み計算結果となる。
【0026】
図3の逆畳み込み処理方法は、専用の逆畳み込み加速モジュールを必要とせず、畳み込みハードウェアを使用して実行することができるが、スパース化処理において多くのゼロ値の画素が挿入されるため、計算の約1/(s
h*s
w)のみが有効であり、計算の約(s
h*s
w-1)/(s
h*s
w)は無効である。s
h=s
w=2を例とすると、計算の約75%が無効であり、これにより、ハードウェア加速器の遅延とエネルギー消費とが非常に大きい。また、
図3の方法では、少なくとも特徴マップサイズの(s
h*s
w)倍以上のオンチップキャッシュSRAMスペースが必要であるため、ハードウェアの高度化が求められる。
【0027】
したがって、専用の逆畳み込みハードウェアを必要とせず、畳み込みハードウェアにより実施することができるとともに、関連のハードウェアの動作効率をより一層向上することができる、改良の逆畳み込み処理方法が期待される。
【0028】
汎用プロセッサのハードウェアアーキテクチャ設計は、ニューラルネットワークモデルに含まれる畳み込み、プーリング、逆畳み込み等の多くの処理に適合しないため、動作効率が非常に低い。
【0029】
また、専用のハードウェア加速器を使用してニューラルネットワークモデルを実行する場合、効率は大幅に向上されるが、一般に特定の処理について特定のハードウェアを設計する必要があるため、例えば、畳み込み処理と逆畳み込み処理とに対してそれぞれ個別に畳み込みモジュールと逆畳み込みモジュールとを設計する必要があるため、ハードウェアの複雑さが増加し、チップの面積オーバーヘッドと電力消費オーバーヘッドとが増加されてしまう。
【0030】
現在、畳み込みハードウェアを使用して逆畳み込み処理を実行する方法が提案されているが、無効な演算が多く含まれているため、ハードウェア加速器の遅延とエネルギー消費とがいずれも大きく、オンチップキャッシュスペースが増加しててしまうため、ハードウェアの高度化が求められる。
【0031】
本開示は、上記の技術的課題を解決することを目的として、特徴マップに対する逆畳み込み処理方法を提供する。本開示の実施例において、逆畳み込みカーネルを複数の畳み込みカーネルに分割し、各畳み込みカーネルに最適化処理を行ってその中の無効な重みを除去して、最適化畳み込みカーネルを得ることができる。
【0032】
また、本方法では、特徴マップに対して相応の最適化を行って、各最適化畳み込みカーネルに対応する最適化特徴マップを得る。各最適化畳み込みカーネル及び特徴マップを利用して畳み込み演算を行って、複数の畳み込み出力を得る。複数の畳み込み出力にインターリーブ合成を行うことができ、選択的には、トリミングをさらに行うと、所望のサイズの逆畳み込み出力特徴マップを得ることができる。
【0033】
本開示の方法は、専用の逆畳み込みハードウェアの実施を必要とせず、畳み込みハードウェアを利用して実行することができるため、ハードウェアの複雑さが低減され、チップの面積オーバーヘッドと電力消費オーバーヘッドとが節約される。しかも、本開示の方法では、最適化処理により大量の無効な演算を減少させて、ハードウェア加速器の動作効率をより一層向上させ、遅延とエネルギー消費特性とを改善し、オンチップキャッシュスペースに対する要求を低下させるため、ハードウェア費用の低減に有利である。
【0034】
例示的な方法
図4は、本開示の例示的な一実施例に係る畳み込みハードウェアによる特徴マップに対する逆畳み込み処理方法100のフローチャートを示し、
図5は、
図4に示す方法100に基づいて特徴マップに対して逆畳み込み処理を行うことの概略図を示す。畳み込みハードウェアは、乗算加算アレイ(Multiply And Accumulate、MAC)と、例えばスタティックランダムアクセスメモリ(Static Random-Access Memory、SRAM)のようなオンチップメモリと、を含むことができる。
【0035】
本開示では、説明の便宜上、予め入力特徴マップサイズ(h,w)と逆畳み込みカーネルサイズ(kh,kw)とスライディングステップサイズ(sh,sw)とゼロ埋め(ph,pw)と出力ゼロ埋め(oph,opw)とを含む、当該逆畳み込み演算に関連するパラメーターを定義しておき、ここで、hは、特徴マップの高さ寸法を示し、wは、特徴マップの幅寸法を示す。
【0036】
図4を参照すると、方法100は、特徴マップ及び逆畳み込みカーネルをオンチップメモリに読み込んで、特徴マップに対してゼロ埋め処理を行うステップS110を含む。
図5の例では、特徴マップは、3×3行列として示され、逆畳み込みカーネルも、3×3行列として示されるが、当然ながらこれは例示的なサイズであり、本開示は、これに限定されない。
【0037】
また、様々な能動的な形式で特徴マップに対してゼロ埋め処理を行うことができ、例えば、特徴マップをオンチップメモリに読み込むと同時にゼロ埋めを行うか、又は、特徴マップをオンチップメモリに読み込んでからゼロ埋めを行うか、又は、オンチップメモリから特徴マップを読み出して例えば畳み込み演算若しくは他の処理に用いる時にゼロ埋めを行うことができる。
【0038】
例示的な一実施例において、通常の対称的なゼロ埋めとは異なり、4つの方向において特徴マップに対してゼロ埋めをそれぞれ行ってもよい。具体的には、逆畳み込みカーネルの高さサイズと、逆畳み込み演算に用いられる高さ方向のステップサイズ及び高さ方向のゼロ埋めパラメーターと、に基づいて、特徴マップの上側のゼロ埋めの数p′htと下側のゼロ埋めの数p′hbとを決定することができ、下側のゼロ埋めの数p′hbは、上側のゼロ埋めの数p′htより1行多い。
【0039】
同様に、逆畳み込みカーネルの幅サイズと、逆畳み込み演算に用いられる幅方向のステップサイズ及び幅方向のゼロ埋めパラメーターと、に基づいて、特徴マップの左側のゼロ埋めの数p′wlと右側のゼロ埋めの数p′wrとを決定することができ、右側のゼロ埋めの数p′wrは、左側のゼロ埋めの数p′wlより1列多い。例えば、下記の式1~式4に基づいて、特徴マップの上側のゼロ埋めの数p′ht、左側のゼロ埋めの数p′wl、下側のゼロ埋めの数p′hb、右側のゼロ埋めの数p′wrをそれぞれ計算することができる。floorは、ラウンドダウン関数であり、ceilは、ラウンドアップ関数であり、kh及びkwは、それぞれ逆畳み込みカーネルの高さサイズ、幅サイズであり、sh及びswは、それぞれ逆畳み込み演算に用いられる高さ方向のステップサイズ、幅方向のステップサイズであり、ph及びpwは、それぞれ逆畳み込み演算に用いられる高さのゼロ埋めパラメーター、幅のゼロ埋めパラメーターである。関係式は、具体的に次のとおりである。
p′ht=floor((kh-1-ph)/sh) (式1)
p′wl=floor((kw-1-pw)/sw) (式2)
p′hb=ceil((kh-1-ph)/sh) (式3)
p′wr=ceil((kw-1-pw)/sw) (式4)
【0040】
図5の例では、関連パラメーターの値は、それぞれh=w=3、k
h=k
w=3、s
h=s
w=2、p
h=p
w=1、op
h=op
w=0である。上記の式1~式4の計算によれば、上側と左側とのゼロ埋めの数はゼロであり、すなわち、ゼロ埋めの必要がなく、下側と右側とのゼロ埋めの数は1であると決定することができる。したがって、ゼロ埋め後の特徴マップは、
図5に示すように、4×4行列となる。
【0041】
ステップS120では、逆畳み込みカーネルに基づいて複数の畳み込みカーネルを決定する。
【0042】
最初に、逆畳み込みカーネルに対応する畳み込みカーネルの数及びサイズを決定することができる。具体的には、畳み込みカーネルの数は、逆畳み込み演算に用いられる高さ方向のステップサイズs
hと幅方向のステップサイズs
wとの積s
h×s
wとして決定されることができ、各畳み込みカーネルに高さ方向及び幅方向の二次元インデックス(is
h,is
w)を割り当てることができる。
図5の例では、s
h=s
w=2であるため、逆畳み込みカーネルに対応する畳み込みカーネルの数は4であると決定されることができ、この4つの畳み込みカーネルには、それぞれ二次元インデックス(0,0)、(0,1)、(1,0)、(1,1)が割り当てられることができる。
【0043】
各畳み込みカーネルの高さ方向のサイズk′
hは、逆畳み込みカーネルの高さサイズk
hと、逆畳み込み演算に用いられる高さ方向のステップサイズs
h及び高さ方向のゼロ埋めパラメーターp
hと、に基づいて、決定されることができる。同様に、各畳み込みカーネルの幅方向のサイズk′
wは、逆畳み込みカーネルの幅サイズk
wと、逆畳み込み演算に用いられる幅方向のステップサイズs
w及び幅方向のゼロ埋めパラメーターp
wと、に基づいて、決定されることができる。例えば、各畳み込みカーネルの高さ及び幅サイズ(k′
h,k′
w)は、下記の式5、式6によって決定され、ceilは、ラウンドアップ関数であり、%は、剰余演算子である。
図5の例では、上記で定義したパラメーターの値を利用して計算して各畳み込みカーネルのサイズをk′
h=2、k′
w=2と決定することができる。
k′
h=ceil((k
h+p
h%s
h)/s
h) (式5)
k′
w=ceil((k
w+p
w%s
w)/s
w) (式6)
【0044】
ステップS120では、畳み込みカーネルの数及びサイズを決定した後、各畳み込みカーネルにおける重み値を決定する。
【0045】
具体的には、可能な一実現形態は、各畳み込みカーネルの各位置について、当該畳み込みカーネルの高さ及び幅方向の二次元インデックスと、畳み込みカーネルの高さ及び幅のサイズと、当該位置の二次元座標値と、逆畳み込み演算に用いられる高さ及び幅方向のステップサイズ、高さ及び幅方向のゼロ埋めパラメーターと、に基づいて、逆畳み込みカーネルの対応する位置の二次元座標値を決定し、当該対応する位置の重み値を畳み込みカーネルの当該位置の重み値とすることを含むことができる。例えば、各畳み込みカーネル(ish,isw)の各位置(ik′h,ik′w)について、下記の式7、式8によって逆畳み込みカーネルの対応する位置(ikh,ikw)を決定し、当該位置の重み値を畳み込みカーネルの位置(ik′h,ik′w)における重み値とすることができる。ish及びiswは、それぞれ各畳み込みカーネルの高さ及び幅方向のインデックスであり、ik′h及びik′wは、それぞれ畳み込みカーネルの高さ方向の位置座標、幅方向の位置座標であり、ikh及びikwは、それぞれ逆畳み込みカーネルの高さ方向の位置座標、幅方向の位置座標である。
【0046】
ここで、決定された逆畳み込みカーネルの対応する位置(ikh,ikw)が逆畳み込みカーネルにおける位置座標範囲を超える場合、畳み込みカーネルの位置(ik′h,ik′w)にゼロ値を挿入し、すなわち、当該位置の重みは、ゼロ値の無効な重みであることができる。
ikh=(k′h-1-ik′h)×sh+ish-ph%sh (式7)
ikw=(k′w-1-ik′w)×sw+isw-pw%sw (式8)
【0047】
例えば、
図5の例を参照すると、畳み込みカーネル(is
h=0,is
w=0)における重み値を計算する時に、位置(ik′
h=0,ik′
w=0)について、関連パラメーターis
h=is
w=0、ik′
h=ik′
w=0、k′
h=k′
w=2、s
h=s
w=2、p
h=p
w=1を上記の式7と式8に代入して、逆畳み込みカーネルの対応する位置を(ik
h=1,ik
w=1)と算出することができ、当該位置における重み値が「2」であるので、畳み込みカーネル(0,0)の位置(0,0)における重み値が「2」である。
【0048】
位置(ik′
h=0,ik′
w=1)については、関連パラメーターis
h=is
w=0、ik′
h=0、ik′
w=1、k′
h=k′
w=2、s
h=s
w=2、p
h=p
w=1を上記の式7と式8に代入して、逆畳み込みカーネルの対応する位置を(ik
h=1,ik
w=-1)と算出することができ、当該座標値が逆畳み込みカーネルの座標範囲を超えるため(
図5の例では、行座標範囲は0~2であり、列座標範囲は0~2である)、当該位置にゼロ値の無効な重みを挿入する。
【0049】
同様に、位置(ik′
h=1,ik′
w=0)及び(ik′
h=1,ik′
w=1)において、算出した逆畳み込みカーネルにおける対応する座標位置は、それぞれ(ik
h=-1,ik
w=1)及び(ik
h=-1,ik
w=-1)であり、いずれも逆畳み込みカーネルの座標範囲を超えるため、これらの位置にもゼロ値の無効な重みを挿入し、これにより
図5に示される畳み込みカーネル(0,0)のそれぞれの重み値を得る。
【0050】
同様に、畳み込みカーネル(is
h=0,is
w=1)では、位置(ik′
h=0,ik′
w=0)について、式7、式8によって算出された逆畳み込みカーネルの対応する位置は(ik
h=1,ik
w=2)であり、当該位置の重み値は「-5」である。位置(ik′
h=0,ik′
w=1)については、算出された逆畳み込みカーネルの対応する位置は(ik
h=1,ik
w=0)であり、当該位置の重み値は「0」である。位置(ik′
h=1,ik′
w=0)と(ik′
h=1,ik′
w=1)については、算出された逆畳み込みカーネルにおける対応する座標位置はそれぞれ(ik
h=-1,ik
w=2)及び(ik
h=-1,ik
w=0)であり、いずれも逆畳み込みカーネルの座標範囲を超えるため、これらの位置にゼロ値の無効な重みを挿入し、これにより
図5に示される畳み込みカーネル(0,1)のそれぞれの重み値を得る。同様に、畳み込みカーネル(is
h=1,is
w=0)において、1列目の2つの重み値「-3,0」は、上記の計算で逆畳み込みカーネルの対応する位置により決定される重み値であり、2列目の2つの重み値は、算出された座標値が逆畳み込みカーネルの座標範囲を超えるため挿入されたゼロ値の無効な重みである。
【0051】
畳み込みカーネル(ish=1,isw=1)において、4つの重み値「1,1,3,-1」は、いずれも上記の計算で逆畳み込みカーネルの対応する位置により決定された重み値であり、ゼロ値の無効な重みは挿入されていない。なお、逆畳み込みカーネルにより決定されたゼロ値の重み(即ち、逆畳み込みカーネル自体に含まれるゼロ値の重み)は有効な重みであり、算出された位置座標が範囲外であるため挿入されたゼロ値の重みは無効な重みである。
【0052】
いくつかの実施例において、挿入されたゼロ値の無効な重みと逆畳み込みカーネルに最初に含まれているゼロ値の有効な重みとを区別するために、挿入されたゼロ値の無効な重みにマークを付けて、無効な重みであることを指示することができる。又は、畳み込みカーネルにおけるそれぞれの重み値にマークを付けて、有効な重みか、無効な重みであるかを指示することもできる。例として、当該マークは1ビットであることができ、その値「0」は、対応する重みが無効な重みであることを指示し、値「1」は、対応する重みが有効な重みであること指示し、又は逆でも構わない。当該指示ビットは、対応する重み値と共に記憶されることができ、例えば、重み値に付けた最下位のビット若しくは最上位のビットとして記憶されることができ、又は、ビットマップ(bit map)を形成して当該畳み込みカーネルとは別途に記憶されることができる。
【0053】
ここで、逆畳み込みカーネルに基づいて、複数の畳み込みカーネルを決定する。なお、逆畳み込みカーネルにバイアス値が含まれている場合に、それに基づいて決定される複数の畳み込みカーネルは同じバイアス値を有してもよい。
【0054】
上記のように決定された複数の畳み込みカーネルには、大量の無効な重みが含まれている可能性があるため、ステップS130では、さらに各畳み込みカーネルに最適化を行って、各畳み込みカーネルから全要素が無効な重みである行及び/又は列を除去して最適化畳み込みカーネルを得、これに対応してゼロ埋め処理した後の特徴マップから対応する行及び/又は列を除去して各最適化畳み込みカーネルに対応する最適化特徴マップを得る。
【0055】
例えば、上記のように畳み込みカーネルにおける各ゼロ値の重みに指示ビットを設定した場合、まず畳み込みカーネルの1行又は1列の重み値の全てがゼロ値であるかを判断する。1行又は1列が少なくとも1つの非ゼロの重み値を含んでいる場合、当該行又は列は最適化により除去されることはできない。1行又は1列における重み値の全てがゼロである場合、当該ゼロ値に関連する指示マークに基づいて有効なゼロ値であるか、無効なゼロ値であるかを決定することができる。1行又は1列における重みの全てが無効なゼロ値である場合にのみ、最適化により当該行又は列を除去することができる。
【0056】
別のいくつかの実施例において、畳み込みカーネルにおける各重み(ゼロ値の重みと非ゼロ値の重みとを含む)のいずれもに対して有効な重みであるかどうかを指示する指示ビットを設定した場合、直接これらの指示ビットに基づいて畳み込みカーネルの1行又は1列の重みの全てが無効な重みであるかを判断することができる。畳み込みカーネルの1行又は1列の重みの全てが無効な重みである場合、最適化により当該行又は列を除去することができる。
【0057】
以上によれば、ステップS130では、各最適化畳み込みカーネルについて決定された最適化特徴マップが互いに異なる可能性がある。例えば、
図5の例を参照すると、畳み込みカーネル(0,0)について、その右側の1列と下側の1行とは、いずれもゼロ値の無効な重みであり、最適化により除去され、1つの有効な重み値として「2」のみが残る。これに対応し、ゼロ埋め後の特徴マップの右側の1列と下側の1行とが最適化により除去され、畳み込みカーネル(0,0)に用いられる最適化特徴マップ(0,0)として3×3行列が得られる。畳み込みカーネル(0,1)について、その下側の1行がゼロ値の無効な重みのみを含んでいるため、最適化により除去され、2つの有効な重み値として1行目の「-5,0」だけが残る。これに対応し、ゼロ埋め後の特徴マップの下側の1行が最適化により除去され、畳み込みカーネル(0,1)に用いられる最適化特徴マップ(0,1)として3×4行列が得られる。
【0058】
同様に、畳み込みカーネル(1,0)について、その右側の1列がゼロ値の無効な重みのみを含んでいるため、最適化により除去され、2つの有効な重み値として1列目の「-3,0」のみが残る。これに対応し、ゼロ埋め後の特徴マップの右側の1列が最適化により除去され、畳み込みカーネル(1,0)に用いられる最適化特徴マップ(1,0)として4×3行列が得られる。畳み込みカーネル(1,1)について、ゼロ値の無効な重みを一切含まないため、最適化により除去される行又は列はなく、対応する特徴マップ(1,1)も行又は列は除去されないため、ゼロ埋め後の特徴マップであり、4×4行列である。
【0059】
以上によれば、ステップS130の最適化処理により、逆畳み込み処理から無効な演算をほぼ完全に解消することができ、これにより関連ハードウェアの動作効率を向上させ、遅延とエネルギー消費を改善することができる。
【0060】
次に、ステップS140では、畳み込みハードウェアの乗算加算アレイにより各最適化畳み込みカーネル及び対応する最適化特徴マップに畳み込み演算を行って、対応の各畳み込み出力を得ることができる。例えば、後続の
図8を参照して具体的に説明するように、畳み込みカーネルにおける各重み値と、それに対応する特徴マップにおける特徴データと、が乗算加算アレイの乗算器に提供され、乗算器で乗算演算が完了した後、その結果が加算器に出力され、他の乗算器の出力と累積される。
【0061】
選択的には、累積により得られた結果は、当該畳み込みカーネルのバイアス値によって線形調整されることができ、得られた調整後の値は、畳み込み演算の出力値としてオンチップメモリSRAMに記憶されることができる。いくつかの実施例において、スライディング・ウィンドウ(sliding window)法に基づいて、畳み込みカーネルを順次、特徴マップの対応するウィンドウにおける特徴データと畳み込みを行って、出力特徴マップにおける各特徴データを算出することができる。
【0062】
ステップS140では、選択的には、畳み込みハードウェアの乗算加算アレイにおける乗算器の数は、各最適化畳み込みカーネルに含まれる重み値の数以上であり、これにより1つのスライディング・ウィンドウの畳み込み演算が一度に完了されて、高い計算効率が保証されることができる。
【0063】
なお、乗算加算アレイにおける乗算器の数は、逆畳み込みカーネルにおける重み値の数より小さくてもよく、つまり、本実施例では、比較的少ないハードウェアリソースを利用して比較的大型の逆畳み込み処理を実現することができる。例えば、
図5に示される例では、逆畳み込みカーネルは、9つの重み値を含み、対応する畳み込みカーネルは、最大4つの重み値を含むため、乗算器の数は、4つ又はより多くてもよい。引き続き
図5の例を参照すると、ステップS140の畳み込み演算により4つの出力特徴マップ(0,0)~(1,1)を得ることができ、各特徴マップはいずれも3×3行列である。なお、各最適化畳み込みカーネルが異なるサイズを有する可能性があるが、対応する特徴マップも適宜最適化されるため、各最適化畳み込みカーネルに対応する畳み込み出力特徴マップは最適化前と同じであり、各畳み込み出力特徴マップは同じサイズを有するということは理解できる。
【0064】
ステップS150では、各畳み込み出力特徴マップに対してインターリーブ合成処理を行って、インターリーブ合成出力を得る。インターリーブ合成処理は、逆畳み込み演算に用いられる高さ方向のステップサイズ及び幅方向のステップサイズをパディングステップサイズとし、畳み込みカーネルの高さ及び幅方向の二次元インデックスをパディングオフセットとして、各畳み込み出力の各要素を合成行列にパディングすることを含み、下記の式9、式10で表すことができ、ihfo及びiwfoは、それぞれ合成行列における高さ座標、幅座標であり、ish及びiswは、畳み込み出力特徴マップの二次元インデックスであり、即ち対応する畳み込みカーネルの二次元インデックスであり、ih及びiwは、それぞれ畳み込み出力特徴マップにおける高さ座標、幅座標であり、sh及びswは、それぞれ高さ方向と幅方向のパディングステップサイズである。
ihfo=ih×sh+ish (式9)
iwfo=iw×sw+isw (式10)
【0065】
式9、式10を利用して各畳み込み出力特徴マップにおける位置座標を合成行列における位置座標に変換することにより、各畳み込み出力特徴マップにおけるデータを合成行列にパディングして、インターリーブ合成処理を完了することができる。例えば、
図5に示す例を参照すると、畳み込み出力特徴マップ(0,0)における各特徴データは、高さパディングステップサイズs
h=2、幅パディングステップサイズs
w=2であり、高さ及び幅方向上のオフセットがいずれもゼロであることで、合成行列にパディングされる。
【0066】
図5に示すように、畳み込み出力特徴マップ(0,0)の1行目の3つの位置(0,0)、(0,1)、(0,2)における特徴データ「14、6、8」は、それぞれ、上記の式9、式10の計算によって決定された合成行列の位置(0,0)、(0,2)、(0,4)にパディングされ、3行目の3つの位置(2,0)、(2,1)、(2,2)における特徴データ「-4、2、2」は、それぞれ、計算によって決定された合成行列の位置(4,0)、(4,2)、(4,4)にパディングされる。畳み込み出力特徴マップ(0,1)の各特徴データも同様に高さステップサイズs
h=2、幅ステップサイズs
w=2で合成行列にパディングされるが、畳み込み出力特徴マップ(0,0)に対し、高さ方向のオフセットがゼロであり、幅方向のオフセットが1である。
【0067】
図5に示すように、畳み込み出力特徴マップ(0,1)の1行目の3つの位置(0,0)、(0,1)、(0,2)における特徴データ「-35、-15、-20」は、それぞれ、上記の式9、式10の計算によって決定された合成行列の位置(0,1)、(0,3)、(0,5)にパディングされ、3行目の3つの位置(2,0)、(2,1)、(2,2)における特徴データ「10、-5、-5」は、それぞれ、計算によって決定された合成行列の位置(4,1)、(4,3)、(4,5)にパディングされる。畳み込み出力特徴マップ(1,0)の各特徴データも同様に高さステップサイズs
h=2、幅ステップサイズs
w=2で合成行列にパディングされるが、畳み込み出力特徴マップ(0,0)に対し、高さ方向のオフセットが1であり、幅方向のオフセットが0である。
【0068】
図5に示すように、畳み込み出力特徴マップ(1,0)の1行目の3つの位置(0,0)、(0,1)、(0,2)における特徴データ「-21、-9、-12」は、それぞれ、上記の式9、式10の計算によって決定された合成行列の位置(1,0)、(1,2)、(1,4)にパディングされ、3行目の3つの位置(2,0)、(2,1)、(2,2)における特徴データ「6、-3、-3」は、それぞれ、計算によって決定された合成行列の位置(5,0)、(5,2)、(5,4)にパディングされる。畳み込み出力特徴マップ(1,1)の各特徴データは、高さステップサイズs
h=2、幅ステップサイズs
w=2で、高さ方向のオフセットが1、幅方向のオフセットが1であることで、合成行列にパディングされる。
【0069】
図5に示すように、畳み込み出力特徴マップ(1,1)の1行目の3つの位置(0,0)、(0,1)、(0,2)における特徴データ「13、9、-2」は、それぞれ、上記の式9、式10の計算によって決定された合成行列の位置(1,1)、(1,3)、(1,5)にパディングされ、3行目の3つの位置(2,0)、(2,1)、(2,2)における特徴データ「-1、2、1」は、それぞれ、計算によって決定された合成行列の位置(5,1)、(5,3)、(5,5)にパディングされる。これにより、
図5に示すように、4つの3×3行列で表される畳み込み出力特徴マップをインターリーブして6×6行列のインターリーブ合成特徴マップを得ることができる。
【0070】
ステップS150で得られたインターリーブ合成出力は、少なくとも、最初に提供された逆畳み込みカーネル及び特徴マップに対応する逆畳み込み出力を含むことができる。例えば、いくつかの実施例において、ステップS150で得られたインターリーブ合成出力は、最初に提供された逆畳み込みカーネル及び特徴マップの逆畳み込み出力である。別のいくつかの実施例において、インターリーブ合成をトリミングして、逆畳み込み出力を得ることもできる。したがって、本実施例に係る方法100は、ステップS160をさらに含むことができる。
【0071】
S160では、インターリーブ出力をトリミングして、逆畳み込みカーネル及び最初の入力特徴マップに対応する逆畳み込み出力を得る。
【0072】
具体的には、ステップS160では、トリミング後のサイズが逆畳み込み出力のサイズに対応するまで、インターリーブ合成出力の右側及び下側に対してトリミングすることができる。例えば、下記の式11、式12の計算によって逆畳み込み出力のサイズhoとwoを決定することができる。
ho=(h-1)×sh-2×ph+kh+oph (式11)
wo=(w-1)×sw-2×pw+kw+opw (式12)
【0073】
そして、式13~式16の計算によってインターリーブ合成出力のサイズhfoとwfoを決定することができ、h′oとw′oは、各最適化畳み込みカーネルの畳み込み出力のサイズである。
hfo=sh×h′o (式13)
wfo=sw×w′o (式14)
h′o=h+p′ht+p′hb-k′h+1 (式15)
w′o=w+p′wl+p′wr-k′w+1 (式16)
【0074】
したがって、ステップS160では、インターリーブ出力の右側で(wfo-wo)列をトリミングし、下側で(hfo-ho)行をトリミングして、サイズ(ho,wo)の逆畳み込み出力を得ることができる。
【0075】
図5の例では、上記の式によって算出された畳み込み出力のサイズが3×3であり、インターリーブ合成出力のサイズが6×6であり、逆畳み込み出力のサイズが5×5であるため、トリミングステップS160では、インターリーブ合成出力の右側の1列の画素と下側の1行の画素とを除去して逆畳み込み出力を得る。なお、いくつかの実施例において、計算によって逆畳み込み出力のサイズと等しいインターリーブ出力のサイズを得た場合、トリミングステップS160を省略してもよいということは理解できる。
【0076】
上記の
図4及び
図5を参照した上記の説明によれば、上記の実施例の方法を利用すると、専用の逆畳み込みハードウェアを提供することなく、畳み込みハードウェアを使用して特徴マップに対して逆畳み込み処理を実行することができるため、ハードウェアの複雑さを低減し、チップの面積オーバーヘッドと電力消費オーバーヘッドを節約することができる。
【0077】
そして、当該方法は入力特徴マップに対してスパース化処理を行う必要がなく、最適化処理によりゼロ値の無効な重みを多く除去するため、無効な演算を大幅に減少させて、ハードウェアの動作効率を向上させることができ、関連ハードウェアの遅延とエネルギー消費特性を改善し、オンチップキャッシュスペースに対する要求を減少させるため、ハードウェア費用のより一層の低減に有利である。
【0078】
例示的な装置
図6は、例示的な一実施例に係る特徴マップに対して逆畳み込み処理を行うための装置200の機能ブロック図を示す。なお、装置200の各機能モジュールは、上記での
図4と
図5を参照して説明した方法100の各ステップを実行するために用いられるため、以下、各モジュールを簡潔に説明し、詳細については上記した方法100を参照することができる。
【0079】
図6に示すように、装置200は、読み取りモジュール210と、ゼロ埋めモジュール220と、畳み込みカーネル生成モジュール230と、最適化モジュール240と、畳み込みモジュール250と、インターリーブ合成モジュール260と、を含むことができる。
【0080】
読み取りモジュール210は、上記のステップS110で説明したように、特徴マップ及び逆畳み込みカーネルを畳み込みハードウェアの例えばダイナミックランダムアクセスメモリSRAMのようなオンチップメモリに読み込むために用いられることができる。畳み込みハードウェアは、畳み込み処理を実行するために用いられる専用のハードウェア加速器であることができ、乗算器と加算器とによって構成される乗算加算アレイと、オンチップメモリと、を含むことができる。特徴マップ及び逆畳み込みカーネルは、例えば、メモリとして用いられるダイナミックランダムアクセスメモリDRAM、フラッシュメモリ若しくは電気的消去可能プログラマブル読み取り専用メモリEEPROMなどの不揮発性メモリから畳み込みハードウェアのオンチップメモリに読み込まれることができる。
【0081】
ゼロ埋めモジュール220は、上記のステップS110で説明したように、特徴マップにゼロ埋め処理を行うために用いられることができる。いくつかの実施例において、様々な能動的な形式で特徴マップにゼロ埋め処理を行うことができ、例えば、特徴マップをオンチップメモリに読み込むと同時にゼロ埋めを行うか、又は、特徴マップをオンチップメモリに読み込んでからゼロ埋めを行うか、又は、オンチップメモリから特徴マップを読み出して例えば畳み込み演算若しくは他の処理に用いる時にゼロ埋めを行うことができる。
【0082】
畳み込みカーネル生成モジュール230は、上記のステップS120で説明したように、逆畳み込みカーネルに基づいて複数の畳み込みカーネルを生成するために用いることができる。例えば、畳み込みカーネル生成モジュール230は、逆畳み込みカーネルに対応する畳み込みカーネルの数及びサイズを決定し、各畳み込みカーネルの各位置の重み値を決定することができる。
【0083】
具体的には、畳み込みカーネル生成モジュール230は、各畳み込みカーネルの各位置について、当該畳み込みカーネルの高さ及び幅方向の二次元インデックスと、畳み込みカーネルの高さ及び幅のサイズと、当該位置の二次元座標値と、逆畳み込み演算に用いられる高さ及び幅方向のステップサイズ、高さ及び幅方向のゼロ埋めパラメーターと、に基づいて、逆畳み込みカーネルの対応する位置の二次元座標値を決定し、当該対応する位置の重み値を畳み込みカーネルの当該位置の重み値とすることができる。畳み込みカーネル生成モジュール230は、決定された逆畳み込みカーネルの対応する位置が逆畳み込みカーネルの位置座標範囲を超える場合、畳み込みカーネルの当該位置にゼロ値を挿入することができ、すなわち、当該位置の重みは、ゼロ値の無効な重みであることができる。
【0084】
いくつかの実施例において、挿入されたゼロ値の無効な重みと逆畳み込みカーネルに最初に含まれているゼロ値の有効な重みとを区別するために、畳み込みカーネル生成モジュール230は挿入されたゼロ値の無効な重みにマークを付けて、無効な重みであることを指示することができる。
【0085】
最適化モジュール240は、上記のステップS130で詳細に説明したように、各畳み込みカーネルから全要素が無効な重みである行及び/又は列を除去して最適化畳み込みカーネルを得、これに対応してゼロ埋め処理した後の特徴マップから対応する行及び/又は列を除去して各最適化畳み込みカーネルに対応する最適化特徴マップを得るために用いられることができる。また、各最適化畳み込みカーネルについて最適化モジュール240が決定した最適化特徴マップは、互いに異なることができる。
【0086】
畳み込みモジュール250は、上記のステップS140で説明したように、畳み込みハードウェアの乗算加算アレイを利用して各最適化畳み込みカーネル及び対応する最適化特徴マップに畳み込み演算を行って、対応の各畳み込み出力を得ることができる。例えば、畳み込みモジュール250は、スライディング・ウィンドウにより、畳み込みカーネルにおけるそれぞれの重み値及び対応する特徴マップの特徴データを乗算器に提供することができ、乗算器で乗算演算が完了した後、その結果が加算器に出力され、他の乗算器の出力と累積され、得られた和は、オンチップメモリSRAMに記憶されることができる。
【0087】
インターリーブ合成モジュール260は、上記のステップS150で説明したように、畳み込みモジュール250によって生成された複数の畳み込み出力特徴マップに対してインターリーブ合成処理を行って、インターリーブ合成出力を得ることができる。
【0088】
例えば、インターリーブ合成モジュール260は、逆畳み込み演算に用いられる高さ方向のステップサイズ及び幅方向のステップサイズをパディングステップサイズとし、畳み込みカーネルの高さ及び幅方向の二次元インデックスをパディングオフセットとして、各畳み込み出力の各要素を合成行列にパディングし、このように生成されたインターリーブ合成出力は、少なくとも、最初に提供された逆畳み込みカーネル及び特徴マップに対応する逆畳み込み出力を含むことができる。
【0089】
もう一例として、いくつかの実施例において、インターリーブ合成モジュール260によって得られたインターリーブ合成出力は、即ち最初に提供された逆畳み込みカーネル及び特徴マップの逆畳み込み出力である。
【0090】
いくつかの実施例において、選択的には、装置200は、上記のステップS160で説明したように、インターリーブ合成モジュール260によって生成されたインターリーブ合成出力特徴マップをトリミングして、逆畳み込み出力を得るトリミングモジュール270をさらに含むことができる。具体的には、トリミングモジュール270は、トリミング後のサイズが逆畳み込み出力のサイズに対応するまで、インターリーブ合成出力の右側及び下側に対してトリミングすることができる。
【0091】
例示的な電子機器
図7は、例示的な一実施例に係る電子機器300の構造のブロック図を示し、電子機器300は、上記で
図4~
図6を参照して説明した、畳み込み操作により逆畳み込み処理を実施する方法を実行ために用いられることができる。
【0092】
図7に示すように、電子機器300は、1つ又は複数のプロセッサ310と、1つ又は複数のメモリ320と、畳み込みハードウェア加速器330と、1つ又は複数の入力出力(I/O)インタフェース340と、を含み、それらはバスシステム350によって互いに接続されることができる。
【0093】
プロセッサ310は、データ処理能力及び/又は命令実行能力を有する任意の形態の処理ユニットであることができ、その例としては、中央処理装置(CPU)、ARMプロセッサ、マイクロコントローラユニット(Microcontroller Unit、MCU)、汎用プロセッサ、コントローラ、デジタル信号プロセッサ(Digital Signal Process、DSP)、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field-Programmable Gate Array、FPGA)若しくは他のプログラマブルロジックデバイス、トランジスタロジックデバイス、ハードウェア部品、又はそれらの任意の組み合わせがあるが、それらに限定されない。プロセッサ310は、それに関連するメモリ320内の命令を実行すること及び/又はそれとデータを交換することにより、バスシステム350によって結合された他の部品を制御して協働させて、上記した方法、ステップ又は機能を実行することができる。
【0094】
メモリ320は、様々な形態の例えば揮発性メモリ及び/又は不揮発性メモリのようなコンピュータ読み書き可能記憶媒体を含むことができる。前記揮発性メモリは、例えばダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)及び/又はキャッシュ(cache)等を含むことができる。前記不揮発性メモリは、例えば電気的消去可能プログラマブル読み取り専用メモリ(Electrically Erasable Programmable Read-Only Memory、EEPROM)、ハードディスク、フラッシュメモリ等を含むことができる。読み書き可能記憶媒体は、例えば電気、磁気、光学、電磁気、赤外線、半導体のシステム、装置若しくはデバイス、又はこれらの任意の組み合わせを含むことができるが、それらに限定されない。
【0095】
また、メモリ320には、コンピュータ実行可能命令が記憶されることができ、前記命令は、プロセッサ310によって実行されることにより、バスシステム350によって結合された他の部品を制御して協働させて、上記した方法、ステップ又は機能を実行することができる。
【0096】
畳み込みハードウェア加速器330は、畳み込みニューラルネットワークハードウェア加速器又は専用の畳み込みハードウェアとも呼ばれ、畳み込み関連処理を実行するように設計された専用のハードウェアであることができる。
図7に示すように、畳み込みハードウェア加速器330は、乗算加算アレイ332とオンチップメモリ334とを含むことができる。なお、オンチップメモリ334とは対照的に、上記したメモリ320は、オフチップメモリとも呼ばれることができる。乗算加算アレイ332は、複数の乗算器と複数の加算器とによって構成されるアレイを含むことができ、特徴マップ及び畳み込みカーネルに対して畳み込み処理を実行するために用いられる。オンチップメモリ334は、例えば、スタティックランダムアクセスメモリSRAMを含むことができ、畳み込み演算を行うために乗算加算アレイ332に提供されるデータ及び乗算加算アレイ332によって生成されるデータをキャッシュするために用いられる。
【0097】
I/Oインタフェース340は、様々な入出力装置に接続される、例えばカメラインタフェース、レーダーインタフェース、タッチパネルインタフェース、ネットワークインタフェース、特定の通信プロトコルに対応するコントローラインタフェース等のような通信インタフェースを含むことができる。なお、実際の用途に応じて様々なI/Oインタフェース340を提供することができる。
【0098】
バスシステム350は、電子機器300の各部品を接続させ、それら間の通信をサポートする任意のバスシステムであることができ、その例としては、CAN(エリアネットワークコントローラ)バス、ISA(業界標準アーキテクチャ)バス、PIC(ペリフェラル・コンポーネント・インターコネクト)又はPCI-E(ペリフェラル・コンポーネント・インターコネクト・エクスプレス)バス、I2C(集積回路間通信)バス、SPI(シリアル・ペリフェラル・インタフェース)バス、UART(ユニバーサル非同期シリアルポート)バス等を含むことができるが、それらに限定されない。
【0099】
当然ながら、
図7では、簡素化のために、本開示に関連する電子機器300の構成要素の一部のみを示し、他の多くの構成要素は省略している。なお、
図7に示される電子機器300の構成要素及び構造は、例示的なものに過ぎず、限定的なものではなく、要求により、電子機器300は、他の構成要素及び構造を有してもよい。
【0100】
図8は、例示的な一実施例に係る畳み込みハードウェア加速器400の構造のブロック図を示し、
図8に示される畳み込みハードウェア加速器400は、例えば、
図7の電子機器300の畳み込みハードウェア加速器330として用いられることができる。
図8に示すように、畳み込みハードウェア加速器400は、インタフェースユニット410と、特徴マップキャッシュユニット420と、畳み込みカーネルキャッシュユニット430と、乗算器アレイ440と、加算ツリーユニット450と、バイアスユニット460と、出力キャッシュユニット470と、を含むことができる。特徴マップキャッシュユニット420と畳み込みカーネルキャッシュユニット430と出力キャッシュユニット470とをオンチップキャッシュと併称し、乗算器アレイ440と加算ツリーユニット450とを乗算加算アレイと併称することができる。
【0101】
図8を参照すると、インタフェースユニット410は、外部から入力されるデータ(例えば、特徴マップデータ及び畳み込みカーネルデータ)を受信、又は、外部に出力データ(例えば、特徴マップに畳み込み演算を行って得た出力データ)を提供するように、外部と通信接続される様々なインタフェースを含むことができる。いくつかの実施例において、インタフェースユニット410は、ネットワークオンチップ(Network on Chip、NoC)として実施されることができ、拡張性が優れ、電力消費が低く、通信効率及び信頼性が高い等の利点を有するため、ニューラルネットワーク加速器に特に適合する。当然ながら、インタフェースユニット410は、例えば、
図7に示されるバスシステム350と通信接続されることに適合する他のインタフェースを含むこともできる。
【0102】
特徴マップキャッシュユニット420は、インタフェースユニット410を介して特徴マップデータを受信して記憶することができる。ここで、特徴マップは、カメラで撮影し、例えばトリミング、サンプリング等の処理のような前処理を経由した最小に入力される入力特徴マップであってもよいし、ニューラルネットワークにおける上の層から出力される特徴マップであってもよく、一般に行列の形態で表現される。
【0103】
畳み込みカーネルキャッシュユニット430は、インタフェースユニット410を介して畳み込みカーネル又は逆畳み込みカーネルデータを受信して記憶することができる。例えば、畳み込みハードウェア加速器400は、畳み込みカーネルを受信して通常の畳み込み処理を実行することもできるし、逆畳み込みカーネルを受信し、上記で
図4~
図6を参照して説明した方法に従って畳み込み演算により逆畳み込み処理を実行することもできる。当該方法では、逆畳み込みカーネルは、
図4に示されるステップS120を参照して詳細に説明したように、複数の畳み込みカーネルに分割されることができる。畳み込みカーネル及び逆畳み込みカーネルは、1つ又は複数の重み値を含むことができ、一般に二次元行列の形態で表現され、選択的には、畳み込み演算の出力値の線形調整のためにバイアス値を含むことができる。
【0104】
なお、特徴マップキャッシュユニット420と畳み込みカーネルキャッシュユニット430と後述する出力キャッシュユニット470とは、個別のキャッシュデバイスであってもよいし、1つのキャッシュデバイスにおける異なる記憶領域であってもよい。例として、特徴マップキャッシュユニット420、畳み込みカーネルキャッシュユニット430及び出力キャッシュユニット470は、所定のビット幅を有するスタティックランダムアクセスメモリSRAMとして実施されることができる。
【0105】
乗算器アレイ440は、複数の乗算器441を含むことができ、各乗算器441は、特徴マップキャッシュユニット420から特徴データを受信し、畳み込みカーネルキャッシュユニット430から畳み込みカーネルの重み値を受信し、当該特徴データと重み値とを乗算演算して、両者の積を出力することができる。
【0106】
加算ツリーユニット450は、ツリー状の構造に配置された複数の加算器451を含むことができる。加算ツリーユニット450は、乗算器アレイ440から各乗算器441の出力値を受信し、これらの出力値を累積して和の値を得て出力することができる。
【0107】
バイアスユニット460は、畳み込みカーネルキャッシュユニット430からバイアス値を受信し、加算ツリーユニット450からその出力値を受信し、当該バイアス値を利用して加算ツリーユニット450の出力値の線形調整を行い、調整後の値を出力することができる。バイアスユニット460から出力される値は、畳み込み演算の出力値として出力キャッシュユニット470に記憶されることができる。スライディング・ウィンドウにより上記のステップを繰り返すことで、入力特徴マップ全体及び対応する畳み込みカーネルの畳み込み演算結果である出力特徴マップを得ることができ、後続の処理に提供するために出力キャッシュユニット470に記憶しておくことができる。
【0108】
なお、
図8では、簡素化のために、本開示に関連する畳み込みハードウェア加速器400の構成要素の一部のみを示し、他の多くの構成要素は省略する。例えば、畳み込みハードウェア加速器400は、畳み込み演算を制御するために用いられる畳み込み制御ユニット及びデータを輸送するために用いられるデータ制御ユニット等をさらに含んでもよく、これらのユニットの機能及び原理等は、本分野で周知のことであるため、説明を省略する。なお、
図8に示される畳み込みハードウェア加速器400の構成要素及び構造は、例示的なものに過ぎず、限定的なものではなく、上記した方法のステップによれば、畳み込みハードウェア加速器400は、他の構成要素及び構造を有してもよい。
【0109】
上記では専用の加速器を中心に、畳み込み演算による逆畳み込み処理方法を説明したが、本開示の原理は、例えばCPUやGPUのような汎用ハードウェアを利用して実現して、類似の技術的効果を実現することもできる。例えば、スパース化処理を避けることにより、チップの面積オーバーヘッド及び電力消費オーバーヘッドを削減することができ、最適化処理により、無効な演算を大幅減少してハードウェアの動作効率をより一層向上させ、遅延及びエネルギー消費特性を改善し、汎用プロセッサに対するオンチップキャッシュスペースの要求低減させ、ハードウェア費用の低減に有利である。
【0110】
例示的なコンピュータプログラム製品およびコンピュータ可読記憶媒体
上記の方法及び機器に加えて、本開示の実施例は、コンピュータプログラム命令を含むコンピュータプログラム製品であることもでき、前記コンピュータプログラム命令がプロセッサによって実行されると、畳み込みニューラルネットワーク加速器を制御して本明細書の上記の「例示的な方法」の部分で説明した本開示の各実施例に係る特徴マップに対する逆畳み込み処理方法を実行させることができる。
【0111】
前記コンピュータプログラム製品は、1種又は複数種のプログラミング言語の任意の組み合わせで本開示の実施例の操作を実行するためのプログラムコードを作成することができ、前記プログラミング言語は、例えば、Java(登録商標)、C++、phyon等のオブジェクト指向プログラミング言語を含み、例えば、「C」言語又は類似のプログラミング言語などの通常の手続き型プログラミング言語をさらに含む。プログラムコードは、下記のように実行されることができ、すなわち、ユーザーの計算機器上で全体的に実行される、ユーザー機器上で部分的に実行される、個別のソフトウェアパッケージとして実行される、一部はユーザーの計算機器上で実行され、別の一部は遠隔の計算機器上で実行される、又は、遠隔の計算機器若しくはサーバー上で全体的に実行されることができる。
【0112】
さらに、本開示の実施例は、コンピュータプログラム命令が記憶されるコンピュータ可読記憶媒体であることができ、前記コンピュータプログラム命令がプロセッサによって実行されると、前記プロセッサに、本明細書の上記の「例示的な方法」の部分で説明した本開示の様々な実施例に係る逆畳み込み処理方法を実行させる。
【0113】
前記コンピュータ可読記憶媒体は、1つ又は複数の可読媒体の任意の組み合わせを用いることができる。可読媒体は、可読信号媒体であってもよいし、可読記憶媒体であってもよい。可読記憶媒体は、例えば、電気、磁気、光学、電磁気、赤外線、半導体のシステム、装置若しくはデバイス、又はこれらの任意の組み合わせを含み得るが、それらに限定されない。可読記憶媒体のより具体的な例(非網羅的なリスト)は、1つ又は複数の導線を有する電気的接続、ポータブルディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROM若しくはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み取り専用メモリ(CD-ROM)、光ストレージデバイス、磁気ストレージデバイス、又はこれらの任意の適切な組み合わせを含む。
【0114】
上記では特定の実施例を参照しながら本開示の基本的原理を説明してきたが、本開示に言及される利点、優位性、効果等は、限定されず、例示的なものに過ぎず、これらの利点、優位性、効果等は、本開示の各実施例が備えなければならないというわけではない。また、上記の開示の詳細な内容は、限定するためのものではなく、例を挙げて理解しやすくするためのものに過ぎず、上記の詳細な内容は、本開示が上記の詳細で実現しなければならないと限定するものではない。当業者であれば、本開示から教示を受けて、他の多くの形態や詳細な内容の変更に想到することができ、これらの変更も本開示の特許請求の範囲に属する。
【0115】
本開示に係るデバイス、装置、機器、システムのブロック図は、単なる例示的な例にすぎず、ブロック図に示される形態で接続、配置、構成されなければならないと要求や示唆することを意図しない。当業者が理解できるように、任意の形態でこれらのデバイス、装置、機器、システムを接続、配置、構成してもよい。「含む」、「備える」、「有する」等のような用語は、「…を含むがこれに限定されない」を指す開放的な表現であり、互いに置き換えて使用され得る。本明細書で使用される「又は」及び「及び」との用語は、「及び/又は」との用語を指し、そのようではないと明記しない限り、互いに置き換えて使用され得る。ここで使用される「例えば」との用語は、表現「例えば、であるが、それらに限定されない」との連語を指し、互いに置き換えて使用され得る。
【0116】
なお、本開示の装置、機器、方法において、各部品又は各ステップを分解及び/又は再度組み合わせされることができる。これらの分解及び/又は再度組み合わせを本開示の同等な形態と見なされるべきである。
【0117】
本開示の各態様の上記説明は、当業者が本開示を作成又は使用することを可能にために提供される。これらの態様の様々な修正は、当業者にとって非常に自明なものであり、本明細書で定義される一般的な原理は、本開示の範囲を逸脱することなく他の態様に適用されることができる。したがって、本開示は、本明細書に示された態様に限定されることを意図せず、本明細書に開示された原理及び新規な特徴と一致する最大の範囲となる。
【0118】
上記の説明は、例示及び説明のために提供される。さらに、この説明は、本開示の実施例を本明細書に開示された形態に限定することを意図しない。上記で例示的な態様及び実施例をいくつか説明したが、当業者であれば、いくつかの変形、修正、変更、追加、部分的な組み合わせに想到できる。