Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一层卷积能做啥?BOE告诉你:一层卷积可以做超分!

一层卷积能做啥?BOE告诉你:一层卷积可以做超分!

作者头像
AIWalker
发布于 2021-10-12 07:47:52
发布于 2021-10-12 07:47:52
83400
代码可运行
举报
文章被收录于专栏:AIWalkerAIWalker
运行总次数:0
代码可运行

arXiv: https://arxiv.org/pdf/2108.10335.pdf

本文是京东方团队关于端侧超分的深度思考,以端侧设备超分为切入点,对经典上采样与深度学习超分之间的“空白”地带进行思考,提出了一类“一层”超分架构(脑洞真的太大了),并对所提方案与其他轻量型超分方案以及bicubic从不同角度进行了对比,同时也为未来端侧超分算法的设计提供了一个极具价值的参考点。


Abstract

经典的图像缩放(比如bicubic)可以视作一个卷积层+一个上采样滤波器,它在所有显示设备与图像处理软件中是普遍存在的。

在过去的十年里,深度学习技术已被成功应用到图像超分任务上,它们往往由多个卷积与大量滤波器构成。深度学习方法已成功占据了图像上采样任务的质量基准。深度学习方法能否在端侧设备(比如显示屏、平板电脑以及笔记本电脑)上取代经典上采样技术吗 ?一方面,随着能高效运行深度学习任务的硬件的迅速发展,AI芯片发展趋势呈现出了非常好的前景;另一方面,只有少数SR架构能够在端侧设备上实时处理非常小尺寸图像。

我们对该问题的可能方案进行了探索以期弥补经典上采样与轻量深度学习超分之间的空白。作为从经典到深度学习上采样之间的过渡,我们提出了edge-SR(eSR):一层架构,它采用可解释机制进行图像上采样。当然,一层架构无法达到与深度学习方法的性能,但是,对于高速度需求来说,eSR具有更好的图像质量-推理速度均衡。弥补经典与深度学习上采样之间的空白对于大量采用该技术非常重要。

本文贡献包含以下几点:

  • 提出了几种一层架构以弥补经典与深度学习上采样之间的空白;
  • 在1185中深度学习架构中进行了穷举搜索,可参考上图,不同的架构具有不同的性能-速度均衡。
  • 对一层自注意力架构进行了可解释分析,对自注意力机制提供了一种新的解释。

上述结果可能会带来以下影响:

  • 图像超分系统有可能大量应用到端侧设备;
  • 对小网络的内部学习机制有更好的理解;
  • 对未来应用于研究了一个更好的性能-耗时均衡参考。

Super-Resolution for Edge Devices

Classical 图像上采样与下采样指的是LR与HR之间的转换。最简单的下采样有pooling、downsample。downsample一半是在水平和垂直方向进行均匀的像素丢弃,这种处理会导致高频信息丢失,导致Alisaing问题。为解决该问题,经典的线性下采样首先采用anti-aliasing低通滤波器移除高频,然后再下采样。现有深度学习框架中采用stride convolution实现。线性上采样则与之相反,下图给出了实现可视化图,即先上采样后滤波

由于引入过多零,造成大量的资源浪费,上图中的定义实现非常低效。本文提出了一种高效实现,见上图下部分,即先滤波再pixelshuffle。注:作者采用标准bicubi插值滤波器系数进行验证,两者具有完全相同的结果。

Maxout 本文提出的首个一层网络为edge-SR Maximum(eSR-MAX),见下图。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class edgeSR_MAX(nn.Module):
    def __init__(self, C, k, s):
        super().__init__()
        self.pixel_shuffle = nn.PixelShuffle(s)
        self.filter = nn.Conv2d(1,s*s*C,k,1,(k-1)//2,bias=False)
    def forward(self, x):
        return self.pixel_shuffle(self.filter(x)).max(dim=1, keepdim=True)[0]

Self-Attention 本文提出的第二个一层网络为edge-SR Template Matching(eSR-TM)。下图给出了该方案的解释示意图,它利用了模板匹配的思想。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class edgeSR_TM(nn.Module):
    def __init__(self, C, k, s):
         super().__init__()
         self.pixel_shuffle = nn.PixelShuffle(s)
         self.softmax = nn.Softmax(dim=1)
         self.filter = nn.Conv2d(1,2*s*s*C,k,1,(k-1)//2,bias=False)
     def forward(self, x):
         filtered = self.pixel_shuffle(self.filter(x)
         B,C,H,W  = filtered.shape
         filtered = filtered.view(B,2,C,H,W)
         upscaling= filtered[:,0]
         matching = filtered[:,1]
         return torch.sum(upscaling * self.softmax(matching), dim=1, keepdim=True)

Transformer 本文提出的第三种方案是edge-SR TRansformer(eSR-TR),见下图,它采用了Transformer的自注意力机制,某种程度上时eSR-TM的简化。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class edgeSR_TR(nn.Module):
    def __init__(self, C, k, s):
         self.pixel_shuffle = nn.PixelShuffle(s)
         self.softmax = nn.Softmax(dim=1)
         self.filter = nn.Conv2d(1,3*s*s*C,k,1,(k-1)//2,bias=False)
     def forward(self, x):
         filtered = self.pixel_shuffle(self.filter(x))
         B,C,H,W  = filtered.shape
         filtered = filtered.view(B,3,C,H,W)
         value = filtered[:,0]
         query = filtered[:,1]
         key   = filtered[:,2]
         return torch.sum(value*self.softmax(query*key),dim=1,keepdim=True) 

edge-SR CNN 此外本文还提出了edge-SR CNN(eSR-CNN),见上图c。下图给出了所提几种方案的算法实现。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class edgeSR_CNN(nn.Module):
    def __init__(self, C, D, S, s):
        super().__init__()
        self.softmax = nn.Softmax(dim=1)
        if D == 0:
            self.filter = nn.Sequential(
                        nn.Conv2d(D, S, 3, 1, 1),
                        nn.Tanh(),
                        nn.Conv2d(S2*s*s*C,3,1,1,bias=False),
                        nn.PixelShuffle(s))
        else:
            self.filter = nn.Sequential(
                        nn.Conv2d(1, D, 5, 1, 2),
                        nn.Tanh(),
                        nn.Conv2d(D, S, 3, 1, 1),
                        nn.Tanh(),
                        nn.Conv2d(S,2*s*s*C,3,1,1,bias=False),
                        nn.PixelShuffle(s))
    def forward(self, input):
        filtered = self.filter(input)
        B, C, H, W = filtered.shape
        filtered = filtered.view(B, 2, C, H, W)
        upscaling = filtered[:, 0]
        matching = filtered[:, 1]
        return torch.sum(upscaling * self.softmax(matching), dim=1, keepdim=True)

Deep-Learning 作为对标,本文以FSRCNN、ESPCN为候选,结构见下图。两者的区别有两点:激活函数、上采样方式。

Experiments

上图所构建的1185超分模型池,训练数据采用General100与T91进行,模型的输入为1通道灰度图像。整个训练过程花费了两个月时间@Tesla M40GPUX7。为测试最终模型,主要考虑了两种推理设备:

  • Nvidia Jetson AGX Xavier:Nvidia公司的嵌入式GPU设备,功耗30Watt;
  • Raspberry Pi 400:树莓派CPU处理器,功耗15Watt。

测试过程中,每个模型的输出为14个Full-HD图像,测试集源自DIV2K。推理过程采用FP16推理。图像质量评价则采用了Set5、Set14、BSDS100、Urban100以及Manga109等基准数据集。

上图对比了不同方案的性能-速度,以bicubic作为基准,从中可以看拿到:

  • 在端侧GPU设备上,所提edge-SR成功弥补了经典上采样与深度学习超分之间的空白,同时具有比bicubic上采样更好的速度-质量均衡;
  • 在树莓派CPU设备上,edge-SR弥补了x2与x3倍率下的空白,但x4任务上bicubic上采样具有更佳的性能。
  • 深度学习方案更擅长于提升图像质量,如ESPCN在高质量范围具有最快速度;
  • eSR-CNN并未提升ESPCN质量,但提升了其速度;
  • eSR-MAX具有最快速度,但质量不稳定;
  • eSR-TM与eSR-TR在中等速度-质量方面具有最佳性能。

上表给出了不同方案的性能,可以看到:eSR方案取得了最佳速度、最低功耗 ,同时具有比bicubic上采样更好的图像质量。

上述两个图对eSR-TM与eSR-TR进行了可视化解释,从中可以看到:

  • 对于eSR-TM而言,不同滤波器处理不同频率带;尽管滤波器不平滑,但具有一定程度的方向辨别能力;
  • 对于eSR-TR而言,matching与上采样滤波器同样不平滑,但有一定的方向性。

个人反思

视频类low-level算法想落地到端侧,尤其是要求高分辨率+实时推理 时,难度真的非常大,谁做谁知道。性能好的模型,速度完全跟不上;但是要速度快吧,性能又不突出,视频low-level算法真的适合用AI吗

京东方的研究员脑洞实在太大了,不去关注性能,转而去关注bicubic插值与深度学习超分方案在性能-速度均衡之间的那块“空白区域”,进而提出了“脑洞”更大的一层超分模型!一层能干啥?在看到该文之前,真是想都不敢想。

就算是一层模型,京东方的研究员也是玩出了花样,又是Maxout,又是模板匹配、又是Transformer,真是大写的🐂!

比较可惜的是这篇文章并未开源,虽然复现很简单,但作为“拿来主义”的我,有训练好的谁还去重新训练呢,对吧...

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AIWalker 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ACNet|增强局部显著特征,哈工大左旺孟老师团队提出非对称卷积用于图像超分
Code:https://github.com/hellloxiaotian/ACNet
AIWalker
2021/04/13
1.9K0
ACNet|增强局部显著特征,哈工大左旺孟老师团队提出非对称卷积用于图像超分
图像/视频超分之BackProjection
该文是图像/视频超分“反思”之旅的第二站:BackProjection,本文对图像/视频超分中的BackProjection进行了汇总,从源头到其在AI中的应用进行了介绍。
AIWalker
2020/11/03
1.3K0
深入TextCNN(一)详述CNN及TextCNN原理
本文是本人所写的NLP基础任务——文本分类的【深入TextCNN】系列文章之一。【深入TextCNN】系列文章是结合PyTorch对TextCNN从理论到实战的详细教程。
zenRRan
2019/08/21
6.1K0
深入TextCNN(一)详述CNN及TextCNN原理
【AI】超分辨率经典论文复现(2)——2017年
这次是这周新复现的一些超分辨率相关的机器学习的东西, 所选文章是知乎帖子 [从SRCNN到EDSR,总结深度学习端到端超分辨率方法发展历程]https://zhuanlan.zhihu.com/p/31664818 整理而来(文末点击原文可以跳转), 顺序接着上篇【AI】超分辨率经典论文复现(1)——2016年. 本文4.7k字, 篇幅不长. 由于复现了这么多网络, 现在对这个领域也熟悉了起来, 接下来我还会继续复现别的网络但是不会再这样按照一篇文章的顺序来进行了, 而是对感兴趣的进行复现然后凑够一定数量就发一篇.
ZifengHuang
2021/04/13
9340
【AI】超分辨率经典论文复现(1)——2016年
好久不见, 最近搞了一会与超分辨率相关的机器学习的东西, 所以这次是这几天简单用Pytorch复现的超分辨率论文和一点笔记. 这里我复现的几篇文章顺序都是按照知乎帖子 [从SRCNN到EDSR,总结深度学习端到端超分辨率方法发展历程]https://zhuanlan.zhihu.com/p/31664818 整理而来(文末点击原文可以跳转), 由于最近研究的就是这方面的东西, 因此接下来还会继续复现一些新的超分辨率论文, 攒够一波就发出来. 图形学的文章背地里我也有在写, 但是还没准备好因此还没发出来, 见谅.
ZifengHuang
2021/04/13
1.3K0
6 种 卷积神经网络压缩方法
神经网络压缩算法是,旨在将一个庞大而复杂的预训练模型(pre-trained model)转化为一个精简的小模型。
JOYCE_Leo16
2024/03/19
2270
6 种 卷积神经网络压缩方法
MIRNet重磅升级!MIRNetV2 更快、更强、更轻量
在正式介绍MIRNetV2之前,我们先来看一下它与MIRNetV1的性能对比,见下表。真可谓,MIRNetV2把MIRNetV1放在地上使劲的“摩擦”!关于MIRNet的介绍,可参见:https://zhuanlan.zhihu.com/p/261580767 。
AIWalker
2022/06/24
3.2K0
MIRNet重磅升级!MIRNetV2 更快、更强、更轻量
SRCNN、DRCN、FSRCNN、ESPCN、SRGAN、RED…你都掌握了吗?一文总结超分辨率分析必备经典模型(一)
 机器之心专栏 本专栏由机器之心SOTA!模型资源站出品,每周日于机器之心公众号持续更新。 本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。 本文将分 3 期进行连载,共介绍 16 个在超分辨率任务上曾取得 SOTA 的经典模型。 第 1 期:SRCNN、DRCN、FSRCNN、ESPCN、SRGAN、RED 第
机器之心
2023/04/11
4.2K0
SRCNN、DRCN、FSRCNN、ESPCN、SRGAN、RED…你都掌握了吗?一文总结超分辨率分析必备经典模型(一)
深度学习教程 | 卷积神经网络解读
本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整理所得,对应的课程视频可以在这里查看。
ShowMeAI
2022/04/15
4780
深度学习教程 | 卷积神经网络解读
一个AI大佬的学习笔记-- 卷积神经网络基础
这是一篇来自AI大佬关于卷积神经网络的学习笔记,转载以获得授权!在这里强势推荐一下小伙伴的公众号【AI有道】,是小詹觉得最用心的几个公众号之一!二维码见文末,要不要关注,值不值得关注,看完这篇文章你心里就有数了~
小小詹同学
2018/07/24
6700
一个AI大佬的学习笔记-- 卷积神经网络基础
解读 | 通过高效的子像素卷积神经网络实现实时的单一图像和视频超分辨率F
机器之心原创 作者:Shawn 参与:Ellen Han、黄小天、王灏 不久之前,Wenzhe Shi 等人在 arXiv 上发表了一篇名为《通过高效的子像素卷积神经网络实现实时的单一图像和视频超分辨率(Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network)》的论文,机器之心海外分析师团队从多个方面对其做了解读。 论文地址:https://arxi
机器之心
2018/05/07
2.1K0
解读 | 通过高效的子像素卷积神经网络实现实时的单一图像和视频超分辨率F
基于多尺度动态卷积的图像分类
在计算机视觉领域,图像分类是非常重要的任务之一。近年来,深度学习的兴起极大提升了图像分类的精度和效率。本文将介绍一种基于动态卷积网络(Dynamic Convolutional Networks)、多尺度特征融合网络(Multi-scale Feature Fusion Networks)和自适应损失函数(Adaptive Loss Functions)的智能图像分类模型,采用了PyTorch框架进行实现,并通过PyQt构建了简洁的用户图像分类界面。该模型能够处理多分类任务,并且提供了良好的可扩展性和轻量化设计,使其适用于多种不同的图像分类场景。
Srlua
2024/12/21
1990
基于多尺度动态卷积的图像分类
【超分辨率】SRCNN | 开启超分的大深度学习时代
图像超分辨率(Super-Resolution,SR)是计算机视觉领域一个经典的问题,研究的是如何将低分辨率图像(Low Resolution,LR)转化为高分辨率图像(High Resolution,HR)。对比传统SR算法,本文介绍的基于CNN的超分辨率算法—SRCNN模型结构简单、推理速度快以及重建质量高。
AIWalker
2021/07/29
3.1K0
【超分辨率】SRCNN | 开启超分的大深度学习时代
图像恢复SwinIR: Image Restoration Using Swin Transformer
在图像超分辨率、图像去噪、压缩等图像修复(Image restoration)任务中,卷积神经网络目前仍然是主流。但是卷积神经网络有以下两个缺点:
JOYCE_Leo16
2024/03/19
1.3K0
图像恢复SwinIR: Image Restoration Using Swin Transformer
【卷积神经网络结构专题】一文详解AlexNet(附代码实现)
【导读】本文是卷积神经网络结构系列专题第二篇文章,前面我们已经介绍了第一个真正意义上的卷积神经网络,那就是由发明者Lecun发明的LeNet,详细解读见:【卷积神经网络结构专题】一文详解LeNet(附代码实现)
深度学习技术前沿公众号博主
2020/06/01
4.8K0
Coursera吴恩达《卷积神经网络》课程笔记(1)-- 卷积神经网络基础
本文介绍了CNN(卷积神经网络)的基本概念、发展历程、常见网络结构、训练方法和应用场景。CNN在计算机视觉、自然语言处理等领域有着广泛的应用,已经成为深度学习的经典模型之一。
红色石头
2017/12/28
2.1K0
Coursera吴恩达《卷积神经网络》课程笔记(1)-- 卷积神经网络基础
吴恩达深度学习 course4 卷积神经网络
传统的神经网络所存在的问题:图片的输入维度比较大,具体如下图所示,这就造成了权重w的维度比较大,那么他所占用的内存也会比较大,计算w的计算量也会很大
Dar_Alpha
2018/09/03
7850
吴恩达深度学习 course4 卷积神经网络
超分辨率——基于SRGAN的图像超分辨率重建(Pytorch实现)
SRGAN使用了生成对抗的方式来进行图像的超分辨率重建,同时提出了一个由Adversarial Loss和Content Loss组成的损失函数。
全栈程序员站长
2022/11/17
2.2K0
超分辨率——基于SRGAN的图像超分辨率重建(Pytorch实现)
40行Python代码,实现卷积特征可视化
最近在阅读 Jeremy Rifkin 的书《The End of Work》时,我读到一个有趣的关于 AI 的定义。Rifkin 写到:「今天,当科学家们谈论人工智能时,他们通常是指『一门创造机器的艺术,该机器所执行的功能在人类执行时需要智能』(Kurzweil, Raymond, The Age of Intelligent Machines (Cambridge, MA: MIT Press, 1990), p. 14.)」。我很喜欢这个定义,因为它避免了类似」在人类智力意义上 AI 是否真正达到智能」的讨论。
CDA数据分析师
2019/03/08
6170
40行Python代码,实现卷积特征可视化
Pytorch量化入门之超分量化(二)
在前面的文章中,笔者对Pytorch的“Post Training Static Quantization,PTSQ”进行了原理性的介绍。接下来,我们将以EDSR这个图像超分网络为例进行说明。
AI算法与图像处理
2021/02/22
1.3K1
Pytorch量化入门之超分量化(二)
相关推荐
ACNet|增强局部显著特征,哈工大左旺孟老师团队提出非对称卷积用于图像超分
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验