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

news2024/11/18 3:22:35

目录

  • 1、作者介绍
  • 2、U-Net网络及数据集介绍
    • 2.1 U-Net网络
    • 2.2 数据集介绍
      • 2.2.1 VOC_2012数据集
      • 2.2.2 眼球毛细血管数据集
      • 2.2.3 医学图像数据集
  • 3、U-Net实现图像分割
    • 3.1 U-Net实现图像分割实验(简易版本)
      • 3.1.1 环境配置
      • 3.1.2 数据集准备
      • 3.1.3 代码实现
      • 3.1.4 实验结果
      • 3.1.5 总结
    • 3.2 U-Net实现图像分割实验(改进版本)
      • 3.2.1 环境配置
      • 3.2.2 数据集准备
      • 3.2.3 代码实现
      • 3.2.4 实验结果(采用MIoU评价指标)
  • 4、问题与分析
  • 参考链接

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 

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

参考链接

[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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/654196.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《项目实战》使用JDBC手写分库

文章目录 1、概要2、整体架构流程3、技术名词解释4、技术细节4.1、指定分库规则4.2、安装Mysql数据库以及建库建表4.3、创建Java项目4.3.1、使用 Idea创建Maven项目4.3.1.1、修改pom.xml配置 4.3.2、编写分库/路由规则 DbRouter4.3.3、编写数据库交互工具 DaoUtil4.3.4、编写数…

MyBits的创建与使用

文章目录 前言MyBits的优点这里简单回忆下用JDBC的流程 MyBits的调用流程MyBits的配置传递参数之# 与 $ 的区别 当mysql与程序属性映射不一致时的解决方案 前言 上篇博客讲述了 Spring后端与前端进行交互的过程, 而这篇博客将讲述Spring与数据库的交互 , 众所周知 后端与数据库…

1.1数据结构绪论

一、数据结构 学习如何使用程序代码把现实世界的问题信息化 二、数据的基本概 1、数据:信息的载体,是描述客观世界属性的数、字符及被计算机程序识别和处理的集合。 早期计算机处理的数据——纯数值类型;现代计算机处理数据——非数据类型 …

融合创新:AI虚拟数字人与3D VR全景引领未来旅游潮流

导语: 随着科技不断发展,AI虚拟数字人和3D VR全景技术的融合正引领着创新的潮流。这种融合不仅仅是对传统导览的升级,更为各个领域带来了全新的创新应用。让我们一起探索AI虚拟数字人与3D VR全景融合的创新应用,看看它们如何在多…

快速解决Github无法访问的问题

Github访问慢,是困扰很多人的问题,今天就出一个解决方案,按照下面思路,可以实现快速访问Github,来查看我们需要的资源。 目录 一、获取DNS 二、修改hosts文件内容 2.1 修改hosts权限 2.2 修改hosts内容 三、轻…

以指标驱动,企业数智化迈向新阶段

近年来,我国数字经济蓬勃发展,数据成为推动经济社会发展的新要素。国家十四五规划指出,要激活数据要素潜能,加快建设数字经济,需要重点实施“上云用数赋智”行动,推动数据赋能全产业链协同转型。为进一步迈…

保姆级教你用Python制作超级玛丽游戏“爷青回~”(文末赠书)

名字:阿玥的小东东 学习:Python、C/C 主页链接:阿玥的小东东的博客_CSDN博客-python&&c高级知识,过年必备,C/C知识讲解领域博主 目录 贪吃蛇游戏 弹珠游戏 超级玛丽(爷青回~) 完整代码如下: 总…

SpringBoot 实现 PDF 添加水印

SpringBoot 实现 PDF 添加水印 使用场景方式一:使用 Apache PDFBox 库方式二:使用 iText 库方式三:Free Spire.PDF for JavaDemo 使用场景 PDF(Portable Document Format,便携式文档格式)是一种流行的文件…

LIME论文阅读笔记

这是暗图增强领域一篇经典的传统方法论文,发表在TIP这个顶刊 文章基于的是这样一个公式: L R ⋅ T LR\cdot T LR⋅T 其中, L L L是暗图, R R R是反射分量, T T T是illumination map,并且对于彩色图像来说…

OpenCV reshape函数

reshape函数 在opencv中,reshape函数比较有意思,它既可以改变矩阵的通道数,又可以对矩阵元素进行序列化,非常有用的一个函数。 函数原型: C: Mat Mat::reshape(int cn, int rows0) const参数比较少,但设…

DJ3-5 TCP:流量控制、连接控制

目录 一、流量控制 二、连接管理 1. 建立连接(三次握手) 2. 关闭连接 3. TCP 连接的生命周期 一、流量控制 一条 TCP 连接的每一侧主机都为该连接设置了接收缓冲区。 TCP 的接收方的接收缓冲区: 1. 提供流量控制服务的原因 应用进程会…

Burpsuit使用03:拦截请求并修改响应

burpsuite是渗透的必备工具,使用它可以进行一些截包分析,修改包数据、暴力破解、扫描等功能,使用最多的场景应该是设置代理拦截数据包分析数据和爆破。 文章目录 拦截请求并修改响应Intercept is offForwardDropAction 拦截请求并修改响应 拦…

5.4、docker-compose

h ttps://www.runoob.com/docker/docker-compose.html Docker Compose docker-compose.yml 配置文件编写详解_docker-compose.yml 编写_种子选手的博客-CSDN博客 docker-compose.yml 配置文件编写详解 1.dockerfile: 构建镜像; 2.docker run: 启动容器;…

upyter Notebook:内核似乎挂掉

项目场景:提示:这里简述项目相关背景:项目场景:深度强化学习在中国股票量化交易上的应用,要求跑赢大盘问题描述提示:这里描述项目中遇到的问题:使用Jupyter Notebook运行时,跑到绘图…

瑞萨RA系列mcu学习笔记--RTT-pwm驱动

方案1:Studio 2.2.6和使用了RASC3.5下使用pwm驱动 开发环境必须说一下,本人在在开发环境的问题上栽了一个跟头, 使用最新版的RTT Studio 2.2.6和使用了RASC4.0的版本生成的公共编译ok,但是一下载到mcu就直接不能运行&#xff1a…

浅谈Java的IO与Netty

一、Java的IO((Input/Output))模型 传统IO和Java NIO最大的区别是传统的IO是面向流,NIO是面向Buffer Socket之间建立链接及通信的过程!实际上就是对TCP/IP连接与通信过程的抽象: 1.服务端Socket会bind到指定的端口上,Listen客户端的”插入”…

如何迁移现有应用和数据到阿里云服务器?有哪些迁移工具和方法?

如何迁移现有应用和数据到阿里云服务器?有哪些迁移工具和方法?   随着云计算技术的不断发展,越来越多的企业和个人开始将应用和数据迁移到云服务器上。阿里云作为国内领先的云服务提供商,为用户提供了一系列方便可靠的应用和数据…

2023开放原子全球开源峰会参会感受:英特尔开源技术合作与产品创新

2023开放原子全球开源峰会参会感受:英特尔开源技术合作与产品创新 文章目录 2023开放原子全球开源峰会参会感受:英特尔开源技术合作与产品创新一. 引言二. 6.11参会感受2.1 英特尔基础软件开放生态合作2.2 Celadon加速安卓在英特尔架构上的产品创新2.3 面…

ASEMI代理光宝高速光耦LTV-5341参数,LTV-5341应用

编辑-Z LTV-5341参数描述: 型号:LTV-5341 储存温度Tstg:-55~125℃ 工作温度Topr:-40~110℃ 总输出电源电压(VCC –VEE):35V 平均正向输入电流IF:20mA 峰值瞬态输入电流IF(TRAN):1A 输入…

【面试中的网络知识】DNS原理-如何实现域名和IP地址的查询转换

接上一篇,理解 浏览器是如何生成HTTP消息的 ,最好是按照顺序来读。  从上一篇博客我们得知浏览器是如何生成了HTTP消息了,但是浏览器作为应用程序,是不具备向网络中发送请求的能力,而是需要委托给操作系统的内核协议栈…