JP2024004400A - データ処理装置及びその方法 - Google Patents

データ処理装置及びその方法 Download PDF

Info

Publication number
JP2024004400A
JP2024004400A JP2022104051A JP2022104051A JP2024004400A JP 2024004400 A JP2024004400 A JP 2024004400A JP 2022104051 A JP2022104051 A JP 2022104051A JP 2022104051 A JP2022104051 A JP 2022104051A JP 2024004400 A JP2024004400 A JP 2024004400A
Authority
JP
Japan
Prior art keywords
filter
data
processing
data processing
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022104051A
Other languages
English (en)
Inventor
ソクイ チン
Tsewei Chen
政美 加藤
Masami Kato
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2022104051A priority Critical patent/JP2024004400A/ja
Publication of JP2024004400A publication Critical patent/JP2024004400A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】 参照するデータの範囲を拡大してフィルタ処理を行うケースにおいて、該フィルタ処理で用いるフィルタ係数の転送量を削減するための技術を提供すること。【解決手段】 転送されたフィルタのフィルタ係数を保持し、該保持されたフィルタ係数を順に読み出して、前記転送されたフィルタのサイズを拡大した拡大フィルタを生成し、該拡大フィルタにおけるフィルタ係数を用いて畳み込み演算を行う。【選択図】 図4

Description

本発明は、データに対してフィルタによる処理を実行するデータ処理装置及びその方法に関するものである。
近年、深層学習の進歩により、画像認識の精度が上がっている。畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)は、深層学習に用いられる手法として知られている。
CNNでは、複数のレイヤが階層的に接続されており、各レイヤの中には複数枚の特徴画像がある。図2に、レイヤ数が「4」で、各レイヤの中に特徴画像が4枚あるCNNのネットワーク構成の一例を示す。CNNでは、特徴画像の画素(特徴データ)に対して、学習したフィルタ係数(重み係数)を用いてフィルタ処理の結果を計算する。フィルタ処理は積和演算であり、複数の乗算と累積加算を含んでいる。図2の矢印は積和演算を意味する。
現レイヤの中の特徴画像は前レイヤの中の特徴画像と前レイヤに対応するフィルタ係数を用いて計算する。現レイヤの中の1枚の特徴画像を計算するためには、前レイヤの中の複数枚の特徴画像の情報が必要である。現レイヤの中の特徴画像を求めるための積和演算は以下の式(1)に従って行われる。
Figure 2024004400000002
ここで、nは現レイヤ中の特徴画像のインデックスであり、m(m=1~M)は前レイヤ中の特徴画像のインデックスである。Oi,j(n)は、現レイヤにおけるインデックス=nの特徴画像中の位置(i,j)における特徴データ(積和演算結果)を示す。Ii,j(m)は、前レイヤにおけるインデックス=mの特徴画像中の位置(i,j)における特徴データを示す。Cx,y(m,n)は、現レイヤにおけるインデックス=nの特徴画像と前レイヤにおけるインデックス=mの特徴画像中の位置(x、y)の特徴データとの間のフィルタ係数を示す。式(1)では、フィルタ係数(C0,0(m,n)~CX-1,Y-1(m,n))は(X×Y)個あり、特徴画像によって異なる。X,Yは参照範囲を示す変数である。現レイヤの特徴データを計算するための積和演算回数は(M×X×Y)回である。
フィルタ処理をした後に、ネットワーク構造に基づき、積和演算結果Oi,j(n)を用いてバッチノーマライゼーションや活性化処理やプーリング等の処理を行い、現レイヤの特徴画像を計算する。
CNNは画像分割にも適用されている。非特許文献1に記載の拡張畳み込み処理(Dilated Convolution)は、画像分割の精度を向上させるための技術である。拡張畳み込み処理を行う場合、積和演算は以下の式(2)に従って行われる。
Figure 2024004400000003
ここで、変数Dは拡張畳み込み処理の倍率である。変数Dが1の場合、式(2)は式(1)と同じ式になる。変数Dの値が大きいほど、前レイヤの特徴画像における参照範囲が広い。拡張した後に、参照範囲は(X×Y)から〔D×(X-1)+1〕×〔D×(Y-1)+1〕になる。この演算では、フィルタ係数を飛ばさずに処理するが、特徴画像の特徴データを(D-1)個おきに処理するため、水平方向または垂直方向の特徴データを飛ばしながら参照する。
CNNは積和演算の回数が多いため、携帯端末や車載機器等の組み込みシステムに適用する場合、特徴データとフィルタ係数の転送量を削減し、積和演算を効率的に行い、全体的な処理時間を短縮しなければならない。特許文献1では、複数の特徴データを並列に処理する構成が提案されている。
特開2018-67154号公報
Y. Wei, et al.,"Revisiting Dilated Convolution: A Simple Approach for Weakly- and Semi-Supervised Semantic Segmentation," IEEE/CVF Conference on Computer Vision and Pattern Recognition, 2018.
特許文献1に記載の手法では、複数の異なる特徴データと共通のフィルタ係数を用いて出力データを並列に計算する。しがしながら、非特許文献1に記載の拡張畳み込み処理(Dilated Convolution)のような処理をする場合、前レイヤにおける特徴画像の特徴データを飛ばしながら参照することができない。特徴データを保持するためのレジスタを飛ばし先の特徴データを保持するためのレジスタと繋げる必要があるため、制御と配線が複雑になる。また、拡張畳み込み処理のためにフィルタサイズを大きくし、フィルタを拡張する場合、フィルタ係数の転送量が大きくなるという課題がある。
本発明では、参照するデータの範囲を拡大してフィルタ処理を行うケースにおいて、該フィルタ処理で用いるフィルタ係数の転送量を削減するための技術を提供する。
本発明の一様態によれば、データ処理装置に、転送されたフィルタのフィルタ係数を保持する保持手段と、前記保持手段に保持されたフィルタ係数を順に読み出して、前記転送されたフィルタのサイズを拡大した拡大フィルタを生成する生成手段と、前記拡大フィルタにおけるフィルタ係数を用いて畳み込み処理を行う演算手段とを備えることを特徴とする。
本発明によれば、参照するデータの範囲を拡大してフィルタ処理を行うケースにおいて、該フィルタ処理で用いるフィルタ係数の転送量を削減することができる。
データ処理装置によるフィルタ処理のフローチャート。 階層型ニューラルネットワーク(CNN)の構成例を示す図。 データ処理装置のハードウェア構成例を示すブロック図。 処理部305の構成例を示すブロック図。 拡張フィルタにおける有効係数と処理時間の例を示す図。 拡張前後のフィルタの例を示す図。 処理部305の構成例を示すブロック図。 階層型ニューラルネットワークにおける畳み込み処理の一例を示す図。 ステップS108における処理の詳細を示すフローチャート。 拡張前のフィルタのサイズが3×3で、拡張畳み込み処理の倍率D=2の例を示す図。 特徴データ保持部402、フィルタ係数保持部404、畳み込み演算部406の詳細な構成例を示すブロック図。 畳み込み演算部406の構成例を示す図。 拡張フィルタにおける有効係数と処理時間の例を示す図。 特徴データ保持部402、フィルタ係数保持部404、畳み込み演算部406の詳細な構成例を示すブロック図。
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
[第1の実施形態]
まず、複数のデータに対してフィルタ処理を行うフィルタ処理装置として機能するデータ処理装置のハードウェア構成例について、図3のブロック図を用いて説明する。このようなデータ処理装置には、PC(パーソナルコンピュータ)、スマートフォン、タブレット端末装置、などのコンピュータ装置を適用することができる。
入力部301は、キーボード、マウス、タッチパネル画面などのユーザインターフェースであり、ユーザが操作することで各種の指示をCPU306に対して入力することができる。
保存部302は、各種のコンピュータプログラムやデータを保存するためのメモリ装置である。保存部302には、例えば、ハードディスク、フレキシブルディスク、CD-ROM、CD-RやDVD、メモリーカード、CFカード、スマートメディア、SDカード、メモリスティック、xDピクチャーカード、USBメモリを適用することができる。保存部302に保存されているコンピュータプログラムには、データ処理装置が行うものとして後述する各処理をCPU306や処理部305に実行もしくは制御させるためのコンピュータプログラムが含まれている。
通信部303は、外部の装置との間のデータ通信を行う。例えば通信部303は、保存部302に保存されているものとして後述する各種の情報を外部の装置から受信して該保存部302に保存してもよい。
表示部304は、液晶画面やタッチパネル画面を有する表示装置であり、CPU306や処理部305による処理結果を画像や文字などでもって表示することができる。なお、表示部304はデータ処理装置が有することに限らず、データ処理装置の外部装置としてもよく、その場合は、表示部304は、有線もしくは無線の通信を介してデータ処理装置と通信可能に該データ処理装置に接続される。また、入力部301と表示部304と一体化させてタッチパネル画面を構成してもよい。
処理部305は、CPU306による制御に従って、RAM308に格納されているデータに対してフィルタ係数を用いた積和演算を行うことで該データに対するフィルタ処理を行う。そして処理部305は、フィルタ処理を行ったデータ(フィルタ処理結果)をRAM308、保存部302などのメモリ装置に格納する。
CPU306は、RAM308やROM307に格納されているコンピュータプログラムやデータを用いて各種の処理を実行する。これによりCPU306は、データ処理装置全体の動作制御を行うとともに、データ処理装置が行うものとして後述する各処理を実行もしくは制御する。なお、図3では、CPU306の個数を1としているが、CPU306の個数は2以上であってもよい。
ROM307には、データ処理装置の起動プログラムや設定データなど、書き換え不要の情報が格納されている。RAM308は、ROM307や保存部302からロードされたコンピュータプログラムやデータ、通信部303が外部の装置から受信したデータ、処理部305から出力されたフィルタ処理結果、を格納するためのエリアを有する。さらにRAM308は、CPU306や処理部305が各種の処理を実行する際に用いるワークエリアを有する。このようにRAM308は、各種のエリアを適宜提供することができる。なお、RAM308における一部のエリアを保存部302として利用しても良い。
また、データ処理装置が外部の装置からコンピュータプログラムを通信部303を介して受信する場合、該コンピュータプログラムを一旦保存部302に保存した後でRAM308に読み込むもしくは通信部303から直接RAM308に読み込んで実行する。
画像処理部309は、CPU306による制御に従って、保存部302に保存されている画像を読みだして該画像における各画素の画素値のレンジ調整等の画像処理を行い、該画像処理を行った画像(画像処理結果)を保存部302やRAM308に出力する。
なお、本実施形態で説明する各種のデータの取得元や出力先は一例であり、本実施形態で説明するデータの取得元や出力先に限定することを意図するものではない。また、図3では、入力部301、保存部302、表示部304が全て1つの装置内に含まれる構成を示しているが、これらの機能部が公知の通信方式による通信路で接続されており、全体としてこのような構成となっているのであっても構わない。このように、図3に示した構成は、以下に説明するフィルタ処理を実施可能な装置に適用可能な構成の一例であり、各種の変形/変更が可能である。
次に、処理部305がフィルタ処理で用いる階層型ニューラルネットワーク(CNN)の構成例について、図2を用いて説明する。図2に示す階層型ニューラルネットワークは、レイヤ1、レイヤ2、レイヤ3、レイヤ4の4つのレイヤを有し、それぞれのレイヤは4つの特徴画像を有し、それぞれの特徴画像は、複数の特徴データを含む。図2では、レイヤL(L=1,2,3,4)における特徴画像を「特徴画像(L,i)」(i=1,2,3,4)と表記している。iは特徴画像のインデックスである。前レイヤにおける特徴画像(入力特徴画像)の特徴データとフィルタ係数(重み係数)との積和演算(フィルタ処理)である畳み込み処理を行うことで、現レイヤにおける特徴画像(出力特徴画像)を生成する。フィルタ処理における積和演算(式(2))で使用するフィルタ係数(重み係数)Cを、後述する式(4)の拡大後(拡張後)のフィルタにおけるフィルタ係数C’に置き換えた積和演算を以下の式(3)に示す。
Figure 2024004400000004
式(3)において式(1)や式(2)と共通する変数については上記の通りであるから、その説明は省略する。フィルタ係数C’x,y(m,n)を以下の式(4)に示す。
Figure 2024004400000005
x,yがDの倍数の場合、フィルタ係数C’x,y(m,n)の値はフィルタ係数Cx/D,y/D(m,n)と同じであり、有意の値(有効係数)である。一方、x,yがDの倍数ではない場合、フィルタ係数C’x,y(m,n)の値は0になり、計算が省略されることを意味する。ここで、
Figure 2024004400000006
は床関数であり、X以下の最大の整数を出力する。また、図2には、各レイヤに対するDの値(拡張畳み込み処理の倍率)を示している。拡張前のフィルタのサイズは2×2であり、4個のフィルタ係数を有する。拡張前後のフィルタの例を図6に示す。拡張畳み込み処理の倍率はネットワークの階層毎に異なる。
レイヤ1の拡張畳み込み処理の倍率は1であるので、枠601内に示す如く、拡張の前後でフィルタは拡張(拡大)されず、よって、拡張の前後でフィルタ処理(畳み込み処理)は変わらない。
レイヤ2の拡張畳み込み処理の倍率は2であるので、枠602内に示す如く、拡張後(拡大後)のフィルタのサイズは3×3になる。拡張前のフィルタにおいて縦横に隣接するフィルタ係数間には(拡大の倍率-1)に相当する個数、すなわち1個の0が係数として挿入される。
レイヤ3の拡張畳み込み処理の倍率は4であるので、枠603内に示す如く、拡張後(拡大後)のフィルタのサイズは5×5になり、拡張前のフィルタにおいて縦横に隣接するフィルタ係数間には(倍率-1)=3個の0が挿入される。
次に、各レイヤにおける特徴画像の生成について説明する。式(3)に基づいてレイヤ1における複数枚の特徴画像とフィルタ係数とを用いた積和演算を行うことで、レイヤ2における複数枚の特徴画像を生成する。次に、式(3)に基づいてレイヤ2における複数枚の特徴画像とフィルタ係数とを用いた積和演算を行うことで、レイヤ3における複数枚の特徴画像を生成する。次に、式(3)に基づいてレイヤ3における複数枚の特徴画像とフィルタ係数とを用いた積和演算を行うことで、レイヤ4における複数枚の特徴画像を生成する。
階層型ニューラルネットワークにおける畳み込み処理の一例を図8に示す。図8に示す如く、レイヤ1の4枚の特徴画像801において同じ位置(黒塗りの矩形で示した位置)から特徴データを抽出する。該特徴データとフィルタ係数との積和演算の結果を、次のレイヤ(レイヤ2)の特徴画像802において該位置と同じ位置(黒塗りの矩形で示した位置)の特徴データとして求める。
次に、上記の処理部305の構成例を、図4のブロック図を用いて説明する。制御部401は、処理部305全体の動作制御を行う。データ保持部408は、特徴画像における特徴データ、それぞれのフィルタに対応するフィルタ係数、階層型ニューラルネットワークの構造に係る情報である構造情報(各レイヤにおける積和演算の計算量、特徴画像のサイズ、枚数等)を保持している。
特徴データ保持部402は、データ転送部409によってデータ保持部408から転送された特徴画像におけるそれぞれの特徴データを保持するためのメモリである。フィルタサイズ拡張部403は、データ転送部409によってデータ保持部408から転送されたフィルタ係数をフィルタ係数保持部404に格納する。そしてフィルタ係数拡張部403は、該格納したフィルタ係数を「現レイヤに対応する倍率」に従って拡張(拡大)した拡張フィルタ(拡大フィルタ)を生成し、該生成した拡張フィルタ(係数)をフィルタ係数保持部404に格納する。
畳み込み演算部406は、特徴データ保持部402に格納されている特徴画像と、フィルタ係数保持部404に格納されている拡張フィルタの係数と、を用いて上記の式(3)に従った演算処理(フィルタ処理)を行う。
ここで、特徴データ保持部402、フィルタ係数保持部404はシフトレジスタであり、データ保持部408はSRAMであるものとする。
活性化・プーリング処理部407は、畳み込み演算部406による演算処理の結果に対して活性化・プーリング処理を行い、該活性化・プーリング処理の結果を、現レイヤにおけるフィルタ処理結果である特徴画像として出力する。
特徴データは上記の如く特徴データ保持部402に保持され、順番に移動させて出力される。特徴データを特徴データ保持部402におけるレジスタに保持する場合、積和演算を式(2)に従って行うと、特徴データを飛ばしながら参照することが困難であるため、本実施形態では、フィルタを拡張した拡張フィルタを用いて式(3)の積和演算を行う。
特徴データ保持部402、フィルタ係数保持部404、畳み込み演算部406の詳細な構成例について、図11のブロック図を用いて説明する。特徴データ保持部402は、特徴画像におけるそれぞれの特徴データを保持するために、複数個の特徴データ格納ユニット1104を有する。フィルタ係数保持部404は、フィルタにおけるそれぞれのフィルタ係数を保持するために、複数個のフィルタ係数格納ユニット1105を有する。特徴データ格納ユニット1104は、隣接する特徴データ格納ユニット1104に特徴データを転送することができる。従来の拡張畳み込み処理の式(式(2))では、特徴データを飛ばして参照するため、特徴データ格納ユニット1104は隣接しない特徴データ格納ユニットに特徴データを転送する必要があり、そのための制御と配線が複雑になる。これに対し、本実施形態では、式(3)に従って拡張畳み込み処理を行うため、特徴データを飛ばして転送する必要がなく、そのための制御と配線が、従来よりもシンプルになる。
畳み込み演算部406は、特徴データ保持部402およびフィルタ係数保持部404からデータを読み出すためのアドレス(それぞれ特徴データ格納ユニット1104およびフィルタ係数格納ユニット1105を指定する)を設定する。そして畳み込み演算部406における乗算器1101は、以下の演算を行う。すなわち、特徴データ保持部402において設定されたアドレスから読みだされた特徴データと、フィルタ係数保持部404において設定されたアドレスから読みだされたフィルタ係数と、を用いて上記の式(3)における乗算演算を行う。畳み込み演算部406における加算器1102は、乗算器1101における乗算結果を用いて上記の式(3)における加算演算を行い、該加算演算の結果を格納ユニット1103に格納されている加算演算の結果に累積加算して該格納ユニット1103に格納する。
次に、本実施形態に係るデータ処理装置によるフィルタ処理について、図1のフローチャートに従って説明する。ステップS101では、制御部401は、保存部302から、「複数枚の画像特徴(入力画像特徴)の特徴データ」、「各フィルタのフィルタ係数」、「構造情報」を読み出して、データ保持部408に格納する。
ステップS102~S113の処理は、階層型ニューラルネットワークにおける各レイヤについて行われる。図2の例では、レイヤ1,2,3,4の順にそれぞれのレイヤについてステップS102~S113の処理が行われる。
ステップS103では、制御部401は、データ保持部408に格納されている構造情報に応じて、拡張畳み込み処理の倍率Dを設定する。本実施形態では、同じレイヤの倍率Dは同じであるものとするが、同じレイヤでも特徴画像ごとに倍率Dを設定しておき、着目特徴画像に適用するフィルタは該着目特徴画像に対して設定されている倍率Dに応じて拡大するようにしてもよい。また、特徴画像を複数のグループに分けておき、グループ毎に倍率Dを設定しておき、着目特徴画像に適用するフィルタは該着目特徴画像が属するグループに対して設定されている倍率Dに応じて拡大するようにしてもよい。
ステップS104~S112の処理は、現レイヤにおけるそれぞれの特徴画像(出力特徴画像)について行われる。図2の例では、現レイヤ(インデックス=Lのレイヤ)における特徴画像(L,1)、特徴画像(L,2)、特徴画像(L,3)、特徴画像(L,4)、のそれぞれについて、ステップS104~S112の処理が行われる。
ステップS105では、制御部401は、畳み込み演算部406における格納ユニット1103に保持されている畳み込み処理の結果を0に初期化する。ステップS106~S109の処理は、前レイヤにおけるそれぞれの特徴画像(入力特徴画像)について行われる。
ステップS107では、データ転送部409は、一部の入力特徴画像と一部のフィルタ係数をデータ保持部408から読み出す。そして、データ転送部409は読み出した一部の入力特徴画像を特徴データ保持部402に転送し、一部のフィルタ係数をフィルタ係数保持部404に転送し、拡張畳み込み処理の倍率を読み出し部405とフィルタサイズ拡張部403とに転送する。
ステップS108では、フィルタサイズ拡張部403は、転送されたフィルタ係数をフィルタ係数保持部404に格納する。そして、該格納したフィルタ係数を、ステップS103で設定された倍率に従って拡張した拡張フィルタを生成し、該拡張フィルタのフィルタ係数をフィルタ係数保持部404に格納する。また、畳み込み演算部406は、特徴データ保持部402に転送された入力特徴画像と、フィルタ係数保持部404に格納された拡張フィルタのフィルタ係数と、を用いて上記の式(3)に従った畳み込み処理(フィルタ処理)を行う。ステップS108では、ステップS114~S120の処理を行う。ステップS108の詳細については後述する。
ステップS110に処理が進んだ時点で、前レイヤにおけるすべての入力特徴画像についての畳み込み処理が完了している。ステップS110では、活性化・プーリング処理部407は、前レイヤにおけるすべての入力特徴画像の畳み込み処理の結果に対して、以下の式(5)に従って活性化処理を行う。
Figure 2024004400000007
ここで、f()は活性化関数であり、xは、畳み込み処理の結果である。この例では、ReLU(Rectified Linear Unit)を用いて活性化関数を実現したが、活性化関数はReLUに限らず、他の非線形の関数または量子化関数で実現してもよい。次に、活性化・プーリング処理部407は、レイヤの情報に応じて、活性化処理結果に基づいてプーリング処理を行い、必要に応じて出力特徴画像のサイズを調整する。
ステップS111では、活性化・プーリング処理部407は、ステップS110における処理で生成された出力特徴画像を、次のレイヤにおける出力特徴画像を求めるための入力特徴画像として用いるべく特徴データ保持部402に格納する。上記のような処理を行うことで、次のレイヤにおけるそれぞれの特徴画像(出力特徴画像)を生成することができる。
図1のフローチャートに従った処理では、フィルタ係数をフィルタ係数保持部404に転送した後に該フィルタ係数を拡張するため、拡張後のフィルタ係数を転送する場合より転送量が少なくて済む、という効果がある。
次に、上記のステップS108における特徴画像の特徴データと拡張フィルタにおけるフィルタ係数との畳み込み演算処理の詳細(ステップS114~S120)について説明する。
ステップS114では、フィルタサイズ拡張部403は、データ転送部409によりデータ保持部408から転送されたフィルタ係数をフィルタ係数保持部404に格納する。そして、格納したフィルタ係数を、ステップS103で設定された倍率Dに従って拡張した拡張フィルタを生成する。具体的には、拡張前のフィルタにおけるフィルタ係数Cx,y(m,n)に基づいて拡張フィルタにおけるフィルタ係数C’x,y(m,n)を計算する。
ステップS115では、フィルタサイズ拡張部403は、ステップS114で生成した拡張フィルタのフィルタ係数をフィルタ係数保持部404に格納する。ステップS116~S120の処理は、特徴データとフィルタ係数の組ごとに行われる。
ステップS117では、畳み込み演算部406は、特徴データ保持部402およびフィルタ係数保持部404からデータを読み出すためのアドレス、つまり、式(4)のx、yに対応するアドレスを設定する。そして、特徴データとフィルタ係数の読み出される順番を決定する。
ステップS118では、畳み込み演算部406における乗算器1101は、特徴データ保持部402において設定されたアドレスから特徴データを読み出し、フィルタ係数保持部404において設定されたアドレスからフィルタ係数を読み出す。
複数個の特徴データは複数個の特徴データ格納ユニット1104に保持されている。特徴データ保持部402は、特徴データ格納ユニット1104に保持されている特徴データを隣接する特徴データ格納ユニット1104に転送することで、特徴データを出力する。
ステップS119では、畳み込み演算部406における乗算器1101は、ステップS118で読み出された特徴データとステップS118で読み出されたフィルタ係数とを用いて上記の式(3)における乗算演算を行う。畳み込み演算部406における加算器1102は、乗算器1101における乗算結果を用いて上記の式(3)における加算演算を行う。そして、該加算演算の結果を処理結果格納ユニット1103に格納されている加算演算の結果に累積加算して該処理結果格納ユニット1103に格納する。処理がステップS109に進んだ時点で処理結果格納ユニット1103に格納されている加算演算結果が、1枚の入力特徴画像に対応する畳み込み処理結果であるので、この畳み込み処理結果がステップS110における処理対象となる。
このように、本実施形態に係るデータ処理装置は、特徴データを一つずつ参照しながら拡張フィルタを効率的に処理することが可能である。図5の枠501に、拡張フィルタにおける有効係数(非0のフィルタ係数)と処理時間の例を示す。倍率D=2であり、拡張前後のフィルタの例を図6の枠602に示す。
時間軸を1ns-10nsで表現する。1nsでは、特徴画像における左上の特徴データIi,j(m)とフィルタ係数C0,0(m、n)との積を計算し、畳み込み処理の累積値の初期値にする。2nsでは、特徴画像における特徴データI’i+1,j(m)とフィルタ係数0との積を計算し、該積を累積値に加算する。3nsでは、特徴画像における右上の特徴データI’i+2,j(m)とフィルタ係数C1,0(m、n)との積を計算し、該積を累積値に加算する。4ns-6nsでは、特徴画像における特徴データとフィルタ係数0との積を計算し、該積を累積値に加算する。7nsでは、特徴画像における左下の特徴データI’i,j+2(m)とフィルタ係数C0,1(m、n)との積を計算し、該積を累積値に加算する。8nsでは、特徴画像における特徴データI’i+1,j+2(m)とフィルタ係数0との積を計算し、該積を累積値に加算する。9nsでは、特徴画像における右下の特徴データI’i+2,j+2(m)とフィルタ係数C’1,1(m、n)との積を計算し、該積を累積値に加算する。10nsでは、累積値を畳み込み処理結果として出力する。
なお、フィルタ係数が0の場合、特徴データとフィルタ係数0との積を計算し、該積を累積値に加算すると説明したが、演算コスト削減のため、特徴データとフィルタ係数0との積を計算して該積を累積値に加算する処理は省いてもよい。
そしてCPU306は、上記のような階層型ニューラルネットワークにおける最終レイヤ(図2の例ではレイヤ4)からの出力結果に基づいて、画像処理結果を得る。例えば、階層型ニューラルネットワークの入力レイヤ(図2の例ではレイヤ1)に撮像画像(動画像における各フレームの画像や静止画像)を入力して該階層型ニューラルネットワークの上記演算処理を行うことで最終レイヤから出力される出力結果を得たとする。この場合、CPU306は、該出力結果に基づき、撮像画像に対する画像処理または画像認識を行う。CPU306により処理された画像処理または画像認識の結果は、RAM308や保存部302等に格納される。
このように、本実施形態によれば、特徴データを1つずつ処理しながら拡張畳み込み処理を行うことができる。また、拡張後のフィルタではなく、拡張前のフィルタの係数を転送するため、フィルタ係数の転送量は増加しない。特に、階層的に多数の畳み込み処理を処理するCNNでは効果がより大きい。
[第2の実施形態]
以下では、第1の実施形態との差分について説明し、以下で特に触れない限りは、第1の実施形態と同様であるものとする。本実施形態に係る処理部305の構成例を、図7のブロック図に示す。図7においては、図4に示した機能部と同じ機能部には同じ参照番号を付しており、説明は適宜省略する。
フィルタ係数保持部701は、データ転送部409によってデータ保持部408から読み出されたフィルタ係数を保持するためのメモリである。フィルタサイズ拡張部702は、フィルタ係数保持部701に格納されているフィルタ係数から、現レイヤに対応する倍率に従って拡張した拡張フィルタを生成して出力する。演算部406は、特徴データ保持部402に格納されている特徴データと、フィルタサイズ拡張部702が出力するフィルタ係数と、を用いて上記の式(3)に従った演算処理(フィルタ処理)を行う。
本実施形態に係るデータ処理装置によるフィルタ処理は、第1の実施形態と以下の点で相違する。ステップS107では、データ転送部409は、データ保持部408から入力特徴画像におけるそれぞれの特徴データを読み出して特徴データ保持部402に転送する。また、データ転送部409は、データ保持部408からフィルタ係数を読み出してフィルタ係数保持部701に転送する。また、データ転送部409は、拡張畳み込み処理の倍率を読み出し部405とフィルタサイズ拡張部403とに転送する。
本実施形態では、ステップS108では、図9に示すステップS901~S907の処理を行う。ステップS901では、データ転送部409により転送された特徴データを特徴データ保持部402に格納する。またデータ転送部409は、フィルタ係数保持部701にフィルタ係数を転送して格納する。ステップS902~S907の処理は、特徴データとフィルタ係数の組ごとに行われる。
ステップS903では、畳み込み演算部406は、特徴データ保持部402およびフィルタ係数保持部701からデータを読み出すためのアドレス、つまり、式(4)のx、yに対応するアドレスを設定する。そして、特徴データとフィルタ係数の読み出される順番を決定する。ここで、畳み込み演算部406は、x,yが両方とも倍率Dの倍数になる場合に限って、該x、yに対応するアドレスをフィルタサイズ拡張部702に通知する。
ステップS904では、畳み込み演算部406の乗算器1101は、特徴データ保持部402において設定されたアドレスから特徴データを読み出す。また、拡張部702は、畳み込み演算部406からアドレスの通知があれば、フィルタ係数保持部701において該通知されたアドレスからフィルタ係数を読み出す。
ステップS905では、フィルタサイズ拡張部702は、畳み込み演算部406からアドレスの通知があれば、フィルタ係数保持部701から読み出したフィルタ係数を出力し、該通知がなければ、フィルタ係数として「0」を出力する。フィルタサイズ拡張部702から出力されたフィルタ係数を順に並べて形成されるフィルタが「拡張前のフィルタをD倍したサイズの拡張フィルタ」となる。つまり、本実施形態では、フィルタ係数保持部701には拡張前のフィルタを保持しておき、フィルタサイズ拡張部702は、該拡張前のフィルタ係数から拡張フィルタを生成し、該生成した拡張フィルタにおけるフィルタ係数を出力している。
ステップS906では、畳み込み演算部406における乗算器1101は、ステップS904で読み出された特徴データと、ステップS905でフィルタサイズ拡張部702から出力されたフィルタ係数と、を用いて上記の式(3)における乗算演算を行う。畳み込み演算部406における加算器1102は、乗算器1101における乗算結果を用いて上記の式(3)における加算演算を行い、該加算演算の結果を処理結果格納ユニット1103に格納されている加算演算の結果に累積加算する。また、その結果を該処理結果格納ユニット1103に格納する。
このように、拡張前のフィルタにおけるフィルタ係数をデータ保持部408からフィルタ係数保持部701に転送するため、拡張後のフィルタのフィルタ係数を転送する場合より転送量が少ない。また、本実施形態では、第1の実施形態と異なり、フィルタ係数保持部701は、拡張後のフィルタにおけるフィルタ係数ではなく、拡張前のフィルタにおけるフィルタ係数を保持するため、第1の実施形態よりも、メモリのサイズが削減される。
本実施形態に係るデータ処理装置では、特徴データを一つずつ参照しながら拡張前のフィルタを効率的に処理することが可能である。図5の枠502に、ステップS905に相当するフィルタ係数と処理時間の例を示す。拡張畳み込み処理の倍率D=2であり、拡張前後のフィルタ係数の例を図6の枠602に示す。第1の実施形態と同様に、10ステップ(10ns)に分けて処理する。
処理順番は第1の実施形態と同様であるが、拡張前のフィルタ係数を保持するため、2nsn、4-6ns、8nsでは、x,yが両方とも倍率Dの倍数になるわけではないため、フィルタ係数が0になる。しかし、本実施形態では、0のフィルタ係数をメモリに保持しなくてもよく、拡張畳み込み処理は処理可能である。
第1および第2の実施形態では、特徴データ保持部402、フィルタ係数保持部404、フィルタ係数保持部701、はシフトレジスタであり、データ保持部408はSRAMであると説明した。しかしながら、システムの全体構成に合わせて、シフトレジスタをSRAMで代用し、SRAMをDRAM等で代用しても良い。
[第3の実施形態]
第1の実施形態では、活性化・プーリング処理部407で活性化処理を実施する形態について説明したが、他の機能部が活性化処理を実行してもよく、例えば、CPU306が活性化処理を実行してもよい。これは他の処理についても同様で、処理の主体は上記で説明した主体に限らない。
また、図4,7,11,12において、メモリとして機能する機能部(保持部や格納ユニットなど)を除く各機能部は、ハードウェアで実装してもよいし、一部若しくは全部をソフトウェア(コンピュータプログラム)で実装してもよい。後者の場合、このコンピュータプログラムは保存部302に格納されており、CPU306や処理部305(制御部401)が該コンピュータプログラムを実行することで、対応する機能部の機能を実現させることができる。
また、第1の実施形態では、階層型ニューラルネットワークのネットワーク構造に応じて、活性化・プーリング処理を実行する形態について説明したが、場合によっては、活性化・プーリング処理の一方または両方を省略することもある。
また、第1の実施形態では、畳み込み演算部406が、乗算器1101、加算器1102、処理結果格納ユニット1103のセットを1セット有しているものとして説明した。しかし、畳み込み演算部406は、乗算器1101、加算器1102、処理結果格納ユニット1103のセットを複数セット有していてもよく、その場合、それぞれのセットを並列に動作させることで処理の高速化を図ってもよい。
乗算器1101、加算器1102、格納ユニット1103のセットを4セット有している演算部406の構成例を図12に示す。このような構成によれば、共通のフィルタ係数と複数個の特徴データを並列に処理することで、拡張畳み込み処理の処理効率を高めることができる。
また、第1の実施形態では、拡張前のフィルタのサイズ(フィルタの高さと幅)が2×2の例について説明したが、このサイズに限定するものではなく、任意のサイズで良い。図10に拡張前のフィルタのサイズ(フィルタの高さと幅)が3×3であり、拡張畳み込み処理の倍率D=2の例を示す。拡張後のフィルタのサイズは5×5になる。
また、第1の実施形態では、拡張畳み込み処理の倍率Dが1、2、4で、フィルタのサイズが2×2の例について説明したが、これらの数値に限るものではなく、任意の拡張畳み込み処理の倍率と任意のサイズでも良い。
また、第1の実施形態では、図11に示す複数個の特徴データ格納ユニット1104でデータを転送すると説明したが、図11と異なる構成で処理しも良い。図14に、高速化のための特徴データ保持部402、フィルタ係数保持部404、畳み込み演算部406の詳細構成を示す。
図14において、特徴データ保持部402は、複数個の特徴データ格納ユニット1401で構成されている。また、フィルタ係数保持部404は、複数個のフィルタ係数格納ユニット1402で構成されている。特徴データ格納ユニット1401は、隣接する上下左右の特徴データ格納ユニット1401にデータを転送することができるため、フィルタ係数が0の場合、処理を省略することができる。
図13の枠1301に、有効係数情報と処理時間の例を示す。拡張畳み込み処理の倍率Dが2であり、拡張前後のフィルタ係数の例を、図6の枠602に示す。処理対象となった7つのフィルタ係数はフィルタ係数の処理順番1302の通りに読み出される。
時間軸を1ns-8nsで表現する。1nsでは、左上の特徴データI’i,j(m)とフィルタ係数C0,0(m)の積を計算し、畳み込み処理の累積値の初期値にする。2nsでは、特徴データI’i+1,j(m)とフィルタ係数0の積を計算し、積を累積値に加算する。3nsでは、右上の特徴データI’i+2,j(m)とフィルタ係数C1,0(m)の積を計算し、積を累積値に加算する。
4nsでは、第1の実施形態と異なり、3nsで処理した特徴データの下にある特徴データI’i+2,j+1(m)とフィルタ係数0の積を計算し、積を累積値に加算する。
5nsでは、右下の特徴データI’i+2,j+2(m)とフィルタ係数C1,1(m)の積を計算する。6nsでは、特徴データI’i+1,j+2(m)とフィルタ係数0の積を計算し、積を累積値に加算する。7nsでは、左下の特徴データI’i+0,j+2(m)とフィルタ係数C’0,1(m)の積を計算し、積を累積値に加算する。
8nsでは、累積値を畳み込み処理の結果として出力する。
以上の説明により、特徴データ格納ユニット1401は、隣接する上下左右の特徴データ格納ユニット1401にデータを転送することができるため、処理時間を第1の実施形態より短くすることができる。
また、上記の各実施形態において使用した数値、演算方法、処理の実行タイミング等は、具体的な説明を行うために一例として挙げたものであり、各実施形態がこれらの一例に限定されることを意図したものではない。
また、以上説明した各実施形態の一部若しくは全部を適宜組み合わせて使用しても構わない。また、以上説明した各実施形態の一部若しくは全部を選択的に使用しても構わない。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
401 制御部
402 特徴データ保持部
403 フィルタサイズ拡張部
404 フィルタ係数保持部
405 読み出し部
406 畳み込み演算部
407 活性化・プーリング処理部
408 データ保持部
409 データ転送部

Claims (14)

  1. 転送されたフィルタのフィルタ係数を保持する保持手段と、
    前記保持手段に保持されたフィルタ係数を順に読み出して、前記転送されたフィルタのサイズを拡大した拡大フィルタを生成する生成手段と、
    前記拡大フィルタにおけるフィルタ係数を用いて畳み込み演算を行う畳み込み演算手段と
    を備えることを特徴とするデータ処理装置。
  2. 前記生成手段は、前記生成した拡大フィルタのフィルタ係数をメモリに格納することを特徴とする請求項1に記載のデータ処理装置。
  3. 前記生成手段は、前記保持手段に保持されたフィルタ係数をメモリに格納し、該メモリに格納したフィルタ係数を用いてフィルタのサイズを拡大した拡大フィルタを生成することを特徴とする請求項1に記載のデータ処理装置。
  4. 前記生成手段は、前記保持されたフィルタ係数に係数0を加えて前記拡大フィルタを生成することを特徴とする請求項1ないし3の何れか1項に記載のデータ処理装置。
  5. 前記生成手段は、前記保持されたフィルタにおいて縦横に隣接するフィルタ係数間に拡大の倍率に応じた個数の0を係数として挿入した拡大フィルタを生成することを特徴とする請求項4に記載のデータ処理装置。
  6. 前記生成手段は、レイヤごとに、該レイヤについて拡大フィルタを生成することを特徴とする請求項1ないし5の何れか1項に記載のデータ処理装置。
  7. 前記畳み込み演算手段は、前記レイヤごとに、前記生成手段が該レイヤについて生成した拡大フィルタにおけるフィルタ係数を用いて、該レイヤに対応する畳み込み処理を行うことを特徴とする請求項6に記載のデータ処理装置。
  8. 前記生成手段は、前記レイヤに対応する倍率に応じて前記保持されたフィルタのフィルタサイズを拡大した拡大フィルタを生成することを特徴とする請求項6または7に記載のデータ処理装置。
  9. 前記生成手段は、畳み込み処理を行うデータに適用するフィルタを、該データに対して設定されている倍率に応じて拡大した拡大フィルタを生成することを特徴とする請求項6または7に記載のデータ処理装置。
  10. 前記生成手段は、畳み込み処理を行うデータに適用するフィルタを、該データが属するグループに対して設定されている倍率に応じて拡大した拡大フィルタを生成することを特徴とする請求項6または7に記載のデータ処理装置。
  11. 前記レイヤは、階層型ニューラルネットワークにおける各レイヤであり、前記データは該レイヤにおける特徴画像に含まれるそれぞれの特徴データであり、前記フィルタ係数は該レイヤに対応する重み係数であることを特徴とする請求項9または10に記載のデータ処理装置。
  12. 前記畳み込み演算手段は、前記畳み込み演算の結果に対して、活性化処理および/またはプーリング処理を行うことを特徴とする請求項1ないし11の何れか1項に記載のデータ処理装置。
  13. データ処理装置が行うデータ処理方法であって、
    前記データ処理装置の保持手段が、転送されたフィルタのフィルタ係数を保持する保持工程と、
    前記データ処理装置の生成手段が、前記保持工程で保持されたフィルタ係数を順に読み出して、前記転送されたフィルタのサイズを拡大した拡大フィルタを生成する生成工程と、
    前記データ処理装置の畳み込み演算手段が、前記拡大フィルタにおけるフィルタ係数を用いて畳み込み演算を行う畳み込み演算工程と
    を備えることを特徴とするデータ処理方法。
  14. コンピュータを、請求項1ないし12の何れか1項に記載のデータ処理装置の各手段として機能させるためのコンピュータプログラム。
JP2022104051A 2022-06-28 2022-06-28 データ処理装置及びその方法 Pending JP2024004400A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022104051A JP2024004400A (ja) 2022-06-28 2022-06-28 データ処理装置及びその方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022104051A JP2024004400A (ja) 2022-06-28 2022-06-28 データ処理装置及びその方法

Publications (1)

Publication Number Publication Date
JP2024004400A true JP2024004400A (ja) 2024-01-16

Family

ID=89538000

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022104051A Pending JP2024004400A (ja) 2022-06-28 2022-06-28 データ処理装置及びその方法

Country Status (1)

Country Link
JP (1) JP2024004400A (ja)

Similar Documents

Publication Publication Date Title
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
JP7414930B2 (ja) 情報処理装置、情報処理方法
JP2023109847A (ja) 機械学習のための画像変換
CN108765282B (zh) 基于fpga的实时超分辨方法及系统
US11822900B2 (en) Filter processing device and method of performing convolution operation at filter processing device
JP2023541350A (ja) 表畳み込みおよびアクセラレーション
CN111709415B (zh) 目标检测方法、装置、计算机设备和存储介质
JP2014501980A (ja) 画像の並列処理方法および装置
JP2017068577A (ja) 演算装置、方法及びプログラム
CN112070854B (zh) 一种图像生成方法、装置、设备及存储介质
CN111161289B (zh) 图像中物体轮廓精度提升方法、装置
JP2021144428A (ja) データ処理装置、データ処理方法
JP2024004400A (ja) データ処理装置及びその方法
CN116341630A (zh) 神经网络处理
CN116228850A (zh) 物体姿态估计方法、装置、电子设备及可读存储介质
JP7169768B2 (ja) 画像処理装置、画像処理方法
JP7114321B2 (ja) データ処理装置及びその方法
US11842273B2 (en) Neural network processing
US20220309778A1 (en) Image processing apparatus, image processing method, and non-transitory computer-readable storage medium
JP2023073824A (ja) 演算装置、情報処理方法、及びプログラム
JP2024026993A (ja) 情報処理装置、情報処理方法
Karami et al. Variable exponent nonlocal model with weaker norm in the fidelity term for image restoration
Alavi Gharahbagh et al. Improved content aware image retargeting using strip partitioning
Fukuzaki et al. Training Large Kernel Convolutions with Resized Filters and Smaller Images
Nawała et al. Real-Time Image Content Assessment for Underwater Robot Manoeuvring Based on Structural Tensor Analysis

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20231213