(如需转载等事宜请联系"我爱计算机视觉")
作者单位:腾讯PCG ARC实验室
论文链接:https://arxiv.org/pdf/2205.05069
代码链接:https://github.com/TencentARC/Efficient-VSR-Training
笔者言: VSR的训练雀食很费时间,本文提出多重网格训练和大型minibatch的办法来加速训练。客观的讲,空间周期变化对PSNR的影响相较时间周期要敏感一些,大型minibatch的方法固然可以加快速度但是使用中还需考虑显存问题。整体看来,时间周期加上对学习率的调整是个不错的加速选择。

看点

有效地训练有竞争力的VSR模型是一个具有挑战性的问题,它通常比训练对应的图像模型需要多出一个数量级的时间。现有的VSR方法通常从头到尾训练具有固定空间和时间大小的模型。固定大小通常设置为较大的值以获得良好的性能,但训练缓慢。本文展示了逐步从小到大(空间/时间维度)训练视频模型的可能性。整个训练分为几个阶段,早期阶段的训练空间形状较小。每个阶段内时间大小从短到长变化。这种多重网格训练策略可以加速训练,因为大部分计算都是在较小的空间和较短的时间上进行的。为了进一步加速GPU并行化,本文还研究了在不损失精度的情况下进行大minibatch训练,使得各种VSR模型能够在不降低性能的情况下大幅提高训练速度(最高可达6.2倍)。
(这图怎么看着30.90dB比30.91dB还高)

方法

多重网格训练

提高VSR精度的一种常见做法是训练更多的帧。然而随着帧数的增加,训练速度会变慢(下图a),因为模型需要处理更多的时间信息,空间尺寸同理(下图b),那么以较大和固定的尺寸来进行训练显然是欠优的。
一个直观的方法是首先以较小的空间和时间大小训练VSR模型,然后逐渐增大,即以一种简单到困难的方式。具体说,在训练的早期阶段,网络以较小的空间和时间大小进行训练,这相对更容易、更快。然而由于小尺寸信息有限,导致欠佳的表现。可以通过增加空间和时间大小来提高性能,因为较大的输入尺寸能使网络专注于融合更多信息和重建更精细的细节。通过这种方式,大多数训练迭代都是以较小的空间和较短的时间大小进行的,以加快训练。基于以上讨论,本文提出了一种多网格训练策略,如下图。该策略采用两个周期(空间和时间)的分层设计来改变空间和时间大小。

空间周期: 对于空间周期,不同的空间大小和每个空间阶段的持续时间是变长的。如果空间大小从较小的值开始,训练会更快,然而这会带来训练精度下降(如16×16)。原因可能是由于这些小patch的信息不足,进而导致不准确的光流估计。因此,空间周期中的空间大小不应太小。此外,为了逼近baseline精度,最后一个空间阶段的空间大小将设置为baseline中的默认大小(H×W)。本实验中将整个训练过程平均分为我们将训练过程平均分为s=2s=2s=2个空间阶段。这两个阶段的空间大小分别设置为max(32×32,H/2×W/2)max(32×32,H/2×W/2)max(32×32,H/2×W/2)和H×WH×WH×W。通过随机裁剪原始帧,生成不同空间大小的训练样本。
时间周期: 不同的时间大小和每个时间阶段的持续时间也是变长的。时间维度越长,训练时间就越长,在时间长度非常小(如3)的情况下,由于无法提供足够的补充信息,VSR的性能会相应下降。因此,本实验中时间周期中的时间长度最小为6,并逐渐扩大,直到在基线中达到原始时间长度T。本文将每个时间周期平均划分为f个时间阶段。此外,实验表明同时增加空间和时间大小会导致次优结果。因此,本文采用两个周期的分层设计来改变空间和时间大小,而不是同步地改变它们。对于每个空间阶段,时间大小会在一个完整的时间周期内发生变化,从而在整个训练过程中总共产生p=s×fp=s×fp=s×f个时空阶段。本实验中将空间周期平均分为f=3f=3f=3个时间阶段。这三个时间阶段中的时间长度以递增的方式设置:max(6,T/2)max(6,T/2)max(6,T/2),3T/43T/43T/4和TTT。这三种时间尺度涵盖了一个直观的范围,在实践中效果良好。
动态学习率调度器: 通常,VSR训练中的学习率将初始化为一个相对较大的值,然后随着训练的进行而衰减,将其应用到多重网格训练中时,在训练更大的空间和时间时学习率将变小,这会阻碍网络的探索能力。本文提出了一种动态学习率调度器,它可以在切换空间/时间大小时调整学习率以适应不同的任务难度。具体地,当空间或时间大小改变时,调度器将学习率重新调整为较大的值。采用余弦退火策略以更好地收敛,在第t个迭代时的学习率ηt\eta_{t}ηt​的公式如下:ηt={cos⁡(t−∑j=1s(t)−1PjItotal )×η,0<s(t)≤p−1,cos⁡(t−∑j=1p−1PjPp)×η,s(t)=p−1\eta_{t}=\left\{\begin{array}{ll} \cos \left(\frac{t-\sum_{j=1}^{s(t)-1} P_{j}}{I_{\text {total }}}\right) \times \eta, & 0<s(t) \leq p-1, \\ \cos \left(\frac{t-\sum_{j=1}^{p-1} P_{j}}{P_{p}}\right) \times \eta, & s(t)=p-1 \end{array}\right. ηt​=⎩⎪⎪⎨⎪⎪⎧​cos(Itotal ​t−∑j=1s(t)−1​Pj​​)×η,cos(Pp​t−∑j=1p−1​Pj​​)×η,​0<s(t)≤p−1,s(t)=p−1​式中,ηηη表示初始学习率,PjP_jPj​表示时空阶段j的训练迭代次数,ItotalI_{total}Itotal​表示总训练迭代次数,满足∑j=1pPj=Itotal\sum_{j=1}^{p} P_{j}=I_{\text {total}}∑j=1p​Pj​=Itotal​。因为总迭代次数总是大于t−∑js(t)−1Pjt-\sum_j^{s(t)-1}P_jt−∑js(t)−1​Pj​,故学习率永远不会衰减到零,这避免了在学习率太低的情况下浪费训练迭代。

大minibatch训练

增加minibatch的大小使网络能够并行处理更多样本,因此它们可以更快地训练。与高级任务类似,本文总结了两条关于大minibatch的重要规则用于加速训练:当minibatch大小发生变化时,线性调整学习率以及在开始时以较小的学习率预热网络。接下来将阐述上述规则为何有效。使用损失为L(w)L(w)L(w)的VSR小批量训练:L(w)=1n∑x∈Xl(x,w)L(w)=\frac{1}{n} \sum_{x \in X} l(x, w)L(w)=n1​x∈X∑​l(x,w)其中,XXX是一个Minibatch,n为X中的样本数,w是VSR网络的权重,l(⋅,⋅)l(·,·)l(⋅,⋅)为损失函数。下面分析训练m次拥有n个样本的minibatchX0−mX_{0-m}X0−m​和训练一次的大minibatchX=mn\mathcal X=mnX=mn之间的差异。m次minibatch的权重更新如下:wt+m=wt−η1n∑im∑x∈Xi∇l(x,wt+i)w_{t+m}=w_{t}-\eta \frac{1}{n} \sum_{i}^{m} \sum_{x \in X_{i}} \nabla l\left(x, w_{t+i}\right)wt+m​=wt​−ηn1​i∑m​x∈Xi​∑​∇l(x,wt+i​)其中ηηη为学习率,ttt为训练迭代次数,∇l∇l∇l为梯度。类似地,当使用大小为mn的X\mathcal XX执行单个迭代时,权重将为:wt+1′=wt−η′1mn∑x∈X∇l(x,wt)w_{t+1}^{\prime}=w_{t}-\eta^{\prime} \frac{1}{m n} \sum_{x \in \mathcal{X}} \nabla l\left(x, w_{t}\right)wt+1′​=wt​−η′mn1​x∈X∑​∇l(x,wt​)假设i<mi<mi<m,wi≈wi+mw_i≈w_{i+m}wi​≈wi+m​:∑im∑x∈Xi∇l(x,wt+i)≈∑x∈X∇l(x,wt)\sum_{i}^{m} \sum_{x \in X_{i}} \nabla l\left(x, w_{t+i}\right) \approx \sum_{x \in \mathcal{X}} \nabla l\left(x, w_{t}\right)i∑m​x∈Xi​∑​∇l(x,wt+i​)≈x∈X∑​∇l(x,wt​)因此,当学习率设置为η′=mηη^′=mηη′=mη时,将得到wt+m≈wt+1′w_{t+m}≈w_{t+1}^{′}wt+m​≈wt+1′​。这表明可以用更大的minibatch和更少的迭代来训练网络,通过线性调整学习率逼近基线训练。此外,这种假设依赖于wi≈wi+mwi≈ wi+mwi≈wi+m。当权重快速变化时,该假设可能会失败。由于权重的快速变化通常发生在训练的早期阶段,因此本文采用热身策略,将学习率从一个小值逐渐提高到一个大值,以缓解这个问题。

实验

实施细节

本文实现了BasicVSR-M、BasicVSR(M表示中等大小)来进行实验。它们的空间周期中使用的空间大小为均为32×32和64×64,时间周期为{7,11,15}。在32×32空间大小上训练的学习率从2e−4开始。学习率过大可能会导致EDVR-M的性能严重下降。此外在前5000次迭代中使用线性学习率预热来训练这些模型。

定量评估

当使用4×和2×较大的小批量训练BasicVSR-M和BasicVSR时,训练速度分别加快3.9倍和1.9倍。这种加速可以归因于大的小批量能够实现更好的GPU并行化。在不同的模型尺寸下,空间周期和时间周期都会给BasicVSR带来一致的加速比。

消融实验

如下图所示,直接增大minibatch会导致性能下降。然而,在进行学习率调整时,大型minibatch训练(带热身)的表现与基线相当。

下图研究了预热设置的影响。在没有预热的情况下直接应用线性调整会导致性能下降。这可能是因为在训练的早期,网络变化很快。在预热阶段的帮助下,大型minibatch训练的表现可以达到基线表现。

空间和时间周期的消融研究。

以同步方式简单地组合空间和时间周期中的大小(即,同时更改空间和时间大小)会导致性能下降。这可能是因为同时变化的空间/时间大小带来的巨大信息变化阻碍了学习过程。下图显示,以分层方式组合空间和时间周期可在不损失精度的情况下实现6.2倍的加速比。这些结果证明了我们多重网格设计的有效性。

来看看怎样让你的VSR模型跑的和苏炳添一样快相关推荐

  1. 简单快速建立pytorch环境YOLOv5目标检测 模型跑起来(超简单)

    简单快速建立pytorch环境+实现YOLOv5目标检测 模型跑起来(超简单) 一.下载yolov5模型代码: yolo代码 提取码:2022 下载后解压 二.简单快速创建pytorch环境: 1.条 ...

  2. AI:DeepSpeed Chat(一款帮用户训练自己模型的工具且简单/低成本/快 RLHF 训练类ChatGPT高质量大模型)的简介、安装、使用方法之详细攻略

    AI:DeepSpeed Chat(一款帮用户训练自己模型的工具且简单/低成本/快 RLHF 训练类ChatGPT高质量大模型)的简介.安装.使用方法之详细攻略 目录 DeepSpeed Chat的简 ...

  3. 2021-06-23对深度学习模型进行更小,更快,更好的综述——微软研究院

    高效的深度学习:对深度学习模型进行更小,更快,更好的调查综述 摘要 一.引言 高效的深度学习 二.五个主要方面提升模型效率 2.1 压缩技术 2.2 学习技术 2.2 自动化 2.4 高效的架构 2. ...

  4. EfficientNetV2震撼发布!87.3%准确率!模型更小,训练更快!谷歌大脑新作

    EfficientNetV2: Smaller Models and Faster Training paper: https://arxiv.org/abs/2104.00298 code(官方TF ...

  5. 模型展UV的原则和快速展UV软件Rizom

    一般来说,最合理的UV分布取决于纹理类型.模型构造.模型在画面中的比例.渲染尺寸等,但有一些基本的原则要注意: (1)贴图不能拉伸,尽量保持横平竖直 (2)尽量减少UV的接缝 (3)解封应该放在隐蔽处 ...

  6. Faster-RCNN模型跑通总结(使用pytorch1.10+cuda10.2版本)

    Faster-RCNN模型搭建跑通总结 0.前言 1.准备操作系统 2.安装驱动及cuda 2.1.安装驱动 2.2.安装cuda 3.安装anaconda和pytorch 3.1 安装anacond ...

  7. 手写数字体识别,用保存的模型跑自己的图片

    原文博客:https://blog.csdn.net/X_m_w/article/details/101056156 模型训练:https://blog.csdn.net/X1996_/article ...

  8. AMOS的最优结构方程模型跑不出来?

  9. 用mobilenet模型跑tensorflow CNN的样例:image_retrain.py和label_image.py

    系统是 ubuntu 16.04,tensorflow版本是1.6, cuDNN版本是7.0.git clone tensorflow后试着跑了一下image_retrain.py(以下简称retra ...

最新文章

  1. 全领域涨点 | Evolving Attention在CV与NLP领域全面涨点
  2. Teamviewer连接服务器显示不能够全屏 或 向日葵连接服务器不能够全屏 或 Teamviewer只显示一个640x480的分辨率选项
  3. 火币网行情获取的websocket客户端
  4. 【原创】推荐广告入门:DeepCTR-Torch,基于深度学习的CTR预测算法库
  5. 中立安全、赋能产业,UCloud优刻得凭差异化路线进军产业互联
  6. fiddler抓包工具配置详解
  7. 再获全球顶会ASPLOS认可:阿里云神龙凭什么打破物理机神话
  8. 【Luogu】【关卡2-3】排序(2017年10月) 【AK】
  9. 190416每日一句
  10. 适用于中小型公司代理服务器的IPTABLES脚本
  11. 【Linux】如何在文件中写入感叹号
  12. List、Set和Map的简单理解
  13. 农业信息技术基础知识(1)
  14. JNI 在实际项目中的使用方法
  15. 体育类App原型制作分享-Onefootball
  16. python控制摄像头云台_python-onvif实现客户端控制相机云台
  17. 财务应付结算系统设计-发票(含账单发票差异调整)
  18. Hadoop发展编年史
  19. 对抗攻击常见方法汇总
  20. 学习Emacs系列教程

热门文章

  1. 验房师专用验房项目验收内容
  2. Windows卸载easyconnect
  3. asp.net打印错误日志
  4. cms系统自己建网站其实很简单
  5. 华为服务器bios系统,华为服务器bios设置
  6. 水管工游戏(随机地图版)
  7. SQL—————的分类
  8. Mac下解决硬盘无法读取问题Mounty for NTFS - 免费让 Mac 原生支持移动硬盘/U盘 NTFS 读写的必备驱动应用
  9. win10系统C盘突然红了爆满占了170G找了几天怎么也找不到哪个文件占用这么多磁盘空间
  10. 模型包装,答辩吹牛方法论!