理想不闪火
研究开放环境下的深度学习算法、生成模型推理加速和医学图像。
欢迎订阅专栏!
展开
-
AdaBoost算法清晰解释和举例
AdaBoost 是一种集成学习算法,通过组合多个弱分类器(仅比随机猜测略好的简单模型)构建强分类器。其核心思想是,重点关注分类错误的样本,逐步提升整体模型性能。原创 2025-02-20 17:30:45 · 75 阅读 · 0 评论 -
一个清晰的机器学习比较校验解释
t检验是一种常用的统计工具,帮助我们判断两个样本的均值差异是否由随机波动引起,还是确实存在显著差异。McNemar检验适用于比较两个模型在二分类任务中的预测差异,特别是用于判断两者在相同数据集上的表现差异是否显著。原创 2025-01-28 00:01:40 · 131 阅读 · 0 评论 -
ICCV 2023:探索基于生成模型的 Backbone 预训练(DreamTeacher)
我们这次要介绍的文章被接收在 ICCV 2023 上,题为:DreamTeacher: Pretraining Image Backbones with Deep Generative Models,我认为是个挺强挺有趣的自监督方面的工作。DreamTeacher 用于从预训练的生成网络向目标图像 Backbone 进行知识蒸馏,作为一种通用的预训练机制,不需要标签。这篇文章中研究了特征蒸馏,并在可能有任务特定标签的情况下进行标签蒸馏,我们会在后文详细介绍这两种类型的知识蒸馏。DDeP。原创 2023-09-06 21:30:31 · 1458 阅读 · 1 评论 -
IPMI 2023:Test Time Adaptation 的医学图像分割解决
CoTTAEcoTTADIGA对 TTA 不了解的同学可以先看上面这几篇新工作。基于深度学习的医学成像解决方案的一个主要问题是,当一个模型在不同于其训练的数据分布上进行测试时,性能下降。将源模型适应于测试时的目标数据分布是解决数据移位问题的一种有效的解决方案。以前的方法通过使用熵最小化或正则化等技术将模型适应于目标分布来解决这个问题。在这些方法中,模型仍然通过使用完整测试数据分布的无监督损失反向传播更新。原创 2023-09-06 21:28:31 · 1497 阅读 · 0 评论 -
CVPR 2023 中的领域适应:用于切片方向连续的无监督跨模态医学图像分割
我们已经介绍过 3 篇 CVPR 中的典型领域适应工作,他们三篇都是 TTA(Test-Time Adaptation)的 settings,而这次要介绍的文章是 UDA(Unsupervised domain adaptation)的 setting。CoTTAEcoTTADIGA在这篇文章中,提出了 SDC-UDA,一种简单而有效的用于连续切片方向的跨模态医学图像分割的体积型 UDA 框架,它结合了切片内和切片间自注意力图像转换、不确定性约束的伪标签优化和体积型自训练。原创 2023-09-06 21:28:10 · 1559 阅读 · 0 评论 -
CVPR 2023 中的半监督学习: FixMatch 的升级版 UniMatch
我们首先回顾下发表在 NeurIPS 2020 上的 FixMatch: Simplifying Semi-Supervised Learning with Consistency and Confidence,FixMatch 是一种更轻量的半监督分类方法。如下图所示,FixMatch 首先使用模型(带标签数据训练后的)对弱增强的未标记图像进行预测,生成伪标签。对于给定的图像,只有在模型产生高置信度的预测时,伪标签才会被保留。然后,在输入同一图像的强增强版本时,训练模型预测伪标签。原创 2023-07-28 14:56:18 · 1558 阅读 · 0 评论 -
CVPR 2023 中的领域适应: 通过自蒸馏正则化实现内存高效的 CoTTA
在上一篇文章中,我们介绍了CoTTA方法,这次介绍的是基于它的优化工作:EcoTTA,被接受在 CVPR 2023 上。上一篇文章我们提到 CoTTA 的输入是随时间轴变化的数据(比如自动驾驶中不断切换的天气条件),且是测试伴随训练任务。所以,CoTTA 通常在内存有限的边缘设备上进行,因此减少内存消耗至关重要。先前的 TTA 研究忽略了减少内存消耗的重要性。此外,上一篇文章也提到了长期适应通常会导致灾难性的遗忘和错误积累,从而阻碍在现实世界部署中应用 TTA。原创 2023-07-04 16:12:55 · 722 阅读 · 0 评论 -
CVPR 2023 中的领域适应: 一种免反向传播的 TTA 语义分割方法
Continual Test-Time 的领域适应CVPR 2023 中的领域适应: 通过自蒸馏正则化实现内存高效的 CoTTA推荐对领域适应不了解的同学先阅读前置文章。目前的 TTA 方法针对反向传播的方式可以大致划分为:之前介绍过的 CoTTA 可以属于 Fully Backward,EcoTTA 划分为 Partial Backward 中的 Meta Network 类别,这次要介绍的方法属于 Backward-Free 中的 BN-Based 和 Prototype-Based 的混合。原创 2023-07-02 10:43:52 · 710 阅读 · 0 评论 -
Continual Test-Time 的领域适应
Continual Test-Time 的领域适应(CoTTA)在 CVPR 2022 上被提出,目的是在不使用任何源数据(source domain)的情况下,将源预训练模型适应于目标域(target domain)。现有的研究主要关注于处理静态 target domain 的情况。然而,在现实世界中,机器感知系统必须在不稳定且不断变化的环境中运行,target domain 的分布会随时间不断变化。现有的方法主要基于自训练和熵正则化,但它们还是可能受到这些非稳定环境的影响。原创 2023-06-24 23:13:28 · 840 阅读 · 0 评论 -
用于语义分割的解码器 diffusion 预训练方法
当前语义分割任务存在一个特别常见的问题是收集 groundtruth 的成本和耗时很高,所以会使用预训练。例如监督分类或自监督特征提取,通常用于训练模型 backbone。基于该问题,这篇文章介绍的方法被叫做 decoder denoising pretraining (DDeP),如下图所示。与标准的去噪自编码器类似,网络被训练用于对带有噪声的输入图像进行去噪。然而,编码器是使用监督学习进行预训练并冻结的,只有解码器的参数使用去噪目标进行优化。原创 2023-05-13 15:19:05 · 1205 阅读 · 1 评论 -
MedSAM: Segment Anything in Medical Images
SAM 是一种在自然图像分割方面取得成功的模型,但在医学图像分割方面表现不佳。MedSAM 首次尝试将 SAM 的成功扩展到医学图像,并成为用于分割各种医学图像的通用工具。为了开发 MedSAM,首先需要一个大型医学图像数据集,其中包括来自 11 种不同模态的超过 20 万个 Mask。该数据集用于训练和微调 MedSAM 模型。最重要的是,提供了一种简单的微调方法,使 SAM 适应一般的医学图像分割。通过对 21 项三维分割任务和 9 项二维分割任务进行综合实验,对 MedSAM 的性能进行了评估。原创 2023-05-05 20:15:20 · 2845 阅读 · 0 评论 -
ImgX-DiffSeg:基于 DDPMs 的 3D 医学图像分割
本篇文章继续解读医学图像 diffusion 系列,之前我们分别介绍过在自监督和有监督分割中的 diffusion 应用。链接:而这次的《Importance of Aligning Training Strategy with Evaluation for Diffusion Models in 3D Multiclass Segmentation》这篇文章并不是一种新的 diffusion 应用,而是对训练和推理策略进行优化,并适应 3D 的医学图像分割任务,参考链接在文末。原创 2023-04-29 16:53:45 · 892 阅读 · 0 评论 -
MedSegDiff:基于 Diffusion Probabilistic Model 的医学图像分割
在前面的一篇文章(ICLR 2023)中,我们已经介绍过了 diffusion model 在医学图像分割上的一个应用(https://mp.weixin.qq.com/s/7g3_4hHfKCAp2WQibkbzgA),推荐对 diffusion model 不了解的同学优先阅读,其中讲了一些基本概念。上一篇文章是将 diffusion 应用到自监督学习中,而 MedSegDiff 是一个有监督的框架,现在已更新到 V2 版本, V2 版本区别于 V1 使用了 Transformer,且适用于多分类。原创 2023-04-25 17:47:07 · 2624 阅读 · 0 评论 -
基于 torch 的特征图可视化(热图)的实现
其中,example.jpg 是要可视化的图像的路径。resnet50 是使用的预训练模型,layer4[-1] 是要可视化的目标层。在 get_activation 函数中,我们定义了一个钩子(hook),以便在前向传递中保存目标层的输出。然后,我们将图像传递给模型,获取目标特征图,并计算平均特征图。最后,我们将平均特征图可视化为热图。原创 2023-04-21 10:43:43 · 1058 阅读 · 0 评论 -
TMI 2023:对比半监督学习的领域适应(跨相似解剖结构)分割
U-Net 在医学图像分割方面已经取得了最先进的表现,但是需要大量手动注释的图像来进行训练。半监督学习(SSL)方法可以减少注释的需求,但是当数据集和注释图像数量较小时,其性能仍然受到限制。利用具有相似解剖结构的现有标注数据集来辅助训练可以提高模型性能。但是,这个方法面临的挑战是由于目标结构的外观和成像模式与现有标注数据集不同,导致解剖跨域差异。原创 2023-04-09 11:18:41 · 1087 阅读 · 0 评论 -
ICLR 2023:基于 diffusion adversarial representation learning 的血管分割
目前对于血管分割任务,有两个问题:第一是数据量;第二是血管图像背景复杂。传统的监督方法需要大量的标签,无监督方法则因为血管图像一般背景复杂、低对比度、运动伪影和有许多微小的分支,分割结果达不到期望的准确率。对此,这篇论文引入了一种名为扩散对抗表示学习(DARL)的新架构。自监督的学习的“标注”通常来自于数据本身,其常规操作是通过玩各种各样的“auxiliary task”来提高学习表征(representation)的质量,从而提高下游任务的质量。原创 2023-03-25 10:19:52 · 1081 阅读 · 0 评论 -
医学图像的 AI 框架 MONAI 详细教程(一)
最近在读 CVPR 2023 上和医学图像方向相关的论文,发现其中的 Label-Free Liver Tumor Segmentation 这篇论文使用了 MONAI 这个框架。之前关注过的一些医学图像的期刊论文上,也有 MONAI 的出现,加之前的导师有过推荐,所以了解学习了下。简单检索后,发现网上关于 MONAI 的中文教程还没有,后面会有一系列的很详细的关于 MONAI 的教程,都会在 GiantPandaCV 上发布。原创 2023-03-12 16:49:18 · 5663 阅读 · 0 评论 -
SD-AANet:Self-Distillation + 注意力模型用于小样本分割任务
本文是小样本语义分割系列的第四篇解读,每一篇的方法都具有代表性且不同,同系列的文章链接也在文末给出了(分别是 CWT-for-FSS、GFS-Seg 和 CD-FSS)。很多读者在刚学习小样本时可能觉的真的只需要少量样本就可以完成全部的学习过程,这不完全正确,实际上在训练的过程中我们仍然需要大量的样本,只不过我们在测试的时候,我们可以对未曾在训练集中出现过的测试图像类只用几张甚至一张 Support 图像(或者理解为在推理过程中用到的训练图像)来达到对所谓的 unseen 类的分割。原创 2022-11-08 20:44:22 · 1930 阅读 · 0 评论 -
ECCV 2022:跨域小样本语义分割新基准(也提出 PATNet)
继医学图像处理系列之后,我们又回到了小样本语义分割主题上,之前阅读笔记的链接我也在文末整理了一下。小样本语义分割旨在学习只用几个带标签的样本来分割一个新的对象类,大多数现有方法都考虑了从与新类相同的域中采样基类的设置(假设源域和目标域相似)。然而,在许多应用中,为元学习收集足够的训练数据是不可行的。这篇论文也将小样本语义分割扩展到了一项新任务,称为跨域小样本语义分割(CD-FSS),将具有足够训练标签的域的元知识推广到低资源域,建立了 CD-FSS 任务的新基准。原创 2022-11-05 19:38:07 · 2372 阅读 · 1 评论 -
【转载】分布式训练和集合通信
分布式深度学习的通信库选择目前比较通用的是基于MPI的实现(如OpenMPI)、NVIDIA的NCCL实现,如果是在使用NVIDIA-硬件的情况下,主流的选择是NVIDIA自家的NCCL。关于NCCL、OpenMPI、Gloo的Allreduce对比,可以参考开源项目mlbench-benchmarks。该项目使用pytorch框架,在相同的GPU及软硬件环境一致的情况下,对NCCL、OpenMPI、Gloo三种通信库的Allreduce作了性能测试。原创 2022-10-28 21:21:40 · 990 阅读 · 0 评论 -
MICCAI 2022:使用自适应条形采样和双分支 Transformer 的 DA-Net
这是 MICCAI 2022 上的第三篇阅读笔记了,之前两篇也都可以在 GiantPandaCV 公众号搜索到。如下图所示,目前的视网膜血管分割方法按照输入数据划分有两类:image-level 和 patches-level,每一种方法都有自己的优势,如何将两者结合起来是一个需要去解决的问题,这也是 DA-Net 这篇文章的贡献之一。此外,这篇文章还提出了一个自适应的条状 Upsampling Block,我们会在后面展开介绍。原创 2022-10-28 19:19:07 · 1348 阅读 · 0 评论 -
损失函数 Loss 设计和实现
pytorch中自带了一些常用的损失函数,它们都是torch.nn.Module的子类。因此自定义Loss函数也需要继承该类。在__init__函数中定义所需要的超参数,在forward函数中定义loss的计算方法。forward方法就是实际定义损失函数的地方,其返回值是一个标量(Scalar),而不是张量(Tensor)和向量(Vector)。也就是说如果张量或者向量的话,需要使用相关的函数将其转化为标量,例如使用torch.sum函数进行求和处理。损失函数分为经验风险损失函数和结构风险损失函数。原创 2022-10-04 11:48:33 · 2147 阅读 · 0 评论 -
numpy 实现 dropout 层
dropout最后是需要rescale一下的,是因为在inference的时候dropout是不work的,为了得到一个确定的输出,那么在训练的阶段,就要对每个神经元的输出结果rescale一下。可以看出dropout的输出和输入是接近的,在具体的神经网络训练任务中,参数往往都是很接近于0的,dropout的思想和目的这里就不赘述了。原创 2022-10-03 12:33:36 · 568 阅读 · 0 评论 -
img2col 卷积优化讲解
img2col 是一种实现卷积操作的加速计算策略。它能将卷积操作转化为 GEMM,从而最大化地缩短卷积计算的时间。GEMM 是通用矩阵乘 (General Matrix Multiply) 的英文缩写,其实就是一般意义上的矩阵乘法,数学表达就是 C = A x B。根据上下文语境,GEMM 有时也指实现矩阵乘法的函数接口。为什么要将卷积操作转化为 GEMM 呢?因为线性代数领域已经有非常成熟的计算接口(BLAS,Fortran 语言实现)来高效地实现大型的矩阵乘法,几乎可以做到极限优化。原创 2022-09-28 15:11:33 · 1377 阅读 · 0 评论 -
Pytorch 自动求导的设计与实现
梯度下降(Gradient Descent)及其衍生算法是神经网络训练的基础,梯度下降本质上就是求解损失关于网络参数的梯度,不断计算这个梯度对网络参数进行更新。现代的神经网络框架都实现了自动求导的功能,只需要要定义好网络前向计算的逻辑,在运算时自动求导模块就会自动把梯度算好,不用自己手写求导梯度。原创 2022-09-25 16:35:33 · 673 阅读 · 0 评论 -
【MICCAI 2022】PHTrans:并行聚合全局和局部表示以进行医学图像分割
这是 MICCAI 2022 的第二篇论文阅读笔记,贴下第一篇的地址:https://mp.weixin.qq.com/s/cSRc0a2gMq3NbQ8loqudCQ。我们已知的是,在医学图像分割上,已经有了许多基于 CNN 和 Transformer 的优秀混合架构,并取得了很好的性能。然而,这些将模块化 Transformer 嵌入 CNN 的方法,还有可以挖掘的空间。原创 2022-09-25 16:04:32 · 1183 阅读 · 0 评论 -
MICCAI 2022:基于 MLP 的快速医学图像分割网络—UNeXt
其中关于分割有两个部分,Image segmentation I 在 Part IV, 而 Image segmentation II 在 Part V。计划对其中开放源代码和典型的方法注意解读,这次要分享的论文是其中的 UNeXt: MLP-based Rapid Medical Image Segmentation Network,arXiv 链接:https://arxiv.org/abs/2203.04967。原创 2022-09-18 21:08:24 · 2585 阅读 · 0 评论 -
归并排序的 cuda 加速分析
如果改为每个block多个thread的方式(multi-block, multi-thread),每个block用共享内存加速读取(前面的好几步合并需要多次读取局部的共享内存,读取次数越多,使用共享内存的加速效果越明显),下一步准备试试看优化效果…作为对比,一个CPU串行版本的归并排序,与GPU并行版本的排序对比运行时间。另外手写了一个CPU串行版本的归并排序的函数mergeSort_cpu作为对比)把数组分成多段, 把相邻两段的有序数组合并,由于有很多段,因此可以并行的方式同时合并。原创 2022-09-15 16:46:00 · 351 阅读 · 0 评论 -
CUDA 高效策略:统计直方图以及共享内存的优化加速
直方图是用来统计像素灰度值分布的一种方法,同理也可以统计RGB色素的分布。调整图像的对比度则需要直方图分布概率,才能进行灰度变换。对于CUDA来说,可以并行读取多个像素点的值,然后进行统计,但是统计过程则是串行的。这里需要使用CUDA串行指令“原子操作”。否则会好多线程同时重复读写一个内存的内容。原创 2022-09-15 16:00:33 · 369 阅读 · 0 评论 -
CVPR 2022:Generalized Few-shot Semantic Segmentation 解读
之前已经有过关于小样本语义分割的论文解读,关于如何用 Transformer 思想的分类器进行小样本分割,链接见https://mp.weixin.qq.com/s/YVg8aupmAxiu5lGTYrhpCg。本篇是发表在 CVPR 2022 上的 Generalized Few-shot Semantic Segmentation(后文简称 GFS-Seg),既一种泛化的小样本语义分割模型。在看论文的具体内容之前,我们先了解一些前置知识。原创 2022-09-11 10:55:05 · 1187 阅读 · 0 评论 -
CWT-for-FSS: 用 Transformer 思想的分类器进行小样本语义分割
文章目录1 前言2 CWT-for-FSS 整体架构3 求解方法4 实验结果分析5 代码和可视化6 总结7 参考链接1 前言之前写了几篇医学图像分割相关的论文阅读笔记,这次打算开个小样本语义分割的新坑。这篇阅读笔记中介绍的论文也是很久之前读过的,接受在 ICCV 上,思路值得借鉴。代码也已经跑过了,但是一直没来得及整理,arXiv:https://arxiv.org/pdf/2108.03032.pdf 。针对小样本语义分割问题,这篇论文提出一种更加简洁的元学习范式,即只对分类器进行原创 2022-05-21 17:41:47 · 1056 阅读 · 1 评论 -
基于GNet网络和Keras框架实战眼底图像视杯视盘分割
个人简介:李响Superb,优快云百万访问量博主,普普通通男大学生,目前在读软件工程,计算机视觉、深度学习和医学图像处理专攻,偶尔也搞迁移学习和全栈开发。博客地址:lixiang.blog.youkuaiyun.com文章目录1 前言2 视杯视盘分割任务概述3 GNet网络结构4 眼底图像视杯视盘分割代码5 结果评估可视化(ROC曲线)6 眼底图像视杯视盘分割新思路1 前言本文基于GNet架构完成了视网膜视杯视盘提取任务,基于Keras框架更简单的实现分割,网络、工具类、训练和预测的代码一目了然,环境为Goo原创 2022-05-04 17:04:40 · 1322 阅读 · 1 评论 -
TransBTS: 3D 多模态脑肿瘤分割 Transformer 阅读笔记
文章目录1 前言2 TransBTS 整体结构概述3 Network Encoder4 Network Decoder5 实验部分6 总结7 参考链接1 前言这是医学图像处理系列的第三篇文章,arXiv 链接在文末,为什么选择写下 TransBTS 这篇论文的阅读笔记?因为才有时间整理了。此外,与之前的两篇相比,它们都有各自的代表性。第一篇(https://zhuanlan.zhihu.com/p/505483978)是 2D Transformer 医学图像分割,第二篇(https原创 2022-05-04 09:51:07 · 1652 阅读 · 0 评论 -
轻量级的肝脏与肝肿瘤 2.5D 分割网络阅读笔记
文章目录1 前言2 方法概述2.1 InceptionV1-V3 and convolution conversion2.2 Residual block2.3 2.5D 网络3 RIU-Net 的整体结构4 实验和可视化5 总结1 前言最近一直在读医学图像的论文,于是我打算写一个系列的阅读笔记,语言比较精简。在上一篇阅读笔记(https://zhuanlan.zhihu.com/p/505483978)中,分析了医学图像分割的混合 Transformer 网络:UTNet,在原创 2022-04-29 09:38:25 · 1419 阅读 · 0 评论 -
UTNet:用于医学图像分割的混合 Transformer 网络阅读笔记
文章目录1 概述2 浅析 Transformer 架构2.1 重看 Self-attention Mechanism2.2 高效的 Self-attention Mechanism2.3 Relative Positional Encoding3 UTNet 的整体结构4 实验5 总结6 参考链接1 概述很久之前读了这篇接收在 MICCAI 2021 上的文章,复现调试了代码之后还没有及时整理一篇阅读笔记。由于在 MICCAI 上,这篇文章同样没有大量的实验对比工作,但是提原创 2022-04-27 10:30:20 · 1200 阅读 · 0 评论 -
CUDA、CUDA toolkit、CUDNN、NVCC关系
CUDA:为“GPU通用计算”构建的运算平台。cudnn:为深度学习计算设计的软件库。CUDA Toolkit (nvidia): CUDA完整的工具安装包,其中提供了 Nvidia 驱动程序、开发 CUDA 程序相关的开发工具包等可供安装的选项。包括 CUDA 程序的编译器、IDE、调试器等,CUDA 程序所对应的各式库文件以及它们的头文件。CUDA Toolkit (Pytorch): CUDA不完整的工具安装包,其主要包含在使用 CUDA 相关的功能时所依赖的动态链接库。不会安装驱动程序。(N原创 2022-03-31 16:38:13 · 1404 阅读 · 1 评论 -
自动混合精度(AMP)介绍与使用【Pytorch】
文章目录1 前言2 Mixed Precision Training3 torch自动混合精度(AMP)介绍与使用4 torch1.6及以上版本1 前言pytorch从1.6版本开始,已经内置了torch.cuda.amp,采用自动混合精度训练就不需要加载第三方NVIDIA的apex库。使用精度低于32位浮点的数值格式有许多好处。首先,它们需要更少的内存,从而能够训练和部署更大的神经网络。其次,它们需要较少的内存带宽,从而加快数据传输操作。第三,数学运算在降低精度方面运行得更快,特别是在具有Tenso原创 2022-03-30 14:55:25 · 3228 阅读 · 0 评论 -
DLPack构建跨框架深度学习编译器-实现张量之间的相互转换【pytorch】
文章目录1 概述2 pytorch使用torch.utils.dlpack实现DLPack与张量之间的相互转换2.1 将DLPack解码为张量。2.2 将张量转换为DLPack3 在 PyTorch 示例的底层1 概述诸如 Tensorflow、PyTorch 和 Apache MxNet 等深度学习框架为深度学习的快速原型设计和模型部署提供了强大的工具箱。不幸的是,它们的易用性通常以碎片化为代价:这仅限于单独使用每个框架。垂直整合使得开发流程适用于常见用例,但打破常规可能会非常棘手。一种支持不足的情原创 2022-03-25 11:07:40 · 621 阅读 · 0 评论 -
零基础基于U-Net网络实战眼底图像血管提取
文章目录1 前言2 血管提取任务概述3 U-Net架构简介4 眼底图像血管分割代码5 结果评估可视化(ROC曲线)6 改进U-Net网络完成眼底图像血管提取任务思路1 前言本文基于U-Net架构完成了视网膜血管的提取任务,基于Keras框架更简单的实现分割,网络、工具类、训练和预测的代码一目了然原创 2022-03-22 15:54:39 · 4872 阅读 · 0 评论 -
CVPR 2021|DS-TransUNet:Transformer医学图像分割,表现SOTA
论文标题:DS-TransUNet: Dual Swin Transformer U-Net for Medical Image Segmentation论文地址:https://arxiv.org/pdf/2106.06716.pdf文章目录1 前言 1.1 Transformer 1.2 Swin Transformer结构2 Hierarchical Feature Representation3 局部dependency4 DS-TransUNet:医学图.原创 2022-03-22 15:53:59 · 6656 阅读 · 0 评论