基于U-Net网络实现图像分割

1、作者介绍

黎长淼,男,西安工程大学电子信息学院,2022级研究生
研究方向:控制科学与工程
电子邮件:[email protected]

陈梦丹,女,西安工程大学电子信息学院,2022级硕士研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:[email protected]

2、U-Net网络及数据集介绍

2.1 U-Net网络

U-Net是2015年提出的一种经典的图像语义分割网络,主要用于解决医学图像分割问题。U-Net能从更少的训练图像中进行学习,当它在少于40张图的生物医学数据集上训练时,IOU值仍能达到92%。它由一个编码器和一个解码器组成,其中编码器用于提取图像特征,解码器用于将特征图还原为原始图像大小的分割结果。
在这里插入图片描述

2.2 数据集介绍

2.2.1 VOC_2012数据集

VOC_2012数据集来源于PASCAL VOC挑战赛(The PASCAL Visual Object Classes),该数据集主要包括20个类别,可用于目标检测、目标分割、行为识别等任务。可选择在官网下载或者使用百度网盘进行下载:

(1)官网下载地址:
http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
https://pjreddie.com/projects/pascal-voc-dataset-mirror/
(2)百度网盘下载地址:
链接:https://pan.baidu.com/s/1ln-1Pa2VzXx5P9179PPvvQ
提取码:miao

原始图片(左列)及标签(右列)如下图所示:
在这里插入图片描述

2.2.2 眼球毛细血管数据集

数据集下载路径(百度网盘):
链接:https://pan.baidu.com/s/1zOYyO8ocvEE9LgT3Eexfhg
提取码:miao

原始图片(左侧)及标签(右侧):
在这里插入图片描述

2.2.3 医学图像数据集

数据集下载路径(百度网盘):
链接:https://pan.baidu.com/s/1U6iivLiwOALJB-3nVHKHfQ
提取码:miao

原始图片(左侧)及标签(右侧):
在这里插入图片描述

3、U-Net实现图像分割

3.1 U-Net实现图像分割实验(简易版本)

3.1.1 环境配置

  • pytorch
  • torchvision
  • opencv-python
  • tqdm

3.1.2 数据集准备

下载前面提到的VOC_2012数据集和眼球毛细血管数据集,下载好的两个数据集目录如下图所示:
在这里插入图片描述

3.1.3 代码实现

代码实现部分主要包括定义U-Net网络、对数据集进行预处理、编写训练函数训练模型,具体编程思路可参考下图。
在这里插入图片描述

百度网盘
(1)完整代码下载地址:
链接:https://pan.baidu.com/s/1E8xJMFQX7jciq7T0-SssiA
提取码:miao
(2)训练好的模型权重下载地址:
链接:https://pan.baidu.com/s/1nvl0BUxgNbnR67ankmCebQ
提取码:miao

注意:

  • 程序中数据集路径不要包含中文名;
  • 如果使用笔记本的gpu或cpu进行调试时,建议将程序中的batchsize设置小一点,例如batchsize=1;
  • 如果仅仅是测试,建议下载上文训练好的权重,然后选择几张图片进行测试。

3.1.4 实验结果

VOC_2012数据集:在这里插入图片描述
在这里插入图片描述
眼球毛细血管数据集:
在这里插入图片描述
在这里插入图片描述

3.1.5 总结

优点:实现较为简单,训练速度较快。
不足:分割性能有待提升,缺乏评价指标。

3.2 U-Net实现图像分割实验(改进版本)

鉴于上述版本,为追求便捷性,实现较为简单,适用于初学者了解U-Net网络的作用。为了更近一步学习,我们使用VGG16及ResNet50将U-Net网络加深,并设计多种损失函数、完善训练策略。

3.2.1 环境配置

  • scipy==1.2.1
  • numpy==1.17.0
  • matplotlib==3.1.2
  • opencv_python==4.1.2.30
  • torch==1.2.0
  • torchvision==0.4.0
  • tqdm==4.60.0
  • Pillow==8.2.0
  • h5py==2.10.0

3.2.2 数据集准备

下载前文提到的VOC_2012数据集和医学图像数据集。

3.2.3 代码实现

代码中已逐行注释,我们可以根据自身情况选择不同的网络结构、损失函数和训练参数进行训练。

(1)完整代码下载地址:
百度网盘下载:
链接:https://pan.baidu.com/s/1cPcKLM0ORQcfBlOt_hMxbw
提取码:miao
GitCode下载:
https://gitcode.net/mirrors/bubbliiiing/unet-pytorch/-/tree/main/img

(2)训练好的模型权重下载地址:
链接: https://pan.baidu.com/s/1A22fC5cPRb74gqrpq7O9-A
提取码: 6n2c

3.2.4 实验结果(采用MIoU评价指标)

在这里插入图片描述
在这里插入图片描述

4、问题与分析

1、问题一: VOC数据集无法下载
在这里插入图片描述
解决方法一:换个浏览器,例如谷歌浏览器等;
解决方法二:使用本文给出的百度网盘下载地址进行下载。

2、问题二:路径问题

在这里插入图片描述
注意事项一:VOC数据集中原图(JPEGImages)是jpg格式,标签(SegmentationClass)是png格式;
注意事项二:查看所给路径是否正确,尤其是使用相对路径时。

3、问题三:配置虚拟环境时,装包过慢导致失败
解决方法一:使用清华镜像源进行加速。下面两行代码二选一即可,用具体包名替换代码中的some-package。

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
或者
pip install some-package -i https://pypi.tuna.tsinghua.edu.cn/simple 

解决方法二:使用镜像源加速,仍然无法解决上述问题时,可采用离线安装的方式。

参考链接

[1] VOC2012数据集文件夹结构的介绍:https://blog.csdn.net/qq_43718758/article/details/128065362
[2] 程序编写:https://blog.csdn.net/hehuaiyuyu/article/details/106307748
https://gitcode.net/mirrors/bubbliiiing/unet-pytorch/-/tree/main/img

猜你喜欢

转载自blog.csdn.net/m0_37758063/article/details/131252634