【代码】使用预训练的语义分割网络

P274书上的代码,这里是从ipynb文件中按顺序复制来的:
使用到的图片如下:
在这里插入图片描述

代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import PIL
import torch
from torchvision import transforms
import torchvision
model = torchvision.models.segmentation.fcn_resnet101(pretrained=True)
model.eval()
## 读取照片
image = PIL.Image.open("Zdata/img1.jpg")
# 显示图像
plt.imshow(image)
plt.show()
## 图像预处理,转为0-1之间,标准化处理
image_transf = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize(mean = [0.485, 0.456,0.406],
                        std = [0.229, 0.224, 0.225])
])
image_tensor = image_transf(image).unsqueeze(0)

# 将图像丢入模型进行处理
output = model(image_tensor)["out"]

# 查看输出张量的形状
print("Output shape:", output.shape)

## 将输出转化为二维图像
outputarg = torch.argmax(output.squeeze(),dim=0).numpy()
outputarg

在这里插入图片描述

#对得到的输出结果进行编码
def decode_segmaps(image,label_colors,nc=21):
    """函数将输出的2D图像,会将不同的类编码为不同的颜色"""
    r = np.zeros_like(image).astype(np.uint8)
    g = np.zeros_like(image).astype(np.uint8)
    b = np.zeros_like(image).astype(np.uint8)
    for cla in range(0,nc):
        idx = image ==cla
        r[idx] = label_colors[cla ,0]
        g[idx] = label_colors[cla ,1]
        b[idx] = label_colors[cla ,2]
    rgbimage = np.stack([r,g,b],axis=2)
    return rgbimage

label_colors = np.array([(0,0,0),
                        (128,0,0),(0,128,0),(128,128,0),(0,0,128),(128,0,128),
                        (0,128,128),(128,128,128),(64,0,0),(192,0,0),(64,128,0),
                        (192,128,0),(64,0,128),(192,0,128),(64,128,128),(192,128,128),
                        (0,64,0),(128,64,0),(0,192,0),(128,192,0),(0,64,128)])
outputrgb = decode_segmaps(outputarg,label_colors)
plt.figure(figsize=(20,8))
plt.subplot(1,2,1)
plt.imshow(image)
plt.axis("off")
plt.subplot(1,2,2)
plt.imshow(outputrgb)
plt.axis("off")
plt.subplots_adjust(wspace=0.5)
plt.show()

在这里插入图片描述

output_probs = torch.tensor([[0.1, 0.6, 0.3],
                            [0.4, 0.2, 0.7]])

# 获取每个样本预测的类别索引
predicted_classes = torch.argmax(output_probs, dim=1)

print(predicted_classes)

tensor([1, 2])

注:

此处使用torch.argmax()得到的是21个类别

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【算法与数据结构】377、LeetCode组合总和 Ⅳ

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:本题明面上说是组合,实际上指的是排列。动态规划排列组合背包问题需要考虑遍历顺序。 d p …

CentOS7服务器的安装配置连接客户端Xshell进行使用

目录 一. CentOS7的安装【在虚拟机中】 二. 查看设置IP地址 三. 安装并连接客户端软件Xshell 3.1 安装Xshell 3.2 xshell连接centos7服务器 四. 切换国内源 一. CentOS7的安装【在虚拟机中】 首先创建一个虚拟机, 这个没什么好说的,基本上都是下…

【linux-虚拟化】 SR-IOV技术

文章目录 参考1. 什么是 SR-IOV?1.2. 将 SR-IOV 网络设备附加到虚拟机1.3. SR-IOV 分配支持的设备 参考 管理 SR-IOV 设备 1. 什么是 SR-IOV? 单根 I/O 虚拟化(SR-IOV)是一种规范,它允许单个 PCI Express(PCIe)设备向主机系统呈现多个独立的 PCI 设备&#xff…

【免费分享】全国道路网(分级)矢量数据

纯爱好 个人分享 数据详情 全国道路网(分级)矢量数据 地址:资源下载-数字地球开放平台 (geovisearth.com) 数据属性 数据名称:全国道路网(分级)矢量数据 道路类型分类:高速、国道、省道、铁…

科技云报道:金融大模型落地,还需跨越几重山?

科技云报道原创。 时至今日,大模型的狂欢盛宴仍在持续,而金融行业得益于数据密集且有强劲的数字化基础,从一众场景中脱颖而出。 越来越多的公司开始布局金融行业大模型,无论是乐信、奇富科技、度小满、蚂蚁这样的金融科技公司&a…

SpringMVC 环境搭建入门

SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 中。 SpringMVC 已经成为目前最主流的MVC框架之一,并且随着Spring3.0 的发布,全面…

scoped属性和深度选择器

在Vue单文件组件(SFC)中,为了防止样式全局污染,可以给 所有的scoped的css编译出来都会变成.class[哈希值]的形式 我们只能修改带data-v-0dca3a9a作用域的样式,像是 如果修改el-table的宽度 .el-table {width: 60…

开发AI软件,构建多用户AIGC系统,实现图文创作及源码交付

在AI技术不断进步的今天,AI软件开发已成为一个热门的领域。而多用户AIGC系统作为AI软件开发的重要项目之一,呈现出极大的潜力和前景。 多用户AIGC系统旨在为用户提供一个全面的图文创作平台,借助AI的力量,使创作过程更加智能化和…

python写一个彩票中奖小游戏修订版本

先说规则: print("下面介绍双色球颜色规则:")print("一等奖,投注号码与当期开奖号码全部相同(顺序不限,下同),即中奖")print("二等奖:投注号码与当期开奖号码中的6个红色球号码相同,即中奖&q…

Unity动画桢事件

1,使用原因 在新项目内部审核的时候,说什么动画节奏不匹配,所以决定用动画桢事件来处理技能释放。当释放技能的时候,先播放技能动画,然后再动画桢所在的时间戳执行技能的逻辑。 2,具体实现 1,…

openlayers+vue实现缓冲区

文章目录 前言一、准备二、初始化地图1、创建一个地图容器2、引入必须的类库3、地图初始化4、给地图增加底图 三、创建缓冲区1、引入需要的工具类库2、绘制方法 四、完整代码总结 前言 缓冲区是地理空间目标的一种影响范围或服务范围,是对选中的一组或一类地图要素(点、线或面…

跟着顶刊学科研绘图——nature配色篇(三)

只有朝着100分学习,才能想出80分的想法。 今日继续一起跟着nature培养科研绘图配色的美感。 三色对比 四色对比 五色对比 今日感悟 四色对比中,红蓝一定存在! 关注公众号“魔方科研”,随时随地获取您想要的科研信息。 参考文献…

虹科数字化与AR部门升级为安宝特AR子公司

致关心虹科AR的朋友们: 感谢您一直以来对虹科数字化与AR的支持和信任,为了更好地满足市场需求和公司发展的需要,虹科数字化与AR部门现已升级为虹科旗下独立子公司,并正式更名为“安宝特AR”。 ”虹科数字化与AR“自成立以来&…

《佛法修学概要》005-008集研讨

5、我們怎樣才能做到不隨妄轉,找修行的捷徑? 如果說要進步快,你要先找到你生命的原點,就是《楞嚴經》說的,你從什麼地方來?這個道理太重要了!就是你要住在什麼角度。如果你住在妄想的角度來處理…

第十九周周报

文章目录 摘要文献阅读DeepHuman: 3D Human Reconstruction from a Single Image(ICCV 2019)贡献摘要网络结构总结 PIFu: Pixel-Aligned Implicit Function for High-Resolution Clothed Human Digitization贡献摘要网络结构总结 Animated 3D human avatars from a single imag…

已解决Error:AttributeError: module ‘numpy‘ has no attribute ‘bool‘.

文章目录 引言报错分析解决方案1:降低NumPy版本解决方案2:更改NumPy源码 结尾 引言 在Python编程的世界里,NumPy无疑是一个不可或缺的库。它不仅在处理大规模数值计算中发挥着核心作用,而且为众多开发者提供了强大的支持。然而&a…

自然语言处理--双向匹配算法

自然语言处理作业1--双向匹配算法 一、概述 双向匹配算法是一种用于自然语言处理的算法,用于确定两个文本之间的相似度或匹配程度。该算法通常使用在文本对齐、翻译、语义匹配等任务中。 在双向匹配算法中,首先将两个文本分别进行处理,然后…

Redis核心技术与实战【学习笔记】 - 1.Redis为什么高性能

作为键值数据库,Redis 的应用非常广泛,如果你是后端工程师,我猜你出去面试,八成都会被问到与它相关的性能问题。比如说,为了保证数据的可靠性,Redis 需要在磁盘上读写 AOF 和 RDB,但在高并发场景…

WPF入门到跪下 第十一章 Prism(四)View与ViewModel的自动关联

View与ViewModel的自动关联 一、ViewModelLocator 在学习MvvmLight框架时,也使用了ViewModelLocator类。但在MvvmLight框架中,ViewModelLocator只是一个自定义类,与框架无关,目的就是初始化IoC容器。而在Prism框架中则不同&…

机房及设备安全智慧监管AI+视频方案的设计和应用

一、背景分析 随着互联网的迅猛发展,机房及其配套设施的数量持续攀升,它们的运行状况对于企业运营效率和服务质量的影响日益显著。作为企业信息化的基石,机房的安全监测与管理的重要性不容忽视。它不仅关乎企业的稳定运营,同时也…