JP7355622B2 - エンコーダを有するストレージシステム - Google Patents

エンコーダを有するストレージシステム Download PDF

Info

Publication number
JP7355622B2
JP7355622B2 JP2019217442A JP2019217442A JP7355622B2 JP 7355622 B2 JP7355622 B2 JP 7355622B2 JP 2019217442 A JP2019217442 A JP 2019217442A JP 2019217442 A JP2019217442 A JP 2019217442A JP 7355622 B2 JP7355622 B2 JP 7355622B2
Authority
JP
Japan
Prior art keywords
data
compression
encoded data
processor
scale
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019217442A
Other languages
English (en)
Other versions
JP2021087198A (ja
JP2021087198A5 (ja
Inventor
彬史 鈴木
貴洋 成子
弘明 圷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2019217442A priority Critical patent/JP7355622B2/ja
Priority to US17/105,059 priority patent/US11934353B2/en
Publication of JP2021087198A publication Critical patent/JP2021087198A/ja
Publication of JP2021087198A5 publication Critical patent/JP2021087198A5/ja
Application granted granted Critical
Publication of JP7355622B2 publication Critical patent/JP7355622B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

本発明は、概して、圧縮を含む記憶制御に関する。
データ量を削減するストレージシステムが知られている(例えば特許文献1)。その種のストレージシステムは、一般に、圧縮によりデータ量を削減する。既存の圧縮方法の1つとして、ランレングス法のように、所定のブロック単位内で出現頻度の高い文字列を辞書化し、より小さなサイズの符号に置換する方法が知られている。
特開2007-199891号公報
近年、こうした汎用的なデータ圧縮手法以外に、学習型の非可逆圧縮技術が登場している。
例えば、ニューラルネットワークを有するエンコーダとデコーダを構築し、特定分野のデータを入力としてエンコーダとデコーダの学習をすることで、学習データと同一分野のデータの圧縮と伸張に特化したエンコーダとデコーダの作成が可能になる。このようなエンコーダ及びデコーダは、人手にて設計されたエンコーダ及びデコーダに比べて、非可逆圧縮によるデータ損失が少なく、データの削減量も多い(圧縮率が高い)。このため、データ保持コスト(消費する記憶容量に従うコスト)を削減できる。
しかし、ニューラルネットワークを有するエンコーダ及びデコーダは、圧縮及び伸張の計算処理負荷が高い。故に、圧縮及び伸張の処理に、多くの時間が必要となる場合、コア数の多いCPU(Central Processing Unit)やGPU(Graphics Processing Unit)等の高価な計算資源が必要となる場合、又は消費電力が増加する場合が生じる。このため、圧縮及び伸張に必要な計算コストが増加し、計算コストとデータ保持コストの合計としてのシステムコストの低減を果たせない場合がある。
本願発明者の検討結果によれば、ニューラルネットワークを有するエンコーダ及びデコーダの計算処理負荷が高い原因の1つが、データ全体を一様に処理するという一般的なエンコーダ及びデコーダの構造にある。このため、変化に乏しい単調なデータ部分(写真データの例としては「青空」が写っている部分を表すデータ部分)にも、変化の激しい複雑なデータ部分(写真データの例としては「規則性のない細かな模様の壁」が写っている部分を表すデータ部分)と同一の処理が適用される。これが、全体として計算処理負荷が高くなる原因の1つと考えられる。
また、本願発明者の検討結果によれば、ニューラルネットワークを有するエンコーダ及びデコーダの計算処理負荷が高い他の原因として、多様なデータを圧縮及び伸張可能とするため、大規模な(学習対象である結合係数の多い)ニューラルネットワークを用いる必要があることが考えられる。
そこで、本発明の一つの目的は、圧縮及び伸張の少なくも1つについて、少ないデータ損失量を実現しつつ全体として計算処理負荷を低減することにある。
前述の課題に関し、例えば圧縮に関する課題の解決のため、本発明では、ストレージシステムが、データから取得される複数のデータの各々について、当該データの特徴を基に、当該データの圧縮演算規模を決定し、決定された圧縮演算規模に従う圧縮演算を行うことで、当該データをエンコードデータに変換し、且つ、当該エンコードデータ又はそれの圧縮データを記憶装置に格納する。
本発明によれば、複雑なデータについては、比較的計算処理負荷の高い規模にて圧縮がなされ、一方で、単純なデータについては、比較的計算処理負荷の低い規模にて圧縮がなされる。この結果、少ないデータ損失量を実現しつつ全体として計算処理負荷を低減できる。
実施例1におけるシステム構成図。 実施例1における圧縮処理。 実施例1におけるエンコーダと可逆圧縮器とを示す図。 実施例1におけるデコーダと可逆伸張器とを示す図。 実施例1におけるセレクタの構成図。 実施例1における学習処理の概要図。 実施例1における学習処理のフロー図。 実施例1における管理画面の図。 実施例2におけるデコーダと可逆伸張器とを示す図。 実施例2における学習処理のフロー図。 実施例1における学習と推論の概要図。 実施例1又は実施例2に係るエンコーダを有するストレージシステムの概要図。 実施例1又は実施例2に係るデコーダを有するストレージシステムの概要図。
以下の説明では、「インターフェース装置」は、1つ以上のインターフェースデバイスでよい。当該1つ以上のインターフェースデバイスは、下記のうちの少なくとも1つでよい。
・1つ以上のI/O(Input/Output)インターフェースデバイス。I/O(Input/Output)インターフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも1つに対するインターフェースデバイスである。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも1つのI/Oデバイスは、ユーザインターフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・1つ以上の通信インターフェースデバイス。1つ以上の通信インターフェースデバイスは、1つ以上の同種の通信インターフェースデバイス(例えば1つ以上のNIC(Network Interface Card))であってもよいし2つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「メモリ」は、1つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも1つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
また、以下の説明では、「永続記憶装置」は、1つ以上の永続記憶デバイスである。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)であり、具体的には、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)である。
また、以下の説明では、「記憶装置」は、メモリと永続記憶装置の少なくともメモリでよい。
また、以下の説明では、「プロセサ」は、1つ以上のプロセサデバイスである。少なくとも1つのプロセサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセサデバイスであるが、GPU(Graphics Processing Unit)のような他種のプロセサデバイスでもよい。少なくとも1つのプロセサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも1つのプロセサデバイスは、プロセサコアでもよい。少なくとも1つのプロセサデバイスは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセサデバイスでもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセサによって実行されることで、定められた処理を、適宜に記憶装置及び/又はインターフェース装置等を用いながら行うため、処理の主語が、プロセサ(或いは、そのプロセサを有するコントローラのようなデバイス)とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体であってもよい。また、以下の説明において、2つ以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2つ以上のプログラムとして実現されてもよい。
また、以下の説明において、学習モジュール、推論モジュール、設定モジュール、ストレージコントローラ、デコーダ及びエンコーダ、可逆圧縮器、可逆伸張器といった機能は、1つ以上のコンピュータプログラムがプロセサによって実行されることで実現されてよい。プログラムがプロセサによって実行されることで機能が実現される場合、定められた処理が、適宜に記憶装置及び/又はインターフェース装置等を用いながら行われるため、機能はプロセサの少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセサあるいはそのプロセサを有する装置が行う処理としてもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機又は計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。各機能の説明は一例であり、複数の機能が1つの機能にまとめられたり、1つの機能が複数の機能に分割されたりしてもよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通部分を使用し、同種の要素を区別する場合は、参照符号を使用することがある。例えば、センササーバを区別しない場合には、「センササーバ102S」と言い、センササーバを区別する場合には、「センササーバ102SA」、「センササーバ102SB」のように言うことがある。
次に、本発明の幾つかの実施例を図面に基づいて説明する。尚、本発明は、以下に説明する実施例に限定されるものではない。
(1-1)システム構成
まず、本実施例におけるシステム構成について図1を用いて説明する。
図1は、実施例1におけるシステム構成を示す。
複数(又は1つ)のストレージノード100により構成されるストレージシステム110に、ネットワーク101を介して、複数(又は1つ)のセンササーバ102Sといったデータソース102と、クライアントサーバ103とが接続されている。
ストレージノード100は、一次記憶領域であるDRAM111、ソフトウェアに従って様々な処理を実施するプロセサ112、1つ以上の記憶媒体114に接続されるバックエンドインターフェースデバイス(BE-IF)113、二次記憶領域となる永続記憶装置115(一例として、1つ以上の記憶媒体114)、及び、ネットワーク101に接続されるフロントエンドインターフェース(FE-IF)116を備える。BE-IF113及びFE-IF116が、インターフェース装置の一例である。DRAM111が、メモリの一例である。プロセサ112に、DRAM111、BE-IF113及びFE-IF116が接続されている。
DRAM111は、プロセサ112から短時間でアクセス可能な接続にてプロセサ112と接続されており、プロセサ112が実行するプログラムや処理対象データを格納する領域である。
プロセサ112は、プログラムに従って動作し、データを処理する装置である。プロセサ112は、内部に複数のプロセサコアを持ってよく、プロセサコアは各自独立して又は協調してプログラムを実行してよい。また、プロセサ112は、内部にDRAMコントローラを持ち、DRAMコントローラが、プロセサコアからのリクエストに応じてDRAM111よりデータを取得、又はDRAM111にデータを格納する。また、プロセサ112は、外部I/Oインターフェースを持ち、外部I/OインターフェースがBE-IF113に接続する。また、プロセサ112は、BE-IF113を経由して記憶媒体114に指示を出す事が可能である。プロセサ112は、データの圧縮及び伸張に関連する後述の各種処理を行う。
プロセサ112では、データの圧縮及び伸張のためのプログラム以外に、例えば、SDS(Software Defined Storage)やDB(DataBase)といったストレージ関連ソフトウェアが動作してよい。ストレージ関連ソフトウェアのようなプログラムがプロセサ112により実行されることで、ストレージコントローラとしての機能が実現されてよい。プロセサ112は、受領したデータを圧縮後、1つ又は複数のストレージノード100に圧縮データを分散して格納する。このとき、プロセサ112は、SDSやDBのようなストレージ関連ソフトウェアによる制御に従って、記憶媒体114にデータを格納する。
BE-IF113は、SATA(Serial ATA)ドライブやSAS(Serial Attached SCSI)ドライブといった記憶媒体114と通信する為のインターフェースである。BE-IF113は、ライト時には、プロセサ112からの指示に基づき、ライト対象データをDRAM111より取得し記憶媒体114に転送する。また、BE-IF113は、リード時には、プロセサ112からの指示に基づき、リード対象データを記憶媒体114より取得しDRAM111に転送する。尚、本実施例では、BE-IF113が記憶媒体114より独立して存在するが、それに代えて又は加えて、記憶媒体114中にプロセサ112から直接指示を受けるインターフェース(例えばNVMe(Non-Volatile Memory Host Controller Interface))が搭載されてもよい。
記憶媒体114は、データを格納する二次記憶デバイスである。記憶媒体114は、プロセサ112にて制御されたBE-IF113より送信されたデータを受領し永続的に格納する。
FE-IF116は、ストレージノード100を、他のストレージノード100やデータソース102と接続されるネットワーク101に接続するためのインターフェースである。図1の例では、ストレージノード100は、ネットワーク101を介して他ストレージノード100との通信を行う。
ストレージノード100とネットワーク101を介して接続されるセンササーバ102Sが、データソース102の一例としてある。センササーバ102SA及び102SBは、ビデオカメラ120Vや静止画用カメラ120Cを含む複数のセンサ120を管理し、各センサ120にて測定されたセンサデータ(動画、静止画を含んでよい)をネットワーク101を介してストレージノード100に転送する。センサデータをセンササーバ102Sより受領したストレージノード100は、プロセサ112の制御により、後述する圧縮処理を経て、圧縮されたセンサデータを永続記憶装置115に格納する。
クライアントサーバ103は、ユーザがストレージノード100に蓄えたセンサデータを利用する際にストレージノード100にセンサデータを要求する。クライアントサーバ103より要求を受けたストレージノード100は、プロセサ112の制御により、後述の伸張処理を経て、伸張されたセンサデータをクライアントサーバ103に転送する。クライアントサーバ103が、データソース102の一例として機能してもよい。例えば、クライアントサーバ103が、静止画像データや動画データのライト要求をストレージノード100に送信してもよい。
以上、本実施例のシステム構成について説明した。
(1-2)本実施例における圧縮処理の概要
本実施例では、センサデータから複数のデータ部分が取得(例えば分割)され、複数のデータ部分の各々について、最適な圧縮経路及び最適な伸張経路が選択される。これにより、圧縮及び伸張の計算処理負荷が軽減される。
以下の説明では、本実施例の理解を容易にするために、圧縮及び伸張の対象となるセンサデータは、静止画像を表す静止画像データであるとする。静止画像データは、静止画用カメラ120Cにより撮影された写真のデータでもよいし、ビデオカメラ120Vにより撮影された動画のデータから抽出されたフレームのデータでもよい。本発明において、圧縮又は伸張の対象になり得るデータは、静止画像データに代えて又は加えて、静止画像データ以外のセンサデータ(例えば、動画のデータでもよいし、気温や湿度といった測定値の時系列データ)でもよいし、センサデータ以外のデータでもよい。
また、以下の説明では、静止画像データを「静止画像」と言い、静止画像データから取得される複数の画像データ部分の各々を、「部分画像」と言う。
図2は、本実施例における静止画像データの圧縮を概念的に示した図である。
図2が示す例によれば、静止画像200が、よりデータ量の少ない(要素数が少ない又は情報エントロピーが小さい)特徴量マップ210に変換される。
静止画像200は、例えばカラー画像データの場合、3次元(色、幅、高さ)の整数データである。図2に例においては、説明の簡略化のため、静止画像200は、色の次元が1つの白黒画像のデータである。
静止画像200は、後述のエンコーダにより、特徴量マップ210に変換(エンコード)される。
一比較例によれば、静止画像200がそのまま特徴量マップ210に変換される。
一方で、本実施例では、エンコーダが、静止画像200から場所(画像領域)の異なる複数の部分画像201(図2の例では、四つの部分画像201A~201D)を取得する。静止画像200も部分画像201も、典型的には矩形画像である。各部分画像201について、当該部分画像201がカバーする場所(画像領域)の一部が、少なくとも1つの他の部分画像201がカバーする場所の一部と重なる。なお、静止画像200から複数の部分画像201を取得することは、静止画像200を複数の部分画像201に分割することでもよい。言い換えれば、部分画像同士の一部が重ならない複数の部分画像が静止画像から取得されてもよい。
エンコーダは、圧縮負荷が異なる複数の圧縮経路を有する。エンコーダは、部分画像201毎に、カーネルを用いて、当該部分画像201を1つ以上の部分特徴量マップ211に変換する。この時、部分画像201Aは、部分画像201Aを圧縮するのに最適な圧縮経路によって部分特徴量マップ211Aに変換される。また、部分画像201Bも同様に、部分画像201Bを圧縮するに最適な圧縮経路によって部分特徴量マップ211Bに変換される。このように部分画像201A~201Dは、それぞれ、複数の圧縮経路のうち最適な圧縮経路によって部分特徴量マップ211A~211Dに変換される。
例えば、部分画像201Aの大半が「青空」のような単調なデータであった場合、圧縮負荷の相対的に低い圧縮経路を後述のセレクタ311(例えば、図3及び図5参照)が最適と判断し、圧縮負荷の相対的に低い圧縮経路にて、部分画像201Aが部分特徴量マップ211に変換される。また、例えば、部分画像201Bが複雑な画像であった場合、圧縮負荷の相対的に高い圧縮経路をセレクタ311が最適と判断し、圧縮負荷の相対的に高い圧縮経路にて、部分画像201Bが部分特徴量マップ211Bに変換される。
このように、圧縮負荷の高い圧縮経路での圧縮が不要な部分画像201については、より圧縮負荷の低い圧縮経路にて圧縮を行うことで、一比較例に比べて、静止画像200をより低い負荷にて(言い換えれば、静止画像200をより高速に)圧縮処理することができる。尚、本実施例においては1つの静止画像200から複数の部分画像201を取得した例について記すが、本発明はこの例に限定されるものではない。例えば、1つの静止画像200を分割せずに圧縮するケース、すなわち、1つの静止画像200に好適な圧縮経路を複数の圧縮経路から選択するエンコーダが採用されてもよい。
(1-3)圧縮処理
次に、図3を用いて、本実施例におけるストレージノード100が行う圧縮処理をについて説明する。
図3は、ストレージノード100におけるエンコーダ300と可逆圧縮器301を示す。
エンコーダ(学習型エンコーダ)300は、畳み込み層312-1、複数の圧縮経路314(図3の例では、3つの圧縮経路314A~314C)、セレクタ311、分配器319及び量子化器318を備える。
複数の圧縮経路314A~314Cの各々は、非可逆圧縮を行う。複数の圧縮経路314A~314Cは、データ損失量は同じであるが圧縮負荷が異なる。「データ損失量」とは、圧縮前のデータと伸張後のデータの誤差に相当する量である。「データ損失量が同じ」とは、データ損失量が完全に同じであることに加えて、データ損失量が許容範囲(データ損失量が実質的に同じであるとみなせる範囲)で異なっていてもよいこと、具体的には、例えば、圧縮負荷が最も高い圧縮経路314Aのデータ損失量と同じか当該データ損失量との差が許容差分以下であることを意味してよい。
複数の圧縮経路314A~314Cの各々は、1段又は多段の畳み込み層312(図3の例では、畳み込み層312-2及び312-3)を有する畳み込みニューラルネットワークである。
図3によれば、静止画像がネットワーク101を介してストレージノード100に転送されてきたときにエンコーダ300が開始される。尚、図3の例では、いずれの圧縮経路314を経由しても3段の畳み込み層312-1、312-2及び312-3をデータが経由するが、本発明はこの例に限定されるものではない。例えば、複数の圧縮経路314のうち、2段又は4段の畳み込み層を通る経路があるとしてもよい。また、例えば、圧縮経路314が異なれば、データが経由する畳み込み層312の数が異なっていてもよい(言い換えれば、複数の圧縮経路314において、畳み込み層312の数は異なっていてもよい)。また、図3の例においては、説明の簡略化のために畳み込み層の間に活性化関数がされていないが、活性化関数(例えば、Relu関数やSigmoid関数)が畳み込み層の間にあるとしてもよい。また、図3の例では、非可逆圧縮を例として記載しているが、本発明はこの例に限定されるものではない。例えば、可逆圧縮でもよく、画像を畳み込み層に入力し、エンコーダの出力として画像のピクセルごとの出現確率を取得し、その出現確率を用いてRange-Coder等のエントロピーコーディングにて圧縮するとした構成でもよい。
静止画像を受領したエンコーダ300は、1段目の畳み込み層312-1にて、静止画像データとしての3次元(色、幅、高さ)の画像データに畳み込み演算を適用する。このとき、畳み込み演算結果である中間ベクトルは、3次元(出力ch、幅、高さ)のデータである(「ch」はチャネルを意味する)。本実施例では、1段目の畳み込み層312-1の畳み込み演算によれば、幅及び高さは、入力された画像より小さく、出力chは、入力された画像より多い。しかし、畳み込み演算は、本発明においてこの例に限定されるものではない。例えば、幅や高さについては入力された画像と同一であってもかまわないし、あるいは増加していてもよい。また、出力chについては、2以上の値であればよい。中間ベクトルは、静止画像から取得された複数の部分画像の各々について、取得される。
尚、本実施例において、この出力データの3次元の形状は、クライアントサーバ103を介してユーザが選択可能である。
また、本実施例において、各畳み込み層312における畳み込み演算はプロセサ112が実施するが、プロセサ112は、CPUに代えて又は加えて、GPU、FPGA及びASICの少なくとも1つを含んでよく、各畳み込み層312における畳み込み演算は、GPU、FPGA或いはASICが行ってもよい。
畳み込み層312-1から出力された中間ベクトルは、セレクタ311に入力される。セレクタ311を詳細に示したのが図5である。図5に示すように、セレクタ311は、内部にニューラルネットワーク521(例えば、全結合ニューラルネットワーク又は畳み込みニューラルネットワーク)と最大値検出器522とを持つ。
セレクタ311に入力された3次元の中間ベクトルは、ニューラルネットワーク521に入力される。ニューラルネットワーク521は、中間ベクトルのch0の2次元データ(幅、高さ)から、当該中間ベクトルに対応した部分画像の圧縮に適した圧縮経路314を選択するために、圧縮経路314毎の確率を出力する。尚、図5の例によれば、図3に例示の3つの圧縮経路314A~314Cの各々について確率が出力されるが、本発明は、圧縮経路の数は3に限定されない。圧縮経路は少なくとも2つあればよい。また、本実施例では、1段目の畳み込み層312-1の出力を用いセレクタ311によって圧縮経路314が選択されるが、本発明はこの例に限定されるものではない。例えば、1段目の畳み込み層312-1が圧縮経路314毎に分かれておりセレクタ311に部分画像が直接入力されてもよい。また、1段目の畳み込み層312-1が圧縮経路314に含まれてもよい。また、本実施例では、セレクタ311は、中間ベクトルのch0の2次元データを用いて圧縮経路314を選択するが、本発明はこの例に限定されるものではない。例えば、ch0とch1の2つのchを併せた3次元データが圧縮経路314の選択に用いられるとしてもよい。また、本実施例では、圧縮経路314を選択するのに用いられるニューラルネットワーク521は、上述したように、畳み込みニューラルネットワークでよい。ニューラルネットワーク521は、後述する学習処理によって適切な圧縮経路の選択の能力を獲得するための学習能力を有していてよい。
最大値検出器522は、ニューラルネットワーク521の出力である複数の確率(複数の圧縮経路314についてそれぞれ算出された複数の確率)の中で最も高い確率を検出する。最大値検出器522は、検出した確率に対応した圧縮経路314を選択し、当該圧縮経路314を示す値である経路値(例えば、スカラ値)を出力する。
出力された経路値は、図3に示すように、分配器319に入力される。また、分配器319には、当該経路値が得られた中間ベクトルに対応した部分画像が、畳み込み層312-1から入力される。分配器319は、複数の圧縮経路314A~314Cのうち、セレクタ311から入力された経路値が示す圧縮経路314(つまり、セレクタ311により選択された圧縮経路314)に、入力された部分画像を出力する。図3が示す黒く太い矢印によれば、3つの圧縮経路314A~314Cがある中で、圧縮経路314Cが選択されている。圧縮経路314Cにおける2段目の畳み込み層312-2Cは、圧縮経路314Aにおける2段目の畳み込み層312-2Aよりも出力chの数が少ない。これは、入力された部分画像についてセレクタ311が軽量な圧縮を選択したことを意味する。
また、圧縮経路314Cにおける2段目の畳み込み層312-2Cは、圧縮経路314Bにおける2段目の畳み込み層312-2Bと出力chの数が同等であり、故に、圧縮負荷は同等である。しかし、入力された部分画像の圧縮については、セレクタ311により、圧縮経路314Cが圧縮経路314Bよりも好適であると判断されている。本実施例では、複数の部分画像のうち類似の部分画像群について同一の圧縮経路314が選択されるようにセレクタ311が構成される。「類似の部分画像群」は、例えば部分画像の特徴が類似していて、故に、セレクタ311において算出される確率が類似する一つ以上の画像でよい。これにより、特定の部分画像(例えば森が写っている範囲が大部分を占める部分画像)にのみ特化した圧縮負荷の少ない効率的な圧縮経路314(1つい以上の畳み込み層312)を構築できる。このため、単一の汎用的な圧縮能力を持つ大規模な畳み込み層を有する一比較例に係るエンコーダ(具体的には、単調な画像も複雑な画像も少ないデータ損失量で圧縮する能力を持つエンコーダ)より、静止画像の圧縮処理の負荷を軽減できる。
さて、2段目の畳み込み層312-2から出力された中間ベクトルは、同一圧縮経路314内の3段目の畳み込み層312-3に入力される。3段目の畳み込み層312-3は、出力ch数がXである畳み込み層であり、他の圧縮経路314における3段目の畳み込み層312-3と出力の形状が同一となるように畳み込み演算を行う。尚、本発明は、この例に限定されるものではなく、例えば、圧縮経路314A~314Cの3段目の畳み込み層312-3A~312-3Cについて出力ch数は異なっていてもよい。
図3に示した圧縮経路314Cが選択される例では、圧縮経路314Cは、圧縮経路314Aと比べて、2段目の畳み込み層312-2Cの出力ch数が小さいために、2段目の畳み込み演算の負荷と3段目の畳み込み演算の負荷が圧縮経路314Aと比べて小さい。このため、入力された部分画像を圧縮経路314Aにて処理するより、高速に圧縮することが可能となる。尚、本実施例では、複雑な部分画像については、セレクタ311が圧縮経路314Aを選択するが、圧縮経路314Cを例に説明する処理と同様の処理が実施されるため、圧縮経路314Aが選択される例についての動作説明については省略する。
3段目の畳み込み層312-3による畳み込み演算により、中間ベクトルが作成され出力される。出力された中間ベクトルは、量子化器318に入力される。量子化器318は、入力された中間ベクトルの量子化を行う。ここで言う量子化は、中間ベクトルの各要素が浮動小数点等である場合、各要素を、整数値や比較的少数のシンボルに変換することを意味する。本実施例では、量子化器318は、中間ベクトルを整数値に変換する量子化を行う。
この量子化器318の出力が、部分特徴量マップである。部分特徴量マップは、整数の要素で構成されており、ハフマン符号化や算術符号化に適した形式となっている。
図2の例によれば、1つの静止画像200から4つの部分画像201A~201Dが取得され、4つの部分画像201A~201Dの各々について、エンコーダ300が部分特徴量マップ211を作成する。エンコーダ300が、例えば特徴量マップ作成器339を有していて、特徴量マップ作成器339が、すべての部分特徴量マップ211を3次元の幅と高さの次元において結合することで、圧縮対象の静止画像200についての特徴量マップ210を作成してよい。尚、本実施例では、静止画像200から4つの部分画像201が取得されるが、本発明はこの例に限定されるものではなく、例えば、静止画像のようなデータから任意の個数のデータ部分が取得されてよい。
全ての部分画像の各々について部分特徴量マップが作成され、全ての部分特徴量マップが結合された特徴量マップが作成された後、圧縮処理の最後に、可逆圧縮器301が、この特徴量マップを算術符号化により可逆圧縮を行うことで、圧縮データを作成する。尚、本発明はこの例に限定されるものではなく、例えば、ハフマン符号化にて圧縮することが採用されてもよい。また、エンコーダ300の構成要素としてのニューラルネットワークとは別に、特徴量マップの値のコンテキスト予測器をニューラルネットワークにて構築し、このコンテキスト予測器の出力する確率予測(特徴量マップの要素ごとの確率予測)に基づいて算術符号化によるデータ量の削減効果を高めるという例についても本発明は適用される。
作成された圧縮データは、例えばストレージ関連ソフトウェアにより、永続記憶装置115に格納される。
(1-4)伸張処理
次に、図4を用いて、本実施例におけるストレージノード100が行う伸張処理をについて説明する。
図4は、ストレージノード100におけるデコーダ400と可逆伸張器401を示す。
デコーダ(学習型デコーダ)400は、逆畳み込み層412-1、複数の伸張経路414、セレクタ411及び分配器419を備える。
複数の伸張経路414D~414Fの各々は、伸張を行う。複数の伸張経路414D~414Fは、複数の圧縮経路314A~314Cにそれぞれ対応してよい。例えば、圧縮経路314Cにより圧縮された部分画像は、圧縮経路314Cに対応する伸張経路414Fによって伸張されてよい。複数の伸張経路414D~414Fは、伸張負荷が異なる。
複数の伸張経路414D~414Fの各々は、1段又は多段の逆畳み込み層412(図4の例では、逆畳み込み層412-2及び412-3)で構成される。
図4に示す例によれば、伸張処理は、クライアントサーバ103より静止画像の取得要求がストレージノード100に通知されたことによって開始する。
クライアントサーバ103より要求された静止画像の圧縮データが、例えばストレージ関連ソフトウェアにより、永続記憶装置115から読み出される。読み出された圧縮データは、可逆伸張器401に入力される。この可逆伸張器401が、圧縮データを伸張することで特徴量マップ210を取得する。そして、この特徴量マップ210が分割され、複数の部分特徴量マップ211が得られる。例えば、デコーダ400が、特徴量マップ分割器439を有していて、特徴量マップ分割器439が、特徴量マップ210を分割することで複数の部分特徴量マップ211を取得してよい。尚、図4の例では、いずれの伸張経路414においても3段の逆畳み込み層412-1、412-2及び412-3をデータが経由するが、本発明はこの例に限定されるものではない。例えば、複数の伸張経路414のうち、2段又は4段の逆畳み込み層を通る経路があるとしてもよい。また、例えば、伸張経路414が異なれば、データが経由する逆畳み込み層412の数が異なっていてもよい(言い換えれば、複数の伸張経路414において、逆畳み込み層412の数は異なっていてもよい)。
デコーダ400は、この部分特徴量マップから部分画像を復元する。デコーダ400の最初の処理として、逆畳み込み層412-1が逆畳み込み演算を行う。逆畳み込み演算結果である中間ベクトルは、3次元(出力ch、幅、高さ)のデータである。本実施例では、幅及び高さは入力した特徴量マップより大きくなるように畳み込み演算を行うが、本発明はこの例に限定されるものではない。例えば、幅や高さについては入力した画像と同一であってもかまわない。また、出力ch数については、2以上の値であればよい。
尚、本実施例において、この出力データの3次元の形状は、クライアントサーバ103よりユーザが選択可能である。
また、本実施例において、各逆畳み込み層412における逆畳み込み演算は、プロセサ112が実施するが、プロセサ112は、CPUに代えて又は加えて、GPU、FPGA及びASICの少なくとも1つを含んでよく、各逆畳み込み層412における逆畳み込み演算は、GPU、FPGA或いはASICが行ってもよい。
逆畳み込み層412-1から出力された中間ベクトルは、セレクタ411に入力される。セレクタ411は、前述の図5に示すセレクタ311と同一の構造をしているため、詳細な説明は省略する。
セレクタ411に入力された3次元の中間ベクトルにおけるch0の2次元(幅、高さ)のデータが、セレクタ411内のニューラルネットワークに入力される。当該ニューラルネットが、中間ベクトルのch0の2次元データから、当該中間ベクトルに対応した部分画像の伸張に適した伸張経路を選択するために、伸張経路毎の確率を出力する。最大値検出器が、ニューラルネットワークから出力された複数の確率の中で最も高い確率を検出し、当該確率に対応した伸張経路414を選択し、当該伸張経路414を示す値である経路値(例えば、スカラ値)を出力する。尚、図5においては、経路が3つの例について示しており、3つの経路毎の確率を出力した例について記すが、本発明はこの経路数に限定されるものではない。2つ以上の複数の経路があればよい。また、本実施例では、1段目の逆畳み込み層412-1の出力を用いてセレクタ411によって伸張経路が選択されるが、本発明はこの例に限定されるものではない。例えば、1段目の逆畳み込み層412-1が伸張経路414毎に分かれておりセレクタ411に部分特徴量マップが直接入力されて伸張経路414が選択されてもよい。また、前述の伸張処理において、あらかじめ伸張処理における伸張経路を決定しておき、その情報を特徴量マップの中に格納するとしてもよい。この場合、特徴量マップに含まれる経路情報に基づいて伸張経路が選択される。
セレクタ411から経路値が分配器419に入力される。また、分配器419には、当該経路値が得られた中間ベクトルに対応した部分特徴量マップが、逆畳み込み層412-1から入力される。分配器419は、複数の伸張経路414D~414Fのうち、セレクタ411から入力された経路値が示す伸張経路414に、入力された部分特徴量マップを出力する。図4が示す黒く太い矢印によれば、3つの伸張経路414D~414Fがある中で、伸張経路414Fが選択されている。伸張経路414Fにおける2段目の逆畳み込み層412-2Fは、伸張経路414Dの2段目の逆畳み込み層412-2Dよりも出力chの数が少ない。これは、入力された部分特徴量マップについてセレクタ411が軽量な伸張経路414Fを選択したことを意味する。
また、伸張経路414Fにおける2段目の逆畳み込み層412-2Fは、伸張経路414Eの2段目の逆畳み込み層412-2Eと出力ch数が同等であり、故に、伸張負荷は同等である。しかし、入力された部分特徴量マップの伸張については、セレクタ411により、伸張経路414Fが伸張経路414Eよりも好適であると判断されている。本実施例では、複数の部分特徴量マップのうち類似した部分特徴量マップ群(例えば、特徴が類似した一つ以上の部分特徴量マップ)について同一の伸張経路414が選択されるようにセレクタ411が構成される。これにより、特定の部分特徴量マップにのみ特化した伸張負荷の少ない効率的な伸張経路414を構築できる。このため、単一の汎用的な伸張能力を持つ大規模な逆畳み込み層を有する一比較例に係るデコーダより、圧縮データの伸張処理の負荷を軽減できる。
2段目の逆畳み込み層412-2から出力された中間ベクトルは、同一伸張経路414内の3段目の逆畳み込み層412-3に入力される。3段目の逆畳み込み層412-3は、出力ch数がもとの静止画像と同一のch(例としてカラー画像であればY=3)となる逆畳み込み演算を行う層である。
図4に示した伸張経路414Fが選択される例では、伸張経路414Fは、伸張経路414Dと比べて2段目の逆畳み込み層412-2Fの出力ch数が小さいために、2段目の逆畳み込み演算の負荷と3段目の逆畳み込み演算の負荷が伸張経路414Dと比べて小さい。このため、入力された部分特徴量マップを伸張経路414Dにて処理するより、高速に伸張することが可能となる。尚、本実施例では、複雑な部分特徴量マップについては、セレクタ411が伸張経路414Dを選択するが、伸張経路414Fを例に説明する処理と同様の処理が実施されるため、伸張経路414Dが選択される例についての動作説明については省略する。
3段目の逆畳み込み層412-3の出力である部分画像を全て取得した後、全ての部分画像を組み合わせて、クライアントサーバ103より要求された静止画像が作成される。例えば、デコーダ400が、データ作成器449を有していて、データ作成器449が、複数の部分画像から静止画像を作成してもよい。この静止画像を、例えばストレージ関連ソフトウェアが、クライアントサーバ103に転送してよい。これにより、ユーザは要求した静止画像の取得が可能となる。
(1-5)エンコーダ及びデコーダの学習処理の概要
これまで、圧縮処理及び伸張処理について説明した。この圧縮処理及び伸張処理をそれぞれ行うエンコーダ300及びデコーダ400の各々は、ニューラルネットワークを持ち、学習処理により、圧縮処理及び伸張処理に関わる値が最適化され、故に、最適な圧縮処理及び伸張処理が可能となる。具体的には、例えば、エンコーダ300及びデコーダ400内の畳み込み演算及び逆他畳み込み演算におけるカーネルの量(例えば、カーネル数及びカーネルサイズの少なくとも一方)は学習処理により決定される。また、エンコーダ300のセレクタ311が持つニューラルネットワークのパラメータ、及び、デコーダ400のセレクタ411が持つニューラルネットワークのパラメータも学習処理により決定される。
次に、こうしたニューラルネットワークの各パラメータの学習を含む学習処理の概要について図6を用いて説明する。
これまで述べた圧縮処理及び伸張処理においては、エンコーダ300及びデコーダ400の中の複数の経路のうち、入力されたデータ(部分画像及び部分特徴量マップ)は、セレクタ311及び411により選ばれた1つの経路のみを通過するものであった。学習処理においては、エンコーダ300及びデコーダ400の全通りの経路組合せが使用される。1つの経路組合せは、1つの圧縮経路314と1つの伸張経路414との組合せである。
図6の例においては、エンコーダ300が3つの経路、デコーダ400が3つの経路有するため、エンコーダ300の圧縮経路314とデコーダ400の伸張経路414の組み合わせは9通りある。このため、部分画像毎に9種類のデコード部分画像を作成する。
図6が示す黒く太い矢印は、次の例を示す。すなわち、部分画像が、エンコーダ300における圧縮経路314Cを通過することで部分特徴量マップが作成される。作成された部分特徴量マップが、デコーダ400における全ての伸張経路414D~414Fをそれぞれ経由することで、3つのデコード部分画像が取得される。つまり、この例では、3つの経路組合せ(経路314C及び414Dの組合せ、経路314C及び414Eの組合せ、及び、経路314C及び414Fの組合せ)が使用される。
部分画像は、圧縮経路314Cの他、圧縮経路314A及び314Bの各々にも入力され、故に、圧縮経路314A及び314Bの各々について、3つの伸張経路414D~414Fからそれぞれ出力された3つのデコード部分画像が取得される。つまり、1つの部分画像について、圧縮経路314の数と伸張経路414の数の積と同数のデコード部分画像が得られる。この全通りの経路組合せにおけるデコード部分画像と元の部分画像との誤差を小さくする学習処理により、エンコーダ300及びデコーダ400のニューラルネットワークのパラメータ(例えば、重み、全結合係数、カーネル量)が決定される。
学習と、学習の結果を使用する推論は、例えば、図11に示す通りである。図11において、破線矢印が、学習でのデータ流れを示しており、実線矢印が、推論でのデータ流れを示している。
すなわち、ストレージノード100が、学習モジュール1101と、推論モジュール1102と、設定モジュール1160と、学習記憶領域1152と、推論記憶領域1153とを有する。学習記憶領域1152及び推論記憶領域1153の各々は、永続記憶装置115に基づく論理的な記憶領域(例えば、ボリューム)でよい。
学習モジュール1101が、学習制御器1111、学習対象のエンコーダ300及びデコーダ400を有する。ストレージコントローラ1140が、データソース102から教師静止画像(学習用の静止画像)を受信し、当該教師静止画像を学習記憶領域1152に格納する(典型的には、複数の教師静止画像が一つ以上のデータソース102から受信され学習記憶領域1152に格納される)。学習制御器1111が、教師静止画像を学習記憶領域1152から読み出し、読み出した教師静止画像に基づく部分画像毎に、当該部分画像をエンコーダ300の圧縮経路314A~314Cの各々に入力することで3種類の部分特徴量マップを取得したり、各部分特徴量マップをデコーダ400の伸張経路414D~414Fの各々に入力することで9種類のデコード部分画像を取得したりする。学習制御器1111が、教師静止画像における複数の元の部分画像の各々について、元の部分画像と当該元の部分画像についての9種類のデコード部分画像とを基に、エンコーダ300及びデコーダ400の学習を行う。
推論モジュール1102のエンコーダ300及びデコーダ400が、学習後のエンコーダ300及びデコーダ400である。ストレージコントローラ1140が、例えば、データソース102からの静止画像をエンコーダ300に入力することで圧縮データを取得し、取得した圧縮データを推論記憶領域1153に格納する。また、ストレージコントローラ1140が、例えば、クライアントサーバ103からの要求に応答して、推論記憶領域1153から圧縮データを読み出し、読み出した圧縮データをデコーダ400に入力することでデコード静止画像を取得し、取得した静止画像をクライアントサーバ103に転送する。
学習処理の詳細を次に説明する(なお、設定モジュール1160については、後に図8を参照して説明する)。
(1-6)エンコーダ及びデコーダの学習処理のフロー
続いて、図7を用いてエンコーダ300及びデコーダ400の学習処理について説明する。図7は、本実施例におけるエンコーダ300及びデコーダ400の学習処理のフロー図である。尚、本発明は、この例に限定されるものではなく、前述のエンコーダ300及びデコーダ400内のセレクタ311及び411を適切に学習できればよい。学習処理には、大量の静止画像(とそれより生成される大量の部分画像)を用いるが、学習処理に使用する画像に圧縮対象の画像を含む必要はない。図7に例示の各ステップは、例えば学習制御器1111により行われてよい。
大量の静止画像を学習する中で、エンコーダ300は、軽量の負荷にて圧縮が可能な部分画像の特徴を認識する能力を獲得する。また、エンコーダ300は、その部分画像に類似した圧縮対象の部分画像が入力されたときに、負荷が軽量な圧縮経路314でよいと判断すれば負荷が軽量な圧縮経路314を選択する能力を獲得する。また、エンコーダ300内のある圧縮経路314に属する畳み込み層312は、セレクタ311によりその圧縮経路314に割り当てられた類似の部分画像群のみに特化した圧縮処理の能力を獲得する。
また、デコーダ400も同様に、学習処理により軽量の負荷にて伸張が可能な部分特徴量マップの特徴を認識する能力を獲得する。また、デコーダ400は、その部分特徴量マップに類似した伸張対象の部分特徴量マップが入力されたときに、同一の伸張経路414を選択する能力を獲得する。また、デコーダ400内のある伸張経路414に属する逆畳み込み層412は、セレクタ411によりその伸張経路414に割り当てられた類似の部分特徴量マップ群のみに特化した伸張処理の能力を獲得する。
図7に示す学習処理のフローは、一つの部分画像についてのフローである。教師静止画像(学習用の静止画像)毎に、当該静止画像に基づく複数の部分画像の各々について、図7に示すフローが行われる。以下、一つの部分画像を例に取る。また、以下の説明では、説明を簡単にするために、圧縮経路314α(図6の例では、α=A、B又はC)と伸張経路414β(図6の例では、β=D、E又はF)との経路組合せを、「α+β」と表記する。
最初のステップであるS701は、部分画像について、全通りの経路組合せを通じて、全種類のデコード結果である全種類のデコード部分画像を作成するステップである。
ステップS701より続くステップS702は、ステップS701にて作成したデコード部分画像毎に、デコード部分画像と元の部分画像との差である誤差を算出するステップである。つまり、各経路組合せについて、誤差が算出される。本実施例では、この誤差は、画像のピクセル毎の値の差の二乗の平均値であるMSE(Mean Squared Error)として算出される。尚、本発明は誤差としてMSEに限定されるものではなく、Multi-Scale SSIM(Structural Similarity)といったデコード結果を元データとの類似度を示す何らかの誤差であればよい。また、各経路組合せについて、S702で算出される誤差は、デコード部分画像と元の部分画像との誤差に、当該経路組合せにおける圧縮経路314を通じて出力された部分特徴量マップの情報エントロピーが加えられた値でもよい。これにより、エンコーダ300の圧縮経路314は、誤差を小さくするだけでなく、可逆圧縮器301にて可逆圧縮によるデータ削減量が増えるような変換を行うように学習することが可能となる。
ステップS702より続くステップS703は、全経路組合せのうち、低負荷経路組合せ(図6の例では、B+E、B+F、C+E及びC+Fが該当)の中で、誤差が閾値以下となる経路組合せの有無を判断するステップである。「低負荷経路組合せ」とは、処理負荷が比較的低い経路組合せであり、例えば、圧縮経路314の出力ch数も伸張経路414の出力ch数も“Low”である経路組合せである。誤差が閾値以下となる低負荷経路組合せがある場合、エンコーダ300とデコーダ400がともに軽量の計算で実施可能と判断可能であるため、処理がS704に遷移する。一方で、誤差が閾値以下となる低負荷経路組合せがない場合、エンコーダ300及びデコーダ400のいずれか一方又は両方で高負荷の処理が必要と判断可能であるため、処理がS707に遷移する。
ステップS703より遷移するステップS704は、低負荷処理経路の中で最も誤差の小さい経路組合せを特定するステップである。
ステップS704より続くステップS705は、エンコーダ300のセレクタ311とデコーダ400のセレクタ411内のニューラルネットワークについて、S704で特定された低負荷処理経路が選択されるように学習を行うステップである。より具体的には、例えば、圧縮経路314Cを選択するように学習がされる場合、セレクタ311内のニューラルネットワーク521の出力のうち、圧縮経路314Cの確率が“1”となり、圧縮経路314A及び314Bの各々の確率が“0”となるように、ニューラルネットワーク521のパラメータが更新される。
ステップS705より続くステップS706は、S704で特定された経路組合せの学習を行うステップである。より具体的には、例えば、S704で特定された経路組合せがC+Fであった場合、エンコーダ300については、圧縮経路314Cに属する畳み込み層312-2C及び312-3Cと1段目の畳み込み層312-1のみが学習され、デコーダ400については、伸張経路414Fに属する逆畳み込み層412-2F及び412-3Fと1段目の逆畳み込み層412-1のみが学習される。この処理にて、この部分画像に対する1回の学習は終了となる。なお、ステップS706の学習は、元の部分画像と、経路組合せC+Fに対応したデコード部分画像との誤差に基づいてよい。例えば、当該元の部分画像についての誤差が、別の部分画像に関し経路組合せC+Fについて得られた誤差よりも大きい場合、学習は、誤差をより小さくするため畳み込み層312や逆畳み込み層412のパラメータを調整することを含んでよい。
ステップS703より遷移するステップS707は、ランダムに遷移するステップである。図7に示す例では、1%の確率でステップS708に、残りの99%の確率でステップS709に処理が遷移する。本発明はこの遷移確率の組み合わせに限定されるものではない。例えば、一般的に、S708に遷移する確率がS709に遷移する確率より十分に小さければ、学習は収束する。また、ステップS707は、部分画像を圧縮する圧縮経路314が早期に固定化されないために設けられたステップであり、部分画像の各圧縮経路への割り当てが安定したら、100%の確率でS709に処理が遷移するとしてもよい。
ステップS707より遷移するステップS708は、全ての経路組合せを学習するステップである。学習の過渡的な状態において、現時点で誤差が最も小さい経路組合せよりも、好適な経路組合せが学習により出現する可能性がある。このような経路組合せを探索するために、全経路組合せを平等に学習することが実施される。この処理にて、部分画像に対する1回の学習は終了となる。
ステップS707より遷移するステップS709は、S703にて低負荷経路組合せにて誤差が十分に減少できなかったため、低負荷経路組合せ以外の経路組合せを含む複数の経路組合せから最適な処理経路を探索し、最も誤差の小さな経路組合せを特定するステップである。
ステップS709より続くステップS710は、エンコーダ300のセレクタ311とデコーダ400のセレクタ411内のニューラルネットワークについて、S709で特定した経路組合せが選択されるように学習を行うステップである。より具体的な学習の内容は、前述のS705について述べた内容と実質的に同一のため、説明は省略する。
ステップS710より続くステップS711は、S709で特定した経路組合せのみを学習するステップである。学習の詳細は、前述のS706について述べた詳細と同様のため、説明は省略する。この処理にて、部分画像に対する1回の学習は終了となる。
ここまで述べた図7のフローを部分画像毎に十分な回数繰り返すことで、エンコーダ300及びデコーダ400におけるニューラルネットワークの学習は完了する。
以上が、本実施例における学習処理のフローである。なお、本実施例では、デコーダ400に複数の伸張経路414があるが、伸張経路414は一つでもよい。この場合、同一の部分画像について、圧縮経路314A~314Cにそれぞれ対応した3種類のデコード部分画像が得られることになる。
(1-7)ユーザインターフェース
続いて本実施例におけるユーザインターフェースについて図8を用いて説明する。図8は、ストレージノード100がネットワーク101を介してクライアントサーバ103に提供するユーザインターフェースの一例として管理画面の例を示す。本実施例においてユーザは、クライアントサーバ103を用いて圧縮の設定を行うことが可能である。
図8に示す管理画面800(例えばGUI(Graphical User Interface))は、設定モジュール1160により提供される。管理画面800は、エンコーダ300及びデコーダ400の少なくとも一つについての属性値の指定を受け付ける画面である。管理画面800は、エンコーダ300の設定に関する6つの入力フィールド801~806と、デコーダ400の設定に関する5つの入力フィールド811~815を持つ。各入力フィールドは、UIの一例である。
エンコーダ300に関して、入力フィールドは次の通りである。入力フィールド801は、先頭の畳み込み層(例えば、畳み込み層312-1)の出力ch数の指定を受け付ける入力フィールドである。入力フィールド802及び803の各々は、出力ch数が可変である中間の畳み込み層(例えば、畳み込み層312-2)について出力ch数のグレード(例えば、“High”又は“Low”)に対応した圧縮経路314の数(当該グレードの畳み込み層312を持つ圧縮経路314の数)の指定を受け付ける入力フィールドである。入力フィールド804及び805の各々は、出力ch数のグレードに対応した出力ch数の指定を受け付ける入力フィールドである。入力フィールド806は、末尾の畳み込み層(例えば、畳み込み層312-3)の出力ch数の指定を受け付ける入力フィールドである。
デコーダ400に関して、入力フィールドは次の通りである。入力フィールド811は、先頭の逆畳み込み層(例えば、逆畳み込み層412-1)の出力ch数の指定を受け付ける入力フィールドである。入力フィールド812及び813の各々は、出力ch数が可変である中間の逆畳み込み層(例えば、逆畳み込み層412-2)について出力ch数のグレードに対応した伸張経路414の数(当該グレードの逆畳み込み層412を持つ伸張経路414の数)の指定を受け付ける入力フィールドである。入力フィールド814及び815の各々は、出力ch数のグレードに対応した出力ch数の指定を受け付ける入力フィールドである。
入力フィールド802、803、812及び813によれば、出力ch数のグレード別に、経路の増減が可能である。これにより、経路毎に、あるデータに特化した圧縮及び伸張が可能となり、以って、圧縮率の向上と、圧縮によるデータ損失の軽減との両立が期待される。
また、入力フィールド804、805、814及び815によれば、適切な処理負荷を設定可能となる。
管理画面800を通じて入力された値に従う構成のエンコーダ300及びデコーダ400が設定モジュール1160により構築される。例えば、入力フィールド803に“3”が入力された場合、3つの低負荷圧縮経路を持つエンコーダ300が構築される。ここで言う低負荷圧縮経路は、畳み込み層312-2の出力ch数が“Low”である圧縮経路である。
尚、本発明はこの管理画面800に限定されるものではない。例えば、2段目の畳み込み演算の出力ch数をHighとLowの2段階に分けるのはなく、より多くの段階に分割するとしてもよい。
以上が本実施例における管理画面800である。
続いて実施例2について説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
実施例1においては、エンコーダ300(及びデコーダ400)内に複数の圧縮経路314(複数の伸張経路414)と圧縮経路314(伸張経路414)を選択するセレクタ311(セレクタ411)がある。対象となる部分画像(部分特徴量マップ)毎に最適な圧縮経路(部分特徴量マップ)を選択して圧縮(及び伸張)が行われる。
一方、実施例2では、複数の圧縮経路(複数の伸張経路)が用意されることに代えて、畳み込み演算(逆畳み込み演算)のチャネル数や、畳み込み演算おけるカーネル量、等を、部分画像及び部分特徴量マップ毎に最適な値に設定することで、処理負荷の軽減(言い換えれば、処理の高速化)が図られる。
実施例2におけるシステム構成は実施例1と同様なため説明を省略する。
実施例2に係るエンコーダ900を、図9を用いて説明する。
エンコーダ900は、畳み込み層912-1及び912-2と、セパレータ920と、ニューラルネットワーク(例えば全結合ニューラルネットワーク)910とを有する。
エンコーダ900の最初の処理は、1段目の畳み込み層912-1の処理であり、実施例1の処理と同様の処理がなされてよい。尚、本実施例では、1段目の畳み込み層912-1の出力する三次元(ch、幅、高さ)の中間ベクトルのch数を6として説明するが、本発明はこのch数に限定されるものではない。
次に、1段目の畳み込み層912-1の処理結果である中間ベクトルがセパレータ520に入力される。セパレータ920は、3次元(ch、幅、高さ)の中間ベクトルのうちch0とch1~5の2つに分割する。
セパレータ920で分割した中間ベクトルのch0が、ニューラルネットワーク910に入力される。ニューラルネットワーク910は、セパレータ920で分離した中間ベクトルのチャネル数と同数の出力を有している。図9の例では、チャネルはch1~5と5つあるため、5つの出力がある。この5つの出力の各々は、当該出力に対応したチャネルの利用する確率(0以上1以下の値)を出力するものである。
本実例においては、0.5以下の確率の出力に対応するchは、2段目の畳み込み演算にて計算に用いられない。一方で、0.5より大きく1.0以下の確率の出力に対応するchについては、2段目の畳み込み演算で処理される。このようにすることで、部分画像の複雑度に応じて必要な最小のチャネルのみを計算すればよく、処理負荷を軽減できる。
また、ニューラルネットワーク910は、次の畳み込み演算で使用されるカーネルの量も出力する。これは、部分画像の複雑度に応じて必要なカーネル量(カーネル数及びカーネルサイズの少なくとも一つ)を増減させるものであり、単純な部分画像であれば、カーネル量が減少するように制御される。尚、本実施例では、入力する部分画像に応じ、次の畳み込み演算におけるカーネル量や入力のチャネル数を変更する制御について記すが、本発明はこの例に限定されるものではない。例えば、畳み込み演算のストライド数やパディング数等の畳み込み演算の計算量、計算の間引き方法等、計算に依存する様々なパラメータが出力されるとしてもよい。
また、本実施例において、ニューラルネットワーク910は、1段目の畳み込み演算の結果である中間ベクトルを入力する例について示しているが、本発明はこの例に限定されるものではない。例えば、エンコーダ900への入力である部分画像を入力するとし、1段目の畳み込み演算のカーネル量やストライプ数などが制御されるとしてもよい。また、畳み込み層912の段数は限定されないでよい。カーネル量やch毎の確率を出力する指定するニューラルネットワーク910は、所定の畳み込み層912毎に存在してよい。
ニューラルネットワーク910は、例えば、畳み込み演算によるニューラルネットワークでもよい。学習によって適切なchやカーネル量等、畳み込み演算の計算量に関わるパラメータを算出な可能な、学習能力のあるいずれかの処理方法があればよい。
さて、ニューラルネットワーク910は、セパレータ920で分割した中間ベクトルのch0の2次元データ(幅、高さ)を入力とし、ch1~ch5の各々の確率と、カーネル量とを出力とする。ch1~ch5は、畳み込み層912-2の入力chである。
ニューラルネットワーク910からchとカーネル量を受領した2段目の畳み込み層912-2が、ch1~5のうち計算に用いるch(確率が0.5より大きいch)のみを用いて、指定されたカーネル量の範囲で畳み込み演算を行い、部分画像の部分特徴量マップを作成する。この方法により単純な部分画像については、より少ないchやカーネル量で軽量に計算し、高速化が可能となる。
作成した部分特徴量マップを含む特徴量マップが、実施例1と同様に作成され、当該特徴量マップが可逆圧縮器301に入力されることで、静止画像の圧縮データが作成される。
以上が、実施例2におけるエンコーダ900の処理である。このエンコーダ900内のニューラルネットワーク910による計算chの選択は、デコーダにおける逆畳み込み層における逆畳み込み演算に用いるchの選択についても同様に適用可能であるため、実施例2のデコーダに関する説明は省略する。
続いて実施例2におけるエンコーダ及びデコーダの学習処理のフローを、図10を用いて説明する。なお、図10のフローは、部分画像毎に行われる。一つの部分画像を例に取る。また、図10の各ステップは、例えば、学習モジュール(例えば学習制御器)により行われてよい。
ステップS1001にて、デコード部分画像が取得される。具体的には、部分画像がエンコーダにより部分特徴量マップに変換され、当該部分特徴量マップがデコーダによりデコード部分画像に変換される。
続くステップS1002にて、Z(入力した部分画像とデコード部分画像との誤差(言い換えれば、データ損失量))が算出される。
続くステップS1003では、X(エンコーダ900内のニューラルネットワーク910の出力値の合計)が算出される。前述のとおり、ニューラルネットワーク910のchについての出力は、中間ベクトルのchごとに0~1の値を出し、また、カーネル量を出す。これらの出力の値の合計値が高いほど計算に用いられるチャネル数が増加し、またカーネル量が増加することを示している。また、本実施例では、この値をS1002にて求めた誤差と同時に小さくなるように学習することで、圧縮によるデータ損失と計算量のトレードオフが図られる。尚、本実施例では、ニューラルネットワーク910の出力値が小さくなるように学習するが、本発明はこの例に限定されるものではない、例えば、カーネル量とチャネル数から推測される畳み込み演算の計算量が算出され、その計算量が小さくなるように学習が図られるとしてもよい。
続くステップS1004では、Y(デコーダ内のニューラルネットワークの出力値の合計)が算出される。
続くステップS1005では、最小化目標値=C・X+C・Y+Zが算出される。C及びCの各々は、係数である。
この最小化目標値を用いることで、Zを最小化するのに必要なエンコーダとデコーダにおけるch数が最も少なくなるように出力がなされる。また、画質を犠牲にして性能を向上させたい場合、最小化目標値のCとCの値を増加させることで、計算に用いるch数が少なくなるように学習が進展する。一方で、最小化目標値のCとCを減少させて、学習することで、より多くのchを用いるように学習が進展する。
を大きくして学習した場合には、同一品質において圧縮の性能が優先され、Cを大きくして学習した場合には、同一品質において伸張の性能が優先される。
続くステップS1006では、S1005にて算出した学習目標値が小さくなるように学習が行われる。
以上が実施例2における学習処理のフローである。なお、実施例2の学習処理では、上述の最小化目標値に代えて又は加えて、最小化目標値=C・P+C・(-Q)+Rが最小となるような学習がニューラルネットワーク910についてされてよい。Rが、入力した部分画像とデコード部分画像との誤差(言い換えれば、データ損失量)である。Pが、カーネル量である。Qが、マスクされるchの数である。C及びCの各々は、係数である。マスク対象のチャネルの数が少ないほど、計算負荷が大きい。また、カーネル量が多いほど、計算負荷が大きい。
実施例1及び実施例2の説明を基に、例えば下記のように総括をすることができる。下記総括は、上述の説明の補足又は変形例を含んでもよい。
図12に例示するように、ストレージシステム110が、記憶装置1250(例えば少なくともメモリ)と記憶装置1250に接続されたプロセサ1260とを備える。記憶装置1250およびプロセサ1260は、例えば、1つ以上のストレージノード100における1つ以上の記憶装置(例えばDRAM111及び永続記憶装置115)と1つ以上のプロセサ112でよい。
プロセサ1260が、データ2200から取得される複数のデータ部分2201(例えば2201A~2201D)の各々について、当該データ部分2201の特徴を基に、当該データ部分2201の圧縮演算規模71を決定し、決定された圧縮演算規模71に従う非可逆の圧縮演算を行うことで、当該データ部分2201をエンコードデータ部分21に変換する。プロセサ1260が、複数のデータ部分2201について作成された複数のエンコードデータ部分21を基に、データ2200のエンコードデータ10を作成し、エンコードデータ10又はそれの圧縮データを記憶装置1250に格納する。複雑なデータ部分については、比較的計算処理負荷の高い規模71(例えば71A)にて圧縮がなされ、一方で、単純なデータ部分については、比較的計算処理負荷の低い規模71(例えば71C)にて圧縮がなされる。この結果、少ないデータ損失量を実現しつつ全体として圧縮演算負荷を低減できる。なお、複数のデータ部分2201は、複数のデータの一例である。また、圧縮演算は、非可逆の圧縮演算に限られないでよい(つまり、可逆の圧縮演算が採用されてよい)。例えば、プロセサ1260が、複数のデータの各々について、当該データの特徴を基に、当該データの圧縮演算規模を決定し、決定された圧縮演算規模に従う圧縮演算を行うことで、当該データをエンコードデータに変換し、エンコードデータ又はそれの圧縮データを記憶装置1250に格納してよい。以下では、データの一例として、データ部分2201を採用し、圧縮演算として、非可逆圧縮演算を採用するが、データ部分2201は「データ」と読み替えられてよいし、圧縮演算は非可逆の圧縮演算に限られないでよい。
データ2200の一例が、静止画像200であり、データ部分2201の一例が、部分画像201でよい。また、エンコードデータ部分21の一例が、部分特徴量マップ211であり、エンコードデータ10の一例が、特徴量マップ210でよい。
データ2200は、上述したように、静止画像200以外のデータ、例えば、動画データ、時系列のセンサデータでもよい。データ部分2201の特徴は、データ2200の種類に依存してよい。
プロセサ1260が、例えば、エンコーダ1200と、ストレージコントローラ30として機能してよい。エンコーダ1200が、圧縮規模決定部1201と、エンコードデータ作成部1202とを有してよい。ストレージコントローラ30が、ストレージコントローラ1140を含んでよい。ストレージコントローラ30が、データ2200を圧縮規模決定部1201に入力してよい。圧縮規模決定部1201が、入力されたデータ2200から取得される複数のデータ部分2201の各々について、当該データ部分2201の特徴を基に、当該データ部分2201の圧縮演算規模71を決定し、決定された圧縮演算規模71に従う非可逆の圧縮演算を行うことで、当該データ部分2201をエンコードデータ部分21に変換してよい。エンコードデータ作成部1202が、複数のデータ部分2201について作成された複数のエンコードデータ部分21を基に、データ2200のエンコードデータ10を作成してよい。ストレージコントローラ30が、エンコードデータ10又はそれの圧縮データを記憶装置1250に格納してよい。
圧縮規模決定部1201が、例えば、図3に示したセレクタ311、分配器319及び複数の圧縮経路314のうち少なくともセレクタ311を含んでよい。エンコードデータ作成部1202が、例えば、図3に示した量子化器318及び特徴量マップ作成器339のうち少なくとも特徴量マップ作成器339を含んでよい。エンコーダ1200は、例えば、エンコードデータ10を可逆圧縮することにより圧縮データを出力する可逆圧縮器(図示せず)を含んでもよい。
また、圧縮規模決定部1201が、例えば、図9に示したセパレータ920及びニューラルネットワーク910のうち少なくともニューラルネットワーク910を含んでよい。
複数のデータ部分2201の各々について、圧縮演算規模71の決定は、圧縮演算規模71が異なりそれぞれが非可逆の圧縮演算を行う複数の圧縮経路(例えば、複数の圧縮経路314)から、圧縮経路を選択することでよい。当該選択された圧縮経路が、当該データ部分2201をエンコードデータ部分21に変換してよい。データ部分群(類似したデータ部分の集合)毎に特化した個別の圧縮経路にて圧縮することで、汎用的な能力を持つ大規模な圧縮経路(例えばニューラルネットワーク)ではなく比較的小規模の圧縮経路(例えばニューラルネットワーク)で同様の圧縮効果が得られる。
圧縮演算は、非可逆の圧縮演算であってよい。教師データが入力された場合、プロセサ1260が、教師データから取得される複数の教師データ部分の各々について、複数の圧縮経路の各々について、当該教師データ部分と、当該教師データ部分を当該圧縮経路により圧縮することで取得されたエンコード教師データ部分の伸張後のデータであるデコード教師データ部分を取得してよい。プロセサ1260が、各教師データ部分について、当該教師データ部分と、当該教師データについて取得された複数のデコード教師データ部分の各々との誤差を算出てよい。プロセサ1260が、複数のデコード教師データ部分の各々について算出された誤差と、複数の圧縮経路の各々の圧縮演算規模とを基に、圧縮経路の選択を学習してよい。これにより、最適な圧縮経路の選択を実現することができる。なお、複数の教師データ部分の各々について、算出された複数の誤差が、圧縮演算規模が相対的に小さい圧縮経路について閾値以下の誤差である該当誤差を含んでいる場合、プロセサ1260は、当該教師データ部分の特徴に該当する特徴を持ったデータ部分については最小の該当誤差に対応した圧縮経路を選択することを学習してよい。これにより、圧縮演算規模と誤差の両方を低減することが期待できる。
複数の圧縮経路の各々は、それぞれ順次畳み込み演算を行う1つ以上の畳み込み層で構成された畳み込みニューラルネットワークでよい。畳み込みニューラルネットワークの規模を、データ部分2201の特徴に応じて小さくすることが可能である。
プロセサ1260は、ユーザインターフェース(例えば管理画面800)を提供してよい。ユーザインターフェースは、下記のうちの少なくとも一つ、
・少なくとも1つの圧縮演算規模について、当該圧縮演算規模の圧縮経路の数、
・少なくとも1つの圧縮演算規模の定義(例えば、圧縮演算規模と出力チャネル数との関係)、
を受け付けるインターフェースでよい。プロセサ1260は、ユーザインターフェースを介して入力された値に基づき複数の圧縮経路を構築してよい。これにより、ユーザ任意の構成のエンコーダ1200を、少ないデータ損失量を実現しつつ全体として計算処理負荷を低減できるエンコーダとすることができる。
プロセサ1260が、複数のデータ部分2201の各々について、複数の入力チャネルのうちマスク対象の入力チャネル以外の入力チャネルと、所定のカーネル量のカーネルとを用いた畳み込み演算を行うようになっていてよい。複数のデータ部分2201の各々について、圧縮演算規模の決定は、畳み込み層の複数の入力チャネルのうちのマスク対象の入力チャネルと、当該畳み込み層において使用されるカーネルのカーネル量とのうちの少なくとも一つを決定することでよい。これにより、複数のデータ部分2201の複数の特徴に圧縮経路が共通でも、少ないデータ損失量を実現しつつ全体として圧縮演算負荷を低減できる。
圧縮演算は、非可逆の圧縮演算であってよい。複数のデータ部分2201の各々について、プロセサ1260が、ニューラルネットワーク(例えばニューラルネットワーク910)を実行することで、複数の入力チャネルのうちのマスク対象の入力チャネルとカーネル量とを表す複数の出力値を当該データ部分2201の特徴に基づき出力してよい。教師データが入力された場合、プロセサ1260が、教師データから取得される複数の教師データ部分の各々について、カーネル量と、マスク対象チャネル数と、誤差とを基に、ニューラルネットワークを学習してよい。これにより、データ部分2201の特徴に最適なカーネル量及びマスク対象チャネル数のうちの少なくとも1つが期待できる。例えば、複数の入力チャネルの全通りの組合せの各々をマスク対象として教師データ部分の圧縮と伸張を行うことを含む学習が行われてよい。いずれの組合せがマスク対象とされた場合に誤差が最も小さいかがに応じた学習が行われてよい。なお、複数の教師データ部分の各々について、ニューラルネットワークの学習は、最小化目標値=第1係数・カーネル量+第2の係数・(-1・マスク対象チャネル数)+誤差における最小化目標値が最小となる学習でよい。これにより、誤差と、カーネル量及びマスク対象チャネル数に依存する計算処理規模とを両立することが期待できる。
図13に例示するように、プロセサ1260(例えば、ストレージコントローラ30)が、記憶装置1250からエンコードデータ10を取得し、又は、記憶装置1250から取得した圧縮データをエンコードデータ10に伸張してよい。プロセサ1260が、エンコードデータ10から取得される複数のエンコードデータ部分21の各々について、当該エンコードデータ部分21の特徴を基に、当該エンコードデータ部分の伸張演算規模81を決定してよい。プロセサ1260が、決定された伸張演算規模81に従う伸張演算を行うことで、当該エンコードデータ部分21をデコードデータ部分2281に変換してよい。プロセサ1260が、複数のエンコードデータ部分21について作成された複数のデコードデータ部分2281を基に、データ2200のデコードデータ2280を作成してよい。少ないデータ損失量を実現しつつ全体として伸張演算負荷を低減できる。
エンコードデータ部分21の特徴は、エンコードデータ部分21それ自体の特徴でもよいし、エンコードデータ部分21がいずれの圧縮演算規模71で圧縮されたかを示してもよい。後者の場合、当該圧縮演算規模71に対応する伸張演算規模81が決定されてもよい。
プロセサ1260が、例えば、デコーダ1300として機能してよい。デコーダ1300が、エンコードデータ部分取得部1302と、伸張規模決定部1301とを有してよい。ストレージコントローラ30が、エンコードデータ10をエンコードデータ部分取得部1302に入力してよい。エンコードデータ部分取得部1302が、エンコードデータ10から複数のエンコードデータ部分21を取得してよい。伸張規模決定部1301が、複数のエンコードデータ部分21の各々について、当該エンコードデータ部分21の特徴を基に、当該エンコードデータ部分の伸張演算規模81を決定してよい。伸張規模決定部1301が、決定された伸張演算規模81に従う伸張演算を行うことで、当該エンコードデータ部分21をデコードデータ部分2281に変換してよい。伸張規模決定部1301が、複数のエンコードデータ部分21について作成された複数のデコードデータ部分2281を基に、データ2200のデコードデータ2280を作成してよい。ストレージコントローラ30が、デコードデータ2280を出力してよい。
エンコードデータ部分取得部1302が、例えば、図4に示した特徴量マップ分割器439を含んでよい。伸張規模決定部1301が、例えば、図4に示したセレクタ411、分配器419、複数の伸張経路414及びデータ作成器449のうち少なくともセレクタ411を含んでよい。デコーダ1300は、圧縮データを可逆伸張することによりエンコードデータ10を出力する可逆伸張器(図示せず)を含んでもよい。
また、伸張規模決定部1301が、例えば、逆畳み込み演算に用いられるカーネルのカーネル量と当該逆畳み込み演算におけるマスク対象チャネルとのうちの少なくとも1つを出力するニューラルネットワーク(図示せず)を含んでもよい。
複数のエンコードデータ部分21の各々について、伸張演算規模81の決定は、伸張演算規模が異なりそれぞれが伸張演算を行う複数の伸張経路(例えば、複数の伸張経路414)から、伸張経路を選択することでよい。当該選択された伸張経路が、当該エンコードデータ部分をデコードデータ部分に変換してよい。エンコードデータ部分群(類似したエンコードデータ部分の集合)毎に特化した個別の伸張経路にて伸張することで、汎用的な能力を持つ大規模な伸張経路(例えばニューラルネットワーク)ではなく比較的小規模の伸張経路(例えばニューラルネットワーク)で同様の伸張効果が得られる。
教師データが入力された場合、プロセサ1260が、教師データから取得される複数の教師データ部分の各々について、各圧縮経路に関し、当該教師データ部分と、当該教師データ部分を当該圧縮経路により圧縮することで取得されたエンコード教師データ部分を複数の伸張経路に伸張させることで複数のデコード教師データ部分を取得してよい。プロセサ1260が、当該教師データ部分と、当該教師データについて取得された複数のデコード教師データ部分の各々との誤差を算出してよい。プロセサ1260が、複数のデコード教師データ部分の各々について算出された誤差と、複数の経路組合せの圧縮演算規模及び伸張演算規模とを基に、経路組合せの選択を学習してよい(複数の経路組合せの各々は、いずれかの圧縮経路といずれかの伸張経路との組合せでよい)。これにより、最適な圧縮経路と最適な伸張経路の選択を実現することができる。
プロセサ1260が、複数のエンコードデータ部分21の各々について、複数の入力チャネルのうちマスク対象の入力チャネル以外の入力チャネルと、所定のカーネル量のカーネルとを用いた逆畳み込み演算を行うようになっていてよい。複数のエンコードデータ部分21の各々について、伸張演算規模81の決定は、逆畳み込み層の複数の入力チャネルのうちのマスク対象の入力チャネルと、当該逆畳み込み層において使用されるカーネルのカーネル量とのうちの少なくとも一つを決定することでよい。これにより、複数のエンコードデータ部分21の複数の特徴に伸張経路が共通でも、少ないデータ損失量を実現しつつ全体として伸張演算負荷を低減できる。
100:ストレージノード、1200:エンコーダ、1300:デコーダ

Claims (15)

  1. 記憶装置と前記記憶装置に接続されたプロセサとを備えるストレージシステムであって、
    前記プロセサが、複数のデータの各々について、
    当該データの特徴を基に、当該データの圧縮演算規模を決定し、
    決定された圧縮演算規模に従う圧縮演算を行うことで、当該データをエンコードデータに変換し、
    前記エンコードデータ又はそれの圧縮データを前記記憶装置に格納し、
    前記複数のデータの各々について、
    圧縮演算規模の決定は、圧縮演算規模が異なりそれぞれが圧縮演算を行う複数の圧縮経路から、圧縮経路を選択することであり、
    当該選択された圧縮経路が、当該データをエンコードデータに変換し、
    前記圧縮演算は、非可逆の圧縮演算であり、
    教師データが入力された場合、前記プロセサが、複数の教師データの各々について、
    前記複数の圧縮経路の各々について、当該教師データと、当該教師データを当該圧縮経路により圧縮することで取得されたエンコード教師データの伸張後のデータであるデコード教師データを取得し、
    当該複数の教師データと、複数のデコード教師データの各々との誤差を算出し、
    前記複数のデコード教師データの各々について算出された誤差と、前記複数の圧縮経路の各々の圧縮演算規模とを基に、圧縮経路の選択を学習する、
    ストレージシステム。
  2. 前記複数の教師データの各々について、算出された複数の誤差が、圧縮演算規模が相対的に小さい圧縮経路について閾値以下の誤差である該当誤差を含んでいる場合、前記プロセサは、当該教師データの特徴に該当する特徴を持ったデータについては最小の該当誤差に対応した圧縮経路を選択することを学習する、
    請求項に記載のストレージシステム。
  3. 前記複数の圧縮経路の各々は、それぞれ順次畳み込み演算を行う1つ以上の畳み込み層で構成された畳み込みニューラルネットワークである、
    請求項に記載のストレージシステム。
  4. 前記プロセサは、ユーザインターフェースを提供し、
    前記ユーザインターフェースは、下記のうちの少なくとも一つを受け付けるインターフェースであり、
    少なくとも1つの圧縮演算規模について、当該圧縮演算規模の圧縮経路の数、及び、
    少なくとも1つの圧縮演算規模の定義、
    前記プロセサは、前記ユーザインターフェースを介して入力された値に基づき前記複数の圧縮経路を構築する、
    請求項に記載のストレージシステム。
  5. 記憶装置と前記記憶装置に接続されたプロセサとを備えるストレージシステムであって、
    前記プロセサが、複数のデータの各々について、
    当該データの特徴を基に、当該データの圧縮演算規模を決定し、
    決定された圧縮演算規模に従う圧縮演算を行うことで、当該データをエンコードデータに変換し、
    前記エンコードデータ又はそれの圧縮データを前記記憶装置に格納し、
    前記プロセサが、前記複数のデータの各々について、複数の入力チャネルのうちマスク対象の入力チャネル以外の入力チャネルと、所定のカーネル量のカーネルとを用いた畳み込み演算を行うようになっており、
    前記複数のデータの各々について、圧縮演算規模の決定は、畳み込み層の複数の入力チャネルのうちのマスク対象の入力チャネルと、当該畳み込み層において使用されるカーネルのカーネル量とのうちの少なくとも一つを決定することであり、
    前記圧縮演算は、非可逆の圧縮演算であり、
    前記複数のデータの各々について、前記プロセサが、ニューラルネットワークを実行することで、前記複数の入力チャネルのうちのマスク対象の入力チャネルと前記カーネル量とを表す複数の出力値を当該データの特徴に基づき出力し、
    教師データが入力された場合、前記プロセサが、複数の教師データの各々について、カーネル量と、マスク対象チャネル数と、誤差とを基に、前記ニューラルネットワークを学習する、
    ストレージシステム。
  6. 前記複数の教師データの各々について、前記ニューラルネットワークの学習は、最小化目標値=第1係数・カーネル量+第2の係数・(-1・マスク対象チャネル数)+誤差における前記最小化目標値が最小となる学習である、
    請求項に記載のストレージシステム。
  7. 記憶装置と前記記憶装置に接続されたプロセサとを備えるストレージシステムであって、
    前記プロセサが、複数のデータの各々について、
    当該データの特徴を基に、当該データの圧縮演算規模を決定し、
    決定された圧縮演算規模に従う圧縮演算を行うことで、当該データをエンコードデータに変換し、
    前記エンコードデータ又はそれの圧縮データを前記記憶装置に格納し、
    前記複数のデータの各々について、
    圧縮演算規模の決定は、圧縮演算規模が異なりそれぞれが圧縮演算を行う複数の圧縮経路から、圧縮経路を選択することであり、
    当該選択された圧縮経路が、当該データをエンコードデータに変換し、
    前記プロセサが、前記記憶装置からエンコードデータを取得し、又は、前記記憶装置から取得した圧縮データをエンコードデータに伸張し、
    前記プロセサが、前記エンコードデータから取得される複数のエンコードデータの各々について、
    当該エンコードデータの特徴を基に、当該エンコードデータの伸張演算規模を決定し、
    決定された伸張演算規模に従う伸張演算を行うことで、当該エンコードデータをデコードデータに変換し、
    前記プロセサが、前記複数のエンコードデータについて作成された複数のデコードデータを基に、前記データのデコードデータを作成し、
    前記複数のエンコードデータの各々について、
    伸張演算規模の決定は、伸張演算規模が異なりそれぞれが伸張演算を行う複数の伸張経路から、伸張経路を選択することであり、
    当該選択された伸張経路が、当該エンコードデータをデコードデータに変換する、
    ストレージシステム。
  8. 前記圧縮演算は、非可逆の圧縮演算であり、
    教師データが入力された場合、前記プロセサが、複数の教師データの各々について、
    前記複数の圧縮経路の各々について、当該教師データと、当該教師データを当該圧縮経路により圧縮することで取得されたエンコード教師データを前記複数の伸張経路に伸張させることで複数のデコード教師データを取得し、
    当該教師データと、当該教師データについて取得された前記複数のデコード教師データの各々との誤差を算出し、
    前記複数のデコード教師データの各々について算出された誤差と、複数の経路組合せの圧縮演算規模及び伸張演算規模とを基に、経路組合せの選択を学習し、
    前記複数の経路組合せの各々は、いずれかの圧縮経路といずれかの伸張経路との組合せである、
    請求項に記載のストレージシステム。
  9. 記憶装置と前記記憶装置に接続されたプロセサとを備えるストレージシステムであって、
    前記プロセサが、複数のデータの各々について、
    当該データの特徴を基に、当該データの圧縮演算規模を決定し、
    決定された圧縮演算規模に従う圧縮演算を行うことで、当該データをエンコードデータに変換し、
    前記エンコードデータ又はそれの圧縮データを前記記憶装置に格納し、
    前記複数のデータの各々について、
    圧縮演算規模の決定は、圧縮演算規模が異なりそれぞれが圧縮演算を行う複数の圧縮経路から、圧縮経路を選択することであり、
    当該選択された圧縮経路が、当該データをエンコードデータに変換し、
    前記プロセサが、前記記憶装置からエンコードデータを取得し、又は、前記記憶装置から取得した圧縮データをエンコードデータに伸張し、
    前記プロセサが、複数のエンコードデータの各々について、
    当該エンコードデータの特徴を基に、当該エンコードデータの伸張演算規模を決定し、
    決定された伸張演算規模に従う伸張演算を行うことで、当該エンコードデータをデコードデータに変換し、
    前記プロセサが、前記複数のエンコードデータについて作成された複数のデコードデータを基に、前記データのデコードデータを作成し、
    前記プロセサが、前記複数のエンコードデータの各々について、複数の入力チャネルのうちマスク対象の入力チャネル以外の入力チャネルと、所定のカーネル量のカーネルとを用いた逆畳み込み演算を行うようになっており、
    前記複数のエンコードデータの各々について、伸張演算規模の決定は、逆畳み込み層の複数の入力チャネルのうちのマスク対象の入力チャネルと、当該逆畳み込み層において使用されるカーネルのカーネル量とのうちの少なくとも一つを決定することである、
    ストレージシステム。
  10. 記憶装置と前記記憶装置に接続されたプロセサとを備えるストレージシステムであって、
    前記プロセサが、複数のデータの各々について、
    当該データの特徴を基に、当該データの圧縮演算規模を決定し、
    決定された圧縮演算規模に従う圧縮演算を行うことで、当該データをエンコードデータに変換し、
    前記エンコードデータ又はそれの圧縮データを前記記憶装置に格納し、
    前記プロセサが、前記記憶装置からエンコードデータを取得し、又は、前記記憶装置から取得した圧縮データをエンコードデータに伸張し、
    前記プロセサが、前記エンコードデータから取得される複数のエンコードデータの各々について、
    当該エンコードデータの特徴を基に、当該エンコードデータの伸張演算規模を決定し、
    決定された伸張演算規模に従う伸張演算を行うことで、当該エンコードデータをデコードデータに変換する、
    ストレージシステム。
  11. プロセサが、
    複数のデータの各々について、
    当該データの特徴を基に、当該データの圧縮演算規模を決定し、
    決定された圧縮演算規模に従う圧縮演算を行うことで、当該データをエンコードデータに変換し、
    前記複数のデータについて作成された複数のエンコードデータを基に、前記データのエンコードデータを作成し、
    前記エンコードデータ又はそれの圧縮データを記憶装置に格納
    前記複数のデータの各々について、
    圧縮演算規模の決定は、圧縮演算規模が異なりそれぞれが圧縮演算を行う複数の圧縮経路から、圧縮経路を選択することであり、
    当該選択された圧縮経路が、当該データをエンコードデータに変換し、
    前記圧縮演算は、非可逆の圧縮演算であり、
    教師データが入力された場合、前記プロセサが、複数の教師データの各々について、
    前記複数の圧縮経路の各々について、当該教師データと、当該教師データを当該圧縮経路により圧縮することで取得されたエンコード教師データの伸張後のデータであるデコード教師データを取得し、
    当該複数の教師データと、複数のデコード教師データの各々との誤差を算出し、
    前記複数のデコード教師データの各々について算出された誤差と、前記複数の圧縮経路の各々の圧縮演算規模とを基に、圧縮経路の選択を学習する、
    記憶制御方法。
  12. プロセサが、
    複数のデータの各々について、
    当該データの特徴を基に、当該データの圧縮演算規模を決定し、
    決定された圧縮演算規模に従う圧縮演算を行うことで、当該データをエンコードデータに変換し、
    前記複数のデータについて作成された複数のエンコードデータを基に、前記データのエンコードデータを作成し、
    前記エンコードデータ又はそれの圧縮データを記憶装置に格納し、
    前記プロセサが、前記複数のデータの各々について、複数の入力チャネルのうちマスク対象の入力チャネル以外の入力チャネルと、所定のカーネル量のカーネルとを用いた畳み込み演算を行うようになっており、
    前記複数のデータの各々について、圧縮演算規模の決定は、畳み込み層の複数の入力チャネルのうちのマスク対象の入力チャネルと、当該畳み込み層において使用されるカーネルのカーネル量とのうちの少なくとも一つを決定することであり、
    前記圧縮演算は、非可逆の圧縮演算であり、
    前記複数のデータの各々について、前記プロセサが、ニューラルネットワークを実行することで、前記複数の入力チャネルのうちのマスク対象の入力チャネルと前記カーネル量とを表す複数の出力値を当該データの特徴に基づき出力し、
    教師データが入力された場合、前記プロセサが、複数の教師データの各々について、カーネル量と、マスク対象チャネル数と、誤差とを基に、前記ニューラルネットワークを学習する、
    記憶制御方法。
  13. プロセサが、複数のデータの各々について、
    当該データの特徴を基に、当該データの圧縮演算規模を決定し、
    決定された圧縮演算規模に従う圧縮演算を行うことで、当該データをエンコードデータに変換し、
    前記エンコードデータ又はそれの圧縮データを記憶装置に格納し、
    前記複数のデータの各々について、
    圧縮演算規模の決定は、圧縮演算規模が異なりそれぞれが圧縮演算を行う複数の圧縮経路から、圧縮経路を選択することであり、
    当該選択された圧縮経路が、当該データをエンコードデータに変換し、
    前記プロセサが、前記記憶装置からエンコードデータを取得し、又は、前記記憶装置から取得した圧縮データをエンコードデータに伸張し、
    前記プロセサが、前記エンコードデータから取得される複数のエンコードデータの各々について、
    当該エンコードデータの特徴を基に、当該エンコードデータの伸張演算規模を決定し、
    決定された伸張演算規模に従う伸張演算を行うことで、当該エンコードデータをデコードデータに変換し、
    前記プロセサが、前記複数のエンコードデータについて作成された複数のデコードデータを基に、前記データのデコードデータを作成し、
    前記複数のエンコードデータの各々について、
    伸張演算規模の決定は、伸張演算規模が異なりそれぞれが伸張演算を行う複数の伸張経路から、伸張経路を選択することであり、
    当該選択された伸張経路が、当該エンコードデータをデコードデータに変換する、
    記憶制御方法。
  14. プロセサが、複数のデータの各々について、
    当該データの特徴を基に、当該データの圧縮演算規模を決定し、
    決定された圧縮演算規模に従う圧縮演算を行うことで、当該データをエンコードデータに変換し、
    前記エンコードデータ又はそれの圧縮データを記憶装置に格納し、
    前記複数のデータの各々について、
    圧縮演算規模の決定は、圧縮演算規模が異なりそれぞれが圧縮演算を行う複数の圧縮経路から、圧縮経路を選択することであり、
    当該選択された圧縮経路が、当該データをエンコードデータに変換し、
    前記プロセサが、前記記憶装置からエンコードデータを取得し、又は、前記記憶装置から取得した圧縮データをエンコードデータに伸張し、
    前記プロセサが、複数のエンコードデータの各々について、
    当該エンコードデータの特徴を基に、当該エンコードデータの伸張演算規模を決定し、
    決定された伸張演算規模に従う伸張演算を行うことで、当該エンコードデータをデコードデータに変換し、
    前記プロセサが、前記複数のエンコードデータについて作成された複数のデコードデータを基に、前記データのデコードデータを作成し、
    前記プロセサが、前記複数のエンコードデータの各々について、複数の入力チャネルのうちマスク対象の入力チャネル以外の入力チャネルと、所定のカーネル量のカーネルとを用いた逆畳み込み演算を行うようになっており、
    前記複数のエンコードデータの各々について、伸張演算規模の決定は、逆畳み込み層の複数の入力チャネルのうちのマスク対象の入力チャネルと、当該逆畳み込み層において使用されるカーネルのカーネル量とのうちの少なくとも一つを決定することである、
    ストレージシステム。
  15. プロセサが、複数のデータの各々について、
    当該データの特徴を基に、当該データの圧縮演算規模を決定し、
    決定された圧縮演算規模に従う圧縮演算を行うことで、当該データをエンコードデータに変換し、
    前記エンコードデータ又はそれの圧縮データを記憶装置に格納し、
    前記プロセサが、前記記憶装置からエンコードデータを取得し、又は、前記記憶装置から取得した圧縮データをエンコードデータに伸張し、
    前記プロセサが、前記エンコードデータから取得される複数のエンコードデータの各々について、
    当該エンコードデータの特徴を基に、当該エンコードデータの伸張演算規模を決定し、
    決定された伸張演算規模に従う伸張演算を行うことで、当該エンコードデータをデコードデータに変換する、
    記憶制御方法。
JP2019217442A 2019-11-29 2019-11-29 エンコーダを有するストレージシステム Active JP7355622B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019217442A JP7355622B2 (ja) 2019-11-29 2019-11-29 エンコーダを有するストレージシステム
US17/105,059 US11934353B2 (en) 2019-11-29 2020-11-25 Storage system including encoder

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019217442A JP7355622B2 (ja) 2019-11-29 2019-11-29 エンコーダを有するストレージシステム

Publications (3)

Publication Number Publication Date
JP2021087198A JP2021087198A (ja) 2021-06-03
JP2021087198A5 JP2021087198A5 (ja) 2022-07-26
JP7355622B2 true JP7355622B2 (ja) 2023-10-03

Family

ID=76088604

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019217442A Active JP7355622B2 (ja) 2019-11-29 2019-11-29 エンコーダを有するストレージシステム

Country Status (2)

Country Link
US (1) US11934353B2 (ja)
JP (1) JP7355622B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018189613A1 (ja) 2017-04-11 2018-10-18 株式会社半導体エネルギー研究所 半導体装置、撮像装置及び表示システム
US20190251418A1 (en) 2018-02-09 2019-08-15 Preferred Networks, Inc. Autoencoder, data processing system, data processing method and non-transitory computer readable medium
JP2019160303A (ja) 2018-03-09 2019-09-19 株式会社リコー ライトフィールドカメラによりキャプチャされる対象物の分類のための深層学習アーキテクチャ

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2646575A1 (fr) * 1989-04-26 1990-11-02 Labo Electronique Physique Procede et structure pour la compression de donnees
JPH11313048A (ja) * 1998-04-24 1999-11-09 Kokusai Electric Co Ltd マルチメディア通信方法及び通信装置
US6624761B2 (en) * 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
JP4757038B2 (ja) 2006-01-25 2011-08-24 株式会社日立製作所 ストレージシステム及び記憶制御装置
US20070233477A1 (en) * 2006-03-30 2007-10-04 Infima Ltd. Lossless Data Compression Using Adaptive Context Modeling
WO2016186563A1 (en) * 2015-05-21 2016-11-24 Zeropoint Technologies Ab Methods, devices and systems for hybrid data compression and decompression
US10276134B2 (en) * 2017-03-22 2019-04-30 International Business Machines Corporation Decision-based data compression by means of deep learning technologies
US10886943B2 (en) * 2019-03-18 2021-01-05 Samsung Electronics Co., Ltd Method and apparatus for variable rate compression with a conditional autoencoder
CN111818346B (zh) * 2019-04-11 2023-04-18 富士通株式会社 图像编码方法和装置、图像解码方法和装置
US20230237770A1 (en) * 2020-06-05 2023-07-27 Nec Corporation Information processing apparatus, information processing method, and computer readable medium

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018189613A1 (ja) 2017-04-11 2018-10-18 株式会社半導体エネルギー研究所 半導体装置、撮像装置及び表示システム
US20190251418A1 (en) 2018-02-09 2019-08-15 Preferred Networks, Inc. Autoencoder, data processing system, data processing method and non-transitory computer readable medium
JP2019160303A (ja) 2018-03-09 2019-09-19 株式会社リコー ライトフィールドカメラによりキャプチャされる対象物の分類のための深層学習アーキテクチャ

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
福島 悠太 他,センサネットワークにおける分散型深層学習の設計と評価,情報処理学会論文誌 [online] ,日本,情報処理学会,2019年01月15日,Vol.60, No.1 ,pp.2-15

Also Published As

Publication number Publication date
US11934353B2 (en) 2024-03-19
JP2021087198A (ja) 2021-06-03
US20210165764A1 (en) 2021-06-03

Similar Documents

Publication Publication Date Title
US11184625B2 (en) Method and system for optimized delta encoding
Johnston et al. Computationally efficient neural image compression
US11221990B2 (en) Ultra-high compression of images based on deep learning
KR20210074360A (ko) 이미지 처리 방법, 디바이스 및 장치, 그리고 저장 매체
CN107665364A (zh) 神经网络方法和设备
WO2021129445A1 (zh) 数据压缩方法及计算设备
CN113239981B (zh) 局部特征耦合全局表征的图像分类方法
US9123091B2 (en) Basis vector spectral image compression
WO2021012162A1 (zh) 存储系统数据压缩的方法、装置、设备及可读存储介质
WO2022022176A1 (zh) 一种图像处理方法以及相关设备
JP7355622B2 (ja) エンコーダを有するストレージシステム
CN112771546A (zh) 运算加速器和压缩方法
KR20210053791A (ko) 뉴럴 네트워크의 데이터를 처리하는 방법 및 장치
JP7233875B2 (ja) 作成方法、コンピュータ及びプログラム
JP2021087198A5 (ja)
EP4064133A2 (en) Method for optimising a machine learning model for image processing
GB2571818A (en) Selecting encoding options
TW202236216A (zh) 基於點雲屬性預測的解碼方法、編碼方法、解碼器及編碼器、電子設備以及電腦可讀存儲介質
JP2022187683A (ja) データ圧縮伸長システム、及びその方法
AU2021106056A4 (en) The system and apparatus for image resolution by using deep learning technique.
WO2023025135A1 (zh) 点云属性编码方法、装置、解码方法以及装置
US10075716B2 (en) Parallel encoding of weight refinement in ASTC image processing encoders
KR102420763B1 (ko) 뉴럴 네트워크 시스템 및 뉴럴 네트워크의 필터 데이터의 처리 방법
US20240013030A1 (en) Autoencoder training system and method
US20220269652A1 (en) Computation apparatus and compression method

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220715

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220715

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230606

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230731

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230921

R150 Certificate of patent or registration of utility model

Ref document number: 7355622

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150