Skeleton Recall Loss 分割领域的新突破:极大的减少了资源消耗,还能提高性能

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时计算 Flink 版,5000CU*H 3个月
简介: 这篇论文则介绍了一个新的损失:Skeleton Recall Loss,我把它翻译成骨架召回损失.这个损失目前获得了最先进的整体性能,并且通过取代密集的计算**他的计算开销减少超过90% !**

精确分割在当今众多领域都是一项关键需求比如说自动驾驶汽车的训练、医学图像识别系统,以及通过卫星图像进行监测。在许多其他领域,当感兴趣的对象微小但至关重要时,例如研究血管流动、手术规划、检测建筑结构中的裂缝或优化路线规划,需要更高的精度。此前已经做了大量工作来解决这种具有挑战性的分割问题。

此前已经做了大量工作来解决这种具有挑战性的分割问题。深度学习和神经网络的进步,例如[U-Net]及其变体,极大地提高了分割精度。“那还有什么问题呢?”所有这些方法在分割微小、细长和曲线结构方面表现不佳。根据研究,这可能是损失函数的一个问题

上面是来自不同数据库的包含示例,(a)卫星图像中的道路,(b)视网膜血管,(c)混凝土裂缝,(d)面部CT扫描的下牙槽管,(e)[圆]动脉

深度学习网络使用了最先进的损失算法,比如centerline-Dice或cl- dice,但是他们的计算成本非常大,在大容量和多类分割问题,即使在现代gpu,也表现得不好。

这篇论文则介绍了一个新的损失:Skeleton Recall Loss,我把它翻译成骨架召回损失.这个损失目前获得了最先进的整体性能,并且通过取代密集的计算他的计算开销减少超过90% !

为了说明这篇论文的损失函数,我们先介绍一下目前用于分割的损失函数

分割是如何工作的?

分割是将数字图像分成更简单的区域的过程,在以前都是使用传统的图像特征技术来实现,但是U-Nets(一种卷积神经网络)架构发表彻底改变了这一点。他以快速、高度准确、适应性强、效率高而著称,并且他的变体到现在还是目前最好的深度神经网络分割框架。

该体系结构包括:

压缩路径(Encoder) -下行采样并捕获输入图像的特征

一个对称的扩展路径(Decoder) -从收缩阶段学习到的特征重建下采样图像

U-Net体系结构的一个关键特征是跳过连接,它可以改进梯度流的编码器和解码器子网络,并帮助保存空间信。

U-Nets通常使用损失函数如下:

交叉熵损失-测量预测概率和真实类别标签之间的差异,惩罚不准确的预测

Dice 系数损失-衡量预测和真实片段之间的重叠,惩罚不相似

对Dice损失的修改称为centerline-Dice,交叉熵很好理解,并且在分类任务中非常常用,所以我们这里主要介绍Dice损失

Dice损失

Dice相似性系数度量两个集合之间的相似性。在图像分割方面,它测量预测之间的重叠

上面是Dice系数的公式,其中A和B是集合,预测和真值分割中的像素,以及A∩B表示两个集合的交点。对于这个度量,值“1”表示完全重叠,值“0”表示无重叠。

为了使它作为损失函数,随着模型的改进而减小,不同版本的骰子损失被称为“软Dice损失”被定义为

软Dice损失的公式中p(i)和g(i)分别是像素i的预测概率和真值的标签,N是被分割的像素总数。为了进一步提高分割精度,后来又引入了cl-Dice

cl-Dice

Centerline-Dice(cl-Dice)是一个将传统的Dice系数损失与分割结构的骨架或中心线相结合的度量。

这里的术语“骨架 skeleton”是指代表管状结构的中心路径或连接性的一像素宽的线。由于原始的骨架化方法在数学上是不可微的,因此使用了一种称为“软骨架化”的近似骨架化方法。

这种方法是可微的(使用最小和最大池算子与ReLU迭代),这对神经网络训练至关重要。

所以这种损失被称为软cl-Dice损失。

软cl-Dice系数公式,其中T(prec)和T(sens)分别表示拓扑精度和拓扑灵敏度

T(prec)和T(sens)的计算方法如下:其中S(P)和S(L)分别是预测的和真实的分割掩码的骨架,V(P)和V(L)分别是预测的和真实的分割掩码

用于cl-Dice损失的可微分软骨架通常是锯齿状和穿孔的,导致分割不准确。

上图可以看到问题,并且cl-Dice损失的计算涉及到密集计算,这使得它不适合大型3D数据集和多类分割问题。

Skeleton Recall Loss

Skeleton Recall Loss的设计目的是在分割过程中保持细管结构的连通性,同时减少与此过程相关的计算开销。这种损失适用于任何深度学习分割网络,无论输入是2D还是3D。

上面我们已经说了导致这种计算效率损失的原因如下:

“使用骨架来保持连通性是一种有效的方法,但它不需要是可微分的。”

根据这一见解在真值上执行骨架化方法,而不是基于gpu的软骨架化。

它的工作流程如下::

1、二值化:将真值分割掩码(Y)转换为二值形式(Y_{bin}),其中前景和背景被明显标记。

2、骨架提取:使用前面的方法计算二值化掩码的骨架,用于2D和3D输入。

3、扩张:二值化后的骨架使用半径为2的菱形核进行扩张,使其成为管状。这增加了有效面积,并通过在骨架周围包含更多像素来稳定损失计算。

4、多类分配:对于多类分割问题,将管状骨架乘以原始的真值掩码 (Y),将骨架的不同部分分配到各自的类中。

伪代码如下所示。

 Require: Y are K-classed hard targets where Y_{i,j,(,k)} ∈ [0, K]

 1: Y_{bin} ← Y > 0              % Binarize to foreground and background labels

 2: Y_{skel} ← skeletonize(Y_{bin})  % Extract binarized skeleton

 3: Y_{skel} ← dilate(Y_{skel})   % Dilate to create tubed skeleton

 4: Y_{mc-skel} ← Y_{skel} × Y   % De-binarize to create multi-class tubed skeleton

 5: return Y_{mc-skel}

上述所有操作在计算上都很轻量,而且可以在数据加载时通过CPU上执行。甚至可以使用像scikit-image这样的库预先计算

在骨架化之后,使用“软”(可微分)召回损失函数来激励神经网络预测尽可能多的管状骨架部分。这就是这篇论文介绍的 骨架召回损失

其中Y(Skeleton)是管状骨架,Y^是预测的分割,C是类集,i是分割中的像素索引。下图展示了Skeleton Recall loss与之前最先进的loss的不同之处。

骨架召回损失的性能

这个新的损失在五个公共数据集上进行评估,这些数据集具有来自不同领域结构,包括二维和三维背景下的二分类和多类分割问题。

数据集如下:

1、带有二元标签的道路二维航拍道路图像

2、带有二进制标签的视网膜血管二维图像

3、混凝土结构上带有二元标签的裂缝的二维图像

4、牙槽管为目标结构的三维锥束CT图像,带有二值标记

5、脑血管圈内13种不同类型血管的3D CTA和MRA图像

作者通过与两个最先进的基线损失函数来进行对比:

cl-Dice Loss、Topo-clDice Loss

并使用了2个最先进的网络架构:

用于医学分割的nnUNet和用于自然图像的HRNet

通过改进nnUNet和HRNet上的Dice、clDice和Betti指标,Skeleton Recall Loss在多个数据集上始终优于clDice和Topo-clDice Loss,这表明它与体系结构无关。

上图是nnUNet结果

上图是HRNet结果

一些结果图片的展示

这个损失显示了改进的拓扑保存和增强的连接图像分割

资源利用率

与普通nnUNet主干上的cl-Dice Loss相比,Skeleton Recall Loss最低限度地增加了VRAM使用量(2%)和训练时间(8%)。

Skeleton Recall Loss在多类分割方面表现出色,并且优于clDice Loss, clDice Loss由于高内存使用量(注意下面显示的out - memory错误)和随着类数量的增加而增加的训练时间而变得不可行的。

可以充分的显示Skeleton Recall Loss具有内存效率,可以最大限度地减少了训练时间,无缝集成到2D和3D分割的各种架构中,并且支持多类标签,而不会产生显著的计算开销。

https://avoid.overfit.cn/post/ddf618e45066433f9aca7447773bc61f

目录
相关文章
|
6月前
|
编解码 并行计算 算法
除了NMS参数,还有哪些因素会影响YOLOv3模型的检测性能?
除了NMS参数,还有哪些因素会影响YOLOv3模型的检测性能?
|
2月前
|
测试技术 开发工具 Swift
Liger kernel训练加速,一行代码训练吞吐量提高 20%,显存使用量降低 60%
在LLM的训练/微调过程中,开发者通常会遇到一些瓶颈,包括GPU显存不够,经常遇到OOM,GPU使用率100%而且非常慢等。
Liger kernel训练加速,一行代码训练吞吐量提高 20%,显存使用量降低 60%
|
6月前
|
算法
如何调整 YOLOv3 的 NMS 参数以优化检测性能?
如何调整 YOLOv3 的 NMS 参数以优化检测性能?
|
机器学习/深度学习 资源调度 监控
深度学习基础入门篇[六]:模型调优,学习率设置(Warm Up、loss自适应衰减等),batch size调优技巧,基于方差放缩初始化方法。
深度学习基础入门篇[六]:模型调优,学习率设置(Warm Up、loss自适应衰减等),batch size调优技巧,基于方差放缩初始化方法。
|
4月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【YOLOv8改进 - 注意力机制】GAM(Global Attention Mechanism):全局注意力机制,减少信息损失并放大全局维度交互特征
YOLO目标检测专栏探讨了模型创新,如注意力机制,聚焦通道和空间信息的全局注意力模组(GAM),提升DNN性能。GAM在ResNet和MobileNet上优于最新方法。论文及PyTorch代码可在给出的链接找到。核心代码展示了GAM的构建,包含线性层、卷积和Sigmoid激活,用于生成注意力图。更多配置详情参阅相关博客文章。
【YOLOv8改进 - 注意力机制】GAM(Global Attention Mechanism):全局注意力机制,减少信息损失并放大全局维度交互特征
|
4月前
|
PyTorch 测试技术 算法框架/工具
【YOLOv8改进 - 卷积Conv】SPConv:去除特征图中的冗余,大幅减少参数数量 | 小目标
YOLO目标检测专栏探讨了模型优化,提出SPConv,一种新卷积操作,减少特征冗余,提升效率。SPConv将特征分为代表性和不确定部分,分别处理,再融合。实验显示,SPConv在速度和准确性上超越现有基准,减少FLOPs和参数。论文和PyTorch代码已公开。更多详情及实战案例见CSDN博客链接。
|
4月前
|
Python
Fama-French模型,特别是三因子模型(Fama-French Three-Factor Model)
Fama-French模型,特别是三因子模型(Fama-French Three-Factor Model)
|
4月前
|
机器学习/深度学习 计算机视觉
【YOLOv8改进 - 注意力机制】ECA(Efficient Channel Attention):高效通道注意 模块,降低参数量
YOLO目标检测专栏聚焦模型创新与实战,介绍了一种高效通道注意力模块(ECA),用于提升CNN性能。ECA仅用少量参数实现显著性能增益,避免了维度缩减,通过1D卷积进行局部跨通道交互。代码实现展示了一个ECA层的结构,该层在多种任务中展现优秀泛化能力,同时保持低模型复杂性。论文和代码链接分别指向arXiv与GitHub。更多详情可查阅CSDN博主shangyanaf的相关文章。
|
4月前
|
机器学习/深度学习 数据采集 监控
算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、Loss Function、Bad Gradient
**神经网络与AI学习概览** - 探讨神经网络设计,包括MLP、RNN、CNN,激活函数如ReLU,以及隐藏层设计,强调网络结构与任务匹配。 - 参数初始化与优化涉及Xavier/He初始化,权重和偏置初始化,优化算法如SGD、Adam,针对不同场景选择。 - 学习率调整与正则化,如动态学习率、L1/L2正则化、早停法和Dropout,以改善训练和泛化。
44 0
算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、Loss Function、Bad Gradient
|
4月前
|
机器学习/深度学习 索引 Python
。这不仅可以减少过拟合的风险,还可以提高模型的准确性、降低计算成本,并帮助理解数据背后的真正含义。`sklearn.feature_selection`模块提供了多种特征选择方法,其中`SelectKBest`是一个元变换器,可以与任何评分函数一起使用来选择数据集中K个最好的特征。
。这不仅可以减少过拟合的风险,还可以提高模型的准确性、降低计算成本,并帮助理解数据背后的真正含义。`sklearn.feature_selection`模块提供了多种特征选择方法,其中`SelectKBest`是一个元变换器,可以与任何评分函数一起使用来选择数据集中K个最好的特征。