2019-周报14

我们论文中使用的网络仅对YUV图像的Y通道进行放大,所以测试性能的时候需要得到SHM中原插值器放大后的重构参考图像,将其中Y通道的值替换为我们网络的输出,UV通道不变,使用替换后的YUV数据作为参考层编码EL层,并进行对比。SHM工程中并没有将此插值器编译为可执行文件给我们使用,所以需要学习SHM工程,更改其中插值器部分源码进行试验。好在有蒋昊师兄之前的工作参考,节省了很多时间。

本周完成了测试数据的准备,清楚了测试的整个流程,剩下的工作预计能在接下来的一周完成。

SHM源码学习

测试使用的SHM版本为 12.0,开发环境为Visual Studio 2012。SHM是在HM的基础上进行扩展得到,整个工程包含十个项目,我们主要使用其中的TAppEncoder进行试验,所以重点阅读了此部分代码。

打开TAppEncoder项目的encmain.cpp文件,首先能够看到的是三个重要的类,TAppEncTop, TAppEncCfg, TAppEncLayerCfg。 其关系如UML图所示,TAppEncTop为最顶层类,所有编码功能均能由此类完成,其继承了TAppEncCfg类,该类用于解析输入的配置文件。TAppEncLayerCfg为以上两类的友元类,TAppEncCfg将配置文件的解析结果存入此类

图1.UML-Enc

在参数解析完毕后调用TAppEncTop中的encode()函数开始编码,这也是整个工程的核心。进入该编码函数,在进行了一系列初始化之后进入了 compressGOP() 函数,随后再是compressSlice(),对每一个LCU进行编码,每编完一个LCU进行一次更新,LCU的大小根据图片的信息的复杂度不同而不同。

而我们测试需要更改的是TComPrediction::upsampleBasicPic()部分,此部分对BL层进行放大作为增强层的预测信息。

数据处理

数据处理部分主要包括以下几个部分

  • 基础层重构数据(BL reconstructed image)获取
  • 基础层重构数据Y通道提取输入超分网络放大
  • 使用SHM插值器得到放大后的YUV数据
  • 将通过网络放大的Y通道数据与通过自带插值器放大的UV数据结合
  • 将组合之后的数据作为EL层参考数据,编码EL层

目前完成了数据处理的前三部分

Share Comments