当前位置: 首页 > news >正文

【MATLAB实战】基于UNet的肺结节的检测

数据:
在这里插入图片描述
在这里插入图片描述
训练过程图
在这里插入图片描述
算法简介:
UNet网络是分割任务中的一个经典模型,因其整体形状与"U"相似而得名,"U"形结构有助于捕获多尺度信息,并促进了特征的精确重建,该网络整体由编码器,解码器以及跳跃连接三部分组成。
编码器由一系列卷积层(Convenlution)和池化层(Polling) 组成,用于逐步降低输入图像的空间尺寸和通道数,同时提取图像的高层特征信息:
解码器由一系列上采样层和卷积层组成,用于逐步还原特征图的空间尺寸和通道细节信息。
在编码器和解码器通过跳跃连接将编码器的某一层的特征图与对应的解码器层的特征图连接起来。正是因为"U"结构的有效性,UNet网络被许多学者沿用至今。
UNet网络的基本块由两个卷积和ReLu激活函数构成,使用3x3的卷积核尺寸来捕捉上下文信息。网络的左侧部分构成UNet的编码器,负责从输入影像中提取特征信息。
在UNet的解码阶段,解码基本块与编码阶段的基本块是一一对应的。从瓶颈层出发,通过上采样将特征图放大,然后经过解码基本块进行特征信息的解码重建。
此外跳跃连接(copyandcrop)的设计允许将编码阶段提取的特征信息传递到解码基本块中,有助于进一步恢复细节信息。整个过程重复进行四次,完成对病灶区域的分割。
在这里插入图片描述

运行视频:

【MATLAB实战】基于UNet的肺结节的检测

代码:

function expName = unet(expName, size, encoderDepth, filters, batchsize, epochs, useDataAugmentation, L2Reg, lr, ...gradientclipping, path, splits, folders, savePredictionsFolder, classNames, labelIDs, valPat, isMAT )% 创建unet 网络
numClasses  = length(classNames);
lgraph = unetLayers(size,numClasses,'EncoderDepth',encoderDepth, 'NumFirstEncoderFilters', filters)%%     TRAIN       %%
% 加载训练集
if isMAT == trueimdsTrain = imageDatastore(strcat(path, '/', splits(1), '/', folders(1)), 'FileExtensions','.mat', 'ReadFcn', @loadMAT);
elseimdsTrain = imageDatastore(strcat(path, '/', splits(1), '/', folders(1)));
endpxdsTrain = pixelLabelDatastore(strcat(path, '/', splits(1), '/', folders(2)),classNames,labelIDs);tbl = countEachLabel(pxdsTrain)imageFreq = tbl.PixelCount ./ tbl.ImagePixelCount;medFreqClassWeights = median(imageFreq) ./ imageFreqlayer_to_add = [pixelClassificationLayer('Classes',classNames,'ClassWeights',medFreqClassWeights,'Name','Segmentation-Layer')];
% 替换层
lgraph = replaceLayer(lgraph,'Segmentation-Layer',layer_to_add);
Display the network.
analyzeNetwork(lgraph)% 创建 datastore 
if useDataAugmentation == false % 不适用图像增强
%     testpxds = pixelLabelDatastore(testlabelDir,classNames,labelIDs);ds = pixelLabelImageDatastore(imdsTrain,pxdsTrain);
else % 图像增强augmenter = imageDataAugmenter('RandXReflection',true, 'RandYReflection',true)%,'RandRotation',[-10 10], 'RandXTranslation', [-5 5], 'RandYTranslation', [-5 5]);  ds = pixelLabelImageDatastore(imdsTrain,pxdsTrain, 'DataAugmentation', augmenter);
end % 加载验证集.
if isMAT==trueimdsVal = imageDatastore(strcat(path, '/', splits(3), '/', folders(1)), 'FileExtensions','.mat', 'ReadFcn', @loadMAT);
elseimdsVal = imageDatastore(strcat(path, '/', splits(3), '/', folders(1)));
end
pxdsVal = pixelLabelDatastore(strcat(path, '/', splits(3), '/', folders(2)),classNames,labelIDs);  
valData = pixelLabelImageDatastore(imdsVal, pxdsVal); 
valFreq = floor(length(ds.Images)/batchsize)% 设置 OPTIONS
options = trainingOptions(...'adam', ...    ... 'rmsprop' ... 'sgdm','Momentum', 0.9, ...'InitialLearnRate',lr, ...... 'LearnRateSchedule','piecewise', ...... 'LearnRateDropFactor', dropfactor, ...... 'LearnRateDropPeriod', 1, ...'MaxEpochs',epochs, ...'VerboseFrequency',10, ...'MiniBatchSize' , batchsize, ...'Plots','training-progress', ...'L2Regularization',L2Reg, ...,'ValidationData',valData, ...,'ValidationFrequency', valFreq,...,'ValidationPatience', valPat,...,... 'GradientThresholdMethod','l2norm',...... 'GradientThreshold',gradientclipping, ...'Shuffle','every-epoch', ...'ExecutionEnvironment', 'gpu');% 训练网络
tic;
[net,info] = trainNetwork(ds,lgraph,options)
traintime=toc;
save net.mat net;
%%         TEST       %%
% 加载测试集
if isMAT==trueimdsTest = imageDatastore(strcat(path, '/', splits(2), '/', folders(1)), 'FileExtensions','.mat', 'ReadFcn', @loadMAT);
elseimdsTest = imageDatastore(strcat(path, '/', splits(2), '/', folders(1)));
end
pxdsTest = pixelLabelDatastore(strcat(path, '/', splits(2), '/', folders(2)),classNames,labelIDs);% 在测试映像上运行网络。预测标签作为pixelLabelDatastore返回。
tic
pxdsResults = semanticseg(imdsTest,net, 'MiniBatchSize',batchsize,"WriteLocation", savePredictionsFolder);
toc% 计算混淆矩阵和分割度量(根据实际情况评估预测结果)
metrics = evaluateSemanticSegmentation(pxdsResults,pxdsTest)
metrics.ClassMetrics
metrics.NormalizedConfusionMatrix
metrics.ConfusionMatrix
metrics.DataSetMetrics
% 设置保存目录mkdir(['ExpUNet/',expName]);
% logs 保存
save(['ExpUNet/',expName, '/results'])
% 保存评价指标
writetable(metrics.DataSetMetrics,['ExpUNet/',expName,'/dataset.csv'])
writetable(metrics.ClassMetrics, ['ExpUNet/',expName,'/classmetrics.csv'])
writetable(metrics.ConfusionMatrix, ['ExpUNet/',expName,'/confusionmatrix.csv'])
writetable(metrics.NormalizedConfusionMatrix, ['ExpUNet/',expName,'/normconfusionmatrix.csv'])
% 测试 6 张图像 结果保存
saveTestImages(net, imdsTest, pxdsTest,classNames, ['ExpUNet/',expName,'/ejemplos.png'], labelIDs, isMAT)endfunction final_matrix = loadMAT(filename)load(filename)
end

代码链接:https://download.csdn.net/download/qq_45047246/89565243

相关文章:

【MATLAB实战】基于UNet的肺结节的检测

数据: 训练过程图 算法简介: UNet网络是分割任务中的一个经典模型,因其整体形状与"U"相似而得名,"U"形结构有助于捕获多尺度信息,并促进了特征的精确重建,该网络整体由编码器,解码器以及跳跃连接三部分组成。 编码器由…...

Elasticsearch基础(五):使用Kibana Discover探索数据

文章目录 使用Kibana Discover探索数据 一、添加样例数据 二、数据筛选 三、保存搜索 使用Kibana Discover探索数据 一、添加样例数据 登录Kibana。在Kibana主页的通过添加集成开始使用区域,单击试用样例数据。 在更多添加数据的方式页面下方,单击…...

爬取百度图片,想爬谁就爬谁

前言 既然是做爬虫,那么肯定就会有一些小心思,比如去获取一些自己喜欢的资料等。 去百度图片去抓取图片吧 打开百度图片网站,点击搜索xxx,打开后,滚动滚动条,发现滚动条越来越小,说明图片加载…...

HTTP 缓存

缓存 web缓存是可以自动保存常见的文档副本的HTTP设备,当web请求抵达缓存时,如果本地有已经缓存的副本,就可以从本地存储设备而不是从原始服务器中提取这个文档。使用缓存有如下的优先。 缓存减少了冗余的数据传输缓存环节了网络瓶颈的问题…...

设计模式实战:图形编辑器的设计与实现

简介 本篇文章将介绍如何设计一个图形编辑器系统,系统包括图形对象的创建、组合、操作及撤销等功能。我们将通过这一项目,应用命令模式、组合模式和备忘录模式来解决具体的设计问题。 问题描述 设计一个图形编辑器系统,用户可以创建并操作图形对象,将多个图形对象组合成…...

.NET 情报 | 分析某云系统添加管理员漏洞

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…...

vue检测页面手指滑动距离,执行回调函数,使用混入的语法,多个组件都可以使用

mixin.ts 定义滑动距离的变量和检测触摸开始的方法&#xff0c;滑动方法&#xff0c;并导出两个方法 sendTranslateX.value > 250 && sendTranslateY.value < -100是向上滑动&#xff0c;满足距离后执行回调函数func&#xff0c;并在一秒内不再触发&#xff0c;一…...

opencv 优势

OpenCV(开源计算机视觉库)是一个广泛使用的计算机视觉和机器学习软件框架。它最初由Intel开发,后来由Itseez公司维护,最终于2015年成为非营利组织OpenCV.org的一部分。OpenCV的目的是实现一个易于使用且高效的计算机视觉框架,支持实时视觉应用。 以下是关于OpenCV的一些关…...

1-如何挑选Android编译服务器

前几天&#xff0c;我在我的星球发了一条动态&#xff1a;入手洋垃圾、重操老本行。没错&#xff0c;利用业余时间&#xff0c;我又重新捣鼓捣鼓代码了。在接下来一段时间&#xff0c;我会分享我从服务器的搭建到完成Android产品开发的整个过程。这些东西之前都是折腾过的&…...

【JS逆向课件:第十六课:Scrapy基础2】

ImagePipeLines的请求传参 环境安装&#xff1a;pip install Pillow USER_AGENT Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36需求&#xff1a;将图片的名称和详情页中图片的数据进行爬取&a…...

使用 PowerShell 自动化图像识别与鼠标操作

目录 前言功能概述代码实现1. 引入必要的程序集2. 定义读取文件行的函数3. 定义加载图片的函数4. 定义查找小图像在大图像中的位置的函数5. 定义截取全屏的函数6. 定义模拟鼠标点击的函数7. 定义主函数 配置文件示例运行脚本结语全部代码提示打包exe 下载地址 前言 在日常工作…...

组队学习——支持向量机

本次学习支持向量机部分数据如下所示 IDmasswidthheightcolor_scorefruit_namekind 其中ID&#xff1a;1-59是对应训练集和验证集的数据&#xff0c;60-67是对应测试集的数据&#xff0c;其中水果类别一共有四类包括apple、lemon、orange、mandarin。要求根据1-59的数据集的自…...

【数据中心】数据中心的IP封堵防护:构建网络防火墙的基石

数据中心的IP封堵防护&#xff1a;构建网络防火墙的基石 引言一、理解IP封堵二、IP封堵的功能模块及其核心技术三、实施IP封堵的关键策略四、结论 引言 在当今高度互联的世界里&#xff0c;数据中心成为信息流动和存储的神经中枢&#xff0c;承载着企业和组织的大量关键业务。…...

LangChain的使用详解

一、 概念介绍 1.1 Langchain 是什么&#xff1f; 官方定义是&#xff1a;LangChain是一个强大的框架&#xff0c;旨在帮助开发人员使用语言模型构建端到端的应用程序&#xff0c;它提供了一套工具、组件和接口&#xff0c;可简化创建由大型语言模型 (LLM) 和聊天模型提供…...

Modbus转BACnet/IP网关快速对接Modbus协议设备与BA系统

摘要 在智能建筑和工业自动化领域&#xff0c;Modbus和BACnet/IP协议的集成应用越来越普遍。BA&#xff08;Building Automation&#xff0c;楼宇自动化&#xff09;系统作为现代建筑的核心&#xff0c;需要高效地处理来自不同协议的设备数据&#xff0c;负责监控和管理建筑内…...

万字长文之分库分表里无分库分表键如何查询【后端面试题 | 中间件 | 数据库 | MySQL | 分库分表 | 其他查询】

在很多业务里&#xff0c;分库分表键都是根据主要查询筛选出来的&#xff0c;那么不怎么重要的查询怎么解决呢&#xff1f; 比如电商场景下&#xff0c;订单都是按照买家ID来分库分表的&#xff0c;那么商家该怎么查找订单呢&#xff1f;或是买家找客服&#xff0c;客服要找到对…...

如何查看jvm资源占用情况

如何设置jar的内存 java -XX:MetaspaceSize256M -XX:MaxMetaspaceSize256M -XX:AlwaysPreTouch -XX:ReservedCodeCacheSize128m -XX:InitialCodeCacheSize128m -Xss512k -Xmx2g -Xms2g -XX:UseG1GC -XX:G1HeapRegionSize4M -jar your-application.jar以上配置为堆内存4G jar项…...

科研绘图系列:R语言TCGA分组饼图(multiple pie charts)

介绍 在诸如癌症基因组图谱(TCGA)等群体研究项目中,为了有效地表征和比较不同群体的属性分布,科研人员广泛采用饼图作为数据可视化的工具。饼图通过将一个完整的圆形划分为若干个扇形区域,每个扇形区域的面积大小直接对应其代表的属性在整体中的占比。这种图形化的展示方…...

ReadAgent,一款具有要点记忆的人工智能阅读代理

人工智能咨询培训老师叶梓 转载标明出处 现有的大模型&#xff08;LLMs&#xff09;在处理长文本时受限于固定的最大上下文长度&#xff0c;并且当输入文本越来越长时&#xff0c;性能往往会下降&#xff0c;即使在没有超出明确上下文窗口的情况下&#xff0c;LLMs 的性能也会随…...

构建智能:利用Gradle项目属性控制构建行为

构建智能&#xff1a;利用Gradle项目属性控制构建行为 Gradle作为一款强大的构建工具&#xff0c;提供了丰富的项目属性管理功能。通过项目属性&#xff0c;开发者可以灵活地控制构建行为&#xff0c;实现条件编译、动态配置和多环境构建等高级功能。本文将详细解释如何在Grad…...

双模型协同工作流架构解析:从感知到决策的AI工程实践

1. 项目概述&#xff1a;双模型协同工作流的深度解构最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“openclaw-dual-model-workflow”。光看这个名字&#xff0c;就能嗅到一股浓浓的工程实践和架构设计的味道。这不像是一个简单的应用Demo&#xff0c;更像是一个为解决特…...

【面试篇】ConcurrentHashMap 1.7与1.8:从分段锁到CAS+synchronized的演进之路

1. 从分段锁到CASsynchronized的演进背景 在Java并发编程中&#xff0c;HashMap是线程不安全的典型代表。当多个线程同时操作HashMap时&#xff0c;可能会出现数据丢失、环形链表等问题。为了解决这个问题&#xff0c;早期我们通常使用以下两种方式&#xff1a; HashTable&am…...

自动驾驶语义观察层:VLM与量化优化实践

1. 自动驾驶中的语义观察层&#xff1a;为什么传统方法不够用&#xff1f;在自动驾驶领域&#xff0c;我们经常遇到一些"看起来不对劲"的场景——比如一辆运输卡车后部悬挂的交通信号灯&#xff08;应该遵循还是忽略&#xff1f;&#xff09;、道路上突然出现的瘪气皮…...

无线广域网技术演进与5G物联网应用解析

1. 无线广域网技术演进全景图作为一名在通信行业深耕十余年的技术专家&#xff0c;我见证了无线广域网(Wireless WAN)从最初的模拟信号传输到如今5G时代的完整演进历程。无线广域网本质上是利用无线电波实现地理分散系统互联的技术集合&#xff0c;其核心价值在于突破有线网络的…...

告别明文传输:手把手教你为open62541 OPC UA服务器配置OpenSSL加密(附证书生成避坑指南)

工业物联网安全实战&#xff1a;基于open62541与OpenSSL构建OPC UA加密通信体系 在工业控制系统与物联网设备的数据交互中&#xff0c;明文传输就像在公共场所用明信片传递商业机密。想象一下工厂里的PLC控制器将生产参数以原始文本形式发送到SCADA系统&#xff0c;或者智能传感…...

网盘直链下载助手:一键获取九大网盘真实下载链接的终极指南

网盘直链下载助手&#xff1a;一键获取九大网盘真实下载链接的终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 /…...

ContextMenuManager终极指南:如何快速清理Windows右键菜单提升系统效率

ContextMenuManager终极指南&#xff1a;如何快速清理Windows右键菜单提升系统效率 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否厌倦了每次右键点击文件…...

别再手动K帧了!Maya路径动画保姆级教程,5分钟让模型丝滑走位

Maya路径动画终极指南&#xff1a;告别手动K帧&#xff0c;实现模型智能运动 在三维动画制作中&#xff0c;让角色或物体沿着预设路径运动是一个常见需求。无论是制作蛇形移动的生物、赛车漂移轨迹&#xff0c;还是摄像机漫游动画&#xff0c;路径动画都能大幅提升工作效率。传…...

抖音批量下载工具架构解析:从技术实现到实战配置指南

抖音批量下载工具架构解析&#xff1a;从技术实现到实战配置指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppor…...

3分钟轻松搞定Jable视频下载:Chrome插件+本地下载器完美方案

3分钟轻松搞定Jable视频下载&#xff1a;Chrome插件本地下载器完美方案 【免费下载链接】jable-download 方便下载jable的小工具 项目地址: https://gitcode.com/gh_mirrors/ja/jable-download 还在为无法离线保存Jable.tv上的精彩视频而烦恼吗&#xff1f;想要轻松将喜…...