(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-25
(45)【発行日】2024-02-02
(54)【発明の名称】特徴画像の処理方法、装置及び記憶媒体
(51)【国際特許分類】
G06T 7/00 20170101AFI20240126BHJP
G06V 10/82 20220101ALI20240126BHJP
G06N 3/0464 20230101ALI20240126BHJP
【FI】
G06T7/00 350C
G06V10/82
G06N3/0464
(21)【出願番号】P 2023001119
(22)【出願日】2023-01-06
【審査請求日】2023-01-06
(31)【優先権主張番号】202210194618.0
(32)【優先日】2022-03-01
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】514322098
【氏名又は名称】ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】Beijing Baidu Netcom Science Technology Co., Ltd.
【住所又は居所原語表記】2/F Baidu Campus, No.10, Shangdi 10th Street, Haidian District, Beijing 100085, China
(74)【代理人】
【識別番号】110000578
【氏名又は名称】名古屋国際弁理士法人
(72)【発明者】
【氏名】ジ イュンユゥ
(72)【発明者】
【氏名】ジャン イェンロン
(72)【発明者】
【氏名】スン ジンジン
【審査官】長谷川 素直
(56)【参考文献】
【文献】国際公開第2021/257558(WO,A1)
【文献】国際公開第2019/088072(WO,A1)
【文献】米国特許出願公開第2019/0294929(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00
G06V 10/82
G06N 3/00
(57)【特許請求の範囲】
【請求項1】
特徴画像の処理方法であって、
パラメータ行列中のパラメータをグループ化して、複数の配列を取得するステップであって、前記パラメータ行列は、畳み込みニューラルネットワークの畳み込み層から変換して得られた行列であるステップと、
前記複数の配列内のパラメータ値に基づいて、前記パラメータ行列に対して間引き処理を行って、間引きされたパラメータ行列を取得するステップと、
前記間引きされたパラメータ行列の疎さが予定の条件を満たす場合、前記間引きされたパラメータ行列及びデータ行列を用いて計算を行って、前記畳み込み層に対応する出力特徴マップを決定するステップであって、前記データ行列は、前記畳み込み層に入力された入力特徴マップから変換して得られた行列を含むステップと、を含む、
特徴画像の処理方法。
【請求項2】
前記パラメータ行列中のパラメータをグループ化するステップは、
予め設定された行数に基づいて前記パラメータ行列を行ごとに分割して、複数の中間行列を取得するステップと、
前記中間行列の行数が前記予め設定された行数に等しい場合、前記中間行列を列ごとに複数の配列に分割するステップであって、前記配列には予め設定された行数のパラメータが含まれるステップと、を含む、
請求項1に記載の特徴画像の処理方法。
【請求項3】
前記パラメータ行列中のパラメータをグループ化するステップは、
予め設定された行数に基づいて前記パラメータ行列を行ごとに分割して、複数の中間行列を取得するステップと、
前記中間行列の行数が前記予め設定された行数より小さい場合、前記中間行列を行ごとに少なくとも1つの1次元行列に分割するステップと、
各前記1次元行列を列ごとに複数の配列に分割するステップであって、各前記配列にはいずれも1つのパラメータが含まれるステップと、を含む、
請求項1に記載の特徴画像の処理方法。
【請求項4】
前記複数の配列内のパラメータ値に基づいて、前記パラメータ行列に対して間引き処理を行って、間引きされたパラメータ行列を取得するステップは、
各配列内のパラメータ値に対してそれぞれ加算計算を行って、得られた加算計算の結果を配列値とするステップと、
前記配列値が予め設定された閾値より小さい場合、前記配列内のパラメータ値をすべてゼロにして、ゼロリセット配列を取得するステップと、
前記ゼロリセット配列と非ゼロ配列からなる行列を、前記間引きされたパラメータ行列とするステップであって、前記非ゼロ配列は、配列値がゼロでない配列であるステップと、を含む、
請求項1に記載の特徴画像の処理方法。
【請求項5】
前記間引きされたパラメータ行列及びデータ行列を用いて計算を行って、前記畳み込み層に対応する出力特徴マップを決定するステップは、
前記間引きされたパラメータ行列中のM個の非ゼロ配列の位置を決定するステップであって、Mが1以上の整数であるステップと、
j番目の非ゼロ配列の位置に基づいて、前記データ行列中の第1の関連データを読み取るステップであって、前記第1の関連データは、前記データ行列における予め設定されたルールに基づいて決定された、前記j番目の非ゼロ配列と計算されるデータであり、jが1以上M以下の整数であるステップと、
前記j番目の非ゼロ配列と前記第1の関連データを用いて計算を行って、M組の計算結果のうちのj組目の計算結果を取得するステップであって、前記j組目の計算結果は、前記j番目の非ゼロ配列内の各パラメータをそれぞれ第1の関連データと計算して得られた少なくとも1つの1次元行列を含むステップと、
前記M組の計算結果を用いて前記畳み込み層に対応する出力特徴マップを決定するステップと、を含む、
請求項4に記載の特徴画像の処理方法。
【請求項6】
前記M組の計算結果を用いて前記畳み込み層に対応する出力特徴マップを決定するステップは、
前記M組の計算結果の中からターゲット位置パラメータに対応する少なくとも1つの1次元行列を選択するステップであって、前記ターゲット位置パラメータは、前記j番目の非ゼロ配列におけるターゲット行番号に位置するパラメータであるステップと、
前記少なくとも1つの1次元行列を用いてターゲットデータを決定するステップであって、前記ターゲットデータは、出力行列におけるターゲット行番号に位置するパラメータであるステップと、
前記出力行列に対して予め設定された後処理を行って、前記畳み込み層に対応する出力特徴マップを取得するステップと、を含む、
請求項5に記載の特徴画像の処理方法。
【請求項7】
前記j番目の非ゼロ配列と前記第1の関連データとを計算する中に、前記データ行列中の第2の関連データをキャッシュメモリに書き込むステップであって、前記第2の関連データは、予め設定されたルールに基づいて決定された、j+1番目の非ゼロ配列と計算されるデータであるステップをさらに含む、
請求項6に記載の特徴画像の処理方法。
【請求項8】
前記第2の関連データの決定方式は、
前記j+1番目の非ゼロ配列の列番号を決定するステップと、
前記j+1番目の非ゼロ配列の列番号と前記j番目の非ゼロ配列の列番号との間の列番号差に基づいて、前記第2の関連データと前記第1の関連データとの行オフセットを決定するステップと、
前記第1の関連データの位置及び前記行オフセットに基づいて、前記第2の関連データの位置を決定するステップと、を含む、
請求項7に記載の特徴画像の処理方法。
【請求項9】
前記間引きされたパラメータ行列及びデータ行列を用いて計算を行うステップは、
前記データ行列に対してブロック処理を行って、N個のブロック行列を取得するステップであって、Nが1以上の整数であるステップと、
前記間引きされたパラメータ行列を用いて前記N個のブロック行列とそれぞれ計算するステップと、を含む、
請求項1に記載の特徴画像の処理方法。
【請求項10】
前記データ行列に対してブロック処理を行うステップは、
前記データ行列の行数を各前記ブロック行列の行数とするステップと、
キャッシュメモリの容量及び前記データ行列の列数に基づいて、各前記ブロック行列の列数を決定するステップであって、前記キャッシュメモリは前記パラメータ行列及び前記ブロック行列を記憶するために使用されるステップと、
各前記ブロック行列の行数と列数とに基づいて、前記データ行列に対してブロック処理を行って、前記N個のブロック行列を取得するステップと、を含む、
請求項9に記載の特徴画像の処理方法。
【請求項11】
前記間引きされたパラメータ行列の疎さが予定の条件を満たさない場合、前記パラメータ行列及び前記データ行列を用いて計算するステップをさらに含む、
請求項1に記載の特徴画像の処理方法。
【請求項12】
特徴画像の処理装置であって、
パラメータ行列中のパラメータをグループ化して、複数の配列を取得するためのグループ化モジュールであって、前記パラメータ行列は、畳み込みニューラルネットワークの畳み込み層から変換して得られた行列であるグループ化モジュールと、
前記複数の配列内のパラメータ値に基づいて、前記パラメータ行列に対して間引き処理を行って、間引きされたパラメータ行列を取得するための間引き処理モジュールと、
前記間引きされたパラメータ行列の疎さが予定の条件を満たす場合、前記間引きされたパラメータ行列及びデータ行列を用いて計算を行って、前記畳み込み層に対応する出力特徴マップを決定するための第1の計算モジュールであって、前記データ行列は、前記畳み込み層に入力された入力特徴マップから変換して得られた行列を含む第1の計算モジュールと、を含む、
特徴画像の処理装置。
【請求項13】
前記グループ化モジュールが、
予め設定された行数に基づいて前記パラメータ行列を行ごとに分割して、複数の中間行列を取得するための中間行列決定サブモジュールと、
前記中間行列の行数が前記予め設定された行数に等しい場合、前記中間行列を列ごとに複数の配列に分割するための第1の配列決定サブモジュールであって、前記配列には予め設定された行数のパラメータが含まれる第1の配列決定サブモジュールと、を含む、
請求項12に記載の特徴画像の処理装置。
【請求項14】
前記グループ化モジュールが、
予め設定された行数に基づいて前記パラメータ行列を行ごとに分割して、複数の中間行列を取得するための中間行列決定サブモジュールと、
前記中間行列の行数が前記予め設定された行数より小さい場合、前記中間行列を行ごとに少なくとも1つの1次元行列に分割するための1次元行列決定サブモジュールと、
各前記1次元行列を列ごとに複数の配列に分割するための第2の配列決定サブモジュールであって、各前記配列にはいずれも1つのパラメータが含まれる第2の配列決定サブモジュールと、を含む、
請求項12に記載の特徴画像の処理装置。
【請求項15】
前記間引き処理モジュールが、
各配列内のパラメータ値に対してそれぞれ加算計算を行って、得られた加算計算の結果を配列値とするための配列値決定サブモジュールと、
前記配列値が予め設定された閾値より小さい場合、前記配列内のパラメータ値をすべてゼロにして、ゼロリセット配列を取得するためのゼロ設定実行サブモジュールと、
前記ゼロリセット配列と非ゼロ配列からなる行列を、前記間引きされたパラメータ行列とするための間引きされたパラメータ行列決定サブモジュールであって、前記非ゼロ配列は、配列値がゼロでない配列である間引きされたパラメータ行列決定サブモジュールと、を含む、
請求項12に記載の特徴画像の処理装置。
【請求項16】
前記第1の計算モジュールが、
前記間引きされたパラメータ行列中のM個の非ゼロ配列の位置を決定するための非ゼロ配列位置決定サブモジュールであって、Mが1以上の整数である非ゼロ配列位置決定サブモジュールと、
j番目の非ゼロ配列の位置に基づいて、前記データ行列中の第1の関連データを読み取るための第1の関連データ読み取りサブモジュールであって、前記第1の関連データは、前記データ行列における予め設定されたルールに基づいて決定された、前記j番目の非ゼロ配列と計算されるデータであり、jが1以上M以下の整数である第1の関連データ読み取りサブモジュールと、
前記j番目の非ゼロ配列を用いて前記第1の関連データと計算して、M組の計算結果のうちのj組目の計算結果を取得するための計算サブモジュールであって、前記j組目の計算結果は、前記j番目の非ゼロ配列内の各パラメータをそれぞれ第1の関連データと計算して得られた少なくとも1つの1次元行列を含む計算サブモジュールと、
前記M組の計算結果を用いて前記畳み込み層に対応する出力特徴マップを決定するための出力特徴マップ実行サブモジュールと、を含む、
請求項15に記載の特徴画像の処理装置。
【請求項17】
前記出力特徴マップ実行サブモジュールが、
前記M組の計算結果の中からターゲット位置パラメータに対応する少なくとも1つの1次元行列を選択するための1次元行列選択サブモジュールであって、前記ターゲット位置パラメータは、前記j番目の非ゼロ配列におけるターゲット行番号に位置するパラメータである1次元行列選択サブモジュールと、
前記少なくとも1つの1次元行列を用いてターゲットデータを決定するためのターゲットデータ決定サブモジュールであって、前記ターゲットデータは、出力行列におけるターゲット行番号に位置するパラメータであるターゲットデータ決定サブモジュールと、
前記出力行列に対して予め設定された後処理を行って、前記畳み込み層に対応する出力特徴マップを取得するための後処理サブモジュールと、を含む、
請求項16に記載の特徴画像の処理装置。
【請求項18】
前記出力特徴マップ実行サブモジュールが、
前記j番目の非ゼロ配列と前記第1の関連データとを計算する中に、前記データ行列中の第2の関連データをキャッシュメモリに書き込むためのデータ先取りサブモジュールであって、前記第2の関連データは、予め設定されたルールに基づいて決定された、j+1番目の非ゼロ配列と計算されるデータである先取りサブモジュールをさらに含む、
請求項17に記載の特徴画像の処理装置。
【請求項19】
前記データ先取りサブモジュールが、
前記j+1番目の非ゼロ配列の列番号を決定するための列番号決定サブモジュールと、
前記j+1番目の非ゼロ配列の列番号と前記j番目の非ゼロ配列の列番号との間の列番号差に基づいて、前記第2の関連データと前記第1の関連データとの行オフセットを決定するための行オフセット決定サブモジュールと、
前記第1の関連データの位置及び前記行オフセットに基づいて、前記第2の関連データの位置を決定するための第2の関連データ決定サブモジュールと、を含む、
請求項18に記載の特徴画像の処理装置。
【請求項20】
前記第1の計算モジュールが、
前記データ行列に対してブロック処理を行って、N個のブロック行列を取得するためのブロック処理サブモジュールであって、Nが1以上の整数であるブロック処理サブモジュールと、
前記間引きされたパラメータ行列を用いて前記N個のブロック行列とそれぞれ計算するためのブロック計算サブモジュールと、を含む、
請求項12に記載の特徴画像の処理装置。
【請求項21】
前記ブロック処理サブモジュールが、
前記データ行列の行数を各前記ブロック行列の行数とするための行数決定サブモジュールと、
キャッシュメモリの容量及び前記データ行列の列数に基づいて、各前記ブロック行列の列数を決定するための列数決定サブモジュールであって、前記キャッシュメモリは、前記パラメータ行列及び前記ブロック行列を記憶するために使用される列数決定サブモジュールと、
各前記ブロック行列の行数と列数とに基づいて、前記データ行列に対してブロック処理を行って、前記N個のブロック行列を取得するためのブロック処理実行サブモジュールと、を含む、
請求項20に記載の特徴画像の処理装置。
【請求項22】
前記間引きされたパラメータ行列の疎さが予定の条件を満たさない場合、前記パラメータ行列及び前記データ行列を用いて計算するための第2の計算モジュールをさらに含む、
請求項12~21に記載の特徴画像の処理装置。
【請求項23】
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサと通信可能に接続されるメモリと、を含み、
前記メモリには、前記少なくとも1つのプロセッサによって実行可能な命令が記憶されており、前記命令は、前記少なくとも1つのプロセッサが請求項1~11のいずれかに記載の特徴画像の処理方法を実行できるように、前記少なくとも1つのプロセッサによって実行される、
電子機器。
【請求項24】
コンピュータ命令が記憶されている非一時的なコンピュータ読み取り可能な記憶媒体であって、
前記コンピュータ命令は、コンピュータに請求項1~11のいずれかに記載の特徴画像の処理方法を実行させる、
非一時的なコンピュータ読み取り可能な記憶媒体。
【請求項25】
コンピュータプログラムであって、
前記コンピュータプログラムはプロセッサによって実行される場合、請求項1~11のいずれかに記載の特徴画像の処理方法が実現される、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、人工知能技術の分野に関し、具体的には、深層学習、コンピュータビジョン技術の分野に関する。
【背景技術】
【0002】
深層畳み込みネットワークモデルは入力された特徴画像に対して高い認識精度を持ち、顔認識、無人運転、機械翻訳、医学検査などの分野で広く応用されている。しかしながら、そのパラメータ量が大きく、計算時間が長いため、計算力の低い組み込みチップではリアルタイム計算の要求を満たすことが困難であるため、汎用ハードウェアデバイス上で加速計算を実現するためにモデル圧縮の方法を採用する必要があることが多い。
【0003】
現行のモデル圧縮方法では、加速収益が小さいか、加速収益を満たす場合にモデル精度が著しく低下するという問題がある。そのため、どのようにモデルの精度を確保しながら、汎用ハードウェアデバイス上で良好な加速収益を実現するかが解決すべき問題となっている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示は、特徴画像の処理方法、装置及び記憶媒体を提供する。
【0005】
本開示の一様態によれば、特徴画像の処理方法を提供し、当該方法は、
パラメータ行列中のパラメータをグループ化して、複数の配列を取得するステップであって、前記パラメータ行列は、畳み込みニューラルネットワークの畳み込み層から変換して得られた行列であるステップと、
前記複数の配列内のパラメータ値に基づいて、前記パラメータ行列に対して間引き処理を行って、間引きされたパラメータ行列を取得するステップと、
前記間引きされたパラメータ行列の疎さが予定の条件を満たす場合、前記間引きされたパラメータ行列及びデータ行列を用いて計算を行って、前記畳み込み層に対応する出力特徴マップを決定するステップであって、前記データ行列は、前記畳み込み層に入力された入力特徴マップから変換して得られた行列を含むステップを含む。
【0006】
本開示の別の態様によれば、特徴画像の処理装置を提供し、当該装置は、
パラメータ行列中のパラメータをグループ化して、複数の配列を取得するためのグループ化モジュールであって、パラメータ行列は、畳み込みニューラルネットワークの畳み込み層から変換して得られた行列であるグループ化モジュールと、
複数の配列内のパラメータ値に基づいて、パラメータ行列に対して間引き処理を行って、間引きされたパラメータ行列を取得するための間引き処理モジュールと、
間引きされたパラメータ行列の疎さが予定の条件を満たす場合、間引きされたパラメータ行列とデータ行列を用いて計算を行って、畳み込み層に対応する出力特徴マップを決定するための第1の計算モジュールであって、データ行列は、畳み込み層に入力された入力特徴マップから変換して得られた行列を含む第1の計算モジュールと、を含むことができる。
【0007】
本開示の別の態様によれば、電子機器を提供し、前記電子機器は、
少なくとも1つのプロセッサと、
当該少なくとも1つのプロセッサと通信可能に接続されるメモリと、を含み、
当該メモリには、当該少なくとも1つのプロセッサによって実行可能な命令が記憶されており、当該命令は、当該少なくとも1つのプロセッサが本開示の任意の実施例に記載の方法を実行できるように、当該少なくとも1つのプロセッサによって実行される。
【0008】
本開示の別の態様によれば、コンピュータ命令が記憶されている非一時的なコンピュータ読み取り可能な記憶媒体を提供し、
当該コンピュータ命令は、コンピュータに本開示の任意の実施例に記載の方法を実行させる。
【0009】
本開示の別の態様によれば、コンピュータプログラムを提供し、当該コンピュータプログラムはプロセッサによって実行される場合、本開示の任意の実施例に記載の方法が実現される。
【発明の効果】
【0010】
本開示の技術案によれば、総合性能の良いモデル圧縮方法を提供し、モデルの精度損失が小さいことを確保しながら、計算力の低い汎用ハードウェア装置上で大きな加速収益を実現することができる。これにより、既存の畳み込みニューラルネットワークモデルのパラメータ量が大きく、計算時間が長いという問題が解決される。
【0011】
なお、この部分に記載の内容は、本開示の実施例の肝心または重要な特徴を特定することを意図しておらず、本開示の範囲を限定することも意図していないことを理解されたい。本開示の他の特徴は、以下の説明を通して容易に理解される。
【図面の簡単な説明】
【0012】
図面は、本技術案をよりよく理解するために使用され、本開示を限定するものではない。
【
図1】本開示に係る特徴画像処理方法のフローチャートである。
【
図2】本開示に係る変換してパラメータ行列を取得する概略図である。
【
図4】本開示に係る変換してデータ行列を取得する概略図である。
【
図5】本開示に係るパラメータ行列中のパラメータをグループ化する概略
図1である。
【
図6】本開示に係るパラメータ行列中のパラメータをグループ化する概略
図2である。
【
図7】本開示に係るパラメータのグループ化の一例を示す図である。
【
図9】本開示に係る出力特徴マップを決定する概略
図1である。
【
図10】本開示に係る行列演算を行う概略図である。
【
図11】本開示に係る出力特徴マップを決定する概略
図2である。
【
図12】本開示に係る第2の関連データを決定する概略図である。
【
図13】本開示に係るブロック演算の概略図である。
【
図14】本開示に係るブロック行列を決定する概略図である。
【
図15】本開示に係る特徴画像処理装置の構成図である。
【
図16】本開示の実施例の特徴画像処理を実現する電子機器のブロック図である。
【発明を実施するための形態】
【0013】
以下、図面と併せて本開示の例示的な実施例を説明し、理解を容易にするためにその中には本開示の実施例の様々な詳細事項が含まれており、それらは単なる例示的なものと見なされるべきである。したがって、当業者は、本開示の範囲及び精神から逸脱することなく、ここで説明される実施例に対して様々な変更と修正を行うことができることを認識されたい。同様に、明確及び簡潔にするために、以下の説明では、周知の機能及び構造の説明を省略する。
【0014】
図1に示すように、本開示は特徴画像の処理方法に関し、当該方法以下のステップS101~S103を含むことができる。
【0015】
S101、パラメータ行列中のパラメータをグループ化して、複数の配列を取得する。パラメータ行列は、畳み込みニューラルネットワークの畳み込み層から変換して得られた行列である。
【0016】
S102、複数の配列内のパラメータ値に基づいて、パラメータ行列に対して間引き処理を行って、間引きされたパラメータ行列を取得する。
【0017】
S103、間引きされたパラメータ行列の疎さが予定の条件を満たす場合、間引きされたパラメータ行列とデータ行列を用いて計算を行って、畳み込み層に対応する出力特徴マップを決定する。データ行列は、畳み込み層に入力された入力特徴マップから変換して得られた行列を含む。
【0018】
本実施例は、コンピュータデバイスに適用することができ、具体的には、サーバ、デスクトップコンピュータ、ノートパソコン、クラウド計算機、または複数のサーバからなるサーバセットを含むことができるが、これらに限定されず、本出願はコンピュータデバイスの製品タイプを限定しない。
【0019】
ステップS101を実行する前に、まず畳み込みニューラルネットワーク内の各隠れ層を認識することができる。隠れ層の認識結果がプール化層または他の非畳み込み層である場合、直接入力特徴マップに対して汎用計算を行う。
【0020】
認識結果が畳み込み層である場合、ステップS101を実行する。ここで、畳み込みニューラルネットワークの畳み込み層は、複数の畳み込みカーネル(w×h×c)を含むことができ、wは幅を表すことができ、hは高さを表すことができ、cは深さ(または、チャンネル数)を表すことができる。具体的には、畳み込みカーネルのサイズは必要に応じて設定することができる。深さ値が固定されている(例えば、c=3)場合、畳み込みカーネルのサイズは、(1×1×3)、(3×3×3)、(5×5×3) などにすることができ、ここでは限定されない。畳み込みカーネルの数は、3、4、5など、必要に応じて設定することもできる。
【0021】
例えば、
図2に示すように、1つのターゲット畳み込み層に4つの(1×1×3)の畳み込みカーネルが含まれる場合、それをA
4×3の行列に変換することができる。これにより、図示する行列A
4×3をターゲット畳み込み層に対応するパラメータ行列とする。
【0022】
ステップS101の実現形態は、パラメータ行列中の複数の連続パラメータを1つの配列に分割することができる。ここで、複数の連続パラメータは、パラメータ行列の中で特定の方向に従って連続して選択して得られたパラメータであってもよく、例えば、左から右へ順に選択して得られた複数の連続パラメータであってもよいし、上から下へ順に選択して得られた複数の連続パラメータであってもよい。各配列中のパラメータの数は2つ、4つなどであってもよく、ここでは限定されない。
【0023】
好ましくは、
図3に示すように、パラメータ行列の中で上から下へ隣接する2つのパラメータを配列として選択することができる。例えば、(0、-1.4)、(2.1、0)、(0、3.7)などであり、ここでは、網羅的に説明しない。
【0024】
複数の配列が取得された後にステップS102を実行し、複数の配列内のパラメータ値に基づいて、パラメータ行列に対して間引き処理を行って、間引きされたパラメータ行列を取得する。パラメータ行列に対して間引き処理を行うことは、1つまたは複数のパラメータ行列を選択して間引き処理を行ってもよく、ここでは限定されない。好ましくは、畳み込み層から変換して得られた各パラメータ行列に対して間引き処理を行ってもよい。ここで、パラメータ値はパラメータ行列中の各要素の要素値であってもよいし、要素値の絶対値であってもよく、ここでは限定されない。
【0025】
ここで、間引きの実現形態は、パラメータ値の小さい要素をゼロにしてもよい。例えば、
図3に示すように、-1.4、2.1、3.7、-1.9をゼロにすることにより、間引きされたパラメータ行列を取得することができる。配列内のパラメータ値に基づいて対応する配列値を取得し、さらに配列値を用いてパラメータ行列に対して間引き処理を行うこともでき、ここでは説明を省略する。
【0026】
入力特徴マップは、複数の次元の特徴情報が含まれる画像であってもよく、例えば、顔認識シナリオで、元の入力特徴マップは、顔が含まれる特徴画像であってもよく、畳み込みニューラルネットワークの複数の隠れ層の処理により、テクスチャ、エッジ、色など、顔画像中の複数の特徴を抽出することができる。また、使用シナリオは、他の画像認識分野、例えば、自動運転中の道路映像認識、機械翻訳、医学画像検出などを含むこともでき、異なる使用シナリオには対応する入力特徴マップがあることができ、ここでは説明を省略する。
【0027】
間引きされたパラメータ行列の疎さは、パラメータ値がすべて0である配列が配列合計数に占める割合を表す。例えば、
図3における間引きされたパラメータ行列では、パラメータ値が0である配列の個数が4であり、配列合計数が6であり、当該間引きされたパラメータ行列の疎さは4/6=66.67%である。
【0028】
間引きされたパラメータ行列の疎さが予定の条件を満たす場合、間引きされたパラメータ行列とデータ行列を用いて計算を行って、畳み込み層に対応する出力特徴マップを決定する。データ行列は畳み込み層に入力された入力特徴マップから変換して得られた行列を含む。
【0029】
予定の条件は、疎さが予め設定された閾値より大きいことであってもよく、例えば、予め設定された閾値は70%を取ることができる。この時、疎さが70%より大きい場合、間引きされたパラメータ行列とデータ行列を用いて計算を行って出力特徴マップを取得する。予め設定された閾値は、必要に応じて設定することができ、例えば75%、80%などであってもよく、ここでは限定されない。また、予定の条件は、特定の予め設定された範囲であってもよい。例えば、疎さが50~70%である場合、間引きされたパラメータ行列とデータ行列を用いて計算を行って出力特徴マップを取得する。予め設定された範囲の値も必要に応じて設定することができ、ここでは説明を省略する。
【0030】
データ行列は、畳み込み層に入力された入力特徴マップから変換して得られた行列であってもよく、データ行列のサイズは、3次元入力特徴マップの長さ、幅、およびチャンネル数に依存する。説明の便宜上、
図4に示すように、入力特徴マップがチャンネル3であり、長さ方向に2つのピクセルがあり、幅方向に3个ピクセルがあると仮定し、各チャンネルのピクセルをチャンネルごとに展開して順に組み合わせて、
図4に示されるB
3×6という2次元行列をデータ行列として取得する。
【0031】
上記のプロセスにより、配列単位で畳み込みニューラルネットワークモデルを圧縮し、モデル演算が小さな精度損失しかないことを確保することができる。同時に、配列内のパラメータ値に基づいて間引き処理を行った後、間引きされたパラメータ行列中のパラメータ分布状況を用いてデータ行列中の関連データを読み取ることができ、これによってデータを読み取るにかかる時間を短縮し、モデル圧縮の場合に加速計算を実現することができる。
【0032】
図5に示すように、一実施形態では、ステップS101は以下のサブステップS501~S502を含むことができる。
【0033】
S501、予め設定された行数に基づいてパラメータ行列に対して行ごとに分割して、複数の中間行列を取得する。
【0034】
S502、中間行列の行数が予め設定された行数に等しい場合、中間行列を列ごとに複数の配列に分割する。各配列内には予め設定された行数のパラメータが含まれる。
【0035】
予め設定された行数に基づいてパラメータ行列を行ごとに分割して複数の中間行列を取得するステップは、予め設定された行数に従ってパラメータ行列を上から下へ順に複数の中間行列に分割するステップであって、分割して得られた中間行列の列数がパラメータ行列の列数と同じであるステップを含む。ここで、予め設定された行数は2行、4行、6行などであってもよく、ここでは限定されない。
【0036】
例えば、予め設定された行数に基づいて間引きされたパラメータ行列をちょうどN個の行列に分割する場合、N個の行列をすべて中間行列とする。分割して得られた最初のn-1個の行列の行数が予め設定された行数に等しく、N個目の行列の行数が予め設定された行数より小さい場合、N個目の行列をさらに分割して得られた複数の1次元行列を中間行列とすることができる。
【0037】
中間行列の行数が予め設定された行数に等しい場合、中間行列を列ごとに複数の配列に分割し、各配列内に予め設定された行数のパラメータが含まれる。
【0038】
図6に示すように、一実施形態では、ステップS101は、以下のサブステップS601~603をさらに含むことができる。
【0039】
S601、予め設定された行数に基づいてパラメータ行列を行ごとに分割して、複数の中間行列を取得する。
【0040】
S602、中間行列の行数が予め設定された行数より小さい場合、各中間行列を行ごとに少なくとも1つの1次元行列に分割する。
【0041】
S603、各1次元行列を列ごとに複数の配列に分割する。各配列内には1つパラメータが含まれる。
【0042】
例えば、
図7に示すように、パラメータ行列はサイズが5×3である行列であり、予め設定された行数が2行である場合、パラメータ行列を上から下へ順に行数が2である複数の中間行列に分割し、最後の行数が2行より小さい行列を単独の中間行列とする。ここで、1番目と2番目の中間行列のサイズが2×3であり、3番目の中間行列のサイズが1×3である。その後、3つの中間行列を列ごとに複数の配列に分割する。ここで、各中間行列がいずれも3つの配列を含む。1番目と2番目の中間行列の各配列が2つのパラメータを含み、3番目の中間行列の各配列が1つの中間パラメータを含む。
【0043】
また、予め設定された行数が4である場合、行数が4より小さいn番目の行列は、1つの2次元行列と複数の1次元行列に分割されるか、または直接複数の1次元行列に分割されてもよく、ここでは限定されない。予め設定された行数が他の値をとる場合、具体的な分割方法を省略する。
【0044】
上記のプロセスにより、パラメータ行列中のパラメータをグループ化して複数の配列を取得することができる。これにより、得られた配列に基づいてパラメータ行列に対して間引き処理を行って、モデル圧縮を実現し、さらに圧縮されたモデルに基づいて加速計算を行うことができる。
【0045】
図8に示すように、一実施形態では、ステップS102は以下のサブステップS801~803を含むことができる。
【0046】
S801、各配列内のパラメータ値をそれぞれ加算計算を行って、得られた加算計算の結果を配列値とする。
【0047】
S802、配列値が予め設定された閾値より小さい場合、配列内のパラメータ値をすべてゼロにして、ゼロリセット配列を取得する。
【0048】
S803、ゼロリセット配列と非ゼロ配列からなる行列を、間引きされたパラメータ行列とする。非ゼロ配列は配列値がゼロでない配列である。
【0049】
ステップS801の実施形態は、間引きされたパラメータ行列中の複数の配列をトラバースしてもよい。具体的には、行ごとにトラバースし、1つの行の最後の配列にトラバースした後に、新しい行からトラバースを続けることができる。または列ごとにトラバースすることもでき、ここでは限定されない。トラバースしてパラメータ行列中の各パラメータ値が得られた後、各配列内のパラメータ値に対して加算計算を行って、得られた加算結果を配列値とする。パラメータ行列における配列値が予め設定された閾値より小さい配列を決定し、その中のパラメータをゼロにする。具体的には、配列中のパラメータ値が正数のみである場合、予め設定された閾値は、3、4、5 などの正の整数をとることができ、必要に応じて予め設定された閾値を小数に設定することもでき、ここでは限定しない。配列に正と負のパラメータ値がある場合、パラメータ行列における配列内のパラメータの絶対値の合計が予め設定された閾値より小さいパラメータをゼロにする。ここで、予め設定された閾値は6、7、8などであってもよく、ここでは限定されない。
【0050】
パラメータ値がすべてゼロにされた後の配列をゼロリセット配列とし、配列値がゼロでない配列を非ゼロ配列とする。その後、
図7に示すように、ゼロリセット配列と非ゼロ配列からなる行列を間引きされたパラメータ行列とする。
【0051】
上記のプロセスにより、パラメータ行列の間引き処理を配列単位で完了させ、さらにデータを配列単位で読み取って計算することができる。これにより、演算精度を確保する前提で、モデルの演算效率を大幅に向上させることができる。
【0052】
図9に示すように、一実施形態では、ステップS103は以下のステップS901~904を含むことができる。
【0053】
S901、間引きされたパラメータ行列中のM個の非ゼロ配列の位置を決定し、Mが1以上の整数である。
【0054】
S902、j番目の非ゼロ配列の位置に基づいて、データ行列中の第1の関連データを読み取り、第1の関連データは、データ行列における予め設定されたルールに基づいて決定された、j番目の非ゼロ配列と計算されるデータであり、jが1以上M以下の整数である。
【0055】
S903、j番目の非ゼロ配列と第1の関連データを用いて計算を行って、M組の計算結果のうちのj組目の計算結果を得、j組目の計算結果は、j番目の非ゼロ配列内の各パラメータをそれぞれ第1の関連データと計算して得られた少なくとも1つの1次元行列を含む。
【0056】
S904、M組の計算結果を用いて、畳み込み層に対応する出力特徴マップを決定する。
【0057】
ここで、間引きされたパラメータ行列中のj番目の非ゼロ配列の位置は、間引きされたパラメータ行列をトラバースするときに決定することができ、jが1以上の整数である。具体的には、間引きされたパラメータ行列中の非ゼロ配列をレジスタによって順に読み取り、配列値が0である場合、レジスタは自動的にスキップして次の非ゼロ配列を読み取ることができる。ここで、非ゼロ配列の位置は、配列中のパラメータ位置を用いて表すことができ、例えば、1番目の配列は1列目及び1~2行目に位置する。
【0058】
M個の非ゼロ配列の位置が決定された後、j番目の非ゼロ配列の位置に基づいて、データ行列中の第1の関連データを読み取る。ここで、データ行列は、対応する記憶空間、例えばキャッシュメモリに記憶されており、ここでは限定されない。
【0059】
間引きされたパラメータ行列中の非ゼロ配列を位置特定した後、j番目の非ゼロ配列の位置に基づいて、データ行列中の第1の関連データを読み取る。第1の関連データは、予め設定されたルールに基づいて決定された、j番目の非ゼロ配列と計算されるデータである。まず、予め設定されたルールに基づいて、間引きされたパラメータ行列中のj番目の非ゼロ配列の位置から第1の関連データのデータ行列における位置を決定することができ、次に、第1の関連データのデータ行列における位置に基づいている第1の関連データを読み取って演算を実行することができる。
【0060】
予め設定されたルールは第1の予め設定されたルールと第2の予め設定されたルールとのうちの少なくとも1つを含むことができる。ここで、第1の予め設定されたルールは、j番目の非ゼロ配列中のパラメータの間引きされたパラメータ行列における行番号に基づいて、第1の関連データのブロック行列における列番号を決定することであってもよく、第2の予め設定されたルールは、j番目の非ゼロパラメータの間引きされたパラメータ行列における列番号に基づいて、第1の関連データのブロック行列における行番号を決定することであってもよい。
【0061】
具体的には、1番目の非ゼロ配列が1行目1列目及び2行目1列目に位置する2つのパラメータを含むと仮定すると、1行目1列目の要素を用いてデータ行列中の1行目の要素に順に乗算し、間引きされたパラメータ行列中の2行目1列目の要素をデータ行列中の1行目の要素に順に乗算することができる。これにより、間引きされたパラメータ行列中の1番目の配列中のパラメータ列番号に基づいて、それと計算されるデータ行列中の第1の関連データの行番号を決定し、得られた行番号を第1の関連データのデータ行列における位置とすることができる。同様に、間引きされたパラメータ行列中の他の非ゼロ配列のパラメータのデータ行列における第1の関連データを決定することができる。
【0062】
これにより、第1の関連データのデータ行列における位置を決定するルールは、間引きされたパラメータ行列中のj番目の非ゼロ配列の列番号をデータ行列中の第1の関連データの行番号とすることであってもよい。説明を簡略化するために、
図10に示すように、A
5×3行列は間引きされたパラメータ行列を表し、B
3×6行列はデータ行列を表す。間引きされたパラメータ行列には、(4,-1.4)、(3.2,3.7)、(6,-1.9)、6、8.2という7つの非ゼロ配列が含まれ、ここで、1番目の非ゼロ配列中の2つのパラメータは、それぞれ1行目1列目に位置する「4」と2行目1列目に位置する「-1.4」であり、他の配列のパラメータ位置は説明を省略する。それに応じて、データ行列中の1行目のデータは、1番目の非ゼロ配列中の「4」および「-1.4」の第1の関連データであり、同様に、A
5×3行列中の2番目の非ゼロ配列「3.2」と「3.7」はそれぞれ1行目3列目と2行目3列目に位置し、データ行列中の3行目のデータはそれに対応する第1の関連データである。A
5×3行列中の3番目の非ゼロ配列「6」と「-1.9」はそれぞれ3行目2列目と4行目2列目に位置し、データ行列中の2行目のデータはそれに対応する第1の関連データである。他の非ゼロ配列に対応する第1の関連データについては、説明を省略する。
【0063】
第1の関連データが決定された後、間引きされたパラメータ行列中のj番目の非ゼロ配列のパラメータ値とデータ行列中の第1の関連データを用いて計算を行う。行列演算を行う場合、A5×3行列中の1番目の非ゼロ配列中の「4」和「-1.4」は1列目に位置し、「4」と「-1.4」をそれぞれB3×6行列中の1行目のパラメータに順に乗算して、2つの1次元行列を取得し、A5×3行列中の2番目の非ゼロ配列「3.2」と「3.7」が3列目に位置し、それぞれB3×6行列中の3行目のパラメータに順に乗算して、2つの1次元行列も取得し、A5×3行列中の3番目の非ゼロ配列「6」と「-1.9」が2列目に位置し、それぞれB3×6行列中の2行目のパラメータに順に乗算して、2つの1次元行列も取得する。他の非ゼロ配列と対応する第1の関連データとの計算については、説明を省略する。非ゼロ配列にパラメータ1つしか含まれていない場合、この一意のパラメータを対応する第1の関連データと計算して、1つの1次元行列を取得する。
【0064】
各組の計算結果には少なくとも1つの1次元行列が含まれ、M組の計算結果を用いて、畳み込み層に対応する出力特徴マップを決定する。
【0065】
図11に示すように、一実施形態では、ステップS904は以下のサブステップS1101~S1103を含むことができる。
【0066】
S1101、M組の計算結果の中からターゲット行番号パラメータに対応する少なくとも1つの1次元行列を選択する。ターゲット位置パラメータはj番目の非ゼロ配列におけるターゲット行番号に位置するパラメータである。
【0067】
S1102、少なくとも1つの1次元行列を用いてターゲットデータを決定する。ターゲットデータは出力行列におけるターゲット行番号に位置するデータである。
【0068】
S1103、出力行列に対して予め設定された後処理を行って、畳み込み層に対応する出力特徴マップを取得する。
【0069】
M組の計算結果には複数の1次元行列が含まれ、ここで、複数の1次元行列がターゲット行番号パラメータに基づいて計算して得られた少なくとも1つの1次元行列を含む。ターゲット行番号は出力行列の行数以下の任意の行番号であってもよく、例えば、1行目、2行目などであり、ここでは限定されない。例えば、
図10の1番目の非ゼロ配列における1行目に位置するパラメータ「4」を第1の関連データと計算し、得られた1次元行列は1行目のパラメータに対応する1次元行列である。2番目の非ゼロ配列における1行目に位置するパラメータ「3.2」を第1の関連データと計算し、得られた1次元行列も1行目のパラメータに対応する1次元行列であり、2つの1次元行列を加算して出力行列中の1行目に位置するターゲットデータを得る。
【0070】
同様に、2行目に位置する「-1.4」と「3.7」をそれぞれ用いてデータ行列と計算して2つの1次元行列を取得し、それを加算して出力行列の2行目に位置するターゲットデータを取得する。3行目と4行目に位置する「6」と「-1.9」を用いてデータ行列の2行目のデータと計算して、2つの1次元行列を取得し、それぞれ出力行列の3行目と4行目に位置するターゲットデータとする。このように類推して、間引きされたパラメータ行列A5×3とB3×6を用いて、計算して得られた出力行列はC5×6の出力行列である。
【0071】
出力行列に対して予め設定された後処理を行って、畳み込み層に対応する出力特徴マップを取得する。ここで、予め設定された後処理は、出力行列を予め設定されたアクティブ化関数に入力し、またはバイアス項が追加された出力行列を予め設定されたアクティブ化関数に入力し、出力特徴マップを取得することであってもよい。
図10に示すように、バイアス項は、出力行列の行数と同じパラメータ列であってもよく、パラメータは必要に応じて設定することができ、ここでは限定されない。アクティブ化関数は、予め設定されたrelu関数であってもよく、relu関数の形式は、以下の通りであってもよい。
【数1】
【0072】
relu関数の形式は、必要に応じて他の設定を行うこともできるが、ここでは限定されない。
【0073】
上記のプロセスにより、0である配列値に対応するデータ行列中の関連データの抽出ステップをスキップするとともに、間引きされたパラメータ行列の非ゼロ配列中の同一列のパラメータに基づいて、第1の関連データを抽出した後、配列中の異なるパラメータとそれぞれ計算して、中間結果を取得することができ、異なる列のパラメータに基づいてデータ行列の中から異なる第1の関連データを抽出することによる効率低下の問題を回避する。
【0074】
一実施形態では、j番目の非ゼロ配列と第1の関連データを計算する中に、データ行列中の第2の関連データをキャッシュメモリに書き込み、ここで、第2の関連データは、予め設定されたルールに基づいて決定された、j+1番目の非ゼロ配列と計算されるデータである。
【0075】
例えば、
図10に示すように、間引きされたパラメータ行列をデータ行列と演算を行う場合、まず1番目の非ゼロ配列(4、-1.4)(1列目、1-2行目)に対応する第1の関連データを抽出してキャッシュメモリに入れ、対応する演算を実行する。演算を実行する中に、メモリから次の非ゼロ配列(3.2、3.7)(3列目、1-2行目)に対応する第2の関連データを抽出してキャッシュメモリに入れ、次の段階の演算を実行するために準備する。データ行列に対して、実行主体は0である配列値に対応する行をスキップし、1行目のデータを抽出して演算を実行した後、直接3行目にジャンプし、3行目のデータを抽出してキャッシュメモリに入れ、次の演算を実行する。
【0076】
具体的には、1番目の非ゼロ配列(4、-1.4)と第1の関連データ(1、4、1、8、7、3)を計算する中に、2番目の非ゼロ配列(3.2、3.7)と計算される第2の関連データ(3、5、1、0、2、9)をキャッシュメモリに書き込む。同様に、2番目の非ゼロ配列を対応する計算を行う中に、3番目の非ゼロ配列と計算されるデータをキャッシュメモリに書き込み、具体的な説明を省略する。
【0077】
上記のプロセスにより、間引きされたパラメータ行列中の非ゼロ配列の位置に基づいて、0である配列値に対応するデータ行列中の関連データの抽出ステップをスキップし、実行主体が無効な計算を行うことが回避される。同時に、現在の計算プロセスにおいて、データ先取りの方式によって計算対象のデータをキャッシュメモリに早めに入れ、ネットワークモデルの計算速度を大幅に向上させる。
【0078】
図12に示すように、一実施形態では、第2の関連データの決定方式は以下のステップS1201~S1203を含む。
【0079】
S1201、j+1番目の非ゼロ配列の列番号を決定する。
【0080】
S1202、j+1番目の非ゼロ配列の列番号とj番目の非ゼロ配列の列番号との間の列番号差に基づいて、第2の関連データと第1の関連データとの行オフセットを決定する。
【0081】
S1203、第1の関連データの位置及び行オフセットに基づいて、第2の関連データの位置を決定する。
【0082】
ここで、j+1番目の非ゼロ配列は、j番目の非ゼロ配列と同じ中間行列に属する配列であってもよいし、他の中間行列の非ゼロ配列であってもよく、ここでは限定されない。j+1番目の非ゼロ配列の列番号は、間引きされたパラメータ行列の列数以下の任意の列番号、例えば、1列目、2列目などであってもよく、ここでは限定されない。
【0083】
j+1番目の非ゼロ配列の列番号とj番目の非ゼロ配列の列番号との間の列番号差は、正数であってもよいし、負数であってもよく、ここでは限定されない。第2の関連データと第1の関連データとの行オフセットが列番号差と等しく、正数または負数であってもよく、ここでは限定されない。
【0084】
第1の関連データの位置は、第1の関連データの行番号によって表すことができ、具体的には、データ行列の行数以下の任意の行番号であってもよい。第2の関連データの位置を決定する実現形態は、第1の関連データの行番号及び行オフセットに基づいて、第2の関連データの行番号を決定することができる。計算して得られた第2の関連データの行番号も、データ行列の行数以下の任意の行番号である。
【0085】
例えば、
図10に示すように、間引きされたパラメータ行列には5つの非ゼロ配列が含まれ、列番号はそれぞれ1、3、2、1、3であり、2番目の非ゼロ配列(3.2、3.7)と1番目の非ゼロ配列(4、-1.4)との列番号差は「+2」であり、3番目の非ゼロ配列(6、-1.9)と2番目の非ゼロ配列(3.2、3.7)との列番号差は「-1」であり、このように類推すると、j+1番目の非ゼロ配列とj番目の非ゼロ配列との列番号差はそれぞれ「2、-1、-1、2」である。1番目の非ゼロ配列と計算される第1のデータはデータ行列の1行目に位置するデータであり、列番号差に基づいて決定された第2の関連データの行オフセットは2であり、これにより、第2の関連データがデータ行列の3行目に位置すると決定することができる。同様に、他の第2の関連データの位置を決定することができ、ここでは説明を省略する。
【0086】
上記のプロセスにより、列番号差に基づいて次の第2の関連データと前の第2の関連データとの行オフセットを取得することができ、これにより、第2の関連データを迅速に位置特定し、データの先取りの効率を向上させ、モデル全体の演算の速度を向上させることができる。
【0087】
図13に示すように、一実施形態では、ステップS103は以下のサブステップS1301~S1302をさらに含むことができる。
【0088】
S1301、データ行列に対してブロック処理を行って、N個のブロック行列を取得し、Nが1以上の整数である。
【0089】
S1302、間引きされたパラメータ行列を用いてN個のブロック行列とそれぞれ計算する。
【0090】
入力特徴マップから変換して得られたデータ行列が大量の要素を含むため、大きな記憶空間を占め、実行主体内のキャッシュメモリに対応する容量値を超えることが多い。本実施例は、行列ブロック処理により、元のデータ行列を複数のブロック行列に分解することができ、各ブロック行列が少量の要素を含み、より小さな記憶空間を占める。具体的には、ブロック処理は、固定の行数と列数に従ってデータ行列をブロック化することができ、または行数/列数が変わらない場合、データ行列を列/行ごとにブロック化することもでき、ここでは限定されない。
【0091】
データ行列に対してブロック処理を行って、N個のブロック行列を取得し、Nが1、2,3などであってもよく、ここでは、網羅的に説明しない。
【0092】
間引きされたパラメータ行列を用いてデータ行列と演算することは、間引きされたパラメータ行列を用いてN個のブロック行列とそれぞれ演算することに変換することができる。具体的には、間引きされたパラメータ行列を用いてN個のブロック行列とそれぞれ計算して対応するブロック計算結果を得、さらにブロック行列の位置関係に従ってブロック計算結果をスプライスし、スプライスして得られた結果を出力行列とすることができる。ブロック行列中の第1の関連データ、第2の関連データの決定方式は、前記のデータ行列の決定方法と同じであり、ここでは説明を省略する。
【0093】
図14に示すように、一実施形態では、ステップS1301は以下のサブステップS1401~S1403をさらに含むことができる。
【0094】
S1401、データ行列の行数を各ブロック行列の行数とする。
【0095】
S1402、キャッシュメモリの容量及びデータ行列の列数に基づいて、各ブロック行列の列数を決定する。キャッシュメモリはパラメータ行列及びブロック行列を記憶するために使用される。
【0096】
S1403、各ブロック行列の行数と列数とに基づいて、データ行列に対してブロック処理を行って、N個のブロック行列を取得する。
【0097】
本実施例の実行主体は、ハードウェアデバイスのパラメータを取得することができる。例えば、ハードウェアデバイスのキャッシュメモリを直接読み取ることにより、その記憶容量情報を取得することができ、または、ハードウェアデバイスのピークメモリ帯域幅、毎秒最大操作量などを取得することもでき、ここでは限定されない。
【0098】
入力特徴マップサイズが大きい場合、端末機器内のキャッシュメモリはデータ行列全体を記憶できないか、または、計算の進行に伴いオンラインで記憶されたデータがキャッシュロスになる。これに基づいて、データ行列に対してブロック処理を行って、データが予期する方式を組み合わせてデータ記憶と計算を行うことができる。具体的には、各チャンネルのピクセルをチャンネルごとに展開させ、行方向に順に組み合わせた後、データ行列を列ごとにブロック化することができる。この時、得られたデータ行列の列数は行数よりもはるかに大きいため、行数が変わらない場合に列ごとにブロック化すると、複数の小さなブロック行列を取得することができる。例えば、入力特徴マップに長さ、幅方向にそれぞれ100個のピクセル点が含まれる場合、チャンネルの数が100である場合、データ行列の列数は10000であり、この時、データ行列を列ごとにブロック化して複数のブロック行列を得ることができる。
【0099】
具体的には、ブロック処理のルールは、データ行列の行数を各ブロック行列の行数としてもよく、すなわちブロック処理後の行数が変わらない。さらに、キャッシュメモリの容量及びデータ行列の列数に基づいて、各ブロック行列の列数をそれぞれ決定する。
【0100】
例えば、データ行列が占める記憶空間が1.8Gである場合、バッファメモリの容量が1Gである場合、データ行列をブロックして得られた各ブロック行列が占める記憶空間は1Gより小さいくなければならない(他のアプリケーションによるバッファ空間の占有を考慮しない)。例えば、データ行列の列数は10000であり、計算によってm列パラメータ値に対応するメモリは600Mしかないと決定されると、データ行列をm列でブロック化して複数のブロック行列(m列)を取得することができる。mの値は48、32、16、8、4、1などであってもよく、ここでは限定されない。mの値が48である場合、列数10000のデータ行列を208個の列数が48であるブロック行列に分割することができ、この時、残りの16列を最後のブロック行列として対応する演算を実行することができる。
【0101】
各ブロック行列の行数と列数が決定された後、行数と列数とに基づいてデータ行列に対してブロック処理を行って、N個のブロック行列を取得することができる。
【0102】
上記のプロセスにより、キャッシュメモリは完全なブロック行列を記憶することができ、データ行列が大きすぎることによるオンラインで記憶された関連データのキャッシュロスの問題が回避される。
【0103】
一実施形態では、間引きされたパラメータ行列の疎さが予定の条件を満たしていない場合、パラメータ行列及びデータ行列を用いて計算する。
【0104】
予定の条件は、特定の予め設定された閾値または特定の予め設定された範囲であってもよく、ここでは限定されない。例えば、間引きされたパラメータ行列の疎さを予め設定された閾値の大きさと比較することにより、疎さの小さい畳み込み層に対して順序読み取りの方式を直接採用して対応する演算を実行し、畳み込みニューラルネットワークの計算速度をさらに向上させる。
【0105】
図15に示すように、本開示は特徴画像の処理装置に関し、当該装置は、
パラメータ行列中のパラメータをグループ化して、複数の配列を取得するためのグループ化モジュール1501であって、前記パラメータ行列は、畳み込みニューラルネットワークの畳み込み層から変換して得られた行列であるグループ化モジュール1501と、
前記複数の配列内のパラメータ値に基づいて、前記パラメータ行列に対して間引き処理を行って、間引きされたパラメータ行列を取得するための間引き処理モジュール1502と、
前記間引きされたパラメータ行列の疎さが予定の条件を満たす場合、前記間引きされたパラメータ行列及びデータ行列を用いて計算を行って、前記畳み込み層に対応する出力特徴マップを決定するための第1の計算モジュール1503であって、前記データ行列は、前記畳み込み層に入力された入力特徴マップから変換して得られた行列を含む第1の計算モジュール1503と、を含むことができる。
【0106】
一実施形態では、前記グループ化モジュール1501は、
予め設定された行数に基づいて前記パラメータ行列を行ごとに分割して、複数の中間行列を取得するための中間行列決定サブモジュールと、
前記中間行列の行数が前記予め設定された行数に等しい場合、前記中間行列を列ごとに複数の配列に分割するための第1の配列決定サブモジュールであって、前記配列には予め設定された行数のパラメータが含まれる第1の配列決定サブモジュールと、を含む。
【0107】
一実施形態では、前記グループ化モジュール1501は、
予め設定された行数に基づいて前記パラメータ行列を行ごとに分割して、複数の中間行列を取得するための中間行列決定サブモジュールと、
前記中間行列の行数が前記予め設定された行数より小さい場合、前記中間行列を行ごとに少なくとも1つの1次元行列に分割するための1次元行列決定サブモジュールと、
各前記1次元行列を列ごとに複数の配列に分割するための第2の配列決定サブモジュールであって、各前記配列にはいずれも1つのパラメータが含まれる第2の配列決定サブモジュールと、を含む。
【0108】
一実施形態では、前記間引き処理モジュール1502は、
各配列内のパラメータ値に対してそれぞれ加算計算を行って、得られた加算計算の結果を配列値とするための配列値決定サブモジュールと、
前記配列値が予め設定された閾値より小さい場合、前記配列内のパラメータ値をすべてゼロにして、ゼロリセット配列を取得するためのゼロ設定実行サブモジュールと、
前記ゼロリセット配列と非ゼロ配列からなる行列を、前記間引きされたパラメータ行列とするための間引きされたパラメータ行列決定サブモジュールであって、前記非ゼロ配列は配列値がゼロでない配列である間引きされたパラメータ行列決定サブモジュールと、を含む。
【0109】
一実施形態では、前記第1の計算モジュール1503は、
前記間引きされたパラメータ行列中のM個の非ゼロ配列の位置を決定するための非ゼロ配列位置決定サブモジュールであって、Mが1以上の整数である非ゼロ配列位置決定サブモジュールと、
j番目の前記非ゼロ配列の位置に基づいて、前記データ行列中の第1の関連データを読み取るための第1の関連データ読み取りサブモジュールであって、前記第1の関連データは、前記データ行列中における予め設定されたルールに基づいて決定された、前記j番目の非ゼロ配列と計算されるデータであり、jが1以上M以下の整数である第1の関連データ読み取りサブモジュールと、
前記j番目の非ゼロ配列と前記第1の関連データを用いて計算を行って、M組の計算結果のうちのj組目の計算結果を取得するための計算サブモジュールであって、前記j組目の計算結果は、前記j番目の非ゼロ配列内の各パラメータをそれぞれ第1の関連データと計算して得られた少なくとも1つの1次元行列を含む計算サブモジュールと、
前記M組の計算結果を用いて前記畳み込み層に対応する出力特徴マップを決定するための出力特徴マップ実行サブモジュールと、を含む。
【0110】
一実施形態では、前記出力特徴マップ実行サブモジュールは、
前記M組の計算結果の中からターゲット位置パラメータに対応する少なくとも1つの1次元行列を選択するための1次元行列選択サブモジュールであって、前記ターゲット位置パラメータは、前記j番目の非ゼロ配列におけるターゲット行番号に位置するパラメータである1次元行列選択サブモジュールと、
前記少なくとも1つの1次元行列を用いてターゲットデータを決定するためのターゲットデータ決定サブモジュールであって、前記ターゲットデータは、出力行列におけるターゲット行番号に位置するパラメータであるターゲットデータ決定サブモジュールと、
前記出力行列に対して予め設定された後処理を行って、前記畳み込み層に対応する出力特徴マップを取得するための後処理サブモジュールと、を含む。
【0111】
一実施形態では、出力特徴マップ実行サブモジュールは、
前記j番目の非ゼロ配列と前記第1の関連データとを計算する中に、前記データ行列中の第2の関連データを前記キャッシュメモリに書き込むためのデータ先取りサブモジュールであって、前記第2の関連データは、予め設定されたルールに基づいて決定された、j+1番目の非ゼロ配列と計算されるデータであるデータ先取りサブモジュールをさらに含む。
【0112】
一実施形態では、前記データ先取りサブモジュールは、
前記j+1番目の非ゼロ配列の列番号を決定するための列番号決定サブモジュールと、
前記j+1番目の非ゼロ配列の列番号と前記j番目の非ゼロ配列の列番号との間の列番号差に基づいて、前記第2の関連データと前記第1の関連データとの行オフセットを決定するための行オフセット決定サブモジュールと、
前記第1の関連データの位置及び前記行オフセットに基づいて、前記第2の関連データの位置を決定するための第2の関連データ決定サブモジュールと、を含む。
【0113】
一実施形態では、前記第1の計算モジュール1503は、
前記データ行列に対してブロック処理を行って、N個のブロック行列を取得するためのブロック処理サブモジュールであって、Nが1以上の整数であるブロック処理サブモジュールと、
パラメータ行列を用いて前記N個のブロック行列とそれぞれ計算するためのブロック計算サブモジュールと、を含む。
【0114】
一実施形態では、前記ブロック処理サブモジュールは、
前記データ行列の行数を各前記ブロック行列の行数とするための行数決定サブモジュールと、
キャッシュメモリの容量及び前記データ行列の列数に基づいて、各前記ブロック行列の列数を決定するための列数決定サブモジュールであって、前記キャッシュメモリは前記パラメータ行列及び前記ブロック行列を記憶するために使用される列数決定サブモジュールと、
各前記ブロック行列の行数と列数とに基づいて、前記データ行列に対してブロック処理を行って、前記N個のブロック行列を取得するためのブロック処理実行サブモジュールと、を含む。
【0115】
一実施形態では、特徴画像の処理装置は、
前記間引きされたパラメータ行列の疎さが予定の条件を満たさない場合、前記パラメータ行列及び前記データ行列を用いて計算するための第2の計算モジュールをさらに含む。
【0116】
なお、本開示の技術案では、関連するユーザ個人情報の取得、記憶、応用などは、いずれも関連法律法規の規定に合致し、かつ公序良俗に違反しない。
【0117】
本開示の実施例によれば、本開示は、電子機器、及び読み取り可能な記憶媒体をさらに提供する。
本開示の実施例によれば、本開示は、コンピュータプログラムをさらに提供し、当該コンピュータプログラムはプロセッサによって実行される場合、本開示によって提供される特徴画像の処理方法が実現される。
【0118】
図16は、本開示の実施例を実行するための例示的な電子機器1600の概略ブロック図である。電子機器は、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレームコンピュータ、および他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すことを目的とする。電子機器は、パーソナルデジタル処理、携帯電話、スマートフォン、ウェアラブルデバイス、および他の同様のコンピューティングデバイスなどの様々な形態のモバイルデバイスを表すこともできる。本明細書で示される部品、それらの接続と関係、およびそれらの機能は、単なる例であり、本明細書の説明および/または求められる本開示の実現を制限することを意図したものではない。
【0119】
図16に示すように、電子機器1600は、読み取り専用メモリ(ROM)1602に記憶されているコンピュータプログラムまたは記憶ユニット1608からランダムアクセスメモリ(RAM)1603にロードされたコンピュータプログラムに従って様々な適切な動作および処理を実行できる計算ユニット1601を含む。RAM1603には、電子機器1600の動作に必要な各種のプログラムやデータも記憶されてもよい。計算ユニット1601、ROM1602、及びRAM1603は、バス1604を介して互いに接続されている。パス1604には、入力/出力(I/O)インターフェース1605も接続されている。
【0120】
電子機器1600の複数のコンポーネントはI/Oインターフェース1605に接続され、キーボード、マウスなどの入力ユニット1606、各タイプのディスプレイ、スピーカなどの出力ユニット1607、磁気ディスク、光ディスクなどの記憶ユニット1608、およびネットワークカード、モデム、無線通信トランシーバなどの通信ユニット1609を含む。通信ユニット1609は、電子機器1600が、インターネットなどのコンピュータネットワークおよび/または各種の電信ネットワークを介して他のデバイスと情報/データを交換することを可能にする。
【0121】
計算ユニット1601は、処理および計算能力を有する様々な汎用および/または専用の処理コンポーネントであってもよい。計算ユニット1601のいくつかの例は、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)、各種の専用の人工知能(AI)計算チップ、各種のマシン運転学習モデルアルゴリズムの計算ユニット、デジタル信号プロセッサ(DSP)、およびいずれかの適切なプロセッサ、コントローラ、マイクロコントローラなどを含むが、これらに限定されない。計算ユニット1601は、上記に記載された各方法及び処理、例えば、特徴画像の処理方法を実行する。例えば、いくつかの実施例では、特徴画像の処理方法を、記憶ユニット1608などの機械読み取り可能な媒体に有形的に含まれるコンピュータソフトウェアプログラムとして実現することができる。いくつかの実施例では、コンピュータプログラムの一部または全部は、ROM 1602および/または通信ユニット1609を介して電子機器1600にロードおよび/またはインストールすることができる。コンピュータプログラムがRAM1603にロードされ、計算ユニット1601によって実行される場合、前文に記載された特徴画像の処理方法の1つの或複数のステップが実行されてもよい。代替的に、他の実施例では、計算ユニット1601は特徴画像の処理方法を実行するように、他のいずれかの適切な方式(例えば、ファームウェアを介して)によって構成されてもよい。
【0122】
本明細書で上記記載のシステムと技術の様々な実施形態は、デジタル電子回路システム、集積回路システム、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップ(SOC)、コンプレックス・プログラマブル・ロジック・デバイス(CPLD)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組み合わせで実現することができる。これらの様々な実施形態は、1つ又は複数のコンピュータプログラムで実施されることを含むことができ、当該1つ又は複数のコンピュータプログラムは、少なくとも1つのプログラマブルプロセッサを含むプログラム可能なシステムで実行および/または解釈されることができ、当該プログラマブルプロセッサは、特定用途向け又は汎用プログラマブルプロセッサであってもよく、ストレージシステム、少なくとも1つの入力装置、および少なくとも1つの出力装置からデータおよび命令を受信し、データおよび命令を当該ストレージシステム、当該少なくとも1つの入力装置、および当該少なくとも1つの出力装置に伝送することができる。
【0123】
本開示の方法を実行するためのプログラムコードは、1つ又は複数のプログラミング言語の任意の組み合わせで書くことができる。これらのプログラムコードは、プロセッサ又はコントローラによって実行された際に、フローチャートおよび/またはブロック図に規定された機能/操作が実施されるように、汎用コンピュータ、専用コンピュータ、又は他のプログラマブルデータ処理装置のプロセッサ又はコントローラに提供されてもよい。プログラムコードは、完全に機械上で実行されるか、部分的に機械上で実行されるか、スタンドアロンソフトウェアパッケージとして、部分的に機械上で実行され、部分的にリモート機械上で実行され又は完全にリモート機械又はサーバ上で実行されてもよい。
【0124】
本開示のコンテクストでは、機械読み取り可能な媒体は、命令実行システム、装置、またはデバイスによって使用されるために、又は命令実行システム、装置、またはデバイスと組み合わせて使用するためのプログラムを含むか、又は記憶することができる有形の媒体であってもよい。機械読み取り可能な媒体は、機械読み取り可能な信号媒体または機械読み取り可能な記憶媒体であってもよい。機械読み取り可能な媒体は、電子的、磁気的、光学的、電磁気的、赤外線的、又は半導体システム、装置又はデバイス、または上記コンテンツの任意の適切な組み合わせを含むことができるが、これらに限定されない。機械読み取り可能な記憶媒体のより具体的な例は、1つ又は複数のラインに基づく電気的接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能プログラマブルリードオンリーメモリ(EPROM又はフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスクリードオンリーメモリ(CD-ROM)、光学記憶装置、磁気記憶装置、または上記コンテンツの任意の適切な組み合わせを含む。
【0125】
ユーザとのインタラクションを提供するために、コンピュータ上でここで説明されるシステム及び技術を実施することができ、当該コンピュータは、ユーザに情報を表示するためのディスプレイ装置(例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタ)と、キーボード及びポインティングデバイス(例えば、マウス又はトラックボール)とを有し、ユーザは、当該キーボード及び当該ポインティングデバイスによって入力をコンピュータに提供することができる。他の種類の装置も、ユーザとのインタラクションを提供することができ、例えば、ユーザに提供されるフィードバックは、任意の形式のセンシングフィードバック(例えば、ビジョンフィードバック、聴覚フィードバック、又は触覚フィードバック)であってもよく、任意の形式(音響入力と、音声入力、または、触覚入力とを含む)でユーザからの入力を受信することができる。
【0126】
ここで説明されるシステムおよび技術は、バックエンドコンポーネントを含むコンピューティングシステム(例えば、データサーバとする)、又はミドルウェアコンポーネントを含むコンピューティングシステム(例えば、アプリケーションサーバ)、又はフロントエンドコンポーネントを含むコンピューティングシステム(例えば、グラフィカルユーザインターフェース又はウェブブラウザを有するユーザコンピュータ、ユーザは、当該グラフィカルユーザインターフェース又は当該ウェブブラウザによってここで説明されるシステムおよび技術の実施形態とインタラクションできる)、又はこのようなバックエンドコンポーネントと、ミドルウェアコンポーネントと、フロントエンドコンポーネントのいずれかの組み合わせを含むコンピューティングシステムで実行することができる。任意の形態又は媒体のデジタルデータ通信(例えば、通信ネットワーク)によってシステムのコンポーネントを相互に接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(LAN)と、ワイドエリアネットワーク(WAN)と、インターネットと、を含む。
【0127】
コンピュータシステムは、クライアントとサーバを含むことができる。クライアントとサーバは、一般に、互いに離れており、通常に通信ネットワークを介してインタラクションする。対応するコンピュータ上で実行され、互いにクライアント-サーバ関係を有するコンピュータプログラムによってクライアントとサーバとの関係が生成される。サーバはクラウドサーバであってもよく、分散システムのサーバであってもよく、ブロックチェーンを組み込んだサーバであってもよい。
【0128】
なお、上記に示される様々な形式のフローを使用して、ステップを並べ替え、追加、又は削除することができると理解されたい。例えば、本開示に記載の各ステップは、並列に実行されてもよいし、順に実行されてもよいし、異なる順序で実行されてもよいが、本開示で開示されている技術案が所望の結果を実現することができれば、本明細書では限定されない。
【0129】
上記具体的な実施形態は、本開示の保護範囲を制限するものではない。当業者は、設計要求と他の要因に応じて、様々な修正、組み合わせ、サブコンビネーション、及び代替を行うことができると理解されたい。任意の本開示の精神と原則内で行われる修正、同等の置換、及び改善などは、いずれも本開示の保護範囲内に含まれなければならない。