热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于NN的编码:PreliminaryresultsofNeuralNetworkLoopFilter[DNNVC](Alibaba)

JVET-U0054在本提案中,提供了一个基于神经网络的环路滤波器(neuralnetworkbasedloopfilter,NNLF&

 JVET-U0054

在本提案中,提供了一个基于神经网络的环路滤波器(neural network based loop filter,NNLF)的初步结果。初步结果表明,在HD序列的RA配置下,NNLF对Y、U和V分量的编码增益分别比VVC高5.57%、12.55%和13.62%。

网络结构

本提案使用残差网络结构(ResNet),如图左所示,主要有m层的resblock组成,resblock的结果如右图所示,其中act指的是active function,即激活函数。网络总共64层,采用3x3x64的卷积核,使用ReLU作为激活函数

网络的输入是YUV444格式的,对于YUV420格式需要对色度分量进行上采样,上采样的方式是直接从相邻像素中进行复制。

网络的输出也是YUV444格式的,从YUV444到YUV420需要下采样,下采样的方式是为每个2x2色度块保存左上角位置处的像素值

训练

训练使用的是Vimeo90K数据集。利用VTM9.3对原始视频进行RA压缩,得到重建帧作为训练数据集。在我们的实现中,使用了32个res块,并且每个卷积层的通道数设置为64。对于卷积过程,使用3x3的卷积核。因此,总共大约有240万个模型参数。

根据Qp的不同,总共训练四个模型:{20-27, 28-32, 33-37, 38-45}

在训练过程中,首先将加载的帧裁剪成128x128的大小,以增加数据的多样性,同时降低复杂度。batch大小被设置为32,模型训练大约384000次迭代。使用Adam优化器,learning rate设置为0.0001

实验

在VTM9.3中SAO和ALF之间加入训练好的NNLF,基于帧级QP选择模型,整个帧都会进行滤波,每一个CTU存在一个flag控制是否使用滤波后的像素。

JVET-U0055

JVET-U0054中,提出了一种基于神经网络的环路内滤波器(NNLF,neural network based in-loop filter)方案。为了进一步提高编码性能,本文提出了一种用于NNLF的多密度网络(MDN,multi-density network )。NNLF位于Deblock和SAO之间,执行CTU级信令。

对于进行NN滤波前的重建帧,如果原始颜色平面大小不同,则首先对色度分量进行上采样,将其转换为YUV444。直接复制相邻样本以简化上采样过程。在推断过程中,仅保存每个2x2色度块的左上角样本。

下图展示了所提出的多密度网络的总体架构,它包括三个部分:预处理、密度学习density learning和后处理。核心设计在于多密度块(multi-density block),由一个基本分支和一个密度分支组成。基本分支包含一些残差块以全分辨率处理特征图。加入密度分支,学习特征样本之间的密度相关性,生成权重图。在密度分支中,首先采用下采样层获得半分辨率表示。一个Resblock跟随,然后一个上采样层被连接以生成与基本分支中的特征图大小相同的权重图。最后,将密度分支的权值图与基本分支的特征图进行元素乘积融合。

下采样程序、上采样程序和Resblock的结构如下图所示。在下采样过程中,采用步长为2的3x3卷积实现半下采样过程。在ReLU激活之后,进一步应用1x1卷积层和激活函数来增强非线性学习能力。在上采样过程中,采用像素Shuffle扩展空间分辨率,再进行ReLU激活。在上采样层还增加了1x1卷积;然后,在激活步骤中采用sigmoid函数来生成介于0和1之间的密度表示。我们实现中Resblock的结构如图2-(c)所示,它包含两个卷积层和旁路映射。

训练

严格遵循JVET-T2006中规定的训练条件。在BVI-DVC中随机选取200个序列,采用RA配置的VTM10.0进行编码。每个选定的序列用4个输入qp(22、27、32、37、42)编码5次。然后将重建图像转换成YUV444格式,并根据帧级QP{(min-34、35-40、41-46、47 max)}将其分为四个子集。对于每一个子集,将训练一个模型,详细信息总结在下表中。 

Training information

Mandatory

GPU Type

4x Telsa-V100-32G

CPU Type

Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz

Framework:

Pytorch 1.2.0

Epoch:

2000

Batch size:

32

 

Training time

70 hours

 

Total Parameter Number

3.44M/model

 

Parameter Precision (Bits)

32 (F)

 

Training set

BVI-DVC

Optional

Patch size

128x128x3

Learning rate:

1e-4

Optimizer:

ADAM

Loss function:

L2


实验结果


 

Random access Main10

 

Over VTM-10.0

 

Y

U

V

EncT

DecT

Class A1

-5.60%

-9.07%

-9.67%

99%

1750%

Class A2

-5.14%

-15.55%

-10.66%

97%

1696%

Class B

-5.47%

-13.39%

-15.04%

96%

1938%

Class C

-4.83%

-17.44%

-17.17%

91%

2071%

Class D

-6.85%

-18.22%

-21.18%

103%

2500%

Overall

-5.60%

-14.92%

-15.24%

97%

1998%


 

Random access Main10

 

Over VVenC-0.1.0.0

 

Y

U

V

EncT

DecT

Class A1

-5.84%

-9.10%

-9.70%

171%

 

Class A2

-5.15%

-13.85%

-9.43%

160%

 

Class B

-5.43%

-12.50%

-14.22%

160%

 

Class C

-4.82%

-17.26%

-17.24%

141%

 

Class D

-6.63%

-19.20%

-20.81%

217%

 

Overall

-5.57%

-14.59%

-14.77%

174%

 


JVET-V0074

本文提出了一种新的SDAN(Separate density attention network ),以在模型性能和复杂性之间实现更好的折衷。该模型总共只有100万个参数,与JVET-U0055[1]中的MDN相比,参数减少了70%。

提出的网络总体架构如下图1所示。网络包括主分支、一个密度分支和三个注意力分支,如图2所示。主分支由26个块组成,在特征提取和处理中起着关键作用。密度分支由一个下采样块三个resblock和一个上采样块组成,旨在利用不同采样密度下的多尺度特征。在注意力分支方面,采用空间注意机制来降低复杂度。具体地,首先应用通道方向的下采样,然后再进行空间方向的下采样。在达到目标较小分辨率后,进一步采用空间向上采样,最后利用sigmoid函数生成权重图。将权重图融合到主分支和密度分支的特征图上,对特征进行软加权。更多的设计原则和细节可以参考论文:Z. Wang, C.Y. Ma, R.-L. Liao, Y. Ye, Multi-Density Convolutional Neural Network for In-Loop Filter in Video Coding, DCC 2021.

数据集为BVI-DVC,严格遵循JVET-T2006中规定的训练条件。根据帧QP(0-31、32-36、37-41、42-46、47 max)分别训练5个模型。在推理过程中,首先通过直接复制相邻样本将要送入网络的重建帧转换为YUV444格式。对于输出,只保存每个2x2色度块的左上角样本。基于神经网络的环路滤波位于Deblock和SAO之间。

对于网络的输出帧,将进一步发出帧级比例因子和CTU级开/关标志。缩放过程为:

PNN和Prec分别是网络的输出和输入。

实验结果


 

Random access Main10

 

Over VTM-10.0

 

Y

U

V

EncT

DecT

Class A1

-6.16%

-10.60%

-11.27%

1.04

67.48

Class A2

-4.69%

-14.97%

-12.21%

1.02

65.23

Class B

-5.08%

-13.41%

-14.69%

1.02

108.14

Class C

-4.29%

-16.62%

-15.45%

0.99

125.78

Overall

-5.01%

-14.02%

-13.71%

1.02

95.83

Class D

-5.88%

-15.76%

-18.28%

1.18

362.50


 

Random access Main10

 

Over VTM-10.0

 

Y

U

V

EncT

DecT

Class A1

-6.44%

-11.55%

-11.89%

1.04

84.15

Class A2

-5.23%

-15.88%

-13.16%

1.02

71.77

Class B

-5.73%

-14.46%

-15.82%

1.03

97.67

Class C

-4.76%

-17.44%

-16.43%

0.99

127.32

Overall

-5.52%

-14.96%

-14.67%

1.02

99.49

Class D

-6.37%

-16.54%

-18.98%

1.19

473.19


 

 


推荐阅读
  • 通过使用CIFAR-10数据集,本文详细介绍了如何快速掌握Mixup数据增强技术,并展示了该方法在图像分类任务中的显著效果。实验结果表明,Mixup能够有效提高模型的泛化能力和分类精度,为图像识别领域的研究提供了有价值的参考。 ... [详细]
  • 最近在看GitHub上的一个很火的项目是:ImageSharp。这是一个纯.netcore的图像处理库,没有使用其他的任何依赖。在看这个项目过程中激发了我对图像文件编码解码的兴趣。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 如何撰写适应变化的高效代码:策略与实践
    编写高质量且适应变化的代码是每位程序员的追求。优质代码的关键在于其可维护性和可扩展性。本文将从面向对象编程的角度出发,探讨实现这一目标的具体策略与实践方法,帮助开发者提升代码效率和灵活性。 ... [详细]
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
  • 深入解析OSI七层架构与TCP/IP协议体系
    本文详细探讨了OSI七层模型(Open System Interconnection,开放系统互连)及其与TCP/IP协议体系的关系。OSI模型将网络通信过程划分为七个层次,每个层次负责不同的功能,从物理层到应用层逐步实现数据传输和处理。通过对比分析,本文揭示了OSI模型与TCP/IP协议在结构和功能上的异同,为理解现代网络通信提供了全面的视角。 ... [详细]
  • 在启用分层编译的情况下,即时编译器(JIT)的触发条件涉及多个因素,包括方法调用频率、代码复杂度和运行时性能数据。本文将详细解析这些条件,并探讨分层编译如何优化JVM的执行效率。 ... [详细]
  • 在探讨设计模式六大原则之二——里氏替换原则时,许多初学者可能会对其名称感到困惑。实际上,这一原则强调的是子类应当能够完全替代其基类,而不会影响程序的正确性。通过深入解析这一原则,我们可以更好地理解其在面向对象设计中的重要性和应用方法。本文将详细探讨里氏替换原则的理论基础及其在实际开发中的具体实践,帮助读者掌握这一关键设计模式原则。 ... [详细]
  • Panabit应用层流量管理解决方案
    Panabit是一款国内领先的应用层流量管理解决方案,提供高度开放且免费的专业服务,尤其擅长P2P应用的精准识别与高效控制。截至2009年3月25日,该系统已实现对多种网络应用的全面支持,有效提升了网络资源的利用效率和安全性。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 在当前的软件开发领域,Lua 作为一种轻量级脚本语言,在 .NET 生态系统中的应用逐渐受到关注。本文探讨了 Lua 在 .NET 环境下的集成方法及其面临的挑战,包括性能优化、互操作性和生态支持等方面。尽管存在一定的技术障碍,但通过不断的学习和实践,开发者能够克服这些困难,拓展 Lua 在 .NET 中的应用场景。 ... [详细]
  • 资源管理器的基础架构包括三个核心组件:1)资源池,用于将CPU和内存等资源分配给不同的容器;2)负载组,负责承载任务并将其分配到相应的资源池;3)分类函数,用于将不同的会话映射到合适的负载组。该系统提供了两种主要的资源管理策略。 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • 5.Numpy 索引(一维索引/二维索引)
    本文内容是根据莫烦Python网站的视频整理的笔记,笔记中对代码的注释更加清晰明了,同时根据所有笔记还整理了精简版的思维导图,可在此专栏查看,想观看视频可直接去他的网 ... [详细]
  • python教程分享Pytorchmlu 实现添加逐层算子方法详解
    目录1、注册算子2、算子分发3、修改opmethods基类4、下发算子5、添加wrapper6、添加wrapper7、算子测试本教程分享了在寒武纪设备上pytorch-mlu中添加 ... [详细]
author-avatar
虚幻星际
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有