用于图像分割的不同种类的Unet模型的实现
- UNet - U-Net: 用于生物医学图像分割的卷积网络 https://arxiv.org/abs/1505.04597
- RCNN-UNet - 基于U-Net的递归残差卷积神经网络(R2U-Net)用于医学图像分割 https://arxiv.org/abs/1802.06955
- Attention Unet - Attention U-Net: 学习寻找胰腺的位置https://arxiv.org/abs/1804.03999
- RCNN-Attention Unet-Attention R2U-Net:只是整合了两个最近的先进工作(R2U-Net + Attention U-Net)。
- Nested UNet - UNet++: 用于医学图像分割的嵌套式U-Net架构https://arxiv.org/abs/1807.10165
带层可视化
开始
克隆仓库:
git clone https://github.com/bigmb/Unet-Segmentation-Pytorch-Nest-of-Unets.git
依赖
python>=3.6
torch>=0.4.0
torchvision
torchsummary
tensorboardx
natsort
numpy
pillow
scipy
scikit-image
sklearn
安装依赖代码:
pip install -r requirements.txt
修改文件
将你所有的文件夹添加到这一行 106-113
t_data = '' # 输入数据
l_data = '' # 输入标签
test_image = '' # 训练时要预测的图像
test_label = '' # 预测图像的标签
test_folderP = '' # 测试文件夹图像
test_folderL = '' # 用于计算得分的测试文件夹标签
Unet类型
Unet
RCNN Unet
Attention Unet
Attention-RCNN Unet
Nested Unet
可视化
要绘制损失,需要Visdom。代码已经写好了,只需取消必要的部分。梯度流也可以使用。摘自(https://discuss.pytorch.org/t/check-gradient-flow-in-network/15063/10)
创建一个模型文件夹,所有的数据都存储在里面。最后一层将被保存在模型文件夹中。如果需要任何特定的层,请在第361行中提到它。
层可视化
过滤器可视化
TensorboardX 仍然需要调整一些参数来获得可视化。在试图让pytorch 1.1.0直接与tensorboard一起工作时,已经把事情搞砸了(后来才知道目前除了线性图之外,它不支持任何东西)。
用于检查的输入图像可视化
a) Original Image
b) CenterCrop Image
结果
ADNI-LONI数据集的海马体分割的Dice系数
Dice Score(Dice系数)是一种常用于评估图像分割结果的指标,特别在医学图像分割任务中广泛应用。它衡量了分割结果和真实标签之间的相似度。
Dice Score基于集合论中的F1 Score(F1指标)进行计算,其计算方式如下:
Dice Score = (2 * Intersection) / (Prediction + Ground Truth)
其中,Intersection表示预测结果和真实标签的交集(两者同时被预测为正类的像素数量),Prediction表示预测结果中的正类像素数量,Ground Truth表示真实标签中的正类像素数量。
Dice Score的取值范围为0到1,其中0表示预测结果与真实标签完全不相符,1表示完全一致的预测结果。
Dice Score是一种广泛使用的评估指标,因为它对于不平衡类别的图像分割任务具有鲁棒性。在医学图像中,常常存在正类和负类像素数量差异很大的情况,Dice Score能够在这种情况下提供更准确的评估。
除了Dice Score,其他常见的图像分割评估指标还包括IoU(Intersection over Union)和精确率(Precision)、召回率(Recall)等,它们都可以用来衡量图像分割算法的性能。具体选择哪种指标应根据任务需求和具体情况来决定。