UNet - 预测数据predict(多个图像的分割)

news2025/8/16 16:59:32

目录

1. 介绍

2. predict 预测分割图片

3. 结果展示

4. 完整代码


1. 介绍

之前已经将unet的网络模块、dataset数据加载和train训练数据已经解决了,这次要将unet网络去分割图像,下面是之前的链接

unet 网络:UNet - unet网络

dataset 数据处理:UNet - 数据加载 Dataset

train 网络训练:UNet - 训练数据train

待分割的图像如下:

 存放的路径在U-net项目的predict里面

我们的目标是将predict里面所有的图片分割出来,按照名称顺序保存在result文件夹里面:

2. predict 预测分割图片

首先定义图片的预处理,按照dataset里面相同的方式进行预处理

然后是加载网络的模型和网络参数

 然后加载predict里面所有待处理图片的路径

需要注意的是,os.listdir 加载的只是里面每个图片,并不是图片的具体路径。tests_path 里面的内容如下面的注释所示:

接下来就可以分割图片了

因为tests_path 里面每个文件是 x.png 即文件名+后缀的方式。通过split的 '.' 分割成x和后缀名png的形式,[-2]代表取倒数第二个值,就可以将每个文件名x取出来,然后将路径拼接就可以存放到result里面

open图像的时候,也要注意,test_path 只是遍历tests_path 里面的文件,需要加上之前的predict路径才能正确的读取到每个待分割的图片

因为这里处理图像会改变size成480*480的形式,想要将输出的结果保持不变的话,在网络预测前将图像的大小保存下来就可以了。(注:这里的size和opencv里面的shape返回值是反过来的

这里不清楚的可以通过调试,打印每个变量的内容看一下就可以了

接下来就是网络预测的部分,这里输出的size是(batch,channel,height,width),因为这里的batch是1,channel 灰度图片因此也是1,这里通过squeeze将1的维度删去,只需要图像的大小

下面是squeeze的用法

然后图像保存的话,要转到cpu上面 ,这一步不知道为啥,但是不加这一步会报错

 最后就是保存图像了,将网络的结果二值化后,还原图像再保存就可以了

3. 结果展示

predict里面待预测的图片

result 里面分割好的图片

下面是 参考文章 博主的分割结果

 

对比发现,有些小的细节会丢失,但是大概的轮廓分割出来了

4. 完整代码

完整的项目可以在 这里 下载

import numpy as np
import torch
import cv2
from model import UNet
from torchvision import transforms
from PIL import Image
import os


# 预处理
transform = transforms.Compose([
    transforms.Resize((480,480)),        # 缩放图像
    transforms.ToTensor(),
])

# 加载模型
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
net = UNet(in_channels=1, num_classes=1)
net.load_state_dict(torch.load('Unet.pth', map_location=device))
net.to(device)

# 测试模式
net.eval()
# 读取所有图片路径
tests_path = os.listdir('./predict/')   # 获取 './predict/' 路径下所有文件,这里的路径只是里面文件的路径
''''
print(tests_path)
['0.png', '1.png', '10.png', '11.png', '12.png', '13.png', '14.png', 
'15.png', '16.png', '17.png', '18.png', '19.png', '2.png', '20.png', 
'21.png', '22.png', '23.png', '24.png', '25.png', '26.png', '27.png',
 '28.png', '29.png', '3.png', '4.png', '5.png', '6.png', '7.png', '8.png', '9.png']
'''


with torch.no_grad():                   # 预测的时候不需要计算梯度
    for test_path in tests_path:        # 遍历每个predict的文件
        save_pre_path = './result/'+test_path.split('.')[-2] + '_res.png'    # 将保存的路径按照原图像的后缀,按照数字排序保存
        img = Image.open('./predict/' +test_path)           # 预测图片的路径
        width,height = img.size[0],img.size[1]              # 保存图像的大小
        img = transform(img)
        img = torch.unsqueeze(img,dim = 0)                  # 扩展图像的维度

        pred = net(img.to(device))                          # 网络预测
        pred = torch.squeeze(pred)                          # 将(batch、channel)维度去掉
        pred = np.array(pred.data.cpu())                    # 保存图片需要转为cpu处理

        pred[pred >= 0] = 255                               # 处理结果二值化
        pred[pred < 0] = 0

        pred = np.uint8(pred)                               # 转为图片的形式
        pred = cv2.resize(pred,(width,height),cv2.INTER_CUBIC)          # 还原图像的size
        cv2.imwrite(save_pre_path, pred)                    # 保存图片

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

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

相关文章

chineseocr测试具体部署步骤(不用web界面)

源项目地址&#xff1a; https://github.com/chineseocr/chineseocr 由于chineseocr需要在web上展示检测结果&#xff0c;还需要安装web相关内容&#xff0c;我的硬件是nvidia agx orin只需要在本地查看检测结果&#xff0c;做如下操作 找到源码项目中的test.ipynb,改写成test.…

天津教育杂志天津教育杂志社天津教育编辑部2022年第30期目录

卷首语 构建精准资助模式 保障经济困难学生安心求学 本刊编辑部; 1 本刊视线_关注 中学生行为习惯养成教育的策略——基于福州第十五中学学生行为习惯养成教育的实践 贺玉亮;林瑶; 4-6 本刊视线_特殊教育《天津教育》投稿&#xff1a;cn7kantougao163.com 面向听障…

最高薪15k!“转行软件测试后,我想要的生活,就应该是这样!”

​最近的低温天气 切切实实让汇智妹感受到了冬天 上下班路上骑个自行车都冻手手 &#xff08;成都的“湿冷魔法伤害”真不是吹的&#xff09; 好不容易等来了周末 只想待在家里哪儿都不去 裹着毛毯安逸地休息两天 周一再继续撸起袖子加油干 ​ ​“公司通知周末要加班”…

jenkins 中pipeline相关语法学习

jenkins基础 Jenkins介绍 持续集成&#xff0c;就是通常所说的CI&#xff08;Continues Integration&#xff09;&#xff0c;可以说是现代软件技术开发的基础。 持续集成是一种软件开发实践&#xff0c;即团队开发成员经常集成他们的工作&#xff0c;通常每个成员至少集成一…

Docker踩坑,又涨知识了

背景 新上线一个批处理功能&#xff0c;基于Docker发布的。上线之后出现一个问题&#xff0c;Docker批处理生成的文件目录&#xff0c;别的应用程序无法访问。 之前也在使用Docker&#xff0c;但并未涉及到文件共享的问题&#xff0c;还真没留意到。经过一系列排查&#xff0…

第二章 模型评估与选择(上)

2.1 经验误差与过拟合 通常我们把分类错误的样本数占样本总数的比例为”错误率”&#xff0c;精度1-错误率。模型的实际预测输出与样本的真实输出之间的差异称为“误差”&#xff0c;模型在训练集上的误差称为“训练误差”或“经验误差”,在新样本上的误差称为“泛化误差” 当…

uni-app框架

目录 什么是uniapp 为什么学uniapp uni-app目录结构 uniapp开发规范 pages.json页面的基本配置 pages页面配置 pages对象的属性 globalStyle全局配置 配置基本tabbar tabbar的基本属性 condition启动模式配置 具体属性 组件的基本使用 text文本组件 view组件 …

【历史上的今天】11 月 18 日:DNS 发明者出生;按键式电话问世;比尔·盖茨开始编程

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2022 年 11 月 18 日&#xff0c;在 1928 年&#xff0c;华特迪士尼&#xff08;Walt Disney&#xff09;和他终身的助手阿维尔克合作创造了后来闻名世界的“米老鼠”的…

MySQL (8)

MySQL (8) 前言 &#xff1a; 知识点回顾 &#xff1a; 上文我们已经了解到了我们的事务 , 知道了事务是将诺干个独立的操作打包成一个整体 &#xff0c; 如 1 1 此时想将这个结果写到纸上 &#xff0c;那么 1 1 计算 可以看做一个操作&#xff0c; 将答案 2 写 到纸上 也是…

酪氨酸激酶、自噬等抗肿瘤抑制剂

TPCA-1 TPCA-1 是一种有效&#xff0c;选择性的 IKK-2 抑制剂&#xff0c;IC50 值为 17.9 nM。TPCA-1 也是 STAT3 磷酸化、DNA 结合以及反式激活的有效抑制剂。 表皮生长因子受体 (EGFR) 是治疗 EGFR 突变型非小细胞肺癌 (NSCLC) 的有效靶点。然而&#xff0c;一些 EGFR 突变表…

独家,阿里技术人限产的MySQL高级笔记及面试宝典,简直开挂

又逢“金九银十”&#xff0c;年轻的毕业生们满怀希望与忐忑&#xff0c;去寻找、竞争一个工作机会。已经在职的开发同学&#xff0c;也想通过社会招聘或者内推的时机争取到更好的待遇、更大的平台。 然而&#xff0c;面试人群众多&#xff0c;技术市场却相对冷淡&#xff0c;…

【Linux】深刻理解进程概念、进程状态、进程常用指令和系统调用

文章目录1、什么是进程?1.1 PCB的概念1.2 程序加载到内存2、初识进程2.1 进程相关的指令2.2 进程相关的系统调用3、进程状态3.1 运行、阻塞和挂起状态3.2 具体的Linux进程状态3.3 僵尸进程3.4 孤儿进程1、什么是进程? 从程序说起&#xff0c;我们写好的程序在经过编译链接最…

【cmake】cmake应用:安装和打包

【cmake】cmake应用&#xff1a;安装和打包 在本系列前序的文章中已经介绍了CMake很多内容&#xff0c;在CMake应用&#xff1a;CMakeLists.txt完全指南一文中简略介绍了安装和打包&#xff0c;本文会更加深入地介绍CMake的安装和打包功能。【cmake】cmake应用&#xff1a;安装…

分享500道我在“金九银十”收集的Java架构面试题

前段时间&#xff0c;字节跳动官方就发布消息称在武汉扩招至5000人&#xff0c;放出了2000个岗位名额。可见&#xff0c;互联网大厂岗位需求仍然奇缺。 在已经过去的“金九银十”&#xff0c;我有许多朋友就已经成功的跳槽&#xff0c;有的还在家等候下一步的面试通知。我托朋…

【计算机扫盲】计算机的基础操作你知多少?

计算机的高级操作 控制面板 ​ 控制面板&#xff08;control panel&#xff09;是Windows图形用户界面的一部分&#xff0c;可通过开始菜单访问。它允许用户查看并操作基本的系统设置&#xff0c;比如添加/删除软件&#xff0c;控制用户帐户&#xff0c;更改辅助功能选项。 …

CAS号:60535-02-6,二肽Met-Trp

血管紧张素-1转换酶(ACE)非竞争性抑制剂IC₅₀9.8 μM。 编号: 154290中文名称: 二肽Met-Trp英文名: Met-TrpCAS号: 60535-02-6单字母: H2N-MW-OH三字母: H2N-Met-Trp-COOH氨基酸个数: 2分子式: C16H21N3O3S1平均分子量: 335.42精确分子量: 335.13等电点(PI): 6.11pH7.0时的净电…

服装连锁店管理系统 服装连锁店如何高效管理 服装连锁店管理怎么走捷径

服装连锁店管理繁杂&#xff0c;难以把控&#xff0c;好在有“捷径”可走。 开服装连锁店的老板&#xff0c;来看看这是不是你的“头痛”日常&#xff1a; 新品上市&#xff0c;加盟店全上了&#xff0c;但无法迅速判断出畅销品和滞销品&#xff0c;搜集数据速度慢&#xff0c;…

Coursera自动驾驶1.4——车辆建模

文章目录一、运动学建模&#xff08;二维&#xff09;1.坐标系转换2.两轮机器人运动学建模3.两轮自行车运动学建模&#xff08;1&#xff09;后轴参考点&#xff08;2&#xff09;前轴参考点&#xff08;3&#xff09;重心参考点二、基本动力学模型&#xff08;2D&#xff09;1…

中台和微服务有什么区别?

中台不就是微服务吗&#xff1f;这种说法实际上混淆了中台与微服务的定义&#xff0c;要说清楚这个问题&#xff0c;就要先了解&#xff0c;什么是中台&#xff1f;什么是微服务&#xff1f;中台和微服务之间有什么样的关系&#xff1f; 什么是中台 来自阿里官方的定义&#x…

【强化学习】TensorFlow2实现DQN(处理CartPole问题)

文章目录1. 情景介绍2. DQN&#xff08;Deep Q Network&#xff09;核心思路&#xff1a;3. DQN算法流程4. 代码实现以及注释5. 实验结果文章阅读预备知识&#xff1a;Q Learning算法的基本流程、TensorFlow2多层感知机的实现。1. 情景介绍 CartPole问题&#xff1a;黑色小车上…