实验内容:
guided环路滤波后的编解码匹配
实验环境:
Windows10;HM-16.9;VS2019;YUVEYE;Tensorflow1.14;Pycharm;
实验任务:
HEVC中,重建图像会经过去方块滤波(deblocking filter)和样本自适应缩进滤波(sample adaptive offset filter,简称SAO)。我们的任务是进行滤波的率失真优化(RDO),即重建图像在经过deblock之后,会被输入GUIDED_CNN神经网络中进行滤波。之后将根据cnn滤波后的结果与SAO滤波后的结果进行比较,选择效果更佳的滤波方式。
实验步骤:
1.加入神经网络(使用C调py模式)
1.1 vs中配置python环境
1.2 调用cnn网络
1.3 保存重建图像,得到cnn后psnr结果
2.选择RDO
2.1 计算SAO后psnr
2.2 比较并替换
3.编码相关信息
3.1 编码SAO信息
3.2 编码CNN信息
4.解码匹配
4.1 解码码流中的信息
4.2 选择CNN模式的frame进行残差补偿
问题总结:
1.在经过了cnn之后,我们不能立刻将cnn后的rec图像放入Pic,并替换原本的图像,因为我们还需要原本的图像进行sao之后的数据,然后进行比较。所以应该新开辟一个区域,存放cnn后的图像,然后在经过比较之后才能进行替换。
2.SAO并不是再process时就写进码流的,内部也有一个RDO,会选择最佳的模式进行保存,然后encode阶段将offset数据写进码流之中,所以我们只需要再encode阶段进行控制就可以了。
3.在进行cnn滤波和sao滤波时,我们只会针对Y分量进行RDO,因此UV分量还是需要使用SAO进行滤波以及编解码。
优化:
1.目前A的编写主要采用了CAVLC的编码方式,因此在码流会占据比较大内存,如果我们可以做到使用CABAC进行传递,那么我们的传递效率还会得到一定的提升,因为码流中传递的A必定会在量化裁剪后限定在[0,15],因为使用CABAC维护概率模型时,理论上来说也不会产生太大问题。
2.目前采用的是c调py,后面需要tensorfolw模型转成ftlite放入HEVC中