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.mzph.cn/news/870660.shtml

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

相关文章

JavaFx+MySql学生管理系统

前言: 上个月学习了javafx和mysql数据库,于是写了一个学生管理系统,因为上个月在复习并且有一些事情,比较忙,所以没有更新博客了,这个项目页面虽然看着有点简陋了,但是大致内容还是比较简单的,于是现在跟大家分享一下我的学生管理系统,希望对这方面有兴趣的同学提供一些帮助 &a…

如何将canvas画布变成一张img图片

将Canvas画布转换成一张图片&#xff08;通常是PNG或JPEG格式&#xff09;可以通过Canvas的toDataURL()方法来实现。这个方法可以将Canvas上的内容转换为一个表示图像数据的URL&#xff0c;这个URL可以被用作<img>标签的src属性&#xff0c;或者通过JavaScript进一步处理…

Vue 3 中创建一个动态的组件实例

本文将介绍如何在 Vue 3 中实现一个动态 Toast 组件实例。我们将创建一个简单的 Toast 组件&#xff0c;并使用一个动态创建实例的脚本来显示 Toast 消息。在 Vue 3 中创建动态组件实例有许多好处&#xff0c;这些好处主要体现在灵活性、性能、可维护性和用户体验等方面。 创建…

【JavaScript 算法】快速排序:高效的排序算法

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、算法原理二、算法实现三、应用场景四、优化与扩展五、总结 快速排序&#xff08;Quick Sort&#xff09;是一种高效的排序算法&#xff0c;通过分治法将数组分为较小的子数组&#xff0c;递归地排序子数组。快速排序通常…

北方园艺期刊

《北方园艺》是由黑龙江省农科院主管、黑龙江省园艺学会和黑龙江省农科院主办的以科学研究和技术普及相结合的园艺类综合性科技期刊。创刊四十年来&#xff0c;《北方园艺》紧随时代及行业的发展&#xff0c;根据前沿热点不断完善栏目设置&#xff1b;积极引进高学历人才&#…

分享一个 .NET 通过监听器拦截 EF 消息写日志的详细例子

前言 EF 开发效率确实很高也很便捷&#xff0c;但当它发生错误时&#xff0c;也挺让人头疼的&#xff0c;为什么&#xff1f;因为 EF 就像是一个黑盒子&#xff0c;一切全被封装起来&#xff0c;出错的时候很难定位原因&#xff0c;如果能够知道并打印 EF 生成的 SQL 语句&…

Memcached内存告急:深度解析与实战优化

标题&#xff1a;Memcached内存告急&#xff1a;深度解析与实战优化 在现代的动态Web应用中&#xff0c;Memcached作为一项关键的缓存技术&#xff0c;以其卓越的性能和简便的部署赢得了开发者的青睐。然而&#xff0c;随着数据量的激增和访问频率的提高&#xff0c;Memcached…

记录些Redis题集(1)

为什么Redis要有淘汰机制&#xff1f; 淘汰机制的存在是必要的&#xff0c;因为Redis是一种基于内存的数据库&#xff0c;所有数据都存储在内存中。然而&#xff0c;内存资源是有限的。在Redis的配置文件redis.conf中&#xff0c;有一个关键的配置项&#xff1a; # maxmemory…

Go语言入门之Map详解

Go语言入门之Map详解 1.基础定义 map是一个无序的&#xff0c;k-v键值对格式的集合 &#xff08;1&#xff09;特点 类型特点&#xff1a;map为引用类型&#xff0c;所以在函数中更新value值会永久改变顺序特点&#xff1a;map的遍历是无序的&#xff0c;因为底层是哈希表&am…

零基础学python(二)

1. 字典 字典的创建 最常见的创建方式&#xff1a; d {"k1": "v1", "k2": "v2"} 再向字典中添加一对键值&#xff1a; d["k3"] "v3" 字典还可以用dict()创建&#xff0c;这种方式中&#xff0c;键是不加引…

【Unity2D 2022:UI】制作主菜单

一、创建主菜单游戏场景 1. 在Scenes文件夹中新建一个游戏场景Main Menu 2. 为场景添加背景 &#xff08;1&#xff09;创建画布Canvas &#xff08;2&#xff09;在Canvas中创建新的空游戏物体Main Menu &#xff08;3&#xff09;在Main Menu中新建一个图像游戏物体Backgrou…

GDB调试

GDB调试 一 调试准备二 启动和退出gdb2.1 启动gdb2.2 命令行传参2.3 gdb中启动程序2.4 退出gdb 三 查看代码3.1 当前文件3.2 切换文件3.3 设置显示的行数 四 断点操作4.1 设置断点4.2 查看断点4.3 删除断点4.4 设置断点状态 五 调试命令5.1 继续运行gdb5.2 手动打印信息5.2.1 打…

无人机之机身保养

一、外观检查 1、检查机器表面整洁无划痕、无针孔凹陷擦伤、畸变等损坏情况&#xff1b; 2、晃动机身&#xff0c;仔细听机身内部有无松动零件或者螺丝在机身内部。 二、桨叶检查 1、有无裂痕、磨损、变形等缺陷&#xff0c;如有明显缺陷建议更换&#xff1b; 2、卡扣、紧…

C++函数模板学习

函数模板是C中的一个强大特性&#xff0c;允许编写通用函数来处理不同的数据类型。学习函数模板有助于理解泛型编程的概念&#xff0c;提高代码的可重用性和可维护性。以下是一些学习函数模板时可以关注的方面&#xff1a; 1. 模板的基本概念 模板定义&#xff1a;了解如何定义…

WebSocket、socket.io-client

WebSocket WebSocket 是一种网络通信协议&#xff0c;它提供了一个在单个长期持久的 TCP 连接上进行全双工&#xff08;full-duplex&#xff09;通信的通道。 WebSocket 允许客户端和服务器之间进行双向的数据交换&#xff0c;这意味着服务器可以主动向客户端推送数据&#x…

Animate软件基础:图层的基本用法

图层作为Animate软件中比较重要的功能&#xff0c;需要对其使用方法和作用理解充分&#xff0c;并熟练操作才可以更好的用来制作内容。 图层相关的功能和用法如下&#xff1a; 图层可以帮助在文档中组织插图。 可以在一个图层上绘制和编辑对象&#xff0c;而不会影响其他图层…

排座椅【详细代码题解】

[NOIP2008 普及组] 排座椅 题目描述 上课的时候总会有一些同学和前后左右的人交头接耳&#xff0c;这是令小学班主任十分头疼的一件事情。不过&#xff0c;班主任小雪发现了一些有趣的现象&#xff0c;当同学们的座次确定下来之后&#xff0c;只有有限的 D D D 对同学上课时…

USB转RS485+RS232+TTL串口电路

USB转RS485RS232TTL电路 USB转RS485RS232TTL电路如下图所示&#xff0c;可实现USB转RS485RS232TTL串口&#xff0c;一个电路模块即可实现电路调试过程中用到常用接口。 电路模块上留有2.54MM单排针接口和接线端子两种接线方式&#xff0c;可接线和跳线。电路模块同时有5V和3.3V…

Postman脚本炼金术:高级数据处理的秘籍

&#x1f916; Postman脚本炼金术&#xff1a;高级数据处理的秘籍 Postman不仅是API测试的强大工具&#xff0c;它的脚本功能同样能够在数据处理方面大放异彩。无论是在请求之前设置环境&#xff0c;还是测试后验证结果&#xff0c;Postman的脚本都能提供强大的数据处理能力。…

开源浏览器引擎对比与适用场景:WebKit、Chrome、Gecko

WebKit与Chrome的Blink引擎对比 起源与关系&#xff1a; WebKit最初由苹果公司开发&#xff0c;用于Safari浏览器。后来&#xff0c;WebKit逐渐成为一个独立的开源项目&#xff0c;被多个浏览器厂商采用。Blink是Google基于WebKit项目分支出来的一个浏览器引擎&#xff0c;用于…