図面 (/)

技術 データ圧縮装置、データ圧縮方法およびデータ圧縮プログラム

出願人 富士通株式会社
発明者 小笠原良晃
出願日 2018年1月25日 (2年1ヶ月経過) 出願番号 2018-010148
公開日 2019年8月1日 (7ヶ月経過) 公開番号 2019-128806
状態 未査定
技術分野 イメージ分析 圧縮、伸長・符号変換及びデコーダ
主要キーワード コーナ形状 複合演算 演算コア プロセッサパッケージ 特徴マップ 入力データサイズ 出力チャネル数 処理レイヤ
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2019年8月1日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (14)

課題

画像に対する畳み込み演算の際に保持するデータのデータ量を削減する。

解決手段

演算部12は、画像データ13からフーリエ変換を用いて、異なる周波数に対応する複数の第1の係数を算出し、大きさが閾値未満の第1の係数が除外された周波数領域データ15を記憶部11に格納する。演算部12は、カーネルデータ14からフーリエ変換を用いて、周波数領域データ15が示す第1の係数に対応する周波数の第2の係数を算出し、周波数領域データ16を記憶部11に格納する。演算部12は、周波数領域データ15,16と逆フーリエ変換とを用いて、画像データ13にカーネルデータ14を適用した結果を示す特徴マップ17を生成する。

概要

背景

画像認識画像分類画像検索などの画像処理では、対象画像の特徴を抽出する際に畳み込み(コンボリューション)が行われることがある。畳み込みは、抽出したい特徴に応じたカーネルを、対象画像上で平行移動しながら重ねて足し合わせる積和演算である。畳み込みでは、対象画像とカーネルから特徴マップが生成される。特徴マップの1つの要素は、対象画像の1つの要素を中心とする部分領域にカーネルを重ね合わせ、部分領域とカーネルの間で対応する要素同士を乗算して合計することで算出できる。

ただし、畳み込みでは上記の原則的な演算方法に代えて、フーリエ変換を用いた代替の演算方法を利用することがある。代替の演算方法は、フーリエ変換により対象画像とカーネルをそれぞれ周波数領域データに変換し、対象画像の周波数領域データとカーネルの周波数領域データの間で対応する要素同士を乗算する。そして、逆フーリエ変換により乗算結果を空間領域データに変換する。畳み込み定理によれば、代替の演算方法で出力される空間領域データは、原則的な演算方法で出力される特徴マップに一致する。代替の演算方法は、原則的な演算方法よりも高速に実行し得る。

なお、圧縮された画像データの中から所望の画像を検索する画像検索装置が提案されている。提案の画像検索装置は、離散コサイン変換(DCT:Discrete Cosine Transform)により圧縮された画像データから各ブロックの直流成分を分離する。画像検索装置は、分離した直流成分に基づいて、入力された検索条件を満たすブロックを抽出し、抽出したブロックから逆離散コサイン変換(IDCT:Inverse Discrete Cosine Transform)によりビットマップ画像復元する。画像検索装置は、復元されたビットマップ画像が検索条件を満たす場合、当該画像を検索結果として出力する。

また、圧縮された画像データから部品形状を認識する部品形状認識方法が提案されている。提案の部品形状認識方法は、部品エッジまたはコーナを写した部分画像を抽出し、抽出した部分画像に対して離散コサイン変換を行い、更に高周波成分の係数を除去して圧縮データを生成する。予め教師付き学習により学習されたニューラルネットワークに圧縮データを入力して、エッジ形状またはコーナ形状を認識する。

概要

画像に対する畳み込み演算の際に保持するデータのデータ量を削減する。演算部12は、画像データ13からフーリエ変換を用いて、異なる周波数に対応する複数の第1の係数を算出し、大きさが閾値未満の第1の係数が除外された周波数領域データ15を記憶部11に格納する。演算部12は、カーネルデータ14からフーリエ変換を用いて、周波数領域データ15が示す第1の係数に対応する周波数の第2の係数を算出し、周波数領域データ16を記憶部11に格納する。演算部12は、周波数領域データ15,16と逆フーリエ変換とを用いて、画像データ13にカーネルデータ14を適用した結果を示す特徴マップ17を生成する。

目的

本発明は、画像に対する畳み込み演算の際に保持するデータのデータ量を削減できるデータ圧縮装置データ圧縮方法およびデータ圧縮プログラムを提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

画像データと前記画像データに適用されるカーネルデータとを記憶する記憶部と、前記画像データからフーリエ変換を用いて、異なる周波数に対応する複数の第1の係数を算出し、前記複数の第1の係数のサブセットを示しており大きさが閾値未満の第1の係数が除外された第1の周波数領域データを前記記憶部に格納し、前記カーネルデータからフーリエ変換を用いて、前記第1の周波数領域データが示す第1の係数に対応する周波数の第2の係数を算出し、前記算出した第2の係数を示す第2の周波数領域データを前記記憶部に格納し、前記第1の周波数領域データと前記第2の周波数領域データと逆フーリエ変換とを用いて、前記画像データに前記カーネルデータを適用した結果を示す特徴マップを生成する演算部と、を有するデータ圧縮装置

請求項2

前記第2の周波数領域データの格納では、前記演算部は、前記第1の周波数領域データから除外された第1の係数に対応する周波数の第2の係数を算出することを抑止する、請求項1記載のデータ圧縮装置。

請求項3

前記特徴マップの生成では、前記演算部は、前記第1の周波数領域データと前記第2の周波数領域データとから、前記第1の周波数領域データが示す第1の係数に対応する周波数の第3の係数を算出し、前記算出した第3の係数を示す第3の周波数領域データを前記記憶部に格納し、前記第3の周波数領域データから逆フーリエ変換を用いて前記特徴マップを生成する、請求項1記載のデータ圧縮装置。

請求項4

前記第3の周波数領域データの格納では、前記演算部は、前記第1の周波数領域データから除外された第1の係数に対応する周波数の第3の係数を算出することを抑止する、請求項3記載のデータ圧縮装置。

請求項5

前記特徴マップの生成では、前記演算部は、前記第1の周波数領域データから除外された第1の係数を、大きさが前記閾値未満の所定値とみなして逆フーリエ変換を行う、請求項1記載のデータ圧縮装置。

請求項6

コンピュータが実行するデータ圧縮方法であって、画像データからフーリエ変換を用いて、異なる周波数に対応する複数の第1の係数を算出し、前記複数の第1の係数のサブセットを示しており大きさが閾値未満の第1の係数が除外された第1の周波数領域データを、前記コンピュータが有する記憶部に格納し、前記画像データに対して適用されるカーネルデータからフーリエ変換を用いて、前記第1の周波数領域データが示す第1の係数に対応する周波数の第2の係数を算出し、前記算出した第2の係数を示す第2の周波数領域データを前記記憶部に格納し、前記第1の周波数領域データと前記第2の周波数領域データと逆フーリエ変換とを用いて、前記画像データに前記カーネルデータを適用した結果を示す特徴マップを生成する、データ圧縮方法。

請求項7

コンピュータに、画像データからフーリエ変換を用いて、異なる周波数に対応する複数の第1の係数を算出し、前記複数の第1の係数のサブセットを示しており大きさが閾値未満の第1の係数が除外された第1の周波数領域データを、前記コンピュータが有する記憶部に格納し、前記画像データに対して適用されるカーネルデータからフーリエ変換を用いて、前記第1の周波数領域データが示す第1の係数に対応する周波数の第2の係数を算出し、前記算出した第2の係数を示す第2の周波数領域データを前記記憶部に格納し、前記第1の周波数領域データと前記第2の周波数領域データと逆フーリエ変換とを用いて、前記画像データに前記カーネルデータを適用した結果を示す特徴マップを生成する、処理を実行させるデータ圧縮プログラム

技術分野

背景技術

0002

画像認識画像分類画像検索などの画像処理では、対象画像の特徴を抽出する際に畳み込み(コンボリューション)が行われることがある。畳み込みは、抽出したい特徴に応じたカーネルを、対象画像上で平行移動しながら重ねて足し合わせる積和演算である。畳み込みでは、対象画像とカーネルから特徴マップが生成される。特徴マップの1つの要素は、対象画像の1つの要素を中心とする部分領域にカーネルを重ね合わせ、部分領域とカーネルの間で対応する要素同士を乗算して合計することで算出できる。

0003

ただし、畳み込みでは上記の原則的な演算方法に代えて、フーリエ変換を用いた代替の演算方法を利用することがある。代替の演算方法は、フーリエ変換により対象画像とカーネルをそれぞれ周波数領域データに変換し、対象画像の周波数領域データとカーネルの周波数領域データの間で対応する要素同士を乗算する。そして、逆フーリエ変換により乗算結果を空間領域データに変換する。畳み込み定理によれば、代替の演算方法で出力される空間領域データは、原則的な演算方法で出力される特徴マップに一致する。代替の演算方法は、原則的な演算方法よりも高速に実行し得る。

0004

なお、圧縮された画像データの中から所望の画像を検索する画像検索装置が提案されている。提案の画像検索装置は、離散コサイン変換(DCT:Discrete Cosine Transform)により圧縮された画像データから各ブロックの直流成分を分離する。画像検索装置は、分離した直流成分に基づいて、入力された検索条件を満たすブロックを抽出し、抽出したブロックから逆離散コサイン変換(IDCT:Inverse Discrete Cosine Transform)によりビットマップ画像復元する。画像検索装置は、復元されたビットマップ画像が検索条件を満たす場合、当該画像を検索結果として出力する。

0005

また、圧縮された画像データから部品形状を認識する部品形状認識方法が提案されている。提案の部品形状認識方法は、部品エッジまたはコーナを写した部分画像を抽出し、抽出した部分画像に対して離散コサイン変換を行い、更に高周波成分の係数を除去して圧縮データを生成する。予め教師付き学習により学習されたニューラルネットワークに圧縮データを入力して、エッジ形状またはコーナ形状を認識する。

先行技術

0006

特開平9−44519号公報
特開平10−187978号公報

発明が解決しようとする課題

0007

上記のフーリエ変換を用いた畳み込みでは、対象画像とカーネルから特徴マップを生成する過程で、対象画像に対応する周波数領域データとカーネルに対応する周波数領域データが生成され、両者の乗算結果が生成される。このため、畳み込み演算の際に保持するデータのデータ量が大きくなり、多層のニューラルネットワークにおいては、メモリ使用量が増加するという問題がある。

0008

1つの側面では、本発明は、画像に対する畳み込み演算の際に保持するデータのデータ量を削減できるデータ圧縮装置、データ圧縮方法およびデータ圧縮プログラムを提供することを目的とする。

課題を解決するための手段

0009

1つの態様では、記憶部と演算部とを有するデータ圧縮装置が提供される。記憶部は、画像データと画像データに適用されるカーネルデータとを記憶する。演算部は、画像データからフーリエ変換を用いて、異なる周波数に対応する複数の第1の係数を算出し、複数の第1の係数のサブセットを示しており大きさが閾値未満の第1の係数が除外された第1の周波数領域データを記憶部に格納する。演算部は、カーネルデータからフーリエ変換を用いて、第1の周波数領域データが示す第1の係数に対応する周波数の第2の係数を算出し、算出した第2の係数を示す第2の周波数領域データを記憶部に格納する。演算部は、第1の周波数領域データと第2の周波数領域データと逆フーリエ変換とを用いて、画像データにカーネルデータを適用した結果を示す特徴マップを生成する。

0010

また、1つの態様では、コンピュータが実行するデータ圧縮方法が提供される。また、1つの態様では、コンピュータに実行させるデータ圧縮プログラムが提供される。

発明の効果

0011

1つの側面では、画像に対する畳み込み演算の際に保持するデータのデータ量を削減できる。

図面の簡単な説明

0012

第1の実施の形態のデータ圧縮装置を説明する図である。
第2の実施の形態の画像処理装置の例を示すブロック図である。
畳み込みニューラルネットワークの例を示す図である。
第1の畳み込み方法の例を示す図である。
第2の畳み込み方法の例を示す図である。
アプリケーションプログラムの機能例を示すブロック図である。
データ構造例を示す第1の図である。
データ構造例を示す第2の図である。
畳み込み処理の手順例を示すフローチャートである。
畳み込み処理の手順例を示すフローチャート(続き1)である。
畳み込み処理の手順例を示すフローチャート(続き2)である。
畳み込み処理の手順例を示すフローチャート(続き3)である。
データの読み出しおよび書き込みの例を示す図である。

実施例

0013

以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。

0014

図1は、第1の実施の形態のデータ圧縮装置を説明する図である。
第1の実施の形態のデータ圧縮装置10は、画像データに対する畳み込み演算を行う。データ圧縮装置10は、クライアントコンピュータサーバコンピュータなどの汎用コンピュータでもよいし、組み込みシステムでもよいし、専用ハードウェアであってもよい。

0015

データ圧縮装置10は、記憶部11および演算部12を有する。記憶部11は、例えば、RAM(Random Access Memory)などの半導体メモリである。演算部12は、プロセッサ、プロセッサのコア、複数のプロセッサまたは複数のコアの集合マルチプロセッサ)などである。ただし、演算部12がFPGA(Field-Programmable Gate Array)やASIC(Application Specific IntegratedCircuit)などの半導体装置を含んでもよい。

0016

記憶部11は、画像データ13とカーネルデータ14を記憶する。画像データ13は、例えば、撮像装置によって撮像された画像を示す。画像データ13は、例えば、二次元座標によって位置を特定できる複数の要素(画素など)を含む。カーネルデータ14は、畳み込みにおいて画像データ13に対して適用されるデータである。カーネルデータ14は、エッジなど画像データ13から抽出したい特徴に対応して予め用意されている。カーネルデータ14は、例えば、二次元座標によって位置を特定できる複数の要素を含む。

0017

演算部12は、記憶部11に記憶された画像データ13とカーネルデータ14の間の畳み込み演算を行う。演算部12は、画像データ13からフーリエ変換を用いて周波数領域データ15を生成し、周波数領域データ15を記憶部11に格納する。周波数領域データ15は、フーリエ変換により算出される異なる周波数に対応する複数の第1の係数のサブセットを示している。周波数領域データ15では、大きさが閾値未満である第1の係数が除外されている。例えば、周波数領域データ15は、フーリエ変換により算出される第1の係数のうち大きさが閾値以上である第1の係数のみを含む。大きさが閾値未満である第1の係数は、例えば、0などの所定値とみなされる。大きさが閾値未満である第1の係数を所定値に近似している(例えば、0に丸めている)と言うことができる。

0018

また、演算部12は、カーネルデータ14からフーリエ変換を用いて周波数領域データ16を生成し、周波数領域データ16を記憶部11に格納する。周波数領域データ16は、フーリエ変換により算出される異なる周波数に対応する複数の第2の係数の少なくとも一部を示している。周波数領域データ16は、少なくとも周波数領域データ15が示す第1の係数に対応する周波数の第2の係数を含む。周波数領域データ15で除外されている第1の係数に対応する周波数の第2の係数は、周波数領域データ16に含まれなくてもよい。演算部12は、周波数領域データ16から除外すべき第2の係数についてはカーネルデータ14から算出することを抑止してもよい。

0019

そして、演算部12は、記憶部11に記憶された周波数領域データ15,16と逆フーリエ変換とを用いて、画像データ13とカーネルデータ14の間の畳み込みの結果を示す特徴マップ17を生成して記憶部11に格納する。このとき、周波数領域データ15に含まれていない第1の係数は0などの所定値とみなすことが考えられる。特徴マップ17は、カーネルデータ14に従って画像データ13から抽出された特徴を表している。特徴マップ17は、例えば、二次元座標によって位置を特定できる複数の要素を含む。

0020

周波数領域データ15,16から特徴マップ17を生成するにあたり、例えば、演算部12は、周波数領域データ15,16から他の周波数領域データを生成する。他の周波数領域データは、例えば、周波数領域データ15と周波数領域データ16の間で対応する係数同士を乗算することで生成される。このとき、周波数領域データ15に含まれていない第1の係数に関する演算は省略することができる。演算部12は、生成した他の周波数領域データから逆フーリエ変換を用いて特徴マップ17を生成する。

0021

第1の実施の形態のデータ圧縮装置10によれば、画像データ13からフーリエ変換により生成される周波数領域データ15において、大きさが閾値未満である第1の係数が省略されて記憶部11に格納される。カーネルデータ14からフーリエ変換により生成される周波数領域データ16においても、周波数領域データ15で省略された第1の係数に対応する第2の係数を省略して記憶部11に格納することが可能である。よって、畳み込みで生成されるデータを効率的に圧縮でき、記憶部11の記憶領域の使用量を削減できる。

0022

なお、データ圧縮装置10のデータ圧縮方法は、特徴マップ17を用いて画像認識など画像データ13の特徴の推論を行う場合に好適である。例えば、データ圧縮装置10のデータ圧縮方法は、畳み込みニューラルネットワークの畳み込み層で使用できる。特徴マップ17を用いた推論では、畳み込み結果に厳密な正確性は求められず、畳み込みの過程で小さい係数を破棄して所定値に近似しても推論結果への影響は小さいためである。

0023

[第2の実施の形態]
次に、第2の実施の形態を説明する。
第2の実施の形態の画像処理装置100は、ディープニューラルネットワーク(DNN:Deep Neural Network)の一種である畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)を用いて画像認識を行う。例えば、画像処理装置100は、画像に人間が写っているか否かやなどの動物が写っているか否かを判定する。ただし、第2の実施の形態の画像処理方法は、画像検索や画像分類など他の用途に用いることもできる。画像処理装置100は、汎用コンピュータでもよいし組み込みシステムであってもよい。また、画像処理装置100は、FPGAまたは専用回路を有していてもよい。

0024

図2は、第2の実施の形態の画像処理装置の例を示すブロック図である。
画像処理装置100は、命令制御コア101、ロードストア制御部102、演算コア103、レジスタファイル104、キャッシュメモリ105、RAM106および不揮発性ストレージ107を有する。画像処理装置100は更に、画像信号処理部111、入力信号処理部112、媒体リーダ113および通信インタフェース114を有してもよい。

0025

命令制御コア101は、アプリケーションプログラムの命令を実行するプロセッサコアである。命令制御コア101は、不揮発性ストレージ107に記憶されたアプリケーションプログラムを起動し、アプリケーションプログラムの命令に従って、ロードストア制御部102を制御すると共に演算コア103に演算を実行させる。

0026

ロードストア制御部102は、命令制御コア101からの指示に従って、レジスタファイル104、キャッシュメモリ105およびRAM106の間のデータ転送を制御する。データ転送には、RAM106からキャッシュメモリ105への読み出しと、キャッシュメモリ105からRAM106への書き込みが含まれる。また、データ転送には、キャッシュメモリ105からレジスタファイル104への読み出しと、レジスタファイル104からキャッシュメモリ105への書き込みが含まれる。

0027

演算コア103は、命令制御コア101からの指示に応じて演算を行うプロセッサコアである。演算コア103は各種の演算器を有する。例えば、演算コア103は、FMA(Fused Multiple Adder)部103a、比較部103bおよび乗算部103cを有する。FMA部103aは、乗算と加算を組み合わせた複合演算を実行する演算器である。FMA部103aは、単精度浮動小数点積和演算を行うことができる。FMA部103aは、第1のオペランドの値と第2のオペランドの値を乗算し、乗算結果に第3のオペランドの値を加算する。FMA部103aは、高速フーリエ変換FFT:Fast Fourier Transform)や逆高速フーリエ変換IFFT:Inverse Fast Fourier Transform)に用いることができる。比較部103bは、比較演算を実行する演算器であり、第1のオペランドの値が第2のオペランドの値以上であるか判定する。乗算部103cは、乗算を実行する演算器であり、第1のオペランドの値と第2のオペランドの値の積を算出する。演算コア103は、演算に使用するデータをレジスタファイル104から読み出し、演算結果をレジスタファイル104に書き込む。

0028

レジスタファイル104は、データを格納する揮発性半導体メモリである複数のレジスタを含む。レジスタファイル104は、ロードストア制御部102からの指示に応じて、キャッシュメモリ105からレジスタにデータを読み出し、レジスタからキャッシュメモリ105にデータを書き込む。また、演算コア103によってレジスタからデータが読み出され、演算コア103によってレジスタにデータが書き込まれる。

0029

キャッシュメモリ105は、データを格納する揮発性半導体メモリであり、レジスタファイル104とRAM106の中間に位置する。キャッシュメモリ105は、RAM106よりもデータ転送が高速であり、レジスタファイル104よりもデータ転送が低速である。キャッシュメモリ105は、ロードストア制御部102からの指示に応じて、RAM106からデータを読み出し、RAM106にデータを書き込む。

0030

なお、命令制御コア101、ロードストア制御部102、演算コア103、レジスタファイル104およびキャッシュメモリ105は、同一のプロセッサパッケージに含まれていてもよい。第2の実施の形態では、アプリケーションプログラムの命令を実行する命令制御コア101と画像処理を行う演算コア103とを分離しているが、両者を一体としてもよい。各プロセッサコアを「プロセッサ」と言うこともあるし、複数のプロセッサまたは複数のプロセッサコアの集合を「プロセッサ」と言うこともある。

0031

RAM106は、演算コア103が演算に使用する各種のデータを記憶する揮発性半導体メモリである。RAM106は、命令制御コア101が実行するアプリケーションプログラムを更に記憶してもよい。RAM106は、演算コア103から見て「外部メモリ」と言うこともある。キャッシュメモリ105によってRAM106からデータが読み出され、キャッシュメモリ105によってRAM106にデータが書き込まれる。

0032

不揮発性ストレージ107は、命令制御コア101が実行するアプリケーションプログラムを記憶する。不揮発性ストレージ107として、ROM(Read Only Memory)、フラッシュメモリ、HDD(Hard Disk Drive)など各種の記憶装置を使用できる。不揮発性ストレージ107は、RAM106にロードされるデータを更に記憶してもよい。

0033

画像信号処理部111は、画像処理装置100にディスプレイ115が接続されている場合に、ディスプレイ115に画面を表示させる。ただし、ディスプレイ115が画像処理装置100と一体に形成されていてもよい。ディスプレイ115として、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど各種のディスプレイを使用することができる。

0034

入力信号処理部112は、画像処理装置100に入力デバイス116が接続されている場合に、入力デバイス116から入力信号を取得する。ただし、入力デバイス116が画像処理装置100と一体に形成されてもよい。入力デバイス116として、マウスタッチパネルタッチパッドトラックボールキーボードリモートコントローラ、ボタンスイッチなど各種の入力デバイスを使用することができる。

0035

媒体リーダ113は、記録媒体117に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体117として、フレキシブルディスクFD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなど各種の記録媒体を使用することができる。媒体リーダ113は、例えば、記録媒体117から読み取ったプログラムやデータをRAM106などにコピーする。

0036

通信インタフェース114は、ネットワーク118に接続され、ネットワーク118を介して他の装置と通信を行うインタフェースである。通信インタフェース114は、スイッチなどの通信装置ケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。

0037

次に、畳み込みニューラルネットワークについて説明する。
図3は、畳み込みニューラルネットワークの例を示す図である。
画像処理で使用される畳み込みニューラルネットワークは、畳み込み層やプーリング層や全結合層などの複数の処理レイヤ直列に並べたネットワークであり、人間の視覚に対応する効果をもつ。ある処理レイヤは、前段の処理レイヤの処理結果を入力として受け付け、当該処理レイヤの処理結果を次段の処理レイヤに出力する。ただし、最初の処理レイヤの入力は当初の画像データであり、最後の処理レイヤの出力は判定値である。第2の実施の形態の画像処理装置100は、車載カメラなどの撮像装置によって生成された画像を畳み込みニューラルネットワークに入力し、人間や猫などの特定の種類の物体が画像に写っている可能性を示す判定値を取得する。例えば、ある手順で算出された判定値が大きいほど、取得した画像に人間が写っている可能性が高いと判定される。画像処理装置100は、画像に写った物体の種類を判定値に基づいて判定することができる。

0038

畳み込みニューラルネットワークに入力される画像データは、サイズがN×Nの正方形の画像を示している。例えば、画像データのサイズは244×244である。画像データの各要素はx座標とy座標の組で特定される。画像データの各要素は、256階調のレベルを単精度浮動小数点で表した数値である。画像データがグレースケールデータである場合、1回に入力される画像データの枚数入力チャネル数)は1である。画像データがRGB(Red Green Blue)カラーデータである場合、入力チャネル数は3である。

0039

畳み込み層では、画像から抽出したい特徴に応じて予め用意されたカーネルを、入力データに対して適用して特徴マップを生成する。畳み込みは、カーネルを用いたフィルタリングと言うこともできる。例えば、エッジ抽出用のカーネルを用いることで、画像データからエッジが検出される。その場合、エッジである可能性が高い位置に対応する要素が大きい値をもつ特徴マップが生成される。第2の実施の形態では、カーネルサイズ入力データサイズよりも小さく、特徴マップサイズは入力データサイズと同じである。カーネルおよび特徴マップの各要素はx座標とy座標の組で特定される。

0040

抽出したい特徴が複数存在する場合、複数のカーネルが用意される。畳み込み層では、1つの入力データに対して独立に複数のカーネルが適用され、複数の特徴マップが生成されることがある。例えば、100枚程度のカーネルが用意されることもある。よって、入力データの枚数と比べて特徴マップの枚数が非常に大きくなることがある。画像データとカーネルを用いた畳み込み演算の詳細については後述する。

0041

プーリング層では、畳み込み層などの処理レイヤが生成した出力データのサイズを、大まかな特徴が失われないように縮小する。例えば、畳み込み層が生成した特徴マップの中の隣接する所定個の要素(例えば、2×2または3×3の要素)をグループとみなし、1グループの要素群を1要素に変換する。変換後の要素として、例えば、要素群の最大値を用いる方法や要素群の平均値を用いる方法などが考えられる。全結合層では、畳み込み層やプーリング層を繰り返すことで十分に縮小された出力データを一次元データ列とみなし、データ列から所定の計算方法によりスカラ値である判定値を算出する。

0042

一例として図3の畳み込みニューラルネットワークは、畳み込み層41,43、プーリング層42および全結合層44を含む。畳み込み層41は、画像データ31を取得する。畳み込み層41は、画像データ31に対して異なるカーネルを適用して中間データ32a,32b,32cを生成する。畳み込み層41から見て、中間データ32a,32b,32cは特徴マップに相当する。プーリング層42は、中間データ32a,32b,32cを取得する。プーリング層42は、中間データ32aをサイズの小さい中間データ33aに変換し、中間データ32bをサイズの小さい中間データ33bに変換し、中間データ32cをサイズの小さい中間データ33cに変換する。

0043

畳み込み層43は、中間データ33a,33b,33cを取得する。畳み込み層43は、中間データ33aに対して異なるカーネルを適用して中間データ34a,34bを生成する。同様に、畳み込み層43は、中間データ33bに対して異なるカーネルを適用して中間データ34c,34dを生成し、中間データ33cに対して異なるカーネルを適用して中間データ34e,34fを生成する。畳み込み層43から見て、中間データ33a,33b,33cは画像データに相当し、中間データ34a,34b,34c,34d,34e,34fは特徴マップに相当する。以降、畳み込み層やプーリング層などを繰り返すことで、中間データ35a,35b,35c,35d,35e,35fが生成される。

0044

全結合層44は、中間データ35a,35b,35c,35d,35e,35fを取得し、一次元のデータ列とみなす。全結合層44は、中間データ35a,35b,35c,35d,35e,35fに対して加減算などの所定の演算を行い、判定値36aを算出する。また、全結合層44は、中間データ35a,35b,35c,35d,35e,35fに対して判定値36aとは異なる所定の演算を行い、判定値36bを算出する。

0045

次に、畳み込み層の処理について説明する。
図4は、第1の畳み込み方法の例を示す図である。
第1の畳み込み方法は、畳み込みの定義に基づく原則的な演算方法である。畳み込み層において画像データ51に対してカーネルデータ52を適用し、特徴マップ53を生成することを考える。図4では説明を簡単にするため、画像データ51および特徴マップのサイズを6×6とし、カーネルデータ52のサイズを3×3としている。画像データ51は要素d00〜d55を含み、カーネルデータ52は要素k00〜k22を含み、特徴マップ53は要素c00〜c55を含む。画像データ51の左上が原点、画像データ51の原点から下方向がx軸、画像データ51の原点から右方向がy軸である。

0046

第1の畳み込み方法では、画像データ51の要素を1つ選択し、画像データ51の当該要素を中心としてカーネルデータ52と同じサイズの領域を抽出する。そして、抽出した領域とカーネルデータ52の間で同じ位置の要素同士を乗算し、乗算結果を合計するという積和演算を行う。積和演算によって算出された数値が、画像データ51から選択した中心の要素と同じ座標をもつ特徴マップ53の要素の値となる。

0047

例えば、画像データ51の要素d13を選択すると、画像データ51から要素d02,d03,d04,d12,d13,d14,d22,d23,d24が抽出される。要素d13に対応する特徴マップ53の要素c13は、d02×k00+d03×k01+d04×k02+d12×k10+d13×k11+d14×k12+d22×k20+d23×k21+d24×k22と算出される。なお、特徴マップ53の端の要素は、画像データ51の周囲に0を補って算出する。

0048

図5は、第2の畳み込み方法の例を示す図である。
第2の畳み込み方法は、フーリエ変換を用いた代替的な演算方法である。図4と同様に、畳み込み層において画像データ51に対してカーネルデータ52を適用し、特徴マップ53を生成することを考える。第2の畳み込み方法を厳密に実行すれば、畳み込み定理により、第1の畳み込み方法と同じ特徴マップ53を生成することができる。

0049

第2の畳み込み方法では、空間領域の画像データ51に対してFFTを行うことで、周波数領域の画像FFTデータ54を生成する。第2の実施の形態では、画像FFTデータ54のサイズは画像データ51と同じである。また、空間領域のカーネルデータ52に対してFFTを行うことで、周波数領域のカーネルFFTデータ55を生成する。ただし、FFTの前に、カーネルデータ52のサイズを画像データ51と同じN×Nに拡張しておく。サイズ拡張では、x座標やy座標の大きい方に値が0の要素を追加する。第2の実施の形態では、カーネルFFTデータ55のサイズは画像データ51と同じである。

0050

画像FFTデータ54およびカーネルFFTデータ55の各要素は、u座標とv座標の組で特定される。左上が原点であり、原点から下方向がu軸であり、原点から右方向がv軸である。画像FFTデータ54およびカーネルFFTデータ55の各要素は、周波数成分の係数を表す複素数である。原点に近い要素ほど低い周波数の周波数成分を表しており、原点から遠い要素ほど高い周波数の周波数成分を表している。

0051

周波数領域において、画像FFTデータ54とカーネルFFTデータ55の間で対応する要素同士を乗算することで、畳み込みデータ56を生成する。畳み込みデータ56のサイズは画像データ51と同じである。第1の畳み込み方法と異なり、一定範囲の乗算結果を合計する積和演算は不要である。画像FFTデータ54は要素Fd00〜Fd55を含み、カーネルFFTデータ55は要素Fk00〜Fk55を含み、畳み込みデータ56は要素Fc00〜Fc55を含む。Fc00=Fd00×Fk00,Fc01=Fd01×Fk01,Fc02=Fd02×Fk02,…と算出される。周波数領域の畳み込みデータ56に対してIFFTを行うことで、空間領域の特徴マップ53を生成する。

0052

画像データ51から画像FFTデータ54へのフーリエ変換は、数式(1)のように定義される。d(x,y)は画像データ51の要素であり、Fd(u,v)は画像FFTデータ54の要素(係数)である。カーネルデータ52からカーネルFFTデータ55へのフーリエ変換は、数式(2)のように定義される。k(x,y)はカーネルデータ52の要素であり、Fk(u,v)はカーネルFFTデータ55の要素(係数)である。畳み込みデータ56は、数式(3)のように定義される。Fc(u,v)は畳み込みデータ56の要素(係数)である。畳み込みデータ56から特徴マップ53への逆フーリエ変換は、数式(4)のように定義される。c(x,y)は特徴マップ53の要素である。

0053

0054

0055

0056

0057

フーリエ変換としてFFTを利用することで、計算量をO(N2)からO(N×logN)に低減できる。FFTでは数式(5)のようなバタフライ演算が繰り返し実行される。関数W(a,N)は数式(6)のように定義される。引数Nは画像データ51のサイズによって決まる。引数aは数式(1)や数式(2)のuxやvyに対応する。様々なa,Nについて関数W(a,N)の値をパラメータとして予め用意しておけば、FFTを効率的に実行できる。また、逆フーリエ変換としてIFFTを利用することで計算量を低減できる。IFFTではFFTと同様にバタフライ演算が繰り返し実行される。ただし、関数W(a,N)に代えて数式(7)のような関数W−1(a,N)が使用される。引数aは数式(4)のuxやvyに対応する。様々なa,Nについて関数W−1(a,N)の値をパラメータとして予め用意しておけば、IFFTを効率的に実行できる。

0058

0059

0060

0061

ここで、第2の畳み込み方法の問題点について説明する。第2の畳み込み方法では、畳み込み層の途中のみで使用される画像FFTデータ54、カーネルFFTデータ55および畳み込みデータ56が生成される。また、カーネルデータ52を画像データ51のサイズと同じN×Nに拡張している。また、畳み込みニューラルネットワークの畳み込み層は、入力チャネル数や出力チャネル数が著しく多くなることがある。このため、メモリ消費量が大きくなり、メモリ容量がボトルネックになって処理効率が低下するおそれがある。特に、メモリ容量の少ない組み込みシステムでは大きな問題となる。

0062

そこで、第2の実施の形態の画像処理装置100は、画像FFTデータ54、カーネルFFTデータ55および畳み込みデータ56のデータ量を削減する。画像処理装置100は、画像FFTデータ54の要素のうち絶対値の小さい要素を0に近似し、値が0の要素をメモリに保存しないようにする。高周波数側の要素の絶対値は十分に小さいことが多いため、0に近似されることが多い。また、画像処理装置100は、カーネルFFTデータ55および畳み込みデータ56の要素のうち、値を0に近似した画像FFTデータ54の要素に対応するものをメモリに保存しないようにする。カーネルFFTデータ55および畳み込みデータ56の生成では、当該要素の演算自体を省略することができる。

0063

上記のようなデータ量の削減を行った場合、生成される特徴マップは原則的な方法で生成した場合の解と一致しなくなる。しかし、畳み込みニューラルネットワークでは、畳み込み層の後にプーリング層が配置されるなど、画像の特徴を認識すること(推論)を目的としている。このため、畳み込み層において厳密な解を生成せずに近似解を生成しても、畳み込みニューラルネットワーク全体の精度への影響は小さい。そこで、画像処理装置100は、FFTの際に近似処理を行うことで効率的にメモリ使用量を抑制する。

0064

次に、画像処理装置100の機能およびデータ構造について説明する。
図6は、アプリケーションプログラムの機能例を示すブロック図である。
画像処理装置100は、画像FFT制御部121、カーネルFFT制御部122、乗算制御部123およびIFFT制御部124を有する。画像FFT制御部121、カーネルFFT制御部122、乗算制御部123およびIFFT制御部124は、命令制御コア101がアプリケーションプログラムの命令を実行することで実現される。

0065

画像FFT制御部121は、FFTにより画像データを画像FFTデータに変換することを制御する。画像FFT制御部121は、ロードストア制御部102を用いて、RAM106に記憶された画像データをキャッシュメモリ105に転送させ、更にキャッシュメモリ105からレジスタファイル104に転送させる。画像FFT制御部121は、演算コア103のFMA部103aを用いて、画像データへのFFTを実行させる。

0066

次に、画像FFT制御部121は、演算コア103の比較部103bを用いて、FFT後の各係数の絶対値が閾値以上であるか判定させる。閾値はRAM106に記憶されていてもよい。画像FFT制御部121は、ロードストア制御部102を用いて、絶対値が閾値以上である係数をレジスタファイル104からキャッシュメモリ105に転送させ、更にキャッシュメモリ105からRAM106に転送させる。一方、画像FFT制御部121は、絶対値が閾値未満である係数はRAM106に転送しないようにする。これにより、一部の係数が省略された画像FFTデータがRAM106に保存される。

0067

カーネルFFT制御部122は、FFTによりカーネルデータをカーネルFFTデータに変換することを制御する。画像FFT制御部121は、ロードストア制御部102を用いて、RAM106に記憶されたカーネルデータをキャッシュメモリ105に転送させ、更にキャッシュメモリ105からレジスタファイル104に転送させる。カーネルFFT制御部122は、FMA部103aを用いてカーネルデータへのFFTを実行させる。

0068

ただし、カーネルFFT制御部122は、RAM106に保存されなかった画像FFTデータの係数に対応するカーネルFFTデータの係数の算出を抑制する。省略された画像FFTデータの係数は0とみなされるため、乗算結果は常に0になるためである。カーネルFFT制御部122は、RAM106に記憶されたカーネルデータの中から、算出すべきカーネルFFTデータの係数に関係する要素のみを読み出させてもよい。カーネルFFT制御部122は、省略されていない画像FFTデータの係数に対応するカーネルFFTデータの係数のみを、レジスタファイル104からキャッシュメモリ105に転送させ、更にキャッシュメモリ105からRAM106に転送させる。これにより、一部の係数が省略されたカーネルFFTデータがRAM106に保存される。

0069

乗算制御部123は、RAM106に記憶された画像FFTデータとカーネルFFTデータを単純乗算して畳み込みデータを生成することを制御する。乗算制御部123は、ロードストア制御部102を用いて、RAM106に記憶された画像FFTデータとカーネルFFTデータをキャッシュメモリ105に転送させ、更にキャッシュメモリ105からレジスタファイル104に転送させる。乗算制御部123は、演算コア103の乗算部103cを用いて、対応する係数同士を乗算させる。

0070

読み出される画像FFTデータには絶対値の小さい係数が省略されており、読み出されるカーネルFFTデータには省略された画像FFTデータの係数に対応するものが省略されている。よって、畳み込みデータの係数のうち、省略された画像FFTデータの係数に対応するものは算出されない。乗算制御部123は、ロードストア制御部102を用いて、算出された畳み込みデータの係数をレジスタファイル104からキャッシュメモリ105に転送させ、更にキャッシュメモリ105からRAM106に転送させる。これにより、一部の係数が省略された畳み込みデータがRAM106に保存される。

0071

IFFT制御部124は、IFFTにより畳み込みデータを特徴マップに変換することを制御する。IFFT制御部124は、ロードストア制御部102を用いて、RAM106に記憶された畳み込みデータをキャッシュメモリ105に転送させ、更にキャッシュメモリ105からレジスタファイル104に転送させる。IFFT制御部124は、FMA部103aを用いて、畳み込みデータへのIFFTを実行させる。このとき、畳み込みデータに省略されている係数は0として取り扱う。IFFT制御部124は、ロードストア制御部102を用いて、特徴マップの要素をレジスタファイル104からキャッシュメモリ105に転送させ、更にキャッシュメモリ105からRAM106に転送させる。これにより、特徴マップの近似解がRAM106に保存される。

0072

図7は、データ構造例を示す第1の図である。
RAM106には、インデックスデータ135、画像FFTデータ136、カーネルFFTデータ137および畳み込みデータ138が記憶される。

0073

インデックスデータ135は、長さと1以上のインデックスを含む。長さは、インデックスデータ135に含まれるインデックスの数を示す。例えば、長さは16ビット表現される。インデックスは、係数が省略されていない周波数領域の座標(u,v)を示す。例えば、各インデックスは16ビットで表現される。インデックスの16ビットのうち、u座標部分は8ビットでありv座標部分は8ビットである。なお、特徴マップが生成された後は、RAM106からインデックスデータ135を消去してもよい。

0074

画像FFTデータ136は、インデックスデータ135の1以上のインデックスに対応付けて1以上の係数を含む。各係数は、絶対値が閾値以上の係数である。例えば、各係数は64ビットで表現される単精度浮動小数点型の複素数である。係数の64ビットのうち、実部は32ビットであり虚部は32ビットである。なお、畳み込みデータ138が生成された後は、RAM106から画像FFTデータ136を消去してもよい。

0075

カーネルFFTデータ137は、インデックスデータ135の1以上のインデックスに対応付けて1以上の係数を含む。各係数は、絶対値が閾値以上である画像FFTデータ136の係数と同じ座標をもつ。例えば、各係数は画像FFTデータ136と同様に、64ビットで表現される単精度浮動小数点型の複素数である。なお、畳み込みデータ138が生成された後は、RAM106からカーネルFFTデータ137を消去してもよい。

0076

畳み込みデータ138は、インデックスデータ135の1以上のインデックスに対応付けて1以上の係数を含む。各係数は、絶対値が閾値以上である画像FFTデータ136の係数と同じ座標をもつ。例えば、各係数は画像FFTデータ136と同様に、64ビットで表現される単精度浮動小数点型の複素数である。なお、特徴マップが生成された後は、RAM106から畳み込みデータ138を消去してもよい。

0077

図8は、データ構造例を示す第2の図である。
RAM106には、FFTパラメータ133が記憶される。FFTパラメータ133は、FFTのバタフライ演算で使用されるパラメータであり予め用意されている。FFTパラメータ133は、引数a,Nと数式(6)の関数W(a,N)の値とを対応付ける。関数W(a,N)の値は単精度浮動小数点型の複素数である。

0078

また、RAM106には、IFFTパラメータ134が記憶される。IFFTパラメータ134は、IFFTのバタフライ演算で使用されるパラメータであり予め用意されている。IFFTパラメータ134は、引数a,Nと数式(7)の関数W−1(a,N)の値とを対応付ける。関数W−1(a,N)の値は単精度浮動小数点型の複素数である。

0079

次に、画像処理装置100の畳み込み処理の手順について説明する。
図9は、畳み込み処理の手順例を示すフローチャートである。
(S10)命令制御コア101は、RAM106からレジスタファイル104に画像データdとFFTパラメータ133を読み出させる。ただし、以下のステップS15の過程で、使用するデータ部分を適宜読み出すようにしてもよい。

0080

(S11)命令制御コア101は、u=0,v=0に初期化する。
(S12)命令制御コア101は、現在着目しているu座標と画像データdの一辺の長さNを比較する。uがN未満(u<N)の場合はステップS13に処理が進み、uがN以上(u≧N)の場合はステップS20に処理が進む。

0081

(S13)命令制御コア101は、現在着目しているv座標と画像データdの一辺の長さNを比較する。vがN未満(v<N)の場合はステップS15に処理が進み、vがN以上(v≧N)の場合はステップS14に処理が進む。

0082

(S14)命令制御コア101は、u=u+1に更新すると共にv=0に初期化する。そして、次のu座標についてステップS12に処理が進む。
(S15)FMA部103aは、画像データdとFFTパラメータ133を用いて、FFTのバタフライ演算により係数Fd(u,v)を算出する。FMA部103aは、算出した係数Fd(u,v)をレジスタファイル104に書き込む。また、FMA部103aは、インデックス(u,v)をレジスタファイル104に書き込む。

0083

(S16)FMA部103aは、係数Fd(u,v)の絶対値Aを算出する。絶対値Aは複素数の大きさを表す尺度であればよく、長さや距離やノルムなどと言うこともある。例えば、実部の二乗と虚部の二乗の和を絶対値Aとして用いる。ただし、実部の二乗と虚部の二乗の和の平方根を絶対値Aとして用いてもよい。また、演算コア103が有するFMA部103a以外の演算器が絶対値Aを算出してもよい。

0084

(S17)比較部103bは、絶対値Aと閾値αを比較する。閾値αは、例えば、様々なサンプル画像について畳み込み処理を試行することで予め調整されている。閾値αは、不揮発性ストレージ107に保存されていてもよい。また、閾値αはRAM106にロードされてもよく、命令制御コア101はRAM106からレジスタファイル104に閾値αを読み出させてもよい。絶対値Aが閾値α以上(A≧α)の場合はステップS18に処理が進み、絶対値Aが閾値α未満(A<α)の場合はステップS19に処理が進む。

0085

(S18)命令制御コア101は、レジスタファイル104からRAM106にインデックス(u,v)と係数Fd(u,v)を保存させる。インデックス(u,v)はインデックスデータ135の末尾に追加され、係数Fd(u,v)は画像FFTデータ136の末尾に追加される。インデックスデータ135に記載された長さは1増加する。ただし、レジスタファイル104からRAM106への保存は、レジスタファイル104やキャッシュメモリ105の使用状況に応じて非同期に行ってもよい。

0086

(S19)命令制御コア101は、v=v+1に更新する。そして、次のv座標についてステップS13に処理が進む。
図10は、畳み込み処理の手順例を示すフローチャート(続き1)である。

0087

(S20)命令制御コア101は、RAM106からレジスタファイル104にカーネルデータkとFFTパラメータ133を読み出させる。ただし、以下のステップS27の過程で、使用するデータ部分を適宜読み出すようにしてもよい。

0088

(S21)演算コア103は、カーネルデータkを画像データdと同じサイズN×Nに拡張する。サイズ拡張では、x座標やy座標が大きい方に値が0の要素を追加する。
(S22)命令制御コア101は、u=0,v=0に初期化する。

0089

(S23)命令制御コア101は、現在着目しているu座標と画像データdの一辺の長さNを比較する。uがN未満(u<N)の場合はステップS24に処理が進み、uがN以上(u≧N)の場合はステップS30に処理が進む。

0090

(S24)命令制御コア101は、現在着目しているv座標と画像データdの一辺の長さNを比較する。vがN未満(v<N)の場合はステップS26に処理が進み、vがN以上(v≧N)の場合はステップS25に処理が進む。

0091

(S25)命令制御コア101は、u=u+1に更新すると共にv=0に初期化する。そして、次のu座標についてステップS23に処理が進む。
(S26)命令制御コア101は、インデックス(u,v)がインデックスデータ135の中に保存されているか判断する。例えば、命令制御コア101は、演算コア103にインデックス(u,v)の保存の有無を確認させる。保存されている場合はステップS27に処理が進み、保存されていない場合はステップS29に処理が進む。

0092

(S27)FMA部103aは、カーネルデータkとFFTパラメータ133を用いて、FFTのバタフライ演算により係数Fk(u,v)を算出する。FMA部103aは、算出した係数Fk(u,v)をレジスタファイル104に書き込む。

0093

(S28)命令制御コア101は、レジスタファイル104からRAM106に係数Fk(u,v)を保存させる。係数Fk(u,v)はカーネルFFTデータ137の末尾に追加される。ただし、レジスタファイル104からRAM106への保存は、レジスタファイル104やキャッシュメモリ105の使用状況に応じて非同期に行ってもよい。

0094

(S29)命令制御コア101は、v=v+1に更新する。そして、次のv座標についてステップS24に処理が進む。
図11は、畳み込み処理の手順例を示すフローチャート(続き2)である。

0095

(S30)命令制御コア101は、u=0,v=0に初期化する。
(S31)命令制御コア101は、現在着目しているu座標と画像データdの一辺の長さNを比較する。uがN未満(u<N)の場合はステップS32に処理が進み、uがN以上(u≧N)の場合はステップS39に処理が進む。

0096

(S32)命令制御コア101は、現在着目しているv座標と画像データdの一辺の長さNを比較する。vがN未満(v<N)の場合はステップS34に処理が進み、vがN以上(v≧N)の場合はステップS33に処理が進む。

0097

(S33)命令制御コア101は、u=u+1に更新すると共にv=0に初期化する。そして、次のu座標についてステップS31に処理が進む。
(S34)命令制御コア101は、インデックス(u,v)がインデックスデータ135の中に保存されているか判断する。例えば、命令制御コア101は、演算コア103にインデックス(u,v)の保存の有無を確認させる。保存されている場合はステップS35に処理が進み、保存されていない場合はステップS38に処理が進む。

0098

(S35)命令制御コア101は、RAM106からレジスタファイル104に、画像FFTデータ136に含まれる係数Fd(u,v)とカーネルFFTデータ137に含まれる係数Fk(u,v)を読み出させる。係数Fd(u,v),Fk(u,v)の位置は、インデックスデータ135の中のインデックス(u,v)の位置から特定できる。

0099

(S36)乗算部103cは、係数Fd(u,v)と係数Fk(u,v)の積を係数Fc(u,v)として算出し、係数Fc(u,v)をレジスタファイル104に書き込む。
(S37)命令制御コア101は、レジスタファイル104からRAM106に係数Fc(u,v)を保存させる。係数Fc(u,v)は畳み込みデータ138の末尾に追加される。ただし、レジスタファイル104からRAM106への保存は、レジスタファイル104やキャッシュメモリ105の使用状況に応じて非同期に行ってもよい。

0100

(S38)命令制御コア101は、v=v+1に更新する。そして、次のv座標についてステップS32に処理が進む。
図12は、畳み込み処理の手順例を示すフローチャート(続き3)である。

0101

(S39)命令制御コア101は、RAM106からレジスタファイル104に畳み込みデータ138とIFFTパラメータ134を読み出させる。ただし、以下のステップS44の過程で、使用するデータ部分を適宜読み出すようにしてもよい。

0102

(S40)命令制御コア101は、x=0,y=0に初期化する。
(S41)命令制御コア101は、現在着目しているx座標と画像データdの一辺の長さNを比較する。xがN未満(x<N)の場合はステップS42に処理が進み、xがN以上(u≧N)の場合は畳み込み処理が終了する。

0103

(S42)命令制御コア101は、現在着目しているy座標と画像データdの一辺の長さNを比較する。yがN未満(y<N)の場合はステップS44に処理が進み、yがN以上(y≧N)の場合はステップS43に処理が進む。

0104

(S43)命令制御コア101は、x=x+1に更新すると共にy=0に初期化する。そして、次のx座標についてステップS41に処理が進む。
(S44)FMA部103aは、畳み込みデータ138とIFFTパラメータ134を用いて、IFFTのバタフライ演算により特徴マップcの要素c(x,y)を算出する。このとき、畳み込みデータ138に明記されていない係数は0とみなされる。FMA部103aは、算出した要素c(x,y)をレジスタファイル104に書き込む。

0105

(S45)命令制御コア101は、レジスタファイル104からRAM106に要素c(x,y)を保存させる。レジスタファイル104からRAM106への保存は、レジスタファイル104やキャッシュメモリ105の使用状況に応じて非同期に行ってもよい。

0106

(S46)命令制御コア101は、y=y+1に更新する。そして、次のy座標についてステップS42に処理が進む。
図13は、データの読み出しおよび書き込みの例を示す図である。

0107

畳み込み層では、画像データ131(d)、カーネルデータ132(k)、FFTパラメータ133(P)およびIFFTパラメータ134(Pi)がRAM106にロードされる。また、インデックスデータ135(I)、画像FFTデータ136(Fd)、カーネルFFTデータ137(Fk)、畳み込みデータ138(Fc)および特徴マップ139(c)が生成されてRAM106に保存される。

0108

RAM106からキャッシュメモリ105およびレジスタファイル104を介して演算コア103に、画像データ131とFFTパラメータ133が読み出される。演算コア103ではFFTが実行され、FFTによって算出された係数と閾値が比較される。演算コア103からレジスタファイル104およびキャッシュメモリ105を介してRAM106に、インデックスデータ135と画像FFTデータ136が書き込まれる。画像FFTデータ136では絶対値の小さい一部の係数が省略されている。

0109

次に、RAM106からキャッシュメモリ105およびレジスタファイル104を介して演算コア103に、カーネルデータ132とFFTパラメータ133が読み出される。演算コア103ではFFTが実行される。演算コア103からレジスタファイル104およびキャッシュメモリ105を介してRAM106に、カーネルFFTデータ137が書き込まれる。カーネルFFTデータ137では一部の係数が省略されている。

0110

次に、RAM106からキャッシュメモリ105およびレジスタファイル104を介して演算コア103に、画像FFTデータ136とカーネルFFTデータ137が読み出される。演算コア103では、同じ座標をもつ係数同士の積が算出される。演算コア103からレジスタファイル104およびキャッシュメモリ105を介してRAM106に、畳み込みデータ138が書き込まれる。畳み込みデータ138では一部の係数が省略されている。省略された畳み込みデータ138の係数は0とみなされる。

0111

次に、RAM106からキャッシュメモリ105およびレジスタファイル104を介して演算コア103に、畳み込みデータ138とIFFTパラメータ134が読み出される。演算コア103ではIFFTが実行される。畳み込みデータ138で省略されている係数は0として取り扱う。演算コア103からレジスタファイル104およびキャッシュメモリ105を介してRAM106に、特徴マップ139が書き込まれる。特徴マップ139は、画像データ131に対応する畳み込み層の出力データである。

0112

第2の実施の形態の画像処理装置100によれば、画像データとカーネルデータに対してフーリエ変換を行うことで、空間領域における積和演算が周波数領域における単純乗算に置き換えられる。よって、画像データとカーネルデータの間の畳み込みを高速に実行できる。また、画像FFTデータに含まれる係数のうち絶対値が閾値未満である係数が0に近似され、0に近似された係数が画像FFTデータから省略される。カーネルFFTデータと畳み込みデータについても、0に近似された画像FFTデータの係数に対応する係数が省略される。これにより、周波数領域データである画像FFTデータ、カーネルFFTデータおよび畳み込みデータのデータ量を削減できる。よって、畳み込み層を実行する際のRAM106の使用量を削減することができる。

0113

また、FFTにより画像データを画像FFTデータに変換する過程で画像FFTデータが圧縮され、FFTによりカーネルデータをカーネルFFTデータに変換する過程でカーネルFFTデータが圧縮される。よって、データ圧縮を効率的に行うことができる。また、カーネルデータをカーネルFFTデータに変換するにあたり、カーネルFFTデータから省略すべき係数の演算自体を省略することができる。同様に、畳み込みデータを生成するにあたり、畳み込みデータから省略すべき係数の演算自体を省略することができる。よって、周波数領域における計算量を削減することができる。

0114

10データ圧縮装置
11 記憶部
12演算部
13 画像データ
14カーネルデータ
15,16周波数領域データ
17 特徴マップ

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ