VVC码率控制改进

  本文来自提案JVET-Y0105 《An improved VVC rate control scheme》,提案对VVC的码率控制做了一些改进,主要包括三部分,第一,CTU级的skip和非skip块码率分配。第二,基于GOP size和IntraPeriod设置滑动窗口。第三,将QDF扩展到低帧率情况。

简介


CTU级码率分配


当前的CTU级码率分配方式中,每个CTU的初始权重由帧级lambda和内容相关的因子alpha和beta决定,

  \Omega _{i} =(\frac{\lambda _{frame} }{\alpha _{i} } )^{\frac{1}{\beta _{i} } }

  \lambda _{frame}=\alpha \ast bpp^{\beta }

默认的RD模型无法精准描述skip块的特征,因此提案对skip和非skip块单独处理,首先,skip CTU的码率计算如下,

  bits_{skip}=scale\ast bpp\times P_{skip}

其中scale是经验因子,设为0.4,P_skip是skip CTU的像素数量。则非skip CTU的码率分配问题就变为以下约束优化问题,

  minJ=\sum_{i=1}^{N_{non-skip}}D_{i}\ s.t.\sum_{i=1}^{N_{non-skip}}R_{i}\le T_{frame}-T_{skip}

转换为非约束优化问题,

minJ=\sum_{i=1}^{N_{non-skip}}D_{i}+\lambda_{non-skip}(\sum_{i=1}^{N_{non-skip}}R_{i}-(T_{frame}-T_{skip}))

 其中\lambda _{non-skip}可以使用牛顿法求  参数以使non-skip CTU分配的码率最优,

  bits_{i}=(T_{frame}-T_{skip})\ast \frac{\Omega _{i}}{ {\textstyle \sum_{j=1}^{N_{non-skip}}\Omega _{j}} }

  \Omega _{i}=(\frac{\lambda _{non-skip}}{\alpha _{i}} )^{\frac{1}{\beta _{i}} }

牛顿法最大迭代次数设为20,可以根据下面条件提前终止,

  \left | \lambda _{i+1}^{non-skip} - \lambda _{i}^{non-skip}\right | < 0.001

滑动窗口设置 


在GOP级码率分配中,滑动窗口SW用于使码率变化更平滑。SW会影响GOP级和帧级码率,

  T_{AvgPic}=R_{PicAvg}+\frac{R_{PicAvg}\cdot N_{coded}-R_{coded}}{SW}

  T_{GOP}=T_{AvgPic}\cdot N_{GOP}

由于intra帧的影响, T_{AvgPic} 经常会算出负数导致GOP级码率被截断为200比特。在HM中当SW设为40时,LD和RA配置的GOP size分别为4和8。在VTM中,LD和RA配置的GOP size分别为32和8,固定SW不适合当前配置和将来扩展,因为提案根据GOP size和IntraPeriod(IP)计算SW,

  SW=\alpha \ast GOP/max(32,IP)+\beta

alpha和beta分别设为20和60。

QDF扩展到低帧率配置


在VTM中根据下列条件判断是否使用基于QDF的码控,

if (encRCSeq->getAdaptiveBits() > 0 && encRCSeq->getLastLambda() > 0.1)m_lastLambda = encRCSeq->getLastLambda()

m_lastLambda在GOP Size=IntraPeriod配置(低帧率)下不会更新。

为了将QDF扩展到低帧率,上述条件修改为,

m_encRCSeq->getAdaptiveBits() > 0 && m_listRCPictures.size() >= m_encRCSeq->getGOPSize()

实验结果


实验平台为VTM14.0,提案方法在LDB和RA配置下YUV的BD-Rate分别为-0.65%/-0.65%/-0.51%和 -1.38%/-1.59%/-1.63%,如表1,

提案的CTU级码率分配方法的结果如表2,

提案的SW设置方法结果如表3,

提案的CTU级码率分配方法和SW设置同时开启的结果如表4,

表5是将QDF扩展到低帧率的结果,

表6是同时开启SW和QDF的结果,

感兴趣的请关注微信公众号Video Coding

### VVC ISAF 的技术背景 VVC(Versatile Video Coding)作为新一代视频压缩标准,在提升编码效率的同时引入了许多新的工具和技术。其中,Intrusive Software-Defined Radio Access Network Function (ISAF) 是一种用于优化网络功能的技术框架[^1]。 #### ISAF 的定义与作用 ISAF 主要应用于软件定义无线电接入网(SD-RAN),通过灵活的软件配置实现对视频数据流的高效处理和传输。它能够动态调整资源分配策略,从而适应不同场景下的带宽需求和延迟敏感度。具体而言,ISAF 提供了一种机制来增强视频帧内预测性能,并支持更高效的码率控制算法[^2]。 #### 实现细节 在实际部署中,ISAF 结合了多尺度分组密集网络(Multi-scale Grouped Dense Network, MGDNet)以及最可能模式列表(Most Probable Mode, MPM)。MGDNet 被设计用来改进帧内预测精度,而 MPM 列表则确保了预测方向的选择更加智能化。以下是其实现的关键点: 1. **MGDNet 集成** 使用深度学习模型提取特征图谱,这些特征被进一步划分为多个子集以匹配不同的分辨率层次结构。此过程显著提高了复杂纹理区域的重建质量。 2. **MPM 扩展** 根据已有资料,即使不启用额外选项如 Multiple Reference Line Prediction (MRL) 或 Intra Sub-partitions (ISP),VVC 中的标准 MPM 列表也已包含六个候选预测模式[^3]。这为后续扩展提供了基础架构。 3. **编译环境搭建** 若要验证上述理论效果,则需按照官方指南完成 VTM 测试平台安装工作。例如,在 Ubuntu 20.04 上执行如下命令可以初始化开发环境: ```bash sudo apt update && sudo apt install build-essential cmake git libnuma-dev git clone https://github.com/VideoCodingTestModel/vtm.git cd vtm/source mkdir build && cd build cmake .. make -j$(nproc) ``` 4. **YUV 至 RGB 转换逻辑** 当前主流做法依赖矩阵运算完成颜色空间变换操作。典型公式如下所示: ```python import numpy as np def yuv_to_rgb(yuv_image): m = np.array([[1., 0., 1.402], [1., -0.344136, -0.714136], [1., 1.772, 0.]]) rgb_image = np.dot(yuv_image[:, :, :3], m.T) rgb_image[..., 0] -= 179.456 rgb_image[..., 1] += 135.456 rgb_image[..., 2] -= 226.816 return rgb_image.clip(0, 255).astype(np.uint8) ``` #### 总结 综上所述,VVC ISAF 不仅继承了传统 RAN 功能的优势,还融入先进的人工智能组件以满足未来超高清媒体服务的需求。其核心理念在于利用软硬件协同效应降低整体功耗水平,同时维持较高的视觉体验指标。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值