【论文精读】Pairwise learning for medical image segmentation
Published in: Medical Image Analysis 2020
论文:https://www.sciencedirect.com/science/article/abs/pii/S1361841520302401
代码:https://github.com/renzhenwang/pairwise_segmentation
目录
Published in: Medical Image Analysis 2020
摘要
一、主要亮点
二、问题提出
三、网络结构
1. CFCN
2.
四、实验部分
1. 实验表格
2.ASSD损失函数
总结
完整网络框架代码
摘要
本文提出了一种共轭完全卷积网络conjugate fully convolutional network (CFCN),其中输入成对样本来捕获丰富的上下文表示,并通过融合模块相互引导。为了避免由少量训练样本引入的类内异质性和边界模糊带来的过拟合问题,我们建议明确利用标签空间的先验信息,称为代理监督。我们进一步将CFCN扩展为紧耦共轭全卷积网络compact conjugate fully convolutional network(),与CFCN相比,它只需要一个头部来拟合代理监督,而不需要额外的两个解码器分支来拟合输入对的地面真值。
先了解一下孪生神经网络(Siamese network)
度量学习:metric learning 是通过特征变换得到特征子空间,通过使用度量学习,让类似的目标距离更近(PULL),不同的目标距离更远(push),也就是说,度量学习需要得到目标的某些核心特征(特点),比如区分两个人,2只眼睛1个鼻子-这是共性,柳叶弯眉樱桃口-这是特点。
一、主要亮点
- 输入的是成对切片,训练阶段,将一个切片与不同的患者内/患者间切片进行配对,每个像素的标签由其自身和配对切片中的另一个像素(位于同一位置)确定。
- 提出共轭完全卷积网络,在三个支路上做监督学习,解决类内异质性和边界模糊的问题。
二、问题提出
针对医学图像分割中训练数据有限、类内异构和边界模糊的问题
三、网络结构
1. CFCN
[MICCAI2019]Pairwise Semantic Segmentation via Conjugate Fully Convolutional Network
本文主要参考上述文献延伸得到的,网络框架如下
2.
四、实验部分
1. 实验表格
2.ASSD损失函数
Average symmetric surface distance博客参考
Metric评价指标-图像分割之平均表面距离(Mean surface distance )
总结
本文提出了一种新的基于有限训练样本的医学图像分割框架。特别地,专注于解决由类内异质性和边界模糊引起的具有挑战性的问题。扩展前期工作,从两个方面改进了框架:首先,将CFCN扩展为一个一般的双学习框架,其中代理监督作为网络的全局约束,以适应标签空间的固有先验知识。除了在LiTS数据集上的二值分割外,进一步将CFCN扩展到多类别分割,用于基准数据集CHAOS上的多器官分割,结果表明,我们的CFCN可以在所有比较方法中取得最先进的结果。
其次,将CFCN扩展为一个紧凑的架构C2FCN,它可以在测试阶段用可以忽略不计的附加参数和计算开销来改进任何现成的分割网络。具体来说,采用DeepLabv3+作为基线,得到的C2FCN在LiTS数据集上取得了较好的结果(见表1),在Sub-CHAOS数据集上取得了优于CFCN的结果。然而,在训练过程中,C2FCN的参数数量和计算开销都大大低于CFCN。更重要的是,本文提出的C2FCN在训练阶段仅用一个头部学习代理监督中隐含的逻辑关系,在测试阶段通过学习的逻辑关系推断分割概率。与CFCN相比,C2FCN中不需要两个解码器来显式拟合输入对的ground truth,说明通过深度模型学习一般关系是可行的和有潜力的。
值得一提的是,本文采用了提出的两两分割框架来解决类内异质性和边界模糊所带来的挑战。然而,通过明确地设计函数,可以利用更多的先验信息。未来的另一个研究方向是将所提出的CFCN和C2FCN应用于更多的分割场景,特别是管状结构的自动分割,如血管或小肠。通常在三维空间中折叠,且形状先验很难通过患者内相邻切片进行建模。此外,将方法扩展到三维模型将是作者未来的研究方向。
综上所述,本文提出了一种新的针对有限训练样本的医学图像分割框架。为了解决医学影像中类内异质性和边界模糊的问题,提出了一种代理监督,将标签空间中的先验信息显式编码,并在训练阶段将其作为网络的全局约束。特别是,我们提出了一种新的分割通过C2FCN范式,在网络旨在学习输入对之间的逻辑关系,而不是直接适合地面真理传统FCNs一样的目标,和分割测试样本的概率是推断的逻辑关系。实验结果表明,在训练数据量有限的情况下,所提出的两两分割方法能够显著提高分割精度。
完整网络框架代码
# -*- coding: utf-8 -*-import torch
import torch.nn as nn
import torch.nn.functional as F
from models.sync_batchnorm.batchnorm import SynchronizedBatchNorm2d
from models.aspp import build_aspp
from models.decoder import build_decoder
from models.backbone import build_backbone
from models.fusion import build_fusion
from models.attention_fusion import build_attention_fusionclass PairwiseDeepLab(nn.Module):def __init__(self, backbone='resnet18', in_channels=3, output_stride=16, num_classes=1, aux_classes=3, sync_bn=True, freeze_bn=False, pretrained=False, fusion_type='fusion', is_concat=False, **kwargs):super(PairwiseDeepLab, self).__init__()if backbone == 'drn':output_stride = 8if sync_bn == True:BatchNorm = SynchronizedBatchNorm2delse:BatchNorm = nn.BatchNorm2dself.backbone = build_backbone(backbone, in_channels, output_stride, BatchNorm, pretrained)## branch1self.aspp = build_aspp(backbone, output_stride, BatchNorm)self.decoder = build_decoder(num_classes, backbone, BatchNorm)## branch2# self.br2_aspp = build_aspp(backbone, output_stride, BatchNorm)# self.br2_decoder = build_decoder(num_classes, backbone, BatchNorm)## fusionself.fusion_type = fusion_typeif self.fusion_type == 'attention_fusion':print('fusion_type is attention_fusion')self.fusion = build_attention_fusion(aux_classes, backbone, BatchNorm, is_concat=is_concat)elif self.fusion_type == 'fusion':print('init fusion_type')self.fusion = build_fusion(aux_classes, backbone, BatchNorm, is_concat=is_concat)else:raise NotImplementedErrorif freeze_bn:self.freeze_bn()def forward(self, x1, x2):## branch1br1_x, low_level_feat1 = self.backbone(x1)# print(br1_x.shape, low_level_feat1.shape)br1_x = self.aspp(br1_x)br1_out = self.decoder(br1_x, low_level_feat1)br1_out = F.interpolate(br1_out, size=x1.size()[2:], mode='bilinear', align_corners=True)# br1_out = br1_out.permute(0, 2, 3, 1).contiguous()## branch2br2_x, low_level_feat2 = self.backbone(x2)br2_x = self.aspp(br2_x)br2_out = self.decoder(br2_x, low_level_feat2)br2_out = F.interpolate(br2_out, size=x2.size()[2:], mode='bilinear', align_corners=True)# br2_out = br2_out.permute(0, 2, 3, 1).contiguous()## fusionfusion_x = self.fusion(br1_x, low_level_feat1, br2_x, low_level_feat2)fusion_x = F.interpolate(fusion_x, size=x2.size()[2:], mode='bilinear', align_corners=True)# fusion_x = fusion_x.permute(0, 2, 3, 1).contiguous()return br1_out, br2_out, fusion_xdef freeze_bn(self):for m in self.modules():if isinstance(m, SynchronizedBatchNorm2d):m.eval()elif isinstance(m, nn.BatchNorm2d):m.eval()def get_1x_lr_params(self):modules = [self.backbone]for i in range(len(modules)):for m in modules[i].named_modules():if isinstance(m[1], nn.Conv2d) or isinstance(m[1], SynchronizedBatchNorm2d) \or isinstance(m[1], nn.BatchNorm2d):for p in m[1].parameters():if p.requires_grad:yield pdef get_10x_lr_params(self):modules = [self.aspp, self.decoder, self.fusion]for i in range(len(modules)):for m in modules[i].named_modules():if isinstance(m[1], nn.Conv2d) or isinstance(m[1], SynchronizedBatchNorm2d) \or isinstance(m[1], nn.BatchNorm2d):for p in m[1].parameters():if p.requires_grad:yield pimport time
start = time.time()
if __name__ == "__main__":model = PairwiseDeepLab(backbone='resnet18', output_stride=16, in_channels=5, pretrained=False, fusion_type='attention_fusion')model.eval()input = torch.rand(1, 5, 256, 256)output = model(input, input[:])print(output[0].size(), output[1].size(), output[2].size())print("Total paramerters: {}".format(sum(x.numel() for x in model.parameters())))
end = time.time()
print(end-start)
【论文精读】Pairwise learning for medical image segmentation相关推荐
- [深度学习论文笔记]Pairwise Learning for Medical Image Segmentation
[深度学习论文笔记]Pairwise Learning for Medical Image Segmentation 医学图像分割的成对学习 Published: October 2020 Publi ...
- Learning Calibrated Medical Image Segmentation via Multi-rater Agreement Modeling
Learning Calibrated Medical Image Segmentation via Multi-rater Agreement Modeling 摘要 1. Introduction ...
- 笔记:Learning Calibrated Medical Image Segmentation via Multi-rater Agreement Modeling
Learning Calibrated Medical Image Segmentation via Multi-rater Agreement Modeling(通过多评分者协议建模学习校正医学图像 ...
- 【论文精读】ISBI 2022 - Retinal Vessel Segmentation with Pixel-wise Adaptive Filters
[论文精读]ISBI 2022 - Retinal Vessel Segmentation with Pixel-wise Adaptive Filters [论文原文]:Retinal Vessel ...
- 论文翻译 | Learning Calibrated Medical Image Segmentation via Multi-rater Agreement Modeling
文章目录 Abstract and Contributions Motivation Overall Framework Expertise-aware Inferring Module Multi- ...
- [论文阅读] Adversarial Learning for Semi-Supervised Semantic Segmentation
[论文地址] [代码] [BMVC 18] Abstract 我们提出了一种使用对抗性网络进行半监督性语义分割的方法.虽然大多数现有的判别器都是在图像层面上对输入图像进行真假分类的训练,但我们以完全卷 ...
- 【论文精读】Learning Edge-Preserved Image Stitching from Large-Baseline Deep Homography
文章目录 一.论文翻译 题目:从大基线深度单应性学习边缘保留图像拼接 0摘要 1引言 2相关工作 A传统图像拼接 B深度单应方案 C深度图像拼接 3方法 3.1大基线深度单应 3.2边缘保持变形网络 ...
- Why choose lifelong learning in medical images?(附3篇论文翻译)
Why choose lifelong learning in medical images? 最近几年顶会上将lifelong用在medical images中的文章,可参考,附abstract和i ...
- CVPR2022:Generalizable Cross-modality Medical Image Segmentation via StyleAugmentation and Dual Norm
CVPR2022:Generalizable Cross-modality Medical Image Segmentation via StyleAugmentation and Dual Norm ...
最新文章
- centos7下selinux永久关闭
- POJ 3449 Geometric Shapes
- C语言中 #pragma pack()
- 通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[上]:采用管道处理请求...
- QT的QAudioOutput类的使用
- linux修改jdk环境变量6,Linux CentOS 6.5 使用自带jdk修改环境变量(示例代码)
- MySQL发展史重大事件
- UncaughtExceptionHandler:java未捕获的异常/错误默认处理方式
- leetcode面试题 10.01. 合并排序的数组
- linux生产服务器有关网络状态的优化措施
- Java知多少(56)线程模型
- jnativecpp.dll一定要放到系统目录下吗_「实用」室内甲醛到底该如何去除?关键要做到这两点...
- Node.js:常用工具、路由
- 基于SSM实现的超市管理系统
- arcface的前世今生
- Prometheus监控学习笔记之Prometheus普罗米修斯监控入门
- MapReduce----电信数据清洗
- c语言编写程序寻找最大公约数,C程序设计编程题库
- HTML文件命名_没有删不掉的文件:强制终止、一键解锁,样样精通
- 一本书读懂财报 | 资产负债表剖析
热门文章
- 整数在计算机中的表示
- c语言打印数组中的汉字
- ChatGPT:微软人工智能Office和电邮即将登场...
- [分享]豪杰超级DVD播放器Ⅲ破解之菜鸟了解PE文件
- c调用python第三方包_cbillington_Python包维护者_第三方库作者_PyPI项目模块Package - Python中文网...
- 打卡系列-剑指 Offer 62. 圆圈中最后剩下的数字
- Windows 无法连接到打印机,操作失败,错误为:0x00000bcb
- springboot项目:家庭整理服务管理系统39774(java+VUE+Mybatis+Maven+Mysql)
- 网络安全小白众测如何快速发现安全问题思路
- 如何在 Illustrator 中应用任意形状渐变?