超分中使用的损失函数和经典文章

损失函数

https://towardsdatascience.com/super-resolution-a-basic-study-e01af1449e13

在GAN出现之前,使用的更多是MSE,PSNR,SSIM来衡量图像相似度,同时也使用他们作为损失函数。

MSE

表面上MSE直接决定了PSNR,MSE:

但是这些引以为傲的指标,有时候也不是那么靠谱:

MSE对于大的误差更敏感,所以结果就是会倾向于收敛到期望附近,表现为丢失高频信息。同时根据实验,MSE的收敛效果也差于L1:

MAE

MAE相比于MSE,对所有像素一视同仁,能保留更多高频信息,所以更符合人眼。

但是只使用L1也有问题,现在通常的做法是多种损失混合使用,比如MS-SSIM+L1,还有基于DCT的loss。

在目前超分辨率的论文中不使用MSE,而使用L1或者Perceptual loss的原因是什么? - 知乎

MS-SSIM

其实就是构建图像金字塔,每一层计算ssim,每一层有不同的权重。

1. 权重不是递进的,而是中间层的权重最大:[0.0448, 0.2856, 0.3001, 0.2363, 0.1333]);

2. 权重是以指数的形式;

3. 在实现上,没有考虑s的部分。l*c就是原来标准的ssim,但是l只有在最后一层参与了计算。

https://ece.uwaterloo.ca/~z70wang/publications/msssim.pdf

mmagic/mmagic/evaluation/metrics/ms_ssim.py at 0a560bba9b79ebe78574e1d4cbbdd0e798e63568 · open-mmlab/mmagic · GitHub

TV-loss

它更像是一个平滑函数,通过最小化四近邻的差异来平滑噪声。同时也可以看到,它没有考虑对应的HR图像。

上面几种loss都是像素级别的,属于pixel loss。同样是MSE,但如果在特征图上计算,那就是Perceptual Loss/content loss。

提取特征图通常使用预训练好的VGG/ResNet模型。

Texture Loss/

也称为style loss or gram matrix loss。

它借鉴了风格迁移任务,仍然是基于特征图,但是不是直接计算MSE,而是先基于特征图计算gram矩阵。

如果两个图的gram矩阵差异小,那么他们是更接近的:

算法

SRGAN,ESRGAN,Real ESRGAN,一步步演化,对比着看才更容易理解。

SRCNN

这是第一篇使用CNN做超分的算法。

首先使用bi-cubic将LR图像上采样上来,然后使用CNN提取特征,同时学习映射关系。损失函数使用的依然是MSE,但仍然获得了更多的细节。

SRGAN

SRGAN主要从损失函数的角度优化。因为发现一MSE为损失函数时,网络会倾向于平均的结果,表现在图像上就是过于平滑,丢失细节。https://arxiv.org/pdf/1609.04802.pdf

SRGAN使用了两个损失函数,一个是使用VGG的特征图,在特征图上计算欧式距离。第二个损失函数是使用对抗网络中的鉴别器,判断当前输出结果是否是真实的HR数据。

ESRGAN

ESRGAN在损失函数上继续优化。特征图损失部分,使用的是激活前的而不是激活后的,因为激活后的未免太抽象;

鉴别器损失部分,借鉴relativistic GAN,使用相对损失而不是绝对损失。

除了损失函数,网络结构方面也是把残差,dense net组合成更复杂的RRDB:

首先是构建Dense Block,卷积越往后,接受的通道数越多(因为是之前所有的输出和最开始的输入)。Dense Block把输出和输入线性组合,就是RDB。RRDB就是把三个RDB串起来,再把输出和输入做线性组合。组合的时候,输出只占0.2.

最终以PSNR和GAN为目标,作者训练了两套模型参数,对两套参数加权融合,可以互补二者的优缺点。

Real ESRGAN

Real ESRGAN主要的贡献是数据对的生成。通过模糊,下采样,加噪声,压缩,模拟振铃效应等得到了更接近真实退化的图像对:

SRGAN、ESRGAN与Real ESRGAN方法介绍 - 知乎

ESRGAN原理分析和代码解读 - 知乎

超分之ESRGAN官方代码解读_residual-in-residual dense block、-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/561744.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

html接入高德地图

1.申请key key申请地址&#xff1a;https://console.amap.com/dev/key/app 官方文档 https://lbs.amap.com/api/javascript-api-v2/summary 2.html接入示例 需要将YOUR_KEY替换成自己的key <!doctype html> <html> <head><meta charset"utf-…

2024年上海中考数学模拟题和答案,由过去十年真题随机组卷

还有不到两个月就是上海中考了&#xff0c;为了帮助孩子们更好地准备&#xff0c;好真题网把整理了过去十年的中考数学题真题&#xff0c;做成了在线试卷&#xff0c;便于孩子便捷地反复练习。吃透真题及其背后的知识点&#xff0c;是备考各种考试最科学、高效的方法&#xff0…

端午新疆自驾游招募

欢迎关注「苏南下」 在这里分享我的旅行和影像创作心得 端午节快到了&#xff0c;我计划带队开启【新疆喀什】旅拍摄影小团。让我这个新疆人带你去新疆赏美景、拍美片和吃美食。 出行时间是6.6-6.11日&#xff0c;为期6天。 为了保证良好的出行体验&#xff0c;这次团队招募人数…

Vue+OpenLayers7入门专栏目录,OpenLayers7中文文档,OpenLayers7中文手册api,OpenLayers7中文教程

返回入门到实战汇总目录&#xff1a;汇总目录 前言 本篇作为《VueOpenLayers7入门教程》所有文章的二合一汇总目录&#xff0c;方便查找。 本专栏源码是由OpenLayers7.x版本结合Vue框架编写。本专栏基本上每章都有详细的源代码和运行示例以供参考&#xff0c;且保证每章代码都…

【论文精读】Attention is all you need

摘要 主要的序列转换模型是基于复杂的循环或卷积神经网络&#xff0c;其中包括一个编码器和一个解码器。性能最好的模型还通过一种注意力机制将编码器和解码器连接起来。我们提出了一种新的简单的网络架构&#xff0c;Transformer&#xff0c;完全基于注意机制&#xff0c;完全…

每日学习笔记:C++ STL算法之容器元素排序

目录 常规排序 升序排序&#xff1a; sort(beg, end) stable_sort(beg, end, op) 自定义规则排序&#xff1a; sort(beg, end, op) stable_sort(beg, end, op) 局部排序(使前段有序) partial_sort(beg, sortEnd, end) partial_sort(beg, sortEnd, end, op) 复制并局…

【C++】日期类Date(详解)

&#x1f525;个人主页&#xff1a;Forcible Bug Maker &#x1f525;专栏&#xff1a;C 目录 前言 日期类 日期类实现地图 获取某年某月的天数&#xff1a;GetMonthDay 检查日期合法&#xff0c;构造函数&#xff0c;拷贝构造函数&#xff0c;赋值运算符重载及析构函数…

2. uni-app的一些介绍

前言 就目前的前端生态而言&#xff0c;跨端开发基本算是每一个前端开发者必备的技能点之一了&#xff0c;而在Vue这个技术栈里uni-app在跨端是独一档的&#xff0c;不信的话可以翻翻Boss之类的招聘网站.... 概述 阅读时间&#xff1a;约5~10分钟&#xff1b; 本文重点&…

linux的编译器vim

vim简介 之前我们在win下写代码&#xff0c;都是下载一些编译器VS/eclipse等 他们不仅可以写代码&#xff0c;还可以实现代码的运行调试&#xff0c;开发。这样的编译器叫做集成编译器 而linux中虽然也有这样的编译器&#xff0c;但不管是从下载&#xff0c;还是使用中都会显…

谷歌地球引擎Google Earth Engine下载数字高程模型DEM数据的方法

本文介绍在谷歌地球引擎&#xff08;Google Earth Engine&#xff0c;GEE&#xff09;中&#xff0c;批量下载指定时间与空间范围内的数字高程模型&#xff08;DEM&#xff09;数据的方法。 本文是谷歌地球引擎&#xff08;Google Earth Engine&#xff0c;GEE&#xff09;系列…

UltraScale+的40G/50G Ethernet Subsystem IP核使用

文章目录 前言一、设计框图二、模块说明三、上板3.1、发送端3.1、接收端 四、总结 前言 上文介绍了10G/25G Ethernet Subsystem IP核使用&#xff0c;本文将在此基础上介绍40G/50G Ethernet Subsystem IP核的使用&#xff0c;总体区别不大。 一、设计框图 由于40G以太网需要…

嵌入式 - i.MX93 Evaluation Kit介绍

MCIMX93-EVK (i.MX 93 APPLICATIONS PROCESSOR) 1, Out of the Box [ 开箱 ] Top view i.MX 93 11x11 EVK board Back view: Board kit contents: (board, power supply, cable, software, Documentation) MCIMX93-EVK board assembled with two separate boards, MCIMX93-SOM…

《MATLAB科研绘图与学术图表绘制从入门到精通》示例:绘制伊甸火山3D网格曲面图

11.4.2小节我们使用3D曲面图可视化分析伊甸火山数据&#xff0c;本小节我们采用3D网格曲面图可视化分析伊甸火山数据&#xff0c;以展示其地形&#xff0c;具体示例代码如下。 购书地址&#xff1a;https://item.jd.com/14102657.html

RabbitMQ项目实战(一)

文章目录 RabbitMQ项目实战选择客户端基础实战 前情提要&#xff1a;我们了解了消息队列&#xff0c;RabbitMQ的入门&#xff0c;交换机&#xff0c;以及核心特性等知识&#xff0c;现在终于来到了激动人心的项目实战环节&#xff01;本小节主要介绍通过Spring Boot RabbitMQ S…

HackMyVM-Hommie

目录 信息收集 arp nmap WEB web信息收集 dirsearch ftp tftp ssh连接 提权 系统信息收集 ssh提权 信息收集 arp ┌──(root㉿0x00)-[~/HackMyVM] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 08:00:27:77:ed:84, IPv4: 192.168.9.126 Starting arp-…

PhpStorm2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 PhpStorm是由JetBrains公司开发的一款商业的PHP集成开发环境&#xff08;IDE&#xff09;&#xff0c;深受全球开发人员的喜爱。它旨在提高开发效率&#xff0c;通过深刻理解用户的编码习惯&#xff0c;提供智能代码补全、快速导…

14.哀家要长脑子了!

目录 1.598. 区间加法 II - 力扣&#xff08;LeetCode&#xff09; 2.419. 甲板上的战舰 - 力扣&#xff08;LeetCode&#xff09; 3.54. 螺旋矩阵 - 力扣&#xff08;LeetCode&#xff09; 4. 498. 对角线遍历 - 力扣&#xff08;LeetCode&#xff09; 5. 566. 重塑矩阵 - …

希亦、添可、追觅洗地机哪一款更好用?口碑洗地机型号多维度测试

近年来&#xff0c;随着“懒人经济”的兴起&#xff0c;商家们纷纷推出各种智能化、便捷化、高效化的家电产品&#xff0c;以提升人们的生活品质。在这些家电产品中&#xff0c;家居清洁领域的小家电发展尤为迅速&#xff0c;产品不断更新换代。在众多清洁家电产品中&#xff0…

C++ | Leetcode C++题解之第41题缺失的第一个正数

题目&#xff1a; 题解&#xff1a; class Solution { public:int firstMissingPositive(vector<int>& nums) {int n nums.size();for (int i 0; i < n; i) {while (nums[i] > 0 && nums[i] < n && nums[nums[i] - 1] ! nums[i]) {swap(…

[svelte]属性和逻辑块

属性 / Default values • Svelte 教程 | Svelte 中文网 属性 Declaring props 到目前为止&#xff0c;我们只处理了内部状态——也就是说&#xff0c;这些值只能在给定的组件中访问。 在任何实际应用程序中&#xff0c;都需要将数据从一个组件向下传递到其子组件。为此&…