基于 Unet-MobileNet 网络实现的腹部肝脏语义分割

news2024/9/21 18:52:01

1、MobileUnet 网络

Unet是一种卷积神经网络(CNN)架构,通常用于图像分割任务

Unet架构由编码器和解码器组成。编码器负责捕获上下文并从输入图像中提取特征,而解码器负责上采样并生成分割掩模。

Unet中的编码器由多个卷积层组成,后面是最大池化层。每个卷积层对输入图像应用一组可学习的滤波器,在每个后续层提取更高级的特征。最大池化层减少了特征图的空间维度,捕获了最重要的信息,同时丢弃了一些细粒度的细节。

Unet中的解码器由上卷积层组成,也称为转置卷积层。这些层提升了特征图,逐渐增加了它们的空间维度,同时保持了它们的通道深度。解码器还包括跳过连接,它将相应的层从编码器连接到解码器。这些跳过连接有助于保留空间信息并提高分割输出的质量。

Unet被广泛用于各种图像分割任务,包括生物医学图像分割、细胞计数和物体检测。它的架构和设计使其在分割具有复杂结构和不同大小对象的图像方面特别有效。跳跃连接的使用也使其在上采样过程中不太容易丢失空间信息。

Unet网络搭建参考:UNet - unet网络-CSDN博客

MobileNet是一种轻量级的深度学习模型架构,专为计算资源有限的移动和嵌入式设备而设计。它由谷歌开发,于2017年发布。

MobileNet是专门为快速高效而设计的,非常适合移动设备上的图像分类、对象检测和图像分割等任务。它通过使用深度可分离卷积来实现效率,将标准卷积分为单独的深度和点卷积。这降低了计算复杂度,同时最大限度地减少了精度的降低。

MobileNet有几种变体,如MobileNetV1、MobileNetV2和MobileNetV3。每个版本都对原始架构进行了改进和优化,例如更高的准确性、更快的推理速度和更少的内存占用。

总体而言,MobileNet是边缘计算和实时应用程序的热门选择,在这些应用程序中,资源限制是一个问题。

Mobilenet网络搭建:MobileNet V1 图像分类_mobile netv1实现图片分级的流程-CSDN博客

MobileUnet是一种专为移动设备设计的卷积神经网络(CNN)架构。它是一种轻量级且高效的神经网络模型,可用于各种计算机视觉任务,如图像分类、对象检测和语义分割。

MobileUnet的架构基于流行的U-Net架构,该架构以其在医学图像分割任务中的有效性而闻名。然而,MobileUnet已经针对移动设备进行了优化,减少了推理所需的参数和操作数量,同时仍然保持了高精度。

MobileUnet通过使用深度可分离卷积来实现其效率,该卷积将深度卷积(用单独的核对每个输入通道进行滤波)和逐点卷积(将深度卷积的输出与线性运算相结合)分开。这降低了网络的计算复杂性,同时仍然有效地捕获空间信息。

MobileUnet架构由编码器和解码器组成。编码器负责从输入图像中提取特征,而解码器对特征进行上采样以生成最终输出。编码器和解码器之间的跳过连接有助于保留细粒度细节并提高网络性能。

总体而言,MobileUnet是一个强大而高效的CNN架构,可以在计算资源有限的移动设备上实现实时计算机视觉任务。它已被广泛应用于各种移动应用,如图像识别、增强现实和自动驾驶。

2、实验

本项目采用python=3.0、pytorch实现

项目下载:基于Unet-MobileNet对腹部肝脏(LIver)图像分割实战代码【包含完整代码、数据集等等】资源-CSDN文库

更多分割项目:图像分割_听风吹等浪起的博客-CSDN博客

2.1 数据集

数据集采用腹部肝脏(Liver)分割,数据如下:

json文件如下:

{
  "0": "background",
  "255": "liver"
}

2.2 训练

训练参数如下:

    parser = argparse.ArgumentParser(description="MobileUnet segmentation")
    parser.add_argument("--batch-size", default=4, type=int)
    parser.add_argument("--num-classes", default=2, type=int)              # 背景 +1
    parser.add_argument("--epochs", default=100, type=int)
    parser.add_argument('--lr', default=0.01, type=float)
    parser.add_argument('--lrf',default=0.001,type=float)                  # 最终学习率 = lr * lrf

    parser.add_argument("--img_f", default='.png', type=str)               # 数据图像的后缀
    parser.add_argument("--mask_f", default='_mask.png', type=str)              # mask图像的后缀

    args = parser.parse_args()

预处理可视化结果:

摆放好数据集即可训练,代码会自动训练并且在验证集上进行评估

2.3 结果

生成结果如下:

这里简单绘制了iou、dice、recall、precision等曲线,如下:

DICE:

IOU:

precision:

recall:

loss:

曲线的数值来自于网络训练,并且都被保存在train和val的txt文件中,如下:

train:

epoch:99
precision: ['0.9994', '0.9921']
recall: ['0.9993', '0.9936']
iou: ['0.9987', '0.9858']
dice: ['0.9994', '0.9928']
mean precision: 0.9957,mean recall: 0.9964,mean dice: 0.9961,mean iou: 0.9922

epoch:100
precision: ['0.9994', '0.9921']
recall: ['0.9993', '0.9937']
iou: ['0.9987', '0.9858']
dice: ['0.9994', '0.9929']
mean precision: 0.9958,mean recall: 0.9965,mean dice: 0.9961,mean iou: 0.9923

val:

epoch:99
precision: ['0.9851', '0.9588']
recall: ['0.9957', '0.8685']
iou: ['0.9809', '0.8372']
dice: ['0.9904', '0.9114']
mean precision: 0.9719,mean recall: 0.9321,mean dice: 0.9509,mean iou: 0.9091

epoch:100
precision: ['0.9846', '0.9590']
recall: ['0.9958', '0.8642']
iou: ['0.9805', '0.8334']
dice: ['0.9901', '0.9092']
mean precision: 0.9718,mean recall: 0.9300,mean dice: 0.9497,mean iou: 0.9070

2.4 推理

推理的话就是predict 脚本,输入预测图像路径即可:

推理的gt+images:

推理的gt图像:

 

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

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

相关文章

汽车免拆诊断案例 | 捷豹 E-type怠速不稳定

故障现象 一辆3.8E型直列6缸的捷豹,该车的故障原因表现为怠速不稳定,转速不均匀,以及在节气门全开(WOT工况)时“回火”和加速踏板不能及时提速。这是该车型一个值得关注的典型案例。车主表示,几年前&#…

Python条形码生成

条形码基础知识 在开始编码之前,让我们先了解一下条形码的基本概念。条形码本质上是一种将数据编码成可视模式的方法,通常由一系列平行的黑色条和白色空格组成。常见的条形码类型包括: UPC(通用产品代码) EAN&#x…

828华为云征文|华为云Flexus X实例部署k3s与kuboard图形化管理工具

828华为云征文|华为云Flexus X实例部署k3s与kuboard图形化管理工具 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定…

数据结构(邓俊辉)学习笔记】排序 6——希尔排序:框架 + 实例

文章目录 1. 策略2.实例3.循秩访问4. 插入排序5.Shell序列 1. 策略 来学习一种非常别致的排序算法,也就是希尔排序。 希尔排序算法既有着悠久的历史,同时也仍然不失活力。该算法的别致之处在于,它不再是将输入视作为一个一维的序列&#x…

SpringTest框架JUnit单元测试用例获取ApplicationContext实例的方法

JUnit单元测试用例中使用Spring框架,之前我的使用方式很直接。 /*** 用于需要用到Spring的测试用例基类* * author lihzh* alia OneCoder* blog http://www.coderli.com*/ RunWith(SpringJUnit4ClassRunner.class) ContextConfiguration(locations { "/sprin…

七. 部署YOLOv8检测器-deploy-yolov8-basic

目录 前言0. 简述1. 案例运行2. 补充说明3. 代码分析3.1 main.cpp3.2 trt_detector.hpp3.2 trt_detector.cpp 4. INT8量化前瞻总结下载链接参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》,链接。记录下个人学习笔记,仅供自己参考 本次课程…

【车载开发系列】ParaSoft入门介绍

【车载开发系列】ParaSoft入门介绍 【车载开发系列】ParaSoft入门介绍 【车载开发系列】ParaSoft入门介绍一. ParaSoft的背景二. 设计理念三. ParaSoft C/CTest简介四. 具备常用功能1)静态代码分析2)代码覆盖率分析3)模糊测试4)自…

协议的认识和理解

目录 1. 协议 1.1. 站在日常生活的角度初始协议 1.2. 网络分层结构 (OS vs 网络) 1.2.1. 软件分层 1.2.2. 网络分层 1.3. 站在语言的角度理解协议 1. 协议 对于协议,我们可以用一句话概括它:协议本质上就是一种约定。 1.1. 站在日常生活的角度初始…

由一个 SwiftData “诡异”运行时崩溃而引发的钩深索隐(四)

概述 在 WWDC 24 中,苹果推出了数据库框架 SwiftData 2.0,并为其加入了全新的 History Trace、“墓碑”等诸多激动人心的新功能。那么它们到底如何实际应用到我们的 App 中去呢? 想搞清楚历史记录追踪(History Trace)如何在 SwiftData 2.0 中大放异彩吗?看这篇就对了! …

压缩文件隐写

1、伪加密 (1)zip伪加密 考点:winhex打开压缩包;搜索504b0102(注意不是文件头部;zip文件头部伪504b0304);从50开始,往后面数第9,10个字符为加密字符,将其设置为0000即可变为无加密状…

攻防世界--->获取

做题笔记。 下载 查壳 64ida打开 main函数: 查找字符: 根据程序逻辑,创建了一个新文件并且进行了写入。 直接Linux上动调一下。 SharifCTF{b70c59275fcfa8aebf2d5911223c6589}

python安装以及访问openAI API

安装python 我是python小白,所以需要一步一步来,先安装。 一口吃不成胖子,记住。 从官网下载python,目前最新版本是3.12,但是据说稳定版3.11更好一点,所以,下载3.11,注意不要下载…

Hiredis的使用

Hiredis的使用 📸这里安利一个github仓库介绍 图片生成 Socialify 一键生成专业 GitHub 仓库简介图 一、Hiredis的安装与使用 1、下载hiredis软件包, https://github.com/redis/hiredis.git 或者使用git下载到本地 git clone https://github.com/redi…

Camtasia 2024破解版注册机包含激活码秘钥

🎬 嗨,亲爱的朋友们!今天我要给你们安利一款超级炫酷的屏幕录制和视频编辑软件——Camtasia 2024!🎉 camtasia2024绿色免费安装包winmac下载,点击链接即可保存。 https://pan.quark.cn/s/5ee0c4655701 C…

vite+vue3+typescript+elementPlus前端实现电子证书查询系统

实现背景:之前电子证书的实现是后端实现的,主要采用GD库技术,在底图上添加文字水印和图片水印实现的。这里采用前端技术实现电子证书的呈现以及点击证书下载,优点是:后端给前端传递的是一组数据,不需要传证…

假期学习-- iOS runloop了解和使用

iOS runloop的总结和理解 https://juejin.cn/post/7167497134294433829?searchId202408060922235E28560E3792F91107ED runloop的概念和数据结构 一般情况下,程序(或者说线程)在执行完毕后会立即退出或销毁;,但如果对…

体育馆智能可视化:提升场馆管理与观赛体验

利用图扑可视化技术,实时呈现体育馆内各项动态,优化场馆管理,提升观众的观赛体验。

基于人工智能的手写数字识别系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 手写数字识别是一种经典的计算机视觉任务,目标是让机器能够识别手写数字。通过人工智能技术,特别是卷积神经网…

JS_变量

二、JS的变量 JS中的变量具有如下特征 1 弱类型变量,可以统一声明成var 2 var声明的变量可以再次声明 3 变量可以使用不同的数据类型多次赋值 4 JS的语句可以以; 结尾,也可以不用;结尾 5 变量标识符严格区分大小写 6 标识符的命名规则参照JAVA 7 如果使用了 一个没有声明的变量…

JAVA基础:值传递和址传递

1 值传递和址传递 值传递 方法调用时,传递的实参是一个基本类型的数据 形参改变,实参不变 public static void doSum(int num1,int num2){} main(){doSum(10,20);int i 10 ;int j 20 ;doSum(i,j) ; } public static void t1(int num){num 20 ;Sys…