基于梯度和频率域的深度超分辨率新方法笔记二

news2024/11/27 3:41:20

一、实现方法和网络结构的剖析

1.1 网络结构

梯度校准模块(GCM)和频率感知模块(FAM)

1)梯度校准模块(GCM)

1、使用梯度映射函数(如下图所示),将RGB和LR深度图映射到梯度域

2、再梯度域中使用RGB的梯度特性对LR的梯度特征进行校准和锐化。这个过程是基于深度学习的,主要使用梯度感知损失进行有监督的学习。

3、将校准后的梯度特征和深度特征融合得到梯度增强后的特征,然后将梯度增强后的特征送入到频域感知模块

2)频率感知模块(FAM)

      FAM如图3绿色区域所示,其递归的执行多个频谱差分模块来不断地在频域中优化深度特征。然后将不同阶段获取到的深度特征通过残差模块和上采样模块进行融合得到 ,最后结合由bicubic插值上采样后的深度图  , 得到最终预测的HR深度图  。

执行流程为:

1、递归的执行多个频谱差分模块来不断地在频域中优化深度特征

2、将不同阶段获取到的深度特征通过残差模块和上采样模块进行融合得到 Dfe.

3、最后结合由bicubic插值上采样后的深度图 Dbi, 得到最终预测的HR深度图  。

频谱差分模块:

由此可以得出:在频域中,是通过卷积层对幅值和相位的学习

频谱的相位和幅值的求解方法:

  快速傅里叶变换(FFT)是信号处理的重要组成部分,用于求信号的幅度、相位以及画频谱图等。

function [x,freq] = fft_plot(x,Fs)
%计算信号的双边幅度频谱和其横坐标、并调整使得横坐标中心频率为0Hz,输入:x为输入信号,Fs为采样频率,输出:x为输入信号的幅度频谱,freq为输入信号幅度频谱的横坐标
N = length(x);
%%计算频谱的横坐标,使得中心频率为0Hz
if mod(N,2)==0
    k = -N/2:N/2-1;
else
    k = -(N-1)/2:(N-1)/2;
end
T = N/Fs;
freq = k/T;
x= fft(x)/N;%fft并归一化
x= fftshift(x);

主程序:

[x1,freq] = fft_plot(x,Fs);
figure;
plot(freq,abs(x1));
xlabel('频率(Hz)');
ylabel('幅度');
title('信号频谱图');

 信号的频域表示携带每个频率下信号幅值和相位的有关信息。因此,FFT 计算的输出是复数。复

 有实部 

$x_r$

 和虚部 

$x_i$

,满足 

$x = x_r + jx_i$

 的幅值计算为 

$\sqrt{(x_r^2+x_i^2)}$

 的相位计算为 

$\arctan{(x_i/x_r)}$

3)损失函数

 二、损失函数

2.1 损失函数的作用

一:什么是损失函数:
简单的理解就是每一个样本经过模型后会得到一个预测值,然后得到的预测值和真实值的差值就成为损失(当然损失值越小证明模型越是成功),我们知道有许多不同种类的损失函数,这些函数本质上就是计算预测值和真实值的差距的一类型函数,然后经过库(如pytorch,tensorflow等)的封装形成了有具体名字的函数。

二:为什么需要损失函数:
我们上文说到损失函数是计算预测值和真实值的一类函数,而在机器学习中,我们想让预测值无限接近于真实值,所以需要将差值降到最低(在这个过程中就需要引入损失函数)。而在此过程中损失函数的选择是十分关键的,在具体的项目中,有些损失函数计算的差值梯度下降的快,而有些下降的慢,所以选择合适的损失函数也是十分关键的。

三:损失函数通常使用的位置:
在机器学习中,我们知道输入的feature(或称为x)需要通过模型(model)预测出y,此过程称为向前传播(forward pass),而要将预测与真实值的差值减小需要更新模型中的参数,这个过程称为向后传播(backward pass),其中我们损失函数(lossfunction)就基于这两种传播之间,起到一种有点像承上启下的作用,承上指:接収模型的预测值,启下指:计算预测值和真实值的差值,为下面反向传播提供输入数据。

2.2 常用的损失函数

代码实现: 

import torch as th
import torch.nn as nn
 
loss=nn.L1Loss()
 
input=th.Tensor([2,3,4,5])
target=th.Tensor([4,5,6,7])
output=loss(input,target)
 
output
 
tensor(2.)
 

我们可以用手动计算来验证数学本质正不正确(数学本质中的m在文中具体数值为4):

output=(|2-4|+|3-5|+|4-6|+|5-7|)/4=2

ps:因为我们函数的“reduction”(l1loss函数的参数)选择的是默认的"mean"(平均值),所以还会在除以一个"4",如果我们设置“loss=L1Loss(reduction='sum')则不用再除以4。

2,MSELoss函数:

(1):数学本质:

 ps:在此数学公式中的参数含义与L1Loss函数参数意义相同

(2):证明:

import torch as th
import torch.nn as nn
 
loss=nn.MSELoss()
 
 
input=th.Tensor([2,3,4,5])
target=th.Tensor([4,5,6,7])
output=loss(input,target)
 
output
 
tensor(4.)
 

output=[(2-4)^2+(3-5)^2+(4-6)^2+(5-7)^2  ]/4=4

3:CrossEntropyLoss函数(交叉熵函数)

import torch
import torch.nn as nn
import math

loss = nn.CrossEntropyLoss()
input = torch.randn(1, 5, requires_grad= True)
target = torch.empty(1, dtype = torch.long).random_(5)
output = loss(input, target)

print('输入为5类:', input)
print('要计算loss的真实类别', target)
print('loss=', output)
#自己计算的结果
first = 0
for i in range(1):
    first -= input[i][target[i]]
second = 0
for i in range(1):
    for j in range(5):
        second += math.exp(input[i][j])
res = 0
res += first + math.log(second)
print('自己的计算结果:', res)

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

彭涛:2023年终复盘,工作,团队,个人!

眨眼2023即将结束,2024即将开启,每年这个时候,都会简单总结下自己这一年,既是对今年的一个复盘和回顾,也是对新一年的向往和期待。 我的2023年,大概分为 「个人」,「家庭」,「团队」…

C语言——指针题目“指针探测器“

如果你觉得你指针学的自我感觉良好&#xff0c;甚至已经到达了炉火纯青的地步&#xff0c;不妨来试试这道题目&#xff1f; #include<stdio.h> int main() {char* c[] { "ENTER","NEW","POINT","FIRST" };char** cp[] { c 3…

【漏洞修复】页面包含错误信息,其中可能包含敏感信息,这些信息可以帮助攻击者对站点进一步的攻击

1、漏洞描述 2、测试数据包 3、tomcat修复 修改tomcat conf下的server.xml relaxedQueryChars"[]|{}^&#x5c;&#x60;&quot;<>"

初识隧道代理HTTP:理解基础概念的重要性

嗨&#xff0c;小伙伴们&#xff01;如果你对网络世界充满好奇&#xff0c;那么这篇文章就是为你准备的。我们将一起踏上一段奇妙的旅程&#xff0c;探索一个叫做“隧道代理HTTP”的新领域。但在这之前&#xff0c;我们需要先穿上“基础概念”的防护服&#xff0c;以免被这个复…

演员-评论家算法:多智能体强化学习核心框架

演员-评论家算法 演员-评论家算法&#xff1a;策略梯度算法 DQN 算法演员-评论家的协作流程演员&#xff1a;策略梯度算法计算智能体策略预期奖励的梯度公式分解时间流程拆解 通过采样方法近似估计梯度公式拆解时间流程拆解 改进策略设置基线&#xff1a;适用于减小方差、加速…

Vue监听浏览器自带的复制事件并对复制内容进行修改

场景&#xff1a; 在使用鼠标右键或者ctrl c的时候。光标会自动换行。粘贴出来的数据光标应该在红色部分&#xff0c;却出现在了黑色部分。 方法一&#xff1a; html标签不要换行&#xff1b;css去除空格&#xff1b; white-space: nowrap;方法二&#xff1a; 使用函数对复…

【数据结构和算法】独一无二的出现次数

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 哈希类算法题注意事项 2.2 方法一&#xff1a;判断长度 2.3 方法二&#xff1a; set 判断 2.4 方法…

MCEWMDRMNDBootstrap.dll文件丢失,软件游戏无法启动,怎样下载修复

不少小伙伴反馈&#xff0c;在打开某些游戏或软件的时候&#xff0c;Windows会提示“MCEWMDRMNDBootstrap.dll文件丢失&#xff0c;软件无法启动”&#xff0c;不知道应该怎样办&#xff1f; 首先&#xff0c;我们先来了解“MCEWMDRMNDBootstrap.dll文件”是什么&#xff1f; …

Sensor Demosaic IP 手册PG286笔记

《 UG1449 Multimedia User Guide》中包含了大量的多媒体IP简介。 本IP 用于对bayer RGB&#xff08;每个pixel只有单个R/G/B&#xff09;做去马赛克处理&#xff0c;恢复成每个pixel点都有完整的RGB值。通过axi接口配置IP内部erg。 1、算法手册中的描述 提到了几种插值算法&…

友情提示!使用JDK11,如果 maven包含 <scope>test</scope>标签,构建时会出现严重错误

最近在做selenium的升级工作&#xff0c;使用jdk 11.0.20 maven 3.9.6&#xff0c;Pom 配置如下&#xff1a; maven构建报错 <dependencies> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selen…

电脑监控软件是无路径、无进程吗

后台有很多人问&#xff0c;电脑监控软件是无路径、无进程吗。 今天先来回答一下这个问题&#xff0c;电脑监控软件是无路径、无进程&#xff0c;不易被发现的。 一、避免被发现 电脑监控软件可以通过无路径、无进程的方式进行安装和运行&#xff0c;以避免被员工发现和删除…

Java AOP

1 概述 1.1 定义 AOP&#xff08;Aspect Oriented Programming&#xff09;&#xff0c;即面向切面编程 。在不修改原有代码的基础上&#xff0c;对代码进行增强。 1.2 术语 1.3 底层原理 入门案例 项目名&#xff1a;day049_spring_aop 坐标&#xff1a;web、test、aop &…

浅谈安科瑞智能照明系统在马来西亚国家石油公司项目的应用

摘要&#xff1a;随着社会经济的发展及网络技术、通信技术的提高&#xff0c;人们对照明设计提出了新的要求&#xff0c;它不仅要控制照明光源的发光时间、 亮度&#xff0c;而且与其它系统来配合不同的应用场合做出相应的灯光场景。本文介绍了马亚西亚石油公司智能照明项目的应…

磁盘LVM逻辑卷和扩容

一、LVM介绍 1、LVM是Linux中对硬盘分区的一种管理机制。 2、工作原理&#xff1a; ①动态调整磁盘&#xff0c;提高磁盘管理的灵活性 ②/boot分区用于存放引导文件&#xff0c;不能基于LVM创建 ③图形界面管理工具 3、LVM机制的基本概念 ①物理卷&#xff1a;将硬盘转船…

2023年度五大容灾关键词

当前&#xff0c;云计算已成为推动企业数字化转型的关键技术之一。它已逐步渗透进入各个行业&#xff0c;如互联网、政务、金融和制造业&#xff0c;企业上云的比例和应用深度也大幅提升。与此同时&#xff0c;不可抗力因素带来的灾害风险仍然持续&#xff0c;战争、地震、海啸…

Weblogic反序列化远程命令执行(CVE-2019-2725)

漏洞描述&#xff1a; CVE-2019-2725是一个Oracle weblogic反序列化远程命令执行漏洞&#xff0c;这个漏洞依旧是根据weblogic的xmldecoder反序列化漏洞&#xff0c;通过针对Oracle官网历年来的补丁构造payload来绕过。 复现过程&#xff1a; 1.访问ip&#xff1a;port 2.可…

一文浅谈旋转变换:旋转矩阵、旋转向量、欧拉角、四元数

目录 一、旋转矩阵 1.1 定义和推导 1.2 旋转矩阵的缺点 二、旋转向量 2.1 定义和推导 2.1.1 旋转向量转旋转矩阵 2.1.2 旋转矩阵转旋转向量 2.2 旋转向量的缺陷 三、欧拉角 3.1 定义和推导 3.1.1 欧拉角与旋转矩阵 3.1.1.1 欧拉角转旋转矩阵 3.1.1.2 旋转矩阵转欧…

关于“Python”的核心知识点整理大全49

目录 16.2.10 加亮颜色主题 16.3 小结 第&#xff11;7 章 使用API 17.1 使用 Web API 17.1.1 Git 和 GitHub 17.1.2 使用 API 调用请求数据 17.1.3 安装 requests 17.1.4 处理 API 响应 python_repos.py 注意 17.1.5 处理响应字典 python_repos.py import json i…

Python 内置高阶函数练习(Leetcode500.键盘行)

Python 内置高阶函数练习&#xff08;Leetcode500.键盘行&#xff09; 【一】试题 &#xff08;1&#xff09;地址&#xff1a; 500. 键盘行 - 力扣&#xff08;LeetCode&#xff09; &#xff08;2&#xff09;题目 给你一个字符串数组 words &#xff0c;只返回可以使用在…

阿里云数据库polardb怎么收费?

阿里云数据库PolarDB租用价格表&#xff0c;云数据库PolarDB MySQL版2核4GB&#xff08;通用&#xff09;、2个节点、60 GB存储空间55元5天&#xff0c;云数据库 PolarDB 分布式版标准版2核16G&#xff08;通用&#xff09;57.6元3天&#xff0c;阿里云百科aliyunbaike.com分享…