ICIP2020:利用CNN降低VVC帧内编码复杂度

2023-11-05 11:20

本文主要是介绍ICIP2020:利用CNN降低VVC帧内编码复杂度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文来自ICIP2020论文《CNN ORIENTED COMPLEXITY REDUCTION OF VVC INTRA ENCODER》

VVC复杂度增加很大一部分是因为其块划分方式,除了四叉树划分还支持二叉树和三叉树划分。该论文通过使用CNN在All Intra(AI)模式下预测块的划分方式减少计算复杂度。

上图Fig.1是VVC的块划分模式,二叉树和三叉树可以在水平和垂直方向上划分产生矩阵子块。VVC需要对每种划分模式计算RD cost,选择RD cost的作为最终模式计算量非常大。论文通过实现一个CNN,以64x64的亮度块作为输入,输出一个向量表示每个4x4块边界的概率。通过这个向量编码器可以跳过一些不可能的划分模式。

CNN结构

论文提出的CNN结构基于ResNet,如上图Fig.2所示。网络输入为64x64的亮度CU,输出为480维向量。由于帧内预测需要使用左边一列和上边一行的信息,所以实际网络输入为65x65。

上图Fig.3是CU划分和输出向量。例如向量第一个值表示左上角4x4块下边界的概率。

训练过程

训练就是通过优化CNN权重使得损失函数值最小,损失函数定义如下:

其中y是ground truth向量,lambda=10^-5,c_k是惩罚项。使用Adam optimizer来优化CNN网络。训练使用python3.6下的tensorflow框架以keras做后端。GPU为RTX 2080Ti,batch size为256,共训练10 epochs。

训练集由65x65的亮度块和对应的ground truth向量组成。65x65的亮度块从Div2k1数据集和4K图像数据集中提取出来。由于我们在AI配置下实验,所以只使用数据集中的静态图像而不是视频,这比只使用视频数据集的训练带来了更多的多样性。CNN输入的65x65的亮度块归一化到[0,1]。ground truth向量是将输入图像在VTM6.1 AI配置下编码后计算得到,收集每个64x64块的划分信息生成480维向量(1表示划分,0表示不划分)。

VTM中使用CNN

要在VTM6.1中集成上面训练好的CNN模型。由于CNN是在python中训练的,使用frugally-deep library在c++中调用。

上面Fig.3展示了使用CNN判断一些水平划分模式(BTH和TTH)是否跳过。边界划分概率通过下面方式计算,首先计算S1,S2,S3,S4的平均概率,分别表示为P(S1),P(S2),P(S3),P(S4)。BTH划分概率由S2和S3中较小的概率决定,

TTH划分概率由S1和S4计算,min(P(S1),P(S4))。垂直划分模式(BTV,TTV)计算方式类似。四叉树划分模式QT的划分概率由BTH和BTV的概率决定(即水平和垂直都进行二叉树划分相对于进行四叉树划分),

对上面的模式获得概率后就可以判断该边界是不是需要按该模式划分,

如果概率小于阈值beta则跳过该模式。当beta越大时,划分的次数越少,复杂度降低的更多同时编码失真也更大。论文中beta范围为[0,100]。

实验

实验在VTM6.1中AI配置下进行,操作系统为ubuntu16.04.5,Intel Xeon E5-2603处理器1.70GHz主频。测试集为官方测试序列,共包含26条序列分为6类, A (3840x2160),B (1920x1080), C (832x480), D (416x240), E (1280x720),F(832x480到1920x1080)。量化参数QP为22,27,32,37。

评价指标使用BD-Rate和复杂度降低(编码时间减少),

其中T-R是正常编码时间,T_C是加入文中算法后的编码时间(不包括CNN执行时间)。

上表是和几个算法的结果比较,beta=10,20,30。可以看到尤其是在高分辨率视频上文中算法表现更好,这是因为CNN的训练集由1080p和4k图像构成。

上图是本文算法和其他算法的复杂度降低与BD-Rate关系图。包括A-E序列,其中A-B序列用圆圈表示其他用叉表示。

更详细的内容请参考ICIP2020论文《CNN ORIENTED COMPLEXITY REDUCTION OF VVC INTRA ENCODER》

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

这篇关于ICIP2020:利用CNN降低VVC帧内编码复杂度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/349509

相关文章

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

form表单提交编码的问题

浏览器在form提交后,会生成一个HTTP的头部信息"content-type",标准规定其形式为Content-type: application/x-www-form-urlencoded; charset=UTF-8        那么我们如果需要修改编码,不使用默认的,那么可以如下这样操作修改编码,来满足需求: hmtl代码:   <meta http-equiv="Conte

LeetCode:64. 最大正方形 动态规划 时间复杂度O(nm)

64. 最大正方形 题目链接 题目描述 给定一个由 0 和 1 组成的二维矩阵,找出只包含 1 的最大正方形,并返回其面积。 示例1: 输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4 示例2: 输入: 0 1 1 0 01 1 1 1 11 1 1 1 11 1 1 1 1输出: 9 解题思路 这道题的思路是使用动态规划

深度学习实战:如何利用CNN实现人脸识别考勤系统

1. 何为CNN及其在人脸识别中的应用 卷积神经网络(CNN)是深度学习中的核心技术之一,擅长处理图像数据。CNN通过卷积层提取图像的局部特征,在人脸识别领域尤其适用。CNN的多个层次可以逐步提取面部的特征,最终实现精确的身份识别。对于考勤系统而言,CNN可以自动从摄像头捕捉的视频流中检测并识别出员工的面部。 我们在该项目中采用了 RetinaFace 模型,它基于CNN的结构实现高效、精准的

算法复杂度的简单介绍

算法复杂度是衡量算法执行效率和资源消耗的指标,通常分为时间复杂度和空间复杂度。时间复杂度评估算法执行所需时间随输入规模的变化,空间复杂度评估算法占用内存的增长情况。复杂度通常用大O符号来表示,它描述了最坏情况下的增长速率。 1. 时间复杂度 时间复杂度表示算法执行所需时间随输入规模 nnn 的变化关系。常见的时间复杂度如下(从快到慢): a. 常数时间:O(1) 不管输入大小如何,算法总是

LeetCode:3177. 求出最长好子序列 II 哈希表+动态规划实现n*k时间复杂度

3177. 求出最长好子序列 II 题目链接 题目描述 给你一个整数数组 nums 和一个非负整数k 。如果一个整数序列 seq 满足在下标范围 [0, seq.length - 2] 中 最多只有 k 个下标i满足 seq[i] != seq[i + 1] ,那么我们称这个整数序列为好序列。请你返回 nums中好子序列的最长长度。 实例1: 输入:nums = [1,2,1,1,3],

4-4.Andorid Camera 之简化编码模板(获取摄像头 ID、选择最优预览尺寸)

一、Camera 简化思路 在 Camera 的开发中,其实我们通常只关注打开相机、图像预览和关闭相机,其他的步骤我们不应该花费太多的精力 为此,应该提供一个工具类,它有处理相机的一些基本工具方法,包括获取摄像头 ID、选择最优预览尺寸以及打印相机参数信息 二、Camera 工具类 CameraIdResult.java public class CameraIdResult {

word转PDF后mathtype公式乱码以及图片分辨率降低等一系列问题|完美解决

word转PDF后mathtype公式乱码以及图片分辨率降低等一系列问题|完美解决 问题描述 最近在投一篇期刊论文,直接提交word文档,当时没有查看提交预览,一审审稿意见全是:公式乱码、公式乱码、乱码啊!!!是我大意了,第二次提交,我就决定将word文档转成PDF后再提交,避免再次出现公式乱码的问题。接着问题又来了,我利用‘文件/导出’或‘文件/另存为’的方式将word转成PDF后,发现公式

Python字符编码及应用

字符集概念 字符集就是一套文字符号及其编码的描述。从第一个计算机字符集ASCII开始,为了处理不同的文字,发明过几百种字符集,例如ASCII、USC、GBK、BIG5等,这些不同的字符集从收录到编码都各不相同。在编程中出现比较严重的问题是字符乱码。 几个概念 位:计算机的最小单位二进制中的一位,用二进制的0,1表示。 字节:八位组成一个字节。(位与字节有对应关系) 字符:我们肉眼可见的文字与符号。