1、作者介绍
黎长淼,男,西安工程大学电子信息学院,2022级研究生
研究方向:控制科学与工程
电子邮件:1043626870@qq.com
陈梦丹,女,西安工程大学电子信息学院,2022级硕士研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:1169738496@qq.com
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
解决方法二:使用镜像源加速,仍然无法解决上述问题时,可采用离线安装的方式。文章来源:https://www.toymoban.com/news/detail-492248.html
参考链接
[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文章来源地址https://www.toymoban.com/news/detail-492248.html
到了这里,关于基于U-Net网络实现图像分割的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!