腹部多器官分割的边界感知网络

2024-03-19 05:20

本文主要是介绍腹部多器官分割的边界感知网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Title:Boundary-Aware Network for Abdominal Multi-Organ Segmentation

摘要

目前存在的问题是由于腹部器官的大小不一,导致器官之间的边界不明确(边界模糊问题)这对于腹部多器官分割仍然具有很大的挑战性。

本文提出了一个边界感知网络来分割CT扫描和MRI扫描的腹部器官分割。这个模型包含一个共享编码器,一个边界解码器和一个分段解码器。并且两个解码器都采用了多尺度深监督的策略。可以缓解因器官大小不同而带来的问题。利用边界解码器在每个比例上生成的边界概率图作为注意点增强分割特征图。

Introduction

目前腹部多器官分割存在的问题:1)腹部器官区域各器官之间体积差异较大2)边界模糊问题。

在本文中提出了一种边界感知网络(BA-Net)。BA-Net是一个编码器解码器结构。为了使模型更加关注容易出错的边界,引入了一个辅助边界解码器来检测目标器官的边界模糊。BA-Net在解码器的每个尺度上都对边界和分割解码器进行了监督,进一步提高了模型对不同尺寸目标器官的鲁棒性。

改进了特征融合机制,将检测到的边界概率图作为对应分割特征的注意图,而不是直接将边界特征图与分割特征图拼接。

方法

所提出的BA-Net包含共享编码器,边界解码器和分割解码器。整体结构如下图所示:

编码器从输入特征中提取特征然后利用提取的进行目标器官的边界检测,分割解码器将提取的特征作为输入。采用边界解码器生成的边界概率图作为注意力图,增强分割特征。

共享的编码器

 采用NNUnet作为BA-Net的主干网络。它包含N个编码器块,每个编码器块由两个卷积层组成,每个卷积层之后都是实例归一化和LeakyRelu激活函数。下采样操作使用跨步卷积执行,紧跟在每个编码器块之后。

边界解码器

边界解码器包含N个解码器块,对编码器提取的特征图进行上采样并逐步细化生成边界图,采用步长为2的转置卷积来提高输入特征映射的分辨率。将上采样的特征图与从相应的编码器块中提取的低级特征图连接起来,然后将其送入解码器块。每个解码器的输出特征映射f_{i}^{b}经过卷积层和SoftMax层处理。在每个比例尺度生成边界概率图p_{i}^{b}.

分割解码器

分割解码器的结构与边界解码器相似,只是在每个比例尺上增加了一个步骤来增强分割特征映射。在分割解码器的每个模块中,用相应的边界概率映射p_{i}^{b}对上采样的特征映射U(f_{i-1}^{s})进行增强用公式表示为

得到的结果为增强特征图,U()为上采样操作。在分割解码器块进一步进行处理之前,将增强的特征映射从相应的编码器块提取的特征映射连接起来。与边界解码器类似,每个分割解码器的输出特征映射f_{i}^{s}也经过卷积层和SoftMax层处理,生成分割图。

训练And推理

 采用DiceLoss和交叉熵损失的结合作为边界检测和器官分割任务的损失函数。

总结

本文提出了一种用于腹部多器官分割的BA-Net算法。该系统由用于特征提取的共享编码器、用于边界检测的边界解码器和用于目标器官分割的分割解码器组成。

在边界解码器和分割解码器的每个比例尺上,使用对应比例尺上的边界和分割掩码来监督预测概率图。利用每个译码块上的预测边界图作为注意图,增强分割特征。

这篇关于腹部多器官分割的边界感知网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/824919

相关文章

使用Python将长图片分割为若干张小图片

《使用Python将长图片分割为若干张小图片》这篇文章主要为大家详细介绍了如何使用Python将长图片分割为若干张小图片,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果1. Python需求

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

C#中字符串分割的多种方式

《C#中字符串分割的多种方式》在C#编程语言中,字符串处理是日常开发中不可或缺的一部分,字符串分割是处理文本数据时常用的操作,它允许我们将一个长字符串分解成多个子字符串,本文给大家介绍了C#中字符串分... 目录1. 使用 string.Split2. 使用正则表达式 (Regex.Split)3. 使用

基于Qt实现系统主题感知功能

《基于Qt实现系统主题感知功能》在现代桌面应用程序开发中,系统主题感知是一项重要的功能,它使得应用程序能够根据用户的系统主题设置(如深色模式或浅色模式)自动调整其外观,Qt作为一个跨平台的C++图形用... 目录【正文开始】一、使用效果二、系统主题感知助手类(SystemThemeHelper)三、实现细节

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

poj 2112 网络流+二分

题意: k台挤奶机,c头牛,每台挤奶机可以挤m头牛。 现在给出每只牛到挤奶机的距离矩阵,求最小化牛的最大路程。 解析: 最大值最小化,最小值最大化,用二分来做。 先求出两点之间的最短距离。 然后二分匹配牛到挤奶机的最大路程,匹配中的判断是在这个最大路程下,是否牛的数量达到c只。 如何求牛的数量呢,用网络流来做。 从源点到牛引一条容量为1的边,然后挤奶机到汇点引一条容量为m的边