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

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

▶ 株式会社東芝の特許一覧

特許7451453畳み込み演算処理装置および畳み込み演算処理システム
<>
  • 特許-畳み込み演算処理装置および畳み込み演算処理システム 図1
  • 特許-畳み込み演算処理装置および畳み込み演算処理システム 図2
  • 特許-畳み込み演算処理装置および畳み込み演算処理システム 図3
  • 特許-畳み込み演算処理装置および畳み込み演算処理システム 図4
  • 特許-畳み込み演算処理装置および畳み込み演算処理システム 図5
  • 特許-畳み込み演算処理装置および畳み込み演算処理システム 図6
  • 特許-畳み込み演算処理装置および畳み込み演算処理システム 図7
  • 特許-畳み込み演算処理装置および畳み込み演算処理システム 図8
  • 特許-畳み込み演算処理装置および畳み込み演算処理システム 図9
  • 特許-畳み込み演算処理装置および畳み込み演算処理システム 図10
  • 特許-畳み込み演算処理装置および畳み込み演算処理システム 図11
  • 特許-畳み込み演算処理装置および畳み込み演算処理システム 図12
  • 特許-畳み込み演算処理装置および畳み込み演算処理システム 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-08
(45)【発行日】2024-03-18
(54)【発明の名称】畳み込み演算処理装置および畳み込み演算処理システム
(51)【国際特許分類】
   G06T 1/40 20060101AFI20240311BHJP
   G06F 17/10 20060101ALI20240311BHJP
   G06N 3/0464 20230101ALI20240311BHJP
【FI】
G06T1/40
G06F17/10 A
G06N3/0464
【請求項の数】 11
(21)【出願番号】P 2021041120
(22)【出願日】2021-03-15
(65)【公開番号】P2022141010
(43)【公開日】2022-09-29
【審査請求日】2023-02-09
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】小野 瑞城
【審査官】岡本 俊威
(56)【参考文献】
【文献】特表2018-523870(JP,A)
【文献】特開2009-080693(JP,A)
【文献】喜屋武聖也 他,FPGAを用いた畳み込みニューラルネットワークの高速化,電気学会研究会資料,日本,一般社団法人電気学会,2020年09月17日,次世代産業システム研究会 IIS-20-062,p25~31
(58)【調査した分野】(Int.Cl.,DB名)
G06T 1/40
G06F 17/10
G06N 3/0464
(57)【特許請求の範囲】
【請求項1】
第一の方向に第一の数値により表される長さで配列され、第二の方向に前記第一の数値より大きな第二の数値により表される長さで配列され、第三の方向に第三の数値により表される長さで配列された第一の三次元配列の数値に対して、
前記第一の方向に第四の数値により表される長さで配列され、前記第二の方向に第五の数値により表される長さで配列され、前記第三の方向に前記第三の数値により表される長さで配列された第二の三次元配列の数値により表される核を用いて、
前記第一の方向に於いては第六の数値により表されるストライドで且つ前記第二の方向に於いては第七の数値により表されるストライドで、
畳み込みニューラルネットワークの第一の畳み込み演算処理を行う畳み込み演算処理機と、
前記第一の三次元配列の数値の少なくとも一部を格納するための記憶装置であって、
前記少なくとも一部は、
前記第一の方向に前記第一の数値により表される長さで配列され、
前記第二の方向に前記第五の数値と前記第七の数値との和により表される長さで配列され、
前記第三の方向に前記第三の数値により表される長さで配列された第三の三次元配列の数値である、記憶装置と、
を備えることを特徴とする畳み込み演算処理装置。
【請求項2】
前記第三の三次元配列の数値は前記畳み込みニューラルネットワークの第二の畳み込み演算処理の出力ないし前記畳み込みニューラルネットワークの入力であることを特徴とする請求項1に記載の畳み込み演算処理装置。
【請求項3】
前記記憶装置に格納される前記第三の三次元配列の数値の前記第三の三次元配列内に於ける位置は、前記第一の方向に於ける位置を指定する第一の番地数値と、前記第二の方向に於ける位置を指定する第二の番地数値と、前記第三の方向に於ける位置を指定する第三の番地数値と、により指定され、
前記第一の番地数値と前記第二の番地数値と前記第三の番地数値とは各々が特定の可動域を有し、
前記第一の番地数値ないし前記第二の番地数値ないし前記第三の番地数値は、
前記記憶装置に新たな数値が書き込まれるたびに、前記第一の番地数値は1増加され、
もし前記第一の番地数値が増加の結果として前記第一の番地数値の可動域の最大値を超えることが予期される場合、前記第一の番地数値は1増加されずに前記第一の番地数値の可動域の最小値に戻されるとともに前記第三の番地数値が1増加され、
もし前記第三の番地数値が増加の結果として前記第三の番地数値の可動域の最大値を超えることが予期される場合、前記第三の番地数値は1増加されずに前記第三の番地数値の可動域の最小値に戻されるとともに前記第二の番地数値が1増加され、
もし前記第二の番地数値が増加の結果として前記第二の番地数値の可動域の最大値を超えることが予期される場合、前記第二の番地数値は1増加されずに前記第二の番地数値の可動域の最小値に戻されるように制御される、ないし、
前記記憶装置に新たな数値が書き込まれるたびに、前記第三の番地数値は1増加され、
もし前記第三の番地数値が増加の結果として前記第三の番地数値の可動域の最大値を超えることが予期される場合、前記第三の番地数値は1増加されずに前記第三の番地数値の可動域の最小値に戻されるとともに前記第一の番地数値が1増加され、
もし前記第一の番地数値が増加の結果として前記第一の番地数値の可動域の最大値を超えることが予期される場合、前記第一の番地数値は1増加されずに前記第一の番地数値の可動域の最小値に戻されるとともに前記第二の番地数値が1増加され、
もし前記第二の番地数値が増加の結果として前記第二の番地数値の可動域の最大値を超えることが予期される場合、前記第二の番地数値は1増加されずに前記第二の番地数値の可動域の最小値に戻されるように制御される、
ことを特徴とする請求項1ないし請求項2の何れかに記載の畳み込み演算処理装置。
【請求項4】
前記畳み込みニューラルネットワークは、複数の畳み込み層を備え、
それぞれが複数の畳み込み層のそれぞれに関する畳み込み演算処理を行う複数の畳み込み演算処理機と、
前記複数の畳み込み演算処理機の入力を記憶する複数の記憶装置と、を備える、
ことを特徴とする請求項1から請求項3の何れかに記載の畳み込み演算処理装置。
【請求項5】
前記記憶装置に於いて、第一の位置に対する書き込みないし読み出しと、前記第一の位置とは異なるところの第二の位置に対する書き込みないし読み出しと、は同時に実行することが可能であることを特徴とする請求項1から請求項4の何れかに記載の畳み込み演算処理装置。
【請求項6】
前記畳み込みニューラルネットワークは、複数の畳み込み層を備え、
それぞれが前記複数の畳み込み層のそれぞれに関する畳み込み演算処理を並列に行う複数の畳み込み演算処理機と、
前記複数の畳み込み演算処理機の入力を記憶する複数の記憶装置と、を備える、ことを特徴とする請求項5に記載の畳み込み演算処理装置。
【請求項7】
複数の畳み込み演算処理装置を含む畳み込み演算処理システムであって、
前記複数の畳み込み演算処理装置は、畳み込みニューラルネットワークの第一の畳み込み演算処理を行い、
前記畳み込みニューラルネットワークの出力が前記複数の畳み込み演算処理装置の個数と同数に分割され、
前記複数の畳み込み演算処理装置の中の第一の畳み込み演算処理装置は前記畳み込みニューラルネットワークの出力の第一の値を算出し、
前記複数の畳み込み演算処理装置の中の第二の畳み込み演算処理装置は前記畳み込みニューラルネットワークの出力の第二の値を算出し、
前記複数の畳み込み演算処理装置の少なくとも一つは請求項1から請求項6の何れかに記載の畳み込み演算処理装置であることを特徴とする畳み込み演算処理システム。
【請求項8】
前記複数の畳み込み演算処理装置の全てが請求項1から請求項6の何れかに記載の畳み込み演算処理装置であることを特徴とする請求項7に記載の畳み込み演算処理システム。
【請求項9】
前記畳み込みニューラルネットワークの入力は、第八の方向に第八の数値により表される長さで配列され、第九の方向に前記第八の数値より大きな第九の数値により表される長さで配列され、第十の方向に第十の数値により表される長さで配列された三次元配列の数値であり、
前記分割された前記畳み込みニューラルネットワークの出力の各々の算出に必要な入力の各々は、前記畳み込みニューラルネットワークの入力の前記第九の方向に沿う方向の数値の全てと、前記畳み込みニューラルネットワークの入力の前記第十の方向に沿う方向の数値の全てを含むことを特徴とする請求項7ないし請求項8の何れかに記載の畳み込み演算処理システム。
【請求項10】
請求項1から請求項6の何れかに記載の畳み込み演算処理装置と、
撮像装置と、を含む畳み込み演算処理システムであって、
前記畳み込みニューラルネットワークの入力は前記撮像装置の撮像した画像に前処理を施したものないし前記撮像装置の撮像した画像であり、
前記撮像装置は前記畳み込み演算処理装置の前記第一の方向に掃引を行うことに依り画像を撮像することを特徴とする畳み込み演算処理システム。
【請求項11】
撮像装置を更に含み、
前記畳み込みニューラルネットワークの入力は前記撮像装置の撮像した画像に前処理を施したものないし前記撮像装置の撮像した画像であり、
前記複数の畳み込み演算処理装置の前記第一の方向は全て相等しく、
前記撮像装置は前記畳み込み演算処理装置の前記第一の方向に掃引を行うことに依り画像を撮像することを特徴とする請求項7から請求項9の何れかに記載の畳み込み演算処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、畳み込み演算処理装置および畳み込み演算処理システムに関する。
【背景技術】
【0002】
畳み込みニューラルネットワークに於いて、各々の層の出力である数値すなわち次の層の入力となる数値を一時的に格納するための記憶装置が必要となる。特に層を単位とするパイプライン処理を行う場合には、全層の出力である数値を格納するメモリーを含む記憶装置が必要となる。そして、特定の層に於ける処理の出力である数値の書き込みと、特定の層の次の層に於ける処理の入力となる数値の読み出しとを同時に行い得るためには、記憶装置をダブルバッファー構成とする必要があるので、全層の出力である数値の二倍の個数の数値を格納するメモリーが必要となる。
【0003】
必要なメモリー量を削減するために各々の層に対してその出力の全てではなく、出力の内で次の層の処理を行うために必要な一部の数値のみを格納することが試みられてはいるが、必要なメモリー量の削減は十分ではない。
【0004】
なお、演算処理を行うチップ外のストレージ等に各々の層の出力を格納する場合と演算処理を行うチップ内のメモリーに各々の層の出力を格納する場合とを比較すると、後者に比べて前者は読み書きに必要な時間が長いので、高速動作の観点から好ましくない。それ故、上記のメモリーには演算処理を行うチップ内のメモリーを用いる必要がある。
【0005】
その結果として、演算処理を行うチップを含む演算処理装置の小型化の妨げとなっており、その帰結として演算処理装置ないしそれを含む演算処理システムの製造費用の削減の妨げとなっている。
【0006】
また、既存の演算処理装置では畳み込みニューラルネットワークの入力の読み込みを開始してから、その畳み込み演算処理の結果が出力されるまでの遅延すなわちレイテンシーの削減もまた十分ではない。その結果としてレイテンシーの短い演算処理システムの実現の妨げとなっている。
【先行技術文献】
【特許文献】
【0007】
【文献】特開2015-210709号公報
【非特許文献】
【0008】
【文献】Huimin Li, Xitian Fan, Li Jiao, Wei Cao, Xuegong Zhou, and Lingli Wang (2016). "A High Performance FPGA-based Accelerator for Large-Scale Convolutional Neural Networks,” in Proc. of 26th Int. Conf. on Field Programmable Logic and Application (2016) 7577308
【文献】Kevin Siu, Dylan Malone Stuart, Mostafa Mahmoud, and Andreas Moshovos (2018). “Memory Requirements for Convolutional Neural Network Hardware Accelerators,” in Proc. of Int. Symp. on Workload Characterization 2018, pp. 111-121
【発明の概要】
【発明が解決しようとする課題】
【0009】
従来の技術では、畳み込み演算処理装置において、メモリー量ないしレイテンシーの削減を行うことはできていない。
【0010】
本発明の目的は、メモリー量ないしレイテンシーを削減できる畳み込み演算処理装置および畳み込み演算処理システムを提供することである。
【課題を解決するための手段】
【0011】
実施形態による畳み込み演算処理装置は、畳み込み演算処理機と、記憶装置と、を備える。畳み込み演算処理機は、第一の方向に第一の数値により表される長さで配列され、第二の方向に前記第一の数値より大きな第二の数値により表される長さで配列され、第三の方向に第三の数値により表される長さで配列された第一の三次元配列の数値に対して、前記第一の方向に第四の数値により表される長さで配列され、前記第二の方向に第五の数値により表される長さで配列され、前記第三の方向に前記第三の数値により表される長さで配列された第二の三次元配列の数値により表される核を用いて、前記第一の方向に於いては第六の数値により表されるストライドで且つ前記第二の方向に於いては第七の数値により表されるストライドで、畳み込みニューラルネットワークの第一の畳み込み演算処理を行う。記憶装置は、前記第一の三次元配列の数値の少なくとも一部を格納する。前記少なくとも一部は、前記第一の方向に前記第一の数値により表される長さで配列され、前記第二の方向に前記第五の数値と前記第七の数値との和により表される長さで配列され、前記第三の方向に前記第三の数値により表される長さで配列された第三の三次元配列の数値である。
【図面の簡単な説明】
【0012】
図1】畳み込みニューラルネットワークの一例を説明する模式図。
図2】パイプライン処理の一例を説明するための模式図。
図3】記憶装置の使用方法の一例を説明する模式図。
図4】第1実施形態の畳み込み演算処理装置の一例を説明する模式図。
図5】第1実施形態の畳み込み演算処理装置に於ける記憶装置の使用方法の一例を説明する模式図。
図6】第1実施形態の畳み込み演算処理装置に於ける記憶装置の使用方法の他の例を説明する模式図。
図7】第1実施形態の畳み込み演算処理装置の変形例を説明する模式図。
図8】第2実施形態の畳み込み演算処理システムの一例を説明する模式図。
図9】第2実施形態の畳み込みニューラルネットワークの出力の分割の一例を説明する模式図。
図10】第2実施形態の畳み込みニューラルネットワークの入力の分割の一例を説明する模式図。
図11】第2実施形態の変形例に於ける畳み込みニューラルネットワークの出力の分割の一例を説明する模式図。
図12】第2実施形態の変形例に於ける畳み込みニューラルネットワークの入力の分割の一例を説明する模式図。
図13】第2実施形態の更なる変形例に於ける畳み込みニューラルネットワークの出力の分割の一例を説明する模式図。
【発明を実施するための形態】
【0013】
以下、図面を参照して、実施形態を説明する。以下の説明は、実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、以下に説明する構成要素の構造、形状、配置、材質等に限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、図面において、各要素のサイズ、厚み、平面寸法又は形状等を実際の実施態様に対して変更して模式的に表す場合もある。複数の図面において、互いの寸法の関係や比率が異なる要素が含まれることもある。複数の図面において、対応する要素には同じ参照数字を付して重複する説明を省略する場合もある。いくつかの要素に複数の呼称を付す場合があるが、これら呼称の例はあくまで例示であり、これらの要素に他の呼称を付すことを否定するものではない。また、複数の呼称が付されていない要素についても、他の呼称を付すことを否定するものではない。なお、以下の説明において、「接続」は直接接続のみならず、他の要素を介して接続されることも意味する。
【0014】
以下、図面を参照しながら本実施の形態について詳細に説明する。
【0015】
先ず、実施の形態の前提となる技術を説明する。
【0016】
図1は、畳み込みニューラルネットワークの一例を説明する模式図である。畳み込みニューラルネットワークは、複数の畳み込み層を含む。図1では、複数の畳み込み層は、一例として、第1畳み込み層12a、第2畳み込み層12b、及び第3畳み込み層12cを含む。
【0017】
畳み込みニューラルネットワークは、入力である数値を取り込み、入力数値に対して第1畳み込み層12aの畳み込み演算処理を行い、第1畳み込み層12の出力である第1数値を第1記憶装置14aに書き込む。
【0018】
続いて、畳み込みニューラルネットワークは、第1記憶装置14aより第1数値を読み出し、第1数値に対して第2畳み込み層12bの畳み込み演算処理を行い、第2畳み込み層12bの出力である第2数値を第2記憶装置14bに書き込む。
【0019】
続いて、畳み込みニューラルネットワークは、第2記憶装置14bより第2数値を読み出し、第2数値に対して第3畳み込み層12cの畳み込み演算処理を行い、第3畳み込み層12cの出力である第3数値を第3記憶装置14cに書き込む。
【0020】
この様にして、畳み込みニューラルネットワークは、順次、畳み込み層による畳み込み演算処理を行う。
【0021】
この方法では全ての畳み込み層の出力数値を格納可能とする記憶装置14a、14b、14cが必要となる。
【0022】
図2は、図1に示される畳み込みニューラルネットワークに於ける各畳み込み層を処理単位とするパイプライン処理の様子を模式的に示す。ここでは入力数値が画像であるとして説明する。また、画像は前処理を施されてから畳み込みニューラルネットワークに入力されることもある。前処理が施された結果も入力画像と称される。畳み込みニューラルネットワークは、畳み込み層の個数と同数の畳み込み演算処理機16a、16b、16cを含み、その各々が特定の畳み込み層12a、12b、12cの畳み込み演算処理を行う。
【0023】
第1の入力画像18aが入力されると、第1の畳み込み演算処理機16aは、第1の入力画像18aに対して第1畳み込み層12aの畳み込み演算処理を行い、その出力を第1記憶装置14aに書き込む。
【0024】
続いて、第2の入力画像18bが入力されると、第1の畳み込み演算処理機16aは、第2の入力画像18bに対して第1畳み込み層12aの畳み込み演算処理を行い、その出力を第1記憶装置14aに書き込む。それと同時に、第2の畳み込み演算処理機16bは、第1記憶装置14aから読み出した第1の入力画像18aに対する第1畳み込み層12aの畳み込み演算処理の出力に対して第2畳み込み層12bの畳み込み演算処理を行い、その出力を第2記憶装置14bに書き込む。
【0025】
続いて第3の入力画像18cが入力されると、第1の畳み込み演算処理機16aは、第3の入力画像18cに対して第1畳み込み層12aの畳み込み演算処理を行い、その出力を第1記憶装置14aに書き込む。それと同時に、第2の畳み込み演算処理機16bは第1記憶装置14aから読み出した第2の入力画像18bに対する第1畳み込み層12aの畳み込み演算処理の出力に対して第2畳み込み層12bの畳み込み演算処理を行い、その出力を第2記憶装置14bに書き込む。それと同時に、第3の畳み込み演算処理機16cは、第2記憶装置14bから読み出した第1の入力画像18aに対する第2畳み込み層12bの畳み込み演算処理の出力に対して第3畳み込み層12cの畳み込み演算処理を行い、その出力を第3記憶装置14cに書き込む。
【0026】
この様にして畳み込みニューラルネットワークは各畳み込み層の演算処理を並列に行うことで高速動作を実現する。
【0027】
この様な処理を可能とするためには、各記憶装置14a、14b、14cに対して特定の畳み込み層の畳み込み演算処理の出力を書き込むのと同時に、特定の畳み込み層の次の畳み込み層の畳み込み演算処理を行うために特定の畳み込み層の畳み込み演算処理の出力の読み出しを行う必要がある。すなわち、記憶装置14a、14b、14cの特定の番地に対する数値の書き込みないし読み出しと、他の特定の番地に対する数値の書き込みないし読み出しと、を同時に行うことが可能である必要がある。
【0028】
この様なことを可能とするためには各記憶装置は、畳み込み演算処理の出力の書き込まれる畳み込み層の出力数値の個数の二倍の個数の数値を格納可能として、それを交互に使う必要が有る。それ故、この方法では全畳み込み層の出力数値の個数の二倍の個数の数値を格納可能とする必要が有るので、多量のメモリーが必要となる。
【0029】
このことの対策として、各畳み込み層の出力の全てを格納するのではなく、各畳み込み層の畳み込み演算処理の入力の内でその畳み込み層の畳み込み演算処理の出力の1行分を算出するのに必要なだけの個数の数値を格納可能なメモリーを含む記憶装置を用いることも考えらえる。そのような記憶装置の使用方法の一例を模式的に図3に示す。
【0030】
ここで各畳み込み層の畳み込み演算処理に必要な数値は行、列、チャネルの3次元配列であるとし、図3に於いてチャネル方向は省略し、畳み込み演算処理結果の1行分の数値を格納することの可能なメモリーを1つの長方形で示してある。畳み込み演算処理のカーネルサイズは3、ストライドは1とする。また、パディングは行わないとする。畳み込み層の入力が画像である場合、入力は行、列、及びチャネルの三方向に三次元配列された数値であるとする。入力画像が複数の色成分、例えば、赤、緑、青の3色成分を含む場合、色成分が3チャネル方向に配列される。
【0031】
先ず、着目する畳み込み層の前の畳み込み層の畳み込み演算処理の出力の1行目の処理が行われる。そして、第一の畳み込み演算処理結果の数値が着目する畳み込み層用の記憶装置24の1行目のメモリー24-1に書き込まれる(図3の(1))。
【0032】
続いて、前の畳み込み層の畳み込み演算処理の出力の2行目の処理が行われる。そして、第二の畳み込み演算処理結果の数値が記憶装置24の2行目のメモリー24-2に書き込まれる(図3の(2))。
【0033】
続いて、前の畳み込み層の畳み込み演算処理の出力の3行目の処理が行われる。そして、第三の畳み込み演算処理結果の数値が記憶装置24の3行目のメモリー24-3に書き込まれる(図3の(c))。
【0034】
続いて、前の畳み込み層の畳み込み演算処理の出力の4行目の処理が行われる。そして、第四の畳み込み演算処理結果の数値が記憶装置24の4行目のメモリー24-4に書き込まれる。同時に記憶装置24の1行目のメモリー24-1、2行目のメモリー24-2、及び3行目のメモリー24-3から数値が読み出され、着目する畳み込み層の畳み込み演算処理の出力の1行目の処理が行われる。そして、第一の畳み込み演算処理結果の数値が着目する畳み込み層の次の畳み込み層用の記憶装置26の1行目のメモリー26-1に書き込まれる(図3の(4))。
【0035】
続いて、前の畳み込み層の畳み込み演算処理の出力の5行目の処理が行われる。そして、第五の畳み込み演算処理結果の数値が記憶装置24の1行目のメモリー24-1に書き込まれる。同時に記憶装置24の2行目のメモリー24-2、3行目のメモリー24-3、及び4行目のメモリー24-4から数値が読み出され、着目する畳み込み層の畳み込み演算処理の出力の2行目の処理が行われる。そして、第二の畳み込み演算処理結果の数値が記憶装置26の2行目のメモリー26-2に書き込まれる(図3の(5))。
【0036】
続いて、前の畳み込み層の畳み込み演算処理の出力の6行目の処理が行われ、畳み込み演算処理結果の数値が記憶装置24の2行目のメモリー24-2に書き込まれる。同時に記憶装置24の3行目のメモリー24-3、4行目のメモリー24-4、及び1行目のメモリー24-1から数値が読み出され、着目する畳み込み層の畳み込み演算処理の出力の3行目の処理が行われる。そして、第三の畳み込み演算処理結果の数値が記憶装置26の3行目のメモリー26-3に書き込まれる(図3の(6))。
【0037】
この様にして畳み込み演算処理が行われる。この方法では、各畳み込み層の出力数値の全てを格納する方法と比較すると、必要なメモリーは削減される。しかし、画像は縦よりも横の方が長いのが通常であり、メモリーの削減は不十分である。また、この方法ではレイテンシーも削減されるものの、その削減効果は不十分である。
【0038】
また、畳み込み演算処理に続いて最大値プーリング処理を行う場合に、プーリング処理に必要な数値の一部のみを格納することの可能な記憶装置のみを用いる方法も考えられている。
【0039】
(第1実施形態)
畳み込み演算処理装置の第1実施形態を説明する。第1実施形態として、撮像装置から送られた画像ないし、それに対して例えば大きさの変更等の前処理を施したものに対して、畳み込みニューラルネットワークの演算処理を行う畳み込み演算処理装置を説明する。この畳み込み演算処理装置の適用対象としては、例えば立入禁止箇所への人の立ち入りの監視カメラを挙げることができる。
【0040】
図4は第1実施形態の畳み込み演算処理装置の一例を模式的に示す。本実施形態の演算処理装置では、撮像装置42は被写体40を撮像し、画像を前処理演算処理装置44に送る。前処理演算処理装置44は受け取った画像に対し、例えば画像の大きさの変更等の前処理を施し、その処理結果を畳み込み演算処理装置46に送る。なお、前処理は画像の大きさの変更に限るものではなく、例えば画像に対する色の加工、ないし画像の特定の領域のみの抽出、等のことを行ってもよい。なお、特別な場合として。前処理演算処理装置44は前処理を行わずに撮像装置42から送られた画像をそのまま畳み込み演算処理装置46に送っても良いし、撮像装置42が画像を畳み込み演算処理装置46に直接に送っても良い。この場合は前処理が恒等写像であると考えることも可能である。
【0041】
畳み込み演算処理装置46は記憶装置48と畳み込み演算処理機50とを備える。畳み込み演算処理装置46は受け取った数値を記憶装置48に一旦格納する。畳み込み演算処理機50は記憶装置48から数値を読み出し、読み出した数値に対して所望の畳み込みニューラルネットワークの畳み込み演算処理を施し、その畳み込み演算処理結果52を図示しない出力装置へ送信する。出力装置の例は、ディスプレイである。しかし、ディスプレイの代わりに通信装置が畳み込み演算処理装置46に接続されてもよい。畳み込み演算処理装置46から出力された畳み込み演算処理結果52は通信装置により他の装置へ送信されてもよい。
【0042】
なお、数値とは単一の数値である必要はなく、複数の数値の組をも含めて本明細書に於いては数値と記す。また、ここに於いては畳み込み演算処理装置46に於いて記憶装置48と畳み込み演算処理機50とは各々一つのみ示してあるが、実際には上記の畳み込みニューラルネットワークを構成する畳み込み層の各々に対して記憶装置48と畳み込み演算処理機50が備えられ、各々の層の畳み込み演算処理機50は各々の記憶装置48から読み出した数値に対して所望の畳み込み層の畳み込み演算処理を行い、処理結果を次の層の記憶装置48に格納する。
【0043】
上記の畳み込みニューラルネットワークは所望の個数の畳み込み層に依り構成されているものとし、各々の畳み込み層の入力は三次元配列の数値であるとし、その各々の次元に相当する配列方向を以下では行ないし列ないしチャネルと呼ぶ。上記の撮像装置42の撮像した画像に於いては行と列とは縦と横とに、チャネルは赤、青、緑の色彩に各々対応する。行と列とは何れが縦で何れが横の場合も有り得るが、本明細書に於いては特に断らない限りは縦と横とのより短い方を行と呼び、他方を列と呼ぶ。
【0044】
この畳み込み演算処理装置46の特定の畳み込み層の畳み込み演算処理の方法を以下に説明する。前記記憶装置48は、特定の畳み込み層の入力の行の長さと、その畳み込み演算処理に用いる核の列方向の大きさと列方向のストライドとの和と、その畳み込み層の入力のチャネル数と、を各々の3方向の長さとする三次元配列の数値を格納可能である。なお、演算処理を行うチップ外のストレージ等に数値を格納する場合と演算処理を行うチップ内のメモリーに数値を格納する場合とを比較すると、後者に比べて前者は読み書きに必要な時間が長いので高速動作の観点から好ましくない。それ故、上記の記憶装置48には畳み込み演算処理機50を含むチップ内のメモリーが用いられる。その様にすると高速動作が可能となるという利点が得られる。
【0045】
畳み込み層の畳み込み演算処理は次の様にして行われる。図5は畳み込み演算処理装置に於ける記憶装置48の使用方法の一例を説明する模式図である。図5に於いてはその畳み込み層の入力の1行分の数値を格納することの可能なメモリーを1つの長方形で表してあり、チャネルの方向は省略してある。上記の記憶装置48にその畳み込み層の入力の内の特定の行の数値が書き込まれる。特定の行の数値は、その畳み込み演算処理に用いる核の列方向の大きさと列方向のストライドとの和の行の数値である。なお、ここでは畳み込み演算処理の核の列方向の大きさが3、列方向のストライドが1である場合を例に取って説明する。それ故、上記の記憶装置48は3+1=4行の数値を格納することが可能である。
【0046】
先ず、畳み込み演算処理の内で、その処理の結果の中の特定の行の算出に必要な行の数値が上記の記憶装置48に書き込まれる。ここでは、それらの数値は記憶装置48の1行目のメモリー48-1と2行目のメモリー48-2と3行目のメモリー48-3とに書き込まれたとする。ここで、三次元配列をなす数値の記憶装置48への格納に於いてはその行を指定する数値と列を指定する数値とチャネルを指定する数値との三つの数値の組で番地が指定される。本実施形態に於いてはそれらの三つの数値を番地数値と呼ぶ。
【0047】
特定の行の数値の記憶装置48への書き込みは、列を指定する番地数値とチャネルを指定する番地数値とが何れもその可動域の最小値である番地から始められる。
【0048】
列を指定する番地数値とチャネルを指定する番地数値は、以下の2つの制御態様のいずれかにより制御される。
【0049】
第一の制御態様では、新たに数値が書き込まれるたびに列を指定する番地数値が1増加される。もし、増加の結果としてそれが列を指定する番地数値の可動域の最大値を超えることが予期される場合、列を指定する番地数値は1増加されずにその可動域の最小値に戻されるとともに、チャネルを指定する番地数値が1増加される。もし、増加の結果としてそれがチャネルを指定する番地数値の可動域の最大値を超えることが予期される場合、チャネルを指定する番地数値は1増加されずにその可動域の最小値に戻される。これらの二つの番地数値が何れも各々の可動域の最小値である状態に戻るまで、上記操作が続けられる。
【0050】
第二の制御態様では、新たに数値が書き込まれるたびにチャネルを指定する番地数値が1増加される。もし、増加の結果としてそれがチャネルを指定する番地数値の可動域の最大値を超えることが予期される場合、チャネルを指定する番地数値は1増加されずにその可動域の最小値に戻されるとともに、列を指定する番地数値が1増加される。もし、増加の結果としてそれが列を指定する番地数値の可動域の最大値を超えることが予期される場合、列を指定する番地数値は1増加されずにその可動域の最小値に戻される。これらの二つの番地数値が何れも各々の可動域の最小値である状態に戻るまで、上記操作が続けられる。
【0051】
この様にして特定の行の数値の記憶装置48への書き込みは行われる。
【0052】
畳み込み演算処理機50は、記憶装置48の1行目のメモリー48-1と2行目のメモリー48-2と3行目のメモリー48-3から数値を読み出してその層の畳み込み演算処理の内で出力の特定の行の畳み込み演算処理を行う。その畳み込み層の畳み込み演算処理の出力の次の行の処理を行うためには、既に記憶装置48に書き込まれている上記の3行分の数値と別に、それに続いて列方向のストライド分の行の数値が必要となる。ここの説明に於いては列方向のストライドは1としているので別に1行分の数値が必要となる。それは記憶装置48の4行目のメモリー48-4に書き込まれるとする。
【0053】
それが書き込まれたら、畳み込み演算処理機50は、記憶装置48の2行目のメモリー48-2と3行目のメモリー48-3と4行目のメモリー48-4から数値を読み出してその層の畳み込み演算処理の内で出力の次の行の畳み込み演算処理を行う。初めに説明した出力の行の畳み込み演算処理が完了するのを待つのであれば、畳み込み演算処理機50は、上記した新たな1行の数値を記憶装置48の1行目のメモリー48-1に書き込んで、その書き込みが完了するのを待って記憶装置48の2行目のメモリー48-2と3行目のメモリー48-3と1行目のメモリー48-1から数値を読み出してその層の畳み込み演算処理の内で出力の次の行の畳み込み演算処理を行うことが可能である。
【0054】
しかしながら上に説明した様に、畳み込み演算処理機50は、上記した新たな1行の数値を記憶装置48の4行目のメモリー48-4に格納するのであれば、畳み込み演算処理機50は、記憶装置48に既に書き込まれている1行目のメモリー48-1と2行目のメモリー48-2と3行目のメモリー48-3との数値を読み出してその層の畳み込み演算処理の内で出力の特定の行の畳み込み演算処理を行うのと並行して、記憶装置48の4行目のメモリー48-4に新たな数値を書き込むことが可能であり(図5の(1))、高速動作の観点より好ましい。
【0055】
なお、この様に畳み込み演算処理機50が記憶装置48から数値を読み出して畳み込み演算処理を行うことと、記憶装置48の他の行に新たな数値を書き込むこととを同時に行うことが可能であるためには、記憶装置48の或る特定の番地に対する数値の書き込みないし読み出しと、他の特定の番地に対する数値の書き込みないし読み出しと、を同時に行うことが可能である必要が有る。
【0056】
そしてその様に同時に書き込みないし読み出しを行うことが可能であれば、すなわち上に説明した様に並列に処理を行うことが可能であれば、そして新たな行の書き込みを行を単位として行うのであれば、すなわち記憶装置48の内の特定の行の数値をその全ての列と全てのチャネルとに渡って書き込んでから、次の行の数値をその全ての列と全てのチャネルとに渡って書き込む様にすれば、相続く畳み込み層の畳み込み演算処理を並列に行うことが可能となり、その結果として高速動作が得られる。特に全ての畳み込み層に於いて入力となる三次元配列の数値に於いて悉く縦が横よりも短いないし悉く横が縦よりも短いと、特定の畳み込み層の畳み込み演算処理の結果を配列し直すことなく次の畳み込み層の畳み込み演算処理を行う畳み込み演算処理装置46の記憶装置48に上記の如く行を単位として書き込むことが可能となる。すなわち後者の入力は前者の出力となるので配列のし直しに伴う時間が不要となるために高速動作が可能となる。
【0057】
なお、畳み込みニューラルネットワークの最初の畳み込み層に於いては畳み込みニューラルネットワークの入力が畳み込み層の入力となるので、畳み込みニューラルネットワークの入力を配列し直すことなく畳み込み層のメモリーに書き込むことが可能であれば、すなわち畳み込みニューラルネットワークの入力そのものが畳み込み層の入力であれば、配列のし直しに伴う時間が不要となるために高速動作が可能となるので好ましい。
【0058】
この様な条件が満たされていれば、畳み込み演算処理機50は、上に記した記憶装置48の2行目のメモリー48-2と3行目のメモリー48-3と4行目のメモリー48-4から数値を読み出して畳み込み演算処理を行うことと並行して、記憶装置48の1行目のメモリー48-1に、その畳み込み層の入力の次の行の数値の書き込みを行うことができる(図5の(2))。さらに、畳み込み演算処理機50は、続いて記憶装置48の3行目のメモリー48-3と4行目のメモリー48-4と1行目のメモリー48-1から数値を読み出して畳み込み演算処理を行うことと並行して、記憶装置48の2行目のメモリー48-2にその畳み込み層の入力の次の行の数値の書き込みを行う(図5の(3))、という具合にして畳み込み演算処理を行っていくことが可能となる。
【0059】
なお、ここでは畳み込み演算処理の核の列方向の大きさが3、列方向のストライドが1である場合を例に取って説明したので、上記の記憶装置48は3+1=4行の数値を格納することが可能であるとした。一般に、核の列方向の大きさがm、列方向のストライドがn(m、nは何れも特定の正の整数)である場合には、その畳み込み層の入力を格納する記憶装置48としてはm+n行の数値を格納することが可能である必要がある。記憶装置48に格納されている数値のm行を用いてその畳み込み層の畳み込み演算処理の出力の内の特定の行の処理を行うのと並行して、入力の次のn行の数値を記憶装置48に書き込むこととなる。
【0060】
畳み込み演算処理の核の列方向の大きさが4、列方向のストライドが2である場合を例として図6に模式的に示す。この場合には記憶装置48は4+2=6行の数値を格納することが可能である。図6に於いてもその畳み込み層の入力の1行分の数値を格納することの可能な記憶装置48のメモリーを1つの長方形で表してあり、チャネルの方向は省略してある。
【0061】
先ず、畳み込み演算処理の内で、その処理の結果の特定の行の算出に必要な行の数値が上記の記憶装置48に書き込まれる。それらは1行目のメモリー48-1と2行目のメモリー48-2と3行目のメモリー48-3と4行目のメモリー48-4とに書き込まれたとする。畳み込み演算処理機50は、1行目のメモリー48-1と2行目のメモリー48-2と3行目のメモリー48-3と4行目のメモリー48-4から数値を読み出してその層の畳み込み演算処理の内で出力の特定の行の畳み込み演算処理を行なう。その層の畳み込み演算処理の出力の次の行の処理を行うためには、既に記憶装置48に書き込まれている上記の4行分の数値と別に、それに続いて列方向のストライド分の行の数値すなわち2行分の数値が必要となる。それらは記憶装置48の5行目のメモリー48-5と6行目のメモリー48-6とに書き込まれるとする(図6の(1))。
【0062】
それが書き込まれたら、畳み込み演算処理機50は、記憶装置48の3行目のメモリー48-3と4行目のメモリー48-4と5行目のメモリー48-5と6行目のメモリー48-6から数値を読み出してその層の畳み込み演算処理の内で出力の次の行の畳み込み演算処理を行う。さらに次の行の畳み込み演算処理を行う為には更に新たに2行分の数値が必要となる。それらは記憶装置48の1行目と2行目とに書き込まれるとする(図6の(2))。
【0063】
それが書き込まれたら、畳み込み演算処理機50は、記憶装置48の5行目のメモリー48-5と6行目のメモリー48-6と1行目のメモリー48-1と2行目のメモリー48-2から数値を読み出してその層の畳み込み演算処理の内で出力の更に次の行の畳み込み演算処理を行う(図6の(3))。この様にして畳み込み演算処理が行われる。
【0064】
通常は畳み込み演算処理の核の縦方向の大きさと横方向の大きさとは相等しく設定される。また、縦方向のストライドと横方向のストライドとも相等しく設定される。それ故、本実施形態の演算処理装置に於いては、特定の畳み込み層の入力の内でより長い方を行とした場合と比較して、必要なメモリーの量は、(その畳み込み層の入力の縦と横とのより短い方の長さ)/(その畳み込み層の入力の縦と横とのより長い方の長さ)に削減される。その結果として演算処理を行うチップ内のメモリーが削減されるので、畳み込み演算処理装置46の小型化が可能となり、その帰結として畳み込み演算処理装置46ないしそれを含む演算処理システムの製造費用の削減が図られるという利点が得られる。
【0065】
また、本実施形態の演算処理装置46に於いては、特定の畳み込み層の入力の記憶装置48への書き込みが開始されてからその畳み込み層の畳み込み演算処理の処理結果の出力が開始するまでの遅延時間が短縮されるという利点が得られる。それを、入力された数値の周囲に特定の幅の帯状にゼロを補うパディング処理が行われる場合をも含めて以下に説明する。ここでは補われる帯状のゼロの幅をパディングの大きさと呼ぶ。
【0066】
特定の畳み込み層の畳み込み演算処理の処理結果の出力の最初の行の畳み込み演算処理に於いては、その畳み込み層の入力の始めの、核の列方向の大きさからパディングの大きさを減じた値だけの行が有れば畳み込み演算処理を開始することが可能である。そして通常は畳み込み演算処理の核の縦方向の大きさと横方向の大きさとは相等しく設定される。また、パディングの縦方向の大きさと横方向の大きさとも相等しく設定される。それ故、本実施形態の演算処理装置に於いては、特定の畳み込み層の入力の内でより長い方を行とした場合と比較して、特定の畳み込み層の入力の記憶装置48への書き込みが開始されてからその畳み込み層の畳み込み演算処理の処理結果の出力が開始するまでの遅延時間は(その畳み込み層の入力の縦と横とのより短い方の長さ)/(その畳み込み層の入力の縦と横とのより長い方の長さ)に短縮されるという利点が得られる。特に、畳み込みニューラルネットワークの全畳み込み層に於いてその畳み込み層の入力の縦と横との短い方が相等しい場合、すなわち全畳み込み層に渡ってその畳み込み層の入力の横の方が縦よりも短い、ないし全畳み込み層に渡ってその畳み込み層の入力の縦の方が横よりも短い場合には、畳み込みニューラルネットワークの入力の記憶装置48への書き込みが開始されてからその畳み込みニューラルネットワークの処理結果の出力が開始するまでの遅延時間が短縮され、その結果として、畳み込みニューラルネットワークの入力の記憶装置48への書き込みが開始されてからその畳み込みニューラルネットワークの処理結果の出力が完了するまでの遅延時間、すなわちレイテンシーが短縮されるという利点が得られる。
【0067】
また、本実施形態に於いては、畳み込みニューラルネットワークの畳み込み層の処理に関してのみ説明したが、このことは畳み込みニューラルネットワークが畳み込み層のみに依り構成されていることを意味するものではなく、例えば全結合層ないし転置畳み込み層等の畳み込み層以外の層を含んでいても同様の効果が得られることは言うまでもない。また、畳み込み層の個数に関しては明記しなかったが、畳み込み層が何層有っても同様の効果が得られることは無論である。また、畳み込み演算処理に続いて例えば平均値プーリングないし最大値プーリング等のプーリング処理が行われたとしても同様の効果が得られることは言うまでもない。
【0068】
また、ここに於いては立入禁止箇所への人の立ち入りの監視カメラを例として説明したが、適用対象はこの例に限るものではなく、例えば畜産に於ける家畜の状況観察、栽培に於ける植物の状況観察、駅ないし地下街ないし商店街ないしイベント会場等に於ける人の流れの観察、道路に於ける混雑状況ないし渋滞状況の観察、等に適用しても同様の効果が得られることは無論である。また、取り込む情報は画像情報に限るものではなく、例えば工場等に於ける異音の検知、幹線道路ないし鉄道線路ないしその周辺等に於ける騒音の検知、気象観察に於ける気圧ないし温度ないし風速ないし風向の観測、等の画像以外の対象に適用しても同様の効果が得られることもまた言うまでもない。
【0069】
但し、畳み込みニューラルネットワークの入力が撮像装置42により撮像された画像、ないしそれに前処理を施したものである場合には、次に記す利点が得られる。図7の(1)に模式的に示す様に撮像装置42の撮像に於ける画像42aの掃引方向が畳み込みニューラルネットワークの入力の縦と横との長い方の方向であると、本実施形態の様に畳み込み演算処理装置46に於いて入力の縦と横との短い方を行として畳み込み演算処理を行うためには、撮像装置42が特定の画像42aの撮像を完了して初めて前処理ないし畳み込み演算処理を開始することが可能となる。
【0070】
それに対し図7の(2)に模式的に示す様に撮像装置42の撮像に於ける画像42bの掃引方向が畳み込みニューラルネットワークの入力の縦と横との短い方の方向であると、畳み込みニューラルネットワークの入力が撮像装置42の撮像した画像42bである場合には、畳み込み演算処理を開始するのに十分な数の行の撮像が完了すれば、本実施形態の様に畳み込み演算処理装置に於いて入力の縦と横との短い方を行として畳み込み演算処理を行うとしても、畳み込み演算処理を開始することが可能である。また、畳み込みニューラルネットワークの入力が撮像装置42の撮像した画像42bに前処理を施したものである場合には、前処理を開始するのに十分な数の行の撮像が完了すれば、本実施形態の様に畳み込み演算処理装置に於いて入力の縦と横との短い方を行として畳み込み演算処理を行うとしても、前処理を開始することが可能である。それ故、撮像装置42の撮像に於ける画像42bの掃引方向が畳み込みニューラルネットワークの入力の縦と横との短い方の方向であると、特定の画像の撮像を撮像装置42が開始してからその画像の畳み込み演算処理の処理結果が出力されるまでの遅延すなわちレイテンシーの短縮が図られるという利点が得られる。
【0071】
撮像装置42の撮像に於ける画像の掃引方向が畳み込みニューラルネットワークの入力の縦と横との長い方の方向である場合にも、畳み込み演算処理に於いて縦と横との長い方を上記に於ける行の様に考えて畳み込み演算処理を行うことは可能である。この様にすれば撮像装置42に依る特定の画像の撮像が完了する前に、前処理ないし畳み込み演算処理を開始することは可能である。しかし、その様にすると多くのメモリーが必要となり、本実施形態に於いて得られるところの必要なメモリーの削減という利点は失われる。すなわち、撮像装置42の撮像に於ける画像の掃引方向が畳み込みニューラルネットワークの入力の縦と横との短い方の方向であると、必要なメモリーの削減とレイテンシーの短縮との両者を同時に実現することが可能となるという利点が得られる。
【0072】
実施形態の畳み込み演算処理装置46は、畳み込み演算処理機50と記憶装置48とを備える。畳み込み演算処理機50は記憶装置48に格納されている数値に対して畳み込みニューラルネットワークに於ける特定の畳み込み層の畳み込み演算処理を行う。ここで、前記畳み込み層の入力の数値は行と列とチャネルとからなる三次元配列であり且つ行は列よりも短い。そして記憶装置48は前記行の長さと、前記畳み込み層の畳み込み演算処理の核の列方向の大きさと列方向のストライドとの和と、前記チャネルの長さと、の積の個数の数値を格納することが可能である。この演算処理装置46に於いては記憶装置48に格納する必要のある数値の個数が従来の方法と比較して削減されているので、従来と比較して記憶装置48に必要なメモリー量は小さくて済み、その結果として製造費用が削減されるという利点が得られる。また、この演算処理装置46に於いては従来と比較してレイテンシーが短縮されるという利点も得られる。更に、記憶装置48は、特定の番地に対する数値の書き込みないし読み出しと、他の特定の番地に対する数値の書き込みないし読み出しとを同時に行うことが可能とすると、記憶装置48より数値を読み出して特定の畳み込み層の畳み込み演算処理を行うことと、前記畳み込みニューラルネットワークに於ける前記畳み込み層の直前の畳み込み層の畳み込み演算処理を行ってその出力を記憶装置48に書き込むこととを同時に行うことが可能となる。それ故、前記畳み込みニューラルネットワークの複数の畳み込み層の処理を並列に行うことが可能となるために高速動作が実現されるという利点が得られる。
【0073】
(第2実施形態)
第2実施形態として、例えば撮像装置から送られた画像ないし、それに対して例えば大きさの変更等の前処理を施したものに対して、畳み込みニューラルネットワークの演算処理を分割して行う畳み込み演算処理システムを説明する。適用対象としては例えば立入禁止箇所への人の立ち入りを監視する監視カメラを挙げることができる。
【0074】
図8は、第2実施形態による演算処理システムの一例を説明する模式図である。本実施形態の演算処理システムでは、撮像装置42は被写体40を撮像し、画像を統合演算処理装置62に送る。統合演算処理装置62は受け取った画像に対し、例えば画像の大きさの変更等の前処理を施し、その処理結果を分割して処理部64に含まれる複数(ここでは、4個)の畳み込み演算処理装置64a、64b、64c、64dに送る。なお、前処理は画像の大きさの変更に限るものではなく、例えば画像に対する色の加工、ないし画像の特定の領域のみの抽出、等のことを行ってもよい。
【0075】
そして複数の畳み込み演算処理装置64a、64b、64c、64dは、それぞれ受け取った数値に対して所望の畳み込みニューラルネットワークの畳み込み演算処理を分割して施す。各々の畳み込み演算処理装置64a、64b、64c、64dは、処理の結果を統合演算処理装置62に渡す。統合演算処理装置62はそれらを統合して、統合結果を畳み込み演算処理結果66として例えばディスプレイ等の出力装置へ出力する。ここに於いて複数の畳み込み演算処理装置64a、64b、64c、64dの各々は第1実施形態に於いて説明した畳み込み演算処理装置46である。すなわち、図8に於いては省略しているが、各々の畳み込み演算処理装置64a、64b、64c、64dは第1実施形態に於ける畳み込み演算処理装置46と同様に記憶装置と畳み込み演算処理機とを備える。
【0076】
分割に関して説明する。図9は畳み込みニューラルネットワークの出力72の分割の一例を説明する模式図である。なお、チャネル方向は紙面に垂直であり、その方向は図9に於いては省略されている。出力72が畳み込み演算処理装置64a、64b、64c、64dの個数と等しい4つの切片72a、72b、72c、72dに分割される。図9の上下方向にも左右方向にも出力72は二等分されているとする。4つの切片72a、72b、72c、72dは、畳み込みニューラルネットワークの入力の内でチャネル方向に沿う方向の全ての数値を含む。これらの出力の切片72a、72b、72c、72dの各々に対して、それを算出するための畳み込み演算処理を各々の畳み込み演算処理装置64a、64b、64、64dが行う。
【0077】
これらの出力の切片72a、72b、72c、72dの各々の算出に必要な畳み込みニューラルネットワークの入力74の分割の一例を模式的に図10に示す。図10の破線は上下方向にも左右方向にも入力74を二等分する。なお、チャネル方向は紙面に垂直であり、その方向は図10に於いては省略されている。一般に畳み込み演算処理を行うと複数の行ないし列の数値より一つの数値が算出されるので、図9に模式的に示した出力の分割の切片72a、72b、72c、72dの各々の算出に必要な入力の分割の切片74a、74b、74c、74dは相互に重なりを持つ。
【0078】
図10の(1)は、出力の切片72aの算出に必要な入力の切片74a示す。図10の(2)は、出力の切片72bの算出に必要な入力の切片74bを示す。図10の(3)は、出力の切片72cの算出に必要な入力の切片74cを示す。図10の(4)は、出力の切片72dの算出に必要な入力の切片74dを示す。
【0079】
図10の(5)は、入力の切片74a、74b、74c、74dの相互の関係の一例を示す。
【0080】
なお、出力の切片72aの算出に必要な入力の切片74aを表す実線の長方形の上の辺と、出力の切片72bの算出に必要な入力の切片74bを表す破線の長方形の上の辺と、ニューラルネットワークの入力74を表す長方形の上の辺と、は実際には重なるが、図10の(5)に於いては、見やすくするために、ニューラルネットワークの入力74を表す長方形を少し大きく描くとともに、入力の切片74bを表す長方形を入力の切片74aを表す長方形より大きく描いて、それらの辺が重ならない様に示してある。
【0081】
出力の切片72cの算出に必要な入力の切片74cを表す破線の長方形の下の辺と、出力の切片72dの算出に必要な入力の切片74dを表す実線の長方形の下の辺と、ニューラルネットワークの入力74を表す長方形の下の辺と、は実際には重なるが、図10の(5)に於いては、見やすくするために、ニューラルネットワークの入力74を表す長方形を少し大きく描くとともに、入力の切片74cを表す長方形を入力の切片74dを表す長方形より大きく描いて、それらの辺が重ならない様に示してある。
【0082】
出力の切片72aの算出に必要な入力の切片74aを表す長方形の左の辺と、出力の切片72cの算出に必要な入力の切片74cを表す長方形の左の辺と、ニューラルネットワークの入力74を表す長方形の左の辺と、は実際には重なるが、図10の(5)に於いては、見やすくするために、ニューラルネットワークの入力74を表す長方形を少し大きく描くとともに、入力の切片74cを表す長方形を入力の切片74aを表す長方形より大きく描いて、それらの辺が重ならない様に示してある。
【0083】
出力の切片72bの算出に必要な入力の切片74bを表す長方形の右の辺と、出力の切片72dの算出に必要な入力の切片74dを表す長方形の右の辺と、ニューラルネットワークの入力74を表す長方形の右の辺と、は実際には重なるが、図10の(5)に於いては、見やすくするために、ニューラルネットワークの入力74を表す長方形を少し大きく描くとともに、入力の切片74bを表す長方形を入力の切片74dを表す長方形より大きく描いて、それらの辺が重ならない様に示してある。
【0084】
本実施形態の畳み込み演算処理システムに於いては、第1実施形態の畳み込み演算処理装置46と同じ畳み込み演算処理装置64a、64b、64c、64dを用いて畳み込み演算処理が行われるので、第1実施形態の畳み込み演算処理装置46に於いて得られるのと同様に、演算処理を行うチップ内のメモリーが削減されるために、畳み込み演算処理装置64a、64b、64c、64dの小型化が可能となり、その帰結として畳み込み演算処理装置64a、64b、64c、64dないしそれを含む演算処理システムの製造費用の削減が図られるという利点が得られる。そして、第1実施形態の畳み込み演算処理装置に於いて得られるのと同様に、特定の畳み込み層の入力の記憶装置への書き込みが開始されてからその畳み込み層の畳み込み演算処理の処理結果の出力が開始するまでの遅延時間が短縮されるという利点が得られる。特に、全畳み込み層に渡って特定の畳み込み演算処理装置が畳み込み演算処理を行う畳み込み層の入力の縦と横との短い方が相等しい場合、すなわち全畳み込み層に渡ってその畳み込み層の入力の横の方が縦よりも短い、ないし全畳み込み層に渡ってその畳み込み層の入力の縦の方が横よりも短い場合には、畳み込みニューラルネットワークの入力の記憶装置への書き込みが開始されてからその畳み込みニューラルネットワークの処理結果の出力が開始するまでの遅延時間が短縮され、その結果として、畳み込みニューラルネットワークの入力の記憶装置への書き込みが開始されてからその畳み込みニューラルネットワークの処理結果の出力が完了するまでの遅延時間、すなわちレイテンシーが短縮されるという利点が得られる。
【0085】
なお、これらの利点が得られるためには、全ての切片に渡って入力の横の方が縦よりも短い、ないし全ての切片に渡って入力の縦の方が横よりも短いという必要はない。切片の入力の縦と横との長短が切片ごとに異なっていてもよい。その場合にも各々の切片に於いて入力の縦と横との短い方を行と考えることで、畳み込み演算処理装置64a、64b、64c、64dとして第1実施形態の畳み込み演算処理装置46を適用することが可能となるので、同様の効果が得られる。
【0086】
また、全ての畳み込み演算処理装置64a、64b、64c、64dが第1実施形態の畳み込み演算処理装置46ではなくとも、少なくとも一つの畳み込み演算処理装置64a、64b、64c、64dが第1実施形態の畳み込み演算処理装置46であれば同様の効果が得られることは無論である。但し、全ての畳み込み演算処理装置64a、64b、64c、64dが第1実施形態の畳み込み演算処理装置46であれば得られる効果が最も大きくなるので好ましい。
【0087】
また、本実施形態に於いては畳み込みニューラルネットワークの入力は縦方向と横方向との何れの方向にも2分割、合計で4分割されているとしたが、このことは本質ではない。分割数は4に限るものではなく、また縦方向と横方向とで格子状に分割されている必要はない。また、各々の切片が相等しい形である必要はない。他の分割方法であっても同様の効果が得られることは無論である。
【0088】
特に、畳み込みニューラルネットワークの入力の横方向の長さよりも縦方向の長さが短い場合に、縦方向に沿って畳み込みニューラルネットワークの出力を分割する場合を考える。その分割を模式的に図11に示す。なお、チャネル方向は紙面に垂直であり、その方向は図に於いては省略されている。この場合には各々の切片76a、76b、76c、76dは畳み込みニューラルネットワークの出力の内で横方向に沿う方向の全ての数値を含み、且つ畳み込みニューラルネットワークの出力の内でチャネル方向に沿う方向の全ての数値を含む。図11の上下方向に出力76は四等分されている。
【0089】
これらの出力の切片76a、76b、76c、76dの各々の算出に必要な畳み込みニューラルネットワークの入力78の分割を模式的に図12に示す。図12の破線は、入力78を上下方向に四等分する境界線である。なお、チャネル方向は紙面に垂直であり、その方向は図12に於いては省略されている。一般に畳み込み演算処理を行うと複数の行ないし列の数値より一つの数値が算出されるので、図11に模式的に示した出力の分割の切片76a、76b、76c、76dの各々の算出に必要な入力の分割の切片78a、78b、78c、78dは相互に重なりを持つ。
【0090】
図12の(1)は、出力の切片76aの算出に必要な入力の切片78aを示す。図12の(2)は、出力の切片76bの算出に必要な入力の切片78bを示す。図12の(3)は、出力の切片76cの算出に必要な入力の切片78cを示す。図12の(4)は、出力の切片76dの算出に必要な入力の切片78dを示す。図12の(5)は、入力の切片78a、78b、78c、78dの相互の関係の一例を示す。
【0091】
なお、入力の切片78aを表す長方形の上の辺と、ニューラルネットワークの入力78を表す長方形の上の辺と、は実際には重なり、入力の切片78dを表す長方形の下の辺と、ニューラルネットワークの入力78を表す長方形の下の辺と、は実際には重なり、入力の切片78a、78b、78c、78dをそれぞれ表す4つの長方形の右の辺と、ニューラルネットワークの入力78を表す長方形の右の辺と、は実際には重なり、入力の切片78a、78b、78c、78dをそれぞれ表す4つの長方形の左の辺と、ニューラルネットワークの入力78を表す長方形の左の辺と、は実際には重なるが、図12の(1)から図12の(5)に於いては、見やすくするために、ニューラルネットワークの入力78を表す長方形を少し大きく描くことで、畳み込みニューラルネットワークの入力78を表す長方形の辺と、入力の切片78a、78b、78c、78dをそれぞれ表す4つの長方形の辺と、が重ならない様に示してある。
【0092】
図12の(5)に於いては、入力の切片78aを表す実線の長方形の右の辺と左の辺と、入力の切片78bを表す破線の長方形の右の辺と左の辺と、は同じ位置であるが、見やすくするために、入力の切片78bを表す長方形を入力の切片78aを表す長方形より大きく描いて、それらの辺が同じ位置にならない様に示している。また、入力の切片78cを表す実線の長方形の右の辺と左の辺と、入力の切片78dを表す破線の長方形の右の辺と左の辺と、は同じ位置であるが、見やすくするために、入力の切片78dを表す長方形を入力の切片78cを表す長方形より大きく描いて、それらの辺が同じ位置にならない様に示している。
【0093】
第1実施形態に於いて説明した様に、各々の畳み込み演算処理装置64a、64b、64c、64dの入力の縦と横との長い方の短い方に対する比が大きいほど、演算処理を行うチップ内のメモリーの削減に於いても、レイテンシーの短縮に於いても、得られる利点は大きい。それ故、この様に畳み込みニューラルネットワークの入力の横方向と縦方向との短い方に沿って畳み込みニューラルネットワークの出力を分割する場合には極めて大きな利点が得られるので好ましい。
【0094】
畳み込みニューラルネットワークの分割の他の例を説明する。
【0095】
図13(1)と図13の(2)は、畳み込みニューラルネットワークの出力を、全てが相等しい形ではない異なる形の切片に分割する例を示す。図13の(1)と図13の(2)に於いても、チャネル方向は紙面に垂直であり、その方向は省略されている。全ての切片は、畳み込みニューラルネットワークの入力の内でチャネル方向に沿う方向の全ての数値を含む。
【0096】
図13の(1)は、出力82を、形は異なるが、いずれも縦の方が横よりも短い形の5つの切片82a、82b、82c、82d、82eに分割する例を示す。
【0097】
出力82が横方向において2分割され(2等分に限らず)される。左側の分割領域が縦方向において2分割され(2等分に限らず)、2つの切片82a、82bが得られる。右側の分割領域が縦方向において3分割され(3等分に限らず)、3つの切片82c、82d、82eが得られる。
【0098】
図13の(2)は、出力84を、形は異なり、縦の方が横よりも短い形と横の方が縦よりも短い形を含む8つの切片84a、84b、84c、84d、84e、84f、84g、84hに分割する例を示す。
【0099】
出力84が縦方向において3分割され(3等分に限らず)される。一番上の分割領域が切片84eとされ、一番下の分割領域が切片84gとされる。切片84eと切片84gは、縦の方が横よりも短い形である。切片84eと切片84gは、畳み込みニューラルネットワークの入力の内で横方向に沿う方向の全ての数値を含む。
【0100】
中央の分割領域が横方向に3分割され(3等分に限らず)される。一番右の分割領域が切片84fとされ、一番左の分割領域が切片84hとされる。切片84fと切片84hは、横の方が縦よりも短い形である。中央の分割領域が格子状に分割され、切片84a、84b、84c、84dが得られる。切片84a、84b、84c、84dは、縦の方が横よりも短い形である。
【0101】
図示しないが、図10図12に示されるように、出力の各切片の各々の算出に必要な入力の切片は出力の切片より大きい長方形により表される。
【0102】
また、本実施形態の畳み込み演算処理システムの様に複数の畳み込み演算処理装置64a、64b、64c、64dを用いて、分割して処理を行うと各々の畳み込み演算処理装置64a、64b、64c、64dには行えないほどの多数の処理を並列で行うことが可能となるので、単一の畳み込み演算処理装置で処理を行う場合に比べて高速の動作が可能となるという利点が得られる。すなわち、各々の畳み込み演算処理装置64a、64b、64c、64dが高い処理能力を持つとは限らない場合にも高速の動作が可能となるという利点が得られる。また、動作振動数と動作電圧とを下げることに依り、同一の処理速度で比較すると消費されるエネルギーが低減されるという利点が得られる。
【0103】
また、本実施形態に於いては統合演算処理装置62が画像に対して前処理を行った上で、各々の畳み込み演算処理装置64a、64b、64c、64dにその画像を送るとしたが、統合演算処理装置62はニューラルネットワークの入力を分割するのみで前処理は行わずに各々の畳み込み演算処理装置64a、64b、64c、64dに画像を送り、各々の畳み込み演算処理装置が前処理を行った上で畳み込み演算処理を行うとしても同様の効果が得られることは言うまでもない。また、統合演算処理装置62はニューラルネットワークの入力を分割するのみで前処理は行わずに各々の畳み込み演算処理装置64a、64b、64c、64dに画像を送り、各々の畳み込み演算処理装置は受け取った画像を表す数値に直接に畳み込み演算処理を行うとしても同様の効果が得られることは言うまでもない。
【0104】
また、ここに於いては立入禁止箇所への人の立ち入りの監視カメラを例として説明したが、適用対象はこの例に限るものではなく、例えば畜産に於ける家畜の状況観察、栽培に於ける植物の状況観察、駅ないし地下街ないし商店街ないしイベント会場等に於ける人の流れの観察、道路に於ける混雑状況ないし渋滞状況の観察、等に適用しても同様の効果が得られることは無論である。また、取り込む情報は画像情報に限るものではなく、例えば工場等に於ける異音の検知、幹線道路ないし鉄道線路ないしその周辺等に於ける騒音の検知、気象観察に於ける気圧ないし温度ないし風速ないし風向の観測、等の画像以外の対象に適用しても同様の効果が得られることもまた言うまでもない。
【0105】
但し、畳み込みニューラルネットワークの入力が撮像装置42により撮像された画像、ないしそれに前処理を施したものであり、且つ複数の畳み込み演算処理装置64a、64b、64c、64dの入力の縦と横との短い方の方向が全て相等しい場合には、次に記す利点が得られる。図7の(1)に第1実施形態の変形例に関して模式的に示した様に撮像装置42の撮像に於ける画像42aの掃引方向が複数の畳み込み演算処理装置64a、64b、64c、64dの入力の縦と横との長い方の方向であると、本実施形態の様に畳み込み演算処理装置64a、64b、64c、64dに於いて入力の縦と横との短い方を行として畳み込み演算処理を行うためには、撮像装置42が特定の画像42aの撮像を完了して初めて前処理ないし畳み込み演算処理を開始することが可能となる。それに対し図7の(2)に第1実施形態の変形例に関して模式的に示した様に撮像装置42の撮像に於ける画像42bの掃引方向が複数の畳み込み演算処理装置64a、64b、64c、64dの入力の縦と横との短い方の方向であると、畳み込みニューラルネットワークの入力が撮像装置42の撮像した画像42bである場合には畳み込み演算処理を開始するのに十分な数の行の撮像が完了すれば、また畳み込みニューラルネットワークの入力が撮像装置42の撮像した画像42bに前処理を施したものである場合には前処理を開始するのに十分な数の行の撮像が完了すれば、本実施形態の様に畳み込み演算処理装置64a、64b、64c、64dに於いて入力の縦と横との短い方を行として畳み込み演算処理を行うとしても、各々の場合に畳み込み演算処理ないし前処理を開始することが可能である。それ故、撮像装置42の撮像に於ける画像の掃引方向が複数の畳み込み演算処理装置64a、64b、64c、64dの入力の縦と横との短い方の方向であると、特定の画像の撮像を撮像装置42が開始してからその画像の畳み込み演算処理の処理結果が出力されるまでの遅延すなわちレイテンシーの短縮が図られるという利点が得られる。撮像装置42の撮像に於ける画像の掃引方向が複数の畳み込み演算処理装置64a、64b、64c、64dの入力の縦と横との長い方の方向である場合にも、畳み込み演算処理に於いて縦と横との長い方を上記に於ける行の様に考えて畳み込み演算処理を行うことは可能であり、この様にすれば撮像装置42に依る特定の画像の撮像が完了する前に、前処理ないし畳み込み演算処理を開始することは可能であるが、その様にすると多くのメモリーが必要となり、本実施形態に於いて得られるところの必要なメモリーの削減という利点は失われる。すなわち、複数の畳み込み演算処理装置64a、64b、64c、64dの入力の縦と横との短い方の方向が全て相等しく、且つ撮像装置42の撮像に於ける画像の掃引方向が複数の畳み込み演算処理装置64a、64b、64c、64dの入力の縦と横との短い方の方向であると、必要なメモリーの削減とレイテンシーの短縮との両者を同時に実現することが可能となるという利点が得られる。
【0106】
第2実施形態の畳み込み演算処理システムは、複数の畳み込み演算処理装置64a、64b、64c、64dを含む。畳み込みニューラルネットワークの出力が畳み込み演算処理装置64a、64b、64c、64dの個数と同数に分割され、前記畳み込みニューラルネットワークの入力の内で前記畳み込みニューラルネットワークの出力の各々の算出に必要な数値が複数の畳み込み演算処理装置64a、64b、64c、64dの各々の入力となる。この演算処理システムに於いては前記畳み込みニューラルネットワークが複数の畳み込み演算処理装置64a、64b、64c、64dに分割して処理されるので、個々の畳み込み演算処理装置64a、64b、64c、64dの負荷は少なくて済み、且つ処理の並列度は高まる。それ故、高い処理能力を持つとは限らない畳み込み演算処理装置64a、64b、64c、64dであっても大規模な畳み込みニューラルネットワークの処理を高速に行うことが可能となるという利点が得られる。そして、複数の畳み込み演算処理装置64a、64b、64c、64dの各々は第1実施形態の条件を満たす。それ故、必要なメモリーとレイテンシーとの削減が図られるという利点が得られる。
【0107】
また、第2実施形態の変形例の畳み込み演算処理システムは、撮像装置42と複数の畳み込み演算処理装置64a、64b、64c、64dとを含む。撮像装置42に依り取得された画像は、前処理を施された後に畳み込み演算処理装置64a、64b、64c、64dに入力され、畳み込み演算処理が行われる。ないしは、撮像装置42に依り取得された画像は、畳み込み演算処理装置64a、64b、64c、64dに取り込まれ、前処理を施された後に畳み込み演算処理が行われる。畳み込み演算処理装置64a、64b、64c、64dの各々は第1実施形態の条件を満たす。それ故、必要なメモリーは削減されるという利点が得られる。また、全ての畳み込み演算処理装置64a、64b、64c、64dに於ける前記行の方向は相等しい。撮像装置42に依る撮像に於いては、畳み込み演算処理装置64a、64b、64c、64dの前記行に相当する方向に掃引が行われる。この演算処理システムに於いては撮像装置42に依る各々の画像の撮像の完了を待たずに前処理ないし畳み込み演算処理を開始することが可能になり、その結果として撮像から畳み込み演算処理の結果が得られるまでの遅延すなわちレイテンシーの短縮が図られるという利点が得られる。
【0108】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0109】
12a 第1畳み込み層
12b 第2畳み込み層
12c 第3畳み込み層
14a 記憶装置
14b 記憶装置
14c 記憶装置
16a 第1の畳み込み演算処理機
16b 第2の畳み込み演算処理機
16c 第3の畳み込み演算処理機
18a 第1の入力画像
18b 第2の入力画像
18c 第3の入力画像
24 記憶装置
26 記憶装置
42 撮像装置
44 前処理演算処理装置
46 畳み込み演算処理装置
48 記憶装置
50 畳み込み演算処理機
52 畳み込み演算処理結果
62 統合演算処理装置
64 処理部
64a 畳み込み演算処理装置
64b 畳み込み演算処理装置
64c 畳み込み演算処理装置
64d 畳み込み演算処理装置
66 畳み込み演算処理結果
72 畳み込みニューラルネットワークの出力
74 畳み込みニューラルネットワークの入力
74a 切片72aの算出に必要な入力の切片
74b 切片72bの算出に必要な入力の切片
74c 切片72cの算出に必要な入力の切片
74d 切片72dの算出に必要な入力の切片
76 畳み込みニューラルネットワークの出力
78 畳み込みニューラルネットワークの入力
78a 切片76aの算出に必要な入力の切片
78b 切片76bの算出に必要な入力の切片
78c 切片76cの算出に必要な入力の切片
78d 切片76dの算出に必要な入力の切片
82 畳み込みニューラルネットワークの出力
84 畳み込みニューラルネットワークの出力
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13