【Pytorch】复现FCN for Left Ventricle(LV) segmentation记录

【持续更新中…】

算法概括

FCN将传统卷积网络后面的全连接层换成了卷积层,这样网络输出不再是类别而是 heatmap;同时为了解决因为卷积和池化对图像尺寸的影响,提出使用上采样(upsampling)的方式恢复。

上采样-反卷积(deconvolution)

经过多次卷积和pooling以后,将得到尺寸越来越小、分辨率越来越低的图像,最终得到高维特征图(heatmap);接着我们需要对其进行upsampling,将图像一步步放大至原图像尺寸。最后的输出是n(类别数)个通道heatmap经过upsampling变为原图大小的图片,为了对每个像素进行分类预测label成最后已经进行语义分割的图像,通过逐个像素地求其在n个通道上该像素位置的最大数值描述(概率)作为该像素的分类依据,由此得到一张完成分类的图片。

FCN优点

  • 不含全连接层(fc)的全卷积(fully conv)网络。可适应任意尺寸输入。
  • 增大数据尺寸的反卷积(deconv)层。能够输出精细的结果。
  • 结合不同深度层结果的跳级(skip)结构。同时确保鲁棒性和精确性。
    FCNs的结构如下图所示:

Sunnybrook数据集

The dataset consists of 16-bit MRI images in DICOM format and expert-drawn contours in text format (coordinates of contour polylines). A sample image/label pair may look like:
数据集包含16位的核磁共振图像(DICOM格式),下面是一对图像和标签的例子:

使用Visdom实现DL训练可视化

简介

Visdom是Facebook在2017年发布的一款针对PyTorch的可视化工具。visdom由于其功能简单,一般被定义为“网页版的matplot”,我们可以直接利用python的控制台模式进行开发并在服务器上执行,并通过向Visdom服务端传输可视化数据进行可视化。

示例

下图便是神经网络训练过程中,Visdom客户端的界面,展示的内容包括训练loss曲线、测试loss曲线、训练结果、测试结果等等,直观明了。

实验结果

实验相关信息

  • 数据集大小:原图像、标签图像各800余幅
  • 运行轮次(epochs):25轮
  • batch size:4
  • 耗时:2h
  • 运行设备:CPU【11th Gen Intel® Core™ i5-11320H @ 3.20GHz 3.19 GHz】

Visdom结果可视化

下图中左侧三幅图从上往下分别表示原图像(MRI图像),模型的预测结果,测试集标签;
右侧的图表为测试过程中的Dice Loss曲线,其原理将在【补充知识】模块中作简要讲解。

补充知识

医学图像分割的Dice Loss

  1. Dice系数
    Dice系数, 是一种集合相似度度量函数,通常用于计算两个样本的相似度(值范围为 [0, 1]):
    s = 2 ∣ X ∩ Y ∣ ∣ X ∣ + ∣ Y ∣ s = \frac{2|X \cap Y|}{|X|+|Y|} s=X+Y2XY
    其中 ∣ X ∩ Y ∣ |X \cap Y| XY表示X与Y的交集; ∣ X ∣ |X| X ∣ Y ∣ |Y| Y分别表示X与Y 的元素个数;分子乘上2是考虑到分母重复计算X、Y共同元素。
  2. Dice 系数差异函数(Dice loss):
    s = 1 − 2 ∣ X ∩ Y ∣ ∣ X ∣ + ∣ Y ∣ s=1-\frac{2|X \cap Y|}{|X|+|Y|} s=1X+Y2XY

图像里的“Ground Truth”

在有监督学习中,数据是有标注的,以(x, t)的形式出现,其中x是输入数据,t是标注.正确的t标注是ground truth, 错误的标记则不是。(也有人将所有标注数据都叫做ground truth)由模型函数的数据则是由(x, y)的形式出现的。
其中x为之前的输入数据,y为模型预测的值。标注会和模型预测的结果作比较。在损耗函数(loss function / error function)中会将y 和 t 作比较,从而计算损耗(loss / error)。

总结成一句话:
Ground Truth: 就是指正确打标签的训练数据 或 简单来说就是有效的正确的数据。

训练网络时CPU或GPU的使用

  • 明确使用CPU:device=torch.device(“cpu”)
  • 明确使用GPU:device=torch.device(“cuda”)
  • 优先使用GPU(如果有):device = torch.device(‘cuda’ if torch.cuda.is_available() else ‘cpu’)

VGG网络简介

(FCNs将VGG作为预训练网络,即在其基础上搭建网络结构)

  • 意义:证明增加小卷积核个数增加网络深度以提升图像分类能力的有效性
  • 预处理:各通道减去RGB在训练集上的均值
  • 特点:网络深度大;使用小尺寸卷积核(3*3)替代大尺寸卷积核
  • 优点:网络结构简洁,网络表达能力更强
  • 缺点:网络参数数量多,存储所需容量大,且需要的训练时间较长
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值