U-net和U²-Net网络详解

目录

  • U-Net: Convolutional Networks for Biomedical Image Segmentation
    • 摘要
    • U-net网络结构
    • pixel-wise loss weight
  • U²-Net: Going Deeper with Nested U-Structure for Salient Object Detection
    • 摘要
    • 网络结构详解
      • 整体结构
      • RSU-n结构
      • RSU-4F结构
      • saliency map fusion module -- 显著特征融合模块
    • 损失计算
    • 评价准则
      • F-measure
      • MAE(mean absolute error)-- 平均绝对误差
    • 实验结果

U-Net: Convolutional Networks for Biomedical Image Segmentation

论文链接:U-Net: Convolutional Networks for Biomedical Image Segmentation(MICCAI 2015)

摘要

(1)本文提出了一种网络和训练策略,它依赖于大量使用数据增强来更有效地使用可用的带注释样本。

(2)网络架构由一条用于捕获上下文信息的路径(contracting path)和一条用于实现精确定位的路径(expanding path)组成。

(3)这种网络可以从很少的图像中进行端到端训练,并且在当时达到很好的效果。此外,该网络速度在当时分割 512x512 图像只需不到一秒钟。

U-net网络结构

U-net网络结构图如下

左侧为contracting path,主要作用是进行特征提取以及下采样,通常被视为encoder。

右侧则为expansive path,通常被视为decoder。

图中的条形矩阵代表特征层,箭头代表操作(如图中右下红框所示)。

image-20240710150032662

在U-net的卷积操作中stride = 1,padding = 0,因此卷积后图像宽和高都会变小。

当时BN层还没发展起来,所以还没使用BN模块。

执行流程:

contracting path:

首先,输入的是单通道的572 × 572图像。

下采样不改变通道数,但是每次下采样之后经过的第一个卷积层都会使通道数翻倍。

expansive path:

上采样使用的是转置卷积,宽和高都放大两倍,同时通道数减半。

灰色箭头(copy and crop)主要执行的是concat操作,但是由于宽高不同,因此会对左侧的特征图进行中心裁剪再执行concat操作

右侧通道数减半的操作在上采样和上采样后的第一个卷积层中都会执行,因为在上采样减半后concat会恢复原来的维度,然后再通过卷积层降维。

最后输出部分,墨绿色的1 × 1卷积层的卷积核个数和分类的类别个数一样,并且没有经过relu层。因为论文中只有前景和背景两个类别,因此最后的特征图是388 × 388 × 2。

注意:

论文中输入为572 × 572,但是输出为388 × 388,因此只是得到原图中间部分的分割结果。

实际实现通常在左侧的卷积层中加入padding,不会改变宽和高,这样在concat的时候就不用使用中心裁剪,并且最终结果特征图宽高和输入是一致的。同时,现在实现还会在conv 3 × 3 和Relu中间加入 BN层。

pixel-wise loss weight

图中c是当作ground truth用来计算损失,而实际做细胞分割的过程,对于细胞和细胞间的间隙(图中相邻白色区域的黑色间隙)进行分割是很困难的,而图c中大面积黑色区域则是很容易区分的,因此提出了pixel-wise loss weight方案。

对于细胞的间隙在计算损失的时候给予更大的权重,而大片的背景区域施加比较小的权重,图中d热力图所示就是权重分布,蓝色(0)到红色(10)权重逐渐增大,但是该方法在论文中并没有进行消融实验,而只是提到了对模型训练会有帮助。

image-20240710150928124


U²-Net: Going Deeper with Nested U-Structure for Salient Object Detection

论文链接:U²-Net: Going Deeper with Nested U-Structure for Salient Object Detection(CVPR 2020)

U²-Net是针对Salient Object Detetion(SOD)即显著性目标检测任务提出的。该任务虽然是检测任务,但是和语义分割十分类似,它的任务是将图片中最吸引人的目标或区域分割出来,故只有前景和背景两个类别。

摘要

(1)本文设计了一个简单但功能强大的深度网络架构U²-Net,用于显著物体检测(SOD)。

(2)网络架构由两级嵌套的U型结构组成,其设计具有以下优点:

  • ReSidual Block(RSU)中具有不同大小的感受野,它能够从不同尺度捕获更多上下文信息;
  • RSU块中使用了池化操作,增加了整个架构的深度,但却不会显著增加计算成本;
  • 这种架构能够从头开始训练深度网络,而无需使用来自图像分类任务的主干。

网络结构详解

整体结构

下图展示U²-Net的整体结构。主体是一个类似U-Net的结构,而网络中的每个block(无论是Encoder还是Decoder模块)内部也是类似U-Net结构,因此该网络也取名为U²-Net。

总体介绍:

在encoder中每经过一个block后都要进行下采样,下采样2×通过maxpool实现。

在decoder中每经过一个block前都要进行上采样,通过双线性插值(bilinear)实现。

每个阶段的预测输出进行融合,得到融合之后的预测概率图。

image-20240710161413800

通过上图可以看出,En_1、En_2、En_3、En_4、De_1、De_2、De_3、De_4采用的是同一种Block,只不过深度不同。该Block就是论文中提出的ReSidual U-block简称RSU。

RSU-n结构

下图是RSU-7结构,其中7代表深度,注意最下面的3 x 3卷积采用的是膨胀卷积,膨胀因子为2。

image-20240710162007010

image-20240710162134034

其中En_1和De_1采用的是RSU-7,En_2和De_2采用的是RSU-6,En_3和De_3采用的是RSU-5,En_4和De_4采用的是RSU-4,区别就是下采样的倍率不同,RSU-7最多下采样32×,RSU-6最多下采样16×,以此类推。

而En_5、En_6和De_5三个模块采用的是RSU-4F,RSU-4F和RSU-4两者结构并不相同

RSU-4F结构

下图是RSU-4F的结构图,在RSU-4F中并没有进行下采样或上采样,而是将采样层全部替换成了膨胀卷积,下图中带参数d的卷积层全部是膨胀卷积,d为膨胀系数。

image-20240710163106123

注意:在En_5、En_6和De_5三个block内部的操作中,通过控制膨胀系数d,特征图的宽和高是没有发生变化的。

为什么在在En_5、En_6和De_5中不进行采样?

通过Encoder_4这个block之后特征图的尺寸就已经比较小了,如果再进行下采样会丢失很多上下文信息,所以在En_5、En_6和De_5这三个block中就不再进行下采样了,而是将采样层(上采样和下采样)全部替换成了膨胀卷积。

saliency map fusion module – 显著特征融合模块

通过该模块将不同阶段得到的不同尺度的saliency map进行融合并得到最终预测概率图。

执行流程:

  1. 首先收集De_1、De_2、De_3、De_4、De_5以及En_6的输出,然后分别通过一个3 x 3的卷积层(图中白色箭头),这些卷积层的卷积核个数都为1,因此得到的特征图channel都为1;
  2. 然后通过双线性插值进行缩放,把feature map的大小还原成输入图片大小,得到Sup1、Sup2、Sup3、Sup4、Sup5和Sup6;
  3. 接着将这6个特征图进行Concat拼接,得到channel = 6的特征图;
  4. 最后经过一个1 x 1的卷积层以及Sigmiod激活函数得到最终的预测概率图。

image-20240710164211462

损失计算

下面是原论文中给出的损失函数,l代表二值交叉熵损失,w代表每个损失的权重。

image-20240710164713343

该损失函数可以看成两部分,红色框中通过上面提到的Sup1、Sup2、Sup3、Sup4、Sup5和Sup6计算。首先要将Sup1、Sup2、Sup3、Sup4、Sup5和Sup6通过Sigmoid激活函数得到对应的预测概率图,然后与手工标注的ground truth计算lM=6即Sup1至Sup6。。

蓝色框表示最终融合得到的预测概率图S_fuse与ground truth之间的损失,在源码中红色框中的六个w以及蓝色框中的w全部都等于1。

评价准则

F-measure

F-measure是结合了Precision和Recall的综合指标,计算公式如下

image-20240710165740094

最终结果在0-1之间,其中F_β越大,表示网络的分割效果越好。

注意:对于不同的阈值,会得到不同的precision和recall,因此实际得到的F_β是一个数组,而最终报告的指标就是max(F_β),即取数组中的最大值作为评价指标,在源码中β² = 0.3。

MAE(mean absolute error)-- 平均绝对误差

MAE计算公式如下:

image-20240710165837335

最终结果在0-1之间,MAE越接近0表示网络性能越好。

其中P(r,c)代表网络预测的概率图,G(r,c)代表真实的GT,H和W分别代表图片的高和宽。对于输入图中的每个像素点,用网络预测的概率图和ground truth进行相减得到绝对值,然后求得全图像素的平均损失。

实验结果

下图展示了当年SOD任务中最先进的一些公开网络在ECSSD数据集上的max{F_β}性能指标。通过对比,U²-Net无论是在模型size上还是max{F_β}指标上都优于其他网络。

图中红色的五角星代表的是标准的U²-Net(176.3 MB),蓝色的五角星代表轻量级的U²-Net(4.7 MB),效果都十分显著。

image-20240710170559643

下图是具体结果对比。

  • 第一列为原图;
  • 第二列为人工标注的ground truth;
  • 第三列为U²-net标准版的预测结果;
  • 第四列为轻量级U²-net的预测结果;
  • 第五列及其之后的就是当年其他显著性目标检测网络的预测结果。

从图中可以明显看出U²-net的分割精细程度更高,效果很好。

image-20240710170500767

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

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

相关文章

线性代数|机器学习-P22逐步最小化一个函数

文章目录 1. 概述2. 泰勒公式3. 雅可比矩阵4. 经典牛顿法4.1 经典牛顿法理论4.2 牛顿迭代法解求方程根4.3 牛顿迭代法解求方程根 Python 5. 梯度下降和经典牛顿法5.1 线搜索方法5.2 经典牛顿法 6. 凸优化问题6.1 约束问题6.1 凸集组合 Mit麻省理工教授视频如下:逐步…

科普文:Java对象在堆中的内存结构

概叙 今天来讲些抽象的东西 -- 对象头,因为我在学习的过程中发现很多地方都关联到了对象头的知识点,例如JDK中的 synchronized锁优化 和 JVM 中对象年龄升级等等。 对象内存构成# Java 中通过 new 关键字创建一个类的实例对象,对象存于内存的…

从零开始学习嵌入式----C语言框架梳理与后期规划

目录 一、环境搭建. 二、见解 三、C语言框架梳理 四、嵌入式学习规划流程图(学习顺序可能有变) 一、环境搭建. C语言是一门编程语言,在学习的时候要准备好环境。我个人比较喜欢用VS,具体怎么安装请百度。学习C语言的时候,切忌…

使用来此加密申请多域名SSL证书

在数字化时代的浪潮中,网站的安全性已成为企业和个人不可或缺的一部分。特别是在数据传输和用户隐私保护方面,SSL证书的作用愈发显著。 申请多域名SSL证书步骤 1、登录来此加密网站,输入域名,可以勾选泛域名和包含根域。 2、选择…

Apache Hadoop之历史服务器日志聚集配置

上篇介绍了Apache Hadoop的分布式集群环境搭建,并测试了MapReduce分布式计算案例。但集群历史做了哪些任务,任务执行日志等信息还需要配置历史服务器和日志聚集才能更好的查看。 配置历史服务器 在Yarn中运行的任务产生的日志数据不能查看,…

一套基于 Ant Design 和 Blazor 的开源企业级组件库

前言 今天大姚给大家分享一套基于Ant Design和Blazor的开源(MIT License)、免费的企业级组件库(喜欢Ant Design风格的同学推荐使用):Ant Design Blazor。 项目特性 提炼自企业级中后台产品的交互语言和视觉风格。 开…

Qt:15.布局管理器(QVBoxLayout-垂直布局、QHBoxLayout-水平布局、QGridLayout-网格布局、拉伸系数,控制控件显示的大小)

目录 一、QVBoxLayout-垂直布局: 1.1QVBoxLayout介绍: 1.2 属性介绍: 1.3细节理解: 二、QHBoxLayout-水平布局: 三、QGridLayout-网格布局: 3.1QGridLayout介绍: 3.2常用方法&#xff1a…

git查看版本,查看安装路径、更新版本

git version 查看版本 git update-git-for-windows 更新版本 git version 查看版本

江波龙 128G msata量产

一小主机不断重启,用DG格式化 无法完成,应该是有坏块了 找一个usb转msata转换板 查了一下是2246en aa主控 颗粒应该是三星的 缓存是现代的 找到量产工具sm22XMPToolP0219B 打开量产工具 用镊子先短接一下jp1 插入usb口,再拿走镊子 scan …

【Pytorch】RNN for Image Classification

文章目录 1 RNN 的定义2 RNN 输入 input, h_03 RNN 输出 output, h_n4 多层5 小试牛刀 学习参考来自 pytorch中nn.RNN()总结RNN for Image Classification(RNN图片分类–MNIST数据集)pytorch使用-nn.RNN 1 RNN 的定义 nn.RNN(input_size, hidden_size, num_layers1, nonlinea…

3D云渲染工具对决:Maya与Blender的性能和功能深度比较

3D建模和动画制作已成为数字领域不可或缺的一环,无论是在影视特效的震撼场面,还是在游戏角色的生动表现,3D技术都扮演着至关重要的角色。而在这一领域,Maya和Blender这两款软件,以其强大的功能和广泛的应用&#xff0c…

COMe Type6核心板:基于飞腾FT2000/D2000的全国产化标准板卡

目前采用了国产飞腾处理器的COMe核心板开发的比较多,各家都有属于自己的基于COM Express标准设计的模块化计算板卡。COM Express是一种标准化的嵌入式计算模块,用于将处理器、内存和外围设备控制器等关键组件集成在一个小型的板卡上,便于快速…

FUSE(用户空间文件系统)命令参数

GPT-4 (OpenAI) FUSE (Filesystem in Userspace)是一个允许创建用户空间文件系统的接口。它提供了一个API,让开发者在未修改内核代码的情况下,通过自己的程序实现文件系统。FUSE 文件系统通常通过 mount 命令来挂载,而且这个命令可以接受各…

【Docker-compose】搭建php 环境

文章目录 Docker-compose容器编排1. 是什么2. 能干嘛3. 去哪下4. Compose 核心概念5. 实战 :linux 配置dns 服务器,搭建lemp环境(Nginx MySQL (MariaDB) PHP )要求6. 配置dns解析配置 lemp Docker-compose容器编排 1. 是什么 …

mov视频怎么改成mp4?把mov改成MP4的四个方法

mov视频怎么改成mp4?选择合适的视频格式对于确保内容质量和流通性至关重要。尽管苹果公司的mov格式因其出色的视频表现备受赞誉,但在某些情况下,它并非最佳选择,因为使用mov格式可能面临一些挑战。MP4格式在各种设备(如…

树链剖分相关

树链剖分这玩意儿还挺重要的,是解决静态树问题的一个很好的工具~ 这里主要介绍一下做题时经常遇到的两个操作: 1.在线求LCA int LCA(int x,int y){while(top[x]!top[y])if(dep[top[x]]>dep[top[y]]) xfa[top[x]];else yfa[top[y]];return dep[x]&l…

C# + halcon 联合编程示例

C# halcon 联合编程示例 实现功能 1.加载图像 2.画直线,画圆,画矩形, 画椭圆 ROI,可以调整大小和位置 3.实现找边,找圆功能 效果 开发环境 Visual Studio 2022 .NET Framework 4.8 halcondotnet.dll 查看帮助文档 项目结构 DL…

JavaSE学习笔记第二弹——对象和多态(下)

今天我们继续复习与JavaSE相关的知识,使用的编译器仍然是IDEA2022,大家伙使用eclipse或其他编译环境是一样的,都可以。 目录 数组 定义 一维数组 ​编辑 二维数组 多维数组 数组的遍历 for循环遍历 ​编辑 foreach遍历 封装、继承和…

mes系统在新材料行业中的应用价值

万界星空科技新材料MES系统是针对新材料制造行业的特定需求而设计的制造执行系统,它集成了生产计划、过程监控、质量管理、设备管理、库存管理等多个功能模块,以支持新材料生产的高效、稳定和可控。以下是新材料MES系统的具体功能介绍: 一、生…

MongoDB - 集合和文档的增删改查操作

文章目录 1. MongoDB 运行命令2. MongoDB CRUD操作1. 新增文档1. 新增单个文档 insertOne2. 批量新增文档 insertMany 2. 查询文档1. 查询所有文档2. 指定相等条件3. 使用查询操作符指定条件4. 指定逻辑操作符 (AND / OR) 3. 更新文档1. 更新操作符语法2. 更新单个文档 updateO…