【医学图像】图像分割系列.3 (uncertainty)
介绍几篇使用不确定性引导的医学图像分割论文:UA-MT(MICCAI2019),SSL4MIS(MICCAI2021),UG-MCL(AIIM2022).
Uncertainty-aware Self-ensembling Model for Semi-supervised 3D Left Atrium Segmentation, MICCAI2019
解读:学习笔记:Uncertainty-Aware Mean Teacher(UA-MT) - 知乎 (zhihu.com)
半监督3D医学图像分割(二):UA-MT_uncertainty map_宁远x的博客-CSDN博客
论文:https://arxiv.org/abs31907.07034
代码:https://github.com/yulequan/UA-MT
医学图像的分割标签需要专业医师标注,获取代价昂贵,而无标签的数据有很多。半监督学习则是将少量有标注的数据和大量无标注的数据直接输入到网络中,构建一致性损失或者多任务学习,达到比单独用有标注数据集更好的结果。本文提出了一种新的基于不确定性的半监督学习框架(UA-MT),通过额外利用未标记的数据从3D MR图像中分割左心房。和Mean Teacher模型一样,该方法鼓励分割预测在相同输入的不同扰动下保持一致。具体地说,本文建立了一个教师模型和一个学生模型,学生模型通过最小化标注数据上的分割监督损失和所有输入数据上的与教师模型预测输出的一致性损失进行优化。
但未标注的输入中没有提供ground truth,教师模型中的预测目标可能不可靠且有噪声。于是,论文设计了(UA-MT)框架,学生模型通过利用教师模型的不确定性信息,逐渐从有意义和可靠的目标中学习。除了生成目标输出,教师模型还通过Monte Carlo Dropout 估计每个目标预测的不确定性。在估计不确定性的指导下,计算一致性损失时过滤掉不可靠的预测,只保留可靠的预测(低不确定性)。因此,学生模型得到了优化,得到了更可靠的监督,并反过来鼓励教师模型生成更高质量的目标。
简单理解为,本文在Mean-Teacher的基础上,提出不确定性自感知模型(Uncertainty-Aware Self-ensembling Model),将图像加上不同的随机噪声多次输入教师网络中,对输出计算平均概率和不确定度,设计阈值过滤不确定的区域,得到更可靠的预测结果,然后再去指导学生网络。
UA-MT网络结构:不确定性自感知模型(Uncertainty-Aware Self-ensembling Model)

训练过程,教师模型在预测目标的同时评估了每个目标的不确定性。然后利用一致性损失优化学生模型,在不确定度的指导下,更关注不确定度低的区域。
EMA:指数滑动平均 exponential moving average
教师的模型参数不参与反向传播,学生进行有监督学习。
将学生的参数通过滑动平均上传给教师,目的是在迭代次数少时,学生模型不可信,则大多数参数从自己的前一个模型中学习。
Student model: 负责学习
通过最小化分割loss(labeled data)和一致性loss(teacher模型在所有的数据上的输出),通过一致性损失也能给teacher模型一个好的回馈,让他产出高质量的targets。
通过UAMT,只学有用的,可信度高的部分。
Teacher model:在所有数据上预测targets,同时对结果不确定度估计。
和student的输出算一致性损失函数,使得学生的输出和老师一致。teacher的效果只受到一致性损失约束。但是不一定可信且noisy,所以引出需要对uncertainty估计。
估计方法:Monte Carlo sampling
在随机dropout的条件下,T次随机前向传播,能得到T个不同的预测结果,取平均。采用预测熵(predictive entropy)作为估计不确定度的衡量标准,通过阈值过滤不确定的像素。
(医学图像分割里面大部分用uncertainty都是用的这种T次传播的方式,获取灵活阈值。)
有两种Uncertainty:Aleatoric uncertainty(随机不确定性,也称数据不确定性)和Epistemic uncertainty(认知不确定性,也称模型不确定性)。UA-MT中使用的Monte Carlo Dropout属于Epistemic uncertainty。
实验:
Efficient Semi-Supervised Gross Target Volume of Nasopharyngeal Carcinoma Segmentation via Uncertainty Rectified Pyramid Consistency, MICCAI2021
解读:【半监督分割】基于不确定性校正金字塔一致性的有效半监督鼻咽癌粗目标分割 - 知乎 (zhihu.com)
半监督3D医学图像分割(三):URPC_宁远x的博客-CSDN博客
Semi-supervise d me dical image segmentation via uncertainty rectified pyramid consistency (译文) - 知乎 (zhihu.com)
论文:https://arxiv.org/abs/2012.07042
代码:https://github.com/HiLab-git/SSL4MIS
尽管卷积神经网络(CNN)在许多医学图像分割任务中取得了令人满意的性能,但它们依赖于大量的标记图像进行训练,这需要花费大量的时间来获取。半监督学习已显示出通过从大量未标记图像和有限的标记样本中学习来缓解这一挑战的潜力。这项工作提出了一种用于半监督医学图像分割的简单而有效的一致性正则化方法,称为不确定性校正金字塔一致性(URPC)。选择了一个金字塔预测网络,它可以在不同的尺度上获得一组分割预测。对于半监督学习,URPC通过最小化每个金字塔预测与其平均值之间的差异,从未标记数据中学习。提出了多尺度不确定性校正,以促进金字塔一致性正则化,其中校正试图缓和异常像素的一致性损失,这些异常像素可能具有与平均值显著不同的预测,可能是由于上采样误差或缺乏足够的标记数据。
PPNet框架:

PPNet。在骨干网络的编码器上增加了一个金字塔预测结构。PPNet通过直接最小化监督分割损失来从标记数据中学习。此外,通过金字塔预测之间的多尺度一致性来处理未标记数据。并通过不同尺度之间的差异来进行uncertainty estimation。利用这种不确定性来校正金字塔的一致性。
用于半监督的金字塔预测网络:在解码器的不同分辨率级别添加辅助分割头,以产生不同尺度的预测。
- p’是解码器不同层的输出,不同特征的分辨率和通道数是不一样的;
- g由上采样模块、 1x1x1的卷积层和softmax层组成;
- p是概率图(C x H x W x D),此时分辨率和通道数都相同。
有标签数据的损失为:
对于未标记数据,通过鼓励多尺度预测相似来引入一致性正则化。具体而言,设计一个金字塔一致性损失,以最小化不同尺度预测之间的差异(即方差)。首先,对这些预测结果求平均:
金字塔一致性损失定义为:
Ps是不同尺度的预测结果,Pc是均值,鼓励在每个尺度的预测和平均预测之间最小化 L2距离。
校正金字塔一致性的不确定性:U-Net网络中,分辨率越低的特征图,通道数越多,语义特征越高级,捕获的低频信息越多。反之,分辨率越高的特征,包含的高频信息越多。由于不同特征的频率信息不同,直接上采样后计算一致性可能存在问题,例如精细细节的丢失或模型崩溃。与UA-MT不同,本文只需要一次前向传播,能够高效的计算不确定度,用的是KL散度计算预测结果和平均预测结果之间的差异。
- C是分割类别,
是ps的第j个通道,
是pc的第j个通道;
- Ds是ps和pc之间的KL散度,用来表示不确定度,形状是 C x H x W x D;
- pc可以认为是多尺度预测结果的中心,Ds越大代表离中心越远,不确定性越高。
不确定性修正: 使用估计的不确定性自动选择可靠的体素进行损失计算。修正后的金字塔一致性损失公式为:
和
分别表示ps和pc在体素v处的概率向量;
- 上式第一项是修正后的金字塔一致性损失,第二项有点像正则化,用来降低不确定性;
和
是当前体素的权重和不确定度,根据公式,不确定度越高的区域,分配的权重越低。
整体损失:URPC在有标注图像上的分割损失和无标注图像上的一致性损失。
- Lsup和Lunsup对应有监督损失和无监督损失;
- λ是无监督损失的权重,在训练过程中逐渐增加,防止网络训练前期被无意义的目标影响。
实验:
Uncertainty-Guided Mutual Consistency Learning for Semi-Supervised Medical Image Segmentation, AIIM2022
解读:论文解读《Uncertainty-Guided Mutual Consistency Learning for Semi-Supervised Medical Image Segmentation》_渔歌畅晚的博客-CSDN博客
AIIM 2022 | 半监督医学图像分割-基于不确定性的共一致性学习模型 - 知乎 (zhihu.com)
论文:https://arxiv.org/abs/2112.02508
代码:https://github.com/YichiZhang98/UG-MCL
半监督学习着眼于利用少量的带标注的图像数据,并结合获取成本较低的无标注图像数据进行学习,从而达到趋近于使用标注的全监督学习的分割性能。本文提出了一种新的基于不确定性的共一致性学习模型,基于包含两个输出分支生成分割概率图和距离变换图的双任务网络,通过对两个任务分支的输出分别进行集成来进行任务内一致性约束并通过两个任务间的跨任务一致性学习利用图像的几何形状信息。此外,通过利用模型不确定性来对一致性学习进行引导,筛选出分割模型置信度更高的部分进行一致性学习。
基于不确定性的共一致性学习模型:UG-MCL
本文所提出的基于不确定性的共一致性学习模型结构,所使用分割的分割框架网络、包含图像分割任务与距离回归任务这两个任务所对应的输出分支,两个分支的最后一层网络包含着不同的输出层,来分别利用网络编码解码所提取到的特征图来分别生成对应的分割预测图和距离变换图。基于Mean Teacher模型,利用EMA的方式来将训练过程不同时期的Student网络的参数集成至Teacher网络中,并分别对每个任务在Teacher网络和Student网络对应的输出之间进行一致性的计算与学习。

首先,对于有标注的数据,Student模型通过监督学习损失函数来更新参数,实现网络的训练。将监督损失函数添加到两个输出任务的分支来优化网络,通过标注的真值来优化分割任务分支,并通过标注转换的距离变换图真值来优化回归任务的分支。
半监督学习部分,首先利用自集成模型来构建任务内一致性。网络包含结构相同的Student模型与Teacher模型,其中Student模型通过利用监督损失函数来随着训练逐步进行优化,而Teacher模型则通过EMA来集成训练过程中各个阶段的Student模型。对于Teacher模型与Student模型间一致性的学习,同时考虑了分割任务与回归任务,对两个任务间的输出一致性均进行了约束。并通过MC Dropout来实现对于网络分割结果不确定性的衡量,并通过在半监督学习过程中引入不确定性,来实现对于一致性学习过程的引导。
由于不同任务的输出可以引导模型从不同的任务视角学习到分割任务不同的表征,因此通过将不同任务的输出转换为对应的分割掩膜,并通过约束两个分支结果间保持一致,从而实现任务间一致性约束的实现。
综上,模型通过优化监督学习损失函数,任务内一致性损失函数和任务间一致性损失函数来进行半监督学习。
双任务结构:

图像分割可看作一个逐像素分类的任务,即将图像中每一个像素分类为目标或者背景,其输出值为该像素对应不同类别的概率值。近年来,一些工作将距离变换图引入分割任务中,从而利用图像中的几何距离信息来提升分割的性能。具体而言,相较于逐像素分类的任务得到的概率图,我们可以将生成距离变换图看作一个回归的任务,所得到的输出中每一个像素的具体值代表着该像素点与目标区域边界之间的距离.
距离变换图对所分割目标物体内部区域的距离取负,而对分割目标物体外部区域的距离取正,其绝对值的大小则代表了该像素点与分割目标边界的像素之间的最近距离。因此,相较于分割输出概率图,距离变换图中的像素值的大小可以表示出该点与物体边界的距离信息,从而表证所分割物体的形状信息。而最终所得的输出的距离变换图可以通过转换成传统的分割任务输出。因此,通过让网络回归生成距离变换图,并将所得输出转化为分割掩模,我们可以在常规的直接生成分割概率图进行分割这一任务之外,将距离变换图作为额外的一个任务来进行图像的分割,从而通过这一任务引入模型对于所分割物体的形状距离信息的学习。
论文算法:
实验:
相关文章:

【医学图像】图像分割系列.3 (uncertainty)
介绍几篇使用不确定性引导的医学图像分割论文:UA-MT(MICCAI2019),SSL4MIS(MICCAI2021),UG-MCL(AIIM2022). Uncertainty-aware Self-ensembling Model for Semi-supervise…...
Java有线程安全的set吗?
在Java中,有线程安全的Set实现。一个常用的线程安全的Set实现是ConcurrentSkipListSet。ConcurrentSkipListSet是一个有序的集合,基于跳表(SkipList)的数据结构实现。它提供了线程安全的操作,并且具有较好的性能。 接下来笔者用一段简单的Jav…...

《HelloGitHub》第 86 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 …...

LDGRB-01 3BSE013177R1 将数字输入和继电器输出结合
LDGRB-01 3BSE013177R1包的一部分是全面的通信选项,包括Modbus主/从或CS31,这种产品很少提供。128kB的用户内存和0.1秒/指令的程序处理时间只是AC500-eCo令人印象深刻的性能的两个例子。除了与现有AC500系列的互操作性,AC500-eCo系统还使用基…...

手动计算校正年龄、性别后的标准化死亡率 (SMR)
分析队列人群有无死亡人数超额,通常应用标准人群死亡率来校正,即刻观察到中的实际死亡数(D)与定一个标准的死亡人数(E),D与E之比称为死亡比(standarized Mortality ratio,…...

Java组合模式:构建多层次公司组织架构
在现实生活中,常常会遇到用树形结构组织的一些场景,比如国家省市,学校班级,文件目录,分级导航菜单,以及典型的公司组织架构,整个层次结构自顶向下呈现一颗倒置的树。这种树形结构在面向对象的世…...

Langchain-ChatGLM:基于本地知识库问答
文章目录 ChatGLM与Langchain简介ChatGLM-6B简介ChatGLM-6B是什么ChatGLM-6B具备的能力ChatGLM-6B具备的应用 Langchain简介Langchain是什么Langchain的核心模块Langchain的应用场景 ChatGLM与Langchain项目介绍知识库问答实现步骤ChatGLM与Langchain项目特点 项目主体结构项目…...
设计模式十 适配器模式
适配器模式 适配器模式是一种结构型设计模式。作用:当接口无法和类匹配到一起工作时,通过适配器将接口变换成可以和类匹配到一起的接口。(注:适配器模式主要解决接口兼容性问题) 适配器的优点与缺点: 优…...

1.6 初探JdbcTemplate操作
一、JdbcTemplate案例演示 1、创建数据库与表 (1)创建数据库 执行命令:CREATE DATABASE simonshop DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 或者利用菜单方式创建数据库 - simonshop 打开数据库simonshop &#x…...

为什么要用线程池?
线程池是一种管理和复用线程资源的机制,它由一个线程池管理器和一组工作线程组成。线程池管理器负责创建和销毁线程池,以及管理线程池中的工作线程。工作线程则负责执行具体的任务。 线程池的主要作用是管理和复用线程资源,避免了线程的频繁…...

c语言的预处理和编译
预处理 文件包含 当预处理器发现#include指令时,会查看后面的文件名并把文件的内容包含到当前文件中 两种写法 尖括号:引用的是编译器的库路径里面的头文件。 双引号:引用的是程序目录中相对路径中的头文件,如果找不到再去上面…...

网络安全必学 SQL 注入
1.1 .Sql 注入攻击原理 SQL 注入漏洞可以说是在企业运营中会遇到的最具破坏性的漏洞之一,它也是目前被利用得最多的漏洞。要学会如何防御 SQL 注入,首先我们要学习它的原理。 针对 SQL 注入的攻击行为可描述为通过在用户可控参数中注入 SQL 语法&#x…...
Docker基础知识详解
✅作者简介:热爱Java后端开发的一名学习者,大家可以跟我一起讨论各种问题喔。 🍎个人主页:Hhzzy99 🍊个人信条:坚持就是胜利! 💞当前专栏:文章 🥭本文内容&am…...

腾讯、阿里入选首批“双柜台证券”,港股市场迎盛夏升温?
6月5日,香港交易所发布公告,将于6月19日在香港证券市场推出“港币-人民币双柜台模式”,当日确定有21只证券指定为双柜台证券。同时,港交所还表示,在双柜台模式推出前,更多证券或会被接纳并加入双…...
CentOS7 使用Docker 安装MySQL
CentOS7 使用Docker 安装MySQL Docker的相关知识本篇不会再概述,有疑惑的同学请自行查找相关知识。本篇只是介绍如何在CentOS7下使用Docker安装相应的镜像。 可登陆Docker官网 https://docs.docker.com 之后可以跟着官方的步骤进行安装。 clipboard.png 具体安装过…...
注解和反射复习
注解 注解:给程序和人看的,被程序读取,jdk5.0引用 内置注解 override:修饰方法,方法声明和重写父类方法, Deprecated:修饰,不推荐使用 suppressWarnings用来抑制编译时的警告,必须添加一个或多个参数s…...
RocketMQ的demo代码
下面是一个使用Java实现的RocketMQ示例代码,用于发送和消费消息: 首先,您需要下载并安装RocketMQ,并启动NameServer和Broker。 接下来,您可以使用以下示例代码来发送和消费消息: Producer.java文件&…...
C++ 连接、操作postgreSQL(基于libpq库)
C++ 连接postgreSQL(基于libpq库) 1.环境2.数据库操作2.1. c++ 连接数据库2.2. c++ 删除数据库属性表内容2.3. c++ 插入数据库属性表内容2.4 c++ 关闭数据库1.环境 使用libpq库来链接postgresql数据库,主要用到的头文件是这个: #include "libpq-fe.h"2.数据库操…...
Node.js技术简介及其在Web开发中的应用
Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,使得JavaScript能够在服务器端运行。Node.js采用事件驱动、非阻塞I/O模型,能够处理大量并发请求,非常适合处理I/O密集型的应用程序。本文将介绍Node.js的特点、优势以及在Web开发中的应…...
时间序列分析:原理与MATLAB实现
2023年9月数学建模国赛期间提供ABCDE题思路加Matlab代码,专栏链接(赛前一个月恢复源码199,欢迎大家订阅):http://t.csdn.cn/Um9Zd 目录 1. 时间序列分析简介 2. 自回归模型(AR) 2.1. 参数估计 2.2. MATLAB实现...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...

云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...

算术操作符与类型转换:从基础到精通
目录 前言:从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符:、-、*、/、% 赋值操作符:和复合赋值 单⽬操作符:、--、、- 前言:从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...

CSS3相关知识点
CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...

2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版
1.题目描述 2.思路 当前的元素可以重复使用。 (1)确定回溯算法函数的参数和返回值(一般是void类型) (2)因为是用递归实现的,所以我们要确定终止条件 (3)单层搜索逻辑 二…...