医学图像分割之U-Net

news2024/7/6 17:43:18

一、背景及问题

        在过去两年中,在很多视觉识别任务重,深度卷积网络的表现优于当时最先进的方法。但这些深度卷积网络的发展受限于网络模型的大小以及训练数据集的规模。虽然这个限制有过突破,也是在更深的网络、更大的数据集中产生的更好的性能。

        卷积网络的典型使用是在图像分类任务上,即输入一个图像,输入该图像对应的一个标签。在很多视觉任务中,尤其是医学图像任务中,希望得到每个像素对应的类别以及定位,而不是一整个图像的类别。在医学图像分割中,还存在着训练集规模不大的问题。Ciresan基于此提出了通过滑动窗口训练模型,通过环绕像素的局部区域(patch)作为输入,来预测该像素对应的类别。

        Ciresan提出的方法的优点有两个,一是网络能定位;二是通过patch的训练集数据比训练图像的数量大很多。该模型还获得了当时的EM分割比赛。该方法的缺点也有两个,一是网络需要训练每个像素对应的patch,导致速度非常慢;而且patches存在重叠,出现很多多余信息,也就是投入网络中的训练数据集存在大量的冗余信息,降低了训练速度,浪费时间以及显存。二是在定位的精确度以及上下文的使用上有一个权衡。较大的patches需要更多的池化层,这样就会导致降低定位的精确度;而使用较小的patches,就会只能使用较小的文本信息,也就是可利用的上下文信息范围太小。于是就提出,同时有较精确的定位、稍大范围文本信息的可能。

二、U-Net的创新点

        通过Ciresan的方法的缺点,以及“同时存在好的定位和较大文本信息的可能”的启发,也就有了作者更改扩延FCN结构的想法,目标是:使它用非常少的训练图像,产生更准确的分割。

  1.  使用连续的层补充contracting网络,用上采样操作替代池化操作,这些层会提高输出分辨率。
  2. 为了定位,将来自contracting 路径的高分辨率与上采样的输出特征图进行组合。

        基于以上两个创新,使得最终的输出结果更加精确。 

三、U-Net的结构体

        由于the contracting path(也称之为编码层),也就是U-Net结构的左半部分,与the expansive path(也称之为解码层),两部分或多或少是对称的,所以将该模型称之为U型结构。

 图1 U-Net的网络结构

  1. the contracting path(编码层)

        编码层由5层构成,每层是由两个不填充(padding=0)的conv3*3构成,每个conv3*3后面跟着一个ReLU;然后是下采样,下采样是一个2*2、stride=2的最大池操作,以及将特征图的特征通道变至2倍。最大池用来增大感受野的,此时为原来的2倍感受野(?是否是2倍,此处不是很确定,欢迎交流),特征图的分辨率变为原来的1/2。

        具体实现以二分类进行讲解,即输入的图像类别 channels=3,输出类别 num_classes=2.  输入图像分辨率(h, w)= (512, 512).

  • encoder1: 两个conv3*3,padding=0,channel由3至64.  (h, w)= (512, 512)不变。maxpooling: channel=64,不变;(h, w)= (256, 256),变为一半。
  • encoder2: 两个conv3*3,padding=0,channel由64至128. (h, w)= (256, 256)不变。maxpooling: channel=128,不变;(h, w)= (128,128),变为一半。
  • encoder3: 两个conv3*3,padding=0,channel由128至256.  (h, w)= (128,128)不变。maxpooling: channel=256,不变;(h, w)= (64,64),变为一半。
  • encoder4: 两个conv3*3,padding=0,channel由256至512.  (h, w)=(64,64)不变。maxpooling: channel=512,不变;(h, w)= (32,32),变为一半。
  • encoder5: 两个conv3*3,padding=0,channel由512至1024.  (h, w)=(32,32)不变。

     2. the expansive path(解码层)

        解码层同样由5层构成,主要是将图像特征图的分辨率由(32,32)恢复至原始尺寸(512,512)。与编码层不同的是,将编码层中的下采样改为了上采样,下采样是降低分辨率为原来的1/2,上采样是将分辨率提到至原来的2倍。在每层的卷积模块处,需要先将由下一层上采样得到的特征图与来自同层编码层的特征图进行拼接,然后再进行卷积操作。

  • decoder5: 此层就是encoder5层,也称之为decoder5。channel=1024, (h, w)=(32,32)。
  • upsampling: conv2*2, 将channel上采样为原来的一半channel=512;分辨率扩大至2倍,(h, w)=(64,64)。
  • decoder4:先裁剪来自encoder4的特征图至一样的分辨率(64,64),channel变为2倍,为1024;然后两个conv3*3,channel=512。
  • upsampling: conv2*2, 将channel上采样为原来的一半channel=256;分辨率扩大至2倍,(h, w)=(128,128)。
  • decoder3:先裁剪来自encoder3的特征图至一样的分辨率(128,128),channel变为2倍,为512;然后两个conv3*3,channel=256。
  • upsampling: conv2*2, 将channel上采样为原来的一半channel=128;分辨率扩大至2倍,(h, w)=(256,256)。
  • decoder2:先裁剪来自encoder2的特征图至一样的分辨率(256,256),channel变为2倍,为256;然后两个conv3*3,channel=128。
  • upsampling: conv2*2, 将channel上采样为原来的一半channel=64;分辨率扩大至2倍,(h, w)=(512,512)。
  • decoder1:先裁剪来自encoder2的特征图至一样的分辨率(512,512),channel变为2倍,为128;然后两个conv3*3,channel=64。
  • output: 一个1*1卷积,主要是将特征图的通道64卷积为输出通道数,此时为2。

四、U-Net的网络代码

        写博客的时候发现代码有点问题,后续添加上。

收获:又一次阅读了U-Net原文,进一步理解了下采样的作用,就是增大了感受野,也就是看到的范围相对宽广了。

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

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

相关文章

【redis】redis的缓存过期淘汰策略

【redis】redis的缓存过期淘汰策略 文章目录 【redis】redis的缓存过期淘汰策略前言一、面试题二、redis内存满了怎么办?1、redis默认内存是多少?在哪查看?如何修改?在conf配置文件中可以查看 修改,内存默认是0redis的默认内存有…

使用意图intent构建一个多活动的Android应用

安卓意图Intent是Android应用组件(Activity、Service、Broadcast Receiver)之间进行交互的一种重要方式。Intent允许启动一个活动、启动一个服务、传递广播等。Intent使应用能够响应系统及其他应用的动作。Intent使用的主要目的有: 1、 启动Activity:可以启动自己应用内的Activ…

DDPM--生成扩散模型

DDPM–生成扩散模型 Github: https://github.com/daiyizheng/Deep-Learning-Ai/blob/master/AIGC/Diffusion.ipynb DDPM 是当前扩散模型的起点。在本文中,作者建议使用马尔可夫链模型,逐步向图像添加噪声。 函数 q ( x t ∣ x t − 1 ) q(x_t | x_t-1…

java获取真实ip的方法

在网络中,如果不想被人监听,那么就需要获取 IP地址了,在电脑中我们可以使用到 ip地址获取工具,那么如何在 Java中获取真实的 IP地址呢? 1、首先我们需要先准备一台电脑,然后将电脑进行联网; 2、…

ChatGPT带你一起了解C语言中的fseek()

fseek函数用于将文件指针移动到指定位置。它的原型如下: c int fseek(FILE *stream, long offset, int whence); 其中,stream是文件指针,offset是偏移量,whence是起始位置。 偏移量offset可以是正数、负数或零。 如果是正数&a…

Java --- springboot2数据响应与内容协商

目录 一、数据响应与内容协商 1.1、响应json 1.1.1、返回值解析器 1.1.2、springMVC支持的返回值类型 1.1.3、HttpMessageConverter原理 1.2、内容协商 1.2.1、引入依赖 1.2.2、 postman分别测试返回json和xml 1.2.3、开启浏览器参数方式内容协商功能 1.3、自定义 Message…

持续测试:DevOps时代质量保证的关键

在 DevOps 时代,持续测试已成为质量保证的一个重要方面。近年来,软件开发方法论发生了快速转变。随着 DevOps 的出现,已经发生了向自动化和持续集成与交付 (CI/CD) 的重大转变。传统的质量保证方法已不足以满足现代软件开发实践的需求。持续测…

Java——二叉树的深度

题目链接 牛客网在线oj题——二叉树的深度 题目描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度,根节点的深度视为 1 。 数据范围&am…

记一次产线打印json导致的redis连接超时

服务在中午十一点上线后,服务每分钟发出三到四次redis连接超时告警。错误信息为: Dial err:dial tcp: lookup xxxxx: i/o timeout 排查过程 先是检查redis机器的情况,redis写入并发数较大,缓存中保留了一小时大概400w条数据。red…

java学习之第十章作业

目录 第一题 第二题 第三题 第四题 第五题 第六题 代码的问题点 第七题 第八题 第一题 package homework;public class HomeWork01 {public static void main(String[] args) {Car c new Car();//创建新对象,没有实参Car c1 new Car(100);//1.创建一个新的…

Windows11开启远程桌面和修改远程端口

该示例适用于大部分的Windows平台,示例基于Windows 11。操作系统:Windows 11 专业版。远程桌面默认使用TCP协议,默认端口为3389,修改后为13389。 一、开启远程桌面 控制面板-->系统与安全-->系统-->允许远程访问 二、修…

牛客网_华为机试题_HJ23 删除字符串中出现次数最少的字符

写在前面: 题目链接:牛客网_华为机试题_HJ23 删除字符串中出现次数最少的字符 编程语言:C 难易程度:简单 一、题目描述 描述 实现删除字符串中出现次数最少的字符,若出现次数最少的字符有多个,则把出现次数…

09 虚拟机配置-虚拟机描述

文章目录 09 虚拟机配置-虚拟机描述9.1 概述9.2 元素介绍9.3 配置示例 09 虚拟机配置-虚拟机描述 9.1 概述 本节介绍虚拟机domain根元素和虚拟机名称的配置。 9.2 元素介绍 domain:虚拟机XML配置文件的根元素,用于配置运行此虚拟机的hypervisor的类型…

英语中主语从句的概念及其用法,例句(不断更新)

主语从句的原理 主语从句是一种充当整个句子主语的从句,主语从句构成的句子,是要以引导词开头的。它可以用名词性从属连词、关系代词或关系副词引导。主语从句通常位于谓语动词之前,用于表示动作、状态或事件的主体。 以下是一些常用的引导主…

【Python习题集2】控制语句练习

控制语句 一、实验内容二、实验总结 一、实验内容 1.从键盘接收整数的一百分制成绩(0~100),要求输出其对应的成绩等级A-E。其中,90分(包含)以上为A,80~89(均包含)分为B,70~79&#…

【Unity编辑器】拓展Hierarchy视图

目录 1、拓展菜单 2、拓展布局 3、重写菜单 1、拓展菜单 在Hierarchy视图中点击Create按钮,弹出的菜单My Create->Cube就是自定义拓展菜单 using UnityEngine; using UnityEditor;public class S2_拓展菜单 : MonoBehaviour {[MenuItem("GameObject/My …

Leetcode268. 丢失的数字

Every day a leetcode 题目来源&#xff1a;268. 丢失的数字 解法1&#xff1a;排序 代码&#xff1a; /** lc appleetcode.cn id268 langcpp** [268] 丢失的数字*/// lc codestart class Solution { public:int missingNumber(vector<int> &nums){int n nums.s…

分数傅里叶变换、小波变换和自适应神经网络

与普通的傅立叶变换&#xff0c;即 1 阶的分数阶傅立叶变换不同&#xff0c;分数阶傅立叶变换&#xff08;p ≠ 1&#xff09;提取的特征同时结合了原始图像的空间和频率特性。 分数傅里叶变换图像是介于原始图像和全傅里叶变换图像之间的东西。 Vander Lugt 相关器可以根据傅…

Playwright之初体验

参考文件 官方文档&#xff1a;https://playwright.dev/docs/intro GitHub链接&#xff1a;https://github.com/microsoft/playwright-python Playwright简介 Playwright Test是专门为满足端到端测试的需求而创建的。Playwright支持所有现代搜索引擎&#xff0c;包括Chrome、…

linux基础简介(一)

1.Linux内核 ​ Linux 系统从应用角度来看&#xff0c;分为内核空间和用户空间两个部分。内核空间是 Linux 操作系统的主要部分&#xff0c;但是仅有内核的操作系统是不能完成用户任务的。丰富并且功能强大的应用程序包是一个操作系统成功的必要件。 ​ Linux 的内核主要由 5…