JP2024026993A - 情報処理装置、情報処理方法 - Google Patents

情報処理装置、情報処理方法 Download PDF

Info

Publication number
JP2024026993A
JP2024026993A JP2022129651A JP2022129651A JP2024026993A JP 2024026993 A JP2024026993 A JP 2024026993A JP 2022129651 A JP2022129651 A JP 2022129651A JP 2022129651 A JP2022129651 A JP 2022129651A JP 2024026993 A JP2024026993 A JP 2024026993A
Authority
JP
Japan
Prior art keywords
weighting coefficient
information processing
bit
layer
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
JP2022129651A
Other languages
English (en)
Inventor
ソクイ チン
政美 加藤
忠幸 伊藤
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 JP2022129651A priority Critical patent/JP2024026993A/ja
Priority to EP23188954.4A priority patent/EP4325397A1/en
Priority to US18/449,200 priority patent/US20240071068A1/en
Publication of JP2024026993A publication Critical patent/JP2024026993A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation

Abstract

【課題】 異なるビット幅の重み係数を用いた積和演算を、より簡便な構成でもって実現させる技術を提供すること。【解決手段】 複数の階層の重み係数のうち第1階層の重み係数のビット幅がN(Nは2以上の整数)ビットである場合は該重み係数を出力し、該重み係数のビット幅がNビットではない場合は、該重み係数を変換したNビットの重み係数を出力する。該出力された重み係数と、第1階層における特徴画像と、の積和演算に基づいて、第2階層の特徴画像を生成する。【選択図】 図4

Description

本発明は、階層ごとの演算処理技術に関するものである。
畳み込みニューラルネットワーク(Convolutional Neural Networks:CNN)は、深層学習に用いられる手法として知られている。CNNでは、複数のレイヤ(階層)が階層的に接続されており、各階層の中に複数の特徴画像がある。
図2に、階層の数が4(レイヤ1~4)、各階層の中に特徴画像が4枚あるCNN(4層畳み込みニューラルネットワーク)の構成例を示す。図2において特徴画像(i,j)は、レイヤiにおけるj枚目の特徴画像を表す。学習したフィルタ係数(重み係数)と特徴画像の画素(特徴データ)とを用いて畳み込み処理の結果を計算する。畳み込み処理は積和演算であり、複数の乗算と累積加算を含んでいる。図2における矢印は積和演算を意味する。
現階層における特徴画像は、前の階層における特徴画像と前の階層に対応する重み係数とを用いて計算する。現階層における1枚の特徴画像を計算するためには、前の階層における複数枚の特徴画像の情報が必要である。積和演算の計算式は、以下の(式1)に従う。
Figure 2024026993000002
ここで、Oi,j(n)は、現階層におけるn枚目の特徴画像中の位置(i,j)に対応する積和演算結果を表す変数である。この(式1)では、前の階層の中に特徴画像がM枚あり、m枚目の特徴画像において位置(i,j)における特徴データをIi,j(m)と表している。重み係数(C0,0(m,n)~CX-1,Y-1(m,n))は(X×Y)個あり、特徴画像によって異なる(X,Yは共に奇数)。現階層におけるn枚目の特徴画像を算出するための積和演算回数は(M×X×Y)回である。畳み込み演算を行った後に、CNNの構造に係る情報に基づき、積和演算結果Oi,j(n)を用いて活性化処理やプーリング処理等の処理を行い、現階層における特徴画像を計算する。
CNNは、積和演算の回数が多いため、携帯端末や車載機器等の組み込みシステムに適用した場合、積和演算を効率的に行い、全体的な処理時間を短縮する必要がある。近年、階層によって、特徴画像、畳み込み処理結果、または重み係数のビット幅が異なるネットワーク構成が注目されている。データを量子化し、ビット幅を削減することで、演算コストまたは処理時間を削減することが可能である。非特許文献1、特許文献1、特許文献2では、異なるビット幅の特徴画像または重み係数を処理可能なハードウェア構成が提案されている。
米国特許出願公開第2020/111235 米国特許第10474430号明細書
Ankur Agrawal, et al., "9.1 A 7nm 4-Core AI Chip with 25.6TFLOPS Hybrid FP8 Training, 102.4TOPS INT4 Inference and Workload-Aware Throttling," IEEE International Solid- State Circuits Conference (ISSCC), 2021.
特徴データと重み係数とを実数で保持している従来のネットワークと比べて、特徴データまたは重み係数を量子化したネットワークの構造では、少ない演算コストで処理できるが、複数種類のビット幅の積和演算を行うためには、複数種類の演算器が必要である。
特許文献1に記載の手法では、異なるビット幅の特徴画像を共通の演算器で処理する。特徴画像のビット幅によって畳み込み処理の並列度が異なり、ビット幅が小さい重み係数の処理時間を削減できる。ただし、特許文献1に記載の手法では、重み係数のビット幅が異なるネットワーク構造を処理する場合、効率が低下することがある。
非特許文献1に記載の手法では、階層毎にビット幅が異なるCNNを異なる種類の演算器で処理できる。実数データ専用の演算器と整数データ専用の演算器とを分けることで、整数データ処理の電力効率を向上させることができる。4ビット整数と2ビット整数の重み係数と特徴データを異なる演算コアで処理可能である。
特許文献2に記載の手法では、異なるビット幅の重み係数を異なる演算器で処理する。重み係数のビット幅に応じて畳み込み処理を行うため、処理時間と消費電力削減等のメリットがある。ただし、非特許文献1に記載の手法や特許文献2に記載の手法では、演算器の個数がビット幅の種類に比例するため、回路規模が増大する可能性がある。本発明では、異なるビット幅の重み係数を用いた積和演算を、より簡便な構成でもって実現させる技術を提供する。
本発明の一様態は、複数の階層の重み係数のうち第1階層の重み係数のビット幅がN(Nは2以上の整数)ビットである場合は該重み係数を出力し、該重み係数のビット幅がNビットではない場合は、該重み係数を変換したNビットの重み係数を出力する変換手段と、前記変換手段により出力された重み係数と、第1階層における特徴画像と、の積和演算に基づいて、第2階層の特徴画像を生成する演算手段とを備えることを特徴とする。
本発明の構成によれば、異なるビット幅の重み係数を用いた積和演算を、より簡便な構成でもって実現させることができる。
畳み込み処理部305の動作を示すフローチャート。 CNN(4層畳み込みニューラルネットワーク)の構成例を示す図。 情報処理装置のハードウェア構成例を示すブロック図。 畳み込み処理部305の機能構成例を示すブロック図。 畳み込み処理部305の機能構成例を示すブロック図。 特徴画像の生成について説明する図。 変換部405の機能構成例を示すブロック図。
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
[第1の実施形態]
先ず、本実施形態に係る情報処理装置のハードウェア構成例について、図3のブロック図を用いて説明する。図3に例示するハードウェア構成例を有する情報処理装置には、例えば、PC(パーソナルコンピュータ)、スマートフォン、タブレット端末装置、などのコンピュータ装置が適用可能である。また、本実施形態に係る情報処理装置は、例えば、撮像装置や該撮像装置を搭載した装置などに組み込まれる組み込み機器として適用しても良い。
入力部301は、キーボード、マウス、タッチパネルなどのユーザインターフェースであり、ユーザが操作することで、各種の指示をCPU306に対して入力することができる。
保存部302は不揮発性メモリ装置であり、例えば、ハードディスク、フレキシブルディスク、CD-ROM、CD-R、DVD、メモリカード、CFカード、スマートメディア、SDカード、メモリスティック、xDピクチャーカード、USBメモリ等である。例えば、保存部302には、OS(オペレーティングシステム)、情報処理装置が行う処理として説明する各処理をCPU306に実行もしくは制御させるためのコンピュータプログラムやデータ、などが保存されている。
通信部303は、有線および/または無線のネットワークを介して外部装置との間のデータ通信を行う。表示部304は、液晶画面やタッチパネル画面を有し、CPU306による処理結果を画像や文字などでもって表示することができる。なお、表示部304は、画像や文字を投影するプロジェクタなどの投影装置であっても良い。
畳み込み処理部305は、複数の階層を有するCNNの各階層における演算(積和演算を含む演算)を行うことで、該CNNに対する入力に対応する出力(CNNの出力結果)を求める。例えば、畳み込み処理部305は、RAM308に格納されている入力画像(例えば、動画像における各フレームの画像、定期的若しくは不定期的に撮像された静止画像)を入力したCNNの各階層における演算を行って、該入力に対応する出力を求める。そして畳み込み処理部305は、求めたCNNの出力結果をRAM308や保存部302に格納する。
そして、CPU306は、畳み込み処理部305によってRAM308や保存部302に格納されたCNNの出力結果に基づき、入力画像に対する画像処理や画像認識などの処理を行い、該処理の結果をRAM308や保存部302に格納する。なお、畳み込み処理部305が求めた出力結果や、CPU306による処理の結果を、通信部303が外部装置に対して送信しても構わない。
また、CPU306による画像処理や画像認識の結果は、表示部304に画像や文字として表示されても良いし、情報処理装置が音声出力機能を有する場合には、音声として出力するようにしても良い。
CPU306は、ROM307やRAM308に格納されているコンピュータプログラムやデータを用いて各種の処理を実行することで、情報処理装置が行う処理として説明する各種の処理を実行もしくは制御する。
ROM307には、情報処理装置の設定データ、情報処理装置の起動に係るコンピュータプログラムやデータ、情報処理装置の基本動作に係るコンピュータプログラムやデータ、などが格納されている。
RAM308は、保存部302やROM307からロードされたコンピュータプログラムやデータを格納するためのエリア、通信部303により外部装置から受信したコンピュータプログラムやデータを格納するためのエリア、を有する。また、RAM308は、CPU306、畳み込み処理部305、画像処理部309のそれぞれが各種の処理を実行する際に用いるワークエリアを有する。このように、RAM308は、各種のエリアを適宜提供することができる。
画像処理部309は、CPU306からのコマンドを受け、保存部302に格納されている画像を読み出して画素値のレンジ調整を行い、該レンジ調整を行った画像をRAM308に書き込む。
入力部301、保存部302、通信部303、表示部304、畳み込み処理部305、CPU306、ROM307、RAM308、画像処理部309は何れも、システムバス310に接続されている。
なお、図3に示したハードウェア構成は、本実施形態に係る情報処理装置に適用可能なハードウェア構成の一例であり、適宜変形/変更が可能である。例えば、図3では、情報処理装置は入力部301、保存部302、表示部304、畳み込み処理部305、画像処理部309の全てを有しているが、これらの1以上を情報処理装置の外部装置としても良く、その場合、外部装置との間のデータ通信は通信部303によって行われる。
また例えば、RAM308が提供するエリアの一部を保存部302が提供しても構わない。また、RAM308や保存部302が格納するものとして説明する情報の一部若しくは全部を外部装置に格納するようにしても良い。その場合、外部装置との間のデータ通信は通信部303によって行われる。
また、例えば、図3では、情報処理装置は1つのCPU(CPU306)を有するものとしたが、複数のCPUを有しても構わない。また、複数の装置が協調動作を行うことで、本実施形態に係る情報処理装置の機能を実現させても良い。
また、畳み込み処理部305や画像処理部309はハードウェアとして実装するようにしても良いし、コンピュータプログラムとして実装するようにしても良い。後者の場合、このコンピュータプログラムは保存部302に格納され、CPU306が該コンピュータプログラムをRAM308に読み出して実行することで、畳み込み処理部305や画像処理部309の機能を実現させることになる。
本実施形態で用いるCNNの構成例を図2に示す。図2のCNNの詳細については上記の通りである。なお、CNNの構造に係る情報(構造情報)は、各階層の情報(階層間の接続関係、フィルタ構造、重み係数のビット幅、特徴画像のサイズ、ビット幅、枚数等)を含んでおり、保存部302等に保存されている。
図2のCNNにおける階層の数は4(レイヤ1~4)であり、各階層の中に特徴画像が4枚ある。上記の通り、特徴画像(i,j)は、レイヤiにおけるj枚目の特徴画像を表す。また、全ての階層で重み係数のビット幅は同じではなく、図2では、レイヤ1の重み係数のビット幅は8ビットであり、レイヤ2の重み係数のビット幅は1ビットであり、レイヤ3の重み係数のビット幅は1ビットである。特徴画像は複数の画素(特徴データ)を有する。
ここで、従来における、レイヤ2~4のそれぞれの特徴画像の計算(生成)について説明する。レイヤ1における特徴画像(1,1)、(1,2)、(1,3)、(1,4)は、例えば入力画像若しくは該入力画像の特徴画像である。
レイヤ1における特徴画像(1,1)、(1,2)、(1,3)、(1,4)と、8ビットの重み係数と、を用いて上記の(式1)に従った積和演算(畳み込み処理)を行う。そして、この積和演算の結果から、レイヤ2における特徴画像(2,1)、(2,2)、(2,3)、(2,4)を生成する。
そして、レイヤ2における特徴画像(2,1)、(2,2)、(2,3)、(2,4)と、1ビットの重み係数と、を用いて上記の(式1)に従った積和演算(畳み込み処理)を行う。そして、この積和演算の結果から、レイヤ3における特徴画像(3,1)、(3,2)、(3,3)、(3,4)を生成する。
そして、レイヤ3における特徴画像(3,1)、(3,2)、(3,3)、(3,4)と、1ビットの重み係数と、を用いて上記の(式1)に従った積和演算(畳み込み処理)を行う。そして、この積和演算の結果から、レイヤ4における特徴画像(4,1)、(4,2)、(4,3)、(4,4)を生成する。
例えば、図6に示す如く、レイヤ1における4枚の特徴画像601から同じ位置の特徴データを抽出する。そして、該特徴データを用いて畳み込み処理を行ってから活性化処理などの処理を行い、該処理の結果を、レイヤ2の特徴画像602において該位置における特徴データとして求める。
従来技術では、他の重み係数とビット幅が異なる重み係数が1以上存在する場合、重み係数のビット幅に応じて、複数種類の乗算器から積和演算を行う乗算器を選択するなど、処理が煩雑であった。また、従来技術では、他の重み係数とビット幅が異なる重み係数が1以上存在する場合、重み係数のビット幅に応じて複数種類の乗算器を予め用意しておく必要があり、その結果、回路規模の増大を招き、コスト面などで様々な問題があった。
これに対し、本実施形態では、重み係数のビット幅がN(Nは2以上の整数)ビットである場合は該重み係数を積和演算の対象とし、該重み係数のビット幅がNビットではない場合は、該重み係数を変換したNビットの重み係数を積和演算の対象とする。
上記の畳み込み処理部305の機能構成例を、図4のブロック図に示す。このような機能構成例を有する畳み込み処理部305の動作について、図1のフローチャートに従って説明する。
ステップS101では、制御部401は、保存部302に保存されている「レイヤ1における複数枚の特徴画像」、「構造情報」、「各階層に対応する重み係数」を読み出す。そして制御部401は、該読み出した「レイヤ1における複数枚の特徴画像」、「構造情報」、「各階層に対応する重み係数」を、保持部408に格納する。ここで、レイヤ1における特徴画像は、例えば入力画像若しくは該入力画像の特徴画像である。
そして、CNNの各階層について、ステップS102~S114の処理が行われる。本実施形態では、レイヤ1,レイヤ2,レイヤ3のそれぞれを対象レイヤとし、該対象レイヤについてステップS102~S114の処理が行われる。より具体的には、先ずレイヤ1についてステップS102~S114の処理が行われ、次にレイヤ2についてステップS102~S114の処理が行われ、最後にレイヤ3についてステップS102~S114の処理が行われる。
ステップS103では、制御部401は、構造情報から対象レイヤに対応する重み係数のビット幅を取得する。それぞれの階層における重み係数のビット幅は予め設定して構造情報に登録されている。重み係数のビット幅には様々な設定方法が適用可能である。
例えば、制御部401は、図2に示す如く、同じ階層における重み係数のビット幅を同じビット幅に設定しても良いし、出力特徴画像(対象レイヤの次のレイヤにおける特徴画像)ごとに異なるビット幅を設定しても良い。また、出力特徴画像が複数のグループに分かれている場合、制御部401は、グループ毎に重み係数のビット幅を設定し、グループ単位で並列処理を行うことで処理効率を向上させることも可能である。
そして、生成するそれぞれの出力特徴画像について、ステップS104~S113の処理が行われる。ステップS105では、制御部401は、累積加算部403に保持されている畳み込み処理結果を0に初期化する。そして、対象レイヤにおけるそれぞれの特徴画像について、ステップS106~S110の処理が行われる。
ステップS107では、制御部401は、対象レイヤにおける特徴画像(特徴データの集合)を保持部408から読み出し、該読み出した特徴画像を保持部402に格納(転送)する。さらに制御部401は、対象レイヤに対応する重み係数を保持部408から読み出し、該読み出した重み係数を保持部404に格納(転送)する。
ステップS108では、変換部405は制御部401からの制御信号を受け、ステップS107で保持部404に格納した重み係数のビット幅がN(Nは2以上の整数)ビットであるか否かを判断する。本実施形態ではN=8とする。
そして、この判断の結果、ステップS107で保持部404に格納した重み係数のビット幅が8ビットではない場合、変換部405は、該重み係数を、ビット幅が8ビットの重み係数に変換する。ここで、ステップS107で保持部404に格納した重み係数のビット幅が1ビットであるケースについて説明する。
ステップS107で保持部404に格納した重み係数のビット幅が1ビットである場合、該重み係数の値は0または1であるため、負数を表現できない。値が0または1の重み係数を使用する場合、認識精度を向上させることが困難なため、値が-1または1の重み係数を使用することが多い。そこで、畳み込み処理を行う前に、変換部405は、1ビットの重み係数Cx,y(m,n)を以下の(式2)に従って重み係数C’x,y(m,n)に変換する。
Figure 2024026993000003
このような変換により、値が「0」の重み係数は値が「-1」の重み係数に変換され、値が「1」の重み係数は値が「1」の重み係数に変換される。そして変換部405は、(式2)に従って値を変換した重み係数を、ビット幅が8ビットの重み係数に変換する(ビット幅を8ビットに拡張する)。つまり、重み係数の値を2進数で表記した場合、以下の(式3)に示す変換を行ったことになる。
Figure 2024026993000004
変換前の重み係数はビット幅が1ビットであり、符号ビットがついていない。変換後の重み係数はビット幅が8ビットであり、符号ビットがついている。重み係数は2の補数で表現されている。このような処理により、1ビットの重み係数から8ビットの重み係数が得られるので、変換部405は、該8ビットの重み係数を乗算部406に対して出力する。
一方、上記の判断の結果、ステップS107で保持部404に格納した重み係数のビット幅が8ビットである場合、変換部405は、該重み係数を乗算部406に対して出力する。
ここで、変換部405の機能構成例について、図7のブロック図を用いて説明する。変換部405に1ビットの重み係数Cx,y(m,n)が入力された場合、該1ビットの重み係数Cx,y(m,n)はインバータ回路701に入力される。インバータ回路701は、この変換前の1ビットの重み係数Cx,y(m,n)を、8ビットの重み係数C’x,y(m,n)に変換する。変換後の8ビット(一般的にはNビット)の重み係数の最下位ビットは常に1、残りの7ビット(一般的にはN-1ビット)は全て変換前の1ビットの重み係数に対して反転した値となっている。そしてインバータ回路701は、変換した8ビットの重み係数を選択部702に入力する。
一方、変換部405に8ビットの重み係数Cx,y(m,n)が入力された場合、該8ビットの重み係数Cx,y(m,n)を(インバータ回路701を介さずに)8ビットの重み係数C’x,y(m,n)として選択部702に入力する。
選択部702は、インバータ回路701から重み係数を受け取った場合には、該重み係数を選択し、該選択した重み係数を乗算部406に対して出力する。一方、選択部702は、インバータ回路701を介さずに重み係数を受け取った場合には、該重み係数を選択し、該選択した重み係数を乗算部406に対して出力する。通常のビット拡張と異なり、1ビットの重み係数が0の場合は値を変換し、1の場合は値をそのまま出力するために、最下位ビットは入力信号を使わず1に固定する。このような変換部405の構成により、シンプルな回路で値の変換とビット幅の拡張を同時に実現できる。
ステップS109では、乗算部406および累積加算部403により、対象レイヤにおける特徴画像と、乗算部406が変換部405から取得した重み係数と、を用いて以下の(式4)に従った積和演算処理(畳み込み処理)を行う。
Figure 2024026993000005
ここで、Oi,j(n)は、対象レイヤの次のレイヤにおけるn枚目の特徴画像中の位置(i,j)に対応する積和演算結果を表す変数である。また、対象レイヤの中に特徴画像がM枚あり、m枚目の特徴画像において位置(i,j)における特徴データをIi,j(m)と表している。(式4)は、対象レイヤにおける全ての特徴画像と重み係数との積和演算を示しており、ステップS109の処理を対象レイヤにおける全ての特徴画像について行うことで、(式4)の積和演算が実現される。
乗算部406は、対象レイヤにおける特徴画像と、乗算部406が変換部405から取得した重み係数と、の乗算処理を行い、累積加算部403は、乗算部406による乗算結果を累積加算する。
本実施形態によれば、変換前の重み係数が8ビットであっても1ビットであっても、8ビットの重み係数を用いた積和演算を行うので、共通の乗算部406および累積加算部403で処理可能である。乗算部406は符号ビットのついている重み係数を処理可能である。8ビットの重み係数と1ビットの重み係数を同じ並列度で処理する場合、演算器を追加する必要がない。
1ビットの重み係数の処理の並列度が増えた場合、乗算結果を累積する累積加算部403の回路が増大し、消費電力が大きくなる可能性がある。然るに、それほど高速化が必要でなく低消費電力を求められる機器では、1ビットの重み係数の処理の並列度を増やさない方が望ましい。本実施形態によれば、1ビットの重み係数の処理と8ビットの重み係数の処理の並列度を同じに保つことで、回路規模削減と省電力の効果が生まれる。
ステップS111では、処理部407は、制御部401からの制御信号を受け、1つの出力特徴画像について得られた、乗算部406および累積加算部403による畳み込み処理の結果に基づいて、以下の(式5)に従った活性化処理を行う。
Figure 2024026993000006
ここで、f()は活性化関数であり、xは乗算部406および累積加算部403による畳み込み処理の結果である。この例では、活性化関数を、ReLU(Rectified Linear Unit)を用いて実現したが、ReLUに限らず、他の非線形関数や量子化関数を用いて実現しても良い。そして、処理部407は、上記の活性化処理の結果に基づいてプーリング処理を行って出力特徴画像を生成し、必要に応じて該出力特徴画像のサイズを調整する。ステップS112では、制御部401は、ステップS111で生成された出力特徴画像を、対象レイヤの次のレイヤにおける特徴画像として保持部408に格納する。
このように、本実施形態によれば、1ビットの重み係数を8ビットの重み係数に変換することで、ビット幅が異なる重み係数(1ビットまたは8ビット)を共通の演算部(乗算部と累積加算部)で処理することができ、回路規模を削減することが可能である。1ビットの重み係数の畳み込み処理を行う場合、1ビットの重み係数の乗算を加算と減算で代替する手法もあるが、8ビットの重み係数の乗算を処理するための8ビットの乗算部が既にあるため、新たに加算部を設けるより、ビット幅変換部と8ビットの乗算部を使用した方が回路規模は小さい。
[第2の実施形態]
以下では第1の実施形態との差分について説明し、以下で特に触れない限りは、第1の実施形態と同様であるものとする。本実施形態に係る畳み込み処理部305の機能構成例を、図5のブロック図に示す。図5において、図4に示した機能部と同じ機能部には同じ参照番号を付しており、該機能部に係る説明は省略する。
累積加算部502は累積加算部501よりも回路規模が小さく、処理速度が速い。累積加算部502を使用すると、累積加算部501を使用するよりも処理時間が短縮されるため、消費電力も削減される。
本実施形態に係る畳み込み処理部305の動作は、図1のフローチャートにおいて以下の点が第1の実施形態と異なる。ステップS109では、乗算部406は、対象レイヤにおける特徴画像と、乗算部406が変換部405から取得した重み係数と、の乗算処理を行う。そして、制御部401は、該重み係数が「インバータ回路701を介さずに乗算部406に入力された重み係数(元々ビット幅が8ビットの重み係数)」(重み係数Aと称する)である場合、該乗算処理の結果を、累積加算部502に入力する。一方、制御部401は、該重み係数が「インバータ回路701により8ビットに変換された重み係数(元はビット幅が1ビットの重み係数)」(重み係数Bと称する)である場合、該乗算処理の結果を、累積加算部501に入力する。
特徴画像および重み係数のそれぞれのビット幅が8ビットの場合、該特徴画像と該重み係数との乗算結果は16ビットとなる。ここで、重み係数が重み係数Aに該当する場合、16ビットの乗算結果が累積加算の対象となり、重み係数が重み係数Bに該当する場合、16ビットの乗算結果のうちの9ビットが累積加算の対象となる。よって、重み係数Aを用いた乗算処理の結果を、重み係数Bを用いた乗算処理の結果を累積加算する累積加算部501よりも高い能力(演算や電力の観点における能力)を有する累積加算部502に入力する。一方、重み係数Bを用いた乗算処理の結果を、重み係数Aを用いた乗算処理の結果を累積加算する累積加算部502よりも低い能力(演算や電力の観点における能力)を有する累積加算部501に入力する。
累積加算部501および累積加算部502は何れも、乗算部406による乗算結果を累積加算する。このように本実施形態では、重み係数のビット幅(ビット幅を変換したのであれば変換前のビット幅)に応じて累積加算部を切り替えている。
選択部503は、累積加算部501が累積加算を行った場合には、該累積加算部501による累積加算の結果を取得(選択)し、該取得した累積加算の結果を処理部407に入力する。また選択部503は、累積加算部502が累積加算を行った場合には、該累積加算部502による累積加算の結果を取得(選択)し、該取得した累積加算の結果を処理部407に入力する。
このように、本実施形態によれば、共通の乗算部と複数の累積加算部を利用し、重み係数のビット幅に応じて累積加算部を選択することで、処理時間と消費電力を削減することができる。
[第3の実施形態]
上記の実施形態では、2次元の画像のCNNに適用した例について説明したが、1次元の音声データまたは3次元以上の任意のデータのCNNに適用しても良い。また、上記の実施形態では、画像処理を行うCNNを例に取り説明したが、音声認識など、他の処理を行うCNNにも上記の実施形態は適用可能である。
上記の実施形態では、ステップS108では、ビット幅が1ビットの重み係数の値を(式2)や(式3)で変換し、該変換した値を8ビットに拡張した。しかし、ビット幅が1ビットの重み係数の値を変換せずにビット幅を8ビットに拡張するようにしても良い。また、値を変換せずに8ビットの符号拡張をしても良い。つまり、変換部405は重み係数の値を変換する機能を有していなくても良い。
また、上記の実施形態では、ビット幅が1ビットの重み係数と、ビット幅が8ビットの重み係数と、を含むCNNを用いたケースについて説明したが、任意のビット幅の重み係数を含むCNNを用いたケースにも上記の実施形態は同様に適用可能である。また、任意のビット幅の重み係数の値を変換し、拡張しても良い。
また、上記の実施形態では、各階層におけるいずれかの重み係数のビット幅(例えば最大のビット幅)に拡張するケースについて説明したが、拡張するビット幅はいずれかの重み係数のビット幅に限らず、任意のビット幅であっても良い。また、上記の実施形態では、CNNを用いたケースについて説明したが、CNN以外の任意の階層型ニューラルネットワークを用いても構わない。
また、上記の各実施形態で使用した数値、処理タイミング、処理順、処理の主体、データ(情報)の取得方法/送信先/送信元/格納場所などは、具体的な説明を行うために一例として挙げたもので、このような一例に限定することを意図したものではない。
また、以上説明した各実施形態の一部若しくは全部を適宜組み合わせて使用しても構わない。また、以上説明した各実施形態の一部若しくは全部を選択的に使用しても構わない。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本明細書の発明は、以下の情報処理装置、情報処理方法、コンピュータプログラムを含む。
(項目1)
複数の階層の重み係数のうち第1階層の重み係数のビット幅がN(Nは2以上の整数)ビットである場合は該重み係数を出力し、該重み係数のビット幅がNビットではない場合は、該重み係数を変換したNビットの重み係数を出力する変換手段と、
前記変換手段により出力された重み係数と、第1階層における特徴画像と、の積和演算に基づいて、第2階層の特徴画像を生成する演算手段と
を備えることを特徴とする情報処理装置。
(項目2)
前記変換手段は、前記第1階層の重み係数のビット幅が1ビットである場合、最下位ビットが1、残りのN-1ビットが全て該重み係数に対して反転した値となっている重み係数を出力することを特徴とする項目1に記載の情報処理装置。
(項目3)
前記変換手段は、ビット幅がNビットではない重み係数のビット幅をNビットに拡張し、該拡張した重み係数を出力することを特徴とする項目1に記載の情報処理装置。
(項目4)
前記演算手段は、前記変換手段により出力された重み係数と、第1階層における特徴画像と、の積和演算の結果に対して活性化処理およびプーリング処理を行うことで前記第2階層の特徴画像を生成することを特徴とする項目1ないし3の何れか1項目に記載の情報処理装置。
(項目5)
前記演算手段は、
前記変換手段により出力された重み係数と、前記第1階層における特徴画像と、の乗算を行う乗算部と、
該乗算部による乗算の結果を累積加算する第1累積加算部と、
該乗算部による乗算の結果を累積加算する第2累積加算部と
を備え、
前記第2累積加算部は前記第1累積加算部よりも能力が高い
ことを特徴とする項目1ないし4の何れか1項目に記載の情報処理装置。
(項目6)
前記変換手段により出力された重み係数が前記変換により得られた重み係数である場合には、前記第1累積加算部により前記乗算部による乗算の結果を累積加算する、ことを特徴とする項目5に記載の情報処理装置。
(項目7)
前記変換手段により出力された重み係数が前記変換により得られた重み係数ではない場合には、前記第2累積加算部により前記乗算部による乗算の結果を累積加算する、ことを特徴とする項目5または6に記載の情報処理装置。
(項目8)
前記変換手段および前記演算手段は、前記複数の階層のそれぞれについて動作することを特徴とする項目1ないし7の何れか1項目に記載の情報処理装置。
(項目9)
前記複数の階層それぞれにおける重み係数のいずれかのビット幅はNビットであることを特徴とする項目1ないし8の何れか1項目に記載の情報処理装置。
(項目10)
情報処理装置が行う情報処理方法であって、
前記情報処理装置の変換手段が、複数の階層の重み係数のうち第1階層の重み係数のビット幅がN(Nは2以上の整数)ビットである場合は該重み係数を出力し、該重み係数のビット幅がNビットではない場合は、該重み係数を変換したNビットの重み係数を出力する変換工程と、
前記情報処理装置の演算手段が、前記変換工程で出力された重み係数と、第1階層における特徴画像と、の積和演算に基づいて、第2階層の特徴画像を生成する演算工程と
を備えることを特徴とする情報処理方法。
(項目11)
コンピュータを、項目1ないし9の何れか1項目に記載の情報処理装置の各手段として機能させるためのコンピュータプログラム。
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
401:制御部 402:保持部 403:累積加算部 404:保持部 405:変換部 406:乗算部 407:処理部 408:保持部

Claims (11)

  1. 複数の階層の重み係数のうち第1階層の重み係数のビット幅がN(Nは2以上の整数)ビットである場合は該重み係数を出力し、該重み係数のビット幅がNビットではない場合は、該重み係数を変換したNビットの重み係数を出力する変換手段と、
    前記変換手段により出力された重み係数と、第1階層における特徴画像と、の積和演算に基づいて、第2階層の特徴画像を生成する演算手段と
    を備えることを特徴とする情報処理装置。
  2. 前記変換手段は、前記第1階層の重み係数のビット幅が1ビットである場合、最下位ビットが1、残りのN-1ビットが全て該重み係数に対して反転した値となっている重み係数を出力することを特徴とする請求項1に記載の情報処理装置。
  3. 前記変換手段は、ビット幅がNビットではない重み係数のビット幅をNビットに拡張し、該拡張した重み係数を出力することを特徴とする請求項1に記載の情報処理装置。
  4. 前記演算手段は、前記変換手段により出力された重み係数と、第1階層における特徴画像と、の積和演算の結果に対して活性化処理およびプーリング処理を行うことで前記第2階層の特徴画像を生成することを特徴とする請求項1に記載の情報処理装置。
  5. 前記演算手段は、
    前記変換手段により出力された重み係数と、前記第1階層における特徴画像と、の乗算を行う乗算部と、
    該乗算部による乗算の結果を累積加算する第1累積加算部と、
    該乗算部による乗算の結果を累積加算する第2累積加算部と
    を備え、
    前記第2累積加算部は前記第1累積加算部よりも能力が高い
    ことを特徴とする請求項1に記載の情報処理装置。
  6. 前記変換手段により出力された重み係数が前記変換により得られた重み係数である場合には、前記第1累積加算部により前記乗算部による乗算の結果を累積加算する、ことを特徴とする請求項5に記載の情報処理装置。
  7. 前記変換手段により出力された重み係数が前記変換により得られた重み係数ではない場合には、前記第2累積加算部により前記乗算部による乗算の結果を累積加算する、ことを特徴とする請求項5に記載の情報処理装置。
  8. 前記変換手段および前記演算手段は、前記複数の階層のそれぞれについて動作することを特徴とする請求項1に記載の情報処理装置。
  9. 前記複数の階層それぞれにおける重み係数のいずれかのビット幅はNビットであることを特徴とする請求項1に記載の情報処理装置。
  10. 情報処理装置が行う情報処理方法であって、
    前記情報処理装置の変換手段が、複数の階層の重み係数のうち第1階層の重み係数のビット幅がN(Nは2以上の整数)ビットである場合は該重み係数を出力し、該重み係数のビット幅がNビットではない場合は、該重み係数を変換したNビットの重み係数を出力する変換工程と、
    前記情報処理装置の演算手段が、前記変換工程で出力された重み係数と、第1階層における特徴画像と、の積和演算に基づいて、第2階層の特徴画像を生成する演算工程と
    を備えることを特徴とする情報処理方法。
  11. コンピュータを、請求項1ないし9の何れか1項に記載の情報処理装置の各手段として機能させるためのコンピュータプログラム。
JP2022129651A 2022-08-16 2022-08-16 情報処理装置、情報処理方法 Pending JP2024026993A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2022129651A JP2024026993A (ja) 2022-08-16 2022-08-16 情報処理装置、情報処理方法
EP23188954.4A EP4325397A1 (en) 2022-08-16 2023-08-01 Information processing apparatus, information processing method, and computer-readable storage medium
US18/449,200 US20240071068A1 (en) 2022-08-16 2023-08-14 Information processing apparatus, information processing method, and non-transitory computer-readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022129651A JP2024026993A (ja) 2022-08-16 2022-08-16 情報処理装置、情報処理方法

Publications (1)

Publication Number Publication Date
JP2024026993A true JP2024026993A (ja) 2024-02-29

Family

ID=87553759

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022129651A Pending JP2024026993A (ja) 2022-08-16 2022-08-16 情報処理装置、情報処理方法

Country Status (3)

Country Link
US (1) US20240071068A1 (ja)
EP (1) EP4325397A1 (ja)
JP (1) JP2024026993A (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10474430B2 (en) 2017-12-29 2019-11-12 Facebook, Inc. Mixed-precision processing elements, systems, and methods for computational models
JP7165018B2 (ja) 2018-10-03 2022-11-02 キヤノン株式会社 情報処理装置、情報処理方法

Also Published As

Publication number Publication date
US20240071068A1 (en) 2024-02-29
EP4325397A1 (en) 2024-02-21

Similar Documents

Publication Publication Date Title
US10929746B2 (en) Low-power hardware acceleration method and system for convolution neural network computation
CN109478144B (zh) 一种数据处理装置和方法
US11604975B2 (en) Ternary mode of planar engine for neural processor
JP7414930B2 (ja) 情報処理装置、情報処理方法
US11537864B2 (en) Reduction mode of planar engine in neural processor
US20240037399A1 (en) Texture unit circuit in neural network processor
WO2022163861A1 (ja) ニューラルネットワーク生成装置、ニューラルネットワーク演算装置、エッジデバイス、ニューラルネットワーク制御方法およびソフトウェア生成プログラム
KR20220062620A (ko) 뉴럴 프로세서를 위한 다중 모드 평면 엔진
US20230206051A1 (en) Broadcasting mode of planar engine for neural processor
CN113537479A (zh) 神经网络电路、边缘设备以及神经网络运算方法
US11853868B2 (en) Multi dimensional convolution in neural network processor
JP2024026993A (ja) 情報処理装置、情報処理方法
Rao et al. An energy-efficient accelerator for rain removal based on convolutional neural network
WO2021081854A1 (zh) 一种卷积运算电路和卷积运算方法
JP2021144428A (ja) データ処理装置、データ処理方法
SP et al. Evaluating Winograd Algorithm for Convolution Neural Network using Verilog
WO2022230906A1 (ja) ニューラルネットワーク生成装置、ニューラルネットワーク演算装置、エッジデバイス、ニューラルネットワーク制御方法およびソフトウェア生成プログラム
US20230128047A1 (en) Binary comparison and reduction operations in neural network processor
US20220222509A1 (en) Processing non-power-of-two work unit in neural processor circuit
JP2022183833A (ja) ニューラルネットワーク回路およびニューラルネットワーク演算方法
WO2023006170A1 (en) Devices and methods for providing computationally efficient neural networks
JP2024027919A (ja) ニューラルネットワーク学習装置およびニューラルネットワーク学習方法
JP2024004400A (ja) データ処理装置及びその方法
CN111695669A (zh) 运算方法、装置及相关产品
CN116830119A (zh) 神经引擎电路的多运算模式