深度学习| U-Net网络

U-Net网络

  • 基础知识
    • 和CNN的关系
    • 反卷积
    • ReLU激活函数
  • U-Net入门
    • U-Net网络结构图
    • 为什么需要跳跃连接
    • U-Net的输入
    • U-Net的应用

基础知识

理解U-Net网络结构需要相关知识点。

和CNN的关系

U-Net也是CNN(Convolutional Neural Network,卷积神经网络)的一种,所以也会涉及CNN的原理。关于CNN的一些内容,在之前的一篇文章介绍过“深度学习|CNN卷积神经网络”,这边就简单再说一下CNN原理中的“卷积、池化、全连接”,因为这些在后面U-Net结构理解的时候会用到。

卷积:主要作用是提取特征,通过一个过滤器/卷积核来过滤图像各个小区域,从而得到各个小区域的特征。

池化:提取某个区域的总结特征,主要作用是下采样(Downsampling),能够数据降维,但是不会损坏识别结果。

全连接:主要作用是分类。通过卷积层和池化层的出来的特征,需要让全连接层对前面总结好的特征做分类判断。

不过U-Net网络,全是卷积和池化层,没有全连接层。

反卷积

卷积后,通常有3种结果:

  1. valid卷积:结果图比原图小。
  2. same卷积:结果图和原图一样大。
  3. full卷积:结果图比原图大。

而其中的full卷积,就是反卷积又叫做上采样。关于以上三种卷积是如何形成,主要是源于在做卷积的时候,原图进行扩大的程度。

valid卷积:结果图比原图小。卷积的时候不对原图进行扩展或者扩展比较小。
在这里插入图片描述
same卷积:结果图和原图一样大。卷积的时候扩展一下原图,例如上面3×3的卷积,不做扩展导致每次边缘的像素点都没成为过卷积的中心像素,只需要对原图扩展一下就能包含边缘像素,从而实现same卷积。这种扩展操作,通常叫做padding。
在这里插入图片描述
full卷积:结果图比原图大。卷积的时候把原图比same卷积更大比例补0扩展。
在这里插入图片描述
在这里插入图片描述

ReLU激活函数

激活函数:神经网络中,每个节点代表一种特定输出函数,负责将神经元的输入映射到输出端。通常称为激活函数。

为什么要引入非线性激活函数:激活函数全用线性的,那样无论神经网络有多少层,输出都是输入线性组合,和没有隐藏层的效果差不多了。引入非线性函数作为激活函数,这样深层神经网络才有了意义,不再是输入的线性组合,而是可以逼近任意函数,更好拟合复杂的数据。另外,神经网络本身就是模拟生物神经元,生物神经元的行为本来就是非线性的。

ReLU函数的表达式:
f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)
从表达式看ReLU函数实际就是把大于0的数保留,小于0的数直接清零。

为什么使用ReLU激活函数:

  • ReLU没有复杂的运算,计算简单高效,收敛速度也快。 Sigmoid等函数,算激活函数和反向传播求误差梯度时,涉及到指数、求导、除法等运算,计算量大。
  • ReLU函数没有饱和区,不存在梯度消失问题。Sigmoid接近包和区时候,变换太慢,导数趋于0,而产生信梯度消失的情况,导致无法完成深层网络训练。
  • ReLU使得一部分神经元输出为0,造成了网络的稀疏性,减少了参数之间相互依赖关系,一定程度上缓解了过拟合问题。

ReLU缺点:学习率过大的时候,可能造成大部分神经元清零。

补充:经典的Sigmoid函数,其表达式为 σ ( x ) = 1 / ( 1 + e − x ) \sigma(x)=1/(1+e^{-x}) σ(x)=1/(1+ex),能够把值映射到0~1。
在这里插入图片描述

U-Net入门

U-Net网络结构图

在这里插入图片描述
从上面的网络结构图来看,就知道为什么是U-Net了,网络结构就是一个U型。经典的编码器解码器结构,左边部分是编码器,右边部分是解码器。左边部分又被称为收缩路径,右边又被称为扩展路径,中间同一个曾灰色的箭头线被称为跳跃连接(Skip Connection)。

图中不同颜色箭头的解释:

  1. 蓝紫箭头:3×3卷积核做卷积,再用ReLU激活函数输出特征通道。
  2. 灰色箭头:进行裁剪和复制。
  3. 红色箭头:2×2池化核进行最大池化/下采样。
  4. 绿色箭头:2×2卷积核做反卷积/上采样
  5. 青蓝箭头:1×1卷积核做卷积。

对上图结构部分做详细解释,其它部分可以自己参考详细解释来理解:

  • 最左上角处理:输入图片大小为572×572,经过64个3×3的卷积核进行卷积,再通过ReLU函数后得到64个570×570的特征通道。把这570×570×64的结果再经过64个3×3的卷积核进行卷积,同样通过ReLU函数后得到64个568×568的特征提取结果。这就是第一层的处理,然后通过2×2的池化核,对图片下采样为原来大小的一半284×284×64。把284×284×64的结果,经过128个3×3×64的卷积核进行卷积,得到282×282×128(这部分实际上是对284×284×64全部做128个卷积)。
    在这里插入图片描述
  • 最右上角处理:392×392×128白蓝框来源于两个部分,蓝色部分是下面一层上采样/反卷积,196×196×128通过64个2×2卷积核反卷积,得到392×392×64;白色部分是同一层复制裁剪得到的,左边568×568×64结果复制再裁剪,得到392×392×64。蓝紫色箭头的过程不再多做解释,和“最左上角处理”介绍的是一样的。最右边最后一个青蓝箭头变换,388×388×64通过2个1×1的卷积核,得到388×388×2。在这里插入图片描述

为什么需要跳跃连接

  1. 反卷积只能扩大图片,不能还原图片,为了减少数据丢失,通过跳跃连接把同一层下采样的图片裁剪相同大小后增加特征层。大小不一致需要裁剪,主要是因为每次卷积都会丢失边界像素。
  2. 结合深层信息和浅层信息,深层信息就是经过多次下采样后的低分辨率信息,能够提供分割目标在整个图片像素中上下文语义西悉尼,可以理解为特征,有助于物体的分类;浅层信息,通过跳跃连接从编码器传递到解码器上的高分辨率信息,能够给分割提供更加精细的特征。

U-Net的输入

由于不断valid卷积,边缘信息不够,卷积后图片越来越小,最终得到输出是会比输入要小的。为了保证操作后结果和原图大小一致,在输入前都会图片进行镜像扩展操作。

另外原作还用了Overlap-tile策略。医学图像通常都很大,不可能把原图输入网络,所以会进行切片,为了图片拼接部分分割更准确,采用了Overlap-tile策略,就是切片之间会有重叠。
在这里插入图片描述
上面这张原图就做了镜像扩充,做了切片裁剪,输入蓝色部分图片通过U-Net最后能得到黄色有效区域处理结果。而Overlap-tile的切片重叠,应该指的是蓝色框会重叠。

U-Net的应用

主要解决的是医学领域的图像分割问题,目前基模型及其变种广泛应用于医学生物图像分割。

为什么适用于医学图像分割:

  • 医学图像由于涉及病人隐私以及难获取等问题,数据相对较少,U-Net使用了丰富数据增强策略来扩充数据集,例如随机旋转、翻转、缩放等,可以提高模型的泛化能力和鲁棒性。
  • U-Net模型是轻量级网络,参数量少,不容易过拟合,训练速度快。
  • U-Net支持多通道多模态的医学图像输入,能够充分利用不同模态之间信息。多模态,例如MRI图像可能包含T1、T2、FLAIR等通道。
  • 医学图像本身语义的信息就比较简单,结构比较谷顶。医学图像的信息密度远远不及平时拍的照片,应用场景也比较针对性,要做眼底就用眼底OCT,要做脑就用脑CT和脑MRI,都是针对固定的器官成像。所以高级语义信息和低级特征都显得很重要,U-Net的跳跃连接就排上用场了,就是结构图中灰色的箭头,结合低分辨率(提供物体类别标识的依据)和高分辨率信息(提供精确分割定位依据)。

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

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

相关文章

Flutter PopupMenuButton下拉菜单

下拉菜单是移动应用交互中一种常见的交互方式,可以使用下拉列表来展示多个内容标签,实现页面引导的作用。在Flutter开发中,实现下拉弹框主要有两种方式,一种是继承Dialog组件使用自定义布局的方式实现,另一种则是使用官方的PopupMenuButton组件进行实现。 如果没有特殊的…

Android任务栈和启动模式

Andrcid中的任务栈是一种用来存放Activity实倒的容器。任务最大的特点就是先进后出,它主要有两个基本操作,分别是压栈和出栈。通常Andaid应用程序都有一个任务栈,每打开一个Activity时,该Activity就会被压入任务栈。每销毁一个Act…

Unity Animator cpu性能测试

测试案例: 场景中共有4000个物体,挂在40个animtor 上,每个Animator控制100个物体的动画。 使用工具: Unity Profiler. Unity 版本: unity 2019.4.40f1 测试环境: 手机 测试过程: 没有挂…

VNC图形化远程连接Ubuntu服务器

我的Ubuntu版本22.04.3,带有gnome图形桌面。配置过程参考了几篇博客,大致流程如下。因为是配置完之后才整理的流程,可能有疏漏。 Ubuntu服务器上的配置 1.先在服务器上下载vnc server(任何一种版本均可) vncserver有…

VS Code2023安装教程(最新最详细教程)附网盘资源

目录 一.简介 二.安装步骤 三.VS Code 使用技巧 网盘资源见文末 一.简介 VS Code是一个由微软开发的跨平台的轻量级集成开发环境(IDE),被广泛用于编写各种编程语言的代码。它支持多种编程语言,并且可以通过插件扩展功能。 以…

Undefined reference错误处理及Linux设置动态链接库so的默认搜索路径

文章目录 1 问题的提出2 问题的分析3 问题的解决3.1 Windows的VS修改配置属性3.2 Linux系统里添加搜索路径json在/usr/llib目录中libcryto.so在/usr/lib64文件夹中 Linux设置动态链接库so的默认搜索路径方法一:修改 ld.so.conf 文件方法二:修改环境变量方…

matlab 布尔莎七参数坐标转换模型

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。爬虫自重,把自己当个人。 一、算法原理 算法原理与实现代码已在免费文章:布尔莎七参数坐标转换模型一文中给出,不想看付费文章直接跳转即可。 二、代码实现 clc; clear; close all; %% --

08 _ 栈:如何实现浏览器的前进和后退功能?

浏览器的前进、后退功能,我想你肯定很熟悉吧? 当你依次访问完一串页面a-b-c之后,点击浏览器的后退按钮,就可以查看之前浏览过的页面b和a。当你后退到页面a,点击前进按钮,就可以重新查看页面b和c。但是,如果你后退到页面b后,点击了新的页面d,那就无法再通过前进、后退…

软考系统架构师知识点集锦十:计算机网络、数学与经济管理、知识产权与标准化

一、计算机网络 1.1、考情分析 2.1 TCP/IP协议簇 2.1.1常见协议及功能 网际层是整个TCP/IP体系结构的关键部分,其功能是使主机可以把分组发往任何网络并使分组独立地传向目标。 POP3: 110 端口,邮件收取SMTP: 25 端口,邮件发送FTP: 20数据端口/21控制…

nextcloud+onlyoffice环境搭建(在线 or 离线)

1.安装 MySQL(有MySQL就可以不装) docker run -itd --name mysql8.0 -p 3306:3306 -e MYSQL_ROOT_PASSWORDroot --restartalways -e TZ"Asia/Shanghai" -v /home/docker/workspace/mysql:/var/lib/mysql mysql:latest --lower_case_table_na…

正点原子嵌入式linux驱动开发——外置RTC芯片PCF8563

上一章学习了STM32MP1内置RTC外设,了解了Linux系统下RTC驱动框架。一般的应用场合使用SOC内置的RTC就可以了,而且成本也低,但是在一些对于时间精度要求比较高的场合,SOC内置的RTC就不适用了。这个时候需要根据自己的应用要求选择合…

吉他、班卓琴和贝斯吉他降分器:Arobas Music Guitar 8.1.1

Arobas Music Guitar 是一款专业的吉他、班卓琴和贝斯吉他降分器。在熟练的手中,它不仅可以让您创作,还可以编辑、聆听和录制,以及导入和导出乐谱。如果有人感兴趣的话,录音是在八个轨道上进行的,你可以为每个轨道单独…

【go】两数求和

文章目录 题目代码解法2 代码仓库 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案…

【数据挖掘 | 数据预处理】缺失值处理 重复值处理 文本处理 确定不来看看?

🤵‍♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…

模型对象CSS2DObject始终在画布的左上角(问题解决)

写了个简单案例模拟一下这个问题,看下图片 下面看下c2渲染器相关代码部分 this.css2DRenderer new CSS2DRenderer(); this.css2DRenderer.render(this.scene, this.camera); this.css2DRenderer.setSize(width, height); this.css2DRenderer.domElement.style.pos…

客户端与服务端实时通讯(轮询、websocket、SSE)

客户端与服务端实时通讯 背景 在某些项目中,某些数据需要展示最新的,实时的,这时候就需要和服务端进行长时间通讯 方案 对于数据实时获取,我们一般会有4种方案: 1.短轮询:使用浏览器的定时器发起http请…

目标检测理论知识

目标检测 1.基本概念 目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状和姿态,…

终于有人把腾讯云轻量服务器“月流量”说明白了

腾讯云轻量服务器月流量什么意思?月流量是指轻量服务器限制每月流量的意思,不能肆无忌惮地使用公网,流量超额需要另外支付流量费,上海/广州/北京等地域的轻量服务器月流量不够用超额部分按照0.8元/GB的价格支付流量费。阿腾云aten…

Apollo上机实践:一次对自动驾驶技术的亲身体验

上机实践 概述自动驾驶通信分布式系统开发模式开发工具 自动驾驶感知传感器特性感知流程及算法部署感知模型 自动驾驶决策规划决策规划流程和算法使用 Dreamview 进行控制在环的规划调试开发规划场景和算法 福利活动 主页传送门:📀 传送 概述 Apollo 是…

【数据结构】插入排序

⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈数据结构 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 直接插入、希尔排序 1. 什么是排序2…