图像分割中的损失函数

2023-11-06

图像分割中的损失函数


前言

  在深度学习中,所有算法都依赖于最小化或最大化一个函数,称之为损失函数。
  损失函数用于衡量预测值与真实值之间的误差。训练模型时,根据计算损失函数,更新模型参数,从而逐渐减小误差。


一、交叉熵损失

   逐像素的交叉熵损失广泛应用于图像分割中,先看二分类的交叉熵损失,专门给了其一个名称:BCE Loss,用于像显著性分割这样的二值分割中,其公式:
         L = − y l o g ( P ) + ( 1 − y ) l o g ( 1 − P ) ) L=- ylog(P)+(1-y)log(1-P)) L=ylog(P)+(1y)log(1P)
其中y是一个one-hot变量,取值只为0或1;P表示预测为正类的概率。

   再来看多分类,也就是语义分割的情况
         L = − ∑ i = 1 n y ( i ) l o g ( P ( i ) ) L=-\sum_{i=1}^{n} y(i)log(P(i)) L=i=1ny(i)log(P(i))
其中n表示类别的数量,y(i)和P(i)则为样本(i)的one-hot值和预测概率。

通常,BCEloss之前采用sigmoid函数,多分类的CE采用softmax
不足之处:
(1)在像显著性目标检测这种二值分割场景(只分割前景和背景)中,当前景像素的数量远远小于背景像素的数量时,损失函数中y=0的成分就会占据主导,使得模型严重偏向背景。
(2)交叉熵损失只是像素的整体概率分布,对于图像分割任务,目标的整体结构并未考虑。

二、Dice loss

   Dice Loss最先由V-Net文章中被提出,目的是为了增强网络对于医学影像中细小结构的分割能力,解决在学习过程中损失函数陷入局部最小值,导致前景区域特征丢失的问题。
   Dice系数是一种度量集合相似度的函数,通常用于计算两个样本的相似度,取值范围在[0, 1]:
s = 2 ∣ X ∩ Y ∣ ∣ X ∣ + ∣ Y ∣ s=\frac{2\left | X\cap Y \right |}{\left | X \right |+\left | Y \right |} s=X+Y2XY

在这里插入图片描述
其中, 分子中有一个系数2是因为分母中有重复计算X和Y的原因。
对于分割任务来说,X表示的就是Ground Truth分割图像,而Y代表的就是预测的分割图像。
在这里插入图片描述
在图像分割中,DIce loss常用来解决类别不平衡的问题?(dice和交叉熵通常结合使用
   图像分割任务中,交叉熵损失是对每一个像素点进行类别预测,然后平均所有的像素点. 其本质上仍是对图片的每个像素进行平等的学习,这就导致如果图像上的多种类别存在不平衡时,模型的训练会由最主流的类别所主导. 网络更偏向于对主流类别的学习,而降低了对非主流类别的特征提取能力。
   而Dice loss 通过预测图和GT的交集除以它们的总体像素进行计算,将一个类别的所有像素作为一个整体进行考量,而且计算交集在总体中的比例,所以不会受大量主流像素的影响,能够提取更好的效果。

三、Focal loss

   focal loss是为了解决one-stage目标检测中类别不平衡的问题而提出的。类别不平衡问题是指在对一张图像进行目标检测时,需要评估10^4 至10^5个侯选位置,但是其中只有少数位置包含目标对象。这导致了两个问题:
(1)训练效率低。将样本分为positive和negative两类,由于大部分位置都是negative样本,使用交叉熵损失函数进行计算时,negative样本的贡献远大于positive样本,从而不利于整个目标函数的收敛。
(2)大部分negative样本位于背景区,只有极少的negative样本位于前景和背景的过渡区。位于背景区的negative样本分类相对容易,称为easy negative样本。easy negative样本在训练时对应的score很大,loss很小。在梯度下降法对模型参数进行更新时,easy negative样本对参数收敛作用有限。从而导致hard negative样本很难得到更新,效果不佳。

   focal loss主要是通过在交叉熵中引入参数进行调节,focal loss可以和dice loss结合使用,focal loss一般在初始化参数的时候,会让最后一层分类层每个类别服从等概分布,但是由于negative样本非常多,等概之后明显增加了negative样本在训练时的loss,导致训练初期不稳定。好的做法是让最后一层的分布符合正样本相对负样本的分布。

四、IOU损失函数

IOU损失函数又称Jaccard指数,和Dice loss类似,通过计算预测图和GT之间的重叠率来衡量的,
L = 1 − A ∩ B A ∪ B L=1-\frac{A\cap B}{A\cup B} L=1ABAB

一般将其作为辅助损失函数与其他损失函数结合使用,对整体结构和小目标分割中能起到效果

总结

未完待续…

参考文章1
参考文章2

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图像分割中的损失函数 的相关文章

  • [数据结构]--图(图的遍历,最小生成树,最短路径算法)

    前言 在这里 如果大家对图或者数据结构还不太熟悉 想找一个动态的生成过程来参考 这是一个不错的网站 知识框架 图的定义 在线性结构中 数据元素之间满足唯一的线性关系 每个数据元素 除第一个和最后一个外 只有一个直接前趋和一个直接后继 在树形
  • java入门到精通6版pdf_java从入门到精通第6章.pdf

    100 第 6 章 继承 第6 章 继 承 继承是面向对象编程的重要特征之一 顾名思义 继承就是在现有类的基础上构建新类 以满足新的要求 在继承过程中 新的类继承原来的方法和实例变量 并且能添加自己的方 法和实例变量 在本章中主要讲解的内容
  • 多个df文件之间含有重叠项的处理

    在进行数据分析时 为获取某个完整的panel数据往往需要将多个文件进行整合 而当这些文件之间存在重叠的时候 单纯的拼接难以得到好的结果 本文将以pandas重复值处理的若干函数着手 分析最好的文件重复值处理方法 首先 pandas中处理重复
  • CSS快速入门

    目录 一 概念 二 好处 三 CSS与html结合方式 1 内联样式 2 内部样式 3 外部样式 四 CSS语法 五 选择器 基础选择器 1 id选择器 2 类选择器 3 元素选择器 例子 扩展选择器 1 选择所有元素 2 并集选择器 3
  • qt 和java混合编程

    用QAndroidJniObject来做new一个对象 java Qt C File file new File QAndroidJniObject file java io File V File file new File tmp a
  • 大数据课程L2——网站流量项目的算法分析&&数据处理

    文章作者邮箱 yugongshiye sina cn 地址 广东惠州 本章节目的 了解网站流量项目的算法分析 了解网站流量项目的数据处理 一 项目的算法分析 1 概述 网站流量统计是改进网站服务的重要手段之一 通过获取用户在网站的行为 可以

随机推荐

  • [UTCTF 2020]Spectre

    题目 一段wav音频 Audacity 查看频谱图 放大即可发现flag Sonic Visualiser 上下左右拖动就找到flag了
  • 如何从数组对象中拿到指定的数据格式,数组对象数据处理

    一 原始数据 result name book4 value 3 children name 你的名字 value 3 name 言叶之庭 value 5 name book5 value 3 children name 白夜行 value
  • selenium中获取页面元素方法介绍以及定位页面元素

    1 通过浏览器驱动获取 单个元素页面元素的8种方式 通过 id获取元素 el driver find element by id id 通过 name获取元素 el driver find element by name name 通过 c
  • 六、04【Java 多线程】之并发编程

    多线程并发编程 并行和并发的概念我们之前有提到过 在回顾下 并发 多个任务在同一个 CPU 核上 按细分的时间片轮流 交替 执行 从逻辑上来看那些任务是同时执行 并行 单位时间内 多个处理器或多核处理器同时处理多个任务 是真正意义上的同时进
  • 【华为OD机试】求最多可以派出多少支团队(C++ Python Java)2023 B卷

    时间限制 C C 1秒 其他语言 2秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 题目描述 用数组代表每个人的能力 一个比赛活动要求参赛团队的最低能力值为N 每个团队可以由1人或2人组
  • 基于SpringBoot的疾病预防系统的设计与实现

    系统合集跳转 一 系统环境 运行环境 最好是java jdk 1 8 我们在这个平台上运行的 其他版本理论上也可以 IDE环境 Eclipse Myeclipse IDEA或者Spring Tool Suite都可以 tomcat环境 To
  • 一个div里有多个a标签,改变a标签的字体颜色方法

  • 抓包工具_Charles使用

    目录 1 Charles准备工作 2 Charles抓包原理 3 Charles抓包步骤 4 Charles抓包分析 5 Charles重发请求 1 Charles准备工作 Charles是一种抓包工具 和fiddler mitmproxy
  • tuts4you上lena‘s40个crackme(1)

    本来是不打算写文章了 因为懒 想以后通过录屏的形式保存一下自己学的路程 但奈何开学后一直没找到机会 在宿舍也不愿意大吼大叫的讲东西 只好再写写文章了 最近学了一些汇编语言和逆向工程 所以就想通过这40给题目来看一看成效 这篇文章是第一题 博
  • SpringMVC框架学习笔记整理-动力节点王鹤(无必详细)

    继续整理了Springmvc的学习笔记 动力节点王鹤老师讲的springmvc 分享给大家 看了这么多网上的视频 还是只有王鹤老师讲的能听明白 就喜欢讲的细的 而且老师条理很清晰 视频资源 https www bilibili com vi
  • 对MRTK中HandInteractionExamples实例的一些理解

    文章目录 前言 一 按钮 二 边界框 三 操作示例 四 滑动条 五 其它 前言 对HoloLens实例的一些浅陋的理解 大部分为官方自己解释 一 按钮 BoxCollider 按钮前板的Box Collider PressableButto
  • 欧莫,github一看就懂【纯小白】

    教程 一看就懂 Github基础教程 哔哩哔哩 bilibili 分享原因 一不小心刷到的 对小白来说真的很友好 因为我也被github上的英文吓到过 突然刷到这样简单直白的介绍 忍不住分享一波u 2 giehub免费加速 教程 手把手教你
  • 语音端点检测(Voice Activity Detection,VAD)

    本文内容均翻译自这篇博文 该博主的相关文章都比较好 感兴趣的可以自行学习 Voice Activity Detection VAD Tutorial 语音端点检测一般用于鉴别音频信号当中的语音出现 speech presence 和语音消失
  • Java PrintWriter.write()方法具有什么功能呢?

    转自 Java PrintWriter write 方法具有什么功能呢 下文讲述java中PrintWriter write 方法的功能简介说明 如下所示 PrintWriter write 方法的功能 同print方法基本一致 print
  • 模式识别(1)协方差矩阵相关和K-means聚类算法实现(含源码)

    模式识别实验一 实验一 协方差矩阵和矩阵特征值 特征向量的计算 题目简介 给定一组数据 实现该组数据的协方差矩阵的计算 并用代码实现计算一个方阵的特征值和特征向量 一 协方差部分 1 协方差的定义 协方差在概率论和统计学中用于衡量两个变量的
  • java-maven的使用

    一 加载maven项目 1 idea工具栏file open 选择项目加载进来 2 右键pom xml 选择add as maven project 3 如果在pom xml上的某个依赖一直报红且依赖本身没有问题 本pom其他的依赖也没有问
  • 面试概率题目

    概率题目 现在的面试中 大部分公司都会问道概率相关的问题 我们现在给出几道常见的概率问题 1 三角形问题 题目 给你一根铅笔 将铅笔折两次 组成三角形的概率是多大 解析 设 铅笔长度是1 折两次之后 得到三条边 对应的长度分别是x y 1
  • css3实现动画的三种方式

    css实现动画主要有3种方式 第一种是 transition实现渐变动画 第二种是 transform转变动画 第三种是 animation实现自定义动画 transition渐变动画 过渡 语法格式 transition 要过渡的属性 花
  • win10 凭据管理

    点击WIN10左下角的开始选项 选择所有程序 找到WINDOWS系统 点开找到控制面板 打开控制面板 找到里面的 凭据管理器 打开凭据管理器 找到 WINDOWS凭据 然后点击 添加WINDOWS凭据 进入凭据添加页面 添加WINDOWS凭
  • 图像分割中的损失函数

    图像分割中的损失函数 文章目录 图像分割中的损失函数 前言 一 交叉熵损失 二 Dice loss 三 Focal loss 四 IOU损失函数 总结 前言 在深度学习中 所有算法都依赖于最小化或最大化一个函数 称之为损失函数 损失函数用于