図面 (/)

技術 データ圧縮装置、データ処理装置、データ圧縮方法、プログラム、及び学習済みモデル

出願人 キヤノン株式会社
発明者 吉永幹チンソクイ加藤政美
出願日 2019年3月11日 (1年11ヶ月経過) 出願番号 2019-044190
公開日 2020年9月17日 (5ヶ月経過) 公開番号 2020-149156
状態 未査定
技術分野 学習型計算機
主要キーワード 出力特徴 特徴面 省コスト 活性化関数 目標品質 入力特徴 展開処理後 レンジ調整
関連する未来課題
重要な関連分野

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

図面 (12)

課題

ニューラルネットワークからの出力結果の品質低下を抑制しながら、メモリに格納される特徴面データのサイズを削減する。

解決手段

ニューラルネットワークに含まれる階層の特徴面データを取得する。第1の圧縮処理を制御するための前記階層に対応する第1の制御信号、及び第2の圧縮処理を制御するための前記階層に対応する第2の制御信号を出力する。特徴面データに対して、第1の制御信号に応じた第1の圧縮処理を行う。第1の圧縮処理後の特徴面データに対して、第2の制御信号に応じた、第1の圧縮処理とは異なる種類の第2の圧縮処理を行う。

概要

背景

畳み込みニューラルネットワーク(Convolutional Neural Network、以下CNNと呼ぶ)のようなニューラルネットワークを用いた処理を、省コストで実現するためのハードウェア実装技術が求められている。ニューラルネットワークは、例えばデータから特徴量を抽出するため、又はデータに対する認識処理を行うために用いることができる。特にCNNは、画像認識等を行うための深層学習においてよく用いられている。特に組み込みシステムなどにおいてニューラルネットワークを用いる場合には、ニューラルネットワークを用いた処理により得られる出力結果の品質(例えば認識精度)と、回路規模の小ささと、を両立することが望まれる。

例えば、ニューラルネットワークに含まれる階層の特徴面圧縮することにより、ニューラルネットワークを用いた処理中に特徴面を一時的に格納するメモリの回路規模を小さくすることができる。特徴面の圧縮方法として、非特許文献1は、ランレングス符号化を用いて特徴面を圧縮することを提案している。また、特許文献1は、階層ごとに量子化ビット幅を変えながら特徴面を量子化することを提案している。

概要

ニューラルネットワークからの出力結果の品質低下を抑制しながら、メモリに格納される特徴面データのサイズを削減する。ニューラルネットワークに含まれる階層の特徴面データを取得する。第1の圧縮処理を制御するための前記階層に対応する第1の制御信号、及び第2の圧縮処理を制御するための前記階層に対応する第2の制御信号を出力する。特徴面データに対して、第1の制御信号に応じた第1の圧縮処理を行う。第1の圧縮処理後の特徴面データに対して、第2の制御信号に応じた、第1の圧縮処理とは異なる種類の第2の圧縮処理を行う。

目的

本発明は、ニューラルネットワークからの出力結果の品質低下を抑制しながら、メモリに格納される特徴面データのサイズを削減することを目的とする

効果

実績

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

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

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

請求項1

ニューラルネットワークに含まれる階層の特徴面データを取得する取得手段と、第1の圧縮処理を制御するための前記階層に対応する第1の制御信号、及び第2の圧縮処理を制御するための前記階層に対応する第2の制御信号を出力する制御手段と、前記特徴面データに対して、前記第1の制御信号に応じた前記第1の圧縮処理を行う第1の圧縮手段と、前記第1の圧縮処理後の前記特徴面データに対して、前記第2の制御信号に応じた、前記第1の圧縮処理とは異なる種類の前記第2の圧縮処理を行う第2の圧縮手段と、を備えることを特徴とするデータ圧縮装置

請求項2

前記第1の圧縮手段及び前記第2の圧縮手段は、前記特徴面データに対して固定長圧縮を行うことを特徴とする、請求項1に記載のデータ圧縮装置。

請求項3

前記制御手段は、前記固定長圧縮により得られるデータサイズを前記階層ごとに切り替えるように、前記第1の制御信号及び前記第2の制御信号を出力することを特徴とする、請求項2に記載のデータ圧縮装置。

請求項4

前記第1の圧縮処理及び前記第2の圧縮処理は、空間方向の配列に対する圧縮処理、チャネル方向の配列に対する圧縮処理、及び値のビット幅を削減する処理、のうちの2つであることを特徴とする、請求項1から3のいずれか1項に記載のデータ圧縮装置。

請求項5

前記第1の圧縮処理と前記第2の圧縮処理の少なくとも一方が、空間方向又はチャネル方向の配列に対する圧縮処理であり、前記第1の制御信号と前記第2の制御信号の少なくとも一方が、前記配列に対する圧縮処理の処理パラメータを規定することを特徴とする、請求項1から3のいずれか1項に記載のデータ圧縮装置。

請求項6

前記配列に対する圧縮処理が、前記配列を複数の分割データへと分割する処理と、前記複数の分割データの一部を欠落させる処理と、欠落させた分割データの前記配列中の位置を示す情報を生成する処理と、を含むことを特徴とする、請求項5に記載のデータ圧縮装置。

請求項7

前記第1の圧縮処理と前記第2の圧縮処理の少なくとも一方が、値のビット幅を削減する処理であり、前記第1の制御信号と前記第2の制御信号の少なくとも一方が、ビット幅の削減量又は削減後のビット幅を指定することを特徴する、請求項1から3のいずれか1項に記載のデータ圧縮装置。

請求項8

前記第1の圧縮処理と前記第2の圧縮処理の少なくとも一方が非可逆圧縮処理であることを特徴とする、請求項1から7のいずれか1項に記載のデータ圧縮装置。

請求項9

前記制御手段は、前記第1の圧縮処理を行うか否かを前記階層ごとに切り替えるように前記第1の制御信号を生成し、前記第2の圧縮処理を行うか否かを前記階層ごとに切り替えるように前記第2の制御信号を生成することを特徴とする、請求項1から8のいずれか1項に記載のデータ圧縮装置。

請求項10

前記第1の圧縮手段及び前記第2の圧縮手段は、前記特徴面データを分割することにより得られた複数の処理単位のそれぞれに対して、前記第1の圧縮処理及び前記第2の圧縮処理を行うことを特徴とする、請求項1から9のいずれか1項に記載のデータ圧縮装置。

請求項11

前記制御手段が出力する前記第1の制御信号及び前記第2の制御信号は、前記階層の特徴面のサイズ、前記階層の特徴面の数、及び前記階層の特徴面のビット幅に基づいて決定された信号であることを特徴とする、請求項1から10のいずれか1項に記載のデータ圧縮装置。

請求項12

前記第2の圧縮手段により出力された特徴面データを格納する記憶手段をさらに備え、前記制御手段が出力する前記第1の制御信号及び前記第2の制御信号は、前記記憶手段の容量に基づいて決定された信号であることを特徴とする、請求項1から11のいずれか1項に記載のデータ圧縮装置。

請求項13

前記制御手段が出力する前記第1の制御信号及び前記第2の制御信号は、前記ニューラルネットワークを用いた処理により得られるデータの目標品質に応じて決定された信号であることを特徴とする、請求項1から12のいずれか1項に記載のデータ圧縮装置。

請求項14

ニューラルネットワークを用いた演算処理を行うデータ処理装置であって、請求項1から13のいずれか1項に記載のデータ圧縮装置と、前記データ圧縮装置が有する前記第2の圧縮手段により出力された特徴面データを格納する記憶手段と、前記記憶手段に格納された前階層の特徴面データを用いて、次階層の特徴面データを生成する演算処理を行う演算手段と、を備えることを特徴とする、データ処理装置。

請求項15

前記記憶手段に格納されている圧縮された前記特徴面データを展開して前記演算手段に供給する展開手段をさらに備えることを特徴とする、請求項14に記載のデータ処理装置。

請求項16

前記展開手段は、展開処理を前記階層ごとに切り替えることを特徴とする、請求項15に記載のデータ処理装置。

請求項17

前記データ処理装置は、入力データに対して前記ニューラルネットワークを用いた演算処理を行うことにより、前記入力データに対応する出力データを生成するデータ処理装置であり、学習用の入力データに対して前記ニューラルネットワークを用いた演算処理を行うことにより得られた出力データと、学習用の入力データに対応する教師データと、を用いて、前記ニューラルネットワークの学習を行う学習手段をさらに備えることを特徴とする、請求項14から16のいずれか1項に記載のデータ処理装置。

請求項18

請求項14から16のいずれか1項に記載のデータ処理装置が行う処理を規定する、前記階層ごとの前記第1の制御信号及び前記第2の制御信号を特定する制御パラメータと、前記ニューラルネットワークと、を含む学習済みモデル

請求項19

データ圧縮装置が行うデータ圧縮方法であって、ニューラルネットワークに含まれる階層の特徴面データを取得する取得工程と、第1の圧縮処理を制御するための前記階層に対応する第1の制御信号、及び第2の圧縮処理を制御するための前記階層に対応する第2の制御信号を出力する制御工程と、前記特徴面データに対して、前記第1の制御信号に応じた前記第1の圧縮処理を行う第1の圧縮工程と、前記第1の圧縮処理後の前記特徴面データに対して、前記第2の制御信号に応じた、前記第1の圧縮処理とは異なる種類の前記第2の圧縮処理を行う第2の圧縮工程と、を備えることを特徴とするデータ圧縮方法。

請求項20

コンピュータを、請求項1から13のいずれか1項に記載のデータ圧縮装置又は請求項14から17のいずれか1項に記載のデータ処理装置の各手段として機能させるための、プログラム

技術分野

背景技術

0002

畳み込みニューラルネットワーク(Convolutional Neural Network、以下CNNと呼ぶ)のようなニューラルネットワークを用いた処理を、省コストで実現するためのハードウェア実装技術が求められている。ニューラルネットワークは、例えばデータから特徴量を抽出するため、又はデータに対する認識処理を行うために用いることができる。特にCNNは、画像認識等を行うための深層学習においてよく用いられている。特に組み込みシステムなどにおいてニューラルネットワークを用いる場合には、ニューラルネットワークを用いた処理により得られる出力結果の品質(例えば認識精度)と、回路規模の小ささと、を両立することが望まれる。

0003

例えば、ニューラルネットワークに含まれる階層の特徴面圧縮することにより、ニューラルネットワークを用いた処理中に特徴面を一時的に格納するメモリの回路規模を小さくすることができる。特徴面の圧縮方法として、非特許文献1は、ランレングス符号化を用いて特徴面を圧縮することを提案している。また、特許文献1は、階層ごとに量子化ビット幅を変えながら特徴面を量子化することを提案している。

0004

特開2018−10618号公報

先行技術

0005

Y. Chen et al., "Eyeriss: An Energy-Efficient Reconfigurable Accelerator for DeepConvolutional Neural Networks," inIEEE Journal of Solid-StateCircuits, vol. 52, no. 1, pp. 127-138, Jan. 2017., doi: 10.1109/JSSC.2016.2616357

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

0006

特徴面を格納するメモリの回路規模をより小さくするためには、より圧縮率の高い圧縮方法を用いることが望まれる。しかしながら、可逆なランレングス符号化を用いる非特許文献1に記載の方法は圧縮率が制限されるという課題を有している。また、量子化を用いる特許文献1に記載の方法は、単純に量子化ビット数を削減していくと、ニューラルネットワークからの出力結果の品質が低下しやすいという課題を有している。

0007

本発明は、ニューラルネットワークからの出力結果の品質低下を抑制しながら、メモリに格納される特徴面データのサイズを削減することを目的とする。

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

0008

本発明の目的を達成するために、例えば、本発明のデータ圧縮装置は以下の構成を備える。すなわち、
ニューラルネットワークに含まれる階層の特徴面データを取得する取得手段と、
第1の圧縮処理を制御するための前記階層に対応する第1の制御信号、及び第2の圧縮処理を制御するための前記階層に対応する第2の制御信号を出力する制御手段と、
前記特徴面データに対して、前記第1の制御信号に応じた前記第1の圧縮処理を行う第1の圧縮手段と、
前記第1の圧縮処理後の前記特徴面データに対して、前記第2の制御信号に応じた、前記第1の圧縮処理とは異なる種類の前記第2の圧縮処理を行う第2の圧縮手段と、
を備えることを特徴とする。

発明の効果

0009

ニューラルネットワークからの出力結果の品質低下を抑制しながら、メモリに格納される特徴面データのサイズを削減することができる。

図面の簡単な説明

0010

データ処理部305の一構成例を示すブロック図。
データ処理部305の処理の一例を示すフローチャート
データ処理装置の一構成例を示すブロック図。
処理対象の一例であるニューラルネットワークの構造を示す図。
圧縮処理部101が用いる処理アルゴリズムを説明する図。
圧縮処理部102が用いる処理アルゴリズムを説明する図。
特徴面の圧縮を適用した後のネットワークパラメータの一例を示す図。
データ処理部305の一構成例を示すブロック図。
圧縮処理部801が用いる処理アルゴリズムを説明する図。
圧縮処理部802が用いる処理アルゴリズムを説明する図。
特徴面の圧縮を適用した後のネットワークパラメータの一例を示す図。

実施例

0011

以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。

0012

本発明の一実施形態によれば、異なる種類の圧縮処理を行う複数の圧縮部により、ニューラルネットワークを用いた処理において得られる、階層の特徴面が圧縮される。このような構成により、単一の圧縮部が単一の圧縮処理を行う場合と比較して、ニューラルネットワークの出力結果の品質の低下を抑えながら、特徴面を格納するメモリの使用量を削減することが容易となる。言い換えれば、このような構成により、特徴面を格納するメモリの使用量を増やさずに、ニューラルネットワークの出力結果の品質の低下を抑えることができる。例えば、一実施形態によれば、ニューラルネットワークを用いて認識処理を行う場合に、認識精度の低下を抑えながら必要なメモリサイズを減らすことができる。以下、具体的な実施形態の例について説明する。

0013

なお、本発明の一実施形態においては、特徴面を固定長圧縮することもできる。このような構成によれば、特徴面を格納するメモリが所定のメモリサイズを有する場合に、このメモリに格納可能なように特徴面の圧縮を行うことが容易となる。すなわち、固定長圧縮を用いることにより、メモリに格納される圧縮後の特徴面のデータサイズの上限が固定される。非特許文献1に記載のランレングス符号化のような可変長圧縮を用いる場合には、圧縮後の特徴面のデータサイズの上限を固定することができないため、十分なメモリサイズを有するメモリが特徴面の格納のために用いられる。一方で、固定長圧縮を用いる場合、各階層についての圧縮後の特徴面のデータサイズの上限に従うメモリサイズを有するメモリを、特徴面の格納のために用いることができる。このため、固定長圧縮を用いる場合には、可変長圧縮を用いる場合と比較して、メモリサイズの削減が容易となる。

0014

[実施形態1]
(データ処理装置の構成例)
実施形態1に係るデータ圧縮装置は、ニューラルネットワークを用いた処理において得られる、ニューラルネットワークに含まれる階層の特徴面データ(本明細書において、単に特徴面と呼ぶことがある)を圧縮する構成を有している。より具体的には、本実施形態に係るデータ圧縮装置は、ニューラルネットワークの第1の階層における特徴面を圧縮してからメモリに格納することができる。そして、データ圧縮装置は、メモリに格納された圧縮後の特徴面を用いて、ニューラルネットワークの第2の階層の特徴面を生成するための演算処理を行うことができる。なお、本実施形態に係るデータ圧縮装置は、一階層の特徴面全体を圧縮してメモリに格納する代わりに、一階層の特徴面の一部を圧縮してメモリに格納してもよい。

0015

実施形態1に係るデータ圧縮装置は、例えば、ニューラルネットワークを用いた演算処理を行うデータ処理装置に含まれていてもよい。図3は、このようなデータ処理装置の構成の一例を示すブロック図である。データ処理装置は、入力データに対してニューラルネットワークを用いた演算処理を行うことにより、入力データに対応する出力データを生成することができる。データ処理装置は、例えば入力データに対する認識処理の結果を出力データとして生成し、この出力データに基づいて認識処理の結果を示す出力を生成してもよい。また、データ処理装置は、例えば入力データから抽出した特徴量を出力データとして生成し、この出力データに基づいて入力データに対してさらなるデータ処理(例えば画像処理)を行ってもよい。

0016

データ保存部302は、各種のデータ及びパラメータを格納することができる。データ保存部302は、例えば不揮発性のメモリ又は記憶媒体であってもよい。データ保存部302の具体例としては、ハードディスクフレキシブルディスクCD−ROM、CD−R、DVD、メモリーカードCFカードスマートメディアSDカードメモリスティック、xDピクチャーカード、又はUSBメモリなどが挙げられる。データ保存部302は、例えば画像データを格納することができ、プログラムやその他のデータを保存することも可能である。一方で、後述するRAM308の一部がデータ保存部302として用いられてもよい。さらに、データ保存部302が仮想的な構成を有していてもよい。例えば、後述する通信部303を介して接続されている機器が有する記憶装置が、データ保存部302として用いられてもよい。

0017

表示部304は画像などの情報を表示することができる。例えば表示部304は、画像処理前若しくは画像処理後の画像、又はGUIの画像を表示してもよい。表示部304は、例えばCRT又は液晶ディスプレイなどの表示装置であってもよい。一方、表示部304は、ケーブル等の接続手段を介して接続されている、データ処理装置の外部にあるディスプレイ装置であってもよい。

0018

入力部301は指示などの情報又はデータを取得することができる。入力部301は、例えばキーボードポインティング装置、又はボタンなどの入力装置を有していてもよく、この場合ユーザは入力部301を介してデータ処理装置に対して指示を入力することができる。一方、表示部304と入力部301とが同一装置であってもよく、例えば表示部304及び入力部301としてタッチスクリーンを用いることもできる。

0019

CPU306は、データ処理装置全体の動作を制御するプロセッサである。ROM307及びRAM308はメモリである。ROM307及びRAM308は、CPU306の処理に必要なプログラム、データ、及び作業領域などをCPU306に提供することができる。例えばCPU306は、RAM308に読み込まれたプログラムに従って動作することができる。プログラムがデータ保存部302又はROM307に格納されている場合、RAM308はこのようなプログラムを読み込むことができる。また、通信部303を経由してデータ処理装置がプログラムを受信する場合、データ保存部302が一旦プログラムを格納し、その後にRAM308がこのプログラムを読み込んでもよい。一方で、RAM308は、プログラムを直接通信部303から読み込んでもよい。なお、データ処理装置は、2つ以上のプロセッサを有していてもよい。

0020

データ処理部305は、入力データに対するデータ処理を行うことができる。本実施形態において、データ処理部305は、入力データに対してニューラルネットワークを用いた処理を行う。例えば、データ処理部305は、入力データをニューラルネットワークに入力し、ニューラルネットワークを用いた演算を行うことにより、ニューラルネットワークからの出力を生成することができる。後述するようにデータ処理部305は、ニューラルネットワークに含まれる階層の特徴面を圧縮するデータ圧縮装置を含んでいる。

0021

CPU306は、こうしてデータ処理部305により生成されたニューラルネットワークを用いた処理の結果を用いて出力を生成することができる。例えば、CPU306は、上述したように認識処理の結果又はデータ処理結果を出力してもよい。

0022

一実施形態において、データ処理装置は、画像データに対してニューラルネットワークを用いた処理を行うことができる。このような実施形態において、画像処理部309は、画像データに対する画像処理を行うことができる。例えば画像処理部309は、CPU306からのコマンドに従って、データ保存部302に格納された画像データを読み出し画素値レンジ調整処理を行い、処理後の画像データをRAM308に書き込むことができる。そして、データ処理部305は、RAM308に保存された画像処理後の画像データに対してデータ処理を行い、処理結果をRAM308に格納することができる。そして、CPU306は、画像データに対する画像処理又は画像認識処理を行い、処理結果をRAM308に保存することができる。画像データは、複数フレームで構成される動画像であってもよい。

0023

通信部303は、機器間の通信を行うためのインタフェースである。なお、データ処理装置の構成は図3に示される構成には限定されない。例えば、データ処理装置が他の構成要素を有していてもよいし、一部の構成要素を有していなくてもよい。また、各構成要素が公知の通信方式に従う通信路で互いに接続されていてもよい。例えば、入力部301、データ保存部302、及び表示部304が互いに異なる装置に含まれていてもよく、データ処理装置はこれらの装置が互いに接続された構成を有していてもよい。

0024

(ニューラルネットワークの構成例)
上述の通り、データ処理部305は、入力データに対してニューラルネットワークを用いた処理を行う。ニューラルネットワークを用いた処理は特に限定されず、公知のニューラルネットワークを用いてもよい。一実施形態に係るニューラルネットワークは、入力層、複数の中間層、及び出力層のような、複数の階層(レイヤ)を有している。このようなニューラルネットワークを用いた処理においては、先行する階層における特徴面を用いた演算処理により、後続する階層の特徴面が得られる。具体例において、第1の階層における特徴面を用いた演算処理により、第1の階層に後続する第2の階層の特徴面が得られる。その後、第2の階層の特徴面を用いた演算処理により、第2の階層に後続する第3の階層の特徴面が得られる。

0025

ここで、先行する階層の特徴面から後続する階層の特徴面を生成する演算処理は、積和演算を含んでいてもよく、また活性化処理を含んでいてもよい。例えば、特徴面は、畳み込みニューラルネットワーク(CNN)における階層ごとの畳み込み演算及び活性化処理の結果であってもよい。ある階層lの複数の特徴面X0l,X1l,X2l,……から、次の階層l+1のi番目の特徴面Xil+1を求める処理は、例えば式(1)に従って行うことができる。式(1)において、Wi,jlは畳み込み演算に用いるフィルタ係数を、bilはバイアス項を、それぞれ表す。また、*は畳み込み演算を、φは活性化関数を、それぞれ表す。

0026

図4は、本実施形態における処理対象の一例であるニューラルネットワーク(以下、「ネットワーク」と呼ぶ)の具体的な構造例を示す。ネットワーク構造は、積和演算の計算量、特徴面のサイズ、枚数、及びビット幅などに基づいて決定することができる。図4に例示されるネットワークにおいては、特徴面1枚あたりの画素数は1024であり、特徴面のビット幅(各画素の画素値のデータ量)は8である。また、レイヤ1〜レイヤ4は、それぞれ異なる枚数の特徴面を有しており、それぞれ3枚、8枚、16枚、及び4枚の特徴面を有している。レイヤ1の上流及びレイヤ4の下流にさらなる階層が存在していてもよい。

0027

レイヤ2の複数枚の特徴面402は、レイヤ1の複数枚の特徴面401とフィルタ係数とを用いて演算処理(式(1)に相当する積和演算及び活性化処理)を実行することにより、得ることができる。同様に、レイヤ3の複数枚の特徴面403は、レイヤ2の複数枚の特徴面402とフィルタ係数とを用いて演算処理を実行することにより得られる。また、レイヤ4の複数枚の特徴面404は、レイヤ3の複数枚の特徴面403とフィルタ係数とを用いて演算処理を実行することにより得られる。

0028

上記のような演算処理により得られた特徴面(例えば特徴面401〜404)は、一時保存のために中間データとして記憶部に格納され、その後次の階層の特徴面を得るための演算処理のために記憶部から読み出される。本実施形態においては、このような特徴面の記憶のために必要な記憶容量を削減するために、特徴面に対する圧縮処理が行われ、圧縮処理後の特徴面が記憶部に格納される。以下、このような演算処理及び圧縮処理を行う、一実施形態に係るデータ圧縮装置であるデータ処理部305の構成例について、図1を参照して説明する。

0029

(データ圧縮装置の構成例)
データ処理部305は、特徴面に対する圧縮処理を行う圧縮処理部101及び圧縮処理部102を有している。また、データ処理部305はさらに、圧縮処理部101,102による圧縮処理を制御する制御部104を有している。これら圧縮処理部101,102及び制御部104で構成される部分を、データ圧縮装置と呼ぶことができる。図1に示す例において、データ圧縮装置はさらに圧縮後の特徴面を格納する記憶部103を有している。記憶部103は、圧縮処理部102により出力された特徴面データを格納することができる。一方で、記憶部103はデータ処理部305の外部にあってもよい。

0030

圧縮処理部101及び圧縮処理部102は、それぞれ異なる種類の圧縮処理を行う。また、圧縮処理部101及び圧縮処理部102によって行われる圧縮処理は、制御部104によって制御される。すなわち、圧縮処理部101は、ニューラルネットワークに含まれる階層の特徴面データに対して、第1の制御信号に応じた第1の圧縮処理を行う。また、圧縮処理部102は、第1の圧縮処理後の特徴面データに対して、第2の制御信号に応じた、第1の圧縮処理とは異なる種類の第2の圧縮処理を行う。一実施形態において、より圧縮率が大きくなるように、第1の圧縮処理と第2の圧縮処理の少なくとも一方、又は双方は非可逆圧縮処理である。

0031

一実施形態において圧縮処理部101は、特徴面を構成する値に対する量子化処理を行う。例えば、圧縮処理部101は、各画素の値に対する量子化処理を行うことができる。ここで、圧縮処理部101は、特徴面データに対して固定長圧縮を行ってもよい。例えば圧縮処理部101は、制御部104から与えられた制御信号によって指定されたビット幅に従う量子化処理を行うことができ、こうして固定長圧縮を行うことができる。

0032

また、一実施形態において圧縮処理部102は、特徴面を構成する複数の値の関係に基づく圧縮処理を行うことができる。例えば、圧縮処理部102は、複数の値のうち一部を欠落させる処理、又は複数の値に対するランレングス符号化を行うことができる。ここで、圧縮処理部102も、特徴面データに対して固定長圧縮を行ってもよい。例えば圧縮処理部102は、制御部104から与えられた制御信号によって指定された圧縮率に従う圧縮処理を行うことができ、こうして固定長圧縮を行うことができる。以下の説明においては、圧縮前のデータサイズに対する圧縮後のデータサイズの比のことを圧縮率と呼ぶ。

0033

制御部104は、圧縮処理部101及び圧縮処理部102にそれぞれ制御信号を与える。具体的には、制御部104は、第1の圧縮処理を制御するための、階層に対応する第1の制御信号、及び第2の圧縮処理を制御するための、階層に対応する第2の制御信号を出力する。このように、制御部104は、階層(レイヤ1〜4)のそれぞれに対応する制御信号を出力する。例えば、圧縮処理部101及び圧縮処理部102により特徴面が固定長圧縮される場合、制御部104は、固定長圧縮後のデータサイズを階層ごとに切り替えるように、第1の制御信号及び第2の制御信号を出力することができる。

0034

本実施形態において、制御部104は、予め決定されている制御パラメータ105を参照して階層ごとに制御信号を切り替える。制御パラメータ105は、図4に示すネットワーク情報に基づいて、レイヤ1〜4それぞれについて予め決定されている。制御パラメータ105は外部からデータ圧縮装置に与えられてもよい。また、制御パラメータ105は、データ保存部302又はRAM308に格納されていてもよい。

0035

記憶部103は、圧縮された特徴面を格納するための記憶装置であり、特徴面メモリと呼ぶことができる。格納された特徴面は、次の階層の特徴面を算出するために用いることができる。

0036

データ処理部305は、さらに演算部106及び展開処理部107を含むことができる。演算部106は、特徴面を算出するための演算処理を行うことができる。すなわち、演算部106は、記憶部103に格納された前階層の特徴面データを用いて、次階層の特徴面データを生成する演算処理を行うことができる。本実施形態において演算部106は、上述の式(1)に基づく演算処理を行う。また、本実施形態において演算部106は、ビット幅が8以下である前階層の特徴面を入力として受け取り、ビット幅が8である次階層の特徴面を出力する。

0037

また、展開処理部107は、必要に応じて、記憶部103に格納されている圧縮された特徴面を展開することができる。すなわち、展開処理部107は、記憶部103に格納されている圧縮された特徴面データを展開して演算部106に供給することができる。

0038

このように展開処理部107は、記憶部103に圧縮された特徴面が格納されている場合、記憶部103に格納された前階層の特徴面を展開して演算部106に渡すことができる。この場合、演算部106は受け取った展開後の特徴面を用いて次階層の特徴面を算出するための演算処理を行うことができる。本実施形態において展開処理部107は、記憶部103に圧縮された特徴面が格納されている場合、圧縮後の特徴面を読み出し、その直後に展開処理を行う。また、圧縮処理部101,102は、次階層の特徴面の圧縮を行う場合、次階層の特徴面を記憶部103に格納する前に、演算部106から受け取った次階層の特徴面に対する圧縮処理を行い、圧縮後の特徴面を記憶部103に格納する。もっとも、圧縮処理部101,102は、制御部104の制御に従って、次階層の特徴面の圧縮を省略することもある。

0039

データ圧縮処理の流れ)
データ処理部305が行う処理について、図2のフローチャートを参照して説明する。以下では、データ処理部305が図4に示すネットワークに従う処理を行う場合について説明する。ステップS201〜S211によって、図4に示すネットワーク全体に相当するデータ処理を実現することができる。また、階層(レイヤ1〜レイヤ4)のそれぞれに相当するデータ処理は、ステップS203〜S210によって実現される。すなわち、ステップS203〜S210の処理を繰り返すことにより、各階層に相当する処理を順次実現できる。

0040

一実施形態において、各階層におけるデータ処理は、処理単位ごとに行うことができる。このような処理単位は、特徴面データを分割することにより得ることができる。本実施形態においては、一定の画素数又はデータサイズを有する処理単位(以下、特徴面ブロックと呼ぶ)ごとに、次階層の特徴面が算出される。すなわち、次階層の特徴面は複数の特徴面ブロックへと分割され、それぞれの特徴面ブロックについて値が得られる。本実施形態においては、それぞれの特徴面ブロックを算出するデータ処理は、ステップS205〜S209の処理により実現される。すなわち、ステップS205〜S209の処理を繰り返すことにより、各特徴面ブロックに相当する処理が順次実現され、次階層の特徴面が得られる。このような構成において、圧縮処理部101及び圧縮処理部102は、特徴面データを分割することにより得られた複数の処理単位(例えば特徴面ブロック)のそれぞれに対して、第1の圧縮処理及び第2の圧縮処理を行うことができる。

0041

データ処理を特徴面ブロック単位で行うことは必須ではないが、このような方法によれば、処理単位のデータサイズを小さくすることができる。すなわち、演算部106、圧縮処理部101、圧縮処理部102、及び展開処理部107の処理単位を小さくすることができる。このような構成により、特徴面単位で処理を行う場合(例えば、一階層の特徴面を一括で圧縮及び展開する場合)と比較して、データ処理部305の回路規模を削減できる。さらに、データ処理を特徴面ブロック単位で行うことにより、空間方向の情報を利用した処理が容易になる。例えば、複数の画素を一括して処理することにより、特徴面ブロック内のデータの性質(例えば、値が局所的に大きい又は小さいという性質)を考慮して圧縮処理を行うことができるため、圧縮誤差を抑えながら圧縮率を向上させることが容易となる。

0042

ステップS201で制御部104は制御パラメータ105を取得する。制御パラメータ105の決定方法については後述する。

0043

ステップS202において階層ごとのループ(ステップS202〜S211)が開始する。される。ループ回数はネットワークの階層数−1(=入力層を除いた階層数)である。図4のネットワークでは、入力層であるレイヤ1以外の階層数は3であるため、ループは3回行われる。以下では、ステップS202〜S211の1回の処理において生成される特徴面のことを次階層の特徴面と、処理において参照される特徴面のことを前階層の特徴面と、それぞれ呼ぶ。

0044

ステップS203で制御部104は、ステップ201で取得した制御パラメータ105に基づいて制御信号を生成する。制御パラメータ105は階層ごとに設定されており、制御信号は階層ごとに切り替えられる。すなわち制御部104は、次階層に対応する制御パラメータ105に基づいて制御信号を生成する。

0045

ステップS204では、特徴面ブロックごとのループ(ステップS204〜S210)が開始する。ループ回数は、演算処理により生成される特徴面における特徴面ブロックの数に一致する。本実施形態において、各階層について特徴面ブロックのサイズは一定である。一方、各階層について特徴面ブロックの数は異なる。このため、ループ回数は階層ごとに変動する。以下では、特徴面ブロックが8画素で構成され、ビット幅が8である場合について説明する。

0046

ステップS205で演算部106は、前階層の特徴面を記憶部103から読み出し、又は、展開処理部107から取得する。展開処理部107が行う具体的な処理については後述する。そして、演算部106は、前階層の特徴面(ビット幅2又は8)を参照して、式(1)に従う演算処理を行い、得られた結果を次階層の特徴面ブロック(ビット幅8)として出力する。

0047

ステップS206で圧縮処理部ごとのループ(ステップS207〜S209)が開始する。ループ回数は、演算処理により生成される特徴面における特徴面ブロックの数に一致する。本実施形態において圧縮処理部の数は2である(圧縮処理部101及び圧縮処理部102)ため、ループ回数は2回である。圧縮処理部の数が3以上である場合、ステップS207〜S209の繰り返しにより、それぞれの圧縮処理部による圧縮処理が行われる。

0048

ステップS207で圧縮処理部101又は圧縮処理部102は、圧縮処理により特徴面ブロックを圧縮する。ステップS208では、圧縮処理部ごとのループが終了する。次の圧縮処理部が存在する場合、圧縮後の特徴面ブロックが次の圧縮処理部へと出力され、処理はステップS206に戻る。

0049

回目のループのステップS207において圧縮処理部101は、特徴面ブロックに対して、第1の制御信号に応じた第1の圧縮処理を行う。圧縮時に必要な情報は、制御信号の形で制御部104から与えられている。

0050

本実施形態において圧縮処理部101は、第1の圧縮処理として量子化処理を行うことにより、固定長圧縮を行う。ここで圧縮処理部101は、制御信号により指定されたビット幅で量子化を行う。なお、ここで圧縮処理部101が、制御信号により指定されたビット幅の削減量に従って量子化を行ってもよい。図5は、圧縮処理部101による量子化処理を説明する図である。図5の例では、8ビット8画素の特徴面ブロック501に対する圧縮が行われており、また制御信号によりビット幅2での量子化が指定されている。この場合、圧縮処理部101は、特徴面ブロックの各画素の値xを、式(2)に基づいて出力値f(x)に変換することができる。

0051

式(2)に示される閾値T0,T1,T2のような量子化処理で用いられるパラメータは、予め定められていてもよいし、制御信号などにより与えられてもよい。圧縮処理部101は、こうして得られた出力値f(x)を有する特徴面ブロック502を、第1の圧縮処理後の特徴面ブロックとして圧縮処理部102へと出力する。一方で、制御部104は、第1の圧縮処理を行うか否かを階層ごとに切り替えるように第1の制御信号を生成してもよい。例えば、圧縮処理部101は、制御信号によりビット幅8を指定された場合(すなわち量子化処理を行わないことを指定された場合)、特徴面ブロック501をそのまま特徴面ブロック502として圧縮処理部102へと出力することができる。

0052

このとき、図5に示す特徴面ブロック502のサイズL’は、量子化ビット幅l’及び画素数wを用いて、式(3)により表すことができる。
L’=l’×w ……(3)

0053

例えば、図5の例では(l’,w)=(2,8)であるため、特徴面ブロック502のサイズL’は16である。一方で、式(3)に従って同様に求められた特徴面ブロック501のサイズLは64である。このように、図5の例では、第1の圧縮処理により特徴面ブロックのデータサイズが25%に圧縮されている。

0054

2回目のループのステップS207において圧縮処理部102は、第1の圧縮処理後の特徴面ブロックに対して、第2の制御信号に応じた第2の圧縮処理を行う。圧縮時に必要な情報は、制御信号の形で制御部104から与えられている。

0055

本実施形態において圧縮処理部102は、第2の圧縮処理として、特徴面ブロックの空間方向の情報を用いた圧縮処理を行うことにより、固定長圧縮を行う。図6は、圧縮処理部102による圧縮処理を説明する図である。図6の例では、2ビット8画素の特徴面ブロック502に対する圧縮が行われており、また制御信号により以下に示す圧縮方法が指定されている。

0056

まず、圧縮処理部102は、特徴面ブロック502を2画素ずつに分割することで、分割データ602〜605を生成する。次に、圧縮処理部102は、分割データ602〜605のうち2つを選択する。データの選択方法としては、例えば、値の総和がより大きい分割データを優先して選択する方法が挙げられる。さらに、圧縮処理部102は、どの分割データが選択されたかを示すビット列608を生成する。例えば、ビット列608は、特徴面ブロック502の先頭から1番目の分割データ602及び4番目の分割データ605が選択されたことを示している。そして、圧縮処理部102は、選択された分割データ602,605及びビット列608を結合することにより、第2の圧縮処理後の特徴面ブロック609を生成する。

0057

このように、一実施形態において、圧縮処理部102は空間方向の配列(特徴面ブロック502)に対する圧縮処理を行う。この圧縮処理は、配列を複数の分割データ602〜605へと分割する処理と、複数の分割データの一部である分割データ603,604を欠落させる処理と、欠落させた分割データの配列中の位置を示す情報であるビット列608を生成する処理と、を含む。

0058

ここで、出力される特徴面ブロック609のサイズL’’は、特徴面ブロック502の画素数w及びビット幅l’、分割データの数n、及び選択される分割データの数mにより決定される。すなわち、特徴面ブロック609のサイズL’’は、分割データ602,605の画素数が1つあたりw/nであり、ビット列608のビット長がnであることから、式(4)により表すことができる。
L’’=l’×m×(w/n)+n ……(4)

0059

例えば、図6の例では(l’,m,n,w)=(2,2,4,8)であるため、特徴面ブロック609のサイズL’’は12である。一方で、特徴面ブロック502のサイズL’は16である。このように、図6の例では、第2の圧縮処理により特徴面ブロックのデータサイズが75%に圧縮されている。

0060

本実施形態において制御部104は、第2の制御信号により上記の圧縮処理パラメータ、すなわち分割データの数n及び選択される分割データの数mのうちの少なくとも1つを指定することができる。このため、圧縮処理部102は、制御信号に従う固定長圧縮を行うことができる。一方で、制御部104は、第2の圧縮処理を行うか否かを階層ごとに切り替えるように第2の制御信号を生成してもよい。例えば、制御信号により圧縮処理を行わないことを指定された場合(例えばパラメータとしてn=m=1を指定された場合)、特徴面ブロック502がそのまま特徴面ブロック609として用いられる。

0061

ステップS209で、最後段の圧縮処理部(例えば圧縮処理部102)は、生成した特徴面ブロック609を記憶部103に格納する。

0062

上述のように、ステップS205において展開処理部107は、記憶部103に圧縮された特徴面が格納されている場合、特徴面を展開して演算部106へ出力する。展開処理部107は、例えば、演算部106の要求に応じて、演算部106が使用する特徴面ブロックに対応する圧縮された特徴面ブロックを展開してもよい。

0063

この場合、展開処理部107は、圧縮処理部101,102が用いた第1及び第2の圧縮処理に対応する展開処理方法を用いることができる。ここで、展開処理部107は、展開処理を階層ごとに切り替えることができる。すなわち、展開処理部107は、階層ごとに切り替えられた第1及び第2の圧縮処理に対応する展開処理を行うことができる。

0064

例えば、展開処理部107は、第2の圧縮処理に対応する第2の展開処理を用いて、記憶部103に格納されている圧縮された特徴面を展開することができる。上述の例において、展開処理部107は、特徴面ブロック609に含まれるビット列608を参照することで、選択された分割データ602,605を元の位置に再配置することができる。また、展開処理部107は、選択されなかった分割データ603,604を、0のビット列で補完することができる。このようにして展開処理部107は、特徴面ブロック502に対応する、一部の情報が欠落した特徴面ブロックを生成することができる。制御部104は、展開処理部107によるこのような第2の展開処理を制御するための、前階層に対応する制御信号を、展開処理部107へと出力してもよい。

0065

圧縮処理部102が行う第2の圧縮処理は上記の例に限定されるわけではないが、上記のような第2の圧縮処理によれば、ニューラルネットワークの出力結果の品質の低下を比較的小さく抑えながら特徴面の圧縮を行うことができる。一般に、畳み込みニューラルネットワークで生成される特徴面において、全画素に占める画素値として0を有する画素の割合は大きいことが多い。上記の方法を用いた場合、画素値として0を有する画素についての情報が優先的に欠落するが、これらの画素の画素値として0が補完されるため、圧縮及び展開により特徴面の画素値が変動する可能性は比較的低い。このため、ニューラルネットワークの出力結果の品質の低下、例えばニューラルネットワークを用いた認識処理における精度の低下を抑えることができる。

0066

このように、一実施形態において、選択される分割データ及び欠落させられる分割データは、特徴面ブロックごとに動的に選択される。一方で、分割データの選択方法は上記の例に限定されるわけではなく、ニューラルネットワークで実現しようとする処理の特性、及びニューラルネットワークに入力しようとするデータの特性に応じて、適宜選択可能である。例えば、特定の実施形態において、値の総和がより小さい分割データが優先して選択されてもよいし、欠落した画素の画素値として0以外の値が補完されてもよい。

0067

展開処理部107は、さらに、第1の圧縮処理に対応する第1の展開処理を用いて、第2の展開処理により得られた特徴面を展開することができる。上記の例において、展開処理部107は、第2の展開処理後の特徴面ブロックの値に対して逆量子化処理(値を64倍する処理)を行ってもよい。一方で、第1の展開処理を行うことは必須ではない。例えば、演算部106が量子化を考慮して(例えば特徴面の値を64倍した後に)演算処理を行ってもよい。このように、展開処理部107が、第1及び第2の圧縮処理に完全に対応する展開処理を行うことは必須ではない。

0068

ステップS210で特徴面ブロックごとのループが終了する。次の特徴面ブロックが存在する場合、処理はステップS204に戻って次の特徴面ブロックについての処理が行われ、次の特徴面ブロックが存在しない場合、処理はステップS211に進む。

0069

ステップS211で階層ごとのループが終了する。次の階層が存在する場合(例えば、レイヤ2及びレイヤ3の特徴面を算出した場合)、処理はステップS202に戻って次の階層の特徴面が算出される。また、次の階層が存在しない場合(例えば、出力層(レイヤ4)の特徴面を算出した場合)、一連のデータ圧縮処理が終了する。

0070

(制御パラメータ)
制御パラメータ105の具体例及びその作成方法の例を以下に示す。制御パラメータ105は、記憶部103(特徴面メモリ)におけるメモリ使用量を削減するように作成することができる。以下の例では、図4に示すネットワーク情報と、図3に示すデータ処理装置の制約と、に基づいて予め制御パラメータ105が設定される。図4の例では、ネットワーク情報として、各特徴面のサイズを表す情報が用いられている。図4に示すように、ネットワーク情報は、例えば各階層の特徴面のサイズ(画素数)、各階層の特徴面の数、及び各階層の特徴面のビット幅を含んでいてもよい。このように設定された制御パラメータ105を参照することにより、階層の特徴面のサイズ、階層の特徴面の数、及び階層の特徴面のビット幅に基づいて決定された信号である、第1の制御信号及び第2の制御信号を、制御部104が出力することが可能となる。なお、以下の例においては入力層(レイヤ1)の特徴面及び出力層(レイヤ4)の特徴面も記憶部103に格納されるが、これは必須ではなく、中間層の特徴面のみが記憶部103に格納されてもよい。

0071

また、後述するように、制御パラメータ105は、記憶部103の容量に基づいて決定することができる。このように設定された制御パラメータ105を参照することにより、記憶部103の容量に基づいて決定された信号である、第1の制御信号及び第2の制御信号を、制御部104が出力することが可能となる。そして、このような制御信号に基づいて特徴面の圧縮を行うことにより、データ処理装置は、限られた容量を有する記憶部103を用いて図4に示すネットワークを処理することができる。

0072

一実施形態において、記憶部103におけるメモリ使用量の上限は、連続する2階層の特徴面の合計データサイズ最大値に相当する。例えば、レイヤ1の特徴面401を用いてレイヤ2の特徴面402を算出する場合、記憶部103は、演算部106へと出力される特徴面401を格納する領域と、演算部106から出力された特徴面402を格納する領域と、の双方を保持する。他の階層についても同様である。

0073

以下の例では、記憶部103は7KBのメモリ容量を有している。また、特徴面401〜404のサイズは、ビット幅、1枚あたりの画素数、及び枚数の積であり、それぞれ3KB、8KB、16KB、及び4KBである。特徴面403を用いて特徴面404を算出する場合、特徴面403と特徴面404の合計サイズは20KBであるから、記憶部103を用いて図4に示すネットワークを処理する場合、圧縮後の特徴面403と特徴面404が記憶部103に格納される。このような、記憶部103のメモリ容量と、図4に示すネットワークのネットワーク情報に基づいて、圧縮処理部101,102による圧縮率が決定される。

0074

まず、圧縮処理部101による第1の圧縮処理の圧縮率の決定方法について説明する。各特徴面のビット幅は、許容可能な後処理の精度が得られるように決定することができる。出力層(レイヤ4)の特徴面404はデータ処理部305から出力され、例えば認識結果を得るための認識処理のような後処理において用いられる。以下の例では、許容可能な後処理の精度が得られるように、特徴面404のビット幅は8とされ、ビット幅の削減が行われない。また、以下の例では、特徴面402,403のビット幅を2まで削減しても許容可能な後処理の精度が得られるため、特徴面402,403のビット幅は2に削減される。

0075

圧縮処理部101による圧縮後の特徴面401〜404のサイズは、順に3KB、2KB、4KB、及び4KBとなる。したがって、特徴面403を用いて特徴面404を算出するために、圧縮後の特徴面403と特徴面404が記憶部103に格納されるように、特徴面403と特徴面404の少なくとも一方がさらに圧縮される。一方で、ビット幅をさらに削減すると後処理の精度が許容可能ではなくなるかもしれない。このため、本実施形態では、圧縮処理部102が特徴面403と特徴面404の少なくとも一方をさらに圧縮する。

0076

次に、圧縮処理部102による第2の圧縮処理の圧縮率の決定方法について説明する。この例では、圧縮処理部102は、特徴面403を0.75倍に圧縮することにより、データサイズを3KBに削減する。圧縮処理部101と圧縮処理部102とは、異なる冗長性を利用して、異なる種類の圧縮処理を行う。この例では、圧縮処理部101はビット幅を削減することにより特徴面を圧縮し、圧縮処理部102は特徴面を空間方向に圧縮している。このように、異なる冗長性を利用する圧縮処理部101と圧縮処理部102とを併用することで、圧縮処理部101がビット幅をさらに削減するよりも、ニューラルネットワークの出力結果の品質の低下が抑制されることが期待される。

0077

図7は、このように特徴面の圧縮を行った場合のネットワーク情報及びメモリ使用量を示す。圧縮処理部102は、特徴面403の特徴面1枚あたりの画素数を512に削減する。一方で、圧縮後の特徴面403のデータにはビット列608が付加され、ビット列608のデータサイズは256画素に相当するため。このため、圧縮後の特徴面403は合計で768画素相当のデータサイズを有する。この場合、特徴面403を用いて特徴面404を算出する際に、記憶部103は圧縮後の特徴面403と特徴面404(合計7KB)を格納することができる。また、図4に示すネットワークを処理する際のメモリ使用量の上限は、特徴面403から特徴面404を算出する際の7KBである。このように、圧縮処理部101,102の組み合わせにより、メモリ容量が限られた記憶部103を用いて図4に示すネットワークを処理することができる。

0078

制御パラメータ105は、図7に示す圧縮後の特徴面のサイズを示すネットワーク情報に基づいて決定することができる。制御パラメータ105は、特徴面の圧縮に必要な情報、すなわち特徴面の圧縮方法及び圧縮率を示す情報であってもよい。すなわち、制御パラメータ105は、各階層について、圧縮処理部101による第1の圧縮処理を行うかどうかを示す情報を含んでいてもよい。また、制御パラメータ105は、各階層における、圧縮処理部101による圧縮方法又は圧縮率を示す情報を含んでいてもよい。図7の例において、制御パラメータ105は、各階層についての圧縮後の量子化ビット幅を示し、レイヤ1〜レイヤ4の量子化ビット幅は順に8、2、2、及び8である。制御パラメータ105は、さらに、圧縮を行うビット幅2の階層について、式(2)に示される閾値T0,T1,T2を示してもよい。

0079

さらに、制御パラメータ105は、各階層について、圧縮処理部102による第2の圧縮処理を行うかどうかを示す情報を含んでいてもよい。また、制御パラメータ105は、各階層における、圧縮処理部102による圧縮方法又は圧縮率を示す情報を含んでいてもよい。図7の例において、制御パラメータ105は、レイヤ3が第2の圧縮処理の対象であること、及び式(4)のパラメータn,mを示す情報を含んでいる。レイヤ3に対応するn,mの値は、特徴面ブロック609のデータサイズL’’が、特徴面ブロック502のデータサイズL’の75%となるように与えられる。また、制御パラメータ105は、他の階層は第2の圧縮処理の対象ではないことを示す情報を含んでいる。

0080

上述のステップS203において制御部104は、このような各階層に対応する制御パラメータ105に従って、各階層に対応する第1の制御信号及び第2の制御信号を出力することができる。この例において制御部104は、レイヤ1及びレイヤ4に対しては第1の圧縮処理を行わず、レイヤ2及びレイヤ3に対してビット幅を2に削減する第1の圧縮処理を行うことを示す第1の制御信号を出力する。また、制御部104は、レイヤ1、レイヤ2、及びレイヤ4に対しては第2の圧縮処理を行わず、レイヤ3に対してはパラメータ(n,m)=(4,2)を用いて第2の圧縮処理を行うことを示す第2の制御信号を出力する。

0081

[実施形態2]
第1の圧縮処理及び第2の圧縮処理の種類は特に限定されない。実施形態2では、実施形態1とは異なる圧縮処理の組み合わせにより特徴面が圧縮される。実施形態2に係るデータ処理装置は、図3に示す、実施形態1と同様の構成を有している。一方で、データ処理部305は、実施形態1とは異なり、図8に示す構成を有している。

0082

図8に示すように、データ処理部305は、圧縮処理部801、圧縮処理部802、記憶部803、制御部804、演算部806を有している。圧縮処理部801及び圧縮処理部802の構成及び動作は実施形態1の圧縮処理部101及び圧縮処理部102と同様であるが、圧縮処理部801が行う第1の圧縮処理及び圧縮処理部802が行う第2の圧縮処理が実施形態1とは異なる。また、記憶部803、制御部804、及び演算部806の構成及び動作は実施形態1の記憶部103、制御部104、及び演算部106と同様である。制御部804は、実施形態1と同様に、制御パラメータ805に従って動作する。一方、データ処理部305は、実施形態1とは異なり展開処理部を有していない。

0083

以下、本実施形態において圧縮処理部801が行う第1の圧縮処理と、圧縮処理部802が行う第2の圧縮処理について説明する。以下では、図9,10を参照して、8ビット16画素の特徴面ブロック901を圧縮する例について説明する。以下の例において、特徴面ブロックは、X方向に8画素、及びY方向に2画素を有する矩形領域毎に出力され、ビット幅は8である。

0084

圧縮処理部801は、特徴面ブロック901を空間方向にダウンサンプリングすることにより、特徴面ブロック901を固定長圧縮する。まず、図9に示すように、圧縮処理部801は特徴面ブロック901を、X方向に2画素及びY方向に2画素を有する矩形領域である複数の分割データ902〜905に分割する。次に圧縮処理部801は、分割データ902〜905のそれぞれについて代表値を決定し、決定された代表値を結合することにより第1の圧縮処理後の特徴面ブロック906を生成する。代表値の決定方法は特に限定されず、例えば4つの画素のうちの最大値又は最小値を選択する、又は4つの画素の平均値を求めるなどの方法が挙げられる。このようにして圧縮処理部801は、特徴面の1枚あたりの画素数を削減することができる。なお、圧縮処理部801がある階層の特徴面の1枚あたりの画素数を削減した場合、以降の全ての階層の特徴面の画素数を同様に削減することができる。

0085

この場合、図9に示す特徴面ブロック906のサイズL’は、常に特徴面ブロック901の1/4のサイズとなる。特徴面ブロック906の画素数は特徴面ブロック901の1/4であるから、特徴面ブロック906のサイズL’は式(5)により表すことができる。式(5)において、ビット幅はl’であり、特徴面ブロック901の画素数はwである。
L’=l’×(w/4) ……(5)

0086

図9の例では、(l,w)=(8,16)であるから、L’は32となる。特徴面ブロック901のサイズLは128であるから、特徴面ブロックのデータサイズが25%に圧縮されることがわかる。

0087

圧縮処理部802では、制御信号により指定されたビット幅で量子化することにより、特徴面ブロック906を固定長圧縮する。図10に示すように、圧縮処理部802は、第1の圧縮処理により得られた8ビット4画素の特徴面ブロック906に対する丸め処理を行う。すなわち、圧縮処理部802は、ビット幅4を指定された場合、特徴面ブロック906の各画素値の下位4ビットを切り上げし、又は切り捨てることにより、第2の圧縮処理後の特徴面ブロック1002を得ることができる。

0088

このとき、特徴面ブロック1002のサイズL’’は量子化ビット幅l'により決定される。すなわち、特徴面ブロック1002のサイズL’’は式(6)により表すことができる。式(6)において、w’は特徴面ブロック1002の画素数を表す。
L’’=l’×w’ ……(6)

0089

図10の例では、(l’,w’)=(4,4)であるから、L’’は16となる。特徴面ブロック906のサイズL’は32であるから、特徴面ブロックのデータサイズが50%に圧縮されることがわかる。

0090

データ処理部305が行う処理の流れは、実施形態1と類似している。以下では、図2のフローチャートを参照して、実施形態1とは異なる点を説明する。ステップS201は、上記の第1の圧縮処理及び第2の圧縮処理に対応する第1の制御信号及び第2の制御信号が出力されることを除き、実施形態1と同様である。本実施形態における制御信号及び制御パラメータ805については後述する。

0091

ステップS205において演算部806は、前階層の特徴面を記憶部803から読み出し、前階層の特徴面を用いた演算処理により、次階層の特徴面を生成する。本実施形態においては、上記のような第1の圧縮処理及び第2の圧縮処理が行われているため、演算部806は記憶部803から読み出した特徴面を直接演算処理のために用いることができる。例えば、量子化処理後の特徴面をそのまま用いて演算処理を行うことができる。すなわち、展開処理部が圧縮された特徴面を展開する処理を省略することができる。

0092

一実施形態において、第1の圧縮処理及び第2の圧縮処理のそれぞれは、空間方向の画素数、チャネル数、又は値のビット幅を削減する処理である。このような構成において、展開処理部が圧縮された特徴面を展開する処理は省略される。一方で、その他の場合において、演算部806は、圧縮後の前階層の特徴面をそのまま用いた演算処理により、次階層の特徴面を生成してもよい。例えば、実施形態1において、第2の展開処理を省略してもよい。

0093

このように展開処理を省略することにより、ニューラルネットワークを用いたデータ処理の演算量を削減することができる。例えば、圧縮処理により特徴面1枚あたりの画素数を削減し、圧縮された特徴面を用いて演算処理を行うと、積和演算の回数が少なくなる。このように演算量を削減することで、処理時間を短縮することができ、又は、処理時間を延長せずにデータ処理部305の回路規模を削減することができる。実施形態1のように圧縮された特徴面に対する展開処理を行うことにより、出力結果の品質が向上することが期待される。一方で、出力結果の品質が許容可能な場合に、実施形態2のように展開処理を省略することにより、メモリ使用量と演算量の双方を削減することができる。

0094

ステップS207において圧縮処理部801及び圧縮処理部802は、上記のような第1の圧縮処理及び第2の圧縮処理により特徴面を圧縮する。その他のステップは実施形態1と同様である。

0095

(制御パラメータ)
制御パラメータ805の具体例及びその作成方法の例を以下に示す。以下の例でも、図4に示すネットワーク情報と、図3に示すデータ処理装置の制約と、に基づいて予め制御パラメータ805が設定される。実施形態2においても、記憶部803におけるメモリ使用量の上限は、連続する2階層の特徴面の合計データサイズの最大値に相当する。以下の例では、記憶部803は5KBのメモリ容量を有している。

0096

まず、圧縮処理部801による第1の圧縮処理の圧縮率の決定方法について説明する。圧縮処理部801は、特徴面のサイズ、すなわち特徴面1枚あたりの画素数を1/4に削減し、以降の全ての階層の特徴面のデータサイズを削減する。一方で、画像に対する認識処理を行う場合、データ処理部305に入力される画像サイズに対する画像中の被写体サイズを、1枚の特徴面に対する1画素のサイズより十分大きくすることにより、認識精度が向上すると期待される。この例では、認識しようとする被写体の最小サイズに応じて、特徴面1枚あたりの画素数が256以上に制限される。このように、許容可能な出力結果の品質を得ながらデータサイズを削減するために、この例では、レイヤ2のみにおいて第1の圧縮処理(空間方向のダウンサンプリング)が行われる。

0097

圧縮処理部801による第1の圧縮処理後の特徴面401〜404の特徴面のサイズは、順に3KB、2KB、4KB、及び1KBとなる。したがって、特徴面402を用いて特徴面403を算出するために、第1の圧縮処理後の特徴面402と特徴面403(合計6KB)が記憶部803(5KB)に格納されるように、特徴面402と特徴面403の少なくとも一方がさらに圧縮される。一方で、画素数をさらに削減すると後処理の精度が許容可能ではなくなるかもしれない。このため、本実施形態では、圧縮処理部802が特徴面402と特徴面403の少なくとも一方をさらに圧縮する。

0098

次に、圧縮処理部802による第2の圧縮処理の圧縮率の決定方法について説明する。この例では、圧縮処理部802、特徴面403のビット幅を8から4に圧縮することにより、データサイズを2KBに削減する。このように、異なる冗長性を利用する圧縮処理部801と圧縮処理部102とを併用することで、圧縮処理部801が特徴面の画素数をさらに削減するよりも、ニューラルネットワークの出力結果の品質の低下が抑制されることが期待される。

0099

図11は、このように特徴面の圧縮を行った場合のネットワーク情報及びメモリ使用量を示す。図4に示すネットワークを処理する際のメモリ使用量の上限は、特徴面401から特徴面402を算出する際の5KBであるため、記憶部803を用いて図4に示すネットワークを処理することができる。

0100

実施形態1と同様に、図11に示すネットワーク情報に基づいて、特徴面の圧縮に必要な情報を制御パラメータ805として設定することができる。例えば、圧縮処理部801が、レイヤ2においてのみ空間方向のダウンサンプリングを行い、それ以外の階層においてはこれを行わないことを示すように、制御パラメータ805を設定することができる。また、圧縮処理部802が、レイヤ3についてのみ量子化ビット幅を4に削減し、それ以外の階層についてはビット幅を削減しない(ビット幅を8にする)ように、制御パラメータ805を設定することができる。制御部804は、実施形態1における制御部104と同様に、制御パラメータ805に基づいて階層ごとに制御信号を切り替えることができる。圧縮処理部801及び圧縮処理部802は、与えられた制御信号に従い、特徴面ブロックの圧縮を行う。

0101

前述の通り、実施形態2においては、特徴面の圧縮によりメモリ使用量だけでなく演算量も削減される。各階層の特徴面を算出するために行われる積和演算の回数は、入力特徴面の枚数、出力特徴面の枚数、及び圧縮前の出力特徴面の1枚当たりの画素数に比例する。上記の例において、演算部806は1枚あたりの画素数が1024であるレイヤ2の特徴面を算出し、その後圧縮処理部801は1枚あたりの画素数が256となるように特徴面を圧縮する。また、演算部806は、1枚あたりの画素数が256であるレイヤ3及びレイヤ4の特徴面を算出する。したがって、上記の例においては、レイヤ3及びレイヤ4の特徴面を算出するために必要な積和演算の回数が、圧縮前の1/4に削減される。

0102

[その他の実施形態]
実施形態1,2においてデータ処理部305は2つの圧縮処理部101,102又は2つの圧縮処理部801,802を有していた。一方、データ処理部305はそれぞれ異なる種類の圧縮処理を行う3以上の圧縮処理部を有していてもよい。

0103

また、実施形態1,2ではいくつかの特定の圧縮処理が用いられた。しかしながら、用いられる圧縮処理の組み合わせは特に限定されない。使用可能な圧縮処理の例としては、空間方向の配列に対する圧縮処理が挙げられ、この場合、圧縮処理部102及び圧縮処理部801と同様に、空間方向の情報(例えば空間方向の冗長性)を用いて圧縮を行うことができる。使用可能な圧縮処理の別の例としては、値のビット幅を削減する方法が挙げられ、例えば圧縮処理部101及び圧縮処理部802と同様を用いることができる。使用可能な圧縮処理のさらなる別の例として、チャネル方向(特徴面の枚数方向)の配列に対する圧縮処理も挙げられ、この場合、特徴面の枚数方向の情報(例えばチャネル方向の冗長性)を用いて圧縮を行うことができる。例えば、圧縮処理部は、複数枚の特徴面を入力として受け取り、複数の特徴面のそれぞれにある画素を含む画素ブロック(例えば、所定の画素位置にある、各特徴面の画素で構成される画素ブロック)に対し、圧縮処理部102と同様の圧縮処理を行ってもよい。また、圧縮処理部は、圧縮処理部801と同様に、ダウンサンプリングを行うことで特徴面の枚数を削減する圧縮処理を行ってもよい。

0104

このように、第1の圧縮処理及び第2の圧縮処理は、空間方向の配列に対する圧縮処理、チャネル方向の配列に対する圧縮処理、及び値のビット幅を削減する処理、のうちの2つであってもよい。また、第1の圧縮処理と第2の圧縮処理の少なくとも一方が、空間方向又はチャネル方向の配列に対する圧縮処理であってもよい。この場合、この圧縮処理に対応する第1の制御信号と第2の制御信号の少なくとも一方が、配列に対する圧縮処理の処理パラメータを規定していてもよい。また、第1の圧縮処理と第2の圧縮処理の少なくとも一方が、値のビット幅を削減する処理であってもよい。この場合、この圧縮処理に対応する第1の制御信号と第2の制御信号の少なくとも一方が、ビット幅の削減量又は削減後のビット幅を指定してもよい。

0105

また、実施形態1,2で用いられた特徴面ブロックのサイズは一例にすぎず、特に限定されない。特徴面ブロックのサイズは、圧縮処理部101,102,801,802への入力データの制約条件を満たすような任意のサイズであってもよい。

0106

実施形態1における圧縮処理部101及び圧縮処理部102の接続順序、及び実施形態2における圧縮処理部801及び圧縮処理部802の接続順序は、入れ替えられてもよい。また、制御部104,804が、制御パラメータ805に従って、各圧縮処理部による処理順序を指定する制御信号を出力してもよい。この場合、圧縮処理部間の接続経路を切り替えられるように、データ圧縮装置を構成することができる。

0107

実施形態2では展開処理が省略されたが、展開処理を行ってもよい。同様に、複数の圧縮処理に対応する展開処理を行わずに演算処理が可能な場合に、展開処理を行ってもよい。この場合、展開処理部は、圧縮された特徴面のデータサイズを拡大する処理を行うことができる。例えば展開処理部は、実施形態2のように空間方向のダウンサンプリングが行われた後の特徴面に対し、画素数を増やす処理を行うことができる。また、展開処理部は、特徴面の枚数を削減するダウンサンプリングが行われている場合、特徴面の一部又は全てを複製することにより特徴面を増やす処理を行うことができる。

0108

一実施形態において、複数の圧縮処理部は一階層の特徴面に対して固定長圧縮を行う。すなわち、一階層についての、複数の圧縮処理部による圧縮後の特徴面データサイズは、データ処理部305への入力データにかかわらず固定長となる。この構成において、実施形態1,2の圧縮処理部101,102,801,802と同様に、複数の圧縮処理部のそれぞれが固定長圧縮を行ってもよい。一方で、この構成において、複数の圧縮処理部のそれぞれが固定長圧縮を行う必要はなく、複数の圧縮処理部が協同して固定長圧縮を行うように、それぞれの圧縮処理が設定されてもよい。

0109

制御部104,804が出力する第1の制御信号及び第2の制御信号は、ニューラルネットワークを用いた処理により得られるデータの目標品質に応じて決定された信号であってもよい。例えば、実施形態1,2では、特徴面を記憶部103,803のメモリに格納可能であるという制約に従って、ニューラルネットワークの出力結果の品質ができるだけ高くなるように制御パラメータ105,805が決定された。一方で、ニューラルネットワークの出力結果の品質が許容可能であるという制約に従って、記憶部103,803のメモリ使用量ができるだけ少なくなるように、制御パラメータ105,805を決定してもよい。また、制御パラメータの決定には、実施形態1,2で説明した方法の他に、一般に特徴面の圧縮がニューラルネットワークの認識精度に及ぼす影響についての知見を用いることができる。例えば、入力層、中間層、及び出力層のそれぞれについて、特徴面の性質の違いを考慮して、それぞれ異なる圧縮処理を適用することができる。

0110

実施形態1,2では、予め制御パラメータ105,805が与えられていた。多様なデバイスにおいて特定のニューラルネットワークを用いた処理を行う場合に、ユーザはそれぞれのデバイスのメモリ容量又は目標品質等に基づいて制御パラメータ105,805を決定することができる。本実施形態においてはニューラルネットワークの構造自体修正する必要がないため、デバイスに応じた処理制御が容易となる。一方で、制御パラメータ105,805の算出が自動的に行われてもよい。例えば、制御部104,804は、デバイスのメモリ容量又は目標品質等を示す情報と、ニューラルネットワークのネットワーク情報に基づいて、制御パラメータ105,805を決定することができる。制御部104,804は、例えばステップS203の直前で、実施形態1,2で説明した方法に従って制御パラメータ105,805を算出してもよい。

0111

実施形態1,2において制御部804は、階層ごとに出力する制御信号を切り替えた。一方で制御部804は、特徴面ブロックごとに出力する制御信号を切り替えてもよい。この場合、制御部804は、ステップS205又はS207の直前で制御信号の切り替えを行ってもよい。

0112

実施形態1,2において、演算部106,806は式(1)に従って活性化関数φを用いた処理を行った。しかしながら、活性化関数φに相当する処理は、演算部106以外の処理部が行ってもよい。例えば、演算部106,806は積和演算のみを行い、圧縮処理部のいずれかが活性化関数φに相当する処理を行ってもよい。

0113

図4に示すネットワークは一例にすぎず、用いられるネットワークの種類は特に限定されない。例えば、データ処理装置が用いるニューラルネットワークが、畳み込みニューラルネットワークで用いられることがあるプーリング処理を含んでいてもよい。この場合、演算部106,806が、例えばステップS205においてプーリング処理を行ってもよい。また、データ処理部305、プーリング処理を行うさらなる処理部を有していてもよい。さらに、実施形態2における圧縮処理部801をプーリングを行う処理部として利用することもできる。このように、複数の圧縮処理部のいずれかが、例えばステップS204においてプーリング処理を行ってもよい。

0114

実施形態1,2において、データ処理部305は図1,8に示す専用のハードウェアによって実現される。一方で、データ処理部305が行うネットワークを用いた処理が、ソフトウェアによって実現されてもよい。例えば、図2に示す処理が、例えば図3に示すデータ処理装置のような、プロセッサとメモリとを備えるコンピュータによって実現されてもよい。この場合、ROM307のような記憶媒体に格納されている、各部の機能を実現するプログラムが、RAM308のようなメモリへと読み出される。そして、CPU306のようなプロセッサが、メモリ上のプログラムに従って動作することにより、各部の機能が実現される。

0115

なお、ニューラルネットワークを用いた演算処理において使用されるフィルタ係数は、事前に学習により決定することができる。すなわち、学習用の入力データに対してニューラルネットワークを用いた演算処理を行うことにより得られた出力データと、学習用の入力データに対応する教師データと、を用いて、ニューラルネットワークの学習を行うことができる。例えば、学習においては、複数の動画像データについて画像認識を行い、認識結果に応じてフィルタ係数をその都度更新することができる。ここで、教師データは、入力データに対する演算処理により得られることが期待される正解を示すデータであり、予め用意することができる。具体的なフィルタ係数の決定方法は特に限定されず、例えば誤差伝播法が挙げられる。データ処理装置が、このような学習を行う学習部(不図示)を有していてもよい。

0116

ここで、実施形態1,2のように、記憶部103,803に格納される特徴面データに対して第1の圧縮処理及び第2の圧縮処理を行う構成を有する場合、以下のように学習を行うことができる。すなわち、学習部は、階層に対応する第1の圧縮処理及び第2の圧縮処理を行いながら、学習用の入力データに対してニューラルネットワークを用いた演算処理を行うことにより得られた出力データを、取得することができる。そして、学習部は、この出力データと、学習用の入力データに対応する教師データと、を用いて、ニューラルネットワークの学習を行うことができる。このように、圧縮処理(及び必要に応じて展開処理)を含む図4のネットワークについて学習を行うことで、圧縮誤差の影響が考慮されたフィルタ係数を得ることができる。このため、圧縮誤差による、ニューラルネットワークの出力結果の品質低下を低減することが可能となる。

0117

実施形態1,2のようなデータ処理装置が行う処理は、階層ごとの第1の圧縮処理及び第2の圧縮処理を特定する制御パラメータ105,805と、このように得られたフィルタ係数によって特定されるニューラルネットワークと、により規定される。したがって、このような制御パラメータ105,805と、ニューラルネットワークと、を含む学習済みモデルも、本発明の範囲に含まれる。

0118

発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。

0119

101,102:圧縮処理部、103:記憶部、104:制御部、105:制御パラメータ、106:演算部、107:展開処理部

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

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

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

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

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

関連性が強い 技術一覧

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

関連性が強い人物一覧

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

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

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

関連する公募課題一覧

astavision 新着記事

サイト情報について

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

主たる情報の出典

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