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

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

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)

 

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

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

相关文章

【 C语言 】 | C程序百例

【 C语言 】 | C程序百例 时间:2023年12月28日13:50:43 文章目录 【 C语言 】 | C程序百例1.参考2.练习 1.参考 1.【 C语言 】 | C程序百例-CSDN博客 2.100Example: C程序百例-酷勤网(kuqin.com)提供.pdf (gitee.com) 3.cProgram/LinuxC - 码…

IPD-PDP产品开发流程-PDT产品开发计划Charter文档模板(word)2

书接上回,继续为大家分享PDT的产品开发计划Charter模板的主要内容。 据华研荟了解,大部分国内的企业在推行IPD的时候就直接像华为一样,把开发计划(任务书)叫做Charter,而不翻译为中文。其实这也是一种很好…

高校怎么搭建虚拟数字人动作捕捉实训室?

如今,虚拟数字人市场迎来爆发风口,在产业推动下,虚拟数字人动作捕捉技术人才需求旺盛,高校搭建虚拟数字人动作捕捉实训室,可以让学生接触前沿的全身动作捕捉系统,能够培养具有开阔眼界和先进技术接轨的专业…

鸿蒙系列--组件介绍之其他基础组件(上)

上回介绍了基础组件中最常用的组件常用的基础组件,接下来还有其他基础组件 一、Blank 描述:空白填充组件 功能:在容器主轴方向上,具有自动填充容器空余部分的能力。只有当父组件为Row/Column时生效 子组件:无 Blan…

羊大师讲解,羊奶在本草纲目中的作用及其益处

羊大师讲解,羊奶在本草纲目中的作用及其益处 羊奶是一种传统的中药材,早在《本草纲目》中就被广泛记录和应用。它是从母羊妊娠后分泌出来的乳汁,具有丰富的营养成分和独特的药用价值。小编羊大师发现,羊奶被认为是一种滋补养颜、…

3D 渲染如何帮助电商促进销售?

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 3D 渲染图像因其高转化率而成为亚马逊卖家的最新趋势。它是电子商务平…

Linux iptables防火墙(一)

1.1 Linux防火墙基础 在 Internet 中,企业通过架设各种应用系统来为用户提供各种网络服务,如 Web 网站、 电子邮件系统、 FTP 服务器、数据库系统等。那么,如何来保护这些服务器,过滤企业不 需要的访问甚至是恶意的入侵呢&a…

作为开发人员掌握 GitHub Copilot:15 个提示和技巧

目录 Copilot 的炫酷用例 为您完成代码 从代码编写测试 TDD:通过测试编写代码 测试/模拟数据生成 从注释中编写代码 问:&答: 颜色生成 使用测量单位 自然语言翻译 自动化脚本 正则表达式 配置 命令行命令 文档和自述文本 if (true) 技巧 …

QT与MATLAB混合编程详解

写在前面:由于matlab和qt的环境配置复杂,请大家一定先根据自己电脑的路径来替换本文中的路径 本文使用环境: MATLAB 2022b qt 6.6 编译环境:MSVC2019 64位 matlab的环境还需要配置在环境变量中 此电脑(右键&#xf…

Docker 实践之旅:项目迁移与高效部署

目录 1 引言2 初识 Docker2.1 Docker简介2.2 Docker优势 3 传统部署流程的问题4 学习 Docker 的过程5 Docker 解决项目部署的实践5.1 迁移关键服务5.2 定制化打包与快速部署 6 项目实践收获6.1 简化了部署流程6.2 节约了部署成本 7 克服难点和经验分享7.1 版本兼容性问题7.2 网…

Android Studio修改创建新布局时默认根布局

将Android Studio默认布局ConstraintLayout切换成LinearLayout 打开设置, Editor> File and Code Templates > Other > layoutResourceFile.xml 备注:创建时提示根布局仍然为ConstraintLayout,不用管这个,实际创建的…

MybatisX逆向工程方法

官方文档链接:MybatisX快速开发插件 | MyBatis-Plus (baomidou.com) 使用MybatisX可以快速生成mapper文件,实体类和service及实现 效果 方法:首先下载mybatisX插件 然后创建数据库信息 然后选中表,右键,点击Mybatis…

WeakMap 和 Map 的区别,WeakMap 原理,为什么能被 GC?

垃圾回收机制 我们知道,程序运行中会有一些垃圾数据不再使用,需要及时释放出去,如果我们没有及时释放,这就是内存泄露 JS 中的垃圾数据都是由垃圾回收(Garbage Collection,缩写为 GC)器自动回…

JMeter逻辑控制器之While控制器

JMeter逻辑控制器之While控制器 1. 背景2.目的3. 介绍4.While示例4.1 添加While控制器4.2 While控制器面板4.3 While控制器添加请求4.3 While控制器应用场景 1. 背景 存在一些使用场景,比如:某个请求必须等待上一个请求正确响应后才能开始执行。或者&…

Springboot整合JSP-修订版本(Springboot3.1.6+IDEA2022版本)

1、问题概述? Springboot对Thymeleaf支持的要更好一些,Springboot内嵌的Tomcat默认是没有JSP引擎,不支持直接使用JSP模板引擎。这个时候我们需要自己配置使用。 2、Springboot整合使用JSP过程 现在很多的IDEA版本即使创建的项目类型是WAR工…

页面左中右下布局HTML

效果如下 代码如下 <!DOCTYPE html> <html><head><title>名曲欣赏</title><meta charset"UTF-8" /><style>body {padding: 0;margin: 0;background: linear-gradient(180deg, #d7f5f2 0%, #c4f2ee 100%);}p {margin: 0;p…

学生使用什么牌子的护眼灯好?五款优秀台灯分享

在近几年&#xff0c;儿童青少年近视率非常高。很多家长认为孩子近视的原因是没有养成正确的用眼习惯&#xff0c;例如经常趴桌子写作业、眯眼看书等&#xff0c;但实际上这些坏习惯是因为没有合适的光线而导致的。所以安排一盏合适的台灯给孩子学习是非常重要的。 很多家长会选…

基于C++的类Unix文件系统

这是一个基于C的类Unix文件系统&#xff0c;有意者私信获取。 可用指令如下&#xff1a; ls - 显示当前文件夹下的内容 cd - 按照路径进入到某个文件夹下 mkdir <path/name> - 在指定路径下创建一个文件夹 create <path/name> - 在指定路径下创建一个文件 open &…

Hadoop安装笔记2单机/伪分布式配置_Hadoop3.1.3——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

紧接着上一篇博客&#xff1a;Hadoop安装笔记1&#xff1a; Hadoop安装笔记1单机/伪分布式配置_Hadoop3.1.3——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2&#xff1a;离线数据处理-CSDN博客https://blog.csdn.net/Zhiyilang/article/details/135…

SpringBoot 项目中常用的注解

每一层对应每个包&#xff0c;包名中应全为小写。 一、Common 层&#xff08;实体类&#xff09; 前提&#xff1a;导入 Lombok 依赖 Data&#xff1a;生成 get 和 set 方法以及 toString 方法 Getter&#xff1a;只生成 get 方法&#xff0c;避免对类中的成员变量修改。 …