Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7719617B2 - 画像処理装置、画像処理方法 - Google Patents
[go: Go Back, main page]

JP7719617B2 - 画像処理装置、画像処理方法 - Google Patents

画像処理装置、画像処理方法

Info

Publication number
JP7719617B2
JP7719617B2 JP2021046240A JP2021046240A JP7719617B2 JP 7719617 B2 JP7719617 B2 JP 7719617B2 JP 2021046240 A JP2021046240 A JP 2021046240A JP 2021046240 A JP2021046240 A JP 2021046240A JP 7719617 B2 JP7719617 B2 JP 7719617B2
Authority
JP
Japan
Prior art keywords
pixel
storage unit
layer
pixel information
coefficient
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.)
Active
Application number
JP2021046240A
Other languages
English (en)
Other versions
JP2022145001A (ja
JP2022145001A5 (ja
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 JP2021046240A priority Critical patent/JP7719617B2/ja
Priority to US17/698,481 priority patent/US20220309778A1/en
Publication of JP2022145001A publication Critical patent/JP2022145001A/ja
Publication of JP2022145001A5 publication Critical patent/JP2022145001A5/ja
Application granted granted Critical
Publication of JP7719617B2 publication Critical patent/JP7719617B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/95Hardware or software architectures specially adapted for image or video understanding structured as a network, e.g. client-server architectures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/36Applying a local operator, i.e. means to operate on image points situated in the vicinity of a given point; Non-linear local filtering operations, e.g. median filtering
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06V10/771Feature selection, e.g. selecting representative features from a multi-dimensional feature space
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Medical Informatics (AREA)
  • Nonlinear Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)
  • Complex Calculations (AREA)

Description

本発明は、畳み込み処理に関するものである。
近年、深層学習の進歩により、画像認識の精度が上がっている。畳み込みニューラルネットワーク(Convolutional Neural Networks:CNN)は深層学習に用いられる手法として知られている。
CNNでは、複数のレイヤが階層的に接続されており、各レイヤの中に複数枚の特徴画像が存在する。図2にレイヤの数が4で、各レイヤの中に特徴画像が4枚あるCNNの構成例を示す。CNNでは、学習した係数(重み係数)と特徴画像の画素(特徴データ)を用いて畳み込み処理を行う。畳み込み処理は積和演算であり、複数の乗算と累積加算とを含む。図2に示している矢印は積和演算を意味している。
現レイヤにおける特徴画像は、前レイヤにおける特徴画像と前レイヤに対応する係数とを用いて計算する。現レイヤにおける1枚の特徴画像を計算するためには、前レイヤにおける複数枚の特徴画像の情報が必要である。現レイヤにおける特徴画像を求めるための積和演算は以下の(式1)に従って行われる。
ここで、nは現レイヤ中の特徴画像のインデックスであり、m(m=1~M)は前レイヤ中の特徴画像のインデックスである。Oi,j(n)は、現レイヤにおけるインデックス=nの特徴画像中の位置(i,j)における特徴データ(積和演算結果)を示す。Ii,j(m)は、前レイヤにおけるインデックス=mの特徴画像I(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)回である。
上記の積和演算(フィルタ処理)を行った後に、CNNのネットワーク構造に基づき、積和演算結果Oi,j(n)を用いて活性化処理やプーリング等の処理を行って、現レイヤの特徴画像を求める。
CNNは画像分割等のアプリケーションにも適用されている。非特許文献1に記載の拡張畳み込み処理(Dilated Convolution)は、少ない演算コストで画像分割の精度を向上させるための技術である。拡張畳み込み処理を行う場合、積和演算は以下の(式2)に従って行われる。
ここで、変数Rは拡張畳み込み処理の倍率である。変数Rが1の場合、(式2)は(式1)と同じ式になる。変数Rの値が大きいほど、前レイヤの特徴画像における参照範囲が広い。拡張した後に、参照範囲は(X×Y)から〔R×(X-1)+1〕×〔R×(Y-1)+1〕になる。この演算では、係数を飛ばさずに処理するが、特徴画像の特徴データを(R-1)個おきに処理するため、水平方向または垂直方向の特徴データを飛ばしながら参照する。
フィルタ処理における積和演算((式2))で使用する係数(重み係数)Cを、後述する(式4)の拡大後(拡張後)のフィルタにおける係数C’に置き換えた積和演算を以下の(式3)に示す。
式(3)において式(1)や式(2)と共通する変数については上記の通りであるから、その説明は省略する。係数C’x,y(m,n)を以下の式(4)に示す。
x,yがRの倍数の場合、係数C’x,y(m,n)の値は係数Cx/R,y/R(m,n)と同じであり、有意の値(有効係数)である。一方、x,yがRの倍数ではない場合、係数C’x,y(m,n)の値は0になり、計算が省略されることを意味する。ここで、
は床関数であり、X以下の最大の整数を出力する。CNNは積和演算の回数が多いため、携帯端末や車載機器等の組み込みシステムに適用する場合、特徴データと係数の転送量を削減し、積和演算を効率的に行い、全体的な処理時間を短縮しなければならない。特許文献1と特許文献2では、複数の特徴データを並列に処理する構成が提案されている。
US2020/0410036 US10861123
Huikai Wu, Junge Zhang, Kaiqi Huang, Kongming Liang, and Yizhou Yu. FastFCN: Rethinking dilated convolution in the backbone for semantic segmentation, 2019. CoRR, abs/1903.11816.
拡張畳み込み処理(Dilated Convolution)は少ない演算コストで高い認識精度を得ることができるが、参照するデータの座標とメモリのアドレス等が連続ではないため、ハードウェアでの処理効率が低下する可能性がある。
特許文献1に記載の手法では、シストリックアレイ構成を用いて出力データを並列に計算する。ネットワークのパラメータを参照しながら(式4)で示すゼロの係数を利用して、非特許文献1に記載の拡張畳み込み処理を行うことは可能ではあるが、特徴画像I(m)の特徴データを飛ばしながら参照することができない。
特許文献2に記載の手法では、複数の異なる特徴データと共通の係数を用いて出力データを並列に計算する。非特許文献1に記載の拡張畳み込み処理を実行する場合、(式4)で示すゼロの係数を利用することが可能である。各画素と各係数が一筆書きして読み出されているのであれば、拡張畳み込み処理を効率的に行うことが可能である。ただし、特徴画像I(m)の特徴データを飛ばしながら参照することができないため、全てのゼロの係数の処理を省略できるわけではない。本発明では、畳み込み演算を行う場合に、特徴画像における画素を飛ばしながら参照することで処理時間を削減するための技術を提供する。
本発明の一様態は、特徴画像の画素ごとの画素情報が格納されたメモリとマルチプレクサとを有する2次元配置された画素格納部群のうち特定の画素格納部から前記画素情報を取得する第1取得手段と、
前記第1取得手段が取得した画素情報に基づく畳み込み演算を行う演算手段と
を備え、
前記画素格納部は、前記特徴画像における隣接画素を格納した画素格納部および前記特徴画像における非隣接画素を格納した画素格納部と接続されており、前記マルチプレクサの選択により画素格納部間で画素情報をシフト可能であり、
前記第1取得手段が取得済みの画素情報に対し前記特徴画像において非隣接の画素情報を取得するときには、前記特定の画素格納部が有する前記マルチプレクサは、該非隣接画素を格納した画素格納部から前記特定の画素格納部へ画素情報をシフトするように選択し、
前記第1取得手段が取得済みの画素情報に対し前記特徴画像において隣接した画素情報を取得するときには、前記特定の画素格納部が有する前記マルチプレクサは、該隣接画素を格納した画素格納部から前記特定の画素格納部へ画素情報をシフトするように選択する
ことを特徴とする。
本発明によれば、畳み込み演算を行う場合に、特徴画像における画素を飛ばしながら参照することで処理時間を削減することができる。
CNN処理部1305の動作のフローチャート。 CNNの構成例を示す図。 処理部406の構成例を示すブロック図。 CNN処理部1305の構成例を示すブロック図。 処理部309の構成例を示す図。 格納部306の構成例を示す図。 格納部305の構成例を示す図。 画素と位置の対応関係を示す図。 フィルタ係数と位置の対応関係を示す図。 画素の転送パターンおよびその方向、係数の転送パターンおよびその方向を示す図。 画素転送と係数転送の例を示す図。 CNNと畳み込み処理の例を示す図。 画像処理装置のハードウェア構成例を示すブロック図。 画素セット、係数フィルタ、畳み込み処理結果を示す図。 ステップS108における処理の詳細を示すフローチャート。 格納部306の構成例を示すブロック図。 係数フィルタの拡張例を示す図。 カスケード接続した拡張畳み込み処理を畳み込みニューラルネットワークに適用した例を示す図。 カスケード接続した拡張畳み込み処理の係数フィルタの例を示す図。 画像分割処理のための畳み込みニューラルネットワークの一例を示す図。 CNN処理部1305の構成例を示すブロック図。
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
[第1の実施形態]
まず、階層型ニューラルネットワーク(上記のCNNなど)における畳み込み演算を実行する画像処理装置のハードウェア構成例について、図13のブロック図を用いて説明する。本実施形態に係る画像処理装置には、PC(パーソナルコンピュータ)、タブレット端末装置、スマートフォンなどのコンピュータ装置が適用可能である。また、以下に画像処理装置が行うものとして説明する各処理を実施可能な構成であれば、画像処理装置の構成は図13に示した構成に限らず、如何なる構成を採用しても良い。
入力部1301は、キーボード、マウス、タッチパネル画面などのユーザインターフェースであり、ユーザが操作することで各種の指示をCPU1306に対して入力することができる。なお、入力部1301は画像処理装置が有することに限らない。
データ保存部1302は、ハードディスクドライブなどの大容量情報記憶装置である。データ保存部1302には、OS(オペレーティングシステム)や、画像処理装置が行うものとして説明する各処理をCPU1306に実行もしくは制御させるためのコンピュータプログラムやデータが保存されている。データ保存部1302に保存されているコンピュータプログラムやデータは、CPU1306による制御に従って適宜RAM1308にロードされ、CPU1306による処理対象となる。
なお、データ保存部1302には、フレキシブルディスク、CD-ROM、CD-R、DVD、メモリーカード、CFカード、スマートメディア、SDカード、メモリスティック、xDピクチャーカード、USBメモリ等のメモリ装置を適用しても良い。
また、データ保存部1302は画像処理装置が有することに限らず、例えば、LANやインターネットなどの有線および/または無線のネットワーク上に設けてもよい。その場合、画像処理装置は通信部1303を介して該データ保存部1302にアクセスして、該データ保存部1302に対してコンピュータプログラムやデータの読み書きを行う。通信部1303は、上記のネットワークを介して外部装置との間のデータ通信を行う。
表示部1304は、液晶画面やタッチパネル画面を有し、CPU1306による処理結果を画像や文字などでもって表示する。なお、表示部1304は画像処理装置が有することに限らない。また、表示部1304は、画像や文字を投影するプロジェクタなどの投影装置であっても良い。また、入力部1301と表示部1304とを一体化させてタッチパネル画面を構成しても良い。
CNN処理部1305は、RAM1308に格納されている処理対象の画像(入力画像)をCNNの入力層に入力して該CNNの各レイヤにおける演算処理を行い、該演算処理の結果をRAM1308やデータ保存部1302に格納する。
CPU1306は、RAM1308やROM1307に格納されているコンピュータプログラムやデータを用いて各種の処理を実行する。これによりCPU1306は、画像処理装置全体の動作制御を行うと共に、画像処理装置が行うものとして説明する各処理を実行もしくは制御する。
なお、RAM1308へのコンピュータプログラムやデータの格納方法については特定の格納方法に限らず、例えば、通信部1303を介して外部装置から受信したコンピュータプログラムやデータを一旦データ保存部1302に保存した後にRAM1308に格納しても良い。また、通信部1303を介して外部装置から受信したコンピュータプログラムやデータを直接RAM1308に格納しても良い。
CPU1306は、CNN処理部1305によりRAM1308もしくはデータ保存部1302に格納された「入力画像に対する演算処理の結果」を用いて、該入力画像に関する様々な処理を行うことができる。「入力画像に関する様々な処理」としては、例えば、該入力画像からの顔検出、該入力画像における顔認識、該入力画像における顔の数の計数、などがある。CPU1306は、このような「入力画像に関する様々な処理」を含む様々な処理の結果をRAM1308やデータ保存部1302に格納する。なお、図13では、CPU1306の数を1としているが、2以上であっても良い。
ROM1307には、画像処理装置の設定データ、画像処理装置の起動に係るコンピュータプログラムやデータ、画像処理装置の基本動作に係るコンピュータプログラムやデータ、などが格納されている。
RAM1308は、データ保存部1302やROM1307からロードされたコンピュータプログラムやデータを格納するためのエリア、CNN処理部1305から出力された演算処理の結果を格納するためのエリア、を有する。またRAM1308は、通信部1303によって外部装置から受信したコンピュータプログラムやデータを格納するためのエリア、CPU1306や画像処理部1309が各種の処理を実行する際に用いるワークエリア、を有する。このようにRAM1308は、各種のエリアを適宜提供することができる。
画像処理部1309は、CPU1306から画像処理の指示を受けると、RAM1308やデータ保存部1302に格納されている画像に対し、該画像の各画素の画素値のレンジ調整等の画像処理を行う。
入力部1301、データ保存部1302、通信部1303、表示部1304、CNN処理部1305、CPU1306、ROM1307、RAM1308、画像処理部1309は何れも、システムバス1310に接続されている。
次に、CNNの構成例を図2を用いて説明する。図2に示すCNNは、4つのレイヤ(レイヤ1、レイヤ2、レイヤ3、レイヤ4)を有する。レイヤ1は4つの特徴画像(特徴画像(1,1)、(1,2)、(1,3)、(1,4))を有し、レイヤ2は4つの特徴画像(特徴画像(2,1)、(2,2)、(2,3)、(2,4))を有する。レイヤ3は4つの特徴画像(特徴画像(3,1)、(3,2)、(3,3)、(3,4))を有し、レイヤ4は4つの特徴画像(特徴画像(4,1)、(4,2)、(4,3)、(4,4))を有する。
レイヤ1では、特徴画像(1,1)、(1,2)、(1,3)、(1,4)のそれぞれについて係数フィルタを用いた(式2)の積和演算を行うことで、レイヤ2の特徴画像(2,1)、(2,2)、(2,3)、(2,4))を出力特徴画像として生成する。
レイヤ2では、特徴画像(2,1)、(2,2)、(2,3)、(2,4)のそれぞれについて係数フィルタを用いた(式2)の積和演算を行うことで、レイヤ3の特徴画像(3,1)、(3,2)、(3,3)、(3,4))を出力特徴画像として生成する。
レイヤ3では、特徴画像(3,1)、(3,2)、(3,3)、(3,4)のそれぞれについて係数フィルタを用いた(式2)の積和演算を行うことで、レイヤ4の特徴画像(4,1)、(4,2)、(4,3)、(4,4))を出力特徴画像として生成する。
また、レイヤ1における拡張畳み込み処理倍率Rは1に設定されており、レイヤ2における拡張畳み込み処理倍率Rは2に設定されており、レイヤ3における拡張畳み込み処理倍率Rは4に設定されている。拡張前の係数フィルタのサイズは3x3であり、各レイヤでは、拡張前の係数フィルタを該レイヤに対応する拡張畳み込み処理倍率に応じて拡張した拡張後の係数フィルタを用いて特徴画像との積和演算を行う。
各レイヤにおける係数フィルタの拡張例を図17の左側に示す。レイヤ1では、枠1701内に示す如く、拡張前の係数フィルタ(左側の係数フィルタCx、y)を拡張畳み込み処理倍率R=1に応じて拡張した拡張後の係数フィルタ(右側の係数フィルタC’x、y)を用いて特徴画像との(式2)の積和演算を行う。R=1の場合、拡張前の係数フィルタと拡張後の係数フィルタとでサイズは変わっていない。
レイヤ2では、枠1702内に示す如く、拡張前の係数フィルタ(左側の係数フィルタCx、y)を拡張畳み込み処理倍率R=2に応じて拡張した拡張後の係数フィルタ(右側の係数フィルタC’x、y)を用いて特徴画像との(式2)の積和演算を行う。拡張後の係数フィルタは、拡張前の係数フィルタにおける係数間に1つの無為の係数(例えば「0」の係数)を挿入することで得られる5×5の係数フィルタである。
レイヤ3では、枠1703内に示す如く、拡張前の係数フィルタ(左側の係数フィルタCx、y)を拡張畳み込み処理倍率R=4に応じて拡張した拡張後の係数フィルタ(右側の係数フィルタC’x、y)を用いて特徴画像との(式2)の積和演算を行う。拡張後の係数フィルタは、拡張前の係数フィルタにおける係数間に3つの無為の係数を挿入することで得られる9×9の係数フィルタである。このように、拡張畳み込み処理倍率Rは、CNNにおけるレイヤごとに異なる。
図12にCNNと畳み込み処理の例を示す。レイヤ1にある4枚の特徴画像1201の同じ位置から特徴データを抽出して係数フィルタとの積和演算の結果を計算する。その結果が次のレイヤであるレイヤ2の同じ位置の特徴データになり、該特徴データを有する特徴画像1202が得られる。
上記のCNN処理部1305の構成例を図4のブロック図に示す。図4に示した機能部はハードウェアで実装しても良いし、ソフトウェア(コンピュータプログラム)で実装しても良い。後者の場合、このコンピュータプログラムはデータ保存部1302に保存される。CNN処理部1305の動作について、図1のフローチャートに従って説明する。
ステップS101では、制御部401は、拡張前の係数フィルタ、入力特徴画像(図2の例ではレイヤ1の特徴画像)、CNNの構造に関する情報(構造情報)をデータ保存部1302やRAM1308から読み出して、データ保持部408に格納する。構造情報には、例えば、積和演算の計算量、レイヤの数、特徴画像のサイズ、各レイヤにおける特徴画像の枚数等が含まれている。
そして制御部401による制御のもとで、ステップS103~S111の処理が、CNNにおけるレイヤごとに行われる。図2の例では、まずレイヤ1を対象レイヤとし、該レイヤ1についてステップS103~S111の処理が行われる。次に、レイヤ2を対象レイヤとし、該レイヤ2についてステップS103~S111の処理が行われる。次に、レイヤ3を対象レイヤとし、該レイヤ3についてステップS103~S111の処理が行われる。
ステップS103では、読み出し部405は、制御部401による制御のもとで、対象レイヤに対応する拡張畳み込み処理倍率Rをデータ保持部408から取得する。読み出し部405は、対象レイヤがレイヤ1であれば拡張畳み込み処理倍率Rとして「1」を取得し、対象レイヤがレイヤ2であれば拡張畳み込み処理倍率Rとして「2」を取得し、対象レイヤがレイヤ3であれば拡張畳み込み処理倍率Rとして「4」を取得する。
このようにして、レイヤごとに拡張畳み込み処理倍率Rを設定することができる。なお、拡張畳み込み処理倍率はレイヤごとに設定することに限らず、例えば出力特徴画像ごとに設定しても良いし、出力特徴画像のグループごとに設定しても良い。
そして制御部401による制御のもとで、ステップS105~S111の処理が、対象レイヤにて生成する出力特徴画像(対象レイヤに後続する次のレイヤ(次に対象レイヤとなるレイヤ)の特徴画像)ごとに行われる。図2の例では、対象レイヤがレイヤ1の場合は、まず特徴画像(2,1)を生成するべくステップS105~S111の処理を行い、次に、特徴画像(2,2)を生成するべくステップS105~S111の処理を行う。同様にして、次に特徴画像(2,3)を生成するべくステップS105~S111の処理を行い、次に、特徴画像(2,4)を生成するべくステップS105~S111の処理を行う。ステップS105では、制御部401は、処理部406が有する格納ユニット503(図5)に保持されている畳み込み演算処理結果を0に初期化する。
そして制御部401による制御のもとで、ステップS107~S108の処理が、対象レイヤにおける特徴画像ごとに行われる。図2の例では、対象レイヤがレイヤ1の場合は、まず特徴画像(1,1)を対象特徴画像とし、該対象特徴画像についてステップS107~S108の処理を行う。次に、特徴画像(1,2)を対象特徴画像とし、該対象特徴画像についてステップS107~S108の処理を行う。次に、特徴画像(1,3)を対象特徴画像とし、該対象特徴画像についてステップS107~S108の処理を行う。次に、特徴画像(1,4)を対象特徴画像とし、該対象特徴画像についてステップS107~S108の処理を行う。
ステップS107では、制御部401は、対象レイヤがレイヤ1であれば、データ保持部408に格納されている入力特徴画像を対象特徴画像として保持部402に転送し、データ保持部408に格納されている拡張前の係数フィルタを保持部404に転送する。一方、対象レイヤがレイヤA(Aは2以上の整数)である場合には、レイヤAについて処理部407が生成済みの特徴画像が対象特徴画像として保持部402に転送して格納されており、拡張前の係数フィルタは保持部404に転送済みであるため、ステップS107は省略しても良い。
ステップS108では、処理部406は制御部401による制御のもとで、保持部402に保持されている対象特徴画像、読み出し部405が読み出した拡張畳み込み処理倍率R、保持部404に保持されている係数フィルタ、を用いて畳み込み演算処理を行う。ステップS108における処理の詳細については、図15を用いて後述する。
処理がステップS110に進んだ時点では、処理対象のレイヤにおける全ての特徴画像について畳み込み演算処理が行われており、該畳み込み演算処理の結果(畳み込み演算処理結果)が格納ユニット503(図5)に格納されている。然るにステップS110では、処理部407は、制御部401による制御のもとで、格納ユニット503に格納されているそれぞれの畳み込み演算処理結果に基づいて以下の(式5)に基づく演算処理を行うことで活性化処理を行う。
ここで、f(x)は活性化関数であり、xは畳み込み演算処理結果である。ここでは活性化関数をReLU(Rectified Linear Unit)を用いて実現しているが、活性化関数はReLUに限定されるものではなく、他の非線形の関数、または量子化関数で実現しても良い。また、処理部407は、レイヤの情報に応じて、活性化処理の結果に基づいてプーリング処理を行い、必要に応じて出力特徴画像のサイズを調整する。
ステップS111では、制御部401は、ステップS110で求めた活性化・プーリング処理の結果(出力特徴画像)を、対象レイヤに後続する次のレイヤ(次に対象レイヤとなるレイヤ)の特徴画像として保持部402に格納する。
次に、上記のステップS108における処理の詳細について、図15のフローチャートに従って説明する。処理部406の構成例を図3のブロック図に示す。以下では、保持部402には、対象特徴画像が、6画素x6画素のサイズを有する画素ブロック(画素セット)単位で読み出し可能に格納されているものとする。例えば、制御部401は、対象特徴画像を複数の画素セット(隣接する画素セットと重複部分を有しながら)に分割し、それぞれの画素セットを保持部402に格納する。以下では、図14(a)に示す如く、画素セット1401中の位置(i、j)(1≦i、j≦6)における画素(特徴データ)をDi、jと表記する。
また以下では、保持部404には、3x3のサイズの係数フィルタが格納されているものとする。以下では、図14(b)に示す如く、係数フィルタ中の(i、j)(1≦i、j≦3)における係数をCi、jと表記する。
本実施形態では、演算器は4つあり、共通の係数に対して異なる画素の画素値を並列に乗算し、図14(c)に示す如く、異なる位置の4つの畳み込み処理結果(O1,1、O1,2、O2,1、~O 2,2 )を並列に計算する。
以下では、ステップS1503~S1512の処理が、対象特徴画像における画素セットごとに行われる。ステップS1503では、制御部311は、画素の転送パターンを規定する関数(式8)、係数の転送パターンを規定する関数(式9)、転送する画素の間隔を規定する関数(式10)、転送する係数の間隔を規定する関数(式11)、を設定部301に設定する。(式8)~(式11)については後述する。
ステップS1504では、制御部311は、保持部402に格納されている対象特徴画像において未選択の画素セットのうち1つの画素セットを選択画素セットとして選択し、該選択画素セットを保持部402から読み出して格納部306に格納する。また制御部311は、保持部404に保持されている係数フィルタのうち対応する係数フィルタを選択係数フィルタとして選択し、該選択係数フィルタを保持部404から読み出して格納部305に格納する。
ステップS1505では、制御部311は、畳み込み処理の結果の初期値を設定し、係数の処理順序を示す変数m(本実施形態以降で用いる変数mは(式4)以前で用いた変数mとは異なる)を1に初期化することで、処理部406の初期化を行う。畳み込み処理の結果の初期値は入力特徴画像と関係があり、最初の入力特徴画像を処理する場合には、畳み込み処理の結果の初期値は0に設定し、それ以降の特徴画像を処理する場合は、畳み込み処理の結果の初期値は、前の特徴画像の処理結果になる。
ステップS1506では、係数フィルタのカーネルを走査させて、選択画素セットと選択係数フィルタとを用いた積和演算により畳み込み処理(拡張畳み込み処理)が行われる。本実施形態では、以下の(式6),(式7)を計算することで畳み込み処理結果を取得する。
ここで、iは水平方向における位置を示すインデックス、jは垂直方向における位置を示すインデックス、である。Dx(m)は画素セットにおいて変数mに対応する水平位置を返す関数、Dy(m)は画素セットにおいて変数mに対応する垂直位置を返す関数である。Cx(m)は選択係数フィルタにおいて変数mに対応する水平位置を返す関数、y(m)は選択係数フィルタにおいて変数mに対応する垂直位置を返す関数である。ステップS1506における処理の詳細については後述する。
ステップS1512では、処理部309は、ステップS1506において該処理部309が行った積和演算により得られる4つの畳み込み処理結果(O1,1、O1,2、O2,1 2,2)をメモリ310に格納する。処理部407は、このメモリ310に格納されている畳み込み処理結果を用いて活性化処理およびプーリング処理を行う。
次に、上記のステップS1506における処理の詳細について説明する。ステップS1506では、ステップS1508~S1510の処理が、選択係数フィルタにおける係数の個数分繰り返される。
ステップS1508では、転送制御部307は、設定部301に設定した(式8)の関数および(式10)の関数を格納部306に転送する。そして転送制御部307は、格納部306に転送されたこれらの関数を用いて、選択画素セット中の位置(Dx(m)、Dy(m))における画素DDx(m)、Dy(m)を取得する。転送制御部304は、設定部301に設定した(式9)の関数および(式11)の関数を格納部305に転送する。そして転送制御部304は、格納部305に転送されたこれらの関数を用いて、選択係数フィルタ中の位置(Cx(m)、Cy(m))における係数CCx(m)、Cy(m)を取得する。
格納部306の構成例について図6を用いて説明する。格納部306は複数の画素格納ユニットを有する。画素格納ユニットは2種類(画素格納ユニットAと画素格納ユニットB)あり、それぞれが周りの画素格納ユニットと接続されており、2次元的に配置されている。画素格納ユニットAは処理部309と接続されており、画素格納ユニットBは処理部309と接続されていない。画素格納ユニットAおよび画素格納ユニットBは、画素を格納するための画素格納メモリとマルチプレクサとを有する。
図6では、格納部306は36個の画素格納ユニットを有し、拡張畳み込み処理倍率Rが1または2の処理をサポート可能である。ブロック601内の画素格納ユニットA以外の画素格納ユニットBの構成を破線603中に示す。1つの画素格納ユニットBは1つの画素を格納することができる。画素格納ユニットBは、設定部301に保持されている(式8)の関数および(式10)の関数に基づき、自身の周囲(自身の1つ上、1つ下、1つ左、1つ右、2つ上、2つ下、2つ左、2つ右)の8つの画素格納ユニットに保持されている画素を選択して、自身の画素格納メモリに格納する。また、1つの画素格納ユニットBは並列に周りの8つの画素格納ユニットに画素を供給することが可能である。演算器は4並列であり、並列に処理する4つの画素が異なるため、ブロック601内の画素格納ユニットA(画素格納ユニット1-1、1-2、2-1、2-2)は4つある。画素格納ユニットAの構成を破線602中に示す。画素格納ユニットAの構成は画素格納ユニットBの構成と同じであり、1つの画素格納ユニットAは1つの画素を格納することができる。画素格納ユニットAは設定部301に保持されている(式8)の関数および(式10)の関数に基づき、自身の周囲(自身の1つ上、1つ下、1つ左、1つ右、2つ上、2つ下、2つ左、2つ右)の8つの画素格納ユニットに保持されている画素を選択して、自身の画素格納メモリに格納する。また、1つの画素格納ユニットは並列に周りの8つの画素格納ユニットと格納部306の出力先に画素を供給することが可能である。拡張畳み込み処理倍率Rが1の場合、上記の「自身の周囲」として「自身の1つ上、1つ下、1つ左、1つ右」が選択され、拡張畳み込み処理倍率Rが2の場合、上記の「自身の周囲」として「自身の2つ上、2つ下、2つ左、2つ右」が選択される。
格納部305の構成例について、図7を用いて説明する。格納部305は複数の係数格納ユニットを有する。係数格納ユニットは2種類(係数格納ユニットAと係数格納ユニットB)あり、それぞれが周りの係数格納ユニットと接続されており、2次元的に配置されている。係数格納ユニットAは処理部309と接続されており、係数格納ユニットBは処理部309と接続されていない。係数格納ユニットAおよび係数格納ユニットBは、係数を格納するための係数格納メモリとマルチプレクサとを有する。
図7では、格納部305は9個の係数格納ユニットを有し、破線701に囲まれた係数格納ユニットA以外の係数格納ユニットBの構成を破線703中に示す。1つの係数格納ユニットBは1つの係数を格納することができる。係数格納ユニットBは設定部301に設定されている(式9)の関数および(式11)の関数に基づき、自身の周囲(自身の1つ上、1つ下、1つ左、1つ右)の4つの係数格納ユニットに保持されている係数を選択して、自身の係数格納メモリに格納する。また、1つの係数格納ユニットBは並列に周りの4つの係数格納ユニットに係数を供給することが可能である。演算器は4並列であるが、並列に処理する係数は同じであるため、破線701内の係数格納ユニットA(係数格納ユニット1-1)は1つある。係数格納ユニットAの構成を破線702中に示す。係数格納ユニットAの構成は係数格納ユニットBの構成と同じであり、1つの係数格納ユニットAは1つの係数を格納することができる。係数格納ユニットAは設定部301に保持されている(式9)の関数および(式11)の関数に基づき、自身の周囲(自身の1つ上、1つ下、1つ左、1つ右)の4つの係数格納ユニットに保持されている係数を選択して、自身の係数格納メモリに格納する。また、1つの係数格納ユニットは並列に周りの4つの係数格納ユニットと格納部305の出力先に係数を供給することが可能である。ここで、(式8)~(式11)を以下に示す。
Dx(1)、Dy(1)、Cx(1)、Cy(1)にはそれぞれ初期値が設定されている。変数mの値が1の場合は、Dx(m)、Dy(m)、Cx(m)、Cy(m)として、それぞれDx(1)、Dy(1)、Cx(1)、Cy(1)を用いる。変数mの値が2以上の場合には、Dx(m)、Dy(m)、Cx(m)、Cy(m)は(式8)~(式11)に従って求める。Ix()、Jx()は水平方向に対するシフト関数、Iy()、Jy()は垂直方向に対するシフト関数である。P()、P ()については後述する。
ステップS1509では、転送制御部307は、ステップS1508で取得した4つの画素(本実施形態では、演算器は4並列であり、これにより並列に取得して転送された4つの画素)を処理部309に転送する。また、転送制御部304は、ステップS1508で取得した1つの係数を処理部309に転送する。
処理部309の構成例について、図5のブロック図を用いて説明する。図5に示す如く、処理部309は、乗算器501、加算器502、格納ユニット503、のセットを(M×N)個有しており、(M×N)個の画素と1個の係数による積和演算を並列に処理することが可能である。本実施形態では、演算器は4並列であり、(M×N)は4である。ステップS1505で処理結果の初期値を設定したので、変数mが1の場合、格納ユニット503にはこの初期値が格納されている。
ステップS1510では、処理部309は、乗算器501と加算器502とを用いて「画素と係数との乗算」および「乗算結果の累積演算」を行うことで、上記の(式6)および(式7)の積和演算(畳み込み処理)を行う。そして処理部309は、該畳み込み処理の結果を格納ユニット503に格納する。本実施形態では、演算器は4並列なので、(式6)に示した画素と係数の積(Pi,j,m,i=1,2,j=1,2)を並列に計算し、計算された積を処理結果(Oi,j,i=1,2,j=1,2)に並列に加算することができる。
そして、ステップS1510の終了時点で、変数mの値が係数フィルタにおける係数の個数(XxY=9)に達していない場合には、制御部311により変数mの値を1つインクリメントして再度、ステップS1508~S1510の処理を繰り返す。一方、ステップS1510の終了時点で、変数mの値が係数フィルタにおける係数の個数(XxY=9)に達している場合には、処理はステップS1512に進む。
<拡張畳み込み処理の処理例>
ここでは、1つの画素セットと1つの係数フィルタの積和演算(ステップS1506)の処理例について説明する。積和演算を開始する前に、ステップS1505で処理部406を初期化したため、畳み込み処理結果O1,1~O2,2は初期値になる。変数mの値を1に設定してから、ステップS1508に進む。
(式8)におけるP(m)、(式9)におけるP(m)については、変数mの値が1の場合、P(m)、P(m)、Ix()、I()を計算せずに、(Dx(1)、Dy(1))=(Cx(1)、Cy(1))=(1,1)に設定する。
ステップS1508では、転送制御部307は、画素D1,1と係数C1,1を取得する。図8に示す如く、変数mの値が1の場合、画素セット801の中の4個の画素(D1,1~D2,2)を取得する。破線802は、図6の格納部306に格納された画素の例を示しており、36個の画素格納ユニットは36個の画素(D1,1~D6,6)を格納している。
図9に示す如く、変数mの値が1の場合、係数フィルタ901の中の1個の係数(C1,1)を取得する。破線902は図6の格納部305に格納された係数の例を示しており、9個の係数格納ユニットは9個の係数(C1,1~C3,3)を格納している。
画素の転送パターン(m、P(m)、Ix(P(m)),Iy(P(m)),方向、Dx(m)、Dy(m))と係数の転送パターン(m、P(m)、Jx(P(m)),Jy(P(m)),方向、Cx(m)、Cy(m))と方向の例について図10を用いて説明する。図6に示す如く、出力に繋がっている画素格納ユニットは4個あるが、ここでは左上の画素格納ユニット1-1のみで説明する。画素格納ユニット1-1は出力結果(O1,1)に対応しており、画素転送の開始位置は左上である。図7に示したように、出力に繋がっている係数格納ユニットは係数格納ユニット1-1である。係数転送の開始位置は左上である。
画素転送と係数転送の例(畳み込み処理倍率R=2)について、図11を用いて説明する。変数mの値が1の場合、D1,1とC1,1の積を初期値に加算し、(式6)でO1,1を計算する。図11に示したO1,2、O2,1、O2,2についてもO1,1と同様の方法で取得可能であるため、その説明は省略する。本実施形態では、4つの畳み込み処理結果を並列に計算することが可能である。その後、変数mの値を2に変更して、ステップS1508に進む。
変数mの値が2以上の場合、P(2)は0であり、Ix(P(2))およびIy(P(2))は(2,0)である。そして上記の(式8)および(式10)から(Dx(2)、Dy(2))を(3,1)として求める。図6に示したように、シフト関数の値は8種類あり、破線602または破線603の構成で入力画素を直接的に選択することができるので、処理速度が速い。
(2)は0であり、Ix(P(2))およびIy(P(2)))は(1,0)である。そして上記の(式9)および(式11)から(Cx(2)、Cy(2))を(2,1)として求める。図7に示したように、シフト関数の値は4種類あり、破線702または破線703の構成で係数を直接的に選択することができるので、処理速度が速い。
ステップS1508では、転送制御部307は、選択画素セット中の画素D3、1を取得する。転送制御部304は、係数フィルタ中の係数C2、1を取得する。図8に示す如く、変数mの値が2の場合、画素セット803の中の4個の画素(D2,1~D3,2)を出力画素として取得する。シフト関数の値は拡張畳み込み処理倍率Rに応じて異なる。
破線802は、拡張畳み込み処理倍率Rが1の場合に図6の格納部306が保持する画素を示す。出力画素のシフト方向は右であるため、格納部306の中の画素格納ユニット1-1は画素格納ユニット2-1から画素を選択し、図6の画素格納メモリに保持する。画素格納ユニット1-1にある画素は画素格納ユニット2-1にある画素に置き換えられ、破線802の状態が破線804の状態に変更される。
破線808は、拡張畳み込み処理倍率Rが2の場合に図6の格納部306が保持する画素を示す。805および806に示す如く、出力画素のシフト方向は右であるため、格納部306の中の画素格納ユニット1-1は画素格納ユニット3-1から画素を選択し、図6の画素格納メモリに保持する。画素格納ユニット1-1にある画素は画素格納ユニット3-1にある画素に置き換えられ、破線807の状態が破線808の状態に変更される。
このように、本実施形態によれば、読み出されたデータと隣接するデータ以外のデータ(読み出されたデータから行方向に2つ以上離れたデータ)を次に読み出し可能である。つまり、特徴画像から互いに非隣接の画素を取得可能である。
図9に示す如く、変数mの値が2の場合、係数フィルタ903の中の1個の係数(C2,1)を出力係数として取得する。シフト関数による処理は拡張畳み込み処理倍率Rと関係がない。
破線902(901に対応する)は、図7に示した格納部305が保持する係数を示す。出力係数のシフト方向は右であるため、格納部305の中の係数格納ユニット1-1は係数格納ユニット2-1からの係数を選択し、図8の係数格納メモリに保持する。係数格納ユニット1-1にある係数は係数格納ユニット2-1にある係数に置き換えられ、破線902の状態が破線904の状態に変更する。
係数の転送パターン(m、P(m)、Ix(P(m)),Iy(P(m)),方向、Dx(m)、Dy(m))と係数の転送パターン(m、P(m)、Jx(P(m)),Jy(P(m)),方向、Cx(m)、Cy(m))と方向の例について図10を用いて説明する。図10に示す如く、格納ユニット1-1は出力結果(O1,1)に対応しており、画素のシフト方向は右である。ここで、係数のシフト方向は右である。
画素転送と係数転送の例(畳み込み処理倍率R=2)について、図11を用いて説明する。変数mの値が2の場合、D3,1とC2,1の積を、先に計算したD1,1とC1,1の積に加算し、(式6)でO1,1を計算する。図11に示したO1,2、O2,1、O2,2についてもO1,1と同様の方法で取得可能であるため、その説明は省略する。
その後、変数mの値を3に変更し、ステップS1508に進む。図10、11、12に示したように、転送パターンに基づき、(式6)~(式11)で出力結果O1,1~O2,2を計算する。このようにして、乗算と累積加算を繰り返す。変数mの値が9に達すると、出力結果(O1,1、O1,2、O2,1、O2,2)は拡張畳み込み処理の結果としてメモリ310に格納されている。
このように、本実施形態では、転送パターンや拡張畳み込み処理倍率等に基づき、画素と係数のシフト量と方向を選択するので、それぞれ効率よく転送することができる。また、1つの画素格納ユニット及び係数格納ユニットがそれぞれ隣接する8つのユニットからデータを受け取ることにより、ゼロの係数による無駄な演算がなくなり、積和演算に必要な画素と係数を全部出力することができる。そのため、拡張畳み込み処理を効率的に行うことが可能である。
[第2の実施形態]
本実施形態以降では、第1の実施形態との差分について説明し、以下で特に触れない限りは、第1の実施形態と同様であるものとして説明する。本実施形態では、階層的な画素格納ユニットを用いて複数の拡張畳み込み処理倍率Rで処理する。
階層的な画素格納ユニットで構成される格納部306の構成例について、図16のブロック図を用いて説明する。図16の例では階層が3つあり、階層の変数はX、X、Xの3つある。3つの階層の画素格納ユニットから画素を選択し、第1の実施形態で説明した図6の構成と同じスループットで画素を出力することができる。複数の画素格納ユニットは複数のマルチプレクサを有する。ここでの階層はCNNの階層と関係がない。
第1階層1601では、2種類のシフト量(1または0)がある。画素格納ユニットAA1604には、第2階層1602において同位置の画素選択ユニットAB1605と、画素格納ユニットAA1604と上下左右に隣接する画素格納ユニットと、が接続されている。第2階層1602の同位置の画素選択ユニットAB1605が選択される場合は、階層の変数Xの値が0になるが、そうでない場合、変数Xの値が1になる。
第2階層1602では、2種類のシフト量(2または0)がある。画素選択ユニットAB1605には、第3階層1603において同位置の画素選択ユニットAC1606と、画素選択ユニットAB1605と上下左右に隣接しない画素選択ユニットと、が接続されている。第3階層1603の同位置の画素選択ユニットAC1606が選択される場合は、階層の変数Xの値が0になるが、そうでない場合、変数Xの値が1になる。
第3階層1603では、2種類のシフト量(4または0)がある。画素選択ユニットAC1606には、第1階層1601において同位置の画素格納ユニットAA1604と、画素選択ユニットAC1606と上下左右に隣接しない画素選択ユニットと、が接続されている。第1階層1601において同位置の画素格納ユニットAA1604が選択される場合は、階層の変数Xの値が0になるが、そうでない場合、変数Xの値が1になる。
式10でIx()とIy()を計算する場合、拡張畳み込み処理倍率Rは以下の(式12)により計算される。
これによれば、拡張畳み込み処理倍率Rの最大値が7になり、1~7の7種類の拡張畳み込み処理倍率Rをサポート可能である。拡張畳み込み処理倍率Rに基づいて、読み出されたデータの水平方向の間隔または垂直方向の間隔を決定できる。
階層数がHの場合、拡張畳み込み処理倍率Rの最大値が(2-1)になり、1~(2-1)の(2-1)種類の拡張畳み込み処理倍率をサポート可能である。本実施形態に係るCNN処理部1305の構成例を図21のブロック図に示す。ここでは、階層を示す変数をX(i=1,…,H)とする。この場合、拡張畳み込み処理倍率Rは、以下の(式13)に基づいて求めることができる。
このように、本実施形態によれば、階層的な画素格納ユニットはH倍の回路コストで(2-1)種類の拡張畳み込み処理倍率Rをサポートできるため、少ないハードウェアのコストで柔軟性を高くできるというメリットがある。
[第3の実施形態]
第1の実施形態および第2の実施形態では、CNNに適用した例について説明したが、これに限らず、CNN以外のアプリケーション(画像処理等のアプリケーション)に適用しても良い。
第1の実施形態および第2の実施形態では、2次元データを取り扱うCNNに適用した例について説明したが、これに限らず、1次元データや3次元以上のデータを取り扱うCNNに適用しても良い。
第1の実施形態では、画素格納ユニットを36個有する例について説明したが、アプリケーションに応じて、水平方向と垂直方向の画素格納ユニットの個数を決定し、様々な入力データサイズに対応するようにしても良い。
第1の実施形態では、拡張畳み込み処理倍率Rが1または2の処理をサポート可能である例について説明したが、図6に示す画素格納ユニットの入力を増やして、拡張畳み込み処理倍率Rが3以上の処理をサポートするようにしても良い。
第1の実施形態および第2の実施形態では、水平方向と垂直方向で画素(データ)を転送する例について説明したが、2次元でのデータ転送に限定されるわけでなく、簡略化した1次元または3次元以上でのデータ転送で実現しても良い。
第2の実施形態では、第1階層1601、第2階層1602で上下左右の画素格納ユニットから選択した結果を次の階層に転送する例について説明したが、4方向(上下左右)毎に階層的な画素格納ユニットを設けても良い。
第1の実施形態では、拡張前の係数フィルタのサイズが3×3である場合における畳み込み処理について説明したが、拡張前の係数フィルタのサイズは3×3に限らず、2×2等の任意のサイズであっても良い。
図17の右側に、拡張前の係数フィルタのサイズが2×2である場合における、係数フィルタの拡張例を示す。枠1704内に示す如く、拡張前の係数フィルタ(左側の係数フィルタCx、y)を拡張畳み込み処理倍率R=1に応じて拡張することで、拡張後の係数フィルタ(右側の係数フィルタC’x、y)を得る。R=1の場合、拡張前の係数フィルタと拡張後の係数フィルタとでサイズは変わっていない。
枠1705内に示す如く、拡張前の係数フィルタ(左側の係数フィルタCx、y)を拡張畳み込み処理倍率R=2に応じて拡張することで、拡張後の係数フィルタ(右側の係数フィルタC’x、y)を得る。拡張後の係数フィルタは、拡張前の係数フィルタにおける係数間に1つの無為の係数を挿入することで得られる3×3の係数フィルタである。
枠1706内に示す如く、拡張前の係数フィルタ(左側の係数フィルタCx、y)を拡張畳み込み処理倍率R=4に応じて拡張することで、拡張後の係数フィルタ(右側の係数フィルタC’x、y)を得る。拡張後の係数フィルタは、拡張前の係数フィルタにおける係数間に3つの無為の係数を挿入することで得られる5×5の係数フィルタである。
また、拡張前の係数フィルタのサイズが2×2の場合には、座標のインデックスを修正して、以下の(式14)を用いてOi,j(n)を求めるようにしても構わない。この式での拡張畳み込み処理倍率Rは2の倍数である。
拡張前の係数フィルタのサイズが2×2の場合、カスケード接続した2つの係数フィルタを用いて、サイズが3×3の係数フィルタに近似することができる。図19にカスケード接続した拡張畳み込み処理の係数フィルタの例を示す。
拡張畳み込み処理倍率Rが2の場合、係数フィルタのサイズは2×2から3×3に拡張される。係数が0の位置が同じであるため、カスケード接続した係数フィルタは、サイズが3×3から5×5に拡張された係数フィルタに近似できる。
拡張畳み込み処理倍率Rが4の場合、係数フィルタのサイズは2×2から5×5に拡張される。係数が0の位置が同じであるため、カスケード接続した係数フィルタは、サイズが5×5から9×9に拡張された係数フィルタに近似できる。
18にカスケード接続した拡張畳み込み処理を畳み込みニューラルネットワークに適用した例を示す。畳み込み処理レイヤは2層あり、特徴画像は3セット(C1枚、C1枚、C2枚、またはC1枚、C2枚、C2枚)ある。深さ方向畳み込み処理(Depthwise Convolution)と併用する場合、カスケード接続した拡張畳み込み処理の係数フィルタにおける係数が8×C1個、4×C1×(C2+1)個、4×(C1+1)×C2個ある。深さ方向畳み込み処理と併用しない場合、カスケード接続した拡張畳み込み処理の係数フィルタにおける係数が4×(C1+C2)×C2個、または4×(C1+C2)×C1個ある。サイズが3×3から5×5に拡張された係数フィルタにおける係数が9×C1×C2個ある。特徴画像の枚数C1、C2を調整し、カスケード接続した拡張畳み込み処理の係数の個数を近似する対象より小さくすることができるため、係数削減の効果がある。
画像分割処理のための畳み込みニューラルネットワークの一例を図20に示す。この畳み込みニューラルネットワークにカスケード接続した拡張畳み込み処理が含まれている。第1の実施形態もしくは第2の実施形態の構成で拡張前のフィルタサイズが2×2の拡張畳み込み処理を行い、図20に示す畳み込みニューラルネットワークを実現することができる。
なお、第1の実施形態および第2の実施形態では、特徴画像を画素セット単位で処理する例について説明したが、特徴画像を1つの画素セットとして上記の処理を行っても良い。
また、上記の各実施形態で使用した数値、処理タイミング、処理順、処理の主体、データ(情報)の構成/送信先/送信元/格納場所などは、具体的な説明を行うために一例として挙げたもので、このような一例に限定することを意図したものではない。
また、以上説明した各実施形態の一部若しくは全部を適宜組み合わせて使用しても構わない。また、以上説明した各実施形態の一部若しくは全部を選択的に使用しても構わない。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
1301:入力部 1302:データ保存部 1303:通信部 1304:表示部 1305:CNN処理部 1306:CPU 1307:ROM 1308:RAM 1309:画像処理部 1310:システムバス

Claims (12)

  1. 特徴画像の画素ごとの画素情報が格納されたメモリとマルチプレクサとを有する2次元配置された画素格納部群のうち特定の画素格納部から前記画素情報を取得する第1取得手段と、
    前記第1取得手段が取得した画素情報に基づく畳み込み演算を行う演算手段と
    を備え、
    前記画素格納部は、前記特徴画像における隣接画素を格納した画素格納部および前記特徴画像における非隣接画素を格納した画素格納部と接続されており、前記マルチプレクサの選択により画素格納部間で画素情報をシフト可能であり、
    前記第1取得手段が取得済みの画素情報に対し前記特徴画像において非隣接の画素情報を取得するときには、前記特定の画素格納部が有する前記マルチプレクサは、該非隣接画素を格納した画素格納部から前記特定の画素格納部へ画素情報をシフトするように選択し、
    前記第1取得手段が取得済みの画素情報に対し前記特徴画像において隣接した画素情報を取得するときには、前記特定の画素格納部が有する前記マルチプレクサは、該隣接画素を格納した画素格納部から前記特定の画素格納部へ画素情報をシフトするように選択する
    ことを特徴とする画像処理装置。
  2. さらに、
    係数フィルタから係数を取得する第2取得手段を備え、
    前記演算手段は、前記第1取得手段が取得した画素情報と前記第2取得手段が取得した係数とに基づく畳み込み演算を行う
    ことを特徴とする請求項1に記載の画像処理装置。
  3. 前記演算手段は、階層型ニューラルネットワークにおけるレイヤごとに、該レイヤにおける特徴画像から前記第1取得手段が取得した画素情報と、該レイヤにおける係数フィルタから前記第2取得手段が取得した係数と、に基づく畳み込み演算を行うことを特徴とする請求項2に記載の画像処理装置。
  4. 前記第1取得手段は、前記レイヤごとに設定されている値、前記レイヤごとの特徴画像に設定される値、前記レイヤごとの特徴画像のグループに設定される値、の何れかに応じて、前記特徴画像から取得する画素情報を選択することを特徴とする請求項3に記載の画像処理装置。
  5. 前記第1取得手段は、前記レイヤごとに設定されている値、前記レイヤごとの特徴画像に設定される値、前記レイヤごとの特徴画像のグループに設定される値、の何れかに応じた間隔で、前記特徴画像から互いに非隣接の画素情報を取得することを特徴とする請求項3または4に記載の画像処理装置。
  6. 前記第2取得手段は、前記レイヤごとに設定されている値、前記レイヤごとの特徴画像に設定される値、前記レイヤごとの特徴画像のグループに設定される値、の何れかに応じた間隔で、前記係数フィルタから互いに非隣接の係数を取得することを特徴とする請求項3ないし5の何れか1項に記載の画像処理装置。
  7. 前記間隔は、水平方向における間隔もしくは垂直方向における間隔であることを特徴とする請求項5または6に記載の画像処理装置。
  8. 前記非隣接の画素情報は、水平方向もしくは垂直方向において互いに非隣接の画素情報であることを特徴とする請求項1ないし7の何れか1項に記載の画像処理装置。
  9. 前記演算手段は、画素と係数との積和演算を行う手段を複数、有することを特徴とする請求項2ないし8の何れか1項に記載の画像処理装置。
  10. 前記特定の画素格納部は複数あり、
    前記第1取得手段が前記特定の画素格納部から取得した前記画素情報を前記演算手段へ並列に供給することを特徴とする請求項1ないし9の何れか1項に記載の画像処理装置。
  11. 画像処理方法であって、
    特徴画像の画素ごとの画素情報が格納されたメモリとマルチプレクサとを有する2次元配置された画素格納部群のうち特定の画素格納部から前記画素情報を取得する第1取得工程と、
    前記第1取得工程で取得した画素情報に基づく畳み込み演算を行う演算工程と
    を備え、
    前記画素格納部は、前記特徴画像における隣接画素を格納した画素格納部および前記特徴画像における非隣接画素を格納した画素格納部と接続されており、前記マルチプレクサの選択により画素格納部間で画素情報をシフト可能であり、
    前記第1取得工程では、取得済みの画素情報に対し前記特徴画像において非隣接の画素情報を取得するときには、前記特定の画素格納部が有する前記マルチプレクサに、該非隣接画素を格納した画素格納部から前記特定の画素格納部へ画素情報をシフトするように選択させ、
    前記第1取得工程では、取得済みの画素情報に対し前記特徴画像において隣接した画素情報を取得するときには、前記特定の画素格納部が有する前記マルチプレクサに、該隣接画素を格納した画素格納部から前記特定の画素格納部へ画素情報をシフトするように選択させる
    ことを特徴とする画像処理方法。
  12. コンピュータを、請求項1ないし10の何れか1項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
JP2021046240A 2021-03-19 2021-03-19 画像処理装置、画像処理方法 Active JP7719617B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021046240A JP7719617B2 (ja) 2021-03-19 2021-03-19 画像処理装置、画像処理方法
US17/698,481 US20220309778A1 (en) 2021-03-19 2022-03-18 Image processing apparatus, image processing method, and non-transitory computer-readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021046240A JP7719617B2 (ja) 2021-03-19 2021-03-19 画像処理装置、画像処理方法

Publications (3)

Publication Number Publication Date
JP2022145001A JP2022145001A (ja) 2022-10-03
JP2022145001A5 JP2022145001A5 (ja) 2024-03-28
JP7719617B2 true JP7719617B2 (ja) 2025-08-06

Family

ID=83363493

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021046240A Active JP7719617B2 (ja) 2021-03-19 2021-03-19 画像処理装置、画像処理方法

Country Status (2)

Country Link
US (1) US20220309778A1 (ja)
JP (1) JP7719617B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114565501B (zh) * 2022-02-21 2024-03-22 格兰菲智能科技有限公司 用于卷积运算的数据加载方法及其装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019028657A (ja) 2017-07-28 2019-02-21 株式会社パスコ 建物領域抽出用の学習済みモデル
CN110136136A (zh) 2019-05-27 2019-08-16 北京达佳互联信息技术有限公司 场景分割方法、装置、计算机设备及存储介质
US20200175313A1 (en) 2018-12-03 2020-06-04 Samsung Electronics Co., Ltd. Method and apparatus with dilated convolution
JP2020204894A (ja) 2019-06-17 2020-12-24 キヤノン株式会社 フィルタ処理装置及びその制御方法

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3843477B2 (ja) * 1996-02-05 2006-11-08 三菱電機株式会社 画像処理プロセッサ
JP5376920B2 (ja) * 2008-12-04 2013-12-25 キヤノン株式会社 コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
JP6318520B2 (ja) * 2013-09-27 2018-05-09 株式会社リコー 撮像装置、撮像システムおよび撮像方法
JP2015070529A (ja) * 2013-09-30 2015-04-13 株式会社リコー 画像処理装置、撮像装置および画像処理方法
JP6945986B2 (ja) * 2016-10-28 2021-10-06 キヤノン株式会社 演算回路、その制御方法及びプログラム
US10147193B2 (en) * 2017-03-10 2018-12-04 TuSimple System and method for semantic segmentation using hybrid dilated convolution (HDC)
JP2019074967A (ja) * 2017-10-17 2019-05-16 キヤノン株式会社 フィルタ処理装置およびその制御方法
CN111886606B (zh) * 2018-02-23 2025-02-07 Asml荷兰有限公司 用于图案的语义分段的深度学习
CN110363210B (zh) * 2018-04-10 2023-05-05 腾讯科技(深圳)有限公司 一种图像语义分割模型的训练方法和服务器
JP7240657B2 (ja) * 2018-05-15 2023-03-16 Tokyo Artisan Intelligence株式会社 ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム
CN108734211B (zh) * 2018-05-17 2019-12-24 腾讯科技(深圳)有限公司 图像处理的方法和装置
WO2019222951A1 (en) * 2018-05-24 2019-11-28 Nokia Technologies Oy Method and apparatus for computer vision
EP3608844B1 (en) * 2018-08-10 2025-07-02 Naver Corporation Methods for training a crnn and for semantic segmentation of an inputted video using said crnn
JP7165018B2 (ja) * 2018-10-03 2022-11-02 キヤノン株式会社 情報処理装置、情報処理方法
WO2020097401A1 (en) * 2018-11-08 2020-05-14 Netflix, Inc. Identifying image aesthetics using region composition graphs
CN109859158A (zh) * 2018-11-27 2019-06-07 邦鼓思电子科技(上海)有限公司 一种基于视觉的工作区域边界的检测系统、方法及机器设备
US10915755B2 (en) * 2018-12-11 2021-02-09 Canon Kabushiki Kaisha Alignment-free video change detection using deep blind image region prediction
CN110111313B (zh) * 2019-04-22 2022-12-30 腾讯科技(深圳)有限公司 基于深度学习的医学图像检测方法及相关设备
US11263747B2 (en) * 2019-04-26 2022-03-01 Oregon Health & Science University Detecting avascular areas using neural networks
EP3973468A4 (en) * 2019-05-21 2022-09-14 Magic Leap, Inc. Hand pose estimation
JP7278150B2 (ja) * 2019-05-23 2023-05-19 キヤノン株式会社 画像処理装置、撮像装置、画像処理方法
US11488018B1 (en) * 2019-06-27 2022-11-01 Rambus Inc. High-bandwidth neural network
US11379555B2 (en) * 2019-06-28 2022-07-05 Amazon Technologies, Inc. Dilated convolution using systolic array
US11461998B2 (en) * 2019-09-25 2022-10-04 Samsung Electronics Co., Ltd. System and method for boundary aware semantic segmentation
US11252417B2 (en) * 2020-01-05 2022-02-15 Size Limited Image data processing
EP4115392A4 (en) * 2020-03-04 2023-08-23 Magic Leap, Inc. SYSTEMS AND PROCESSES FOR EFFICIENT GENERATION OF FLOOR PLANS FROM 3D SCANS OF INTERIOR SCENES
JP7530187B2 (ja) * 2020-03-11 2024-08-07 キヤノン株式会社 データ処理装置、データ処理方法
CN111640120B (zh) * 2020-04-09 2023-08-29 之江实验室 一种基于显著性密集连接扩张卷积网络的胰腺ct自动分割方法
CN113591872B (zh) * 2020-04-30 2025-01-14 华为技术有限公司 一种数据处理系统、物体检测方法及其装置
JP7639832B2 (ja) * 2020-06-15 2025-03-05 日本電気株式会社 情報処理装置、画像処理ユニット、方法及びプログラム
US11328172B2 (en) * 2020-08-24 2022-05-10 Huawei Technologies Co. Ltd. Method for fine-grained sketch-based scene image retrieval
US12482249B2 (en) * 2020-09-07 2025-11-25 Intel Corporation Poly-scale kernel-wise convolution for high-performance visual recognition applications
EP3975110A1 (en) * 2020-09-25 2022-03-30 Panakeia Technologies Limited A method of processing an image of tissue and a system for processing an image of tissue
US11715276B2 (en) * 2020-12-22 2023-08-01 Sixgill, LLC System and method of generating bounding polygons
US20230410496A1 (en) * 2020-12-23 2023-12-21 Intel Corporation Omni-scale convolution for convolutional neural networks
US12125212B2 (en) * 2020-12-23 2024-10-22 Intel Corporation Methods and apparatus for high-fidelity vision tasks using deep neural networks
GB2602997B (en) * 2021-01-25 2023-03-01 Imagination Tech Ltd Implementing dilated convolution in hardware
EP4057183B1 (en) * 2021-03-10 2026-05-06 Aptiv Technologies AG Methods and systems for object detection

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019028657A (ja) 2017-07-28 2019-02-21 株式会社パスコ 建物領域抽出用の学習済みモデル
US20200175313A1 (en) 2018-12-03 2020-06-04 Samsung Electronics Co., Ltd. Method and apparatus with dilated convolution
CN110136136A (zh) 2019-05-27 2019-08-16 北京达佳互联信息技术有限公司 场景分割方法、装置、计算机设备及存储介质
JP2020204894A (ja) 2019-06-17 2020-12-24 キヤノン株式会社 フィルタ処理装置及びその制御方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Kuo-Wei Chang(外1名),Efficient Accelerator for Dilated and Transposed Convolution with Decomposition,2020 IEEE International Symposium on Circuits and Systems(ISCAS),米国,IEEE,2020年09月28日,p.1-5

Also Published As

Publication number Publication date
US20220309778A1 (en) 2022-09-29
JP2022145001A (ja) 2022-10-03

Similar Documents

Publication Publication Date Title
US10642622B2 (en) Arithmetic processing device and control method of the arithmetic processing device
JP7414930B2 (ja) 情報処理装置、情報処理方法
JP2022037022A (ja) ハードウェアにおけるカーネルストライドの実行
JP2023109847A (ja) 機械学習のための画像変換
US20170206089A1 (en) Information processing apparatus and computational method
CN108615072A (zh) 在硬件中执行平均池化
JP7352684B2 (ja) フィルタ処理装置およびその制御方法
JP7402623B2 (ja) フィルタ処理装置及びその制御方法
CA2929403C (en) Multi-dimensional sliding window operation for a vector processor
JP7530187B2 (ja) データ処理装置、データ処理方法
JP7719617B2 (ja) 画像処理装置、画像処理方法
CN121167100B (zh) 计算矩阵乘以向量的方法、装置、计算设备、存储介质
JP7715557B2 (ja) 分割方式の決定方法、決定装置、計算システム及びプログラム
WO2022160704A1 (zh) 一种图像处理方法、装置、计算机设备及存储介质
US12573171B2 (en) Interleaved processing of template data and search data according to a search window
JP2023073824A (ja) 演算装置、情報処理方法、及びプログラム
US8503793B2 (en) Correlation processing apparatus and medium readable by correlation processing apparatus
JP7622563B2 (ja) データ配置プログラム、プロセッサ、及びデータ配置方法
JP2024004400A (ja) データ処理装置及びその方法
JP2024026993A (ja) 情報処理装置、情報処理方法
JP2025038769A (ja) 情報処理装置、処理方法、及び、プログラム
CN117422608A (zh) 图像引导滤波方法及系统

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240319

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240319

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20241212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20250127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250327

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20250627

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250725

R150 Certificate of patent or registration of utility model

Ref document number: 7719617

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150