这篇文章是首次将查表法引入SR领域。将SR网络训练好的缩放像素值存在表中,在测试阶段只需要在表中查找对应值,就能完成图像重建任务。由于该方法不需要大量的浮点运算,因此可以非常快速地执行。

原文链接:SRLUT: Practical Single-Image Super-Resolution Using Look-Up Table 【CVPR2021】
参考目录:
超分之SR-LUT
超分之SR-LUT源码解析
源码(Pytorch)

SRLUT: Practical Single-Image Super-Resolution Using Look-Up Table

  • Overview
    • Train deep model
    • Transfer to LUT
    • Test using LUT
  • Conclusion

Overview

SR_LUT的整体结构为:训练网络 - 存表 - 测试(读表) (重点部分在于存表和读表)
一张图像放大r倍,可以看成是每个像素放大r倍。文章就是基于这种思想设计的,但每个像素放大后是怎样的,由周围的像素(感受野)来决定。
训练网络: 获得一个LR到HR的全图映射。
存表:

  1. 给定感受野大小,使用前面训练好的映射来获取该感受野对应的放大后的对应区域像素值,存到查找表中。比如说给定2×2的感受野。那对应这个区域大小一共有2554255^42554种像素的排列可能。也就是说,这个像素周围环境一定是这2554255^42554中的一种。每一种像素的排列都要存到查找表中,这样以后不论碰到怎么样排列的像素我们都可以根据查找表恢复重建后的像素区域。所以表中一共需要存有$255^n$行。nnn是指定的感受野大小。
  2. 放大后对应图像区域仅与放大倍数r有关。给定放大倍数rrr,每个像素放大后的对应区域大小应该是r×rr×rr×r。感受野大小是赋予每个像素的,是用来形容这个像素周围环境的,真正的主体还是该像素,所以放大后得到r×rr×rr×r大小。
  3. 所以整个查找表的存储量为:255n×r2×8bit\bm{255^n \times r^2 \times 8bit}255n×r2×8bit. (每个像素占8bit内存)

查表: 对图中每个像素位置扩展为感受野的大小,然后在查找表中找到对应的区域值,取出来作为重建块。

以上是常规的网络,但是考虑到255n255^n255n 行,内存消耗太多了。所以作者想出一个办法,提出了sampled-LUT变体:将255种像素值下采样,减少查找表所占的内存。采样间隔为242^424 ,将输入空间划分为{ 0 , 16 , 32 , 48 , 64 , 80 , 96 , 112 , 128 , 144 , 160 , 176 , 192 , 208 , 224 , 240 , 255 }一共17个采样点。于是255n255^n255n种可能就下降到了17n17^n17n,极大减小了存储量。但这也带来了一个问题,在查表时输入图片的像素如果是非采样点,直接取其最近的采样点值代替的话,图像会损失大量细节,重建效果会非常差。于是在该部分,作者提出了各种对应感受野的插值算法。

Train deep model

训练阶段其实比较常规。文中的图不能完全的表述,这里借用另一个博主的图。

在这一步只是纯粹的网络训练,为了得到输入图像LR到重建图像SR的映射fff。(其实就是训练好卷积层的参数用于下一阶段的存表)由于存表时输入的感知野很小,所以网络不需要太多的层数去堆叠,作者采用了6层CNN网络以及一层亚像素卷积层。

  1. 输入patch为48×48,输入端加padding,是为了配合第一层的2×2卷积,为了保证图像大小不变。二到六层的卷积核大小的都为1×1。除了最后一层,其余的CNN层后都接ReLU来增加模型非线性度。
  2. 最后一层卷积输出深度为r×rr×rr×r,对应于每个像素扩展rrr倍。
  3. 网络最后使用亚像素卷积层PixelShuffle,将深度为r×rr×rr×r的feature map ,重组为高r×Hr×Hr×H,宽为r×Wr×Wr×W的高分辨率图像输出,完成图像重建

作者将自集成(self ensemble)的技巧用于CNN的训练中,采用了4种增强方式,分别是旋转90°、180°、270°,之后对网络的输出做反增强操作,再取平均作为最后的输出。


Transfer to LUT


就和标题一样,做了一件事情,存表。
我们先捋一遍这部分过程:已经规定感受野大小为nnn(1×2、1×3、2×2,51×2、1×3、2×2,51×2、1×3、2×2,5,具体5是怎么样的形状未知。作者只罗列了这四种感受野大小,再大的话,占用内存就太大了),放大倍数为rrr。记住每个像素放大r倍,所以我们存下来的表中应该有r2r^2r2列。

感受野大小为n时,一共有255n255^n255n种排列可能,每种情况,对应r2r^2r2个像素值。所以一共存255n255^n255n行,r2r^2r2 列。看上图中LUT[I0][I1][I2][I3][0][0]LUT[I_0][I_1][I_2][I_3][0][0]LUT[I0​][I1​][I2​][I3​][0][0]前四位就代表了感受野大小为4,后两位对应放大倍数r=2,共四列,需要两位二进制数表示。

我们再加一个条件,采样间隔设为W=24W = 2^4W=24,只剩下17个采样点,LUT的行数变为17n17^n17n,列为r2r^2r2。
看下具体是怎么做的,图片还是借用Ton博主的

网络输入patch变为2×2(根据感受野大小),输出:深度为r2r^2r2大小为1×1。最后使用亚像素卷积将这r2r^2r2张图转换为一张r×rr×rr×r大小的图像,将这张图像存在查找表对应行的r2r^2r2列中。
对于Sampled-LUT来说,输入格式为:(174,1,2,2)(17^4, 1, 2, 2)(174,1,2,2),得到一个(174,1,r,r)(17^4, 1, r, r)(174,1,r,r)格式的张量,reshape一下成(174,r2)(17^4, r^2)(174,r2)并保存为Numpy数组存起来供测试的时候使用。


Test using LUT

在测试阶段,就可以完全脱离CNN,只用查表得方式来恢复出图像欠缺的细节,产生高分辨率的图像。
测试的时候,输入是整张图像,对每个像素点(x,y)(x,y)(x,y)遍历,找到(x,y)(x,y)(x,y)周边感受野大小的像素,当前像素作为左上角,观察其右边1格、下边1格、右下1格的像素信息,相等于获取了2×22 × 22×2感受野,接着去LUT里查找出以这4个像素值为索引的r×rr × rr×r的内容结果来作为当前像素点(x,y)(x,y)(x,y)重建出的r×rr × rr×r 高分辨率像素块,因此读表是读取2×22 × 22×2感受野中左上像素对应的一个r×rr × rr×r块的过程。
这一部分中主要要学习的是插值算法。如何将一个非采样值的点从表中读取重建块

文章对不同的感受野大小使用不用的插值方式,2D感受野使用三角插值(三个顶点),3D感受野使用四面体插值(四个顶点),4D感受野使用4-单形插值(需要5个顶点)。

首先介绍一下怎么用4D感受野的像素值在查找标中找到对应行的索引值。L是282^828除于采样间隔W.
P=I0×L×L×L+I1×L×L+I2×L+I3P = I_0 \times L \times L \times L + I_1 \times L \times L + I_2 \times L + I_3P=I0​×L×L×L+I1​×L×L+I2​×L+I3​

4D感受野下插值的步骤:

  1. 感受野中四个8bits像素值,分别提取MSB(高4位)和LSB(低4位),共获得四个MSB和四个LSB。
  2. 根据四个MSB组合排列共有16种可能分别记为P0000,…,P1111P_{0000}, \dots , P_{1111}P0000​,…,P1111​,获得了16个插值的顶点,但我们只需要5个。(顶点其实就是查表中对应行的索引)
  3. 根据四个LSB之间的大小关系,选用五个顶点和权重值,就能得到所求表中对应的r×rr×rr×r大小的重建块的值。

具体操作可以看代码和这篇解析:超分之SR-LUT源码解析


Conclusion

这篇文章是比较新颖的,将LUT引入到SR任务中,该结构可以训练后脱离CNN使用,应用于移动端非常的方便,速度也是非常之快。
整个结构分为三个部分:

  1. 训练: 使用六层卷积和亚像素卷积层重建图像,输入patch为48×48,获得输入LR到重建SR图像的映射
  2. 存表: 使用训练好的网络遍历所有可能输入情况17n17^n17n(Sampled-LUT),输入为小尺寸感受野n,输出r×rr×rr×r的重建像素,将结果保存在表中,整个表共有17n17^n17n行,r2r^2r2列。
  3. 测试(读表): 脱离CNN网络,输入整张图像,遍历所有像素,(使用插值算法)根据感受野读取表中r2r^2r2重建像素。
  4. 注意:每个阶段输入分辨率都是不一样的。

最后祝各位科研顺利,身体健康,万事胜意~

图像超分算法SRLUT: Practical Single-Image Super-Resolution Using Look-Up Table图像超分辨率重建相关推荐

  1. AliSSR 语音超分算法:让在线会议语音更明亮更自然

    超分让在线会议语音更明亮,在线会议已成为日常工作中较为普遍的沟通交流方式,接入会议的方式也呈现多样化,比如电脑入会.手机入会又或是电话入会. 雪雅.曜辰|作者 众所周知,高采样率且高带宽的音频信号富含 ...

  2. 可生成高清视频的Stable Diffusion来了!分辨率提升4倍,超分算法来自腾讯,支持Colab在线试玩...

    明敏 发自 凹非寺 来源 | 量子位 QbitAI 免费玩的Stable diffusion,又出新变种了! 古典人像丝滑切换,还都是4倍超分辨率水平,细节也就多了亿点点吧,眉毛发丝都根根分明. 还能 ...

  3. 突破网络和屏幕的限制,超分算法让图片和视频秒变清晰

    如上图,从100x133pix→400x532pix,除了肉眼可见的清晰,拥有可以将分辨率提升400%的技术到底意味着什么? 它意味着: 老照片.老电影.动漫等画质可快速提升,分辨率自由调节 产业算法 ...

  4. 图像超分算法小合集二:FSRCNN、DRCN、RDN、EDSR

    目录 FSRCNN DRCN RDN EDSR 文章: FSRCNN : Accelerating the Super-Resolution Convolutional Neural Network ...

  5. 超分算法小合集之SRCNN、DCSCN、SRDenseNet、SRGAN

    阅读指引 SRCNN DCSCN SRDenseNet SRGAN 论文快速指引: SRCNN:Learning a Deep Convolutional Network for Image Supe ...

  6. 传统图片超分算法——双三次插值 (Bicubic)、附C++源码

    呼,花了一个下午,终于是写完加调试完了所有的代码. 双三次插值介绍 之前我写的这篇博客中讲了什么是超分,并实现了单线性插值算法和双线性插值算法.在这里将再介绍一种插值算法--双三次插值算法. 首先,双 ...

  7. 针对视频压缩的压缩感知超分算法:COMISR

    作者单位:谷歌 论文链接:https://arxiv.org/pdf/2105.01237.pdf 编者言: 针对H.264等视频压缩标准压缩后的视频进行超分,定量和定性效果相比过去的VSR算法有较大 ...

  8. 超分算法RDN:Residual Dense Network for Image Super-Resolution 超分辨率图像重建

    这篇文章总结分析了ResNet 和DenseNet的优缺点,并将其结合,提出了新的结构ResidualDenseNet.文章中对ResNet 和DenseNet以及MemNet都进行了简单的对比分析. ...

  9. 超分算法DRCN:Deeply-Recursive Convolutional Network for Image Super-Resolution超分辨率重建

    DRCN:Deeply-Recursive Convolutional Network for Image Super-Resolution Abstract 1 Introduction 2 Met ...

最新文章

  1. Node.js in IIS — Hello World
  2. 【无标题】RestHighLevelClient工具类
  3. Spring Boot 2.0 迁移指南
  4. crt中 新建的连接存储在哪_LCD发展至今仍然没有完胜CRT显示器,“老玩家”为你现身说法...
  5. 小红书消息中间件的运维实践与治理之路
  6. jQuery在线选座订座(影院篇)
  7. [转载] issubclass在python中的意思_python issubclass 和 isinstance函数
  8. Windows必备软件效率有哪些?
  9. 前端开源项目周报0412
  10. exchange创建邮箱组_Exchange 2010 如何创建通讯组
  11. 以太坊:用 Solidity 写测试用例
  12. 156种PS特效动作中文大合集【附高清视频教程】
  13. crx插件转换火狐插件_关于Firefox插件
  14. linux vi输入日历,linux下Vi编辑器命令大全(上)
  15. Thinkpad 笔记本 装win7 64 位操作系统热键驱动装不上问题解决!
  16. Android完美实现kitkat透明导航效果
  17. 动手学习深度学习——Pytorch版教程系列汇总(长期更新版)
  18. 遇事不决,量子力学;不懂配色,赛博朋克。推荐一个Python可视化库
  19. 南方科技大学计算机系图灵班,【独家】上了大学就自由了,老师管得少! 这所高校:喔?是吗?...
  20. 数据库|第一范式、第二范式、第三范式、BC范式、第四范式简单理解

热门文章

  1. 脑电数据处理分析——edf转mat及fft
  2. 慕容垂:百万战骨风云里——激荡的鲜卑史略之二(转载)
  3. 初一计算机教学论文,初中信息技术论文范文
  4. 4.2.2 屏幕保护程序
  5. 【《机器人技术》复习】
  6. 虚拟声卡Virtual Audio Cable(VAC)的使用
  7. SAP.CATT 批处理/批量操作的基本应用
  8. 【第三届集创赛】Arm杯一等奖作品分享一:车牌的高速精准识别
  9. android智能电视使用方法,安卓系统智能电视使用方法
  10. 幻想一夜暴富 “彩民”变“赌徒”