【深度学习】Unet的基础介绍

U-Net是一种用于图像分割的深度学习模型,特别适合医学影像和其他需要分割细节的任务。如图:
在这里插入图片描述

Unet论文原文

为什么叫U-Net?

U-Net的结构像字母“U”,所以得名。它的结构由两个主要部分组成:

下采样(编码器):图像逐渐被缩小并且提取特征。
上采样(解码器):逐渐恢复图像的尺寸,并通过“跳跃连接”将高分辨率的特征与低分辨率的特征结合,以保持细节。

网络结构

U-Net通常包括以下几部分:

(1)下采样(编码器)
这一部分通过卷积操作逐步降低图像的分辨率,同时提取越来越抽象的特征。每个卷积层后面跟着一个池化层(比如最大池化),池化层会减少图像的尺寸,帮助网络捕捉全局信息。
(2)瓶颈层
当图像经过几次下采样后,网络会到达最小尺寸的图像,这一部分的特征信息会被压缩成最具代表性的特征。
(3)上采样(解码器)
上采样过程会将图像逐渐恢复到原始大小,通过转置卷积(反卷积)或者插值操作来扩大图像的尺寸。
(4)跳跃连接
这里的“跳跃连接”是U-Net的一大特点。在上采样阶段,网络会将下采样阶段的特征图直接传递到解码器中,这样可以帮助网络更好地恢复图像的细节,防止图像中的细微特征丢失。

Unet的特点

  1. UNet也是一个编解码模型,它将各级分辨率的卷积特征图和反卷积特征图进行了融合。
  2. Unet输入和输出大小是同样的维度。
  3. 如图在这里插入图片描述
    网络的右侧虚线框部分叫作扩展路径(expansive path)。
    它同样由4个网络块组成,每个网络块开始之前通过反卷积将特征图的尺寸乘2,同时将其通道数减半(最后一层略有不同)​,然后和左侧对称的压缩路径的特征图合并。由于左侧压缩路径和右侧扩展路径的特征图的尺寸不一样,U-Net是通过将压缩路径的特征图裁剪到和扩展路径的特征图相同尺寸进行归一化的。
    扩展路径的卷积操作依旧使用的是有效卷积操作,最终得到的特征图的尺寸是388×388。由于该任务是一个二分类任务,因此网络有两个输出特征图。

在U-Net的网络结构中通过裁剪的方式将左侧的特征图调整到和右侧特征图相同的大小(图左侧部分中的虚线部分)

U-Net论文中没有全连接层(Linear层),且全程使用valid来进行卷积,这样可以保证分割的结果都是基于没有缺失的上下文特征得到的,因此输入输出的图像尺寸不一样。

需要注意的是,论文中的输入图像的尺寸为 572 像素×572 像素,而输出图像的尺寸是388 像素×388像素大小,输入与输出并不一致;整个网络在很多情况下,输出比输入宽高减少了 2,这主要是因为卷积层采用了“valid”的边缘填充(padding)方式,其中 stride=1,因此,输出的特征图会逐渐减小。

评价指标

Dice Loss是由Dice系数而得名的,Dice系数是一种用于评估两个样本相似性的度量函数,其值越大意味着这两个样本越相似,Dice系数的数学表达式如下:
在这里插入图片描述
式中,X表示真实分割图像的像素标签,Y表示模型预测分割图像的像素类别,|X∩Y|为预测图像的像素与真实标签图像的像素之间的点乘,并将点乘结果相加,|X|和|Y|分别为它们各自对应图像中的像素相加。

代码举例

class UNet(nn.Module):def __init__(self, in_channels, num_classes):super(UNet, self).__init__()self.inc = InConv(in_channels, 64)self.down1 = downsample_block(64, 128)self.down2 = downsample_block(128, 256)self.down3 = downsample_block(256, 512)self.down4 = downsample_block(512, 512)self.up1 = upsample_block(1024, 256)self.up2 = upsample_block(512, 128)self.up3 = upsample_block(256, 64)self.up4 = upsample_block(128, 64)self.outc = OutConv(64, num_classes)def forward(self, x):x1 = self.inc(x)x2 = self.down1(x1)x3 = self.down2(x2)x4 = self.down3(x3)x5 = self.down4(x4)x = self.up1(x5, x4)x = self.up2(x, x3)x = self.up3(x, x2)x = self.up4(x, x1)x = self.outc(x)return x

in_channels 是输入图像的通道数,num_classes 是输出类别数(通常为1)

U-Net的前向传播过程
编码器路径:
输入图像首先通过 InConv 模块,生成64通道的特征图 x1
然后依次通过四个下采样模块 down1、down2、down3、down4,分别生成128、256、512、512通道的特征图 x2、x3、x4、x5。

解码器路径:
解码器路径从 x5 开始,通过 up1 模块与 x4 进行拼接,生成256通道的特征图。

然后依次通过 up2、up3、up4 模块,分别与 x3、x2、x1 进行拼接,生成128、64、64通道的特征图。

最后通过 OutConv 模块生成最终的分割结果。

其中,函数定义如下:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【学习笔记】Cadence电子设计全流程(二)原理图库的创建与设计(8-15)

【学习笔记】Cadence电子设计全流程(二)原理图库的创建与设计(下) 2.8 Cadence 软件自带元件库2.9 原理图元器件关联PCB2.10 原理图元器件库的移植2.11 已有原理图输出元器件库2.12 原理图设计中调用元器件库2.13 原理图元器件库关…

DeepSeek从入门到精通

1_DeepSeek从入门到精通 (1).pdf官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘123云盘为您提供1_DeepSeek从入门到精通 (1).pdf最新版正式版官方版绿色版下载,1_DeepSeek从入门到精通 (1).pdf安卓版手机版apk免费下载安装到手机,支持电脑端一键快捷安装https://www.123…

Comfyui Windows Desktop桌面版便携版安装教程

前段时间Comfyui 的便携包安装写了一篇,最近comfyui发布了新的桌面版本0.4.5,我也试着安装了一下,感觉使用体验比便携包要舒适一点点。 下面是安装指南。 安装地址 官方给了下载包,分为N卡和Mac。地址:Notion – Th…

DeepSeek 提示词:定义、作用、分类与设计原则

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

【Linux网络编程】数据链路层和网络层的几个问题:MTU,校验和,全球网段,路由表

目录 1.MTU 2.CRC校验和 3.全球网段 4.子网掩码 5.路由 1.MTU MTU是以太网的最大传输单位,大小是1500字节,表示IP(网络层传下来的最多只能1500字节)。 如果超过了这个数,就要网络层自己做分包。数据链路层是不帮…

浅谈死锁的原因以及解决方案

目录 1 死锁是什么? 2 死锁的三种典型情况 3 死锁产生的必要条件​编辑 4 如何解决死锁问题 1 死锁是什么? 它是指两个或多个线程因为互相等待对方持有的资源而无法继续执行的情况。换句话说,每个线程都在等待另一个线程释放资源,但没有任何一个…

【STM32】内存管理

【STM32】内存管理 文章目录 【STM32】内存管理1、内存管理简介疑问:为啥不用标准的 C 库自带的内存管理算法?2、分块式内存管理(掌握)分配方向分配原理释放原理分块内存管理 管理内存情况 3、内存管理使用(掌握&#…

【SpringMVC】十分钟跑起来一个SpringMVC项目

目录标题 1 项目概述1.项目结构解析2. MVC项目的结构和每个组件的作用:3. 项目的工作流程:4 后期可以扩展的点:2.源码学习1. HelloController 类,Spring MVC控制器2 springmvc-servlet.xml - Spring MVC的主要配置文件3.web 目录 …

【复习】计算机网络

网络模型 OSI 应用层:给应用程序提供统一的接口表示层:把数据转换成兼容另一个系统能识别的格式会话层:负责建立、管理、终止表示层实体之间的通信会话传输层:负责端到端的数据传输网络层:负责数据的路由、转发、分片…

2025年- G17-Lc91-409.最长回文-java版

1.题目描述 2.思路 思路1: 判断一个字符串中的字母个数是否是偶数个。 遍历字符串,检查每个字符是否是字母(可以通过 Character.isLetter() 来判断)。 累加字母的个数。 最后判断字母的个数是否是偶数。 思路2: 这段 Java 代码的作用是 统…

本地安装 Grafana Loki

本地安装 Grafana Loki 一、 安装 Loki1. 下载 Loki2. 创建 Loki 配置文件3. 创建 Loki 服务 二、安装 Promtail1. 下载 Promtail2. 创建 Promtail 配置文件3. 创建 Promtail 服务 三、 安装 Grafana四、启动所有服务五、添加loki 数据源1. 添加仪表板2. 日志查询面板 json 参考…

创建虚拟环境以及配置对应的项目依赖

文章目录 首先创建一个虚拟环境,创建一个名字为myenv,并且版本为xxx的虚拟环境 conda create --name myenv pythonxxx激活虚拟环境 conda activate myenv下载所需的依赖,如果有requirements.txt文件 pip install -r requirements.txt容易出现的错误&a…

W803|联盛德|WM IoT SDK2.X测试|(1)开箱:开发板及说明

前几天关注的联盛德微电子新推出了WM IoT SDK2.X,正式发布后,邀请用户参加“免费试用,赢千元大礼”活动,填写信息,等待统一发送,很快收到了板子。 活动地址:联盛德微电子WM IoT SDK2.X正式发布…

SSI用量子计算来玩AI

刚到家,早上说今天回来要写SSI为什么这么牛B,那就必须得写 SSI是什么公司? Safe Super Intelligence 就是中间这个秃子的公司 ilya 前openAI 首席科学家(现在的mark chen确实有点水) Daniel Gross、Ilya Sutskever、Daniel Levy&#xff…

【分布式数据一致性算法】Gossip协议详解

在分布式系统中,多个节点同时提供服务时,数据一致性是核心挑战。在多个节点中,若其中一个节点的数据发生了修改,其他节点的数据都要进行同步。 一种比较简单粗暴的方法就是 集中式发散消息,简单来说就是一个主节点同时…

文档检索服务平台

文档检索服务平台是基于Elasticsearch的全文检索,包含数据采集、数据清洗、数据转换、数据检索等模块。 项目地址:Github、国内Gitee 演示地址:http://silianpan.cn/gdss/ 以下是演示角色和账号(密码同账号)&#xf…

【YOLOv8】YOLOv8改进系列(2)----替换主干网络之FasterNet(CVPR 2023)

主页:HABUO🍁主页:HABUO 🍁YOLOv8入门改进专栏🍁 🍁如果再也不能见到你,祝你早安,午安,晚安🍁 【YOLOv8改进系列】: 【YOLOv8】YOLOv8结构解读…

Linux信号

目录 1. 信号的概念搞定(输出结论,支撑我们的理解) 补充知识 2.信号的产生 补充知识 3.信号的保存 4.阻塞信号 1. 信号其他相关常见概念 2. 在内核中的表示 3. sigset_t 4. 信号集操作函数 sigprocmask sigpending 5. 信号的…

NI Multisim仿真实现39计数器

功能需求 39进制计数器。 功能分析 (1)时钟信号产生电路:用555定时器产生时钟脉冲 2)计数器: 用两片74160先串接起来构成一个百进制计数器;再用置数法接成39进制计数器。(可用开关控制计数器…

DeepSeek R1/V3满血版——在线体验与API调用

前言:在人工智能的大模型发展进程中,每一次新模型的亮相都宛如一颗投入湖面的石子,激起层层波澜。如今,DeepSeek R1/V3 满血版强势登场,为大模型应用领域带来了全新的活力与变革。 本文不但介绍在线体验 DeepSeek R1/…