IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧

特開2022-187683データ圧縮伸長システム、及びその方法
<>
  • 特開-データ圧縮伸長システム、及びその方法 図1
  • 特開-データ圧縮伸長システム、及びその方法 図2
  • 特開-データ圧縮伸長システム、及びその方法 図3
  • 特開-データ圧縮伸長システム、及びその方法 図4
  • 特開-データ圧縮伸長システム、及びその方法 図5
  • 特開-データ圧縮伸長システム、及びその方法 図6
  • 特開-データ圧縮伸長システム、及びその方法 図7
  • 特開-データ圧縮伸長システム、及びその方法 図8
  • 特開-データ圧縮伸長システム、及びその方法 図9
  • 特開-データ圧縮伸長システム、及びその方法 図10
  • 特開-データ圧縮伸長システム、及びその方法 図11
  • 特開-データ圧縮伸長システム、及びその方法 図12
  • 特開-データ圧縮伸長システム、及びその方法 図13
  • 特開-データ圧縮伸長システム、及びその方法 図14
  • 特開-データ圧縮伸長システム、及びその方法 図15
  • 特開-データ圧縮伸長システム、及びその方法 図16
  • 特開-データ圧縮伸長システム、及びその方法 図17
  • 特開-データ圧縮伸長システム、及びその方法 図18
  • 特開-データ圧縮伸長システム、及びその方法 図19
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022187683
(43)【公開日】2022-12-20
(54)【発明の名称】データ圧縮伸長システム、及びその方法
(51)【国際特許分類】
   H03M 7/30 20060101AFI20221213BHJP
   H03M 7/40 20060101ALI20221213BHJP
   H04N 1/64 20060101ALI20221213BHJP
   G06T 9/00 20060101ALI20221213BHJP
   H04N 19/436 20140101ALI20221213BHJP
【FI】
H03M7/30 Z
H03M7/40
H04N1/64
G06T9/00 200
H04N19/436
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2021095805
(22)【出願日】2021-06-08
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】特許業務法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】圷 弘明
(72)【発明者】
【氏名】成子 貴洋
(72)【発明者】
【氏名】鈴木 彬史
【テーマコード(参考)】
5B057
5C159
5C178
5J064
【Fターム(参考)】
5B057CA01
5B057CA08
5B057CA12
5B057CB01
5B057CB08
5B057CB12
5B057CC02
5B057CG03
5B057DA17
5B057DB02
5B057DB06
5B057DB09
5B057DC36
5C159KK13
5C159MD02
5C159ME01
5C159UA02
5C159UA05
5C178AC10
5C178BC21
5C178CC55
5C178DC79
5C178EC51
5J064BA09
5J064BC02
5J064BD03
(57)【要約】
【課題】高い圧縮率と高速な処理速度を両立する。
【解決手段】複数処理を並列実行する並列処理デバイスを有するデータ圧縮伸長システムにおいて、並列処理デバイスは、元データを所定単位で複数のデータへ分割する。そして、並列処理デバイスは、複数のデータに対して所定モデルを用いた符号化処理を並列実行して複数の符号化データを生成する。そして、並列処理デバイスは、複数の符号化データから元データの圧縮データを作成する。
【選択図】図1
【特許請求の範囲】
【請求項1】
複数処理を並列実行する並列処理デバイスを有するデータ圧縮伸長システムであって、
前記並列処理デバイスは、
元データを所定単位で複数のデータへ分割し、
前記複数のデータに対して所定モデルを用いた符号化処理を並列実行して複数の符号化データを生成し、
前記複数の符号化データから前記元データの圧縮データを作成する
ことを特徴とするデータ圧縮伸長システム。
【請求項2】
請求項1に記載のデータ圧縮伸長システムであって、
前記複数の符号化データと前記圧縮データとの対応関係の情報を該圧縮データと共に記録する
ことを特徴とするデータ圧縮伸長システム。
【請求項3】
請求項1に記載のデータ圧縮伸長システムであって、
前記並列処理デバイスは、
前記元データに対してフィルタ処理を実行して特徴量マップを作成する第1のエンコーダフィルタと、
前記第1のエンコーダフィルタによって作成された前記特徴量マップを前記所定単位で分割した複数の特徴量マップを作成する分割器と、
前記分割器によって作成された前記分割した複数の特徴量マップに対してフィルタ処理を実行する第2のエンコーダフィルタと、
前記分割した複数の特徴量マップのエントロピーを予測するエントロピー見積器と、
前記エントロピーの予測結果に基づいて前記分割した複数の特徴量マップに対して前記所定モデルを用いたエントロピー符号化処理を並列実行して前記複数の符号化データを生成し、該複数の符号化データから前記圧縮データを作成するエントロピー符号化器と、
を有する圧縮器をニューラルネットワーク上で構成した
ことを特徴とするデータ圧縮伸長システム。
【請求項4】
請求項1に記載のデータ圧縮伸長システムであって、
前記並列処理デバイスは、
前記圧縮データを前記複数の符号化データへ展開し、
展開後の前記複数の符号化データに対して前記所定モデルを用いた復号処理を並列実行して複数の復号データを生成し、
前記複数の復号データを結合して前記圧縮データの伸長データを作成する
ことを特徴とするデータ圧縮伸長システム。
【請求項5】
請求項4に記載のデータ圧縮伸長システムであって、
前記圧縮データと共に記録された前記複数の符号化データと前記圧縮データとの対応関係の情報に基づいて前記圧縮データを前記複数の符号化データへ展開する
ことを特徴とするデータ圧縮伸長システム。
【請求項6】
請求項3に記載のデータ圧縮伸長システムであって、
前記並列処理デバイスは、
前記エントロピー見積器と、
前記圧縮データを前記複数の符号化データへ展開し、前記エントロピーの予測結果に基づいて前記複数の符号化データに対して前記所定モデルを用いたエントロピー復号処理を並列実行して前記複数の復号データを生成するエントロピー復号器と、
前記複数の復号データに対してフィルタ処理を実行する第2のデコーダフィルタと、
前記第2のデコーダフィルタによってフィルタ処理された前記複数の復号データを結合して特徴量マップを作成する結合器と、
前記結合器によって作成された前記特徴量マップに対してフィルタ処理を実行して前記圧縮データの伸長データを作成する第1のデコーダフィルタと、
を有する伸長器をニューラルネットワーク上で構成した
ことを特徴とするデータ圧縮伸長システム。
【請求項7】
請求項3に記載のデータ圧縮伸長システムであって、
前記エントロピー符号化器は、
ANS(Asymmetric Numeral Systems)における複数の所定の判定処理をテンソルの要素の積和演算に置き換えることで並列実行可能とするTensor ANSを用いて構成された
ことを特徴とするデータ圧縮伸長システム。
【請求項8】
請求項6に記載のデータ圧縮伸長システムであって、
前記エントロピー復号器は、
前記分割した複数の特徴量マップと、前記圧縮データと共に記録された前記複数の符号化データと前記圧縮データとの対応関係の情報からテンソルを構成し、該テンソルに基づいて前記複数の符号化データに対して前記エントロピー復号処理を並列実行する
ことを特徴とするデータ圧縮伸長システム。
【請求項9】
請求項3に記載のデータ圧縮伸長システムであって、
前記エントロピー見積器は、
前記分割した複数の特徴量マップにおける推定対象のピクセルの並び方向に対する垂直方向のピクセルのみに基づいて該推定対象のピクセルのエントロピーを予測することで、各推定対象のピクセルのエントロピーの予測処理を並列実行する
ことを特徴とするデータ圧縮伸長システム。
【請求項10】
請求項6に記載のデータ圧縮伸長システムであって、
前記分割した複数の特徴量マップ、及び、前記エントロピー見積器によって予測された該分割した複数の特徴量マップのエントロピーを表す各予測確率の順序をランダムに変更するシャッフラーと、
前記シャッフラーによって変更された前記分割した複数の特徴量マップの順序を変更前へ戻すアンシャッフラーと、を有し、
前記エントロピー見積器は、前記分割した複数の特徴量マップのエントロピーを超事前分布によって予測し、
前記エントロピー符号化器は、前記シャッフラーによって順序が変更された前記分割した複数の特徴量マップ及び前記予測確率に基づいて前記複数の符号化データを作成し、
前記エントロピー復号器は、前記シャッフラーによって順序が変更された前記予測確率に基づいて前記複数の復号データを生成し、
前記アンシャッフラーは、前記複数の復号データの順序を変更前に戻す
ことを特徴とするデータ圧縮伸長システム。
【請求項11】
請求項4に記載のデータ圧縮伸長システムであって、
前記並列処理デバイスは、
前記元データが複数のチャネルを含む場合に、該複数のチャネルを分離し、前記符号化処理及び前記復号処理を分離した各チャネルで独立して実行し、あるチャネルの前記符号化処理又は前記復号処理による情報を他のチャネルの前記符号化処理又は前記復号処理における補助情報として用いる
ことを特徴とするデータ圧縮伸長システム。
【請求項12】
請求項11に記載のデータ圧縮伸長システムであって、
前記並列処理デバイスは、
前記複数のチャネルのデータサイズが異なる場合に、前記元データうちのあるデータサイズが所定より小さいチャネルの前記符号化処理及び前記復号処理を他のチャネルよりも先行して実行し、該符号化処理又は該復号処理による情報を、該他のチャネルの前記符号化処理又は前記復号処理における補助情報として用いる
ことを特徴とするデータ圧縮伸長システム。
【請求項13】
請求項3に記載のデータ圧縮伸長システムであって、
前記エントロピー見積器は、4次元のニューラルネットワークの前記エントロピーを予測する際に、前記4次元のうちのある2次元について第1の2次元のニューラルネットワークのカーネルを用い、前記4次元のうちの残りの2次元について第2の2次元のニューラルネットワークのカーネルを用いる
ことを特徴とするデータ圧縮伸長システム。
【請求項14】
複数処理を並列実行する並列処理デバイスを有するデータ圧縮伸長システムが実行するデータ圧縮伸長方法であって、
前記並列処理デバイスが、
元データを所定単位で複数のデータへ分割し、
前記複数のデータに対して所定モデルを用いた符号化処理を並列実行して複数の符号化データを生成し、
前記複数の符号化データから前記元データの圧縮データを作成する
各処理を含むことを特徴とするデータ圧縮伸長方法。
【請求項15】
請求項14に記載のデータ圧縮伸長方法であって、
前記並列処理デバイスが、
前記圧縮データを前記複数の符号化データへ展開し、
展開後の前記複数の符号化データに対して前記所定モデルを用いた復号処理を並列実行して複数の復号データを生成し、
前記複数の復号データを結合して前記圧縮データの伸長データを作成する
各処理をさらに含むことを特徴とするデータ圧縮伸長方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、データの圧縮伸長システム、例えば、圧縮伸長処理に関する。
【背景技術】
【0002】
データの圧縮伸長を行うストレージシステムとして、例えば特許文献1に開示の技術がある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2019-95913号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
産業界の生産性向上に向け、IoT(Internet of things)に対する期待が高まっており、IoTデータ(例えば、種々のデバイスから取得されるデータ)は増加し続けている。例えば、IoT機器の生成する多次元のデータ(例えば画像、動画など)は膨大であり、膨大な多次元データを高効率に転送及び蓄積することが求められると考えられ、データ圧縮技術はその解決に向けたアプローチの一つである。
【0005】
データ圧縮技術において、ニューラルネットなどの高度なモデルを利用することにより、高い圧縮率を実現することが期待できるが、圧縮又は伸長の処理速度が低下する懸念があった。高い圧縮率と高速な処理速度の両立が課題である。
【0006】
以上のような課題は、IoT以外の分野についてもあり得る。
【課題を解決するための手段】
【0007】
並列処理デバイスにおいて、データ圧縮伸長に関し、ニューラルネットワークなどの高度なモデルを用いて圧縮伸長処理を実行し、符号化処理前にデータを所定の単位で分割し、符号化処理を並列実行して処理する。
【発明の効果】
【0008】
高い圧縮率と高速な処理速度を両立することができる。
【図面の簡単な説明】
【0009】
図1】実施形態1に係るデータ圧縮伸長システムの構成例を示す図。
図2】実施形態1に係る圧縮器及び伸長器の構成例を示す図。
図3】圧縮器によって圧縮された圧縮データのデータ構造例を示す図。
図4】FMタイリングを説明するための図。
図5】実施形態1に係る圧縮処理例を示すフローチャート。
図6】量子化処理(推論時)の詳細例を示すフローチャート。
図7】量子化処理(学習時)例を示すフローチャート。
図8】エントロピー符号化処理の詳細を示すフローチャート。
図9】エントロピーエスティメータ処理の一例の概要を示す図。
図10】CDF作成処理のアルゴリズム例を示す図。
図11】エントロピーエンコーダステップ処理のアルゴリズム例を示す図。
図12】圧縮データ作成処理の一例の概要を示す図。
図13】実施形態1に係る伸長処理例を示すフローチャート。
図14】エントロピー復号処理の詳細例を示すフローチャート。
図15】エントロピーデコーダステップ処理のアルゴリズム例を示す図。
図16】実施形態2に係るエントロピーエスティメータ並びに関連する圧縮器及び伸長器の一部の構成例を示す図。
図17】実施形態3に係るデータ圧縮伸長システムの構成例を示す図。
図18】実施形態3に係る圧縮処理例を示す図。
図19】実施形態3に係るエントロピーエスティメータの処理例を説明するための図。
【発明を実施するための形態】
【0010】
以下の説明では、「インターフェース装置」は、一つ以上の通信インターフェースデバイスでよい。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよい。または二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
【0011】
また、以下の説明では、「メモリ」は、一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
【0012】
また、以下の説明では、「永続記憶装置」は、一つ以上の永続記憶デバイスである。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)であり、具体的には、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)である。
【0013】
また、以下の説明では、「記憶装置」は、永続記憶装置のような物理的な記憶装置でもよいし、物理的な記憶装置に関連付けられた論理的な記憶装置でもよい。
【0014】
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスである。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。
【0015】
また、以下の説明では、「並列処理デバイス」は、並列処理が可能なデバイスの一例である。並列処理デバイスは、複数の物理的な又は仮想的なコアを有するCPUにより実現されてもよいが、典型的には、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)又はGPU(Graphics Processing Unit)のようなハードウェア回路でよい。
【0016】
また、以下、「xxxテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
【0017】
また、以下、圧縮器又は伸長器の構成要素としての機能(具体的には、例えば、エンコーダフィルタ、FM(Feature Map)タイラ、FMアンタイラ、エントロピーエンコーダ、エントロピーデコーダ、クオンタイザ及びエントロピーエスティメータ)を説明する。それらの機能は、本実施形態では、並列処理デバイスによって実現されるが、一部の機能が、コンピュータプログラムがプロセッサによって実行されることで実現されてもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
【0018】
また、以下の説明では、「データセット」は、アプリケーションプログラムのようなプログラムから見た1つの論理的な電子データの塊であり、例えば、レコード、ファイル、キーバリューペア及びタプルのうちのいずれでもよい。
【0019】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通部分を使用し、同種の要素を区別する場合は、参照符号を使用することがある。例えば、計算機を区別しない場合には、「計算機101」と言い、計算機101を区別する場合には、「計算機101C」、「計算機101D」のように言うことがある。また、一つ又は複数の計算機101を含んだシステムを「計算機システム」と言うことができる。「計算機」は、オンプレミス型のような物理的な計算機でもよい。または「計算機」は、クラウド型の計算機(例えば、複数種類の計算資源(例えば、プロセッサやメモリ)を有するシステム上に実現される装置)でもよい。または「計算機」は、モバイル型の装置(例えば、スマートフォンやラップトップ型のパーソナルコンピュータ)でもよい。
【0020】
以下、本発明の幾つかの実施形態を説明する。なお、以下のいずれの実施形態においても、非可逆圧縮の構成を取ってもよいし、例えば、フィルタやクオンタイザを用いない、または可逆的なフィルタを用いることなどにより、可逆圧縮の構成を取ってもよい。
【0021】
以下の実施形態では、本発明の計算機をストレージ装置に適用した場合を示すが、これに限らず、永続記憶装置を省略して通信装置等のデータを送受信する装置に適用することも可能である。
【0022】
[実施形態1]
図1は、実施形態1に係るデータ圧縮伸長システムSの構成例を示す図である。
【0023】
データ圧縮伸長システムSは、計算機101C及び101Dを含んで構成される。計算機101Cと計算機101Dは、ネットワーク150(例えば、インターネット、WAN(Wide Area Network)、又はLAN(Local Area Network))を介して通信する。計算機101は、例えばストレージ装置である。計算機101Cは圧縮器70を有し、計算機101Dは伸長器71を有する。一つの計算機101が圧縮器70及び伸長器71の両方を有し、データの圧縮及び伸長を一つの計算機101内で完結させてもよい。
【0024】
計算機101C及び101Dのハードウェア構成は同じでも異なっていてもよい。本実施形態では、説明を簡単にするため、計算機101C及び101Dのハードウェア構成は同じである。計算機101のハードウェア構成を、計算機101Cを例に取り説明する。
【0025】
計算機101Cは、インターフェースデバイス5C1及び5C2(インターフェース装置の一例)、永続記憶装置54C、メモリ52C、プロセッサ53C、並列処理デバイス61C、及び、それらを接続する内部バス10Cを備える。インターフェースデバイス5C1及び5C2、永続記憶装置54C、メモリ52C、並列処理デバイス61Cは、例えば内部バス10Cを介して、プロセッサ53Cに通信可能に接続される。
【0026】
インターフェースデバイス5C1は、ネットワーク150に接続される。インターフェースデバイス5C2は、入力装置40に接続される。入力装置40は、計算機101Cにデータを入力する。入力装置40は、センサデバイス(例えば、光学的カメラや重力センサ)でもよいし、可搬型の記憶媒体でもよいし、他の計算機でもよい。
【0027】
並列処理デバイス61Cには、入力装置40からインターフェースデバイス5C2経由で入力された圧縮対象のデータが、プロセッサ53C経由又は非経由で、入力される。並列処理デバイス61Cは、メモリ63Cと複数のコア62Cとを有する。並列処理デバイス61Cが圧縮器70として実現される。圧縮器70(並列処理デバイス61C)は、圧縮対象のデータを並列に圧縮する。これにより、圧縮対象のデータを高速に圧縮することができる。圧縮されたデータが、並列処理デバイス61Cから出力され、プロセッサ53C経由又は非経由で永続記憶装置54Cに格納される。
【0028】
メモリ52Cには、プロセッサ53Cにより実行されるコンピュータプログラム、及び、プロセッサ53Cにより入出力されるデータが記憶される。
【0029】
プロセッサ53Cは、メモリ52Cからプログラムを読み出し実行することで計算機101Cが行う処理の少なくとも一部を実行する。例えば、プロセッサ53Cは、永続記憶装置54Cに格納されている圧縮データ(圧縮されたデータ)を、永続記憶装置54Cから読み出し、当該圧縮データをインターフェースデバイス5C1経由で計算機101Dに送信する。
【0030】
計算機101Dと計算機101Cの相違点は、例えば次の通りである。計算機101Dには、インターフェースデバイス5D2にユーザ端末80(例えば、パーソナルコンピュータやスマートフォン)が接続される。計算機101Dでは、圧縮データが、インターフェースデバイス5D1経由で受信され、永続記憶装置54D及び/又はメモリ52Dに格納された上で(或いは、永続記憶装置54Dに格納されること無く)、並列処理デバイス61Dに入力される。並列処理デバイス61Dが伸長器71として実現される。伸長器71(並列処理デバイス61D)は、圧縮データを並列に伸長する。これにより、圧縮データを高速に伸長することができる。伸長されたデータが、インターフェースデバイス5D2経由でユーザ端末80に送信される。
【0031】
圧縮対象のデータの種類は問わないでよい。本実施形態では、圧縮対象のデータは、画像(静止画)を表す画像データである。画像データは、N次元(Nは1以上の整数)のテンソルデータの一例である。圧縮対象の画像データが圧縮器70に入力される。圧縮器70に入力された画像データを「元画像データ」と言うことがある。圧縮器70が、元画像データを非可逆圧縮し、伸長器71が、非可逆圧縮された画像データを伸長する。
【0032】
なお例えば、計算機101C及び101Dが通信装置である場合には、永続記憶装置54、54Dを省略可能である。この場合、入力装置40を介して計算機101Cへ入力された元画像データは、圧縮器70での圧縮後に計算機101Dへ送信される。計算機101Dは、計算機101Cから受信した圧縮データを伸長器71で伸長後にユーザ端末80へ出力する。
【0033】
図2は、実施形態1に係る圧縮器70及び伸長器71の構成例を示す図である。
【0034】
圧縮器70は、第1エンコーダフィルタ201、FM(Feature Map)タイラ202、第2エンコーダフィルタ203、クオンタイザ204、エントロピーエンコーダ205、及びエントロピーエスティメータ210を備える。これらの構成要素は、並列処理デバイス61C上に実現される。エントロピーエスティメータ210は、異なるエントロピーエスティメータであっても、同一の分布の種類、mean、及びscaleのパラメータを与えることで同一のモデルを構成し、同一シンボルに対して同一の予測確率を出力できる。
【0035】
伸長器71は、第1デコーダフィルタ211、FMアンタイラ212、第2デコーダフィルタ213、エントロピーデコーダ215、及びエントロピーエスティメータ210を備える。これらの構成要素は、並列処理デバイス61D上に実現される。
【0036】
並列処理デバイス61では、メモリ63に記憶されたデータが分割され、複数のコア62によってテンソル演算が実行される。これにより、圧縮処理(及び伸長処理)が高速化する。
【0037】
第1エンコーダフィルタ201、第2エンコーダフィルタ203、エントロピーエンコーダ205、エントロピーエスティメータ210、第1デコーダフィルタ211、第2デコーダフィルタ213、及びエントロピーデコーダ215の各々は、本実施形態では、CNN(畳み込みニューラルネットワーク)を含んで構成される。具体的には、例えば、Residual Blockを含んだ多層のネットワークより構成する。例えば、第1エンコーダフィルタ201や第2エンコーダフィルタ203は、縦横方向に縮小する方向のネットワークとし、第1デコーダフィルタ211、第2デコーダフィルタ213は、縦横方向に拡大する方向のネットワークとしてもよい。
【0038】
第1エンコーダフィルタ201、第2エンコーダフィルタ203、エントロピーエンコーダ205、エントロピーエスティメータ210、第1デコーダフィルタ211、第2デコーダフィルタ213、及びエントロピーデコーダ215エントロピーの少なくとも一つは、単純なCNN以外の機械学習モデル(典型的には深層学習ベースのモデル)、例えば、GMM(Gaussian Mixture Models)、HMM(Hidden Markov Model)、SCFG(Stochastic Context-Free Grammar)、GAN(Generative Adversarial Nets)、VAE(Variational Auto Encoder)、Flowなどの可逆的な生成モデル、又は遺伝的プログラミングでもよい。また、モデルの情報量削減のためにMimic Model等のモデル圧縮が適用されてもよい。また、DCT(Discrete Cosine Transform)やWavelet変換など、圧縮処理で一般的に用いられる処理を用いてもよい。さらには、Optical Flowなどによる予測処理を用いてもよい。
【0039】
図3は、圧縮器70によって圧縮された圧縮データ300のデータ構造例を示す図である。図3に示す各値は一例である。
【0040】
圧縮器70へ入力される圧縮前の画像データ及び伸長器71から出力される伸長後の画像データ、第1エンコーダフィルタ201、第2エンコーダフィルタ203、エントロピーエスティメータ210、第1デコーダフィルタ211、第2デコーダフィルタ213が入出力するデータは、本実施形態では、四次元のテンソルデータとして一般化される。テンソルデータの各次元は、バッチ、チャネル数、高さ(縦幅)、および幅(横幅)で構成される。
【0041】
「元画像の高さH」は、元画像の高さ(縦幅)を意味する。「元画像の幅W」は、元画像の幅(横幅)を意味する。「FMのバッチ数B」は、第2エンコーダフィルタ203が出力しその後クオンタイザ204によって処理された量子化後の特徴マップ(FM(Feature Map))の並列数を意味し、自然数である。B=1は、並列なしを意味する。「FMのチャネル数C」は、量子化後の特徴マップのチャネルの数を意味する。ここで、圧縮器70へ入力される圧縮前の画像データ及び伸長器71から出力される伸長後の画像データに関しては、例えば、RGB画像の場合、バッチ数1、チャネル数3(Cと表記)、高さH、及び幅Wである。
【0042】
圧縮器70は、元画像データを符号化して、図3に示すような「元画像の高さ(H)」「元画像の幅(W)」「FMのバッチ数(B)」「FMのチャネル数(C)」「分割縦数(Dh)」「分割横数(Dw)」「分割高さ(Th)」「分割幅(Tw)」のコンフィグ情報と、「マップ情報」と、「符号化データ」と、「元画像の付帯情報」とが対応付けて記録された圧縮データ300を生成する。
【0043】
このうち「元画像の高さ(H)」、「元画像の幅(W)」、及び「元画像の付帯情報」は、元画像データから引き継がれる情報である。また「FMのバッチ数(B)」、「FMのチャネル数(C)」、「分割縦数(Dh)」、「分割横数(Dw)」、「分割高さ(Th)」、及び「分割幅(Tw)」は、FMタイラ202によって付与される情報である。
【0044】
「マップ情報」は、「符号化データ」のストリーム数(R個=B×C)だけ存在し、圧縮データ内での「符号化データ」の各ストリームの位置及びデータ長を表す情報(N次のベクトル)である。「符号化データ」は、R個のエントロピー符号化データの各ストリームの未使用部分を除いて結合した長さMのバイナリデータである。
【0045】
本実施形態によれば、圧縮器70のフィルタが第1エンコーダフィルタ201(前段のエンコーダフィルタ)と第2エンコーダフィルタ203(後段のエンコーダフィルタ)とに分かれており、第1エンコーダフィルタ201及び第2エンコーダフィルタ203の間にFMタイラ202が存在する。
【0046】
図4を参照しつつ、FMタイラ202によって実行されるFMタイリングについて説明する。図4は、FMタイリングを説明するための図である。
【0047】
第1エンコーダフィルタ201に、四次元テンソルの元画像データが入力される。第1エンコーダフィルタ201は、チャネル数=C個の第1エンコーダフィルタ処理前画像をメモリ63Cに用意する。「C個の第1エンコーダフィルタ処理前画像」は、元画像データが表すC個のチャネル画像(C個の元画像)でもよい。または「C個の第1エンコーダフィルタ処理前画像」は、図4の(a)に示すように、元画像データのC個のチャネル画像にそれぞれパディング処理が施された結果としてのC個の画像(それぞれが所定の高さと幅を持ったC個の画像)でもよい。パディング処理では、例えば、分割高さTh、分割幅Tw、分割縦数Dh、分割横数Dw(すなわちFMのバッチ数B=Dh×Dw)の場合に、元画像のサイズが分割高さTh×分割幅Twの倍数となるように、元画像に対してデータのパディングが行われる。以降パディング後の画像のサイズを、縦をH1、横をW1とする。
【0048】
図4の(b)では、第1エンコーダフィルタ201は、C個の第1エンコーダフィルタ処理前画像を表す画像データに対して第1エンコーダフィルタ処理を行う。具体的には第1エンコーダフィルタ201は、C個の第1エンコーダフィルタ処理前画像を表す画像データを入力とし、当該画像データの次元及びバッチ数を変えずに、図4の(c)に示すC個の第1エンコーダフィルタ処理後画像を表す特徴量マップ(第1FM)を出力する。つまり、C個の第1エンコーダフィルタ処理前画像を表す画像データは、第1エンコーダフィルタ201のCNNによりC個の第1エンコーダフィルタ処理後テンソルを表すFMに変換される。典型的には、Cは、Cより大きく、第1FMの高さH及び幅Wは、第1エンコーダフィルタ処理前画像の高さH及び幅Wより小さい。例えば図4では、第1エンコーダフィルタ処理前画像の次元が1×C×H×Wであり第1FMの次元は、1×C×(H/2)×(W/2)である。
【0049】
第1FMがFMタイラ202に入力される。FMタイラ202は、入力された画像データの次元を変えずに、当該画像データが表すC個の第1エンコーダフィルタ処理後画像の各々を、分割縦数Dh及び分割横数Dw(すなわちFMのバッチ数B=Dh×Dw)に従って、バッチ方向に分割する。つまり、C個の第1エンコーダフィルタ処理後テンソルの各々が、B個の画像にタイル状に分割される(例えばBは2以上の整数)。従って、FMタイラ202から出力されるFM(タイル後FM)は、図4の(d)に示すように、次元はB×C×(Th/2)×(Tw/2)となる。
【0050】
図4の(e)では、第2エンコーダフィルタ203は、タイル後FMの第2エンコーダフィルタ処理を行う。具体的には第2エンコーダフィルタ203は、FMタイラ202から出力されたタイル後FMを入力とし、当該データが表すC個のテンソルのセットに対し、バッチ数B個の第2エンコーダフィルタ処理を複数個のコア62Cにより並列に行う。第2エンコーダフィルタ処理の結果としてのデータ(分割した複数の特徴量マップ)が、第2エンコーダフィルタ203から出力される。以降、クオンタイザ204、エントロピーエンコーダ205、エントロピーエスティメータ210、エントロピーデコーダ215、及び第2デコーダフィルタ213において、B個のバッチの処理が複数個のコア62Cによって並列に行われる。また、この例ではバッチ数は1枚の元画像から分割するように記載しているが、のちほど図5で示すように、複数の画像からタイルを集めてさらに多くのバッチで処理して、並列度を向上してもよい。
【0051】
第2エンコーダフィルタ203から出力されたデータが、クオンタイザ204に入力される。図4の(f)では、クオンタイザ204は、当該データの量子化された特徴量マップ(FM(Feature Map))を生成する。クオンタイザ204が、例えば当該データに浮動小数点があれば、整数化することで、データを削減する。このようにして、量子化された特徴量マップが生成される。つまり、クオンタイザ204から出力されたデータは、例えば整数値の配列データである。また、以降の説明では、本実施形態における量子化された特徴量マップの4次元テンソルデータの形状を、[B×C×H×W]で表現する。例えば、C=32、H=Th/16で、W=Tw/16などでもよい。Cは要求されるビットレートなどに応じて、C=64,C=128と増加させてもよいし、減少させてもよい。
【0052】
クオンタイザ204から出力されたデータ(量子化された特徴量マップ)は、エントロピーエスティメータ210に入力される。エントロピーエスティメータ210は、特徴量マップを用いて、自己回帰モデル等による予測や、その他の確率予測のために保存された情報、またはそれらを併用し、圧縮・伸長のデータ単位である各シンボルの確率分布fを予測し、確率分布fの累積分布関数CDF(Cumulative Distribution Function)を算出する。確率分布f及び累積分布関数CDFを予測確率(CDF,f)と呼ぶ。
【0053】
エントロピーエンコーダ205は、各シンボルの予測確率と、当該特徴量マップから直接算出した正解の各シンボルの出現確率とを基に、クロスエントロピーなどの確率を比較する関数を算出する。シンボルの予測確率と実際のシンボルの出現確率とのクロスエントロピーがエントロピーエンコーダ205による符号化の情報量になる。このため、エントロピーエスティメータ210の予測精度が圧縮率に影響する。
【0054】
クオンタイザ204から出力されたデータと、エントロピーエスティメータ210から出力されたデータが、エントロピーエンコーダ205に入力される。エントロピーエンコーダ205が、入力された特徴量マップに基づくシンボルと、エントロピーエスティメータ210からの予測確率とを基に、シンボルを符号化する。符号化されたデータ(ビットストリームデータ)の未使用部分を除いて結合したデータが、圧縮データ300として出力される。出力された圧縮データ300は、並列処理デバイス61Cからプロセッサ53Cに出力される。圧縮データ300は、プロセッサ53Cにより永続記憶装置54Cに格納されてもよいし、計算機101Dに転送されプロセッサ53Dにより永続記憶装置54Dに格納されてもよい。
【0055】
元画像データの圧縮とは逆の流れで伸長が行われる。すなわち、エントロピーエンコーダ205から出力された圧縮データ300と、エントロピーエスティメータ210から出力された予測確率とが、エントロピーデコーダ215に入力される。エントロピーデコーダ215は、圧縮データ300と予測確率とを基に、ストリーム数R=(B×C)の複数の復号データを出力する。復号データはエントロピーエスティメータ210にも入力され、シンボルの予測に使用される。これは、本実施形態で後述するSimple Lined Causal CNNでは、所定単位(分割縦数Dh×分割横数Dw×FMのチャネル数C×量子化された特徴量マップの横幅W)のシンボル群ごとに復号のイテレーションが行なわれるが、エントロピーエスティメータ210が、前回復号化されたシンボル群を入力として、今回のシンボル群の予測確率を逐次的に生成するためである。
【0056】
エントロピーデコーダ215によって復号された複数の復号データは、第2デコーダフィルタ213に入力される。第2デコーダフィルタ213は、複数の復号データに対して第2デコーダフィルタ処理を行う。具体的には、第2デコーダフィルタ213は、エントロピーデコーダ215から出力された複数の復号データのサイズ(B×C×H×W)のテンソルを入力とし、バッチ数Bのフィルタリング(第2デコーダフィルタ処理)を複数個のコア62Cにより並列に実行し、サイズ(B×C×(Th/2)×(Tw/2))のテンソルに変換する。
【0057】
FMアンタイラ212は、当該テンソルデータを、分割縦数Dh及び分割横数Dw(すなわちFMのバッチ数B=Dh×Dw)に従って、タイル状になっていたデータのバッチ次元を統合する。つまり、C個の第2のデコード後テンソルの各々について、B個のバッチごとのタイル状になっているテンソルを一枚に統合する。従って、FMアンタイラ212から出力されるテンソルデータのサイズは、例えば1×C×H×Wとなる。これを以降アンタイル後FMと呼ぶ。
【0058】
第1デコーダフィルタ211は、アンタイル後FMに対して、第1デコーダフィルタ処理を行う。具体的には、第1デコーダフィルタ211は、アンタイル後FMを入力とし、第1デコーダフィルタ211によりC個の第1デコーダフィルタ処理後画像を表す出力画像データに変換され出力される。
【0059】
本実施形態では、第1エンコーダフィルタ201にて第1エンコーダフィルタ処理を実施後にFMタイラ202にてバッチ分割を実施することから、画像をバッチに分割後に圧縮処理を実施する従来技術と比較して、ニューラルネットワークのレセプティブフィールドを完全分離することがない。よって、バッチの分割箇所のアーティファクトを低減する効果が期待できる。
【0060】
本実施形態では、タイリングのサイズ(分割幅)を固定のサイズとして処理を実施しているが、何種類かの分割幅を設け、入力画像の領域ごとの特性に応じて、分割幅を変更し、分割幅の種類ごとに処理を並列化することで、最適化してもよい。その場合は、分割幅を画像の領域に対応付けて、圧縮データに記録する。
【0061】
図5は、実施形態1に係る圧縮処理例を示すフローチャートである。以下、計算機101Cが圧縮処理を行う例を説明するが、計算機101Dも圧縮器70を備えることで、同様に圧縮処理を行うことができる。圧縮処理は、プロセッサ53C、並列処理デバイス61C、及び並列処理デバイス61C上に実現された圧縮器70によって、例えば圧縮対象のデータが計算機101Cへ入力されたことを契機として実行される。
【0062】
先ずステップS101では、プロセッサ53Cは、圧縮対象の全ての画像を処理したか否かを判定する。プロセッサ53Cは、圧縮対象の全ての画像を処理した場合(ステップS101YES)に本圧縮処理を終了し、圧縮対象の全ての画像を処理していない場合(ステップS101NO)にステップS102へ処理を移す。
【0063】
ステップS102では、プロセッサ53Cは、次の圧縮対象の画像データを取得し、並列処理デバイス61Cのメモリ63Cに格納する。次にステップS103では、並列処理デバイス61Cのコア62Cは、メモリ63Cに格納された圧縮対象の画像データに対してパディング処理(図4参照)を施す。パディング処理は省略可能である。
【0064】
次にステップS104では、第1エンコーダフィルタ201は、メモリ63Cに格納された圧縮対象の画像データに対して第1エンコーダフィルタ処理を実施し、FMを生成する。次にステップS105では、FMタイラ202は、ステップS104で生成されたFMを予め決められたFMのバッチ数B(分割縦数Dh×分割横数Dw)のタイル(分割高さTh、分割幅Tw)へ分割するFMタイリングを実施し、生成したタイル(分割した複数の特徴量マップ)を圧縮器70内のキューに格納する。
【0065】
次にステップS106では、プロセッサ53Cは、所定閾値以上のタイルがキュー上に存在する、又は、圧縮対象の全ての画像を処理した、の何れかであるか否かを判定する。プロセッサ53Cは、所定閾値以上のタイルがキュー上に存在する、又は、圧縮対象の全ての画像を処理した、の何れかである場合(ステップS106YES)にステップS107へ処理を移し、所定閾値以上のタイルがキュー上に存在しない、及び、圧縮対象の全ての画像を処理していない場合(ステップS106NO)にステップS101へ処理を戻す。
【0066】
以降ステップS107~S111は、バッチ数Bm×チャネル数Cをデータストリームに関する最大並列数として並列処理される。
【0067】
ステップS107では、第2エンコーダフィルタ203は、キューからタイルを取り出して前述の所定閾値に基づいたバッチ数Bmのバッチを作成する。ここでは、複数の入力画像の処理がバッチとしてまとめられ並列に処理を実行されうる。次にステップS108では、第2エンコーダフィルタ203は、ステップS107で作成したバッチに対して第2エンコーダフィルタ処理を施す。次にステップS109では、クオンタイザ204は、ステップS108で第2エンコーダフィルタ処理が施されたバッチに対して量子化処理(推論時)を実施する。ステップS109の詳細は、図6を参照して後述する。
【0068】
次にステップS110では、エントロピーエンコーダ205は、ステップS110で量子化処理を実施したバッチに対してエントロピー符号化処理を実施する。ステップS110の詳細は、図8を参照して後述する。
【0069】
次にステップS111では、エントロピーエンコーダ205は、圧縮データ作成処理を実行する。圧縮データ作成処理の詳細は、図12を参照して後述する。ステップS111が終了すると、プロセッサ53Cは、ステップS106へ処理を戻す。
【0070】
図6は、図5のステップS109の量子化処理(推論時)の詳細例を示すフローチャートである。一般にクオンタイザは、値を単純にラウンド処理するのみでは、出力結果の値の範囲が不定になる。出力結果の値の範囲が不定であると、後段のエントロピーエスティメータ210においてテンソル演算によるCDF算出が困難になる。そこで、クオンタイザ204は、その出力を一例として-15~16の所定範囲の32シンボルに制限するようにclampする。
【0071】
先ずステップS109aでは、クオンタイザ204は、FMの値を例えば-15~16の所定範囲にclampする。次にステップS109bでは、クオンタイザ204は、FMの値をラウンド処理する。
【0072】
図7は、量子化処理(学習時)例を示すフローチャートである。クオンタイザ204は、圧縮器70のモデルの学習段階から、その出力を例えば-15~16の所定範囲の32シンボルに制限するようにclampする。学習時のclampの所定範囲と、推論時のclampの所定範囲は、同一である。
【0073】
先ずステップS201では、並列処理デバイス61Cのコア62Cは、学習対象のFMの値を例えば-15~16の所定範囲にclampする。次にステップS202では、コア62Cは、-0.5~0.5の乱数を生成する。次にステップS203では、コア62Cは、ステップS202で生成した乱数を学習対象のFMの値に加算する。
【0074】
図8は、図5のステップS110のエントロピー符号化処理の詳細例を示すフローチャートである。エントロピー符号化処理では、複数の画像を入力とし、処理対象のタイルをキューイングすることで、小さなサイズの画像でも所定の多重度で実行できるようにし、また大きな画像でも所定の単位で処理ができるようになる。
【0075】
先ずステップS110aでは、エントロピーエスティメータ210は、エントロピーエスティメータ処理を実行する。エントロピーエスティメータ処理の詳細は、図9を参照して後述する。次にステップS110bでは、エントロピーエスティメータ210は、CDF作成処理を実行する。CDF作成処理の詳細は、図10を参照して後述する。
【0076】
次にステップS110cでは、エントロピーエンコーダ205は、エントロピーエンコーダステップ処理を実行する。エントロピーエンコーダステップ処理の詳細は、図11を参照して後述する。また、本実施形態は後述するTensor ANSを用いるため、図14に示すエントロピー復号処理とは逆の順番でエンコードしていく。そのために、ステップS110a,S110bでは、図14に示す逐次的なデコード処理とは異なり、あらかじめエンコード対象のCDFを、まとめて計算しておく。
【0077】
次にステップS110dでは、エントロピーエンコーダ205は、全てのシンボルをエンコード済みか否かを判定する。エントロピーエンコーダ205は、全てのシンボルをエンコード済みの場合(ステップS110dYES)にステップS110eへ処理を移し、全てのシンボルをエンコード済みでない場合(ステップS110dNO)にステップS110cへ処理を戻す。処理を戻したステップS110cでは、エントロピーエンコーダ205は、次のシンボル群を選択してエントロピーエンコーダステップ処理を実行する。
【0078】
ステップS110eでは、エントロピーエンコーダ205は、キューに残存しているデータを再ノーマライズする再ノーマライズ処理を所定回数だけ実行する。
【0079】
図9は、図8のステップS110aのエントロピーエスティメータ処理の一例の概要を示す図である。図9では、Simple Lined Causal CNNを用いた本実施形態のエントロピーエスティメータ処理と、Pixel CNNを用いた従来手法との比較を示す。本実施形態では、符号化のためのCNNによるエントロピー予測を、CNNカーネルの重みを適切に決定することで、水平方向で並列実行できるようにして計算の冗長性を排除し、高速処理を実現する。
【0080】
図9の(a)に示すように、従来手法によるエントロピーエスティメータ処理(Pixel CNN)では、CNNカーネルの中で推定対象のピクセルの縦方向(垂直方向)と横方向(水平方向)のそれぞれで隣接するピクセルの重みを予測に用い、前回予測結果を今回予測に用いることから、1処理ずつ予測のイテレーションを繰り返す必要がある。
【0081】
一方、図9の(b)に示すように、本実施形態によるエントロピーエスティメータ処理(Simple Lined Causal CNN)では、CNNカーネルのサイズを例えば1×3など、垂直方向のサイズを1で構成し、CNNカーネルへのテンソル入力時に、特に上部に一列、所定の与えられた初期値(例えばゼロ)の挿入処理を実施することにより、1段垂直下方向に入力テンソルをずらした上で入力することで、推定対象のピクセルの上部のピクセルに限定して予測に用いることが出来る。すなわち推定対象のピクセルの並び方向に対する垂直方向のピクセルのみに基づいて推定対象のピクセルのエントロピーを予測する。これにより、横方向の予測の依存性をなくし、前回予測結果を必要とせず今回予測を行うので、一括して処理を実施できる。つまり、デコード時に、量子化された特徴量マップについて、[Bm×C×1×W]の予測を同時に実行できる。したがって、デコード時の予測に必要なイテレーションの繰り返し回数は、H回のみに出来る。一方、エンコード時は、量子化された特徴量マップ全体で同時に処理可能である。さらに、無効パラメータを必要としないため、Pixel CNNと比較し、本来不要なゼロ乗算処理や加算処理を削減できる。
【0082】
また従来技術では、複数の階層を用いてコンテクスト予測器を生成していた。しかし、本実施形態では、利用する2D CNNカーネルを1層とし、コンテクスト予測器を単純化して構成できる。
【0083】
図10は、図8のステップS110bのCDF作成処理のアルゴリズム例を示す図である。本アルゴリズムは、エントロピーエスティメータ処理の出力結果である確率分布のパラメータを入力とし、シンボルごとの累積分布関数CDFと、シンボルごとの予測確率fを計算する。本明細書では、Python(登録商標)ライクの表記でアルゴリズム例を記載している。
【0084】
シンボルごとの予測確率fは、本来は連続関数であるが、エントロピー符号化のために、整数表現に直す必要がある。予測確率fの整数表現化とは、デノミネータ係数dが与えられたときに、1以上の整数値で、その合計がd(通常の確率表現では1に相当)となるように、各シンボルの予測確率を生成することである。また、累積分布関数CDFは、fを累積表現にしたものである。
【0085】
本実施形態では、エントロピーエスティメータ処理の出力結果をパラメータとして、所定のシンボル予測のための確率分布関数を用いて確率分布を求める。シンボル予測のための確率分布関数として、例えばガウス分布を用いる。ただし、ガウス分布に限定されず、ロジスティクス分布等の他の確率分布関数を用いることができる。ガウス分布の場合には、平均がパラメータmeanに、分散がパラメータscaleにそれぞれ該当する。ロジスティック分布の場合には、位置がパラメータmeanに、尺度がパラメータscaleにそれぞれ該当する。また、分布のパラメータの一部のみにエントロピーエスティメータ処理の出力結果を用いてもよい。例えば、ガウス分布の場合、例えばmeanは定数(例えば0)に固定し、scaleのみにエントロピーエスティメータ処理の出力結果を使用することで、処理を単純化して高速化を図ってもよい。例えば、本実施形態では、meanとscaleの2種類のパラメータを利用すると想定し、エントロピーエスティメータ処理の出力結果のテンソルの形状は、[Bm×(2*C)×H×W]となり、予測確率fおよび累積分布関数CDFの形状は、シンボルの総数をSとすると、[Bm×C×H×W×S]の5次元となる。
【0086】
図10におけるsymbolnumは、シンボルの総数Sで、例えばシンボルの取りうる値が-15~16の整数の場合、symbolnum=32となる。また、calc_cdfは、例えばガウス分布のmeanとscaleのパラメータ2種類のテンソルを入力として、入力したパラメータの確率分布の確率変数の値が-∞から0の位置までの累積確率を算出する関数である。ガウス分布の場合は、例えば、誤差関数を使って算出することが可能である。
【0087】
図10の1行目の処理では、パラメータmeanの値のバリエーションをsymbolnum個だけ予め用意しておき、各パラメータmeanについて並列処理でfを計算することにより、4行目に示すようにテンソル演算を用いたCDFの多重計算が可能になる。
【0088】
図10の2行目では、symbolnum個のパラメータmeanの値のバリエーションごとにfの整数値を算出する。ここで、確率の最小値が1であるため、最後に1を加算する。
【0089】
図10の3行目では、symbolnum個のfの合計値をdとするため、最後のシンボルの確率を、デノミネータ係数dから、最後の1つ前のシンボルまでのfの合計を減算することで算出する。
【0090】
図10の4行目では、matmul(行列演算)により、CDFを算出する。ここで使用する行列matrixは、symbolnum×symbolnumの狭義上三角行列であり、これにより、fからCDFをテンソル演算により並列に生成できる。
【0091】
図10の5行目では、生成したf及びCDFを出力する。
【0092】
図11は、図8のステップS110cのエントロピーエンコーダステップ処理のアルゴリズム例を示す図である。本実施形態では、テンソル演算によりANS(Asymmetric Numeral Systems)を実装する、Tensor ANSを用いる。図11中のdは、図10と同様にデノミネータ係数、Lは最大符号長、kは繰り返し回数、nは正規化係数である。また、以降、テンソルを表す変数を説明する。変数名のあとのカッコは、本実施形態におけるテンソルの形状を表す。図11の1行目の引数x[Bm×C]はエンコード中の状態変数、s[Bm×C]は対象のシンボル、f[Bm×C×S]はシンボルごとのエントロピーエスティメータ210による予測確率、CDF[Bm×C×S]はシンボルごとの累積確率密度分布、enc[B×C×N]はエンコード対象のデータストリーム、p[Bm×C]はポインタ(エンコード処理の現在位置、及び有効なデータ量)を表す。encの定義におけるNは、データストリームの長さであり、十分長いものとする。データストリームの一要素はlog2(n)*Nビットであり、それが最大N個で構成される。例えば、N=H×Wとしてもよい。ANSでは、一般に、符号計算の効率化のため、状態変数xの上限値が定められており、データストリームに所定のサイズ(正規化係数nについてlog2(n)ビット)のデータを書き込み、xから取り除くことで、xの値の範囲を、(n*L)>x≧Lとなるように、制御する。その処理を一般に、renormalizeと呼ぶ。アルゴリズム中のx_u[Bm×C]は、その制御におけるxの上限値であり、n*(L/d)*f[s]により算出できる。
【0093】
図11の1行目は、2~5行目をk回繰り返すことを示す。
【0094】
従来技術では、renormalize対象判定のため条件分岐を必要とする。一方、本実施形態の提案手法(Tensor ANS)では、図11の2行目に示すように、renormalize対象かどうかを、clampにより生成した存在可否値existを用いることで判別する。そして図11の3行目に示すように、pの更新をexistとの単純な和で処理できる。そして、また図11の4行目に示すように、存在可否値existと、状態xを正規化係数nで除算した際の剰余との積から、renormalizeの実行要否を含めた処理を、テンソル上の要素ごとの積和演算で処理できるようにした。それにより、renormalize対象判定のための条件分岐を不要として、テンソル演算で高速多重処理を可能とした。具体的には、Tensor ANSでは、Bm×C個のデータストリームを同時並行的に処理が可能であり、前述したFMタイラなどにより、並列度を各段に向上させることができ、処理の高速化が可能である。
【0095】
なおここでのclampとは、対象値を0~1の範囲に制限する処理であり、具体的には、0未満の値は0となり、1より大きい値は1に変換される。特に本実施形態の提案手法で用いる範囲では、値は整数となるため、clampの結果は0又は1となる。
【0096】
以上の手法により、renormalizeのための条件分岐を不要として、テンソル演算上でエントロピー符号化の高速多重実行を可能とした。
【0097】
また図11の4行目のencに対するインデックスとしてpを指定しているが、その実装として、scatter_addを使用できる。scatter_addは、インデックスを指定して所定のテンソルを加算したテンソルを作成する処理である。
【0098】
また、fやCDFなど、他のインデックスによるアクセスの方法としては、gatherを使用できる。gatherは、インデックスを指定して使用し、指定したインデックスのテンソルを収集したテンソルを作成する処理である。これらの処理もBm×C個のデータストリームを並列で処理可能である。また、その他の方法としては、これらのインデックスのone-hot-vectorを作成し、要素ごとに積演算と総和を計算する処理により、テンソル演算可能とすることも可能である。
【0099】
与えられた確率yから、CDFに基づき対応するシンボルをサーチするsymbol処理については、clampを用いて、CDFからyを減算した値の値域を0から1に制限したうえで、総和を算出することにより、シンボル(CDFのインデックス)を計算した。
【0100】
以上のように、すべてのオペレーションをテンソル演算で実装することにより、バッチやチャネルなどの次元において、演算の多重化を実現できる。
【0101】
図12は、図5のステップS111の圧縮データ作成処理の一例の概要を示す図である。
【0102】
例えば図11に示すエントロピーエンコーダステップ処理において得られたテンソルデータencに含まれる未使用部分データc1~cmを前詰めし符号化部分データb1~bm(圧縮済みタイル)を繋げて符号化データ(圧縮データ)とする。また各符号化部分データb1~bmのそれぞれの長さpをマップ情報とする(図3参照)。
【0103】
なお符号化データの復号時は、マップ情報から各符号化データの符号化部分データb1~bmを取り出し、未使用部分データc1~cmを付加してテンソルデータencを得る。
【0104】
図13は、実施形態1に係る伸長処理例を示すフローチャートである。以下、計算機101Dが伸長処理を行う例を説明するが、計算機101Cも同様に伸長器71を備えることで伸長処理を行うことができる。伸長処理は、プロセッサ53D、並列処理デバイス61D、及び並列処理デバイス61D上に実現された伸長器71によって、例えば伸長対象データが計算機101Dへ入力されたことを契機として実行される。
【0105】
先ずステップS301では、プロセッサ53Dは、伸長対象の全ての圧縮データを処理したか否かを判定する。プロセッサ53Dは、伸長対象の全ての圧縮データを処理した場合(ステップS301YES)に本伸長処理を終了し、伸長対象の全ての圧縮データを処理していない場合(ステップS301NO)にステップS302へ処理を移す。
【0106】
ステップS302では、プロセッサ53Dは、次の伸長対象の圧縮データを取得し、並列処理デバイス61Dのメモリ63Dに格納する。次にステップS303では、並列処理デバイス61Dのコア62Dは、メモリ63Dに格納された伸長対象の圧縮データをマップ情報をもとに展開して圧縮済みタイル(符号化されたバッチ)に分解する。この処理は、図12に示した圧縮データ作成処理の逆の処理である。
【0107】
次にステップS304では、プロセッサ53Dは、ステップS304で得られた圧縮済みタイルを、伸長器71内のキューに追加する。
【0108】
次にステップS305では、プロセッサ53Dは、所定閾値以上の圧縮済みタイルがキュー上に存在する、又は、伸長対象の全ての画像を処理した、の何れかであるか否かを判定する。プロセッサ53Dは、所定閾値以上の圧縮済みタイルがキュー上に存在する、又は、伸長対象の全ての画像を処理した、の何れかである場合(ステップS305YES)にステップS306へ処理を移し、所定閾値以上の圧縮済みタイルがキュー上に存在しない、及び、伸長対象の全ての画像を処理していない場合(ステップS305NO)にステップS310へ処理を移す。
【0109】
以降ステップS306~S309は、バッチ数Bm×チャネル数Cだけデータストリームに関して並列処理される。
【0110】
ステップS306では、エントロピーデコーダ215は、キューから圧縮済みタイルを取り出して前述の所定閾値に基づいたバッチ数Bmのバッチを作成する。ここでも、圧縮処理時と同様に、複数の入力画像のデータを同時に処理しうる。次にステップS307では、エントロピーデコーダ215は、ステップS306で作成したバッチに対してエントロピー復号処理を実施する。ステップS307の詳細は、図14を参照して後述する。
【0111】
次にステップS308では、第2デコーダフィルタ213は、ステップS308でエントロピー復号処理を施したバッチに対して第2デコーダフィルタ処理を実施する。第2デコーダフィルタ処理は、量子化された特徴量マップを入力とし、第2デコーダフィルタ処理を複数個のコア62Dにより並列に行う。
【0112】
次にステップS309では、FMアンタイラ212は、ステップS309での伸長済みタイルをタイルキュー(タイルのためのキュー)に格納する。
【0113】
次にステップS310では、FMアンタイラ212は、タイルキューに1枚分の画像の分割データが全て揃ったか否かを判定する。FMアンタイラ212は、タイルキューに1枚分の画像の分割データが全て揃っている場合(ステップS310YES)にステップS311へ処理を移し、全てが揃っていない場合(ステップS310NO)にステップS305へ処理を戻す。
【0114】
ステップS311では、FMアンタイラ212は、タイルキューから1枚分の伸長済みタイルを取り出し、FMを結合する(FMアンタイリング)。次にステップS312では、第1デコーダフィルタ211は、ステップS311でFMアンタイリングを実施して分割前の状態に復原されたテンソルデータに対して第1デコーダフィルタ処理を実施した画像データを得る。次にステップS313では、並列処理デバイス61Dのコア62Dは、圧縮前の元画像データに対してパディング処理が施されている場合には、ステップS312の第1デコーダフィルタ処理で得られた画像データからパディング除去を実施する。
【0115】
次にステップS314では、並列処理デバイス61Dのコア62Dは、伸長済みの画像データを生成して出力する。並列処理デバイス61Dのコア62Dは、ステップS314が終了すると、ステップS310へ処理を戻す。
【0116】
図14は、エントロピー復号処理の詳細例を示すフローチャートである。
【0117】
先ずステップS307aでは、エントロピーデコーダ215は、エンコード済みデータを引数x(図11で示したものと同様)に初期化するために、エンコード時の再ノーマライズを所定回数実行する。
【0118】
次にステップS307bでは、エントロピーエスティメータ210は、エントロピーエスティメータ処理を実行する。ステップS307bのエントロピーエスティメータ処理は、図8のステップS110a及び図9と同様の処理である。
【0119】
次にステップS307cでは、エントロピーエスティメータ210は、CDF作成処理を実行する。ステップS307cのCDF作成処理は、図8のステップS110b及び図10と同様の処理である。
【0120】
次にステップS307dでは、エントロピーデコーダ215は、エントロピーデコーダステップ処理を実行する。エントロピーデコーダ処理の詳細は、図15を参照して後述する。
【0121】
次にステップS307eでは、エントロピーデコーダ215は、エントロピーエスティメータ210の予測単位でデコード済みか否かを判定する。エントロピーデコーダ215は、エントロピーエスティメータ210の予測単位でデコード済みの場合(ステップS307e)にステップS307fへ処理を移し、エントロピーエスティメータ210の予測単位でデコード済みでない場合(ステップS307eNO)に次のシンボル群のデコードを実行すべくステップS307dへ処理を戻す。本実施形態では、図9に示すように、エントロピーエスティメータ210の予測単位が1列ずつで並列処理されるので、ステップS307d及びS307eのループが繰り返される。
【0122】
ステップS307fでは、エントロピーデコーダ215は、全てのシンボルをデコード済みか否かを判定する。エントロピーデコーダ215は、デコード済みの場合(ステップS307fYES)に図13のステップS308へ処理を移し、デコード済みでない場合(ステップS307fNO)に次の予測単位の予測を実行すべくステップS307bへ処理を戻す。
【0123】
図15は、図14のステップS307dのエントロピーデコーダステップ処理のアルゴリズム例を示す図である。
【0124】
図15の1行目は、2~4行目をk回繰り返すことを示す。図15の2行目のfillは、エンコード時のアルゴリズムと同様に、renormalize処理を実施する必要かどうかを表す変数であり、これを活用してテンソル演算のみで実装できるようにした。また、2行目のclamp(p)は、pがゼロの場合にも、再度renormalize処理を実施することを防ぐための処理であり、これにより不当なrenormalize処理やpがマイナスに更新されてしまうことを抑止する。以上のようにして、エンコード時と同様に、すべてのオペレーションをテンソル演算で実装することにより、バッチやチャネルなどの次元において、演算の多重化を実現できる。また、すべてのオペレーションがテンソル演算で実装されているため、特別な並列処理デバイスに特化したプログラミングは必要なく、tensor演算を実装した機械学習のミドルウェア上に、容易に実装することが可能であり、並列処理デバイスにおいて効果的に並列性を容易に引き出すことが出来る。
【0125】
また、本実施形態での提案手法は、高速性を得るために、パラメータであるデノミネータ係数dと正規化係数nと最大符号長Lの調整が重要である。これらの値が最大のケースの影響を受けてrenormalizeの回数kが多くなると、それによって計算量が増加するためである。一般にkは、k=ceil(log(d)/log(n))により算出できる。例えば、d=212、n=2、L=216が圧縮率への影響が少なく、renormalizeの回数kも削減できる。この場合、renormalizeのフローは、k=2回実行すれば十分であるため、処理速度への影響は少ない。
【0126】
また、本実施形態においては、第一のエンコーダフィルタ、第二のエンコーダフィルタ、第一のデコーダフィルタ、第二のエンコーダフィルタ、エントロピーエスティメータなどにおいて、CNNを用いてもよいが、その学習においては、エントロピーエスティメータの出力するパラメータによって計算する確率分布と、エンコーダの出力するFMの値との交差エントロピーを算出することで、微分可能な形で理論的な平均ビットレートを算出し、またエンコーダの入力画像とデコーダの出力画像のディストーション(例えば、PSNR、またはMS-SSIM、その他、微分可能な形で実装される画質指標でもよい)を算出し、前記平均ビットレートと前記ディストーションを、ラグランジュオプティマイザーなどにより両者のトレードオフをエンドツーエンドで最適化する学習を実行することができる。また、その学習においては、タイルの境界のアーティファクトを低減するため、タイルに対応する元データの大きさ(タイルの分割幅)よりも大きな画像データを学習データとして用いることが望ましい。
【0127】
また、本実施形態においては、積和演算量の多い第一のエンコーダフィルタ、第二のエンコーダフィルタ、第一のデコーダフィルタ、第二のエンコーダフィルタについて、精度は低いが高速な演算(例えば半精度浮動小数点による演算)により実装し、積和演算量の少ないエントロピーエスティメータについては、高精度な演算により実装することで、効率的に処理するようにしてもよい。
【0128】
[実施形態2]
実施形態2を説明する。その際、実施形態1との相違点を主に説明し、実施形態1との共通点については説明を省略又は簡略する。
【0129】
図16は、実施形態2に係るエントロピーエスティメータ210B並びに関連する圧縮器70B及び伸長器71Bの一部の構成例を示す図である。圧縮器70B及び伸長器71Bは、実施形態1の圧縮器70及び伸長器71と比較してエントロピーエスティメータ210に代えてエントロピーエスティメータ210Bを備える。また圧縮器70Bは、実施形態1の圧縮器70と比較して、クオンタイザ204とエントロピーエンコーダ205との間にシャッフラー801B1を、エントロピーエスティメータ210Bとエントロピーエンコーダ205及びエントロピーデコーダ215との間にシャッフラー801B2をそれぞれ備える。シャッフラー801B1とシャッフラー801B2は同一でもよい。
【0130】
また伸長器71Bは、エントロピーデコーダ215と第2デコーダフィルタ213の間にアンシャッフラー802Bを備える。
【0131】
エントロピーエスティメータ210Bは、エンコーダフィルタ201B、クオンタイザ204B、エントロピーエンコーダ205B、エントロピーエスティメータ210B1、エントロピーデコーダ215B、及びデコーダフィルタ211Bを備える。
【0132】
エンコーダフィルタ201Bは、図9のLined Causal CNNとは異なり、クオンタイザ204から入力された量子化されたFM(入力FM)に対する予測確率(CDF,f)を超事前分布によって予測する。
【0133】
エンコーダフィルタ201Bは、入力FMに対してエンコーダフィルタリング処理を実施する。クオンタイザ204Bは、クオンタイザ204と同様に、エンコーダフィルタ201Bによってエンコーダフィルタリング処理が実施されたFMの量子化を実施する。エントロピーエスティメータ210B1は、クオンタイザ204Bによって量子化されたFMを入力として予測確率(CDF,f)を予測する。エントロピーエスティメータ210B1は、図9の(b)に示したLined causal CNNのコンテキストモデル、あるいは単純な静的な確率分布を用いて予測確率(CDF,f)を予測する。
【0134】
エントロピーエンコーダ205Bは、クオンタイザ204Bによって量子化されたFMから直接算出した正解の各シンボルの出現確率と、エントロピーエスティメータ210Cによって予測された予測確率(CDF,f)とに基づくクロスエントロピー等の符号化情報を得る。エントロピーエンコーダ205Bは、この符号化情報を超事前分布圧縮データ300Bとして出力する。
【0135】
エントロピーデコーダ215Bは、エントロピーエスティメータ210B1からの予測確率(CDF,f)を入力として、超事前分布圧縮データ300Bに対してエントロピーデコーダ処理を実施し、復号データを得る。前回の復号対象のシンボルの復号データは、今回の復号対象のシンボルの予測確率(CDF,f)の推定のために、エントロピーエスティメータ210B1へ入力される。
【0136】
デコーダフィルタ211Bは、エントロピーデコーダ215Bによる復号データに対してデコーダフィルタリング処理を実施し、入力FMに対応する予測確率(CDF,f)を出力する。
【0137】
シャッフラー801B1及び801B2は、入力FMと、入力FMに対応する予測確率(CDF,f)とを、同じ順序となるようにそれぞれランダムにシャッフルする。シャッフルの方法は、再現可能な方法であれば、何れでもよい。また、予測確率(CDF,f)を基にビンパッキングのような方法で順序を変更してもよい。
【0138】
エントロピーエンコーダ205は、シャッフラー801B1及び801B2によって変更されたFM及び予測確率の順序で、量子化されたFMに対してエントロピーエンコーダ処理を実施し、圧縮データ300を生成する。エントロピーデコーダ215は、シャッフラー801B2によって変更された予測確率の順序で、圧縮データ300を復号し、復号データを生成する。
【0139】
アンシャッフラー802Bは、エントロピーデコーダ215によって復号された復号データのシンボルの順序を、シャッフラー801B1及び801B2によるシャッフル前の順序へ戻す。
【0140】
このように、超事前分布を生成する手法を利用する場合、複数のシンボルの予測確率を一度に得るため、ランダムなシャッフルによって、分割単位である各バッチの平均エントロピーを均一化でき、マップ情報の情報量としてのオーバーヘッドを削減できる。
【0141】
また例えば、圧縮・伸長のニューラルネットワークのトレーニング時にFMに対して、所定量のdropoutを実施することで、多少のFMの値の誤差に対してロバストなモデルを学習できる。これにより、マップ情報として全ストリームのポインタpの平均値のみ保持するようにして、平均値以上の位置にあるデータを所定の値としたFMを生成することで、データの復号を可能とし、マップ情報のデータ容量を非常に小さくすることも可能である。
【0142】
[実施形態3]
実施形態3を説明する。その際、実施形態1との相違点を主に説明し、実施形態1との共通点については説明を省略又は簡略する。実施形態3では、JPEGフォーマットの画像データを取り扱う場合を説明する。
【0143】
図17は、実施形態3に係る圧縮器70C及び伸長器71Cの構成例を示す図である。圧縮器70Cは、実施形態1に係る圧縮器70と比較して第1エンコーダフィルタ201に代えてHuffman復号化/テンソル化201Cを備える。また伸長器71Cは、実施形態1に係る伸長器71と比較して第1デコーダフィルタ211に代えてZigzag化/Huffman符号化211Cを備える。また圧縮器70C及び伸長器71Cは、実施形態1に係る圧縮器70及び伸長器71と比較してエントロピーエスティメータ210に代えてエントロピーエスティメータ210Cを備える。
【0144】
Huffman復号化/テンソル化201Cは、JPEGフォーマットの画像データを離散コサイン逆変換(DCT)の直前までHuffman復号化し、復号データとしてDCTの次元(図17の例では8x8)を有するテンソルデータを得る。本実施形態では、テンソルデータは6次元であり、バッチ、チャネル、DCT高さ、DCT幅、高さ、幅の6次元を持つ。そしてHuffman復号化/テンソル化201Cは、テンソルデータを、分割高さ(Th)×分割幅(Tw)の倍数になるようにパディングする。図17の例では、入力画像として、256ピクセルを、Th及びTwのサイズとしている。
【0145】
FMタイラ202は、パディング済みのテンソルデータのバッチの次元を拡張する。図17の例では、入力されたサイズ(1×3×8×8×H×W)のFMに対して、FMタイラ202は、タイル状に縦横方向を分割し、バッチの次元とすることで、サイズ(((H/32)×(W/32))×3×8×8×32×32)のFMを出力する。
【0146】
第2エンコーダフィルタ203Cは、4次元の構造を処理するため、例えば4D CNNカーネルや2D+2DのCNNカーネルを用いてもよい。クオンタイザ204は、実施形態1と同様である。第2エンコーダフィルタ203Cおよびクオンタイザ204は、PNGなどの可逆圧縮フォーマットの場合は、省略される。
【0147】
エントロピーエスティメータ210Cは、四次元の構造をエントロピー推定するので、4D CNNカーネルを用いるが、2D+2DのCNNカーネルであってもよい。また、クロマフォーマットが4:4:4以外の場合は、YCbCrのそれぞれでテンソルのサイズが異なる。そこで、異なるサイズのチャネルは分割し、分割したそれぞれのチャネルで符号化処理し、それらのチャネル間で相互に情報をやり取りし、例えば一方の復元結果を他方の復号化時の補助情報として使用する。例えば相対的にデータが小さい輝度成分Yのチャネルのデータの符号化処理及び復号処理を、相対的にデータが大きい青色差Cb及び赤色差Crのチャネルよりも先行して実行し、輝度成分Yのチャネルのデータの符号化処理又は復号処理による情報を、青色差Cb及び赤色差Crのチャネルの符号化処理又は復号処理における補助情報として用いることで、圧縮を効率化できる。
【0148】
エントロピーエンコーダ205、エントロピーデコーダ215は、実施形態1と同様である。第2デコーダフィルタ213Cは、4次元の構造を処理するため、例えば4D CNNカーネルや2D+2DのCNNカーネルを用いてもよい。第2デコーダフィルタ213Cは、PNGなどの可逆圧縮フォーマットの場合は、省略される。FMアンタイラ212は、上述したFMタイラ202と逆の処理を実施する。Zigzag化/Huffman符号化211Cは、入力データをZigzag化し、Huffman符号化することで、JPEG画像フォーマットを出力する。
【0149】
なお圧縮対象ファイルがPNG等の可逆フォーマットの場合は、“8×8”のDCT単位が存在しないので、2D CNNカーネルで処理する。また“8×8”のDCT単位を、別の次元として設けずに、チャネル次元に結合してもよい。
【0150】
図18は、実施形態3に係る圧縮処理例を示す図である。図18では、クロマフォーマット4:2:0、高さH=512ピクセル、幅W=768ピクセルのJPEGフォーマット画像データ400を入力画像とし、分割高さ=分割幅=256ピクセルでタイリングする例を示す。
【0151】
実施形態3に係る圧縮処理では、輝度成分Yのチャネルと、青色差Cb及び赤色差Crのチャネルに分けて圧縮処理を行う。
【0152】
先ずステップS401では、Huffman復号化/テンソル化201Cは、JPEGフォーマット画像データ400を離散コサイン逆変換(DCT)の直前までHuffman復号化し、輝度成分Yのチャネルと、青色差Cb及び赤色差Crのチャネルに分けてテンソル化する。ステップS401によって、次数=1×1×(8×8)×(H/8)×(W/8)の輝度成分Yのチャネルの特徴量マップFM(Y)401aが得られる。またステップS401によって、次数=1×2×(8×8)×(H/16)×(W/16)の青色差Cb及び赤色差Crのチャネルの特徴量マップFM(CbCr)401bが得られる。特徴量マップFM(Y)及びFM(CbCr)は、DCT単位の(8×8)の次元を持つ。
【0153】
次にステップS402では、Huffman復号化/テンソル化201Cは、5番目と6番目の次元(特徴量マップFM(Y)の場合は(H/8)と(W/8)が、特徴量マップFM(CbCr)の場合は(H/16)と(W/16)がJPEGブロックサイズであるタイリングサイズ16(分割高さTh=分割幅Tw)で割り切れるように、特徴量マップFM(Y)及びFM(CbCr)をそれぞれパディングする。ステップS402によって、次数=1×1×(8×8)×(H/8)×(W/8)の輝度成分Yのチャネルの特徴量マップFM(Y)402aが得られる。またステップS401によって、次数=1×2×(8×8)×(H/16)×(W/16)の青色差Cb及び赤色差Crのチャネルの特徴量マップFM(CbCr)402bが得られる。
【0154】
次にステップS403では、FMタイラ202は、バッチの次元(FMのバッチ数B=6)へタイリングし、次数=6×1×(8×8)×32×32の輝度成分Yのチャネルの特徴量マップFM(Y)403aと、次数=6×2×(8×8)×16×16の青色差Cb及び赤色差Crのチャネルの特徴量マップFM(CbCr)403bを得る。
【0155】
なおJPEGフォーマット画像データ400を非可逆圧縮する場合には、図17に示すように、特徴量マップFM(Y)403a及び特徴量マップFM(CbCr)403bに対して、第2エンコーダフィルタ203での第2エンコーダフィルタ処理、及び、クオンタイザ204でのクオンタイズ処理を実施してもよい。
【0156】
次にステップS404では、エントロピーエンコーダ205は、特徴量マップFM(CbCr)403bをエントロピー符号化し、データストリーム404bを作成する。
【0157】
次にステップS405では、エントロピーエンコーダ205は、特徴量マップFM(CbCr)403bをエントロピー符号化した際の5番目と6番目の次元を例えば2倍にアップサンプリングして、特徴量マップFM(Y)403aをエントロピー符号化する際の補助情報を作成する。
【0158】
次にステップS406では、エントロピーエンコーダ205は、ステップS405で作成された補助情報を用いて特徴量マップFM(Y)403aをエントロピー符号化し、データストリーム406aを作成する。
【0159】
特徴量マップFM(CbCr)403bは、特徴量マップFM(Y)403aよりもデータサイズが小さいので、特徴量マップFM(Y)403aよりも先にエントロピー符号化し、その符号化情報を補助情報として特徴量マップFM(Y)403aのエントロピー符号化に用いることで、特徴量マップFM(Y)403aの圧縮率を向上させることができる。データサイズが小さい特徴量マップFM(CbCr)403bの符号化を先に行い速やかに符号化を完了させておくことで、他のチャネルの特徴量マップ(Y)403aの符号化の際に速やかに補助情報を利用できる。
【0160】
次にステップS407では、エントロピーエンコーダ205は、エントロピーエスティメータ210Cからの予測確率(CDF,f)を基に圧縮データ作成処理を実施し、データストリーム406aと404bから圧縮データ300Cを作成する。
【0161】
なお図18では、チャネルごとの符号化処理のみを例に説明したが、これに限らない。すなわち、相対的にデータが小さいチャネルのデータの符号化処理及び復号処理を、相対的にデータが大きいチャネルよりも先行して実行し、先行実施したチャネルのデータの符号化処理又は復号処理による情報を、他のチャネルの符号化処理又は復号処理における補助情報として用いてもよい。
【0162】
図19は、実施形態3に係るエントロピーエスティメータ210Cの処理例を説明するための図である。
【0163】
エントロピーエスティメータ210Cは、処理速度向上のため、4D(四次元)Convolutionニューラルネットワーク処理を、4次元のうちのある2次元について第1の2次元のニューラルネットワークのカーネルを用いて2D Convolution処理を実施する。その後、残りの2次元について第2のニューラルネットワークのカーネルを用いて2D Convolution処理を実行する。
【0164】
例えば入力テンソルの次元がB×C×8×8×32×32の場合、先ず、エントロピーエスティメータ210Cは、第3次元及び第4次元のDCT次元(8×8)について、例えばカーネルサイズを3×3×1×1として、2D CNN処理S210C1を実施する。次にエントロピーエスティメータ210Cは、第5次元及び第6次元の空間次元(32×32)について、例えばカーネルサイズを1×1×3×3として、2D CNN処理S210C2を実施する。このようにして、エントロピーエスティメータ210Cは、次元B×C×8×8×32×32の入力テンソルを入力として、チャネルごとにmean及びscaleの2パラメータを持つ次元B×(C*2)×8×8×32×32のパラメータのテンソルを出力する。
【0165】
このように、エントロピーエスティメータ210Cは、4D(四次元)Convolution処理を2つの2D Convolution処理に分けて段階的に実行することで、エントロピー予測の処理速度を向上させることができる。
【0166】
なお本発明は、上述の実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、かかる構成の削除に限らず、構成の置き換えや追加も可能である。また発明の趣旨を逸脱せず矛盾しない範囲で一方の実施形態の一部又は全部の構成及び処理を、他の実施形態に組合せてもよい。
【0167】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記録媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記録媒体に格納されたプログラムコードを読み出す。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記録媒体は本発明を構成することになる。このようなプログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。本実施例に記載の機能を実現するプログラムコードは、あらゆるプログラム言語又はスクリプト言語で実装できる。
【0168】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【0169】
S:データ圧縮伸長システム、101,101C,101D:計算機、61C,61D:並列処理デバイス、70,70B,70C:圧縮器、71,71B,71C:伸長器、201:第1エンコーダフィルタ、201C:Huffman復号化/テンソル化、202:FMタイラ(結合器)、203:第2エンコーダフィルタ、204:クオンタイザ、205:エントロピーエンコーダ(符号化器)、210,210B,210B1,210C:エントロピーエスティメータ(見積器)、211:第1デコーダフィルタ、211C:Zigzag化/Huffman符号化、211:第1デコーダフィルタ、212:FMアンタイラ(結合器)、213:第2デコーダフィルタ、215:エントロピーデコーダ(復号器)
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19