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

画像処理装置、撮像装置、画像処理方法 Download PDF

Info

Publication number
JP2020191012A
JP2020191012A JP2019097073A JP2019097073A JP2020191012A JP 2020191012 A JP2020191012 A JP 2020191012A JP 2019097073 A JP2019097073 A JP 2019097073A JP 2019097073 A JP2019097073 A JP 2019097073A JP 2020191012 A JP2020191012 A JP 2020191012A
Authority
JP
Japan
Prior art keywords
memory
image processing
pixel block
image
predetermined number
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.)
Granted
Application number
JP2019097073A
Other languages
English (en)
Other versions
JP7278150B2 (ja
JP2020191012A5 (ja
Inventor
木村 真琴
Makoto Kimura
真琴 木村
ソクイ チン
Tsewei Chen
ソクイ チン
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 JP2019097073A priority Critical patent/JP7278150B2/ja
Priority to US16/876,224 priority patent/US11775809B2/en
Publication of JP2020191012A publication Critical patent/JP2020191012A/ja
Publication of JP2020191012A5 publication Critical patent/JP2020191012A5/ja
Application granted granted Critical
Publication of JP7278150B2 publication Critical patent/JP7278150B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • 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/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; 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/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Multimedia (AREA)
  • Biomedical Technology (AREA)
  • Computing Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Data Mining & Analysis (AREA)
  • Medical Informatics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Neurology (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

【課題】 階層型ニューラルネットワークにおいて全ての階層で特徴画像を読み出すためのメモリアクセスパターンが同じでなくても、1サイクルで読み出すことを可能にする技術を提供すること。【解決手段】 第1方向に並ぶ着目画素ブロック列を所定個数の画素ブロックのグループを単位に分割した場合に、それぞれのグループについて、該グループに属する前記所定個数の画素ブロックを前記所定個数のメモリに格納した場合、着目画素ブロック列において所定個数におけるある順位のメモリに格納された画素ブロックの直下の画素ブロックを、該順位と所定個数とで定まる順位のメモリに格納する。【選択図】 図1

Description

本発明は、階層型ニューラルネットワークを用いた画像処理技術に関するものである。
近年、深層学習の進歩により、画像認識の精度が上がった。畳込みニューラルネットワーク(Convolutional Neural Networks:CNN)は深層学習に用いられる手法として知られている。
CNNでは複数の階層が階層的に接続されている。各階層には複数の特徴画像が含まれている。CNNでは、事前の学習で決定されたフィルタ係数と特徴画像の画素(特徴データ)とを用いたフィルタ処理演算や、プーリング、活性化等の処理を特徴画像毎、階層毎に繰り返していく。フィルタ処理は積和演算からなる。CNNでは上記の階層構造やフィルタ係数等の組み合わせによって多様な認識処理を実現している。
特許文献1には、CNNのハードウェアアーキテクチャが開示されている。このアーキテクチャは特徴データを保持するメモリ、積和演算パラメータを保持するメモリ、特徴画像を並列に処理可能な複数の積和演算器、を有している。メモリから読み出した積和演算パラメータに応じて複数の積和演算器の設定を適応的に変更することで、別のメモリに保持された特徴データに対して多様な演算を施すことを可能としている。
米国特許第9710265号明細書
しかしながら、積和演算パラメータに応じて積和演算器が必要とする特徴データの処理対象領域は異なる。例えば、積和演算器が3×3の畳込み演算を行う場合は3行分の特徴データ、1×1の畳込み演算を行う場合は1行分の特徴データをメモリから取得する必要がある。仮に特徴画像を8画素×1画素を単位に分割し、この単位でメモリの1アドレスに格納する場合を考える。一回のメモリアクセスに1クロックサイクルを要するとすると、1×1の畳込み演算に必要な画素は1クロックサイクルで取得可能である。一方で、3×3の畳込み演算に必要な画素の取得には3クロックサイクルを要するので、この間、積和演算器は処理対象画素の演算を完了させることができない。これはプーリング(Pooling)処理部がプーリングを行う場合も同様で、必要な行数の特徴データを取得するまで、その処理を完了させることができない。
特徴画像を画素ブロックを単位に分割し、それらを複数のシングルポート型メモリに分散して保持する場合でも、演算器が処理対象とするデータが同一メモリの異なるアドレスに配置されている場合は、処理対象データを一度に取得することはできない。CNNでは階層毎に演算器の処理対象領域が異なるので、同一メモリに対する複数回のアクセスが発生してしまう可能性がある。デュアルポート型メモリのように、同時アクセス可能なポート数を増やしたメモリを採用してもこの問題を完全に解決することはできない。
このように、特許文献1に記載の技術は多様な演算に対応できるが、積和演算パラメータによっては、メモリアクセスに要するクロックサイクル数が律速要因となり、積和演算器が処理対象画素の演算を完了させるまでのクロックサイクル数が増加してしまう。結果として演算器が1クロックサイクルあたりに処理する画素数が低下するため、演算器の利用効率が低下するという問題がある。
本発明では、階層型ニューラルネットワークにおいて全ての階層で特徴画像を読み出すためのメモリアクセスパターンが同じでなくても、1サイクルで読み出すことを可能にする技術を提供する。
本発明の一様態は、階層型ニューラルネットワークの各階層における演算を行う複数の演算部を有する画像処理装置であって、前記演算部が処理対象とする階層の特徴画像を分割したそれぞれの画素ブロックを所定個数のメモリのいずれかに格納する格納制御手段と、前記特徴画像に対する演算に関する情報に基づいて前記メモリから画素ブロックを読み出すパターンであるメモリアクセスパターンを決定する決定手段と、前記メモリから前記メモリアクセスパターンに従って画素ブロックを読み出す読み出し手段とを備え、前記格納制御手段は、前記特徴画像において第1方向に並ぶ着目画素ブロック列を前記所定個数の画素ブロックのグループを単位に分割した場合に、それぞれのグループについて、該グループに属する前記所定個数の画素ブロックを前記所定個数のメモリに格納した場合、前記着目画素ブロック列において前記所定個数におけるある順位のメモリに格納された画素ブロックの直下の画素ブロックを、該順位と前記所定個数とで定まる順位のメモリに格納し、前記読み出し手段は、前記メモリアクセスパターンに従って前記所定個数のメモリから1サイクルで画素ブロックを読み出すことを特徴とする。
本発明の構成によれば、階層型ニューラルネットワークにおいて全ての階層で特徴画像を読み出すためのメモリアクセスパターンが同じでなくても、1サイクルで読み出すことができる。
認識処理部1601の構成例を示すブロック図。 画像処理システムの動作を示すフローチャート。 ステップS206における処理の詳細を示すフローチャート。 画素ブロックとメモリとの関係を示す図。 アクセスパターンの決定方法の一例を示す図。 1×1カーネル演算を実施する場合のタイミングチャートの一例を示す図。 2×2カーネル演算を実施する場合のタイミングチャートの一例を示す図。 2×2プーリング演算後に1×1カーネル演算を実施する場合のタイミングチャートの一例を示す図。 演算部101が入力されたデータをマルチクロックサイクルで処理する場合のタイミングチャートの一例を示す図。 認識処理部1601の構成例を示すブロック図。 ステップS206における処理の詳細を示すフローチャート。 サンプリング処理無しの場合における処理のタイミングチャートの一例を示す図。 サンプリング処理有の場合における処理のタイミングチャートの一例を示す図。 N=3、4の場合のメモリ割り当て例を示す図。 メモリ割り当て例を示す図。 画像処理システムの構成例を示すブロック図。 CNNの構成例を示す図。
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
[第1の実施形態]
先ず、本実施形態に係る画像処理システムの構成例について、図16のブロック図を用いて説明する。本実施形態に係る画像処理システムは、入力された画像から特定の物体を検出する機能を有するものであり、例えば、撮像した画像から特定の物体を検出する撮像装置である。
画像入力部1600は、光学系、CCD又はCMOSセンサ等の光電変換デバイス及びセンサを制御するドライバ回路/ADコンバータ/各種画像補正を司る信号処理回路/フレームバッファ等を有し、外界を撮像した撮像画像を生成して出力する。CCD、CMOSはそれぞれ、Charge−Coupled Devices、Complimentary Metal Oxide Semiconductor、の略語である。
認識処理部1601は、画像処理装置として機能し、画像入力部1600によって撮像された撮像画像を入力画像とし、該入力画像から特定の物体を検出する処理を行う。認識処理部1601の詳細については図1を用いて後述する。
DMAC(Direct Memory Access Controller)1602は、画像バス1603上の各処理部と、CPUバス1604上の各処理部と、の間のデータ転送を司るデータ転送部として機能する。画像バス1603には、画像入力部1600、認識処理部1601、前処理部1606、DMAC1602が接続されており、CPUバス1604には、CPU1607、ROM1608、RAM1609が接続されている。
ブリッジ1605は、画像バス1603とCPUバス1604との間のブリッジ機能を提供する。画像バス1603上の各処理部と、CPUバス1604上の各処理部と、の間のデータ転送は、このブリッジ1605を介して行われる。
前処理部1606は、画像入力部1600が撮像した撮像画像に対し、認識処理部1601による処理を効果的に行うための各種の前処理を行う。具体的には、前処理部1606は、撮像画像に対し、色変換処理/コントラスト補正処理等の画像変換処理を行う。このような画像変換処理は、例えば、画像処理用のハードウェアを用いて実施する。
CPU1607は、ROM(Read Only Memory)1608やRAM(Random Access Memory)1609に格納されているコンピュータプログラムやデータを用いて各種の処理を実行する。これによりCPU1607は、画像処理システム全体の動作制御を行うと共に、画像処理システムが行うものとして後述する各処理を実行若しくは制御する。
ROM1608には、画像処理システムが行うものとして後述する各処理をCPU1607に実行若しくは制御させるためのコンピュータプログラムやデータ、認識処理部1601を動作せるためのデータセット、等が格納されている。このデータセットには、認識処理部1601が入力画像から特定の物体を検出するために用いるCNNを規定するパラメータが含まれている。
本実施形態に係るCNNは、例えば、図17(a)や図17(b)に示す如く、階層構造を有し、各階層で特徴画像に対する各種の演算処理を行うものである。図17(a)の構成例(CNN階層例1)では、入力画像1701(入力階層)が階層1702に入力され、階層1702〜1706のそれぞれの階層で該入力画像に基づく特徴画像に対して各種の演算処理を行っている。図17(b)の構成例(CNN階層例2)では、入力画像1701が階層1702に入力され、それぞれの階層で該入力画像に基づく特徴画像に対して各種の演算処理を行っている。図17において階層間をつなぐ直線は、これらの積和演算、活性化処理を意味する。また階層によってはプーリングの処理を含む場合もある。
ROM1608に格納されているデータセットは、DMAC1602により認識処理部1601に転送され、認識処理部1601は、この転送されたデータセットを用いてCNNを設定する。
RAM1609は、画像入力部1600によって撮像された撮像画像、ROM1608からロードされたコンピュータプログラムやデータ、認識処理部1601から転送されたデータ、等を格納するためのエリアを有する。さらにRAM1609は、CPU1607が各種の処理を実行する際に用いるワークエリアを有する。このようにRAM1609は、各種のエリアを適宜提供することができる。
なお、図16に示した構成は、本実施形態に係る画像処理システムに適用可能な構成の一例に過ぎない。次に、上記の認識処理部1601の構成例について、図1のブロック図を用いて説明する。
演算部101は、複数の論理演算器を有する。保持部102はN個(所定個数)のメモリ(メモリ0〜メモリ(N−1))を有する(Nは整数)。N個のメモリ(メモリ0〜メモリ(N−1))のそれぞれには特徴画像の画素(特徴データ)が格納される(格納制御)。管理部103は、保持部102へのアクセス(メモリアクセス)を管理する。保持部104には、DMAC1602によりROM1608から転送された制御パラメータが格納される。制御パラメータについては後述する。制御部105は、認識処理部1601全体の動作制御を行うものであり、例えば、保持部104に格納されている制御パラメータを演算部101や管理部103に供給してこれらの動作を制御する。
次に、本実施系に係る画像処理システムの動作について、図2のフローチャートに従って説明する。ステップS202では、画像入力部1600は撮像を行うことで撮像画像を生成し、CPU1607はDMAC1602を制御して、該画像入力部1600によって生成された撮像画像を入力画像としてRAM1609に格納する。
ステップS203では、前処理部1606は、ステップS202でRAM1609に格納された入力画像に対して上記の前処理を行う。そしてCPU1607による制御の元、前処理部1606によって前処理が行われた入力画像はDMAC1602によって認識処理部1601に対して出力される。認識処理部1601の制御部105は、前処理部1606から出力された入力画像を複数の画素ブロックに分割し、それぞれの画素ブロックをメモリ0〜(N−1)のいずれかに格納する。メモリ0〜(N−1)への画素ブロックの格納については後述する。
ステップS204ではDMAC1602は、ROM1608に格納されているデータセットに含まれている「CNNにおける複数の階層のうち、これから演算処理を行う階層(処理対象階層)における積和演算用のパラメータ」を認識処理部1601に転送する。認識処理部1601の制御部105は、DMAC1602によりROM1608から転送された積和演算用のパラメータを用いて、CNNにおける処理対象階層を設定する。
ステップS205ではDMAC1602は、ROM1608に格納されている「処理対象階層における処理に関する情報」である制御パラメータを認識処理部1601に転送する。認識処理部1601の制御部105は、DMAC1602によってROM1608から転送された制御パラメータを保持部104に格納する。また認識処理部1601の制御部105は、メモリ0〜(N−1)に格納されている画素ブロックのうち、処理対象階層にて処理対象となる画素ブロックのアドレスを管理部103に通知する。
ステップS206では、演算部101は、CNNの処理対象階層における演算処理を実行し、該処理対象階層における演算が完了すると、その処理結果(特定の物体の検出結果や中間階層の特徴データ)を出力する。この処理結果はDMAC1602によってRAM1609に転送される。ステップS206における処理の詳細については、図3を用いて後述する。
ステップS207では、演算部101は、CNNにおける全ての階層についてステップS204〜S206の処理を行ったか否かを判断する。この判断の結果、CNNにおける全ての階層についてステップS204〜S206の処理を行った場合には、図2のフローチャートに従った処理は完了する。一方、CNNにおける全ての階層のうちステップS204〜S206の処理を行っていない階層が残っている場合には、この階層についてステップS204〜S206の処理を行うべく、処理はステップS204に戻る。
組み込み機器向けの小規模なCNNでは、全階層を一度に処理することが可能であるため、処理はステップS207を介して終了する。一方、大規模なCNNの処理では、一度にすべての階層を処理することができないため、CNNを時分割で処理することとなる。このような場合、処理はステップS207を介してステップS204に戻って残りの階層について演算処理を行う。
次に、上記のステップS206における処理の詳細について、図3のフローチャートに従って説明する。ステップS302では、制御部105は、保持部104に格納されている制御パラメータにおいて、これから行う特徴量演算に対応するパラメータを演算部101および管理部103に供給してこれらの動作を制御する。そして制御部105は、演算部101および管理部103に対して処理開始を指示する。
ステップS303では、管理部103は、処理開始を指示されると、制御パラメータが示す「処理対象階層における演算処理の内容」に基づいて、メモリ0〜(N−1)へのアクセスパターン(メモリアクセスパターン)を決定する。制御パラメータに基づくメモリアクセスパターンの決定方法については後述する。
ステップS304では、管理部103は、演算部101からメモリアクセス指示を受けると、ステップS303で決定したメモリアクセスパターンに従ってメモリ0〜(N−1)における「制御部105から通知されたアドレス」にアクセスする。このアクセスにより、演算部101は、アクセス先のメモリに格納されている画素ブロック(特徴データ)を読み出すことができるため、この読み出した画素ブロックに対して処理対象階層の演算を行うことで、判定対象階層に対する特徴量演算を実施する。そして演算部101は、特徴量演算を行った結果(画素ブロック)をメモリ0〜(N−1)のいずれかに格納する。メモリ0〜(N−1)への画素ブロックの格納については後述する。また、ステップS304にて行う特徴量演算の詳細については後述する。
特徴量演算が完了すると、ステップS305では、演算部101は、処理対象階層の全特徴量演算が完了したかを判定する。この判断の結果、処理対象階層の全特徴量演算が完了した場合には、処理は上記のステップS207に進み、完了していない特徴量演算が残っている場合には、処理はステップS302に戻る。
次に、特徴量演算におけるメモリアクセスの詳細について説明する。以下では、N=2の例について説明する。つまり、以下では、保持部102は4個のメモリ(メモリ0〜3)を有しているものとして説明する。しかし、Nの値は2に限らない。
保持部102は、対象画像(入力画像、特徴画像)を画素ブロックごとに保持し、管理部103は、画素ブロック単位で保持部102への読み書きを制御する。演算部101は、画素ブロックに対して、複数の論理演算器を並列動作させることで、入力された画素に対する演算を並列に実行する。演算部101が行う処理内容は、制御パラメータによって設定される。演算部101は、制御パラメータに基づき、活性化処理、カーネル演算、プーリング演算等を実行する。プーリング後にカーネル演算を実施、あるいはプーリング前にカーネル演算を実施といった各処理・演算の順序も設定に応じて可変である。
対象画像を画素ブロックを単位に分割した一例を図4(a)に示す。以下では、対象画像として特徴画像を用いるが、対象画像が入力画像であっても、以下の説明は同様である。
図4(a)では、画素ブロックのサイズを横8画素×縦1画素としており、特徴画像を横8画素×縦1画素のサイズを有する画素ブロックを単位に分割している。図4(a)において横軸をx軸、縦軸をy軸としている。左上隅の位置(0,0)における画素ブロックをblk(0,0)と表しており、位置(x、y)における画素ブロックをblk(x、y)と表している。
図4(b)は、図4(a)のそれぞれの画素ブロックをメモリ0〜3の何れに格納するのかを表した図である。1行目の画素ブロックについては左から順に、メモリ0(M0)、メモリ1(M1)、メモリ2(M2)、メモリ3(M3)、メモリ0(M0)、メモリ1(M1)、…というように、M0〜M3のセットをこの順で繰り返し(周期的に)割り当てている。2行目の画素ブロックについては左から順に、メモリ2(M2)、メモリ3(M3)、メモリ0(M0)、メモリ1(M1)、メモリ2(M2)、…というように、M2,M3,M0,M1のセットをこの順で繰り返し(周期的に)割り当てている。3行目の画素ブロックについては左から順に、メモリ0(M0)、メモリ1(M1)、メモリ2(M2)、メモリ3(M3)、メモリ0(M0)、メモリ1(M1)、…というように、M0〜M3のセットをこの順で繰り返し(周期的に)割り当てている。
つまり、blk(x、y)に割り当てたメモリを、順位p(p=0,1,2,3)におけるメモリpとすると、blk(x、y+1)に割り当てるメモリは、順位q(q=mod(p+2,4))におけるメモリqとなる。ここで、mod(a、b)はaをbで割ったときの余りを返す関数である。一般的には、画素ブロックに割り当てたメモリをメモリpとすると、該画素ブロックの直下の画素ブロックに割り当てたメモリはメモリq(q=mod(p+N,N))である。
よって、特徴画像において第1方向に並ぶ着目画素ブロック列を4個の画素ブロックのグループを単位に分割した場合に、それぞれのグループについて、該グループに属する画素ブロック0〜3をメモリ0〜3のそれぞれに割り当てたとする。そして第1方向と直交する第2方向に着目画素ブロックと隣接する隣接画素ブロック列を4個の画素ブロックのグループを単位に分割した場合、それぞれのグループについて該グループに属する画素ブロック0〜3をメモリ2、3、0、1のそれぞれに割り当てる。第1方向は水平方向、垂直方向の何れでも良い。
メモリ0〜3のそれぞれに格納された画素ブロックとそのアドレスを図4(c)に示す。Nの値はCNNの全階層の中で使われる最大のカーネルサイズ、最大のプーリングウインドウサイズ、サンプリングレート、ストライド間隔等に応じて決定される。処理対象領域が2画素×2画素の場合、垂直方向に2行を同時に読み出す必要があるため、N=2となる。図4(b)に示す割り当てでは、任意の4×1ブロック(32画素×1画素)、2×2ブロック(16画素×2画素)に対して同時アクセスが可能となり、1サイクルで必要な画素ブロックを読み出すことができる。
管理部103におけるアクセスパターンの決定方法の一例について図5を用いて説明する。図5のテーブルには、プーリングの有無、プーリングウインドウサイズ、カーネルサイズ、の組み合わせごとに、対応するアクセスパターンが登録されている。このテーブルは予め作成されてROM1608などに格納されている。
プーリングの有無、プーリングウインドウサイズ、カーネルサイズ、は制御パラメータに含まれている情報であり、管理部103は、制御パラメータを参照することで、これらの情報の組み合わせに対応するアクセスパターンを図5のテーブルから取得する。
図5のテーブルによれば、プーリング処理が「無し」の場合、カーネルサイズに応じてアクセスパターンが決まる。プーリング処理が「無し」の場合で且つカーネルサイズが「1×1」の場合は、対応するアクセスパターンは「4×1ブロック」となる。また、プーリング処理が「無し」の場合で且つカーネルサイズが「2×2」の場合は、対応するアクセスパターンは「2×2ブロック」となる。一方、プーリング処理が「有り」の場合は、カーネルサイズが「2×2」であれば、対応するアクセスパターンは「4×1ブロック」となる。
管理部103は、アクセスパターンが決まると(図5のテーブルから対応するアクセスパターンを選択すると)、メモリ0〜3において処理対象階層の対象とする画素ブロックのアドレスを特定する。そして管理部103は、演算部101からの要求に応じて、該特定したアドレスにアクセスして画素ブロックを読み出す。
図5では、プーリングが有効な場合は、プーリング後にカーネル演算を実施する場合の選択方法を示しているが、これはあくまで一例であり、これに限定されるものではない。つまり、制御パラメータと1つの画素ブロックのサイズから、一度にメモリから読み出すべき特徴画像の行数または列数を判定し、アクセスパターンが選択できれば他の選択論理・方法でもよい。また、特徴画像の解像度を減らすプーリングだけでなく、解像度を上げるアンプーリングの設定に基づきアクセスパターンを選択してもよい。
図6は、1×1カーネル演算を実施する場合のタイミングチャートの一例である。管理部103は上記の通り、制御パラメータに含まれているプーリングの有無、プーリングウインドウサイズ、カーネルサイズ、の組み合わせに基づき、アクセスパターンを決定する。図6では1×1カーネル演算に応じた4×1ブロック(横32画素×縦1画素)をアクセス単位と判定し、t1では、M0〜M3に保持されたblk(0,0)〜blk(3,0)の画素ブロック列601を同時に(1サイクルで)読み出す。図4(a)、(b)に示したように、blk(0,0)〜blk(3,0)はそれぞれM0〜M3に保持されているため、同時アクセスが可能である。図6では各ブロックの処理順序を破線矢印で示している。
t2では、演算部101において画素ブロック列601が処理されると共に、管理部103が画素ブロック列602を読み出す。t3では、演算部101が画素ブロック列601の処理結果(横32画素×縦1画素)を管理部103に返し、画素ブロック列602を処理する。管理部103は画素ブロック列603を読み出し、演算部101へと入力している。処理対象である画素ブロック列は各々別々のメモリに保持されているため、一度に読み出す・書き戻すことが可能となる。なお、管理部103は、演算部101から画素ブロック列601の処理結果(横32画素×縦1画素)を受けると、画素ブロック列601におけるそれぞれの画素ブロック列の処理結果を、該画素ブロックが格納されていたメモリのアドレスに書き戻す。
図7は、2×2カーネル演算を実施する場合のタイミングチャートの一例である。1つの画素ブロックのサイズは図6と同じである(横8画素×縦1画素)。管理部103は上記の通り、制御パラメータに含まれているプーリングの有無、プーリングウインドウサイズ、カーネルサイズ、の組み合わせに基づき、2×2カーネル演算に応じた2×2ブロック(横16画素×縦2画素)をアクセス単位と判定する。そして、t1では、M0〜M3に保持されたblk(0,0)、blk(1,0)、blk(0,1)、blk(1,1)の画素ブロック列701を同時に(1サイクルで)読み出す。図4(a)、(b)に示したように、blk(0,0)、blk(1,0)、blk(0,1)、blk(1,1)はそれぞれM0〜M3に保持されているため、同時アクセスが可能である。図7でも各ブロックの処理順序を破線矢印で示している。
t2では、管理部103が画素ブロック列702を読み出す。2×2ブロック以上のサイズのカーネル演算を行う場合、画素ブロック列701の右端画素の演算のためには、画素ブロック列702が必要となる。このため、1×1カーネル演算の場合(図6)とは異なり、t2の時点では、画素ブロック列701のカーネル演算を実行することはできない。
次にt3では、演算部101において画素ブロック列701が処理されると共に、管理部103が画素ブロック列703を読み出す。t4では、演算部101が画素ブロック列701の処理結果(横16画素×縦2画素)を管理部103に返し、画素ブロック列702を処理する。なお、管理部103は、演算部101から画素ブロック列701の処理結果(横16画素×縦2画素)を受けると、画素ブロック列701におけるそれぞれの画素ブロック列の処理結果を、後述するように、割り当てられたメモリのアドレスに書き込む。
図8は、2×2プーリング演算後に1×1カーネル演算を実施する場合のタイミングチャートの一例である。各時刻t1〜t4、tN〜tN+2において、管理部103によるメモリアクセスパターンは図7と同様である。管理部103は、制御パラメータに含まれているプーリングの有無、プーリングウインドウサイズ、カーネルサイズ、の組み合わせから、2×2ブロックをアクセス単位と判定している。図7では画素ブロック列701の右端部処理のためには画素ブロック列702の入力が必要であったが、図8の条件下ではその必要はなく、画素ブロック列801が入力された時刻t1の次の時刻t2で該画素ブロック列801に対する演算は開始可能となる。
以上、図4から図8を用いて説明したように、管理部103は、特徴画像のメモリ割り当てを、取り得る最大カーネルサイズまたは最大プーリングウインドウサイズ、ブロックサイズに応じて実施する。これにより、処理対象のカーネルサイズやプーリングの有無、プーリングウインドウサイズが階層毎に動的に変更されても、管理部103は、演算部101が必要とする画素ブロック列を毎クロックサイクル供給可能である。このため、演算部101の待ち時間・停止期間が短縮され、利用効率が向上する。
また、図6から図8のタイミングチャートでは、管理部103は同一メモリに対する読出しと書き込みを同時に行っている。これは各メモリ(メモリ0〜(N−1))がデュアルポート型で構成される場合であり、演算部101の処理性能(スループット)が高い場合に限定される。演算部101の処理性能や演算部リソースに制限がある場合は、演算部101へのデータ入力後、その演算結果を得るまでには数クロックサイクルの遅延が発生する。この場合はデュアルポート型でなく、シングルポート型メモリを適用することが可能である。
図9は、演算部101が入力されたデータを1クロックサイクルでなく、マルチクロックサイクルで処理する場合のタイミングチャートの一例である。時刻t1で入力された画素ブロック列901は時刻t2〜t5で処理され、その演算結果は時刻t6で出力される。管理部103は演算部101の処理性能に合わせて、データの読出しと書き込みを排他制御可能であり、この場合はシングルポート型のメモリで保持部102を構成可能である。演算部101の処理性能や演算部リソースに制約がある場合は、Nの値を最大カーネルサイズ、最大プーリングウインドウサイズ等ではなく、演算部101のスループットやリソースに応じて決定してもよい。
図6に示したように、1画素×1画素の演算を実施する場合は、演算部101の処理結果をそのまま入力データのアドレスに書き戻せばよい。例えば、図4のblk(0,0)の演算結果はblk(0,0)のアドレスに書き戻せばよい。演算部101が2画素×2画素以上の演算を実施する場合は、読出し時の画素サイズと、演算部101が返す画素サイズとが異なるため、そのまま書き戻すことができない。この場合は、保持部102において、読出し用、書込み用にそれぞれ異なる複数のメモリ(例えば、読出し用にM0〜M3、書込み用にM4〜M7)を用意し、割り当てるようにしてもよい。あるいは各メモリに対して、少なくとも特徴画像2面分のアドレス空間を確保しておき、読出し用のアドレス領域と書込み用のアドレス領域とを分離するようにしておいてもよい。また、管理部103内部で書込みデータを保持し、読出し時の形状(画素サイズ)と同じ形状になるまで書込みデータを保持してから、読出し時のアドレスに書き戻すようにしてもよい。
図4に示す割り当ての場合、管理部103は4×1ブロック、2×2ブロック以外にも、任意の1×1ブロック、2×1ブロック、3×1ブロック、1×2ブロックについても並列にアクセス可能である。また、画像処理システム全体の消費電力を削減するための低消費電力モード時や、画像処理システム全体の処理性能に余裕がある場合の低速動作モード時のアクセスパターンとして、これらのパターンを選択肢として図5のテーブルに追加するようにしてもよい。
以上説明したように、本実施形態によれば、階層型ニューラルネットワークにおいて全ての階層で特徴画像を読み出すためのメモリアクセスパターンが同じでなくても、1サイクルで読み出すことができる。これにより、演算部101の利用効率を向上させることが可能である。
なお、本実施形態で示した縦8画素×横1画素の画素ブロックサイズは具体的な説明を行うために一例としてあげたものであり、本実施形態は、任意の画素ブロックサイズに適用可能である。
[第2の実施形態]
以下では第1の実施形態との差分について説明し、以下で特に触れない限りは第1の実施形態と同様であるものとする。本実施形態では、サイドアウトプット(Side−Output)型のCNNを用いた画像処理システムについて説明する。
本実施形態に係る認識処理部1601の構成例について、図10のブロック図を用いて説明する。図10において図1に示した機能部と同じ機能部には同じ参照番号を付しており、該機能部に係る説明は省略する。
第一演算部1007および第二演算部1001のそれぞれは、複数の演算器を有する。サンプリング部1002はサンプリング処理を行う。第一管理部1006は第一保持部1005へのメモリアクセスを管理する。第二管理部1003は第二保持部1004へのメモリアクセスを管理する。
図17(b)にサイドアウトプット型のCNNの階層例を示す。図17(b)において、入力画像(入力階層)1701〜階層1706までの構成は第1の実施形態(図17(a))と同じである。
サイドアウトプット型のニューラルネットワークでは、これらの階層の特徴画像からさらにサイドアウトプット階層の特徴画像を生成して処理を行う。図17(b)では、階層1703〜1706のそれぞれにおける特徴画像に対してサンプリング処理を行うことで、サイドアウトプット階層用の入力データ1707〜1710を生成する。通常の階層(階層1702〜1706)の処理と同様に、サイドアウトプット階層の特徴画像1711〜1713に対しても、積和演算処理を繰り返し行う。本実施形態では、図4に示すメモリ構成をサイドアウトプット階層の特徴画像を保持する第二保持部1004にも適用する。なお、第一保持部1005、第一管理部1006、第一演算部1007はそれぞれ、第1の実施形態における保持部102、管理部103、演算部101に対応する。つまり、第一保持部1005、第一管理部1006、第一演算部1007のそれぞれの機能や動作については、第1の実施形態で説明したように、階層1702〜1706に対して第1の実施形態で説明した処理を行う。また、第二保持部1004の構成は第一保持部1005の構成と同様であるものとする。
本実施形態に係る認識処理部1601の動作(上記のステップS206における処理の詳細)について、図11のフローチャートに従って説明する。図11において、図3と同じ処理ステップには同じステップ番号を付しており、該処理ステップに係る説明は省略する。
ステップS1103では第二管理部1003は、処理開始を指示されると、制御パラメータが示す「サンプリング部1002でのサンプリングの有無、サンプリングレート」の組み合わせに対応する、第二保持部1004へのメモリアクセスパターンを決定する。制御パラメータに基づくメモリアクセスパターンの決定方法については、例えば、制御パラメータが示す「サンプリング部1002でのサンプリングの有無、サンプリングレート」の組み合わせに対応するメモリアクセスパターンを特定する。
ステップS1104では特徴量演算が開始されると、第二管理部1003は、ステップS1103で選択されたメモリアクセスパターンに従って、第二保持部1004のサイドアウトプット階層の特徴データ(例えば、特徴画像1711)へのメモリアクセスを行う。これと並行して第一保持部1005、第一管理部1006、第一演算部1007が通常の階層に対する処理を第1の実施形態と同様に開始する。第1の実施形態と異なる挙動として、第一演算部1007はサンプリング部1002に対しても特徴データを出力する。
サンプリング部1002は制御部105に設定されたパラメータに従って特徴データ(例えば、階層1708)に対してサンプリング処理を行い、サンプリング処理を行った特徴データを第二演算部1001に出力する。第二演算部1001は、第二管理部1003が読み出したサイドアウトプット階層の特徴データと、第一演算部1007を介して読み出され、サンプリング部1002でサンプリングされた通常の階層の特徴データと、を用いて積和演算を実施する。通常の階層(階層1702〜1706)に対する積和演算処理については第1の実施形態と同様であるため、これに係る説明は省略する。
図12は、サンプリング処理無しの場合における処理のタイミングチャートの一例である。時刻t1において、サンプリング部1002に16画素×2画素の画素ブロックが第一演算部1007から入力される。
時刻t2において、入力された16画素×2画素の画素ブロックがそのままの形状で(サンプリングされずに)サンプリング部1002から出力されると共に、次の16画素×2画素がサンプリング部1002に入力される。また時刻t2において第二管理部1003が読み出した、サイドアウトプット階層の特徴画像の画素ブロック列1201も第二演算部1001へと出力される。サンプリング処理を行わない場合、第二管理部1003はサンプリング部1002の出力ブロックサイズと同等の画素ブロックblk(x、y)、blk(x+1、y)、blk(x、y+1)、blk(x+1、y+1)をアクセスパターンとして判定する。
時刻t3において、第二演算部1001は入力された二つの特徴データを用いて、積和演算を実施する。サンプリング部1002と第二管理部1003は次の処理対象の特徴データを第二演算部1001へと出力する。
時刻t4において、第二演算部1001は、画素ブロック列1201の演算結果を第二管理部1003へと出力すると共に、画素ブロック1202列に対する積和処理を実行する。
図13は、サンプリング処理有の場合における処理のタイミングチャートの一例である。サンプリング部1002は時刻t1〜t4にかけて4つの画素ブロック(16画素×2画素)を取得し、32画素×1画素の画素ブロックにダウンサンプリングして、時刻t5で第二演算部1001へと出力する。時刻t5において第二管理部1003が読み出した、サイドアウトプット階層の特徴画像の画素ブロック群1301も第二演算部1001へと出力される。サンプリング処理を行う場合、第二管理部1003はサンプリング部1002の出力ブロックサイズと同等の画素ブロックblk(x、y)、blk(x+1、y)、blk(x+2、y)、blk(x+3、y)をアクセスパターンとして判定する。時刻t6において、第二演算部1001の演算結果が第二管理部1003へと出力される。
このように、本実施形態によれば、サイドアウトプット階層の特徴画像に対しても第1の実施形態に係るメモリ構成を適用することができる。サンプリングの有無、サンプリングレート等に応じて階層毎に可変となる複数のアクセスパターンに対して、第二演算部1001が必要とする特徴データ(ブロック群)を一度に供給でき、第二演算部1001の利用効率を向上させることが可能である。なお、第2の実施形態では、ダウンサンプリングを例に説明したが、アップサンプリングの場合も同様に適用可能である。
[第3の実施形態]
第1の実施形態および第2の実施形態で示した複数の処理部を一つに統合したり、1つの処理部を複数に分割してもよい。さらに1つの画素ブロックを複数のメモリに割り当ててもよい。
また第1の実施形態および第2の実施形態では、8画素×1画素の画素ブロック単位で一つのメモリに保持していた。しかし、例えばこの画素ブロックを2つの画素ブロック(4画素×1画素)に分割し、例えばM0をM0_AとM0_Bのように分割して、2つの画素ブロック(4画素×1画素)のそれぞれをM0_A、M0_Bに格納するようにしても良い。
また、第1の実施形態および第2の実施形態では、N=2とした例について説明したが、N=3以上の場合にも同様に適用可能である。N=3、4の場合のメモリ割り当て例をそれぞれ図14(a)、(b)に示す。任意の位置のN×1の画素ブロック1401、1403とN×N以下の画素ブロック群1402、1404を同時に読出し可能である。
また、第1の実施形態でも説明したように、割り当てるメモリを垂直方向にNだけずらす構成にも適用可能である。図15はN=4の場合で、xが増加する毎に垂直方向にNだけずらす構成である。任意の位置の1×N以下の画素ブロック1501とN×N以下の画素ブロック1502を同時に読出し可能である。管理部103や第二管理部1003は、この同時アクセス可能な画素ブロックの範囲で任意の領域のアクセスパターンを判定することとなる。
なお、ニューラルネットワークを用いた認識処理では、予め学習によって決定されたパラメータが各階層に適用される。Nの値及び画素ブロックサイズは、処理対象のネットワークのパラメータから求まる同時にアクセスする必要がある特徴画像の行数、列数に応じて決定すればよい。その場合、固定された情報ではなく、ネットワーク構成や処理の種別などに応じて適宜変化する情報はROM1608ではなく、読み書きが可能なRAM1609や不揮発性メモリなどに格納することになる。
また、学習時にNの値や画素ブロックサイズを、カーネルサイズや、プーリングウインドウサイズ、サンプリングレートに対する制約として与えておくことで、特徴画像を保持するメモリへのアクセスを高速化することが可能である。
また、サンプリングやプーリングだけでなく、特徴画像の解像度(画像サイズ)を上げる逆畳込み処理(Deconvolution)やアンプーリング(Unpooling)のように、階層毎に処理対象行数が可変となる処理を含む場合にも適用可能である。制御パラメータとして、これらの情報が含まれていればよい。
また、上記の各実施形態では、ニューラルネットワークを用いた認識処理について説明した。しかし、これに限定されるものではなく、任意の画像処理を対象としても構わない。
また、認識処理部1601を構成する各機能部はハードウェアで実装しても良い。しかし、一部の機能部、例えば、演算部101、管理部103、制御部105、第一演算部1007、第一管理部1006、第二演算部1001、第二管理部1003、サンプリング部1002などをソフトウェア(コンピュータプログラム)で実装しても良い。この場合、このコンピュータプログラムはROM1608などのメモリに格納され、RAM1609にロードされて制御部105やCPU1607による処理対象となる。
また、第1,2の実施形態では、認識処理部1601を画像処理システムに組み込んだ例について説明したが、入力された画像に対する物体検出や認識などを行ってその結果を出力するような目的で他の装置に組み込んでも良い。また、認識処理部1601を単体の装置としても良い。また、上記の各実施形態の一部若しくは全部を適宜組み合わせて使用しても構わない。また、上記の各実施形態の一部若しくは全部を選択的に使用しても構わない。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
101:演算部 102:保持部 103:管理部 104:保持部 105:制御部

Claims (13)

  1. 階層型ニューラルネットワークの各階層における演算を行う複数の演算部を有する画像処理装置であって、
    前記演算部が処理対象とする階層の特徴画像を分割したそれぞれの画素ブロックを所定個数のメモリのいずれかに格納する格納制御手段と、
    前記特徴画像に対する演算に関する情報に基づいて前記メモリから画素ブロックを読み出すパターンであるメモリアクセスパターンを決定する決定手段と、
    前記メモリから前記メモリアクセスパターンに従って画素ブロックを読み出す読み出し手段と
    を備え、
    前記格納制御手段は、
    前記特徴画像において第1方向に並ぶ着目画素ブロック列を前記所定個数の画素ブロックのグループを単位に分割した場合に、それぞれのグループについて、該グループに属する前記所定個数の画素ブロックを前記所定個数のメモリに格納した場合、前記着目画素ブロック列において前記所定個数におけるある順位のメモリに格納された画素ブロックの直下の画素ブロックを、該順位と前記所定個数とで定まる順位のメモリに格納し、
    前記読み出し手段は、前記メモリアクセスパターンに従って前記所定個数のメモリから1サイクルで画素ブロックを読み出す
    ことを特徴とする画像処理装置。
  2. 前記所定個数は、ある整数をNとしてNで表されることを特徴とする請求項1に記載の画像処理装置。
  3. 前記所定個数のメモリは、メモリ0〜メモリ(N−1)からなり、
    前記格納制御手段は、
    前記特徴画像において第1方向に並ぶ着目画素ブロック列をN個の画素ブロックのグループを単位に分割した場合に、それぞれのグループについて、該グループに属する画素ブロック0〜(N−1)をメモリ0〜(N−1)のそれぞれに格納した場合、前記着目画素ブロック列においてメモリp(p=0〜(N−1))に格納された画素ブロックの直下の画素ブロックを、メモリq(q=mod(p+N,N))に格納することを特徴とする請求項2に記載の画像処理装置。
  4. 前記読み出し手段は、前記メモリアクセスパターンに従ってメモリ0〜(N−1)から1サイクルで画素ブロックを読み出すことを特徴とする請求項2または3に記載の画像処理装置。
  5. 前記決定手段は、前記階層型ニューラルネットワークにおける、プーリングの有無、プーリングウインドウサイズ、カーネルサイズ、の組み合わせに対応するメモリアクセスパターンを決定することを特徴とする請求項1に記載の画像処理装置。
  6. 前記決定手段は、前記階層型ニューラルネットワークにおけるサンプリングの有無、サンプリングレートの組み合わせに対応するメモリアクセスパターンを決定することを特徴とする請求項1に記載の画像処理装置。
  7. 前記階層は、前記階層型ニューラルネットワークにおけるサイドアウトプットの階層を含むことを特徴とする請求項6に記載の画像処理装置。
  8. 前記Nの値は、前記階層型ニューラルネットワークの全階層の中で使われる最大のカーネルサイズ、最大のプーリングウインドウサイズ、サンプリングレート、ストライド間隔の何れかに応じて決定されることを特徴とする請求項2乃至7の何れか1項に記載の画像処理装置。
  9. 前記Nの値は、前記演算部のスループットまたはリソースに応じて決定されることを特徴とする請求項2乃至7の何れか1項に記載の画像処理装置。
  10. 撮像により画像を取得する画像入力手段と、
    請求項1乃至9の何れか1項に記載の画像処理装置による前記画像に対する演算結果を出力する出力手段と
    を備えることを特徴とする撮像装置。
  11. 前記出力手段は、前記階層型ニューラルネットワークに対して画像を入力することで該階層型ニューラルネットワークから出力された結果に基づく、該画像からの物体の検出結果を出力することを特徴とする請求項10に記載の撮像装置。
  12. 階層型ニューラルネットワークの各階層における演算を行う複数の演算部を有する画像処理装置が行う画像処理方法であって、
    前記画像処理装置の格納制御手段が、前記演算部が処理対象とする階層の特徴画像を分割したそれぞれの画素ブロックを所定個数のメモリのいずれかに格納する格納制御工程と、
    前記画像処理装置の決定手段が、前記特徴画像に対する演算に関する情報に基づいて前記メモリから画素ブロックを読み出すパターンであるメモリアクセスパターンを決定する決定工程と、
    前記画像処理装置の読み出し手段が、前記メモリから前記メモリアクセスパターンに従って画素ブロックを読み出す読み出し工程と
    を備え、
    前記格納制御工程では、
    前記特徴画像において第1方向に並ぶ着目画素ブロック列を前記所定個数の画素ブロックのグループを単位に分割した場合に、それぞれのグループについて、該グループに属する前記所定個数の画素ブロックを前記所定個数のメモリに格納した場合、前記着目画素ブロック列において前記所定個数におけるある順位のメモリに格納された画素ブロックの直下の画素ブロックを、該順位と前記所定個数とで定まる順位のメモリに格納し、
    前記読み出し工程では、前記メモリアクセスパターンに従って前記所定個数のメモリから1サイクルで画素ブロックを読み出す
    ことを特徴とする画像処理方法。
  13. コンピュータを、請求項1乃至9の何れか1項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
JP2019097073A 2019-05-23 2019-05-23 画像処理装置、撮像装置、画像処理方法 Active JP7278150B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019097073A JP7278150B2 (ja) 2019-05-23 2019-05-23 画像処理装置、撮像装置、画像処理方法
US16/876,224 US11775809B2 (en) 2019-05-23 2020-05-18 Image processing apparatus, imaging apparatus, image processing method, non-transitory computer-readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019097073A JP7278150B2 (ja) 2019-05-23 2019-05-23 画像処理装置、撮像装置、画像処理方法

Publications (3)

Publication Number Publication Date
JP2020191012A true JP2020191012A (ja) 2020-11-26
JP2020191012A5 JP2020191012A5 (ja) 2022-06-03
JP7278150B2 JP7278150B2 (ja) 2023-05-19

Family

ID=73454027

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019097073A Active JP7278150B2 (ja) 2019-05-23 2019-05-23 画像処理装置、撮像装置、画像処理方法

Country Status (2)

Country Link
US (1) US11775809B2 (ja)
JP (1) JP7278150B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11113838B2 (en) * 2019-03-26 2021-09-07 Nec Corporation Deep learning based tattoo detection system with optimized data labeling for offline and real-time processing
CN114168524B (zh) * 2021-12-07 2023-10-20 平头哥(上海)半导体技术有限公司 行缓存单元、加速单元、片上系统和行缓存配置方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018103736A1 (en) * 2016-12-09 2018-06-14 Beijing Horizon Information Technology Co., Ltd. Systems and methods for data management
WO2018185762A1 (en) * 2017-04-04 2018-10-11 Hailo Technologies Ltd. Neural network processor incorporating multi-level hierarchical aggregated computing and memory elements

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5171118B2 (ja) * 2007-06-13 2013-03-27 キヤノン株式会社 演算処理装置及びその制御方法
JP5184824B2 (ja) * 2007-06-15 2013-04-17 キヤノン株式会社 演算処理装置及び方法
JP5368687B2 (ja) * 2007-09-26 2013-12-18 キヤノン株式会社 演算処理装置および方法
US10175980B2 (en) 2016-10-27 2019-01-08 Google Llc Neural network compute tile
JP6945986B2 (ja) * 2016-10-28 2021-10-06 キヤノン株式会社 演算回路、その制御方法及びプログラム
JP6823495B2 (ja) * 2017-02-27 2021-02-03 株式会社日立製作所 情報処理装置および画像認識装置
JP6936592B2 (ja) * 2017-03-03 2021-09-15 キヤノン株式会社 演算処理装置およびその制御方法
CN107704923B (zh) * 2017-10-19 2024-08-20 珠海格力电器股份有限公司 卷积神经网络运算电路
JP7391553B2 (ja) * 2019-06-28 2023-12-05 キヤノン株式会社 情報処理装置、情報処理方法、及びプログラム
JP7299770B2 (ja) * 2019-07-01 2023-06-28 キヤノン株式会社 演算処理装置及び演算処理方法
JP7308674B2 (ja) * 2019-07-08 2023-07-14 キヤノン株式会社 演算処理装置及び演算処理方法
JP7527113B2 (ja) * 2020-01-23 2024-08-02 キヤノン株式会社 画像処理装置、その制御方法、プログラム並びに画像処理システム
JP2023013004A (ja) * 2021-07-15 2023-01-26 株式会社ディスコ 積層デバイスウェーハの形成方法
US20220222771A1 (en) * 2022-03-31 2022-07-14 Intel Corporation Multi-directional rolling cache and methods therefor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018103736A1 (en) * 2016-12-09 2018-06-14 Beijing Horizon Information Technology Co., Ltd. Systems and methods for data management
WO2018185762A1 (en) * 2017-04-04 2018-10-11 Hailo Technologies Ltd. Neural network processor incorporating multi-level hierarchical aggregated computing and memory elements

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
神宮司 明良 ほか2名: "特徴マップを空間分割したCNNのFPGAにおける小メモリ実装について", 電子情報通信学会技術研究報告, vol. 第119巻 第18号, JPN6023013943, 2 May 2019 (2019-05-02), pages 85 - 90, ISSN: 0005032483 *

Also Published As

Publication number Publication date
JP7278150B2 (ja) 2023-05-19
US11775809B2 (en) 2023-10-03
US20200372332A1 (en) 2020-11-26

Similar Documents

Publication Publication Date Title
KR102697368B1 (ko) 일반화된 이미지 프로세싱을 위한 이미지 프리프로세싱
US11699067B2 (en) Arithmetic processing apparatus and control method therefor
US20180137414A1 (en) Convolution operation device and convolution operation method
US20230169319A1 (en) Spatially sparse neural network accelerator for multi-dimension visual analytics
US11030095B2 (en) Virtual space memory bandwidth reduction
WO2017171771A1 (en) Data processing using resistive memory arrays
US11455781B2 (en) Data reading/writing method and system in 3D image processing, storage medium and terminal
EP3844610B1 (en) Method and system for performing parallel computation
US11657119B2 (en) Hardware accelerated convolution
JP7278150B2 (ja) 画像処理装置、撮像装置、画像処理方法
US11106968B1 (en) Circuit arrangements and methods for traversing input feature maps
CN110414672B (zh) 卷积运算方法、装置及系统
CN114282661A (zh) 神经网络模型的运行方法、可读介质和电子设备
JP7299770B2 (ja) 演算処理装置及び演算処理方法
JP7410961B2 (ja) 演算処理装置
CN111914988A (zh) 神经网络设备、计算系统和处理特征图的方法
JP2021012596A (ja) 演算処理装置及び演算処理方法
CN111078589B (zh) 一种应用于深度学习计算的数据读取系统、方法及芯片
JP7061742B2 (ja) プロセッサ装置
JP5358315B2 (ja) 並列計算装置
CN115952835A (zh) 数据处理方法、可读介质和电子设备
CN117422608A (zh) 图像引导滤波方法及系统
JP2024151449A (ja) 演算処理装置及びその方法
JP2024000852A (ja) プログラマブル信号処理回路及び当該回路用のプログラム
CN115719088A (zh) 一种支持存内cnn的中间缓存调度电路装置

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20210103

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220520

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220520

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230313

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: 20230410

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230509

R151 Written notification of patent or utility model registration

Ref document number: 7278150

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151