文章目录
关键词:Image Super-Resolution、Video Super-Resolution
专栏简介
本专栏研究领域为【超分辨率重建】,涵盖图像超分、视频超分,实时超分,4K修复等方面。主要内容包括主流算法模型的论文精读、论文复现、毕业设计、涨点手段、调参技巧、论文写作、应用落地等方面。
算法模型从SRCNN开始更新至今,一般是一篇论文精读对应一篇论文复现。
论文精读详解理论,归化繁为简,归纳核心,积累词句,培养阅读论文和论文写作能力。
论文复现依托Pytorch代码,实现完整的模型训练流程,总结调参方法,记录碰到的bug,论文插图可视化,培养读写代码能力、做实验的能力、以及应用落地能力。在复现大量的算法后,专栏会更新涨点方法,帮助有需要的同学找到创新点。专栏中还会更新一些实用技术,帮助大家解决实际问题。此外,专栏会更新超分算法相关的毕业设计,以完整软件项目的形式呈现(UI界面+超分算法)。
专栏亮点
- 省时:超分辨率领域论文全覆盖,算法模型全,主流的算法模型都会涉及结合能搜集到的资料深入浅出解读,按顺序阅读即可,节省搜论文的时间。【论文复现】文章末尾会提供训练好各放大倍数下的最优性能(PSNR最优)模型权重文件,读者可以下载直接使用,方便论文中实验部分方法对比(视觉效果和量化指标)或直接应用模型超分自己的图像数据。
- 省力:大白话讲解,手把手教学,带你读论文,写代码,理解文章的算法和创新点,避免一个人对着论文死磕但还是不理解的情况出现。按部就班,肯定能跑出好的模型结果,帮助你了解论文内容和结构,积少成多,学会写论文。同时,让你少走弯路,避免模型调参四处碰壁,涉及的模型都提供训练好的权重文件,可以直接拿来测试自己的图像。
- 省事:努力做全网最全最好最详细的【超分辨率】专栏,专栏永久更新,第一时间更新最新的超分领域内容,关注订阅后一劳永逸,关注账号后更新了会私信告知。有问题可以随时留言交流,大家一起讨论总比一个人死磕要强。
适配人群
- 研究超分辨重建的新手小白,希望快速入门
- 有毕业需要的本科生(毕业设计)、研究生(导师放养,缺乏科研能力以及论文写作经验),希望有一篇论文毕业
- 有训练自己特定需求数据的工作者,本专栏将帮你跑通流程,训练你自己的数据
- 有实际应用需求场景的工作者,本专栏将提供已经训练好的模型去超分你自己的数据,比如医学领域的MRI图像、生物领域的细胞图像和其他需要应用的领域。有泛化性非常好的数据集训练出来的模型。(如果你没有硬件条件去训练,而只是想用模型超分你自己的数据)
- 想挣钱搞副业的奋斗者,希望用超分技术解决客户问题,通过技术手段赚钱。比如老照片修复,4K修复视频等等。
建议:有科研需要的同学【论文精读】和【论文复现】都看,理论+实验;有做项目应用需要而不需要写论文的同学可以只看【论文复现】,有最优PSNR的模型文件,可以直接用,超分自己的图像。
相关说明
- 关于更新:一般模型比较大,想复现出论文的结果需要训练很久,再加上写文章,总结反思的过程,更新频率可能比较低。先更新图像超分,再更新视频超分。
- 关于内容:黑色加粗是重点,红色加粗是笔者的讲解、总结或创新。绿色加粗是补充内容,可能还有一些吐槽,能产生共鸣。【论文精读】文章末尾有链接可以直接跳转到对应的【论文复现】文章,【论文复现】文章开头有【论文精读】的文章链接,方便回顾理论。
- 关于读者:希望你一步一步按顺序仔细阅读,尽量不要跳跃。只需要跑通流程不需要了解理论的同学直接看【论文复现】,只需要训练好的模型文件去超分自己数据的同学直接跳转到文章末尾有权重文件连接。除此之外,请全部阅读!有问题随时评论区留言答疑。禁止没仔细看文章就问问题,禁止白嫖,禁止问奇奇怪怪的问题。
- 阅读顺序:请按给出的文章目录顺序阅读。有的算法模型是在前一篇文章的基础上实现的,尽量不要跳跃。如果有缺失的文章或者有你特别想了解的文章,请在评论区留言。让我们一起感受【超分】领域的研究历程吧!
- 有发文章需求的同学建议对照原论文阅读全部【论文精读】,了解论文结构脉络,看别人怎么写的,怎么讲故事的,你自己才能会写。
- 只有做项目做实际应用没有写文章需要的同学可以只看【论文精读】中红字总结的理论部分和实验参数+【论文复现】全文。
- 有的论文没有源代码,或者有他人复现的代码但质量不高,或者实现思路与其他文章相似,则【论文精读】以丰富阅读、开拓思路为目的。
- 怕专栏质量不够高,怕被坑钱的读者可以看下面两篇试读文章,以此为依据决定是否订阅:
【图像超分】论文精读:Image Super-Resolution Using Deep Convolutional Networks(SRCNN)
【图像超分】论文复现:新手入门!Pytorch实现SRCNN,数据预处理、模型训练、测试、评估全流程详解,注释详细,简单修改就可以训练你自己的图像数据,有训练好的模型下载地址,随取随用
关于答疑
宗旨:先仔细阅读文章,有问题再问。
基础薄弱的同学先学深度学习基础,搞明白框架和执行逻辑,重点为pytorch(数据处理DataLoader、模型实现nn、训练相关)、cv2和PIL等图像处理基础,有的问题搜一搜,查一查,把基础打好。
欢迎提出以下问题:
- 专栏内文章中出现的错误和表意不明的内容;
- 代码报错;
- 与算法模型相关的讨论,改进等;
- 希望我后续出的文章,方向,功能需求等;
- 友好的讨论,各种方面都可以,论文、投稿、读研读博、当老师等;
符合以上条件的,我知无不言,作为一名高校教师,我很愿意和友好的学生沟通!工作很忙,空闲时间看见了就会回复。
以下评论和问题不回:
- 不友好的攻击与谩骂,没有礼貌的;比如:“这么简单的东西还收费”。你觉得简单,还有很多需要入门的小伙伴不觉得简单,不要用你的标准来评判他人;
- 不看文章一通乱问的;答案就在文章中,仔细阅读,文章写的很细致,问我我给你回答没有你仔细阅读效率高;
- 表述不明,完全不知所云的;不明白你的问题,自然无法解答;
- 上来就要代码的,想白嫖的,套话的;不要问我这个方案可不可以,能不能给个创新idea等厚脸皮的话。一切都要自己动手做,去试了才知道,谁有好的想法不都自己发文章了吗,还能告诉你吗?
- 我也不会的;我不是神仙什么都会,可以讨论,但不能要求我一定能回答;
订阅专栏后的答疑是作为附加的增值服务,我没有义务什么离谱的问题都回答你,即使你花了钱也不行,每个人的标准不同,求同存异,友好相处,有问题有意见可以提,但别找骂。
注:有的文章质量可能偏低,可能是我先发出来准备后面再完善的,大家不用担心,做事情先完成再完美。
环境配置
笔者的项目环境:
- 编译器:pycharm
- torch 1.12.1
- windows11
- 服务器4个GPU,Titan RTX
pycharm专业版远程连接服务器运行。你可以根据自己的情况使用不同配置,结果不会差很多。
如果你的环境不同,请根据自己的情况修改部分代码。
例如,多个GPU就会用到torch.nn.parallel DataParallel,而且会model.to(device)或者to cuda。而你自己的环境是windows本地跑,只有一个GPU,那么就需要修改对应部分的代码。
仅做参考,相信大多数人的环境应该都能运行。实在不行,只能升级设备了。
超分理解
超分辨率(Super-Resolution),顾名思义,是将低分率的图像变成高分辨率的图像。它是低级别(low-level)的图像复原任务(同级别的还有去噪)。但是,超分是病态的(ill-pose)。它是无中生有,凭空创造出来的。为的是改善视觉效果,提升后续工作的效率。
那么,图像是如何无中生有,从低分辨率到高分辨率的呢?
举一个分辨率放大2倍的例子。GT是Groud Truth,也是HR。作为标签(label)或者目标(target)指导低分率图像要向着什么目标努力。低分辨率图像是通过插值算法造出来的,常见的方法是用双三次插值缩小再放大(也可以添加高斯噪声)。当然,如果你自己有两个2倍关系的数据,低分辨率(LR)的是输入,高分辨率(HR)是GT。
这样,LR和HR之间有一个映射,通过损失函数最小化来得到最优的模型。
如上图所示,Input就是通过双三次插值(Bicubic)先缩小2倍(LR)再放大2倍的结果。Output是通过模型将LR超分的结果。
横向对比,一个是不同算法的对比,得出我们的模型更好的结论;一个是超分的结果与GT对比,得出我们的模型更接近于原图。质量评估,可视化看清晰度;量化评估,看PSNR和SSIM等指标。
常见的传统方法对比有:nearest,双线性,双三次,lanczos,sinc,spline等。
然而,实际应用场景中,想让图像从模糊变清晰,往往是给出模糊图像,而不是像上图中作为GT,也没有对应放大倍数后想达到的指导。超分之后,发现图像还是模糊。
这是为什么呢?
答:超分只是将图像的分辨率放大,模糊是因为失焦或图像大小变化导致的,超分才有效果。一定要分析模糊产生的原因,是因为噪声模糊(去噪模型)、运动模糊(有对应的去运动模糊的方法)还是大小变化模糊。
实际应用往往需要去噪、锐化、超分等多种图像复原手段共同作用才能产生比较好的效果。
所以,当你训练的超分模型效果不好时,不必气馁。需要写论文的只站在论文的角度思考有提升就可以;需要实际应用的调调数据或者换换模型,总会守得云开见月明,轻舟已过万重山。
实现流程
超分也和其他深度学习任务相同,一般分为以下几步实现算法模型:
- 网络模型定义:明确网络的输入和输出,以及维度。
- 数据预处理:根据网络的输入处理数据,适配网络。数据增强:超分的数据增强一般为旋转[0,90,180,270]、翻转(左右、上下)、缩放(0.5~1倍之间)。超分的输入一般不是以整张图像的形式,而是裁剪图像的一小块输入。为了覆盖所有的图像特征,数据集会非常大,对设备要求也很高,对于参数也有影响。数据集一般做成.h5格式。 超分是low-level任务,一些tricks对模型的提升帮助不大。初始图像大小需要调整为能整除放大倍数,会有一些像素损失,影响最终的结果。
- 模型训练:常规步骤,根据不同方法具体实现。最好能边训练边验证。
- 模型测试:用测试集测试模型,计算平均PSNR和SSIM。
- 其他补充:训练过程可视化(visdom、Tensorboard),科研作图(epoch和psnr的关系),可视化feature map等,可能出现在论文中的内容。
文章目录
基础知识
- 【图像去噪/超分】基础知识之BasicSR | BasicSR库的用法详解,包含各部分代码功能详细介绍(全代码注释),自己改进创新需要修改的位置等
- 【图像超分/图像去噪】Windows下使用BasicSR训练和测试模型
数据集相关
图像超分(Image Super-Resolution)
经典超分(Classical SR)
序号 | 题目 | 模型 | 出处和年份 | 核心精炼 | 精读 | 复现 |
---|---|---|---|---|---|---|
1 | Activating More Pixels in Image Super-Resolution Transformer | HAT | CVPR 2023 | 【图像超分】论文精读:Activating More Pixels in Image Super-Resolution Transformer(HAT) | 【图像超分】论文复现:CVPR 2023!激活更多像素!HAT的Pytorch源码复现,跑通源码,应用BasicSR,解决报错,图文手把手教程,从大到小拆解网络结构,从小到大梳理代码实现,注释详细! |
任意尺度超分(Arbitrary-Scale SR)
高效/轻量化超分(Efficient/Lightweight SR,ESR)
盲超分/真实世界图像超分辨率(Blind/Real-world SR)
任意尺度超分(Arbitrary-Scale SR)
特定场景超分
医学图像
遥感图像
人脸图像
文本图像
视频超分(Video Super-Resolution)
基于扩散模型的SR模型汇总(Diffusion-based SR Model)
图像恢复(Image Restormation)
说明:通用图像恢复模型(All-in-One),实验中涉及超分。
理论部分,论文精读
看懂论文,学习算法知识,拓宽思路,提升科研写作能力。
【图像超分】主流算法:
- 【图像超分】论文精读:Image Super-Resolution Using Deep Convolutional Networks(SRCNN)
- 【图像超分】论文精读:Accelerating the Super-Resolution Convolutional Neural Network(FSRCNN)
- 【图像超分】论文精读:efficient sub-pixel convolutional neural network (ESPCN)
- 【图像超分】论文精读:Accurate Image Super-Resolution Using Very Deep Convolutional Networks (VDSR)
- 【图像超分】论文精读:Deeply-Recursive Convolutional Network for Image Super-Resolution (DRCN)
- 【图像超分】论文精读:Image Super-Resolution via Deep Recursive Residual Network (DRRN)
- 【图像超分】论文精读:Enhanced Deep Residual Networks for Single Image Super-Resolution(EDSR和MDSR)
- 【图像超分】论文精读:SRResNet/SRGAN
- 【图像超分】论文精读:ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks
- 【图像超分】论文精读:Image Super-Resolution Using Dense Skip Connections(SRDenseNet)
- 【图像超分】论文精读:Deep Laplacian Pyramid Networks for Fast and Accurate Super-Resolution(LapSRN)
- 【图像超分】论文精读:Residual Dense Network for Image Super-Resolution(RDN)
- 【图像超分】论文精读:Wide Activation for Efficient and Accurate Image Super-Resolution(WDSR)
- 【图像超分】论文精读:Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data
- 【图像超分】论文精读:Embedded Block Residual Network (EBRN)
- 【图像超分】论文精读:Second-order Attention Network for Single Image Super-Resolution(SAN)
- 【图像超分】论文精读:SwinIR: Image Restoration Using Swin Transformer
- 【图像超分】论文精读:Fully 1 × 1 Convolutional Network for Lightweight Image Super-Resolution (SCNet)
- 【图像超分】论文精读:CoSeR: Bridging Image and Language for Cognitive Super-Resolution(CoSeR)
- 【图像超分】论文精读:APISR: Anime Production Inspired Real-World Anime Super-Resolution
- 【图像超分/扩散模型】论文精读:Exploiting Diffusion Prior for Real-World Image Super-Resolution(StableSR)
视频超分:
其他领域:
- 【图像超分】论文精读:Deep learning super-resolution electron microscopy based on deep residual attention network
- 【图像超分】论文精读:SRFS: Super Resolution in Fast-Slow Scanning Mode of SEM Based on Denoising Diffusion Probability Model
- 【图像超分】论文精读:Resolution enhancement in scanning electron microscopy using deep learning
实践部分,论文复现
跑通代码,学习超分算法实现流程,复现论文中性能,提升代码能力。
- 【图像超分】论文复现:新手入门!Pytorch实现SRCNN,数据预处理、模型训练、测试、评估全流程详解,注释详细,简单修改就可以训练你自己的图像数据,有训练好的模型下载地址,随取随用
- 【图像超分】论文复现:Pytorch实现SRCNN!保姆级复现教程!提供完整代码和最优权重模型(x2、x3、x4)!科研级论文曲线图!计算平均PSNR和SSIM!代码Windows和Linux都可用!
- 【图像超分】论文复现:Pytorch实现FSRCNN,包含详细实验流程和与SRCNN的比较
- 【图像超分】论文复现:Pytorch实现FSRCNN!整合到SRCNN项目中!提供完整代码和最优权重模型(x2、x3、x4)!科研级论文曲线图!计算平均PSNR和SSIM!
- 【图像超分】论文复现:Pytorch实现ARCNN和FastARCNN!保姆级复现教程!代码注释详细!细节完善!提供完整代码和最优权重模型!绘制科研级论文曲线图!计算测试集的平均PSNR和SSIM!
- 【图像超分】论文复现:Pytorch实现ESPCN
- 【图像超分】论文复现:万字长文!Pytorch实现VDSR!血与泪的数据处理与训练过程总结!深度学习中的各种踩坑记录!适合各种深度学习新手!帮助你少走弯路!
- 【图像超分】论文复现:Pytorch实现DRRN,完美复现论文中的结果(Scale=2,PSNR=37.74)
- 【图像超分】论文复现:万字长文!Pytorch实现EDSR!代码修改无报错!踩坑全记录!适合各种深度学习新手!帮助你少走弯路!附修改后的代码和PSNR最优的模型权重文件!
- 【图像超分】论文复现:Pytorch实现WDSR!保姆级复现教程!代码注释详尽!完整代码和x2、x3、x4下的最优模型权重文件可以直接用!绘制论文曲线图!计算主流测试集的平均PSNR和SSIM!
- 【图像超分】论文复现:万字长文!Pytorch实现SRDenseNet!模型结构搭建通俗易懂!修正各种代码问题!适合各种深度学习新手!帮助你少走弯路!性能与原论文近似!
- 【图像超分】论文复现:万字长文!Pytorch实现SRResNet!代码修改无报错!踩坑全记录!适合各种深度学习新手!帮助你少走弯路!附修改后的代码和PSNR最优的模型权重文件!
- 【图像超分】论文复现:新手入门必备!Pytorch实现SRGAN!手把手详细教程!代码注释详尽!可用于训练自己的数据集!实时验证模型性能!绘制PSNR曲线图!附训练好的各放大倍数的模型权重文件!
- 【图像超分】论文复现:万字长文!Pytorch实现LapSRN代码修改无报错!踩坑全记录!适合各种深度学习新手!帮助你少走弯路!附修改后的代码和PSNR最优的模型权重文件!
- 【图像超分】论文复现:Pytorch实现RDN!保姆级复现教程!实现与原论文基本一致的PSNR和SSIM!代码注释详尽!易读易复用!可用于训练自己的数据集!附完整代码和各放大倍数下的最优模型权重文件!
- 【图像超分】论文复现:Pytorch实现IDN!保姆级复现教程!代码注释详尽!完整代码和x2、x3、x4下的最优模型权重文件可以直接用!绘制论文曲线图!实现matlab版本的PSNR/SSIM计算!
- 【图像超分】论文复现:Pytorch实现RCAN!与论文中参数和细节完全一致!提供完整代码和模型权重(x2、x3、x4、x8)!计算5大主流测试集上RCAN和RCAN+的PSNR和SSIM!
科研相关:
- 【高效科研】超分辨率重建论文实验部分的视觉比较(Visual comparison)—— 制作局部放大图!全代码自动化实现!鼠标框选区域!只需修改图像路径!无需使用PPT或PS!四种方法让你得心应手!
- 【高效科研】Pytorch训练的模型评估测试集,实现与论文中的PSNR/SSIM一致的计算方法!附各主流方法的Bicubic结果对比!分析区别以及原因!得到终极计算方法!
两个常用的库:
一些主流模型的论文源码只给出了模型结构,训练是基于上面这两个库的。在主流SOTA模型都掌握后,可以看看如何使用它们训练,这样可以将模型都汇总在一起,不用一个一个单独做了。
论文、代码、数据集、工具、资料汇总
- GitHub:超分辨率最全资料集锦
- https://github.com/ChaofWang/Awesome-Super-Resolution?tab=readme-ov-file#2024 —— Paper/code汇总,一直更新至今
- 【实践与问题解决28】最全超分辨率(SR)数据集介绍以及多方法下载链接
- 6000+Star的超分工具箱项目,整合了多种SR算法
- 数据集快速处理工具MindsporeDataset
- SISR深度学习主要方法简述 —— 表格汇总上采样方法和各模型方法
- 深度学习的图像超分技术综述-输入单张图像(SISR)和输入多张图像的基于参考的图像(RefSR) —— 同上
- 基于深度学习的超分辨率图像技术发展轨迹一览 —— 发展历程,原理
- SRCNN、DRCN、FSRCNN、ESPCN、SRGAN、RED…你都掌握了吗?一文总结超分辨率分析必备经典模型(一)
- VDSR、DRRN、LapSRN、RCAN、DSRN…你都掌握了吗?一文总结超分辨率分析必备经典模型(二)
- SFT-GAN、CSRCNN、CSNLN、HAN+、Config (f)…你都掌握了吗?一文总结超分辨率分析必备经典模型(三)
- 超分辨率重建生成低分辨率图像,生成降质图像公认方法代码 —— 生成LR图像matlab代码(用python生成LR会有性能差异)
- 超分数据集概述和超分经典网络模型总结 —— 一篇综述,总结了数据集和经典方法
- 图像超分综述:超长文一网打尽图像超分的前世今生 (附核心代码) —— 各算法创新点及核心代码总结
注:上述链接是本人在学习超分的过程中觉得有用的资料,分享给大家,侵删。
研究方向
- benchmark上涨点,改模型结构,迁移其他模块 —— 常规做法(适用于不要求论文等级的同学)
- 真实世界(Real-World)超分、盲超分 —— 研究热点(但需要算力强,适用于想发稍微好点论文的同学,有一定算力的硬件)
- 用扩散模型解决超分问题,对标GAN,去噪扩散模型效果更好 —— 研究大热点(适用于想发任何等级论文的同学,但需要硬件算力特别强,没有8个A100也得有4个A40)
- 细化到具体类别 —— 动漫图像超分、人脸图像超分、医学图像超分、显微图像超分、遥感图像超分、文字文档图像超分(基于某一类特征研究,好出成果,适用于想快速出文章的同学,可以解决实际问题,做项目)
- 提升超分训练效率(Efficient Image Super-Resolution)
- 通用方法 —— 将某个方法加入到超分流程中实现更好的效果,比如某个数据增强使用后比不使用效果好,在网络尾端使用dropout比不使用效果好等。
问题汇总
本小节汇总遇到的问题,不定期更新。
- 如何做scale=1的超分,即不放大,只变清晰?
答:可以,但不符合超分的做法。因为超分的含义就是提升分辨率,没办法训练scale=1的模型,scale=1就变成其他问题了(想变清晰是去模糊image deblurring)。但可以放大完再缩小。也有输入输出图像大小一致的模型,但不是scale=1训练出来的。总之,有很多手段可以不放大,只变清晰。但不是scale=1。跟图像大小没关系,超分主要是学习不同分辨率图像之间的映射关系,实际上不是图像大小缩放而来的关系,也可以按照超分的流程训练找到LR和HR的关系,LR图像输入模型,模型推理出对应的HR。缩放倍数只是一种得到LR的手段,一种提前设定好的关系。
- python与matlab计算PSNR和SSIM的差别
-
【深度思考】为什么评价指标PSNR、SSIM和论文中的不一样?一文搞清超分辨率主流benchmarks测试集Set5等的PSNR、SSIM的计算方式以及python与matlab的imresize差别
-
what is the difference between opencv’s and matlab’s bicubic algorithm?
没有硬件条件,需要云服务的同学可以扫码看看:
公众号
关注下方👇公众号【十小大的底层视觉工坊】,公众号将更新精炼版论文,帮助你用碎片化时间快速掌握论文核心内容。