深度学习用于疾病诊断-第一课第三周5-6节-数据增强以及dice损失函数

本文主要是介绍深度学习用于疾病诊断-第一课第三周5-6节-数据增强以及dice损失函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

既然我们已经讨论了分割体系结构,那么让我们来讨论一种可以应用于这种模型训练的技术,即数据扩充(数据增强 data augumentation)。

我们在前面学过,我们可以对输入胸部X光片的变换,这样每个例子的分类标签都是一样的。

现在让我们看看如何将相同的原则应用于分割,但有几个关键的区别。

分割过程中数据扩充的一个关键区别是我们把图像旋转了,同时标签也得跟着转,保证对齐。

所以当我们将输入图像旋转90度以产生变换后的输入。我们还需要将标签旋转90度以获得变换后的标签。

第二个区别是,我们现在有了三维体积,而不是二维图像。所以这些变换必须应用于整个三维体。

有了这个,我们几乎拥有了训练我们的脑肿瘤分割模型所需的所有部件。

最后我们要看的是损失函数。

让我们举一个非常简单的例子。实际上,我们会有一个更高分辨率的图像,我们会看到一个三维的体积。

但是我们这里简单的二维例子可以让我们快速的理解。

这里P表示分割模型在9个像素上的输出。在每个位置,我们都有肿瘤的预测概率。

G指定每个像素位置上ground truth(gt)。9个像素中有3个是肿瘤,表示为1,其余6个是正常脑组织,表示为0。

表格的每一行是一个单元位置,以及它们对应的预测值和gt。

例如,这里的i4指定概率输出为0.8,gt为0。在这个表中表示p和g将使我们更清楚地理解损失函数。

我们将使用 dice损失 来优化分割模型。dice损失是分割模型中常用的损失函数。

它优点是在不平衡数据的存在下工作良好。在我们的脑肿瘤分割任务中,这一点尤其重要,因为大脑中很小的一部分会成为肿瘤区域。

dice损失 将测量P和G之间的误差。我们希望分子很大,当gi等于1时,我们希望Pi接近1。

我们也希望分母较小, 所以当gi等于0时,我们希望Pi接近0,否则这个项会很大,分母也会很大。

现在,我们取1减去这个分数,这样重叠区域越小,损失越大,相反,重叠区域越大,损失越小。

为了计算这个例子中的损失,我们将P和G元素相乘得到pigi。例如,0.9乘以1等于0.9。

为了计算分母,我们需要求pi平方和 和 gi的平方和。类似地,我们可以通过将p列平方得到pi的平方和g列得到gi的平方来计算这些。

我们可以将这些值代入这个特殊例子的dice损失中,结果大约是0.2。

下一步我们将研究分割模型的评估。

文章持续更新,可以关注微信公众号【医学图像人工智能实战营】获取最新动态,一个关注于医学图像处理领域前沿科技的公众号。坚持已实践为主,手把手带你做项目,打比赛,写论文。凡原创文章皆提供理论讲解,实验代码,实验数据。只有实践才能成长的更快,关注我们,一起学习进步~

我是Tina, 我们下篇博客见~

白天工作晚上写文,呕心沥血

觉得写的不错的话最后,求点赞,评论,收藏。或者一键三连
在这里插入图片描述

这篇关于深度学习用于疾病诊断-第一课第三周5-6节-数据增强以及dice损失函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

python中的高阶函数示例详解

《python中的高阶函数示例详解》在Python中,高阶函数是指接受函数作为参数或返回函数作为结果的函数,下面:本文主要介绍python中高阶函数的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录1.定义2.map函数3.filter函数4.reduce函数5.sorted函数6.自定义高阶函数

Python中的sort方法、sorted函数与lambda表达式及用法详解

《Python中的sort方法、sorted函数与lambda表达式及用法详解》文章对比了Python中list.sort()与sorted()函数的区别,指出sort()原地排序返回None,sor... 目录1. sort()方法1.1 sort()方法1.2 基本语法和参数A. reverse参数B.

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda