(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024124559
(43)【公開日】2024-09-12
(54)【発明の名称】符号化装置および復号装置
(51)【国際特許分類】
H04N 19/126 20140101AFI20240905BHJP
【FI】
H04N19/126
【審査請求】有
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2024110556
(22)【出願日】2024-07-09
(62)【分割の表示】P 2022569349の分割
【原出願日】2020-12-15
(71)【出願人】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100149548
【弁理士】
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100181135
【弁理士】
【氏名又は名称】橋本 隆史
(72)【発明者】
【氏名】バイエ フロリアン
(72)【発明者】
【氏名】逸身 勇人
(72)【発明者】
【氏名】二瓶 浩一
(72)【発明者】
【氏名】ヴィタル チャルヴィ
(72)【発明者】
【氏名】篠原 悠介
(72)【発明者】
【氏名】岩井 孝法
(57)【要約】
【課題】量子化間隔の情報の提供による情報量の増加を回避する
【解決手段】処理対象となる値を量子化するための量子化間隔を取得する処理と、処理済の値に対する量子化値に基づく予測値を取得する処理と、前記量子化間隔に基づいて前記処理対象となる値の量子化値を取得する処理と、前記予測値と前記処理対象となる値の量子化値とに基づいた量子化系列をエントロピー符号化する処理と、実行する。本実施形態は、符号化装置、復号装置など、いずれの形態によっても実現可能である。
【選択図】
図1
【特許請求の範囲】
【請求項1】
処理対象となる値を量子化するための量子化間隔を取得する処理と、
処理済の値に対する量子化値に基づく予測値を取得する処理と、
前記量子化間隔に基づいて前記処理対象となる値の量子化値を取得する処理と、
前記予測値と前記処理対象となる値の量子化値とに基づいた量子化系列をエントロピー符号化する処理と、実行する
符号化装置。
【請求項2】
処理済の値に対する量子化値を説明変数とし、処理対象となる値を量子化するための量子化間隔を目的変数として数理モデルを用いて取得された量子化間隔を前記量子化間隔として用いる
請求項1に記載の符号化装置。
【請求項3】
処理済の値に基づいて、前記処理対象となる値を量子化するための量子化間隔を取得する
請求項1に記載の符号化装置。
【請求項4】
前記処理対象となる値は、画像を構成する画素に関する値である
請求項1に記載の符号化装置。
【請求項5】
処理済の量子化値に基づいて処理対象となる量子化値符号を逆量子化して量子化値を定めるための量子化間隔を取得する処理と、
処理済の量子化値に基づく予測値を取得する処理と、
前記予測値を用いて符号化系列をエントロピー復号して前記量子化値符号を含む量子化値系列を取得する処理と、
前記量子化値系列に含まれる量子化値符号を逆量子化して前記量子化値を取得する処理と、を実行する
復号装置。
【請求項6】
処理済の量子化値を説明変数とし、処理対象となる量子化値符号を逆量子化して量子化値を定めるための量子化間隔を目的変数として数理モデルを用いて取得された量子化間隔を前記量子化間隔として用いる
請求項5に記載の復号装置。
【請求項7】
処理済の量子化値に基づいて、前記処理対象となる量子化値符号を逆量子化して量子化値を定めるための量子化間隔を取得する
請求項5に記載の復号装置。
【請求項8】
前記量子化値は、画像を構成する画素に関する値である
請求項5に記載の復号装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、符号化装置および復号装置に関する。
【背景技術】
【0002】
特許文献1には、画像の使用者が当該画像の注目領域を指定し、当該注目領域に対し、他の領域とは異なる量子化率を設定し、設定した量子化率に基づき圧縮を制御することができる画像圧縮装置と当該画像圧縮装置に対応する圧縮伸長装置について記載されている。圧縮伸長装置は、画像を複数の領域に分割する画像分割手段、画像中の1または複数の注目領域を指定する量子化率設定手段、当該設定した量子化率に基づいて領域ごとに圧縮を制御する圧縮制御手段と、を有している。画像分割手段により画像を複数の領域に分割し、領域指定手段により画像中の注目領域を指定し、量子化率設定手段により分割された領域ごとに量子化率を設定する際、指定した注目領域に対し他の領域と異なる量子化率を設定し、設定した量子化率に基づいて領域ごとに圧縮制御を行う。言い換えれば、画像圧縮装置は、領域ごとに定めた量子化率を、その量子化率で画像を圧縮して得られる符号とともに圧縮伸長装置に送信する。量子化率は、量子化間隔を用いて指示される。量子化間隔の指標値として、QP値が用いられることがある。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、1フレームの画像において、領域ごとの量子化間隔の変動が著しいほど、圧縮により得られる符号とともに送信される量子化間隔の情報も増加する。領域ごとの量子化間隔の変動が著しい場合には、量子化間隔の情報量が画像の総データ量に影響するレベルに達することがある。例えば、注視領域の設定が詳細なほど量子化間隔の変動が著しくなりがちである。そのため、総データ量が送信容量を超えることや伝送遅延が生じることがある。ひいては、伸長される画像の品質低下が生じうる。同様な事象は、画像に限らず、音声、などの波動、電気信号の波形など、その他の種類の情報の伝送においても生じうる。
【0005】
本発明は、上記の課題を解決する符号化装置および復号装置を提供することを一つの目的とする。
【課題を解決するための手段】
【0006】
本発明の第1の態様によれば、符号化装置は、処理対象となる値を量子化するための量子化間隔を取得する処理と、処理済の値に対する量子化値に基づく予測値を取得する処理と、前記量子化間隔に基づいて前記処理対象となる値の量子化値を取得する処理と、前記予測値と前記処理対象となる値の量子化値とに基づいた量子化系列をエントロピー符号化する処理と、実行する。
【0007】
本発明の第2の態様によれば、復号装置は、処理済の量子化値に基づいて処理対象となる量子化値符号を逆量子化して量子化値を定めるための量子化間隔を取得する処理と、処理済の量子化値に基づく予測値を取得する処理と、前記予測値を用いて符号化系列をエントロピー復号して前記量子化値符号を含む量子化値系列を取得する処理と、前記量子化値系列に含まれる量子化値符号を逆量子化して前記量子化値を取得する処理と、を実行する。
【発明の効果】
【0008】
本発明によれば、符号化により得られた符号化系列の復号において、量子化間隔の情報が提供されなくても、量子化間隔を推定することができる。そのため、量子化間隔の情報の提供による情報量の増加を回避することができる。
【図面の簡単な説明】
【0009】
【
図1】第1実施形態に係るデータ処理システムの構成例を示す概略ブロック図である。
【
図2】第1実施形態に係る符号化装置のハードウェア構成例を示す概略ブロック図である。
【
図3】第1実施形態に係る機械学習モデルの一例を示す説明図である。
【
図4】第1実施形態に係るエントロピー符号化処理の例を示すフローチャートである。
【
図5】第1実施形態に係るエントロピー復号処理の例を示すフローチャートである。
【
図6】第1実施形態に係る符号化処理の一例を示すフローチャートである。
【
図7】第1実施形態に係る復号処理の一例を示すフローチャートである。
【
図8】第2実施形態に係るデータ処理システムの構成例を示す概略ブロック図である。
【
図9】第2実施形態に係る符号化処理の一例を示すフローチャートである。
【
図10】第2実施形態に係る復号処理の一例を示すフローチャートである。
【
図11】符号化装置の最小構成を例示する概略ブロック図である。
【
図12】復号装置の最小構成を例示する概略ブロック図である。
【発明を実施するための形態】
【0010】
以下、図面を参照して本発明の実施形態について説明する。
<第1実施形態>
まず、第1実施形態について説明する。
図1は、第1実施形態に係るデータ処理システム1の構成例を示す概略ブロック図である。データ処理システム1は、符号化装置10と復号装置20を含んで構成される。以下の説明では、主に符号化装置10、復号装置20が、それぞれ画像符号化装置、画像復号装置として構成されている場合を例にする。符号化装置10が処理対象とする入力値および復号装置20が復号処理結果とする出力値は、それぞれ画素ごとの信号値であってもよいし、画像の特徴を示す特徴量、または、その特徴量の要素値であってもよい。符号化装置10、復号装置20は、それぞれ他の機器の一部に含めて構成されてもよい。他の機器とは、例えば、PC(Personal Computer)、タブレット端末装置、多機能携帯電話機、コンテンツサーバなどの汎用の情報機器に限らず、撮影機、録画機、再生機などの専用の機器であってもよい。
【0011】
符号化装置10は、処理済の量子化値に基づいて処理対象とする入力値の要素である入力要素値を量子化するための量子化間隔を定め、処理済の量子化値に基づいて入力要素値の量子化値の候補である量子化候補値の確率分布を定める。符号化装置10は、定めた量子化間隔を用いて入力要素値を量子化して量子化値を定める。符号化装置10は、定めた確率分布を用いて入力要素値の量子化値を示す量子化値符号を含む量子化系列をエントロピー符号化する。符号化装置10は、エントロピー符号化により生成された符号化系列を復号装置20に出力する。
復号装置20は、符号化装置10には符号化系列が入力される。復号装置20は、処理済の量子化値に基づいて処理対象とする量子化値符号を逆量子化して量子化値を定めるための量子化間隔を定め、処理済の量子化値に基づいて量子化値の候補である量子化候補値の確率分布を定める。復号装置20は、定めた確率分布を用いて符号化系列をエントロピー復号し、処理対象とする量子化値符号を含む量子化値系列を生成する。復号装置20は、量子化値系列に含まれる量子化値符号を逆量子化して量子化値を定める。
【0012】
次に、符号化装置10の機能構成例について説明する。
符号化装置10は、入力部122、量子化部124、量子化値記憶部126、量子化間隔推定部128およびエントロピー符号化部130を含んで構成される。
入力部122には、処理対象とする入力値が入力される。一度に入力される入力値(input)は、1個の要素値(element)であってもよいし、2個以上の要素値を含んでいてもよい。本願では、入力値に含まれる要素値を「入力要素値」(input element)と呼ぶ。
入力部122は、自部に入力される入力要素値を量子化部124に順次出力する。
【0013】
量子化部124には、入力部122から入力要素値が入力され、量子化間隔推定部128から量子化間隔(quantization interval)が入力される。量子化部124は、入力される入力要素値ziを、入力される量子化間隔Qiに従って量子化(quantize)して、その入力要素値の量子化値Ziを定めるとともに、その量子化値を示す符号(以下、「量子化値符号」)を定める。入力要素値ziは、入力値となる入力系列(input sequence)z1, …, zi, のうち、符号化処理の対象とする値である。i等は、個々の入力要素値を識別するためのインデックスを示す。
【0014】
1個の入力要素値に対する量子化間隔は、例えば、その値域全体に対して1通りの予め定めた値(スカラー)で与えられる。その場合には、入力要素値に対する量子化値は、その値の最小値から最大値の間でその量子化間隔で等間隔に離散化された(discretized)複数の離散値のうち、入力要素値に最も近似する値となる。1個の入力要素値に対する量子化間隔は、その値域を区分した複数の区間のそれぞれに対する1通りの予め定めた値で与えられてもよい。その場合には、量子化間隔は、区間ごとの1通りの区間別間隔を要素値として含むベクトルとなる。
【0015】
個々の区間は、各1個の量子化間隔で構成されてもよいし、2個以上の量子化間隔が含まれてもよい。2個以上の量子化間隔が含まれる区間に含まれる入力要素値に対する量子化値は、その区間を2個以上の量子化間隔に区分する複数の離散値のうち、その入力要素値に最も近似した離散値となる。従って、これらの離散値は、量子化値の候補となる。以下の説明では、量子化値の候補を「量子化候補値(quantized candidate)」と呼ぶことがある。量子化値符号は、複数の量子化候補値のそれぞれに対応する符号のうち、定めた量子化値に対応する符号となる。
【0016】
複数の量子化候補値のそれぞれに対応する符号は、例えば、その最小値から昇順に定められる番号、または、その番号を示すビット列であってもよい。例えば、ある量子化値1を、量子化間隔1を用いて得られた量子化値符号1と、量子化値1とは異なる他の量子化値2を、量子化間隔1とは異なる量子化間隔2を用いて得られる量子化値符号2は、等しくなることも、異なることもある。なお、以下の説明では、複数の量子化候補値のそれぞれに対する符号を「量子化候補値符号(quantized candidate code)」と呼ぶことがある。
量子化部124は、定めた量子化値を量子化値記憶部126に記憶し、その量子化値を示す量子化値符号をエントロピー符号化部130に出力する。
【0017】
量子化値記憶部126には、量子化部124が定めた量子化値Ziが順次記憶される。量子化値記憶部126に記憶される量子化値は、エントロピー符号化部130により符号化された量子化値符号に対応する。新たな量子化値Ziが記憶される時点では、より先行する処理済の入力要素値に対応する量子化値Z1, …,Zi-1が量子化値記憶部126に記憶された状態となる。
【0018】
量子化間隔推定部128は、所定の数理モデルを用いて、量子化値記憶部126に記憶された処理済の入力要素値の量子化値に基づいて処理対象とする入力要素値に対する量子化間隔と、その入力要素値に対する量子化候補値の確率分布を定める。本実施形態では、量子化間隔の候補となる値(以下、「量子化間隔候補値(quantization interval candidate)」、と呼ぶ)は、複数通り存在する。複数通りの量子化間隔候補値は、それぞれ実数または整数となる。量子化間隔推定部128には、複数通りの量子化間隔候補値を予め設定しておいてもよい。
【0019】
量子化間隔推定部128は、量子化候補値の確率分布を定めるための処理を、エントロピー符号化において一度に符号化処理を実行する単位(以下、「エントロピー符号化単位(entropy coding unit)」と呼ぶ)ごとに再設定(リセット)してもよい。エントロピー符号化単位は、N個(Nは、2以上の予め定めた整数)の量子化値符号を含んで構成される系列である。エントロピー符号化単位は、復号装置20におけるエントロピー復号単位(後述)に相当する。処理対象とする入力要素値に対する量子化値Ziの候補である量子化候補値の確率分布は、処理済の入力要素値に対する量子化値Z1, …,Zi-1のもとでの量子化候補値の条件付き確率分布である。量子化候補値の確率分布は、処理済の入力要素値に対する量子化値Z1, …,Zi-1から予測される予測値とみなすこともできる。本実施形態では、量子化候補値の確率分布は、量子化候補値ごとの出現確率を示す離散確率分布となる。量子化値は、それらの量子化候補値のうちの1つに相当する。量子化間隔推定部128は、エントロピー符号化単位ごとに、再設定直後の量子化値Z1に対する量子化候補値の確率分布として、予め設定された初期値P1に定める。初期値P1として、例えば、一様分布を適用してもよい。一様分布では、量子化候補値ごとの出現確率が互いに等しい実数値となる。
【0020】
量子化間隔推定部128に適用される数理モデルには、量子化間隔を定めるための数理モデル(以下、「量子化間隔モデル(quantization interval model)」と呼ぶ)と、量子化値の候補の確率分布を定めるための数理モデル(以下、「確率分布モデル(probability distribution model)」と呼ぶ)とがある。量子化間隔推定部128は、量子化間隔モデルの説明変数(explanatory variable)として、例えば、最新の所定の個数(例えば、i-1までのM個、Mは、1以上の所定の整数)の処理済の入力要素値に対する量子化値Zi-1-M, …, Zi-1を量子化値記憶部126から読み出し、目的変数(objective variable)として、その時点の入力要素値ziに対する量子化間隔候補値ごとの出現確率(occurrence probability)を算出する。量子化間隔推定部128は、最も高い出現確率を与える量子化間隔候補値を入力要素値ziに対する量子化間隔Qiとして定めることができる。量子化間隔推定部128は、処理済の入力要素値に対する量子化値Zi-1-M, …, Zi-1から処理対象とする入力要素値ziに対する量子化間隔Qiとを予測するとみなすこともできる。
【0021】
量子化間隔推定部128は、例えば、確率分布モデルの説明変数として読み出した量子化値Zi-1-M, …, Zi-1を採用し、その時点の入力要素値ziに対する量子化値Ziについての量子化間隔候補値ごとの出現確率を、量子化値Ziの候補である量子化候補値の確率分布P({Zi}|Zi-1-M, …, Zi-1)として算出する。{Zi}は、量子化値Ziの量子化候補値の集合を示す。算出される確率分布は、M個の処理済みの量子化値Zi-1-M, …, Zi-1が与えられていることを条件とする、量子化値Ziの条件付き確率分布となる。確率分布P({Zi}|Zi-1-N, …, Zi-1)は、量子化候補値ごとの出現確率で表現されてもよいし、それぞれの量子化候補値に対応する量子化候補値符号ごとの出現確率で表現されてもよい。
【0022】
数理モデルとして、例えば、回帰型ニューラルネットワーク(RNN:Recurrent Neural Network)、畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)、などのニューラルネットワークなどが適用できる。適用可能な数理モデルは、ニューラルネットワークに限られず、ランダムフォレスト(RF:Random Forest)、サポートベクタマシン(SVM:Support Vector Machine)など他の種類の機械学習モデル(machine learning model)であってもよい。
量子化間隔推定部128は、その時点の入力要素値ziに対して定めた量子化間隔Qiを量子化部124に出力し、量子化候補値の確率分布P({Zi}|Zi-1-M, …, Zi-1)をエントロピー符号化部130に出力する。
【0023】
エントロピー符号化部130には、量子化部124が定めた量子化値Ziに対応する量子化値符号が入力され、量子化間隔推定部128が定めた量子化候補値の確率分布P({Zi}|Zi-1-N, …, Zi-1)が入力される。エントロピー符号化部130は、複数の量子化値符号を含んで構成される量子化系列をなすエントロピー符号化単位ごとにエントロピー符号化(entropy coding)を行い、符号化系列を生成する。エントロピー符号化は、可逆符号化(reversible coding, ロスレス圧縮(lossless compression)とも呼ばれることがある)の一種である。後述するように、生成された符号化系列に対して、エントロピー符号化の逆処理(inverse processing)であるエントロピー復号(entropy decoding)を行って、もとの量子化系列を復元することができる。
【0024】
より具体的には、エントロピー符号化部は、
図4に例示される処理を実行して符号化系列を定めることができる。
(ステップS122)エントロピー符号化部130は、エントロピー符号化単位における個々の量子化値符号に対応する量子化候補値の確率分布P(Z
i|Z
i-1-N, …, Z
i-1)を順次乗算し、それらの総乗(product)を、その入力符号化系列の全体に対して与えられる量子化値候補の確率分布として算出する。算出される確率分布は、それぞれ量子化値候補を示す量子化候補値符号ごとの出現確率を示す。
【0025】
(ステップS124)エントロピー符号化部130には、予め複数通りの符号語(codeword)を設定しておく。符号語は、例えば、1以上のビットで構成されるビット列(bit sequence)をなす。複数の符号語をそれぞれ構成するビット列は、相互に異なる。エントロピー符号化部130は、低い出現確率を与える量子化候補値符号ほど大きい情報量(ビット長)を有する符号語を量子化候補値符号ごとに定め、個々の量子化候補値符号と1つの符号語を対応付けてなる符号語セットを保存する。エントロピー符号化部130は、量子化候補値符号の符号化において、例えば、ハフマン符号(Huffman coding)、算術符号化(arithmetic coding)などのいずれかの手法を用いることができる。
【0026】
(ステップS126)エントロピー符号化部130は、保存した符号語セットを参照して、入力された量子化値Ziに対応する量子化値符号と等しい量子化候補値符号に対応する符号語を特定する。
(ステップS128)エントロピー符号部130は、個々の量子化値符号に対して特定した符号語を、その量子化値符号が入力される順序で連結して符号化系列を生成する。エントロピー符号化部130は、生成した符号化系列を復号装置20に出力する。
【0027】
次に、復号装置20(
図1)の機能構成例について説明する。
復号装置20は、エントロピー復号部242、逆量子化部244、量子化値記憶部246、量子化間隔推定部248および出力部250を含んで構成される。
エントロピー復号部242には、符号化装置10から符号化系列がエントロピー復号単位ごとに入力され、量子化間隔推定部248から量子化候補値の確率分布P({Z
i}|Z
i-1-M, …, Z
i-1)が、復号された量子化値ごとに入力される。エントロピー復号部242は、符号化装置10から入力される符号化系列(以下、「入力符号化系列)と呼ぶ)に対してエントロピー復号を行ってN個の量子化値符号を含む量子化系列を生成し、生成した量子化値符号を、その順序に従って個々に逆量子化部244に出力する。
【0028】
後述するように、量子化間隔推定部248から入力される確率分布P({Zi}|Zi-1-M, …, Zi-1)は、逆量子化部244に出力した量子化値符号に基づく量子化値Ziに対する量子化候補値の確率分布P({Zi}|Zi-1-M, …, Zi-1)に相当する。エントロピー復号部242は、入力符号化系列と等しくなる復元符号化系列(reconstructed sequence)を再帰的に(recursively)定めることにより、個々の量子化値Ziを示す量子化値符号を含む量子化値符号を復号することができる。復元符号化系列とは、個々の量子化値Ziに対する量子化候補値の確率分布P({Zi}|Zi-1-M, …, Zi-1)を用いて復元される符号化系列を示す。
【0029】
より具体的には、エントロピー復号部242は、
図5に例示される処理を実行して量子化系列を定めることができる。エントロピー復号部242には、エントロピー符号化部130と同様に複数の符号語と、複数の量子化候補値符号をそれぞれ予め設定しておく。ここで、エントロピー復号部242は、エントロピー復号方法として、エントロピー符号化部130が用いたエントロピー符号化方法に対する逆処理に相当する手法を用いる。
【0030】
(ステップS222)エントロピー復号部242は、入力符号化系列をN個の符号語の順列に分割(segment)する。符号語の順列への分割において、エントロピー復号部242は、入力符号化系列の分割において、入力符号化系列の一部となるビット列と合致するビット列を有する符号語を順次特定する。一般に、入力符号化系列に含まれるN個の符号語の順列は複数通り存在する。また、予め設定した符号語の一部が、分割された順列に含まれないこと、または、他の一部が複数回以上含まれることもありうる。
(ステップS224)エントロピー復号部242は、個々の符号語に対応する量子化候補値符号を仮に定め、個々の符号語と対応する1つの仮に定めた量子化候補値符号を対応付けてなる符号語セットを記憶する。
【0031】
(ステップS226)エントロピー復号部242は、記憶された符号語セットを参照して、分割した符号語ごとに対応する量子化候補値符号を定め、入力符号化系列における配置順に従って符号語に対応する量子化候補値符号を量子化値符号として逆量子化部244に順次出力する。
(ステップS228)エントロピー復号部242は、個々の量子化値符号に対応する量子化値候補の確率分布P(Zi|Zi-1-N, …, Zi-1)を順次乗算し、それらの総乗を量子化系列の全体に対して与えられる量子化値候補の確率分布として算出する。
(ステップS230)エントロピー復号部242は、低い出現確率を与える量子化候補値符号ほど大きい情報量を有する符号語を量子化候補値符号ごとに再設定し、もとの量子化候補値符号に係る符号化セットを、その量子化候補値符号と対応する再設定した符号語を対応付けてなる符号語セットに更新する。
【0032】
(ステップS232)エントロピー復号部242は、記憶した符号語セットを参照して、入力された確率分布P(Zi|Zi-1-N, …, Zi-1)のそれぞれに対応する量子化値を与える量子化値符号と等しい量子化候補値符号を特定し、特定した量子化候補値符号に対応する符号語を特定する。
(ステップS234)エントロピー復号部242は、入力符号化系列を構成する個々の量子化値符号に対して特定した符号語を、特定される順序で連結して符号化系列を復元符号化系列として生成する。
【0033】
(ステップS236)エントロピー復号部242は、生成した復元符号化系列と入力符号化系列が等しいか否かを判定する。等しいと判定するとき(ステップS236 YES)、ステップS238の処理に進み、等しくないと判定するとき(ステップS236 NO)、ステップS222の処理に戻り、エントロピー復号部242は、ステップS222以降、本ステップまでの処理を繰り返す。但し、エントロピー復号部242は、繰り返される処理において、(1)および(2)のいずれか一方または両方を実行する。よって、異なる復元符号化系列が生成され、生成された復元符号化系列と入力符号化系列とが照合されることになる。
(1)ステップS222において、N個の符号語の順列への分割パターンを、実行済の処理で用いられていなかった新たな分割パターンに変更する
(2)ステップS224において、符号語と量子化候補値符号との対応付けてなる対応関係を、実行済の処理で用いられていなかった新たな対応関係に変更する。
【0034】
(ステップS238)エントロピー復号部242は、復元符号化系列をなすN個の符号語のそれぞれに対応する量子化値符号の順列をエントロピー復号の処理結果である量子化系列として確定する。エントロピー復号部242は、確定した量子化系列を逆量子化部244に出力する。その後、
図5の処理を終了する。
【0035】
なお、逆量子化部244は、エントロピー復号部242から入力され、確定した量子化系列に含まれる量子化値符号ごとに、当該量子化値符号に対する量子化間隔を用いて逆量子化し、量子化値Ziを算出する。逆量子化部244は、算出した量子化値Ziを出力部250に出力する。
出力部250は、逆量子化部244から入力される量子化値Ziを出力値の要素である出力要素値として保持する。出力部250は、出力要素値を含む出力値を復号装置20の外部または他の部材に出力する。
【0036】
逆量子化部244は、エントロピー復号部242から個々の量子化値符号が順次入力され、その量子化値符号に係る量子化値Ziに対する量子化間隔Qiが順次入力される。この段階で入力される量子化値符号は、ステップS226において入力されるエントロピー復号部242から入力される量子化値符号である。逆量子化部244は、個々の量子化値符号に対して、対応する量子化間隔Qiを用いて逆量子化して(de-quantize)量子化値Ziを算出する。逆量子化部244は、定めた量子化値を量子化値記憶部246に記憶する。
【0037】
量子化値記憶部246と量子化間隔推定部248が行う処理は、それぞれ量子化値記憶部126と量子化間隔推定部128が実行する処理と同様である。
即ち、量子化値記憶部246には、逆量子化部244が定めた量子化値Ziが順次記憶される。量子化値記憶部246に記憶される量子化値は、エントロピー復号部242が定めた量子化値符号に対応する。量子化値Ziが新たに記憶される時点では、より先行して定めた量子化値Z1, …,Zi-1が量子化値記憶部246に記憶された状態となる。
【0038】
量子化間隔推定部248は、量子化間隔モデルと、確率分布モデルを用いて、量子化値記憶部246に記憶された処理済の量子化値に基づいて量子化値Ziに対する量子化間隔Qiと、その量子化値Ziに対する量子化候補値の確率分布P({Zi}|Zi-1-N, …, Zi-1)をそれぞれ定める。量子化間隔推定部248は、定めた量子化間隔Qiを逆量子化部244に出力し、量子化候補値の確率分布P({Zi}|Zi-1-N, …, Zi-1)をエントロピー復号部242に出力する。
【0039】
エントロピー符号化部130、エントロピー復号部242は、それぞれ個々の量子化値を示す量子化値符号に対応する符号語を定める手法として、例えば、次の文献に記載の算術符号化法、対応する復号処理法を用いることができる。
Jorma Rissanen and Glen G Langdon. Arithmetic coding. IBM Journal of research and development, 23 (2):149-162, 1979
Glen G Langdon. An introduction to arithmetic coding. IBM Journal of research and development, 1984
Jun Han, et al. Deep Generative Video Compression. 33rd Conference on Neural Information Processing Systems (NeurIPS 2019), Vancouver, Canada, 2019
【0040】
(ハードウェア構成例)
符号化装置10の各部は、専用の部材を含んで構成されてもよいが、以下に説明する汎用の部材を含んで構成され、コンピュータとして機能してもよい。
図2は、本実施形態に係る符号化装置10のハードウェア構成例を示す概略ブロック図である。
符号化装置10は、プロセッサ102、ドライブ部106、入出力部108、ROM112、およびRAM114を含んで構成される。
【0041】
プロセッサ102は、符号化装置10の機能を発揮させるための処理や、符号化装置10を構成する各部の機能を制御する。プロセッサ102は、例えば、CPU(Central Processing Unit)である。
ドライブ部106は、記憶媒体104を着脱可能とし、記憶媒体104に記憶されている各種のデータを読み取り、または、各種のデータを記憶媒体104に記憶する。ドライブ部106は、例えば、半導体ドライブ(SSD:solid state drive)である。記憶媒体104は、例えば、RAM(Random Access Memory)、フラッシュメモリなどの不揮発性メモリ(volatile memory)である。
【0042】
入出力部108は、他の機器との間で無線または有線で各種のデータを入力または出力する。入出力部108は、他の機器と通信ネットワークを経由して、各種のデータを入出力可能に接続してもよい。入出力部108は、例えば、入出力インタフェース、通信インタフェースなどのいずれか、または、それらの組合せのいずれであってもよい。
【0043】
ROM(Read Only Memory)112は、符号化装置10の各部が実行する各種の処理を指示する命令が記述されたプログラム、その実行のためのパラメータなどの各種のデータ、符号化装置10の各部により取得された各種のデータを永続的に記憶する。なお、以下の説明では、プログラムに記述された命令で指示される処理を実行することを、「プログラムを実行する」、「プログラムの実行」などと呼ぶことがある。
RAM114は、主にCPU110の作業領域として用いられる。CPU10は、その起動に応じてROM112に記憶されたプログラムとパラメータをRAM114に記録する。そして、CPU110は、その実行により得られた演算結果、取得したデータなどをRAM114に一時的に記録する。
なお、復号装置20の各部も、専用の部材を含んで構成されてもよいが、
図2に例示されるハードウェア構成を含んで構成されてもよい。
【0044】
(機械学習モデルの例)
次に、本実施形態に係る量子化間隔推定部128、248で用いられる機械学習モデルの例について説明する。
図3は、本実施形態に係る機械学習モデルの一例としてCNNを示す。CNNは、人工ニューラルネットワークの一種であり、1層の入力層(input layer)、複数の中間層(intermediate layer, hidden layer)および1層の出力層(output layer)を備える。
図3に例示されるCNNは、入力層Il、L層(Lは、2以上の整数)の中間層Ml-1~Ml-L、および出力層Olを備える。各層は、それぞれ所定数の節点(ノード(node))を備える。複数の中間層には少なくとも1層の畳み込み層と1層のプーリング層が含まれる。
【0045】
入力層Ilの各節点は、自部に入力される入力値を次の層の少なくとも1つの節点に出力する。
出力層Olの各節点は、直前の層の少なくとも1つの節点から入力される入力値を外部に出力する。
畳み込み層(convolution layer)には、カーネル数(number of kernels)が予め設定される。カーネル数とは、それぞれ入力値に対する処理(例えば、演算)に用いるカーネルの個数に相当する。カーネル数は、通例、入力値の個数よりも少ない。カーネルとは、一度に1つの出力値を算出するための処理単位を指す。ある層において算出される出力値は、次の層への入力値として用いられる。カーネルは、フィルタとも呼ばれる。カーネルサイズ(kernel size)とは、カーネルにおける一回の処理に用いられる入力値の数を示す。カーネルサイズは、通例、2以上の整数となる。
【0046】
畳み込み層は、複数の節点のそれぞれに直前の層から入力される入力値に対してカーネルごとに畳み込み演算を行って畳み込み値(convolved value)を算出し、算出した畳み込み値とバイアス値(bias)を加算して補正値(corrected value)を算出する層である。畳み込み層は、算出した補正値に対する所定の活性化関数(activation function)の関数値を算出し、算出した出力値を次の層に出力する。なお、畳み込み層の各節点には直前の層から1個または複数の入力値が入力され、各節点における畳み込み値の算出のために、それぞれの入力値に対して独立な畳み込み係数が用いられる。畳み込み係数、バイアス値および活性化関数のパラメータは、1セットのモデルパラメータの一部となる。
【0047】
活性化関数として、例えば、正規化線形ユニット(rectified linear unit)、シグモイド関数(sigmoid function)などが利用できる。正規化線形ユニットは、所定の閾値(例えば、0)以下の入力値に対する出力値として、その閾値に定め、所定の閾値を超える入力値をそのまま出力する関数である。従って、この閾値は1セットのモデルパラメータの一部となりうる。また、畳み込み層については、直前の層の節点からの入力値の参照の要否、次の層の節点への出力値の出力の要否も、1セットのモデルパラメータの一部となりうる。
【0048】
プーリング層(pooling layer)は、直前の層の複数の節点からそれぞれ入力される入力値から1つの代表値を定め、定めた代表値を出力値として次の層に出力する節点を有する層である。代表値は、例えば、最大値、平均値、最頻値など複数の入力値を統計的に代表する値が用いられる。プーリング層にはストライド(stride)を予め設定しておく。ストライドとは、1つの節点に対して入力値を参照する直前の層の相互に隣接する節点の範囲を示す。そのため、プーリング層は、直前の層からの入力値を、より低い次元に縮約(ダウンサンプリング, down-sampling)して出力値を次の層に提供する層とみなすこともできる。
【0049】
(パラメータ学習)
量子化間隔推定部128、248が用いる機械学習モデルには、説明変数とする入力値が入力されるとき、目的変数とする出力値を演算するためのモデルパラメータを機械学習モデルに予め設定しておく。本願では、量子化間隔モデルに用いられるパラメータセットを「量子化間隔モデルパラメータ」と呼び、確率分布モデルに用いられるパラメータセットを「確率分布モデルパラメータ」と呼ぶことがある。
そこで、符号化装置10は、訓練データ(training data)に対してモデル学習処理を行って、それぞれの機械学習モデルのパラメータセットを取得するためのパラメータ学習部(図示せず)を備えてもよい。訓練データは、教師データ(supervised data)、学習データ(learning data)などとも呼ばれることがある。訓練データは、既知の説明変数と、その説明変数に対応する既知の目的変数との組であるデータセットを多数含んで構成される。
【0050】
モデルパラメータを取得するための訓練データとして、パラメータ学習部は、説明変数とする既知の入力値と、目的変数として、その入力値に対応する既知の出力値との組であるデータセットを複数通り取得しておく。そして、パラメータ学習部は、パラメータ学習において、個々のデータセットに含まれる入力値に対して所定の機械学習モデルを用いて算出される推定値に対する、そのデータセットに含まれる出力値からの損失の大きさが、訓練データ全体として最小化(minimize)されるように、その機械学習モデルのモデルパラメータを再帰的に算出することができる。
【0051】
損失の大きさの指標値として、例えば、差分二乗和(SSD:Sum of Squared Differences)、差分絶対値和(SAD:Sum of Absolute Differences)、交差エントロピー(cross entropy)、などが用いることができる。パラメータ学習部は、モデルパラメータの算出において、例えば、最急降下法(gradient descent)、確率的勾配降下法(stochastic gradient descent)、共役勾配法(conjugate gradient method)、誤差逆伝播法(back propagation)、などの手法を用いることができる。などの手法を用いることができる。なお、本願では、最小化とは、絶対的に最小にすることの他、より小さい損失を与えるモデルパラメータを探索するという意味も含む。従って、最小化の手順において、一時的に損失が大きくなることも生じうる。
量子化間隔推定部128、248は、それぞれパラメータ学習部が算出したモデルパラメータを、自部の機械学習モデルに設定することができる。
【0052】
次に、量子化間隔モデルの学習に用いる訓練データについて説明する。パラメータ学習部は、入力値(説明変数)として、直前の処理済の量子化値までのM個の量子化値Zi-1-M, …, Zi-1と、出力値(目的変数)として、その時点において処理対象とする量子化値Ziに対して定めた量子化間隔Qiを示す量子化間隔ベクトルを取得し、その入力値と出力値とを対応付けてなるデータセットを構成する。量子化間隔ベクトルは、そのベクトルが表現している量子化間隔に該当するか否かを、それぞれ整数値1、0で示す該当フラグを所定の量子化間隔候補値ごとに要素値として含んで構成される。従って、量子化間隔ベクトルに含まれる量子化間隔候補値のうち、定めた量子化間隔と等しい値に対応する該当フラグの値は1となり、その他の量子化間隔候補値に対応する該当フラグの値は0となる。
【0053】
パラメータ学習部は、出力値として示される量子化間隔Qiを定める際、その量子化値Ziを与える入力要素値ziに対して、個々の量子化間隔候補値ごとに所定のコスト値を算出し、量子化に係るコストが最も低いコスト値を与える量子化間隔候補値を量子化値Ziに対する最適な(optimal)量子化間隔Qiとして定める。コスト値は、情報量が多いほど高いコストを示す第1コスト成分と、量子化誤差が少ないほど低いコストを示す第2コスト成分とを合成して量子化コストを示す指標値を算出するための指標値である。一般に、量子化間隔Qiが大きいほど量子化値Ziを示すための量子化候補値符号の情報量は少なくなるのに対し、量子化誤差が大きくなる。第1コスト成分と第2コスト成分は、量子化間隔Qiの変化に応じて相反する(trade-off)変化傾向を有するため、与えられた入力要素値ziに対して1通りの量子化間隔Qiが定まる。従って、入力値としてのM個の量子化値Zi-1-M, …, Zi-1に対して量子化間隔モデルを用いて算出される出力値として、量子化間隔候補値ごとの信頼度が得られることが期待される。
【0054】
第1コスト成分として、例えば、量子化間隔Qiをもって量子化値Ziの表現に要する情報量の増加に応じて単調に増加する関数(例えば、比例)により与えられる実数値が適用できる。パラメータ学習部は、量子化間隔Qiに対して予め定めた量子化候補値符号のビット長に所定の第1の重み係数を乗じて得られる乗算値を第1コスト成分として定めることができる。量子化間隔Qiがスカラー値である場合には、パラメータ学習部は、量子化値Ziの値域幅Wiを除算して得られる商ζiを基底として得られる対数値を整数値に切り上げて得られる値log2[ceil(ζi)]を量子化候補値符号のビット長として算出することができる。ceil(…)は、実数値…に対する天井関数を示す。
【0055】
第2コスト成分として、例えば、量子化誤差の大きさを定量的に示す実数値が適用できる。パラメータ学習部は、例えば、入力要素値ziと量子化値Ziとの差分である量子化誤差の絶対値に所定の第2の重み係数を乗じて得られる乗算値を第2コスト成分として定めることができる。入力要素値、量子化値が、それぞれベクトルである場合には、絶対値に代えてSSD、SAD、交差エントロピーなどが適用可能である。
本願では、最適化とは、最も適切な量子化候補値を定めることの他、よりコストが低いコスト値を与える量子化候補値を探索するという意味も含む。従って、最適化の手順において、コスト値が増加することや、より大きいコスト値を与える量子化候補値が定まることがある。
【0056】
次に、確率分布モデルの学習に用いる訓練データについて説明する。パラメータ学習部は、入力値(説明変数)として、直前の処理済の量子化値までのM個の量子化値Zi-1-M, …, Zi-1と、出力値(目的変数)として、処理対象の量子化値Ziに対する量子化候補値の確率分布を取得し、その入力値と出力値とを対応付けてなるデータセットを構成する。量子化候補値の確率分布は、個々の量子化候補値の出現頻度に相当する。また、1つの量子化候補値に対して、複数の量子化候補値が存在する。そこで、パラメータ学習部は、量子化間隔Qiごとに個々の量子化候補値の出現頻度を計数し、計数した出現頻度を出現頻度の総和で除算することによって正規化して量子化候補値の確率分布を定めることができる。パラメータ学習部は、量子化候補値の出現頻度を計数する際、入力要素値ziごとに定めた量子化間隔Qiに対する量子化候補値のうち、入力要素値ziに対して定めた量子化値Ziと等しい量子化候補値の出現頻度を1回分増加(increment)し、その他の量子化候補値の出現頻度を維持する。従って、入力値としてM個の量子化値Zi-1-M, …, Zi-1に対して確率分布モデルを用いて算出される出力値として、量子化候補値ごとの出現確率、即ち量子化候補値の確率分布が得られることが期待される。
【0057】
(符号化処理)
次に、本実施形態に係る符号化処理について説明する。
図6は、本実施形態に係る符号化処理の一例を示すフローチャートである。
【0058】
(ステップS102)入力部122は、処理対象とする入力値を取得し、量子化部124に出力する。
(ステップS104)量子化間隔推定部128は、その時点までのN個の処理済の量子化値に対して量子化間隔モデルを用いて、処理対象とする量子化値の量子化間隔を定める。量子化間隔推定部128は、定めた量子化間隔を量子化部124に出力する。
【0059】
(ステップS106)量子化部124は、取得された入力値に含まれる入力要素値を量子化間隔推定部128において推定された量子化間隔を用いて量子化する。量子化部124は、量子化して得られた量子化値を量子化値記憶部126に記憶する。
(ステップS108)量子化間隔推定部128は、その時点までのN個の処理済の量子化値に対して確率分布モデルを用いて、その時点において処理対象とする量子化値に係る量子化候補値の確率分布を推定する。量子化間隔推定部128は、推定した確率分布をエントロピー符号化部130に出力する。
【0060】
(ステップS110)エントロピー符号化部130は、各エントロピー符号化単位について、量子化値ごとに推定された出現確率を用い、量子化部124が算出した個々の量子化値を示す量子化符号を含む量子化系列をエントロピー符号化する。エントロピー符号化部130は、エントロピー符号化を行って生成された符号化系列を出力する。その後、
図6に示す処理を終了する。
【0061】
(復号処理)
次に、本実施形態に係る復号処理について説明する。
図7は、本実施形態に係る復号処理の一例を示すフローチャートである。
【0062】
(ステップS202)量子化間隔推定部248は、その時点までのN個の処理済の量子化値に対して量子化間隔モデルを用いて、処理対象とする量子化値の量子化間隔を定める。量子化間隔推定部248は、定めた量子化間隔を逆量子化部244に出力する。
(ステップS204)量子化間隔推定部248は、その時点までのN個の処理済の量子化値に対して確率分布モデルを用いて、その時点において処理対象とする量子化値に係る量子化候補値の確率分布を推定する。量子化間隔推定部128は、推定した確率分布をエントロピー復号部242に出力する。
【0063】
(ステップS206)エントロピー復号部242には、エントロピー復号単位ごとの符号化系列が入力される。エントロピー復号部242は、量子化値ごとに推定された出現確率を用い、入力された量子化系列に対してエントロピー復号する。エントロピー復号部242は、エントロピー復号を行って生成された量子化系列に含まれる量子化符号を逆量子化部244に出力する。
(ステップS208)逆量子化部244は、エントロピー復号部242から入力された量子化符号に対して、量子化間隔推定部248から入力された量子化間隔を用いて逆量子化して量子化値を算出する。逆量子化部244は、逆量子化して得られた量子化値を量子化値記憶部246に記憶する。逆量子化部244は、エントロピー復号部242が確定した量子化系列に含まれる量子化符号に基づく量子化値を出力部250に出力する。
(ステップS210)出力部250は、逆量子化部244から入力される量子化値を出力要素値として含む出力値を出力する。
その後、
図7に示す処理を終了する。
【0064】
<第2実施形態>
次に、第2実施形態について説明する。以下の説明では、第1実施形態との相違点を主とする。第1実施形態と共通の構成、処理については、共通の符号を付して、その説明を援用する。
図8は、第2実施形態に係るデータ処理システム1の構成例を示す概略ブロック図である。データ処理システム1は、符号化装置10と復号装置20を含んで構成される。
符号化装置10は、入力部122、量子化部124、量子化値記憶部126、量子化間隔推定部128およびエントロピー符号化部130の他、確率分布推定部132と第2量子化部134を備える。
【0065】
確率分布推定部132は、所定の確率分布推定モデルを用いて、量子化値記憶部126に記憶された処理済の入力要素値の量子化値に基づいて処理対象とする入力要素値に対する量子化候補値の連続確率分布を定める。
確率分布推定部132は、その連続確率分布の特性を示す所定の分布関数のパラメータ(以下、「分布関数パラメータ」と呼ぶ)を定める。所定の分布関数として、例えば、正規分布(2次元以上の多次元正規分布も含まれる)、ポワソン分布、ラプラス分布、または、これらの重み付け和などが適用可能である。所定の分布関数が複数の正規分布の重み付け和である場合には、分布関数パラメータは、個々の正規分布に対する重み係数(weight)、平均(mean)および分散(variance)である。所定の分布関数がポワソン分布の重み付け和である場合には、分布関数パラメータは、個々のポワソン分布に対する重み係数、底(base, rate)および確率変数値(number of occurrences)である。所定の分布関数がラプラス分布の重み付け和である場合には、分布関数パラメータは、個々のラプラス分布に対する重み係数、スケール(scale)および位置(location)である。確率分布推定部132は、処理済みのM個の量子化値Zi-1-M, …, Zi-1に対して確率分布推定モデルを用いて、分布関数パラメータを算出する。確率分布推定部132は、算出した分布関数パラメータを第2量子化部134に出力する。
【0066】
確率分布推定部132が用いる確率分布モデルパラメータの学習に用いる訓練データには、直前の処理済の量子化値までのM個の量子化値Zi-1-M, …, Zi-1を入力値とし、処理対象の量子化値Ziに対する量子化候補値の確率分布P(Zi|Zi-1-N, …, Zi-1)を示す分布関数パラメータを出力値として採用し、その入力値と出力値とを対応付けてなるデータセットが多数含まれる。モデル学習部は、上記の手法で計数された分布関数P(Zi|Zi-1-N, …, Zi-1)に対して、所定の分布関数を仮定して公知の回帰分析を行って分布関数パラメータを予め定めてもよい。
【0067】
第2量子化部134には、量子化間隔推定部128から量子化間隔Qiが入力され、第2量子化部134から分布関数パラメータが入力される。第2量子化部134は、分布関数パラメータで示される連続確率分布p({zi}|Zi-1-N, …, Zi-1)を、量子化間隔推定部128から入力される量子化間隔を用いて量子化し、離散確率分布である量子化値候補の確率分布P(Zi|Zi-1-N, …, Zi-1)を生成する。確率分布P(Zi|Zi-1-N, …, Zi-1)は、量子化間隔により定まる量子化候補値ごとの出現確率を示す。より具体的には、第2量子化部134は、量子化間隔を用いて定まる量子化候補を与える入力要素値の値域ごとに連続確率分布p({zi}|Zi-1-N, …, Zi-1)を積分し、その量子化候補値の出現確率を算出する。第2量子化部134は、生成した確率分布P(Zi|Zi-1-N, …, Zi-1)をエントロピー符号化部130に出力する。
なお、第2量子化部134は、1次元の連続確率分布の積分演算において、その連続確率分布に対する累積分布関数(CDF:Cumulative Distribution Function)を用いてもよい。CDFは、連続確率分布の積分形である。連続確率分布の値域内の積分値は、その値域の上限に対するCDFの関数値から、その値域の下限に対するCDFの関数値を差し引いて得られる差分値となる。
【0068】
エントロピー符号化部130は、第1実施形態と同様に、確率分布P(Zi|Zi-1-N, …, Zi-1)を用いて量子化系列に対してエントロピー符号化処理を行う。量子化間隔推定部128において、確率分布P(Zi|Zi-1-N, …, Zi-1)の推定に係る構成が省略されてもよい。従って、量子化間隔推定部128には、確率分布モデルが設定されなくてもよい。
【0069】
エントロピー復号部242、逆量子化部244、量子化値記憶部246、量子化間隔推定部248および出力部250の他、確率分布推定部252と量子化部254を含んで構成される。
確率分布推定部252は、確率分布推定部132と同様に、確率分布推定モデルを用いて、量子化値記憶部246に記憶された処理済の量子化値に基づいて処理対象とする量子化値に対する量子化候補値の連続確率分布を定める。連続確率分布は、確率分布パラメータを用いて表される。確率分布推定部252は、定めた確率分布パラメータを量子化部254に出力する。
【0070】
量子化部254には、量子化間隔推定部248から量子化間隔Qiが入力され、量子化部254から分布関数パラメータが入力される。量子化部254は、第2量子化部134と同様な手法を用い、分布関数パラメータで示される連続確率分布p({zi}|Zi-1-N, …, Zi-1)を、量子化間隔推定部248から入力される量子化間隔を用いて量子化し、離散確率分布である量子化値候補の確率分布P(Zi|Zi-1-N, …, Zi-1)を生成する。量子化部254は、生成した確率分布P(Zi|Zi-1-N, …, Zi-1)をエントロピー復号部242に出力する。
【0071】
エントロピー復号部242は、第1実施形態と同様に、確率分布P(Zi|Zi-1-N, …, Zi-1)を用いて量子化系列に対してエントロピー符号化処理を行う。量子化間隔推定部248は、確率分布P(Zi|Zi-1-N, …, Zi-1)の推定に係る処理と構成を省略してもよい。従って、量子化間隔推定部248にも、確率分布モデルが設定されなくてもよい。
第2量子化部134または量子化部254から出力される確率分布を構成する量子化候補値は、その量子化候補値符号を用いて表されてもよい。
【0072】
次に、本実施形態に係る符号化処理について説明する。
図9は、本実施形態に係る符号化処理の一例を示すフローチャートである。
本実施形態に係る符号化処理は、ステップS102、S104、S106、S108a、S108bおよびステップS110の処理を有する。
本実施形態では、ステップS106の処理が終了した後、ステップS108aの処理に進む。
(ステップS108a)確率分布推定部132は、所定の確率分布推定モデルを用いて、処理済の入力要素値の量子化値に基づいて処理対象とする入力要素値に対する量子化候補値の連続確率分布を定める。
(ステップS108b)第2量子化部134は、確率分布推定部132が定めた連続確率分布を量子化間隔推定部128が定めた量子化間隔を用いて量子化し、離散確率分布である量子化値候補の確率分布を生成する。その後、ステップS110の処理に進む。
【0073】
次に、本実施形態に係る符号化処理について説明する。
図10は、本実施形態に係る復号処理の一例を示すフローチャートである。
本実施形態に係る符号化処理は、ステップS202、S204a、S204b、S206、S208およびステップS210の処理を有する。
本実施形態では、ステップS202の処理が終了した後、ステップS204aの処理に進む。
(ステップS204a)確率分布推定部252は、所定の確率分布推定モデルを用いて、処理済の量子化値に基づいて処理対象とする量子化値に対する量子化候補値の連続確率分布を定める。
(ステップS204b)量子化部254は、確率分布推定部252が定めた連続確率分布を量子化間隔推定部248が定めた量子化間隔を用いて量子化し、離散確率分布である量子化値候補の確率分布を生成する。その後、ステップS206の処理に進む。
【0074】
なお、上記の各実施形態に係る処理対象となる情報(以下、「処理対象情報」と呼ぶ)は、特定の種類の情報に限られない。処理対象情報とは、より具体的には、符号化装置10へ入力される入力値、符号化装置10において量子化される量子化値、または復号装置20において復号される量子化値が示す情報が該当する。処理対象情報は、空間的または時間的に逐次に取得され、量子化されて得られる量子化値として表現可能な情報であればよい。処理対象情報は、例えば、画像を示す画素ごとの信号値、画像の一部をなすブロックにおける予測符号化残差、もしくは、その周波数領域への変換係数、などのいずれであってもよい。処理対象情報は、所定の区間ごとの周波数特性を示す予測係数(predictive coefficients)、基本周波数(basic frequency)、調波成分(harmonic component)ごとの利得(gain)、などのいずれであってもよい。処理対象情報は、点群データ(point cloud)であってもよい。点群データは、三次元空間内の物体の表面の状態を示すデータである。点群データは、複数のサンプル点のそれぞれについて三次元空間内の座標と、その座標における状態(例えば、色、輝度、温度、圧力、等)を示すデータである。
【0075】
また、符号化装置10には、処理対象情報とする入力値が入力されてもよいし、自装置への入力データから処理対象情報を定めるために所定の演算処理を行うための特徴解析部(図示せず)を備えてもよい。特徴解析部の演算処理は、入力データから処理対象情報を定めるための専用のステップであってもよいし、公知の符号化処理をなす一部のステップであってもよいし、符号化を主目的としない他の処理(例えば、画像認識、音声認識、監視、など)の一部のステップであってもよい。
【0076】
特徴解析部は、例えば、画素ごとの信号値を示す画像データ、または座標ごとの信号値を示す点群データが入力データとして入力され、画素ごとの信号値を説明変数として所定の数理モデルを用いて算出される個々の要素値を含む特徴量(features)を処理対象情報として生成する。所定の数理モデルがニューラルネットワークである場合には、特徴解析部は、目的変数として得られる出力値を処理対象情報として提供してもよいし、いずれかの中間層において得られる演算値を処理対象情報として提供してもよい。
【0077】
復号装置20は、復号処理により得られた処理対象とする量子化値を出力してもよいし、取得された量子化値から所定の逆演算処理を行って復元された出力データを生成するための情報復元部(図示せず)を備えてもよい。情報復元部(図示せず)の演算処理は、処理対象データから出力データを生成するための専用のステップであってもよいし、公知の復号処理をなす一部のステップであってもよいし、復号を主目的としない他の処理(例えば、画像認識、音声認識、監視、など)の一部のステップであってもよい。
【0078】
情報復元部は、例えば、処理対象情報として復元される量子化値である特徴量を説明変数として所定の数理モデルを用いて画素ごとの信号値を演算し、算出された信号値を示す画像データを復元する。所定の数理モデルがニューラルネットワークである場合には、情報復元部は、説明変数として得られる入力値として処理対象情報を処理してもよいし、説明変数として入力値が入力されると仮定して所定の中間層において得られる演算値に代えて、処理対象情報が供給されてもよい。所定の中間層は、特徴解析部が特徴量を提供した中間層に対応付けられた階層であればよい。
処理対象情報は、スカラーで示されてもよいし、ベクトル、または、個々のサンプルが二次元以上のベクトルで示される高次元の変数値で示されてもよい。提供される処理対象情報は、例えば、個々のサンプルが、x行、y列、cチャネルで特定される要素値を含む特徴量であってもよい。数理モデルとしてニューラルネットワークが用いられる場合には、個々のサンプルは、各層を構成する1つのノードからの出力値もしくは演算値、または、その1つのノードへの入力値もしくは演算値であり、上記のインデックスiに対応する。
【0079】
なお、上記の説明では、量子化間隔モデル、確率分布モデルがそれぞれ数理モデルである場合を主としたが、それには限られない。
量子化間隔モデルは、入力値としてM個の量子化値Zi-1-M, …, Zi-1ごとに、出力値として入力値に対して得られる量子化間隔Qiとを対応付けて示すデータテーブルであってもよい。量子化間隔推定部128、248は、自部に設定された当該データテーブルを参照して、処理済のM個の量子化値Zi-1-M, …, Zi-1に対応する量子化間隔Qiを定めることができる。
確率分布モデルは、入力値としてM個の量子化値Zi-1-M, …, Zi-1ごとに、出力値として入力値に対して得られる量子化候補値の確率分布(または、当該確率分布の分布関数パラメータ)とを対応付けて示すデータテーブルであってもよい。量子化間隔推定部128、248または確率分布推定部132、252は、自部に設定された当該データテーブルを参照して、処理済のM個の量子化値Zi-1-M, …, Zi-1に対応する量子化候補値の確率分布(または、当該確率分布の分布関数パラメータ)を定めることができる。
【0080】
量子化間隔推定部128、248が、量子化値Ziに係る量子化間隔Qiを定める際に参照する処理済の量子化値Zi-1-M, …, Zi-1には、必ずしも量子化値Ziと空間的または時間的に隣接するサンプルの量子化値が含まれず、量子化値Ziと空間的または時間的に隔絶したサンプル(例えば、隣接フレーム(frame)、隣接ブロック(block)、または隣接スライス(slice)における同一位相のサンプル)の量子化値だけが含まれてもよい。同一位相とは、フレーム、ブロック、または、スライスなどの処理単位における相対的な順位または位置が等しいことを意味する。
量子化間隔推定部128、248または確率分布推定部132、252が、量子化値Ziに係る量子化候補値の確率分布(または、当該確率分布の分布関数パラメータ)を定める際に参照する処理済の量子化値Zi-1-M, …, Zi-1にも、必ずしも量子化値Ziと空間的または時間的に隣接するサンプルの量子化値が含まれず、量子化値Ziと空間的または時間的に隔絶したサンプルの量子化値だけが含まれてもよい。
【0081】
(最小構成)
次に、上記の実施形態の最小構成について説明する。
図11は、符号化装置10の最小構成を例示する概略ブロック図である。
図12は、復号装置20の最小構成を例示する概略ブロック図である。
図11に示すように、符号化装置10は、推定部128mと、量子化部124と、エントロピー符号化部130と、を備える。推定部128mは、処理済の量子化値に基づいて処理対象とする入力値の要素である入力要素値を量子化するための量子化間隔を定め、処理済の量子化値に基づいて処理対象とする入力要素値の量子化値の候補である量子化候補値の確率分布を定める。量子化部124は、推定部128mが定めた量子化間隔を用いて入力要素値を量子化して量子化値を定める。エントロピー符号化部130は、推定部128mが定めた確率分布を用いて前記入力要素値の量子化値を示す量子化値符号を含む量子化系列をエントロピー符号化する。
【0082】
図12に示すように、復号装置20は、推定部248mと、エントロピー復号部242と、逆量子化部244と、を備える。推定部248mは、処理済の量子化値に基づいて処理対象とする量子化値符号を逆量子化して量子化値を定めるための量子化間隔を定め、処理済の量子化値に基づいて量子化値の候補である量子化候補値の確率分布を定める。エントロピー復号部242は、推定部248mが定めた確率分布を用いて符号化系列をエントロピー復号して処理対象とする量子化値符号を含む量子化値系列を生成する。逆量子化部244は、量子化値系列に含まれる量子化値符号を逆量子化して量子化値を定める。
【0083】
符号化装置10によれば、処理済の量子化値に基づいて処理対象とする入力要素値に対する量子化間隔と、量子化候補値の確率分布が定まる。エントロピー符号化において、量子化候補値の確率分布に基づき量子化値を表現するための量子化値符号を定めることができる。
復号装置20によれば、処理済の量子化値に基づいて処理対象とする量子化値符号に対する量子化間隔と、量子化候補値の確率分布が定まる。エントロピー復号において、量子化候補値の確率分布に基づき量子化値を表現するための量子化値符号を定めることができる。
【0084】
そのため、符号化装置10から量子化間隔の情報が提供されなくても復号装置20は、符号化により得られた符号化系列から符号化装置10において量子化に用いられた量子化間隔、ひいては量子化値を再構成することができる。また、エントロピー符号化、エントロピー復号において、処理済の量子化値から定めた確率分布に基づいて処理対象の量子化値を含む量子化候補値を示す量子化符号を定めることができる。そのため量子化値の表現に係る情報量の低減と両立することができる。
【0085】
推定部128mは、量子化間隔推定部128(
図1)、または量子化間隔推定部128と確率分布推定部132(
図8)など、異なる形態で実現されてもよい。
例えば、推定部128mは、処理済の量子化値を説明変数とし、入力要素値を量子化するための量子化間隔を目的変数として設定された数理モデルを用いて、量子化部124が定めた処理済の量子化値から量子化間隔を定めてもよい。この構成により、処理済の量子化値から処理対象の入力要素値に対する量子化間隔が定まる。
また、推定部248mも処理済の量子化値を説明変数とし、処理対象とする量子化値符号を逆量子化するための量子化間隔を目的変数とする数理モデルを用いて、逆量子化部244が定めた処理済の量子化値から量子化間隔を定めてもよい。
これにより、処理済の量子化値から処理対象に対する量子化間隔が予測される。そのため、処理対象とする入力要素値の量子化または量子化値符号の逆量子化の際に、処理対象に応じた量子化間隔が取得される。そのため、量子化または逆量子化における遅延を抑制することができる。
【0086】
推定部128mは、処理済の量子化値を説明変数とし、処理対象とする量子化値の候補である量子化候補値の出現確率を示す確率分布関数のパラメータである分布関数パラメータを量子化するための量子化間隔を目的変数として設定された数理モデルを用いて、量子化部124が定めた前記処理済の量子化値から前記確率分布関数の分布関数パラメータを定めてもよい。また、符号化装置10は、確率分布関数を量子化間隔に基づく量子化候補値ごとに離散化して量子化候補値の確率分布を定める第2量子化部134(
図8)を備えてもよい。
推定部248mは、処理済の量子化値を説明変数とし、処理対象とする量子化値の候補である量子化候補値の出現確率を示す確率分布関数のパラメータである分布関数パラメータを量子化するための量子化間隔を目的変数として設定された数理モデルを用いて、逆量子化部244が定めた処理済の量子化値から確率分布関数の分布関数パラメータを定めてもよい。復号装置20は、確率分布関数を量子化間隔に基づく量子化候補値ごとに離散化して量子化候補値の確率分布を定める量子化部254(
図8)を備えてもよい。
これにより、量子化候補値の出現確率が、全体としてより少数の分布関数パラメータで表現される。そのため、量子化候補値の出現確率の算出に係る演算量を低減することができる。
【0087】
また、量子化間隔は、区間ごとの区間別量子化間隔をN(Nは、2以上の所定の整数)個含むベクトルであってもよい。当該区間は、入力要素値の値域をN個に区分した範囲である。区間ごとに区間別量子化間隔が異なりうるため、区間によって精度の異なる量子化値を得ることができる。
【0088】
また、符号化装置10は、画像を構成する画素ごとの信号値を説明変数とし、複数の要素値を含む特徴量を目的変数とする数理モデルを用いて、信号値から特徴量の要素値を入力要素値として定める特徴解析部を備えてもよい。
復号装置20は、複数の要素値を含む特徴量を目的変数とし、画像を構成する画素ごとの信号値を説明変数とする数理モデルを用いて、特徴量に含まれる要素値から画素ごとの信号値を定める情報復元部を備えてもよい。
この構成により、画素ごとの信号値を示す画像データから得られた特徴量を符号化することができる。また、復号された特徴量から画素ごとの信号値を示す画像データを再構成することができる。
【0089】
また、エントロピー符号化部130は、所定の符号化単位における入力要素値の量子化値ごとの量子化候補値の確率分布に基づいて、当該符号化単位における量子化候補値を示す符号である量子化候補値符号ごとの出現確率を定めてもよい。エントロピー符号化部130は、出現確率に基づいて量子化候補値符号に対応する符号語を定め、量子化値に対応する符号語を含む符号化系列を生成してもよい。
また、エントロピー復号部242は、所定の復号単位における量子化値符号が示す量子化値ごとの量子化候補値の確率分布に基づいて、当該復号単位における量子化候補値を示す符号である量子化候補値符号ごとの出現確率を定めてもよい。エントロピー復号部242は、定めた出現確率に基づいて量子化候補値符号に対応する符号語を定め、符号化系列を構成する符号語ごとに対応する量子化値符号を定めてもよい。
この構成により、符号化単位または復号単位ごとに量子化候補値符号ごとの出現確率に応じて符号語を定め、定めた符号語に対応する量子化候補値に相当する量子化値が表現される。そのため、符号化単位または復号単位ごとの符号化系列全体の情報量を低減することができる。
【0090】
なお、上記の符号化装置10、復号装置20は、それぞれ、その内部にコンピュータシステムを備えてもよい。例えば、上記のプロセッサは、コンピュータシステムの構成要素となりうる。して、上述した各処理の過程は、プログラムの形式でコンピュータ読み取り可能な記憶媒体に記憶され、このプログラムをコンピュータが読み出して実行することによって、それらの処理が行われる。コンピュータシステムは、OS(Operation System)、デバイスドライバ、ユーティリティプログラムなどのソフトウェアや周辺機器等のハードウェアを含むものとする。また、コンピュータ読み取り可能な記録媒体」とは、磁気ディスク、光磁気ディスク、ROM(Read Only Memory)、半導体メモリ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに、コンピュータ読み取り可能な記録媒体、とは、インターネット等のネットワークや電話回線等の通信回線を用いてプログラムを送信する場合に用いる通信線など、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリなど、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【0091】
また、上述した実施形態における符号化装置10または復号装置20の一部、または全部を、LSI(Large Scale Integration)等の集積回路として実現してもよい。符号化装置10または復号装置20の各機能ブロックは個別にプロセッサ化してもよいし、一部、または全部を集積してプロセッサ化してもよい。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現してもよい。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
【0092】
以上、本発明の好ましい実施形態を説明したが、本発明はこれら実施形態及びその変形例に限定されることはない。本発明の主旨を逸脱しない範囲で、構成の付加、省略、置換、およびその他の変更が可能である。
また、本発明は前述した説明によって限定されることはなく、添付の特許請求の範囲によってのみ限定される。
【0093】
上記各態様の符号化装置、復号装置、符号化方法、復号方法およびプログラムによれば、処理済の量子化値に基づいて処理対象とする入力要素値に対する量子化間隔と、量子化候補値の確率分布が定まる。エントロピー符号化またはエントロピー復号において、量子化候補値の確率分布に基づき量子化値を表現するための量子化値符号を定めることができる。そのため、符号化装置から量子化間隔の情報を提供しなくても復号装置は、符号化装置において量子化に用いられた量子化間隔、ひいては量子化値を再構成することができる。そのため量子化値を表現に係る情報量の低減と両立することができる。
【符号の説明】
【0094】
1…データ処理システム、10…符号化装置、20…復号装置、102…プロセッサ、104…記憶媒体、106…ドライブ部、108…入出力部、112…ROM、114…RAM、122…入力部、124…量子化部、126…量子化値記憶部、128…量子化間隔推定部、128m…推定部、130…エントロピー符号化部、132…確率分布推定部、134…第2量子化部、242…エントロピー復号部、244…逆量子化部、246…量子化値記憶部、248…量子化間隔推定部、248m…推定部、250…出力部、252…確率分布推定部、254…量子化部