【持续更新中…】
算法概括
FCN将传统卷积网络后面的全连接层换成了卷积层,这样网络输出不再是类别而是 heatmap;同时为了解决因为卷积和池化对图像尺寸的影响,提出使用上采样(upsampling)的方式恢复。
上采样-反卷积(deconvolution)
经过多次卷积和pooling以后,将得到尺寸越来越小、分辨率越来越低的图像,最终得到高维特征图(heatmap);接着我们需要对其进行upsampling,将图像一步步放大至原图像尺寸。最后的输出是n(类别数)个通道heatmap经过upsampling变为原图大小的图片,为了对每个像素进行分类预测label成最后已经进行语义分割的图像,通过逐个像素地求其在n个通道上该像素位置的最大数值描述(概率)作为该像素的分类依据,由此得到一张完成分类的图片。
FCN优点
- 不含全连接层(fc)的全卷积(fully conv)网络。可适应任意尺寸输入。
- 增大数据尺寸的反卷积(deconv)层。能够输出精细的结果。
- 结合不同深度层结果的跳级(skip)结构。同时确保鲁棒性和精确性。
FCNs的结构如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/737dd8abaad9c98f499416a2b9743f88.png)
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曲线、训练结果、测试结果等等,直观明了。
![](https://i-blog.csdnimg.cn/blog_migrate/c2e484fc6329689973d0b6b718a40f7e.png)
实验结果
实验相关信息
- 数据集大小:原图像、标签图像各800余幅
- 运行轮次(epochs):25轮
- batch size:4
- 耗时:2h
- 运行设备:CPU【11th Gen Intel® Core™ i5-11320H @ 3.20GHz 3.19 GHz】
Visdom结果可视化
下图中左侧三幅图从上往下分别表示原图像(MRI图像),模型的预测结果,测试集标签;
右侧的图表为测试过程中的Dice Loss曲线,其原理将在【补充知识】模块中作简要讲解。
![](https://i-blog.csdnimg.cn/blog_migrate/07363826447ce46387c6d2369cbae735.png)
补充知识
医学图像分割的Dice Loss
- Dice系数
Dice系数, 是一种集合相似度度量函数,通常用于计算两个样本的相似度(值范围为 [0, 1]):
s = 2 ∣ X ∩ Y ∣ ∣ X ∣ + ∣ Y ∣ s = \frac{2|X \cap Y|}{|X|+|Y|} s=∣X∣+∣Y∣2∣X∩Y∣
其中 ∣ X ∩ Y ∣ |X \cap Y| ∣X∩Y∣表示X与Y的交集; ∣ X ∣ |X| ∣X∣和 ∣ Y ∣ |Y| ∣Y∣分别表示X与Y 的元素个数;分子乘上2是考虑到分母重复计算X、Y共同元素。 - Dice 系数差异函数(Dice loss):
s = 1 − 2 ∣ X ∩ Y ∣ ∣ X ∣ + ∣ Y ∣ s=1-\frac{2|X \cap Y|}{|X|+|Y|} s=1−∣X∣+∣Y∣2∣X∩Y∣
图像里的“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)替代大尺寸卷积核
- 优点:网络结构简洁,网络表达能力更强
- 缺点:网络参数数量多,存储所需容量大,且需要的训练时间较长