UNet 浅析

2023-11-18

1. UNet 简介

UNet 属于 FCN 的一种变体,它可以说是最常用、最简单的一种分割模型,它简单、高效、易懂、容易构建,且可以从小数据集中训练。2015 年,UNet 在论文 U-Net: Convolutional Networks for Biomedical Image Segmentation 中被提出 。UNet 的初衷是为了解决医学图像分割的问题,在解决细胞层面的分割的任务方面,其在 2015 年的 ISBI cell tracking 比赛中获得了多个第一。之后,UNet 凭借其突出的分割效果而被广泛应用在语义分割的各个方向(如卫星图像分割,工业瑕疵检测等)。

2. UNet 详解

UNet网络结构
UNet 网络结构如上图所示,其网络结构是对称的,形似英文字母 U,故而被称为 UNet 。就整体而言,UNet 是一个Encoder-Decoder的结构(与 FCN 相同),前半部分是特征提取,后半部分是上采样。

  • Encoder:左半部分,由两个 3x3 的卷积层(ReLU)+ 一个 2x2 的 maxpooling 层组成一个下采样模块
  • Decoder:右半部分,由一个上采样的卷积层 + 特征拼接 concat + 两个 3x3 的卷积层(ReLU)构成一个上采样模块

Encoder 由卷积操作和下采样操作组成,所用卷积结构统一为 3x3 的卷积核,padding=0striding=1。没有 padding 所以每次卷积之后特征图的 H 和 W 变小了,在跳层连接(Skip connection)时需注意特征图的维度。

Decoder 用以恢复特征图的原始分辨率,除了卷积以外,该过程的关键步骤就是上采样跳层连接。上采样常用转置卷积和插值两种方式实现。在插值实现方式中,双线性插值(bilinear)的综合表现较好也较为常见 。要想网络获得好的效果,跳层连接基本必不可少。UNet 中的跳层连接通过拼接将底层的位置信息与深层的语义信息相融合。需要注意的是,在 FCN 中,特征图是以相加的方式进行融合:

  • FCN:通过特征图对应像素值的相加来融合特征;
  • UNet :通过通道数的拼接,以形成更的特征(当然这样会更佳消耗显存)。
  • 相加方式:特征图维度没有变化,但每个维度包含了更多特征。对于普通分类任务这种不需要从特征图复原到原始分辨率的任务来说,这是一个高效的选择;
  • 拼接方式:保留了更多的维度/位置信息,这使得后面的网络层可在浅层特征与深层特征间自由选择,这对语义分割任务来说更具优势。

UNet网络结构特点

  • U型网络结构;
  • 跳层连接;

跳层连接

  • 在上采样过程中融合下采样过程中的特征图;
  • 融合方式为concatenate,按特征图通道数进行叠加;
  • d在实际中,融合的两张特征图尺寸可能不同,一般可采用裁剪和padding(UNet采用方式)两种方式进行解决;

UNet 的优点主要有:

  • 深/浅层特征有着各自意义:网络越深,感受野越大,网络关注那些全局特征(更抽象、更本质);浅层网络则更加关注纹理等局部特征特征;
  • 通过特征拼接来实现边缘特征的找回。通过上采样(转置卷积)固然能够得到更大尺寸的特征图,但特征图的边缘是缺少信息的。毕竟每一次下采样提取特征的同时,必然会损失一些边缘特征,而上采样并不能找回这些失去的特征。

3. 代码实例 - 医学图像分割 (ISBI数据集)

任务:给一张细胞结构图,将每个细胞相互分离出来;
训练集和测试集各有图片30张,图片大小为5125121;

在这里插入图片描述

github代码地址】-- 实测可运行

【参考】

  1. Pytorch 深度学习实战教程(三):UNet模型训练,深度解析!;
  2. 语义分割网络 U-Net 详解;
  3. 图像分割必备知识点 | Unet详解 理论+ 代码;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UNet 浅析 的相关文章

  • 在SpringBoot中利用nacos对数据源进行动态刷新

    一 重写DruidAbstractDataSource类 这里为什么要重写这个类 因为DruidDataSource数据源在初始化后 就不允许再重新设置数据库的url和userName 注意 类所在的包名必须为 com alibaba dr
  • MySQL 触发器

    文章目录 1 简介 2 行级与语句级触发器 3 触发时机 4 触发器优缺点 5 创建触发器 语法 示例 6 查看触发器 7 删除触发器 参考文献 1 简介 触发器 Trigger 是与表关联的命名数据库对象 当表发生特定事件时激活 触发器的
  • 概念解析

    注1 本文系 概念解析 系列之一 致力于简洁清晰地解释 辨析复杂而专业的概念 本次辨析的概念是 合成孔径雷达中运动补偿和自聚焦的联系与差别 概念解析 合成孔径雷达运动补偿与自聚焦的关系研究 基于二维空变运动补偿的机动平台大斜视SAR稀疏自聚
  • java.lang.ClassCastException: java.lang.Long cannot be cast to java.util.Date at org.hibernate.type.TimestampType.deepCopyNotNul

    在配置一对多的时候 OneToMany mappedBy recevier cascade CascadeType REMOVE OneToMany mappedBy sender cascade CascadeType REMOVE Ma
  • 日常学习--练手

    1 page source爬取页面源码 from selenium import webdriver import re driver webdriver Chrome driver get https www cnblogs com ca
  • mysql中如何取得分组中最大值的数据?全网最有效的方法

    大家都知道 MySQL有分组查询子句 group by 面试官就问你了 不是让你找到一个表中最大的值 而是让你找到最大值的整行数据 这个时候简单的分组是搞不定了 需要用到 inner join 子句 先说下inner join 子句的作用
  • 【MyBatis】Mybatis使用SqlSessionFactory加载xml文件

    1 概述 MyBatis框架主要是围绕着SqlSessionFactory这个类进行的 这个的创建过程如下 定义一个Configuration对象 其中包含数据源 事务 mapper文件资源以及影响数据库行为属性设置settings 通过配

随机推荐

  • python read函数返回值_python read()方法定义及使用(实例解析)

    今天这篇文章我们来了解一下pythonread方法 不知道没什么关系 因为今天讲的就是python之中的read 方法 以及知晓read是什么意思 所以今天我们在今天的文章之中来了解一下吧 概述 read 方法用于从文件读取指定的字节数 如
  • 数据结构——非线性结构(图)

    文章目录 一 非线性结构的概述 二 图的基本概念 1 定义 2 无向图 有向图 2 1 无向图 2 2 有向图 2 3 简单图 2 4 多重图 3 顶点的度 出度 入度 3 1 对于无向图 3 2 对于有向图 4 边的权 带权图 网 5 点
  • React + Umi + Dva + Antd 简述 及创建项目过程简述

    React 你的第一个组件 React React是前端三大主流框架之一 你可以在React里传递多种类型的参数 如声明代码 帮助你渲染出UI 也可以是静态的HTML DOM元素 也可以传递动态变量 甚至是可交互的应用组件 安装react框
  • 学校智慧校园平台管理系统小程序开发制作

    学校智慧校园平台管理系统小程序开发制作 智慧校园服务的蓝海市场正在等待开发的状态中 而小程序恰好是一体化校园平台抢占这个市场的最佳方式 学校校园平台小程序提供在校大学生和老师校园智慧服务的小程序应用 主要功能有 提供查看考勤 成绩 课表 校
  • python树莓派 是什么_想用什么域名就用什么域名,用树莓派搭建个局域网DNS服务器。...

    局域网内的设备越来越多 用ip访问就比较麻烦了 另一方面我们用的公网的dns服务器可能会被投毒 这时候搭建一个本地的DNS服务器 想用什么域名就用什么域名 岂不是很舒服 拿起我们的树莓派 说干就干 准备材料 1 树莓派 这里是安装了64位操
  • chisel的命名高级用法

    从历史上看 Chisel 在可靠地捕获信号名称方面遇到了麻烦 造成这种情况的原因是 1 主要依靠反射来查找名称 2 使用 chiselName行为不可靠的宏 Chisel 3 4 引入了一个自定义的 Scala 编译器插件 它可以在声明信号
  • 关于ORA-12170 tns 连接超时等一系列Oracle无法正常登入问题

    文章转载来自于 https blog csdn net qq 40707682 article details 81667918 由于该篇文章成功解决了我的问题 所以记录一下 方便后面的小伙伴们学习 下面首先说说如何在出现ORA 12170
  • UML图示

    近些天学习设计 由于没有具体项目 原有项目也没有什么设计的概念 只是看相关的书籍 所以着实有些抓狂 然最抓狂的是对于UML那些表示法的生疏 虽然看过N 1遍相关的表示 但由于之前看过的设计图稿和自己画的东东本来就不多 因此出来类图 对象图等
  • 如何划分子网(例题讲解)

    44 12分 设某ISP拥有一个网络地址块201 123 16 0 21 现在该ISP要为A B C D四个组织分配IP地址 其需要的地址数量分别为985 486 246以及211 而且要求将低地址段的 IP 地址分配给 IP 地址需求量大
  • CSS 媒体查询 IPHONE PC 常用尺寸总结

    iPhone 5 SE media only screen and device width 320px and device height 568px and webkit device pixel ratio 2 height calc
  • Matlab 多核 多个CPU 并行运算

    Matlab并行运算 目前 新购置的电脑大部分都是多核的了 使用Matlab进行大量计算时如何有效利用多核呢 Matlab目前版本已经比较好的支持多核并行运算了 是用的Matlab版本是R2007b 电脑是双核的 先简单试试 gt gt m
  • 在 Python 中将字符串转换为数组

    使用 str split 方法将字符串转换为数组 例如 array string split str split 方法将在每次出现提供的分隔符时将字符串拆分为一个列表 string www jiyik com 将逗号分隔的字符串转换为数组
  • 攻防世界(easy-apk)

    下载链接如下所示 https adworld xctf org cn media task attachments 989ca07c3f90426fa05406e4369901ff apk 使用JEB打开apk 如下所示 可知获得输入后进行
  • 嵌入式开发——文件系统部署rz、sz命令

    1 rz sz命令源码下载 下载网址 https ohse de uwe software lrzsz html 2 源码编译 tar zxvf lrzsz 0 12 20 tar gz cd lrzsz 0 12 20 configure
  • 小滴课堂-新版JavaWeb零基础到实战专题课程-19

    目录 前言 第十九章 javaweb项目实战之小滴课堂开发者论坛数据库设计 第1集 小滴课堂开发者论坛数据库ER关系图设计 第2集 小滴课堂开发者论坛Mysql相关表录入 前言 小滴课堂 旨在让编程不在难学 让技术与生活更加有趣 随着互联网
  • 转」最佳方案:迭代式开发

    前言 Fred Brooks 在 25 年前就曾写到 不要指望一次成功 无论如何你都要这样 敏捷开发 小步快跑 持续迭代 不断改进 产品升级 在用例需要之前 不要添加数据成员 在代码之前编写测试 过早的优化时万恶之源 不要过度强调代码的通用
  • 一文读懂网联-网联的业务方案和技术实现(1)

    支付产品设计必知的支付底层逻辑 网联平台全业务功能详解 2 我想 银联 大家都不陌生 我们用的银行卡基本都是银联卡 而网联想必很多人并不清楚 其实网联和银联在一个职能上平分秋色 电子支付的清算机构 我们国家并驾齐驱的2家清算机构 网联与银联
  • python学习基础(3)—循环、数据结构及函数

    循环 数据结构及函数 循环 for循环及循环嵌套 break及continue命令 while循环 列表 元组结构及字典结构 高级列表操作 高级字典操作 函数 自定义函数 系统内置函数 导入包 循环 python循环命令有两个 for循环用
  • DirectShow中H.264 SourceFilter的Pin配置

    对DirectShow SourceFilter 要在Pin上输出H 264码流 需要注意如下设置 majortype MEDIATYPE Video 73646976 0000 0010 8000 00AA00389B71 subtype
  • UNet 浅析

    文章目录 1 UNet 简介 2 UNet 详解 3 代码实例 医学图像分割 ISBI数据集 参考 1 UNet 简介 UNet 属于 FCN 的一种变体 它可以说是最常用 最简单的一种分割模型 它简单 高效 易懂 容易构建 且可以从小数据