论文学习记录之一种具有边缘增强特点的医学图像分割网络

news2024/11/25 0:52:00

标题:一种具有边缘增强特点的医学图像分割网络

期刊:电子与信息学报-(2022年5月出刊)

摘要:针对传统医学图像分割网络存在边缘分割不清晰、缺失值大等问题,该文提出一种具有边缘增强特点的医学图像分割网络(AS-UNet)。利用掩膜边缘提取算法得到掩膜边缘图,在UNet扩张路径的最后3层引入结合多 尺度特征图的边缘注意模块(BAB),并提出组合损失函数来提高分割精度;测试时通过舍弃BAB来减少参数。在3种不同类型的医学图像分割数据集Glas, DRIVE,  ISIC2018 上进行实验,与其他分割方法相比,AS-UNet分割性能较优。

关键字:医学图像分割;注意力机制;边缘注意;组合损失函数

一、介绍

        本文基于UNet提出一种 具有边缘增强特点的医学图像分割网络(Add-andSubtract UNet, AS-UNet)。

  • Add是指训练时在UNet 的基础之上增加边缘注意模块(Boundary Attention Block, BAB),;
  • Subtract是指测试时舍弃 BAB。

        创新点:

  1. AS-UNet通过掩膜边缘提取算法得到掩膜边缘图,在UNet扩张路径的最后3层引入结合多尺 度特征图的BAB,强化边缘,减少缺失值;
  2. 本文提出使用组合损失函数,结合基于区域的Dice损失(Dice Loss) 和基于边缘的Boundary损失 (Boundary Loss) ,在保证区域缺失值小的同时补充边缘信息,提高分割精度;
  3. 此外,由于组合损失函数包含了经过BAB前后的两种输出,在训练时经过前后向反馈不断更新AS-UNet中的网络参数,使得训练好的模型在测试时可以舍弃添加的BAB部分,保证分割精度的同时减少测试时参数。

二、具有边缘增强特点的医学图像分割网络 AS-UNet

2.1 网络结构

        本文所提具有边缘增强特点的医学图像分割网络 AS-UNet 结构如图1所示。采用UNet网络的编码—解码结构,输入通过 UNet 得到的直接输出称为 输出1(output1)。将UNet扩张路径中 L_7,L_8,L_9 得到的特征图 R_7,R_8,R_9 分别作为输入层送入BAB。 R_7经过BAB后采用 2 \times 2 的上采样(Up-conv 2 2)达 到 与 R_8  相 同 的 尺 寸 , 作 为 补 充 层 传 入  L_8  的 BAB中。同理,R8经过BAB后采用 2 \times 2 的上采样达到与 R_9 相同的尺寸,并作为补充层传入 L_9 的 BAB中。而最后一层得到的特征图 R_9 经过BAB后 则直接进行 1 \times1 的卷积得到输出2(output2)。此过程如式(1)所示:

output2=d_1(B{p_2[B[p_2(B(R_7)),R_8]],R_9})                                (1)

其中,d_s(*) 表示卷积核大小为 s \times s 的卷积函数, 表示卷积核大小为 s \times s 的上采样函数, 表 示BAB函数。 训练时输入图像通过UNet生成输出1,同时将 R_7,R_8,R_9 通过BAB还原图像边缘细节信息,生成 输出2。将输出1和输出2分别与掩膜(Mask,即标 签(Ground Truth, GT))进行损失计算,在前后向传播中更新参数,得到最终模型。

图1 AS-UNet网络结构

2.2 边缘注意力模块

        在UNet中,边缘分割模糊以及部分区域缺失 仍是最主要的不足。因此,本文所提AS-UNet网络 通过在UNet网络中引入边缘注意模块BAB以强化 边缘信息,补充缺失区域。BAB结构如图2所示。

图2 BAB结构  

2.2.1 掩膜边缘提取算法

        为了引入像素级别的精确边缘信息,本文通过掩膜边缘提取算法将训练图像的掩膜导出为掩膜边 缘图,以此作为边缘信息的重要补充。掩膜边缘提取算法过程可表述为:遍历掩膜的每一个像素点 (i,j),当遍历的像素点值为0,且以该像素点为中心的九宫格内其余像素点不都为0时,将该像素点记作0,直到掩膜的所有像素点都遍历结束后,生成掩膜边缘图。图3为掩膜与经过掩膜边缘提取算法导出的掩膜边缘图。

图3 图像掩模与对应边缘图  

2.2.2 注意力模块

图4 注意力模块  

2.3 组合损失函数

        在图像分割领域,主要采用的损失函数包括基于分布的交叉熵损失函数(Cross-Entropy Loss)以 及基于区域的Dice损失函数。

  • 交叉熵损失函数单独 评估每个像素矢量的类预测,然后对所有像素求平 均值,使得图像中的像素能够被平等学习。但是,医学图像中常出现类别不均衡的问题,由此导致训练会被像素较多的类主导,对于像素较少的物体很难学习到其特征,从而降低网络的有效性。
  • 而 Dice损失函数,本质上是衡量两个样本的重叠部分,虽然解决了类别不均衡的情况,但是未关注到图像的边缘信息。

        由于医学图像的边缘信息尤为重要,因此本文提出结合基于区域的Dice 损失和基于边缘的Boundary 损失的组合损失函数L,在两个不同的侧重维度上进行监督。Dice损失和Boundary 损失的定义如式(4)、式(5)所示:

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

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

相关文章

【C语言】 利用栈完成十进制转二进制(分文件编译,堆区申请空间malloc)

利用栈先进后出的特性,在函数内部,进行除二取余的操作,把每次的余数存入栈内,最后输出刚好就是逆序输出,为二进制数 学习过程中,对存储栈进行堆区的内存申请时候,并不是很熟练,一开始…

【LaTeX Overleaf】 论文修订

对于在word中写的论文一般是使用【审阅】-【比较文档】来输出对比结果;对于overleaf,使用LaTeX排版,如何通过标记文字颜色来实现对比效果呢?? 1 批注功能-使用changes 宏包 在 LaTeX 中,changes 宏包是一个…

汽车技术智能化程度不断提升,线束可靠性如何设计?

随着汽车技术的高速发展,汽车自动化、智能化程度的逐步提高,人们对汽车的安全性、舒适性、娱乐性等要求也不断提高,加上汽车节能减排法规的不断严峻,整车电气设备不断增加,作为连接汽车各种电器设备“神经网络”的整车…

docker安装jenkins,并配置jdk、node和maven

拉取jenkins镜像 docker pull jenkins/jenkins:2.468-jdk21 创建一个文件夹,用于二次打包jenkins镜像 mkdir -p /data/jenkins cd /data/jenkins 提前准备好jdk和maven,并放到/data/jenkins下 由于8.x以上版本的maven只支持https协议,我们需…

分享一个最近在进行前后端联调时改了2天的bug...

场景再现 我们这边前端端口是8080 后端端口是8121 我们在前端里在首页面写了一个任务 当进入网页三秒后 发起一个叫getLoginUser的请求 我们的getLoginUser是调用的这里 一个异步请求 这边我们前端调用后端的接口也已经写好 我们先把后端跑起来 访问前端页面 接收到了这个…

源码搭建国内微短剧系统(APP+小程序)云存储配置流程

国内微短剧系统很多人不知道云存储和配置的操作流程,我整理了一份非常详细的操作文档流程,给大家介绍短剧系统云存储配置的详细操作流程。顺便推荐一下国内微短剧系统。 推荐下他们的开源地址:https://gitee.com/nymaite_com_2878868888/tjg…

arthas在idea和docker中的应用

基于IDEA工具使用 1&#xff0c;安装arthas插件 安装之后重启&#xff0c;然后再代码区域右键如果可以看到如下菜单选项&#xff0c;则说明安装成功 2&#xff0c;pom文件中配置arthas相关jar包 <!-- https://mvnrepository.com/artifact/com.taobao.arthas/arthas-pack…

JS 鼠标拖动实现移动滚动条的滚动效果

效果 现在很多场景都以移动端为基本开发&#xff0c;比如说需要隐藏滚动条&#xff0c;在pc上实现鼠标拖动和手机触摸拖动差不多的效果。 实现 以mdn的overflow属性中范例为基础&#xff0c;内容溢出时候可使用overflow: auto;和overflow: scroll;实现滚动效果。 要实现鼠标…

【Day1415】Bean管理、SpringBoot 原理、总结、Maven 高级

0 SpringBoot 配置优先级 从上到下 虽然 springboot 支持多种格式配置文件&#xff0c;但是在项目开发时&#xff0c;推荐统一使用一种格式的配置 &#xff08;yml是主流&#xff09; 1 Bean管理 1.1 从 IOC 容器中获取 Bean 1.2 Bean 作品域 可以通过注解 Scope("proto…

LeetCode 415.字符串相加 C++写法

LeetCode 415.字符串相加 C写法 思路&#x1f914;&#xff1a; 首先不能用stoi和tostring来做&#xff0c;如果给一个很大的数那一定存不下。我们可以从后往前一位一位的取&#xff0c;创建一个变量存储进位用于计算下一位数&#xff0c;之后取模得到当前数字&#xff0c;每一…

Redis+Lua脚本+AOP+反射+自定义注解,打造我司内部基础架构限流组件

定义注解 Retention(RetentionPolicy.RUNTIME) Target({ElementType.METHOD}) Documented public interface RedisLimitAnnotation {/*** 资源的key,唯一* 作用&#xff1a;不同的接口&#xff0c;不同的流量控制*/String key() default "";/*** 最多的访问限制次数…

netty使用redis发布订阅实现消息推送

netty使用redis发布订阅实现消息推送 场景 项目中需要给用户推送消息: 接口 RestController public class PushApi {Autowiredprivate PushService pushService;/*** 消息推送* param query* return*/PostMapping("/push/message")public String push(RequestBody…

华为Ascend C算子开发(中级)考试

华为Ascend C算子开发&#xff08;中级&#xff09;考试题 提示&#xff1a;这个是河北廊坊Ascend C算子开发考试题和答案&#xff0c;仅供参考&#xff0c;因为不确定其他城市的考试题是否也是一样 文章目录 华为Ascend C算子开发&#xff08;中级&#xff09;考试题一、op_ho…

音视频入门基础:H.264专题(16)——FFmpeg源码中,判断某文件是否为H.264裸流文件的实现

一、引言 通过FFmpeg命令可以判断出某个文件是否为AnnexB格式的H.264裸流&#xff1a; 所以FFmpeg是怎样判断出某个文件是否为AnnexB格式的H.264裸流呢&#xff1f;它内部其实是通过h264_probe函数来判断的。从文章《FFmpeg源码&#xff1a;av_probe_input_format3函数分析》中…

VSCode STM32嵌入式开发插件记录

要卸载之前搭建的VSCode嵌入式开发环境了&#xff0c;记录一下用的插件。 1.Cortex-Debug https://github.com/Marus/cortex-debug 2.Embedded IDE https://github.com/github0null/eide 3.Keil uVision Assistant https://github.com/jacksonjim/keil-assistant/ 4.RTO…

python-爬虫实例(4):获取b站的章若楠的视频

目录 前言 道路千万条&#xff0c;安全第一条 爬虫不谨慎&#xff0c;亲人两行泪 获取b站的章若楠的视频 一、话不多说&#xff0c;先上代码 二、爬虫四步走 1.UA伪装 2.获取url 3.发送请求 4.获取响应数据进行解析并保存 总结 前言 道路千万条&#xff0c;安全第一条 爬…

剧本杀小程序搭建,互联网下的游戏新体验,实现新增收!

近几年&#xff0c;桌游备受大众青睐&#xff0c;剧本杀行业更是瞬间曝火&#xff01;拥有强大社交体验与沉浸式游戏体验的剧本杀成为了众多年轻人的新宠&#xff0c;无论是外出游玩还是好友聚会&#xff0c;剧本杀游戏都成为了首选方式。 随着互联网的发展&#xff0c;线上小…

【防火墙】防火墙NAT、智能选路综合实验

实验拓扑 实验要求 7&#xff0c;办公区设备可以通过电信链路和移动链路上网(多对多的NAT&#xff0c;并且需要保留一个公网IP不能用来转换) 8&#xff0c;分公司设备可以通过总公司的移动链路和电信链路访问到Dmz区的http服务器 9&#xff0c;多出口环境基于带宽比例进行选路…

IO多路复用-select的使用详解【C语言】

1.多进程/线程并发和IO多路复用的对比 IO多路转接也称为IO多路复用&#xff0c;它是一种网络通信的手段&#xff08;机制&#xff09;&#xff0c;通过这种方式可以同时监测多个文件描述符并且这个过程是阻塞的&#xff0c;一旦检测到有文件描述符就绪&#xff08; 可以读数据…

【Java】中的List集合

目录 一、什么是List集合二、List的常用方法List的初始化元素操作1.添加元素2.删除元素3.修改元素4.查询元素 三、List集合的遍历1.for循环遍历2.增强for循环3.迭代器遍历 一、什么是List集合 List集合是最常用的一种数据结构之一。它具有动态扩容、元素添加、删除和查询等基础…