(57)【要約】【課題】ＣＮＮは入力画像と係数の畳み込み演算をチャネル数の分だけ繰り返す必要があり、演算量が極端に多い。【解決手段】半導体装置は畳み込み演算処理回路を有する画像認識装置を備える。前記畳み込み演算処理回路は、統合係数テーブルの係数が設定される係数レジスタと、入力画像と前記係数との積を求める積演算回路と、前記統合係数テーブルのチャネル番号が設定されるチャネルレジスタと、前記チャネル番号に基づいて累積加算演算の出力先を選択するチャネル選択回路と、前記累積加算演算の結果を格納する複数の出力レジスタと、を備える。前記統合係数テーブルは複数の入力係数テーブルを統合したものであり、前記統合係数テーブルはＮ×Ｎの大きさである。前記積演算回路はＮ×Ｎのデータを一度に演算することが可能である。【選択図】図７
2019040403.tif 000002
【特許請求の範囲】
【請求項１】
畳み込み演算処理回路を有する画像認識装置を備え、
前記畳み込み演算処理回路は、
統合係数テーブルの係数が設定される係数レジスタと、
入力画像と前記係数との積を求める積演算回路と、
前記統合係数テーブルのチャネル番号が設定されるチャネルレジスタと、
前記チャネル番号に基づいて累積加算演算の出力先を選択するチャネル選択回路と、
前記累積加算演算の結果を格納する複数の出力レジスタと、
を備え、
前記統合係数テーブルは複数の入力係数テーブルを統合したものであり、前記統合係数テーブルはＮ×Ｎの大きさであり、
前記積演算回路はＮ×Ｎのデータを一度に演算することが可能な半導体装置。
【請求項２】
請求項１において、
前記チャネル選択回路は、
前記チャネル番号ごとに前記積を加算する累積加算回路と、
前記累積加算回路の出力を前記チャネル番号ごとに保持する累積加算レジスタと、
を備え、
前記累積加算回路は、前記チャネル番号ごとの加算を並行して行う半導体装置。
【請求項３】
請求項２において、
前記チャネル選択回路は、さらに、前記チャネル番号に基づいて前記累積加算回路の出力を前記複数の出力レジスタのいずれかに出力するセレクタを備える半導体装置。
【請求項４】
請求項１において、
前記統合係数テーブルの各要素は前記複数の入力係数テーブルの対応する各要素において最も大きい値の係数が格納される半導体装置。
【請求項５】
請求項１において、
前記複数の入力係数テーブルの個数はＮ個であり、前記複数の入力係数テーブルのそれぞれはＮ×Ｎの大きさである半導体装置。
【請求項６】
請求項１において、さらに
入力パタンレジスタと、
前記入力パタンレジスタの内容に基づいて入力画像の配置を変更する入力パタン生成回路と、
を備え、
前記統合係数テーブルはＬ個の入力係数テーブルを統合したものであり、前記統合係数テーブルはＮ×Ｎの大きさであり、前記Ｌ個の入力係数テーブルのそれぞれはＭ×Ｍの大きさであり、ＭはＮよりも小さい値であり、
前記積演算回路はＮ×Ｎのデータを一度に演算することが可能な半導体装置。
【請求項７】
請求項６において、
前記チャネル選択回路は、
前記チャネル番号ごとに前記積を加算する累積加算回路と、
前記累積加算回路の出力を前記チャネル番号ごとに保持する累積加算レジスタと、
を備え、
前記累積加算回路は、前記チャネル番号ごとの加算を並行して行う半導体装置。
【請求項８】
請求項７において、
前記チャネル選択回路は、さらに、前記チャネル番号に基づいて前記累積加算回路の出力を前記複数の出力レジスタのいずれかに出力するセレクタを備える半導体装置。
【請求項９】
請求項６において、
前記入力パタン生成回路は、Ｍ×Ｍの入力画像を前記Ｌ個繰り返してＮ×Ｎの入力画像に変換する半導体装置。
【請求項１０】
半導体装置と、
半導体記憶装置と、
を備え、
前記半導体装置は、
統合係数テーブルの係数が設定される係数レジスタと、前記半導体記憶装置から読み出した入力画像と前記係数との積を求める積演算回路と、前記統合係数テーブルのチャネル番号が設定されるチャネルレジスタと、前記チャネル番号に基づいて累積加算演算の出力先を選択するチャネル選択回路と、前記累積加算演算の結果を格納する複数の出力レジスタと、を有する畳み込み演算処理回路と、
プーリング回路と、
を備え、
前記積演算回路はＮ×Ｎのデータを一度に演算することが可能であり、
前記統合係数テーブルは複数の入力係数テーブルを統合したものであり、前記統合係数テーブルはＮ×Ｎの大きさである画像認識システム。
【請求項１１】
請求項１０において、
前記チャネル選択回路は、
前記チャネル番号ごとに前記積を加算する累積加算回路と、
前記累積加算回路の出力を前記チャネル番号ごとに保持する累積加算レジスタと、
を備え、
前記累積加算回路は、前記チャネル番号ごとの加算を並行して行う画像認識システム。
【請求項１２】
請求項１１において、
前記チャネル選択回路は、さらに、前記チャネル番号に基づいて前記累積加算回路の出力を前記複数の出力レジスタのいずれかに出力するセレクタを備える画像認識システム。
【請求項１３】
請求項１０において、
前記統合係数テーブルの各要素は前記複数の入力係数テーブルの対応する各要素において最も大きい値の係数が格納される画像認識システム。
【請求項１４】
請求項１０において、
前記複数の入力係数テーブルの個数はＮ個であり、前記複数の入力係数テーブルのそれぞれはＮ×Ｎの大きさである画像認識システム。
【請求項１５】
請求項１０において、
前記半導体装置は、さらに、
入力パタンレジスタと、
前記入力パタンレジスタの内容に基づいて入力画像の配置を変更する入力パタン生成回路と、
を備え、
前記統合係数テーブルはＬ個の入力係数テーブルを統合したものであり、前記統合係数テーブルはＮ×Ｎの大きさであり、前記Ｌ個の入力係数テーブルのそれぞれはＭ×Ｍの大きさであり、ＭはＮよりも小さい値であり、
前記積演算回路はＮ×Ｎのデータを一度に演算することが可能な画像認識システム。
【請求項１６】
請求項１５において、
前記チャネル選択回路は、
前記チャネル番号ごとに前記積を加算する累積加算回路と、
前記累積加算回路の出力を前記チャネル番号ごとに保持する累積加算レジスタと、
を備え、
前記累積加算回路は、前記チャネル番号ごとの加算を並行して行う画像認識システム。
【請求項１７】
請求項１６において、
前記チャネル選択回路は、さらに、前記チャネル番号に基づいて前記累積加算回路の出力を前記複数の出力レジスタのいずれかに出力するセレクタを備える画像認識システム。
【請求項１８】
請求項１５において、
前記入力パタン生成回路は、Ｍ×Ｍの入力画像を前記Ｌ個繰り返してＮ×Ｎの入力画像に変換する画像認識システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は半導体装置に関し、例えば画像認識装置を備える半導体装置に適用可能である。
【背景技術】
【０００２】
２０１２年に国際的な画像分類コンテスト(ImageNet Large Scale Visual Recognition Competition：ＩＬＳＶＲＣ)で畳み込みニューラルネットワーク（Convolutional Neural Network：ＣＮＮ）が１位を獲得して以来、ＣＮＮは多くの画像認識処理で用いられその有用性が認められている。近年では、リソースが豊富なワークステーションだけでなく、組み込み向けの機器でもＣＮＮを活用したいという声が高まっている。ＣＮＮについては、例えば、特開２００８−３１０７００号公報や特開２０１６−９９７０７号公報に開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−３１０７００号公報
【特許文献２】特開２０１６−９９７０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、ＣＮＮは入力画像と係数の畳み込み演算をチャネル数の分だけ繰り返す必要があり、演算量が極端に多いので、リソースが制限された組み込み向けＳｏＣ（Silicon on Chip）では実装することが困難である。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００５】
本開示のうち代表的なものの概要を簡単に説明すれば下記の通りである。
すなわち、半導体装置はチャネル別に累積加算する機能を備え、複数のチャネルを並行して畳み込み演算する。
【発明の効果】
【０００６】
上記半導体装置によれば、畳み込み演算の演算量を低減することができる。
【図面の簡単な説明】
【０００７】
【図１】畳み込み演算の概念を説明する図
【図２Ａ】畳み込み演算の概念を説明する図
【図２Ｂ】畳み込み演算の概念を説明する図
【図２Ｃ】畳み込み演算の概念を説明する図
【図３】画像認識システムの構成例を示す図
【図４】図３の画像認識システムのデータの流れを示す図
【図５】図４の畳み込み演算処理回路の構成例を説明する図
【図６】図５のチャネル選択回路の構成例を説明する図
【図７】３×３の畳み込み演算処理回路の構成を説明する図
【図８】図７の統合係数テーブル生成装置の動作を説明する模式図
【図９】図７の畳み込み演算処理回路の動作を説明する概念図
【図１０】図７の累積加算回路の動作を説明する概念図
【図１１】図４の畳み込み演算処理回路の他の構成例を説明する図
【図１２】５×５の畳み込み演算処理回路の構成を説明する図
【図１３】図１２の統合係数テーブル生成装置の動作を説明する模式図
【図１４】図１２の入力パタン生成回路の動作を説明する模式図
【発明を実施するための形態】
【０００８】
まず、ＣＮＮの畳み込み演算について図１、２Ａ〜２Ｃを用いて説明する。図１は畳み込み演算の概念を説明する図であり、画像とフィルタを示す図である。図２Ａ〜２Ｃは畳み込み演算の概念を説明する図であり、画像の画素値とフィルタの係数の積和演算を示す図である。
【０００９】
説明を分かり易くするため、画像（ＩＭＡＧＥ）を簡略化して数字で表すと高さ×幅の行列と考えることができる。図１の左に示すように、入力画像を例えば４×４の２値で表す。このような行列に、図１の右に示すように、２×２のフィルタ（ＦＩＬＴＥＲ）を適用し畳み込み演算する。
【００１０】
図２Ａに示すように、画像の一番左上の部分にフィルタを重ね、同じ位置の値同士を掛け合わせる。掛け算の結果を足し合わせて出力する。図２Ｂに示すように、フィルタを１ピクセル分だけ横にずらして同じように値同士を掛け合せる。掛け算の結果を足し合わせて出力する。以下、図２Ｃに示すように、入力画像に対し、右下までフィルタ単位で要素ごとに掛け合わせて加算していく。
【００１１】
畳み込み演算を行う場合、入力画像とフィルタの係数の畳み込み演算をチャネル数（フィルタの数）の分だけ繰り返す必要がある。
【００１２】
実施形態では、チャネル別に累積加算する機能を備え、複数のチャネルを並行して畳み込み演算する。チャネル別に累積加算を実行可能なブロックの数と同等のチャネル数を同時に一括して畳み込み演算が可能なため、処理時間を短縮することができる。
【００１３】
畳み込み演算処理回路と統合係数テーブルを組み合わせて、複数のチャネルの畳み込み演算を１回で実施することができる。無駄な積和演算を省いてＣＮＮを少ない積和演算回数で実現することができる。入力パタン生成回路を用いることで、フィルタサイズに依存せず、任意の畳み込み演算を実施することができる。
【００１４】
以下、実施例および変形例について、図面を用いて説明する。ただし、以下の説明において、同一構成要素には同一符号を付し繰り返しの説明を省略することがある。
【実施例】
【００１５】
図３は画像認識システムの構成例を示すブロック図である。図４は図３の画像認識システムのデータの流れを示す図である。
【００１６】
図３に示すように、画像認識システム１は半導体装置１０と半導体記憶装置（ＭＥＭＯＲＹ）２０とを備える。半導体装置１０は、画像認識装置（ＩＲＵ）１１と、中央処理装置（ＣＰＵ）１２と、半導体記憶装置２０の制御回路（ＭＣ）１３と、それらを接続するバス１４と、を一つの半導体チップに備える。半導体記憶装置２０は、例えばＤＤＲ−ＳＤＲＡＭである。
【００１７】
図４に示すように、統合係数テーブル生成装置５０は、記憶装置に格納された統合前ＣＮＮモデルに含まれる入力係数テーブルを統合し、統合後ＣＮＮモデルの統合係数テーブルを生成し、半導体記憶装置２０に格納する。画像認識システム１の画像認識装置１１は、半導体記憶装置２０に格納された入力画像を統合係数テーブルに基づいて処理し、処理結果を半導体記憶装置２０に格納する。
【００１８】
入力画像は、光学系（レンズ）や撮像素子を有する撮像装置（不図示）によって取得された画像であり、撮像装置が取得した画像の全体または一部である。入力画像は半導体記憶装置２０に格納される。
【００１９】
画像認識装置１１は、統合後ＣＮＮモデルの統合係数テーブルと入力画像を用いて計算し、処理結果を出力する。画像認識装置１１は統合後ＣＮＮモデルで必要な演算を行う装置である。
【００２０】
処理結果は、画像認識装置１１の出力であり、例えば入力画像の分類結果、セグメンテーション結果、特定物体の検知結果である。処理結果は半導体記憶装置２０に格納される。
【００２１】
統合前ＣＮＮモデルは、一般的なＣＮＮモデルを指す。例えば、ＡｌｅｘＮｅｔ、ＶＧＧＮｅｔ、ＳｅｇＮｅｔ、Ｒ−ＣＮＮである。入力係数テーブルは、結合前ＣＮＮモデルに含まれる係数のうち、畳み込み演算に用いられる係数である。
【００２２】
統合係数テーブル生成装置５０は、入力係数テーブルを分析し、より少ない畳み込み演算で処理可能な統合係数テーブルを生成する装置であり、例えば中央処理装置と中央処理装置のプログラム等を格納する記憶装置等で構成される。
【００２３】
統合後ＣＮＮモデルは、統合前ＣＮＮモデルの畳み込み演算回数を削減したモデルである。統合係数テーブルは、統合係数テーブル生成装置５０の出力である。
【００２４】
画像認識装置１１は畳み込み演算処理回路１０１と活性化回路１０２とプーリング回路１０３とを備え、積演算結果をチャネル別に累積加算することが可能である。畳み込み演算処理回路１０１は、各係数に対応したチャネル番号ごとに畳み込み演算の結果を加算する。活性化回路１０２とプーリング回路１０３は、それぞれ活性化処理とプーリング処理を行う回路である。活性化処理には、例えば、周知のロジスティックジグモイド関数やＲｅＬＵ関数（Rectified Linear Units）などが用いられる。また、プーリング処理は、大きな画像を重要な情報は残しつつ縮小する方法で、例えば、画像内を小さなウィンドウに区切り、区切ったそれぞれのウィンドウから入力されるデータの最大値を出力する周知の最大プーリング関数や、入力されるデータの平均値を出力する周知の平均プーリング関数などが用いられる。
【００２５】
図５は畳み込み演算処理回路の構成例を説明するためのブロック図である。図６は図５のチャネル選択回路の構成例を説明するブロック図である。
【００２６】
統合係数テーブルは、畳み込み演算で用いられる係数が保存されているテーブルである。係数にチャネル番号が付加されている。統合係数テーブル生成装置５０は複数の入力係数テーブルから統合係数テーブルを生成する。
【００２７】
畳み込み演算処理回路１０１は、１回の畳み込み演算で複数回分の畳み込み演算の結果を出力する。畳み込み演算処理回路１０１は、ラインバッファ３０１と、積演算回路３０２と、チャネル選択回路３０３と、出力制御レジスタ３０４と、出力レジスタ３０５（第一出力レジスタ３０５＿１、第二出力レジスタ３０５＿２、・・・、第Ｎ出力レジスタ３０５＿Ｎ）と、係数レジスタ３０６と、チャネルレジスタ３０７と、を備える。ラインバッファ３０１は指定されたライン数分の入力画像データを半導体記憶装置２０より取得する。積演算回路３０２は、係数レジスタ３０６とラインバッファ３０１からの入力画像との積を計算する。チャネル選択回路３０３は、チャネルレジスタ３０７に登録されたチャネル番号を積演算結果に付加し、出力制御レジスタ３０４に従い、チャネル番号に応じて適切な出力レジスタ３０５に積演算結果を累積加算して出力する。出力制御レジスタ３０４は、チャネル番号と出力レジスタの番号を対応させる。
【００２８】
図６に示すように、チャネル選択回路３０３は、シフトダウン回路４０１、累積加算回路４０２、セレクタ回路４０３、累積加算レジスタ４０４を備えている。シフトダウン回路４０１は、積演算結果を指定されたビット数だけシフトダウンして出力する。累積加算回路４０２は、累積加算レジスタ４０４とシフトダウン回路４０１が出力した結果をチャネル番号ごとに加算して出力する。セレクタ回路４０３は、指定された出力レジスタ３０５に累積加算回路４０２の出力を出力する。
【００２９】
出力制御レジスタ３０４、係数レジスタ３０６、チャネルレジスタ３０７はＣＰＵ１２によって設定される。
【００３０】
統合係数テーブル生成装置５０が３種類の入力係数テーブルから１種の統合係数テーブルを生成し、その統合係数テーブルを用いて畳み込み演算する場合の例について図７〜１０を用いて説明する。図７は３×３の畳み込み演算処理回路の構成を示すブロック図である。図８は図７の統合係数テーブル生成装置の動作を説明する模式図であり、３チャネル分の入力係数テーブルから１つの統合係数テーブルを生成する場合を示している。図９は図７の畳み込み演算処理回路の動作を説明する概念図である。図１０は図７の累積加算回路の動作を説明する概念図である。
【００３１】
図７の畳み込み演算処理回路は３×３畳み込み演算回路を用いて、３チャネル分の３×３畳み込み演算を１回で実行する。
【００３２】
ここで、畳み込みに用いる係数テーブルの係数をｗi,j,chanelとし、テーブルをＣl,w,channelとし、
【００３３】
【数１】
2019040403.tif 000003
【００３４】
とする。ただし、i,jは整数、channelがチャネル番号、ｌがテーブルの幅、ｗがテーブルの高さ、を表している。統合係数テーブルの係数を
【００３５】
【数２】
2019040403.tif 000004
【００３６】
で表す。ただし、ＭＡＸ(・・・)は引数のうち最大の値を返す関数である。
【００３７】
また、li,j,FLT_Aを統合係数テーブルに用いるテーブルの種類を表す文字列とし、
【００３８】
【数３】
2019040403.tif 000005
【００３９】
とする。ただし、ＣＨＡＮＮＥＬ(・・・)は引数のうち最大の値を返したチャネル番号を表す関数である。このとき統合係数テーブルのＣ3，3，FLT_Aを
【００４０】
【数４】
2019040403.tif 000006
【００４１】
と表す。
【００４２】
図８は具体的にｌ＝３、ｗ＝３とした場合、どのように統合係数テーブルが生成されるかを模式的に表したものである。統合係数テーブル生成装置５０は３種類の入力係数テーブル（ＦＬＴ＿１、ＦＬＴ＿２、ＦＬＴ＿３）を処理して統合係数テーブル（ＦＬＴ＿Ａ）を出力する。入力係数テーブル（ＦＬＴ＿１、ＦＬＴ＿２、ＦＬＴ＿３）において、係数が一番大きいものが統合係数テーブルに出力されるが、その係数がそれぞれ網掛けされている。左上はＦＬＴ＿３の「７５」、中上はＦＬＴ＿１の「８７」、右上はＦＬＴ＿２の「５６」が最大値である。左中はＦＬＴ＿１の「１００」、中中はＦＬＴ＿３の「１４４」、右中はＦＬＴ＿２の「２１２」が最大値である。左下はＦＬＴ＿２の「１２０」、中下はＦＬＴ＿３の「６０」、右下はＦＬＴ＿１の「１６５」が最大値である。これらを統合した統合係数テーブル（ＦＬＴ＿Ａ）には入力係数テーブル（ＦＬＴ＿１、ＦＬＴ＿２、ＦＬＴ＿３）のそれぞれの網掛け部分が配置される。統合係数テーブル（ＦＬＴ＿Ａ）には係数の他にチャネル番号も格納される。
【００４３】
図８に示すように、畳み込み演算処理回路１０１は、統合係数テーブルから係数とチャネル番号を読み出し、それぞれ係数レジスタ３０６とチャネルレジスタ３０７に値を設定する。
【００４４】
図９に示すように、積演算回路３０２は係数レジスタ３０６に設定された値とラインバッファ３０１に設定された値の積を３×３の積演算回路で一度に計算する。チャネル選択回路３０３は、チャネルレジスタ３０７に設定された値（チャネル番号）に基づいて出力レジスタ３０５に累積加算回路４０２の出力を設定する。出力制御レジスタ３０４は出力レジスタ３０５とチャネルレジスタ３０７の対応を設定する。この例では、第一出力レジスタ３０５＿１がＦＬＴ＿１、第二出力レジスタ３０５＿２がＦＬＴ＿２、第三出力レジスタ３０５＿３がＦＬＴ＿３に対応する。畳み込み演算処理回路１０１は、第一出力レジスタ３０５＿１、第二出力レジスタ３０５＿２、第三出力レジスタ３０５＿３にそれぞれＦＬＴ＿１、ＦＬＴ＿２、ＦＬＴ＿３の係数を用いて畳み込み演算を実行した結果を出力する。
図１０に示すように、累積加算回路４０２は、チャネルレジスタ３０７のチャネル番号に基づいて積演算回路３０２の演算結果と累積加算レジスタ４０４の内容をチャネル別に入力し各チャネルを並行して加算する。これにより、チャネル別の累積加算結果が一緒に得られる。畳み込み演算処理回路１０１は、積演算の結果を一律に累積加算するのではなく、チャネル番号によって別々に累積加算する。
【００４５】
具体例では、３×３畳み込み演算回路を用いて３チャネル分の３×３畳み込み演算を１回で実行する例を説明したが、これに限定されるものではなく、実施例はＮ×Ｎ畳み込み演算回路を用いてＮチャネル分のＮ×Ｎ畳み込み演算を１回で実行することが可能である。
【００４６】
＜変形例＞
以下、代表的な変形例について例示する。以下の変形例の説明において、上述の実施例にて説明されているものと同様の構成および機能を有する部分に対しては、上述の実施例と同様の符号が用いられ得るものとする。そして、かかる部分の説明については、技術的に矛盾しない範囲内において、上述の実施例における説明が適宜援用され得るものとする。また、上述の実施例の一部、および、変形例の全部または一部が、技術的に矛盾しない範囲内において、適宜、複合的に適用され得る。
【００４７】
入力画像の配列によらず畳み込み演算を行う例について図１１を用いて説明する。図１１は畳み込み演算処理回路の他の構成例を説明するためのブロック図である。
【００４８】
畳み込み演算処理回路１０１Ａは、実施例の畳み込み演算処理回路１０１の構成に、さらに入力パタンレジスタ３０８と入力パタン生成回路３０９を有する。入力パタンレジスタ３０８は、ラインバッファ３０１に設定された画素値をどのように入力パタン生成回路３０９から出力するかを設定するためのレジスタである。入力パタン生成回路３０９は、ラインバッファ３０１を入力とし、入力パタンレジスタ３０８に従った出力を生成する回路である。入力パタンレジスタ３０８はＣＰＵ１２によって設定される。
【００４９】
次に、統合係数テーブル生成装置５０が２種類の入力係数テーブルから１種の統合係数テーブルを生成し、その統合係数テーブルを用いて畳み込み演算する場合の例について図１２〜１４を用いて説明する。図１２は畳み込み演算処理回路の構成を示す図である。図１３は図１２の統合係数テーブル生成装置の動作を説明する模式図であり、２チャネル分の入力係数テーブルから１つの統合係数テーブルを生成する場合を示している。図１４は図１２の入力パタン生成回路の動作を説明する模式図であり、３×３入力画像を２チャネル分の５×５の入力画像を生成する場合を示している。
【００５０】
図１２の畳み込み演算処理回路１０１Ａは、５×５畳み込み演算回路を用いて、２回分の３×３畳み込み演算を１回で実行する。
【００５１】
入力係数テーブルをＣ3,3,FLT_1、Ｃ3,3,FLT_2、統合係数テーブルをＣ5,5,FLT_A、とすると、
【００５２】
【数５】
2019040403.tif 000007
【００５３】
と表す。
【００５４】
また、Ｉi,jをｉ行ｊ列の入力画像の画素値（濃淡値）、入力パタン生成回路３０９の出力をＡ5,5とし、
【００５５】
【数６】
2019040403.tif 000008
【００５６】
とする。
【００５７】
図１３は具体的にｌ=3、ｗ=3とした場合、どのように統合係数テーブルが生成されるかを模式的に表したものである。統合係数テーブル生成装置５０は２種類の入力係数テーブル（ＦＬＴ＿１、ＦＬＴ＿２）を処理して統合係数テーブル（ＦＬＴ＿Ａ）を出力する。３×３の入力係数テーブル（ＦＬＴ＿１、ＦＬＴ＿２）の係数を５×５の統合係数テーブルに出力される。
【００５８】
図１３に示すように、ＦＬＴ＿Ａの一行目の左から右にＦＬＴ＿１の一行目の係数「４０」、「８７」、「２１」、二行目の係数「１００」、「４５」が配置される。ＦＬＴ＿Ａの二行目の左から右にＦＬＴ＿１の二行目の右端の係数「１４」、三行目の係数「９」、「３３」、「１６５」、ＦＬＴ＿２の一行目の左端の係数「７」が配置される。ＦＬＴ＿Ａの三行目の左から右にＦＬＴ＿２の一行目の真ん中の係数「４５」、右端の係数「５６」、二行目の係数「２５」、「３０」、「２１２」が配置される。ＦＬＴ＿Ａの四行目の左から右にＦＬＴ＿２の三行目の係数「１２０」、「２」、「２７」が配置される。ＦＬＴ＿Ａの四行目の右の２か所およびＦＬＴ＿Ａの五行目には係数は配置されず、空欄となる。統合係数テーブル（ＦＬＴ＿Ａ）には係数の他にチャネル番号も格納される。
【００５９】
図１４に示すように、入力パタン生成回路３０９は、入力パタンレジスタ３０８の５×５の入力パタンに基づいてラインバッファ３０１より取得した３×３の画素を繰り返す形態で出力する。入力パタンは１回目の３×３の画素（１−１、１−２、・・・、１−９）と２回目の３×３の画素（２−１、２−２、・・・、２−９）の配置順番を規定する。
【００６０】
図１４に示すように、入力パタン生成回路３０９の出力の一行目の左から右に入力画像の一行目の画素値「７６」、「１２０」、「３２」、二行目の画素値「７７」、「１３０」が配置される。二行目の左から右に入力画像の二行目の右端の画素値「３４」、三行目の画素値「１３０」、「１００」、「５４」、二回目の入力画像の一行目の左端の画素値「７８」が配置される。三行目の左から右に入力画像の一行目の真ん中の画素値「１２０」、右端の画素値「３２」、二行目の画素値「７７」、「１３０」、「３４」が配置される。四行目の左から右に入力画像の三行目の画素値「１３０」、「１００」、「５４」が配置される。四行目の右の２か所および五行目には画素は配置されず、空欄となる。これにより、入力パタン生成回路３０９の出力の画素の並びは統合係数テーブル（ＦＬＴ＿Ａ）の係数の並びと同じである。
【００６１】
入力パタンレジスタ３０８および入力パタン生成回路３０９を追加することで、ラインバッファ３０１に格納されている画素を任意の形で読み出すことができる。
【００６２】
実施例と同様に、畳み込み演算処理回路１０１Ａは、統合係数テーブルから係数とチャネル番号を読み出し、それぞれ係数レジスタ３０６とチャネルレジスタ３０７に値を設定する。
【００６３】
実施例と同様に、積演算回路３０２は係数レジスタ３０６に設定された値と入力パタン生成回路３０９で生成された値の積を５×５の積演算回路で一度に計算する。チャネル選択回路３０３は、チャネルレジスタ３０７に設定された値（チャネル番号）に基づいて出力レジスタ３０５に累積加算回路４０２の出力を設定する。出力制御レジスタ３０４は出力レジスタ３０５とチャネルレジスタ３０７の対応を設定する。この例では、第一出力レジスタ３０５＿１がＦＬＴ＿１、第二出力レジスタ３０５＿２がＦＬＴ＿２に対応する。畳み込み演算処理回路１０１Ａは、第一出力レジスタ３０５＿１、第二出力レジスタ３０５＿２、にそれぞれＦＬＴ＿１、ＦＬＴ＿２の係数を用いて畳み込み演算を実行した結果を出力する。 
実施例と同様に、累積加算回路４０２は、チャネルレジスタ３０７のチャネル番号に基づいて積演算回路の演算結果と累積加算レジスタの内容をチャネル別に入力し各チャネルを並行して加算する。これにより、チャネル別の累積加算結果が一緒に得られる。
【００６４】
変形例では、入力パタンレジスタ３０８と統合係数テーブル生成装置５０を組み合わせて用いることで任意の畳み込み演算が実施可能となる。そのため、５×５の畳み込み演算回路を用いていても３×３や１×１の畳み込み演算を効率よく行うことが可能となる。
【００６５】
具体例では、５×５畳み込み演算回路を用いて、２回分の３×３畳み込み演算を１回で実行する例について説明したが、これに限定されるものではなく、変形例はＮ×Ｎ畳み込み演算回路を用いて、Ｌ回分のＭ×Ｍ畳み込み演算を１回で実行することが可能である。ここで、Ｍ＜Ｎ、Ｌ＝ＩＮＴ（Ｎ２／Ｍ２）≧２である。
【００６６】
以上、本発明者によってなされた発明を実施形態、実施例および変形例に基づき具体的に説明したが、本発明は、上記実施形態、実施例および変形例に限定されるものではなく、種々変更可能であることはいうまでもない。
【符号の説明】
【００６７】
１・・・画像認識システム
１０・・・半導体装置
１１・・・画像認識装置
１０１・・・畳み込み演算処理回路
３０１・・・ラインバッファ
３０２・・・積演算回路
３０３・・・チャネル選択回路
４０１・・・シフトダウン回路
４０２・・・累積加算回路
４０３・・・セレクタ回路
４０４・・・累積加算レジスタ
３０４・・・出力制御回路
３０５・・・出力レジスタ
３０６・・・係数レジスタ
３０７・・・チャネルレジスタ
３０８・・・入力パタンレジスタ
３０９・・・入力パタン生成回路
１０２・・・活性化回路
１０３・・・プーリング回路
１２・・・中央処理装置
１３・・・制御回路
１４・・・バス
２０・・・半導体記憶装置
５０・・・統合係数テーブル生成装置
【図１】
2019040403.tif 000009
【図２Ａ】
2019040403.tif 000010
【図２Ｂ】
2019040403.tif 000011
【図２Ｃ】
2019040403.tif 000012
【図３】
2019040403.tif 000013
【図４】
2019040403.tif 000014
【図５】
2019040403.tif 000015
【図６】
2019040403.tif 000016
【図７】
2019040403.tif 000017
【図８】
2019040403.tif 000018
【図９】
2019040403.tif 000019
【図１０】
2019040403.tif 000020
【図１１】
2019040403.tif 000021
【図１２】
2019040403.tif 000022
【図１３】
2019040403.tif 000023
【図１４】
2019040403.tif 000024