KTAソフトウェアの手引き @ PCSJ/IMPS 2008

PCSJ/IMPS2008 in 修善寺に参加してきました.ナイトセッションのメモです.
とりあえず,前半のみ.後半はまた今度.

イントロダクション

KTAはKey Technical Areasの略で,ITU-T SG16 Question 6 Visual Coding Expert Group (VCEG)で議論されている.2005年10月にスタートし,JM11.0ベースに新しい符号化ツールを追加している

KTA#1 符号化効率改善,KTA#2 計算量削減

計算量削減とは,JMで非常に時間のかかるRDoptの高速化ではなく(残念!),仕組みとしての計算量削減.例えば,Entropy Slice(Parallel CABAC)はエントロピー符号化だけでSliceが組めるようになっている.ちなみに,CABACは非常に演算時間はかかるが,並列化が難しい処理でした.

KTA(のソースコード)は http://iphome.hhi.de/suehring/tml/download/KTA/ で手に入る."KTA HHI"で検索すれば出てくるはず.

符号化効率改善の考え方

B%の符号量削減を実現するためには,「独立に」A%の符号量削減可能な符号化ツールが何個必要になるのか?
N=\text{Ceil}(\frac{\log (1-B/100)}{\log (1-A/100)})
10%削減できるツールが7個あれば,符号量を半分にできる!

寄書(Contributions)

ラポータ会議(議長権限で開催,年3回) http://wftp3.itu.int/av-arch/jvt-site/
JVTの会議 http://wftp3.itu.int/av-arch/video-site/
他に,MPEGの会議があるが,一般公開はされていない

マニュアル

JMのマニュアル:JVT-X072:12.3のマニュアル
KTAのマニュアル:VCEG-AF11 1.3のマニュアル KTA Toolの説明
ただし,configファイルのオプションは突然変わったりするので,ヘッダファイル等で確認した方がよい.

評価方法

Bjontegaard metricを使う.詳しくはVCEG-M33を参照のこと.

量子化一定で4点符号化結果(PSNRビットレート)をカーブで近似し,積分してゲインを計算(ΔPSNR(dB),ΔBitrate(%))

実行ファイルはavsnr.exeで,av-arch/video-site/H26L/avsnr4.zipから入手可能.また,Excelマクロ(VCEG-AI11参照)もある.

実験条件も整備されつつある.VCEG-AA10, VCEG-AE10r1, VCEG-AH10,VCEG-AI10を参照のこと.
例えば,GOP構造は,IPPP(baseline),IPPP(High),IBBP(Hight),階層双方向予測構造(High),I-Only(Baseline, High)など.また,解像度はQCIF, CIF,720p,1080pなど.量子化一定で4点(QP=22,27,32,37)符号化.最強のH.264/AVCと比較!!

最強のH.264/AVCと比較というのが以外と辛い.いわゆるAVCよりもかなり効率が上がっている上に,計算時間も半端ない.階層双方向予測構造というのがキー.

階層双方向予測構造(Hierarchical Bi-prediction structure)

方式:双方向予測しているフレームからも参照する入れ子の予測構造
目的:時間的冗長度の削減
対wavelet戦略(MCTF)
今使われているのは8枚飛ばし
10%ぐらいレート削減

適応量しか丸め処理 ARO Adaptive Rounding Offset

ミッドトレッド+一様量子化が現状
入力値Xの絶対値の期待値E{x}と,逆量子化後の再生値E{Q[x]}の期待値をそろえるようにオフセットを追加
mobile 10Mbps で5dBとかあがる.基本的に高ビットレート時に効く.

ピクチャ単位の複数符号化 Picture based multi-pass encoding

複数のpicture parameter setを切り替えて,重み付き予測と量子化パラメータを制御
目的:ピクチャレベルの最適化
特に重み付き予測係数の最適化に予測効率向上
silent shuttlestart 10%以上あがる
一見静止しているようなシーケンスでも,重み付き予測を積極的に利用するとかなり効率が改善される.シーケンス依存なので,まったく効かない場合もある.

KTAの特徴

C言語

  • Rate Distortion Optimization
    • MEとモード決定は別ループ
    • 符号化結果をメモリで保持
  • 補間フィルタ処理は1画面単位で結果をメモリで確保
  • 豊富なEncoding技術
    • PictureレベルのRDO
    • 量子化の最適化技術
    • 高速ME
  • KTA Toolは#define文で分離

QCIFはフルサーチ,大きな画像はEPZSを使う
config(cfg)ファイルは後ろに書いた方が優先されるので,後ろに書き足すと良いですよ

デコーダーの速度を測るときは,ファイル出力をしないように

global.hでグローバル変数が定義されている.以下の構造体に着目

  • input:入力パラメータ
  • img:ピクチャ単位でのパラメータ
推奨したいこと
  • ソースコード管理システムの導入
  • Coding規約は守ろう!
  • 自分のコードは#defineで分離
  • Decoderは必ず作成しよう
  • Encoderの局所複合画像とDecoderの復号画像が一致するか確認!!
  • 絵を見てみよう!