【深度学习】图像去噪(2)——常见网络学习

【深度学习】图像去噪 是在 【深度学习】计算机视觉 系列文章的基础上,再次针对深度学习(尤其是图像去噪方面)的基础知识有更深入学习和巩固。

1 DnCNN

1.1 网络结构

1.1.1 残差学习

1.1.2 Batch Normalization (BN)

1.1.2.1 背景和目标

批归一化是DnCNN第二个特点。在阅读代码的时候,我对model.train()model.eval()产生了疑问,它们的作用是什么?

一般用法是:在训练开始之前写上 model.trian() ,在测试时写上 model.eval() 。

  • model.train():启用BN层和Dropout。
  • model.eval():不启用BN层和Dropout。

Dropout此处不做过多解释,对于BN层,model.train()是保证BN层能够用到每一批数据的均值和方差;model.eval()是保证BN层能够用全部训练数据的均值和方差。训练完 train 样本后,生成的模型 model 要用来测试样本了,在 model(test) 之前,需要加上model.eval(),否则的话,有输入数据,即使不训练,它也会改变权值。

如果在测试的时候启用了Dropout,那么网络会随机丢弃某几个神经元,这样神经网络每一次生成的结果不是固定的,生成的质量也不稳定。那BN是如何影响网络的?这就要先学习BN具体是如何实现的。

1.1.2.2 核心问题

在CNN训练时,绝大多数都采用mini-batch使用随机梯度下降算法进行训练,那么随着输入数据的不断变化,以及网络中参数不断调整,网络的各层输入数据的分布则会不断变化,那么各层在训练的过程中就需要不断的改变以适应这种新的数据分布,从而造成网络训练困难,难以拟合的问题。

我的理解:针对网络的每一(例如x层),我们需要保证不管输入什么样的图片(数据),经过网络层层输入到达x层后,它们的数据分布总是类似的,这样我们就能针对x层的特点去修改x层的权重,慢慢拟合,而不是刚适应了某张图片的数据特点,换了一张图片又要大幅度调整。

BN算法解决的就是这样的问题,他通过对每一层的输入进行归一化,保证每层的输入数据分布是稳定的,从而达到加速训练的目的。

1.1.2.3 步骤
  1. Standardization:首先对𝑚个𝑥进行 Standardization,得到 zero mean unit variance的分布𝑥̂ 。
    在这里插入图片描述
    其中, x k x^{k} xk表示输入数据的第k维, E [ x k ] E[x^{k}] E[xk]表示该维的平均值, V a r [ x k ] \sqrt{Var[x^{k}]} Var[xk] 为标准差。

  2. scale and shift:然后再对𝑥̂ 进行scale and shift,缩放并平移到新的分布𝑦,具有新的均值𝛽方差𝛾。
    我们思考一个问题,在第一步中,减均值除方差得到的分布是正态分布,我们能否认为正态分布就是最好或最能体现我们训练样本的特征分布呢?不能。这种分布不一定是前面一层要学习到的数据分布,这样强行归一化就会破坏掉刚刚学习到的特征,比如数据本身就很不对称(不符合正态分布),或者激活函数未必是对“方差为1”的数据最好的效果,比如Softmax激活函数,在-1~1之间的函数的梯度不大,那么非线性变换的作用就不能很好的体现。换言之就是,减均值除方差操作后可能会削弱网络的性能。
    针对上述问题,BN算法在第二步中设置了两个可学习的变量γ和β,然后用这两个可学习的变量去还原上一层应该学到的数据分布。
    在这里插入图片描述

1.1.2.4 BN算法在训练和测试时的应用

了解完BN的原理后我又有个疑问,如果训练过程中启用了BN,但是在测试的时候没有启用BN,那么输入的测试图片在x层没有经过处理,它的分布可能不适用于我们训练好的权重,影响模型效果。而且DnCNN最终的输出是噪声图,所以我们不需要担心正则化会影响原始图片或者输入图片,为什么要禁用呢?其实我这里的启用和禁用理解错了。

训练时:首先提取每次迭代时的每个mini-batch的平均值和方差进行归一化,再通过两个可学习的变量恢复要学习的特征。

测试时:没有mini-batch了,即平均值为所有mini-batch的平均值的平均值,而方差为每个batch的方差的无偏估计。
在这里插入图片描述
所以BN的启用和不启用,不是说这层的存在与否,而是说这层的参数是否固定。


参考来源:

【Pytorch】model.train() 和 model.eval() 原理与用法
深度学习——Batch Normalization算法原理和作用
Batch Normalization的原理和作用
什么是无偏估计?
无偏估计
均值和期望的关系

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

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

相关文章

如何使用固态硬盘+硬盘盒子+U盘创造移动双系统

本文背景 这学期上了一节鸟水课《大数据实践》,老师要求扩展硬盘盒,以部署大数据工具进行 机器挖掘等大数据领域工作 参考视频链接:无需启动盘,用虚拟机将ubuntu安装到移动硬盘上_哔哩哔哩_bilibili 项目使用设备 1.绿联&#…

软件工程之总体设计

总体设计是软件工程中的一个重要阶段,它关注整个系统的结构和组织,旨在将系统需求转化为可执行的软件解决方案。总体设计决定了系统的架构、模块划分、功能组织以及数据流和控制流等关键方面。 可行性研究 具体方面:经济可行性、技术可行性…

RabbitMQ的工作模式——WorkQueues

1.工作队列模式 生产者代码 public class Producer_WorkQueues1 {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory new ConnectionFactory();//2.设置参数factory.setHost("172.16.98.133&qu…

81《乡村振兴战略下传统村落文化旅游设计》许少辉瑞博士生辉少许——2023学生开学季许多少年辉光三农

81《乡村振兴战略下传统村落文化旅游设计》许少辉瑞博士生辉少许——2023学生开学季许多少年辉光三农

ESD门禁闸机的用途及优点

ESD门禁闸机是一种专门用于防止静电干扰的门禁设备,其主要用途包括: 防止静电干扰:ESD门禁闸机可以有效地防止静电干扰,保护电子元器件、电路板等敏感设备不受静电破坏。 控制人员进出:ESD门禁闸机可以通过身份验证等…

AWS入列CNCF基金会

7月27日,IT之家曾经报道,微软加入Linux旗下CNCF基金会,在这之后不到一个月的今天,亚马逊AWS也宣布,以铂金身份加入此基金会。 CNCF,全称Cloud Native Computing Fundation,该基金会旨在使得容器…

Netty简介及简单客户端/服务端示例代码

什么是Netty? Netty是一个NIO客户机-服务器框架,它支持快速而容易地开发网络应用程序,如协议服务器和客户机。它大大简化和简化了网络编程,如TCP和UDP套接字服务器。 “快速简单”并不意味着生成的应用程序将遭受可维护性或性能问…

【再识C进阶3(上)】详细地认识字符串函数、进行模拟字符串函数以及拓展内容

小编在写这篇博客时,经过了九一八,回想起了祖国曾经的伤疤,勿忘国耻,振兴中华!加油,逐梦少年! 前言 💓作者简介: 加油,旭杏,目前大二,…

基于AVR128单片机智能电风扇控制系统

一、系统方案 模拟的电风扇的工作状态有3种:自然风、常风及睡眠风。使用三个按键S1-S3设置自然风、常风及睡眠风。 再使用两个按键S4和S5,S4用于定时电风扇定时时间长短的设置,每按一次S4键,定时时间增加10秒,最长60秒…

mysql优化之索引

索引官方定义:索引是帮助mysql高效获取数据的数据结构。 索引的目的在于提高查询效率,可以类比字典。 可以简单理解为:排好序的快速查找数据结构 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这种数据…

html和css相关操作

html第一个网页 <!DOCTYPE html> <!--html文档声明&#xff0c;声明此文档是一个html5的文档--> <html> <!--html文档开头标签--><head><!--html文档的设置标签&#xff0c;文档的设置及资源的引用都写在这个标签中--><meta charset&q…

如何快速走出网站沙盒期(关于优化百度SEO提升排名)

网站沙盒期是指新建立的网站在百度搜索引擎中无法获得好的排名&#xff0c;甚至被完全忽略的现象。这个现象往往发生在新建立的网站上&#xff0c;因为百度需要时间来评估网站的质量和内容。蘑菇号www.mooogu.cn 为了快速走出网站沙盒期&#xff0c;需要优化百度SEO。以下是5个…

3D成像技术概述

工业4.0时代,三维机器视觉备受关注,目前,三维机器视觉成像方法主要分为光学成像法和非光学成像法,这之中,光学成像法是市场主流。 飞行时间3D成像 飞行时间成像(Time of Flight),简称TOF,是通过给目标连续发送光脉冲,然后用传感器接收从物体返回的光,通过探测光脉…

力扣刷题-链表理论基础

什么是链表 什么是链表&#xff0c;链表是一种通过指针串联在一起的线性结构&#xff0c;每一个节点由两部分组成&#xff0c;一个是数据域一个是指针域&#xff08;存放指向下一个节点的指针&#xff09;&#xff0c;最后一个节点的指针域指向null&#xff08;空指针的意思&a…

毫米波雷达 TI IWR1443 在 ROS 中进行 octomap 建图

个人实验记录 /mmwave_ti_ros/ros_driver/src/ti_mmwave_rospkg/launch/1443_multi_3d_0.launch <launch><!-- Input arguments --><arg name"device" value"1443" doc"TI mmWave sensor device type [1443, 1642]"/><arg…

minio文件上传

1.代码 大佬仓库&#xff1a;https://gitee.com/Gary2016/minio-upload?_fromgitee_search 关于这个代码的讲解&#xff1a;来自b站 2.准备minio 参考&#xff1a;[1]、[2] 2.1 下载 官网&#xff1a;https://min.io/download#/windows 2.2 启动 ①准备一个data文件夹…

Android开发笔记 :理解Fragment

Android开发笔记&#xff1a;理解Fragment 导言 本篇文章产生的原因很简单&#xff0c;就是我在了解Android Jetpack中的Lifecycle框架时发现Lifecycle具体时间和状态的更新都是由一个名为ReportFragment的Fragment来跟踪的&#xff0c;为了更好的了解Fragment是如何追踪Activ…

以太网协议

以太网 以太网协议格式&#x1f3a8;目的地址,源地址mac地址格式 以太网协议格式&#x1f3a8; 目的地址,源地址 此处的地址,叫做mac地址(物理地址),长度是6个字节 mac地址的作用也是用来区分不同的主机 IP地址的长度是4字节 IP地址负责网络层(整体)转发,mac地址负责数据链路层…

pytest框架运行时的参数,以及多线程分布式运行用例、运行指定模块用例

一、运行时的参数 在上一篇博客中写了pytest最为核心的运行时前后置如何设置&#xff0c;细心的朋友可能也会发现其实我们当时就加过运行时的参数-vs。 pytest.main([‘-s’])&#xff1a;能打印出调试信息&#xff0c;print()或者日志都可以直接打印在控制台上。 pytest.ma…

基于微信小程序的房屋租赁系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言运行环境说明用户微信小程序端的主要功能有&#xff1a;户主微信小程序端的主要功能有&#xff1a;管理员的主要功能有&#xff1a;具体实现截图详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考论文…