Unet 高阶分割网络实战、多类别分割、迁移学习(deeplab、resnet101等等)

1、前言 

Unet 图像分割之前介绍了不少,具体可以参考 图像分割专栏

 

为了实现多类别的自适应分割,前段时间利用numpy的unique函数实现了一个项目。通过numpy函数将mask的灰度值提取出来,保存在txt文本里,这样txt里面就会有类似0 1 2 ...等等的灰度值。而有几个灰度值,就代表分割要分出几个类别。

具体可以参考:Unet 实战分割项目、多尺度训练、多类别分割

将vgg换成resnet的unet参考:Unet+ResNet 实战分割项目、多尺度训练、多类别分割 

对于图像分割而言,仍有很多的分割网络(例如deeplab、retinaNet等等)在分割任务有不错的表现。这里将介绍几种torch自定义的高阶分割API

高阶分割API的输入被限制为32的倍数,不能像之前那样输入任意大小

2、Resnet101

代码类似,参考之前的文章即可,这里仅仅将网络进行替换

需要安装的库文件:

pip install segmentation-models-pytorch

导入:

导入网络:

Unet 高阶分割网络实战、多类别分割、迁移学习(deeplab、resnet101等等)_第1张图片

结果:

Unet 高阶分割网络实战、多类别分割、迁移学习(deeplab、resnet101等等)_第2张图片

效果还是可以的

3、Deeplabv3

可以利用torchvision自带的分割网络

导入:

加载网络:

这里没有加载预训练模型,因为不同的输出会导入预训练权重失败,当然可以删除最后的输出层进行导入,可以自己尝试下

Unet 高阶分割网络实战、多类别分割、迁移学习(deeplab、resnet101等等)_第3张图片

结果:

Unet 高阶分割网络实战、多类别分割、迁移学习(deeplab、resnet101等等)_第4张图片

4、项目地址

下载地址:项目的使用,参考readme文件

深度学习 Unet+Resnet101 实战分割项目、多尺度训练、迁移学习、多类别分割:腹部多脏器5类别分割数据集

 

深度学习 Deeplabv3+Resnet101 实战分割项目、多尺度训练、多类别分割:腹部多脏器5类别分割数据集

5、一点废话

对于官方实现的高阶分割网络而言,输入需要限制在32的倍数,这是根据unet下采样的倍数决定的。

这样在推理的时候,也需要将图像resize成固定大小,之前讨论过这个问题,总感觉有点差强人意,所以本人不太使用这种高阶API,参考:关于图像分割的预处理 transform

对于二值图像来说,之前做过几个项目,有的是单通道输出,有的是多通道输出

因为对于二值图像分割,结果就两个0 1,可以利用交叉熵进行输出两个,也可以利用sigmoid阈值处理变成两个,结果是没区别的。后者的精度虽然高,但仅仅是精度,不是iou,将同样的项目换到交叉熵的多通道输出,结果也一样,所以不需要纠结。如下:

Unet 高阶分割网络实战、多类别分割、迁移学习(deeplab、resnet101等等)_第5张图片

 Unet 高阶分割网络实战、多类别分割、迁移学习(deeplab、resnet101等等)_第6张图片

你可能感兴趣的:(图像分割,计算机视觉,人工智能)