JA EN
体系動画圧縮
·★ 会員·論文·13分で読めます

ニューラル圧縮 — 学習するコーデック

JPEGの量子化テーブルもH.264の予測モードも、人間が実験して手で決めた表でした。ニューラル圧縮はその設計自体をデータから学習させます。オートエンコーダとエントロピーモデルという2本柱、量子化が微分できない問題の回避策、ハイパープライア、そしてJPEG AIに至る標準化の焦点と現場の落とし穴までを1から解説します。

対象textタスクcompression

End-to-end Optimized Image Compression


比喩: 辞書を手で編むか、読ませて覚えさせるか

JPEGの量子化テーブルは、人間の目がどの細かさの模様に鈍いかを心理実験で測り、技術者が64個の数値を1つずつ決めて標準に書き込んだ表です。H.264のイントラ予測モードもAV1の変換の種類も同じで、誰かが「自然画像にはこういう構造が多いはずだ」と仮説を立て、実装し、標準化会議で証拠を出して合意を取る。この積み重ねが30年続いてきました。

ニューラル圧縮はここをひっくり返します。どういう変換を使い、どの成分を粗く捨て、次に来る値をどう予測するかを、人が決めずに大量の画像から学習させるという発想です。手で編んだ辞書と、読ませて覚えさせた辞書の違いだと思ってください。前者は理由を説明できますが、後者は説明できない代わりに、実際のデータの偏りをそのまま吸収します。

どのコーデックにも共通する3つの箱

面白いことに、ニューラル圧縮は既存コーデックの骨格を捨てていません。JPEGもH.264も、そしてニューラル圧縮も、中身は同じ3つの箱の並びです。

  1. 変換: 画素をそのまま扱わず、情報が少数の値に集まる別の座標系に移す
  2. 量子化: 移した先の値を粗く丸める。ここで初めて情報が失われる(非可逆の正体)
  3. エントロピー符号化: 丸めた値を、出やすい値ほど短いビット列に置き換える

JPEGならDCT・量子化テーブル・ハフマン符号、H.264なら整数変換・QP・CABACが各箱に入っています(3つ目の理屈はエントロピー符号化を1からで扱っています)。ニューラル圧縮が差し替えるのは、箱の並びではなく箱の中身です。変換はニューラルネットに、確率予測もニューラルネットになり、量子化だけは丸めのまま残る。この構図に以降の話が全部ぶら下がります。

正体はオートエンコーダ

変換を担当するのは、画像を小さな表現に潰してから戻すネットワーク — オートエンコーダです。入力画像を xx、潰す側(解析変換)を gag_a、戻す側(合成変換)を gsg_s、丸めを QQ と書くと、コーデック全体はこれだけです。

x^=gs ⁣(Q ⁣(ga(x)))\hat{x} = g_s\!\left(Q\!\left(g_a(x)\right)\right)
(1)

読み下すと「画像を gag_a で特徴の並びに変え、それを丸めて整数にし、gsg_s で画像に戻す」。丸めた整数の並び y^=Q(ga(x))\hat{y} = Q(g_a(x)) が、実際にファイルへ書き込まれる中身です。

普通のオートエンコーダとの違いは2つ。中間表現を整数に丸めること(小数のままでは有限ビットで書けない)と、次元を小さくすること自体が目的ではないことです。目的はあくまでビット数です。似た骨格を持つVAEとの関係はVAEを1から実装するを読むと腑に落ちます。

ビット数はどこから来るのか — エントロピーモデル

では、そのビット数はどこで決まるのでしょうか。丸めた値をファイルに書くのは算術符号やANSですが、符号化器は確率分布を外から渡されないと1ビットも縮められません。この確率を出す係が、学習コーデックのもう1本の柱、エントロピーモデル py^p_{\hat{y}} です。

情報理論が保証するのは、確率 pp の値を書くのに必要な符号長がおよそ log2p-\log_2 p ビットだということ。したがって1枚に必要なビット数は、

R=E[log2py^(y^)]R = \mathbb{E}\left[-\log_2 p_{\hat{y}}(\hat{y})\right]

つまり「実際に来た値に、モデルがどれだけ高い確率を割り当てられたか」の期待値です。予測が当たるほどファイルは小さくなる。圧縮率の改善とは、予測精度の改善そのものなのです。

FIG 1エントロピーモデルが吐くのは、こういう確率の棒グラフです。分布が尖るほど実際に来た値の符号長 −log₂p は短くなり、平らなほどビットを食う。学習コーデックの改善とは、この棒グラフをどれだけ尖らせられるかの勝負です

何を最小化するのか — レート歪み最適化

ビット数 RR を小さくするだけなら真っ黒な画像を返すのが最強なので、画質の劣化 DD(多くはMSE、知覚寄りならMS-SSIM)と足し算にします。

L=R+λD\mathcal{L} = R + \lambda D
(2)

「ビットと歪みを λ\lambda という重みで釣り合わせた合計を最小にせよ」。λ\lambda を大きくすると歪みの罰が重くなり、モデルはビットを使ってでも忠実に戻そうとします。この λ\lambda こそが、ユーザーから見える「品質設定」の正体です。

既存コーデックとの決定的な差はここです。JPEGやH.264のレート歪み最適化は、エンコード時にブロックごとに決め打ちのモードから選ぶ作業でした。学習コーデックでは同じ最適化が訓練時に一度だけ、コーデック全体に対して行われ、変換もエントロピーモデルも一本の損失から同時に形作られる。だから「エンドツーエンド最適化」と呼ばれます。

ところが式(1)には、勾配法にとって致命的な部品が入っています。丸め です。丸め関数はほとんどの場所で傾きがゼロ、境界では不連続。このまま逆伝播しても に勾配が届きません。

この先にあるもの

§

ここから先は会員限定です

解説記事371本・教科書26章・学生モード48単元・論文精読6本が、月額¥490ですべて読み放題になります。新しい解説は毎日3本ずつ増えます。いつでも解約でき、解約後も期間の終わりまで読めます。

会員の方はログインすると続きが表示されます

参考文献

  1. End-to-end Optimized Image Compression. arXiv:1611.01704論文ページ·PDF
  2. Variational Image Compression with a Scale Hyperprior. arXiv:1802.01436論文ページ·PDF
  3. Joint Autoregressive and Hierarchical Priors for Learned Image Compression. arXiv:1809.02736論文ページ·PDF
  4. High-Fidelity Generative Image Compression. arXiv:2006.09965論文ページ·PDF

本記事は上記論文の本文にもとづいて執筆しています。数値・主張は原典を優先してください。

コメント

コメントにはログインが必要です