图像分割UNet (1) : 网络结构讲解

这篇具有很好参考价值的文章主要介绍了图像分割UNet (1) : 网络结构讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

UNet 简介

UNet 论文:Convolutional Networks for Biomedical Image Segmentation

图像分割UNet (1) : 网络结构讲解
这篇论文主要是针对生物医学影像这个领域提出的,所以一提到UNet一般都会联想到医学影像。

UNet 网络结构

图像分割UNet (1) : 网络结构讲解
UNet它是一个encoder - decoder的结构,那么encoder对应就是这个u型网络左边这半部分,也就是我们特征提取及下采样这部分。decoder解码就是右边部分通过一系列上采样,我们得到最终的一个分割图。 对于网络结构左边这一侧,作者叫做contracting path,对于右边这一侧作者称为expansive path

在上图的网络结构中,每一个长条的矩形对应的都是一个特征层,其中箭头表示是一种操作。图中右下角列出了每一种箭头它所对应的操作类型。下面详细的介绍网络的搭建过程:

U型网络的左半部分

  • 这里输入是以572x572的单通道的图像为例的,首先通过一个卷积层,它的卷积核大小为3x3的,并且后面跟一个Relu激活函数。注意对于这个卷积层它的步距是等于1的,其次是没有padding操作的,所以你会发现通过这个卷积层,它的高和宽都会减少。比如这里通过第一个3x3的卷积,它的高和宽从572变为570,再通过一个3x3卷积层又变为568.由于这篇论文是2015年发表的,当时BN(batch normalization)还没火起来,所以按时还没有使用BN这个模块。
  • 接下来,通过一个max pooling下采样,池化核大小为2x2,步距为2,那么经过下采样特征层的高和宽就会减半。由568变成这里的284,channel是没有发生变化的还是64.再通过两个3x3的卷积核,这里注意每个下采样后,通过卷积层都会对channel进行翻倍。比如这里下采样后的channel为64,通过3x3卷积后channel变为128
  • 接下来,通过下采样max-pooling,将特征层的高和宽由280变为140,然后再通过两个3x3的卷积层,将通道由128调整为256.
  • 接下来,再通过下采样max-pooling,将特征层的高和宽由136变为68,然后再通过两个3x3的卷积层,将channel由256调整为512.
  • 然后,再通过下采样max-pooling,将特征层的高和宽由64变为32,然后再通过两个3x3的卷积层,将channel由512调整为1024.

U型网络的右半部分

  • 接下来这一部分需要注意了,首先对于绿色箭头部分,这里有写是一个上采样(up conv),这里上采样采用的是转置卷积,通过转置卷积后它将特征层的宽和高变为原来的两倍,比如这里由28变成56,然后channel会减半,由这里的1024变为512.对应图中的蓝色部分。
    图像分割UNet (1) : 网络结构讲解
    注意这里旁边有个灰色的箭头(copy and crop),比如灰色箭头左侧对应64x64大小的特征层,但箭头右侧蓝色部分的特征图为56x56,没法直接将他们进行拼接。那么就需要对左侧64x64大小的特征层进行一个中心裁剪,就是将中间56x56部分裁剪过来和右侧蓝色部分进行channel 方向的concat拼接,拼接后channel就变为1024了。然后再通过2个3x3的卷积核将channel调整成512
  • 然后再通过上采样将特征图的高和宽由52调整到这里的104,然后channel减半为256.然后将灰色箭头右侧的特征层通过中心裁剪的方式,将中间104x104的区域裁剪过来与箭头右侧蓝色部分进行concat拼接,通道由256变为512。然后再通过两个3x3的卷积进一步融合,并且通道由512变为256
  • 然后再通过上采样将特征图的高和宽由100调整到这里的200,然后channel减半为128.然后将灰色箭头右侧的特征层通过中心裁剪的方式,将中间200x200的区域裁剪过来与箭头右侧蓝色部分进行concat拼接,通道由128变为256。然后再通过两个3x3的卷积进一步融合,并且通道由256变为128
  • 然后再通过上采样将特征图的高和宽由196调整到这里的392,然后channel减半为64.然后将灰色箭头右侧的特征层通过中心裁剪的方式,将中间392x392的区域裁剪过来与箭头右侧蓝色部分进行concat拼接,通道由64变为128。然后再通过两个3x3的卷积进一步融合,得到388x388,通道为64的特征层。
  • 再通过一个1x1的卷积核,将channel调整为我们的分类个数。论文中是为2表示只有两个类别,前景和背景。最终输出的特征图大小为388x388x2,注意最后一个1x1卷积是没有relu激活函数的。

注意我们输入的图片大小为572x572,但是我们得到的分割图是388x388的,所以我们这里得到分割图并不是针对我们原图的一个分割图,而是只有中间388x388那个区域的分割图。

但是现在比较主流的实验方式github所实现的一系列源码当中,大家并不是严格按照原论文给的方式去实现的,现在主流的实现方式是将3x3的卷积加上一个padding,就是说我们每次通过3x3的卷积层不会改变特征层的高和宽。并且我们在卷积核Relu之间会加上一个Bn层。这样做会给我们带来一个怎样的变化呢,由于卷积后不改变特征层大小,两个特征图可以直接拼接,就不需要中心裁剪了,并且最终得到的卷积层高和宽与输入的卷积层高和宽是保持一致的。所以后面要实现可以按照当前主流的方式。

图像分割UNet (1) : 网络结构讲解
假设我们要用原论文提出的UNet的话,其实是有一定的问题的,比如我们要得到上图中黄色区域的分割图片,其实我们需要更大的输入图片如蓝色部分才可以得到中间黄色区域的分割图片。

但对于边缘区域,边缘之外的像素我们是没有的,为了应对这个问题作者说对于那些缺失的数据,它就直接采用镜像的策略,通过沿边框进行镜像得到。但如果按照目前主流的实现方式,输出的分割图与原图保持一致的话,其实我们根本不用考虑边缘缺失数据这个情况。文章来源地址https://www.toymoban.com/news/detail-464833.html

到了这里,关于图像分割UNet (1) : 网络结构讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《图像分割Unet网络分析及其Pytorch版本代码实现》

      最近两个月在做学习图像分割方面的学习,踩了无数的坑,也学到了很多的东西,想了想还是趁着国庆节有时间来做个总结,以后有这方面需要可以来看看。   神经网络被大规模的应用到计算机视觉中的分类任务中,说到神经网络的分类任务这里不得不提到CNN(卷积神经网

    2024年02月05日
    浏览(45)
  • 论文阅读—2023.7.13:遥感图像语义分割空间全局上下文信息网络(主要为unet网络以及改unet)附加个人理解与代码解析

    前期看的文章大部分都是深度学习原理含量多一点,一直在纠结怎么改模型,论文看的很吃力,看一篇忘一篇,总感觉摸不到方向。想到自己是遥感专业,所以还是回归遥感影像去谈深度学习,回归问题,再想着用什么方法解决问题。 1、易丢失空间信息 在 Decoder 阶段输出多

    2024年02月16日
    浏览(46)
  • YOLOv5网络模型的结构原理讲解(全)

    YOLOv5有几种不同的架构,各网络模型算法性能分别如下: YOLOv5是一种目标检测算法,其模型结构主要包括以下组成部分: 输入端:YOLOv5的Head网络由3个不同的输出层组成,分别负责检测大中小尺度的目标。 Backbone网络:YOLOv5使用CSPDarknet53作为其主干网络,其具有较强的特征提

    2024年02月05日
    浏览(33)
  • Python Unet ++ :医学图像分割,医学细胞分割,Unet医学图像处理,语义分割

    一,语义分割:分割领域前几年的发展 图像分割是机器视觉任务的一个重要基础任务,在图像分析、自动驾驶、视频监控等方面都有很重要的作用。图像分割可以被看成一个分类任务,需要给每个像素进行分类,所以就比图像分类任务更加复杂。此处主要介绍 Deep Learning-ba

    2024年02月16日
    浏览(63)
  • 简单有趣的轻量级网络 Shufflenet v1 、Shufflenet v2(网络结构详解+详细注释代码+核心思想讲解)——pytorch实现

         这期博客咱们来学习一下Shufflenet系列轻量级卷积神经网络,Shufflenet v1 、Shufflenet v2。 本博客代码可以直接生成训练集和测试集的损失和准确率的折线图,便于写论文使用。 论文下载链接: Shufflene系列轻量级卷积神经网络由旷世提出,也是非常有趣的轻量级卷积神经网

    2024年02月01日
    浏览(48)
  • UNet-肝脏肿瘤图像语义分割

    目录 一. 语义分割 二. 数据集 三. 数据增强 图像数据处理步骤 CT图像增强方法 :windowing方法 直方图均衡化 获取掩膜图像深度 在肿瘤CT图中提取肿瘤 保存肿瘤数据  四. 数据加载 数据批处理 ​编辑​编辑 数据集加载   五. UNet神经网络模型搭建          单张图片预测图

    2024年02月04日
    浏览(87)
  • 提升图像分割精度:学习UNet++算法

    由于工作需要对 UNet++ 算法进行调参,对规则做较大的修改,初次涉及,有误的地方,请各位大佬指教哈。 1.1 什么是 UNet++ 算法 UNet++ 算法是基于 UNet 算法的改进版本,旨在提高图像分割的性能和效果。它由 Zhou et al. 在论文 “ UNet++: A Nested U-Net Architecture for Medical Image Segment

    2024年02月03日
    浏览(44)
  • SE、CBAM、ECA注意力机制(网络结构详解+详细注释代码+核心思想讲解+注意力机制优化神经网络方法)——pytorch实现

           这期博客我们来学习一下神秘已久的注意力机制,刚开始接触注意力机制的时候,感觉很有意思,事实上学会之后会发现比想象中的要简单,复杂的注意力机制后续会讲解,这期博客先讲解最常见的三种SE、CBAM、ECA注意力机制。        注意力机制更详细的可以被称

    2024年02月07日
    浏览(49)
  • 图像分割Unet算法及其Pytorch实现

    UNet是一种用于图像分割的神经网络,由于这个算法前后两个部分在处理上比较对称,类似一个U形,如下图所示,故称之为Unet,论文链接:U-Net: Convolutional Networks for Biomedical Image Segmentation,全文仅8页。 从此图可以看出,左边的基础操作是两次 3 × 3 3times3 3 × 3 卷积后池化,

    2024年01月22日
    浏览(42)
  • 【图像分割】Unet-ConvLstm利用时序信息进行视频分割

    文章: Exploiting Temporality for Semi-Supervised Video Segmentation 代码: https://github.com/mhashas/Exploiting-Temporality-For-Semi-Supervised-Video-Segmentation 理解: 使用单帧标注,对视频进行分割。利用时间维度信息来推断空间信息。将传统FCN转化成时间-空间FCN。 方法: 通过FCN语义分割网络,对时间

    2023年04月27日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包