视频编码器测评 - BD-Rate

BD-Rate

背景

全称 Bjøntegaard-Delta rate,用于评价不同的视频编码器RD(率-Rate,失真-Distortion)性能
是 Gisle Bjøntegaard 等人在 H.264 标准开发过程中提出的

分类

通常分为:

  1. BD-PSNR
    反映相同码率下平均 PSNR(dB) 差值
  2. BD-BR(BD-BitRate)
    反映相同 PSNR 下平均的码率变化比例(%)

测试点的选取

由于测试的工作量比较大,通常只选用4个典型的 QP 值,H.26X 中常采用的是:

  • 22
  • 27
  • 32
  • 37

其他编码算法由于量化方法的不同会选择不同的 QP 值,但为了方便比较通常要求器码率画着 PSNR 变化范围相近。

Calc Steps

  • 过程中的 log 变换的原因涉及统计学知识,增加数据的线性关系

BD-PSNR

  1. 取积分区间: (minBitRate, maxBitRate)
    1. minBitRate: max(min(anchor), min(testCase))
    2. maxBitRate: min(max(anchor), max(testCase))
  2. 码率以 10 为底取对数,以做 log 变换
  3. 三次函数曲线拟合(拟合方法见“多项式插值”小节)
  4. 将「3’」的函数在「1’」区间上积分
  5. 积分差值除以积分区间,以取平均,得到 BD-PSNR

BD-BR (BD-BitRate)

  1. 取积分区间: (minPSNR, maxPSNR)
    1. minBitRate: max(min(anchor), min(testCase))
    2. maxBitRate: min(max(anchor), max(testCase))
  2. 码率以 10 为底取对数,以做 log 变换
  3. 三次函数曲线拟合(拟合方法见“多项式插值”小节)
  4. 将「3’」的函数在「1’」区间上积分
  5. 积分差值除以积分区间,以取平均
  6. 对数反变换(将「5’」的平均值作为 10 的幂),得到testCase(被测编码器)相对于基准编码器(anchor)的倍数
  7. 「6’」减 1 得到变化率

多项式插值(函数图像拟合)

Lagrange 插值容易严重 overshoot,目前的版本中通常采用形状保持的分段三次 Hermite 插值法(SPPCHIP)。

Linear

  • 完美区间单调性
  • 不平滑

Lagrange

相当于 p = 0 的 Hermite

  • 非常平滑
  • 严重 overshoot

Hermite

CHIP
形式

三次 Hermite 插值多项式 (Cubic Hermite Interpolation Polynomial, CHIP),一阶可导

n = 2, p = 1 的 Hermite

设已知两点 $(x_0, x_1)$ 和 $(x_1, y_1)$,$x_0<x_1$,假设其一阶导数存在 $d_0, d_1$

可得

H 为三次 Hermite 基函数。

单调性

需要保证 $[x_0, x_1]$ 两点间的函数图像单调

$d_0, d_1$ 是两端点处的导数

=> 单调必要条件: $d0, d1, \delta$ 同号

如果 $\delta=0$, 单调充要条件 $d_0=d_1=0, P(x)$ 是常数

如果 $\delta\neq0$,

没看懂,略~

  1. 如果 $d_0-2\delta+d_1=0$

    • P(x) 为二次或线性函数

    • P‘(x) 为线性函数或常数 => 导数(d)单调

      => $min{d_0, d_1}\leq P’(x)\leq max{d_0, d_1}$

      然后看不懂了…d0 d1 同号不是已知条件啊

  2. 如果 $d_0-2\delta+d_1\neq0$

    • P’(x) 为二次函数

      当 $\delta>0$ 且 $d_0+d_1-2\delta<0$ 时,$\because$ P’(x) 开口向下,且 $0\leq min{d_0, d_1}\leq P’(x) \therefore$ P(x) 单增

      当 $\delta<0$ 且 $d_0+d_1-2\delta>0$ 时,$\because$ P’(x) 开口向上,且 $P’(x)\leq max{d_0, d_1}\leq 0 \therefore$ P(x) 单减

      ????为什么能直接用 d0 d1 同号这个条件,其他情况呢?

PCHIP

分段三次 Hermite 插值多项式 (Piecewise Cubic Hermite Interpolation Polynomial, PCHIP),一阶可导,不一定二阶可导

  • 样点一阶导数存在
SPPCHIP

形状保持的分段三次 Hermite 插值多项式(Shape-Preserving Piecewise Cubic Hermite Interpolation Polynomial, SPPCHIP),是在保持区间单调性的同时,使得样点处的一阶导数连续,从而使得插值后的曲线更加平滑。

样点斜率是于左右相邻点的两个斜率加权调和平均值,且保证单调。

非边界点 $d_k, k=2,3,…,n-1$ 一阶导数

  1. $\delta_{k-1}\times\delta_k\leq0$ 时,$d_k=0$ 是局部极值点

  2. $\delta_{k-1}\times\delta_k>0$ 时,$d_k$ 为这俩的加权调和平均

边界点 $d_1, d_n$ 的一阶导数

$d_1 的 p q 取前两个, d_n 的 p q 取最后两个$​

Spline

分段三次样条插值

  • 比 SPPCHIP 更加平滑,又不会像 Lagrange 严重 overshoot
  • 但是区间不一定单调

Spline 与 PCHIP 区别

  • Spline 更平滑,二阶导数连续
  • 如果数据的函数足够平滑,Spline 更精确
  • 如果数据不平滑,PCHIP 不会 overshoot 且更少出现震荡
  • PCHIP 使用成本更低

Expand

ROC (Receiver Operating Characteristic)

用来比较不同分类器的相关性能

横坐标 FPR (costs),纵坐标 TPR (benefits)

ROC Curve 越接近左上角,分类器性能越好,意味着分类器在假阳率很低的同时获得了很高的真阳率

AUC (Area Under the Curve of ROC)

  • ROC 曲线下的面积

  • BD-Rate 相当于 AUC

物理意义

任取一对(正、负)样本,正样本的 score 大于负样本的 score 的概率。

References

Example Code

我的 TypeScipt 实现:(YoungSx/bjontegaard.js)[https://github.com/YoungSx/bjontegaard.js]

Changelog

  • 20210722: BD-PSNR 计算步骤有误,之前多出了类似 BD-BR 的后续步骤,现已修改
不知道 >_< 本站总访问量