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

news2024/12/28 20:42:06

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个类别

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

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

相关文章

华为机考入门python3--(4)牛客4-字符串分隔

分类:字符串 知识点: 复制符号* 复制3个0 0*3 000 字符串截取 截取第i位到j-1位 str[i:j] 题目来自【牛客】 input_str input().strip()# 先补齐 if len(input_str) % 8 ! 0: input_str 0 * (8 - len(input_str) % 8) # 每8个分 out…

嵌入式软件工程师面试题——2025校招社招通用(C/C++)(四十四)

说明: 面试群,群号: 228447240面试题来源于网络书籍,公司题目以及博主原创或修改(题目大部分来源于各种公司);文中很多题目,或许大家直接编译器写完,1分钟就出结果了。但…

win10通过ssh链接deepin23并开启x11转发

前提 主机环境:win10 lstc 虚拟机环境:deepin23beta2 终端:tabby x11服务器: vcxsrv 安装ssh sudo apt install ssh开启root登录(看你需求) 首先你要给root账号设置密码 sudo passwd root修改配置文件 sudo vim /etc/ssh/ss…

源聚达科技:抖店的专营店怎么开

在数字化浪潮的推动下,抖音平台不仅为人们提供了丰富的娱乐内容,也成为了电商的新战场。不少创业者和品牌商纷纷选择在抖音上开设自己的专营店,以此抓住流量红利,拓宽销售渠道。那么,如何在抖音平台上成功开设一家专营…

Redis实现多种限流算法

一 常见限流算法 1 固定窗口限流 每一个时间段计数器,当计数器达到阈值后拒绝,每过完这个时间段,计数器重置0,重新计数。 优点:实现简单,性能高; 缺点:明显的临界问题&#xff0c…

PBM模型学习(五)UDF生长模型

DEFINE_PB_GROWTH_RATE(name, cell, thread, d_i) 该UDF在每个时间步开始时执行,只有在时间步开始时,颗粒粒径才会更新,同时才会UDF才会向文件写入数据GR单位是m/sC_PHASE DIAMETER(c,ts):返回颗粒粒径???,ts为颗粒相的线程C_VOF(cell,thread):颗粒相总体积C_PB DISCI(c…

在DevEco开发工具中,使用Previewer预览界面中的UI组件

1、在DevEco工具中,点击并展开PreViewer预览器 2、在PreViewer预览器中,点击Tt按钮(Inspector)切换至组件查看模式 3、在组件查看模式下选择组件,代码呈现选中状态,右侧呈现组件树,右下方呈现组…

FLStudio21.2.2国内中文版本怎么下载?

FL studio简称FL,全称:Fruity Loops Studio。在中国我们习惯叫它"水果"。它让你的计算机就像是全功能的音乐工作站,大混音盘,非常先进的制作工具,让你的音乐突破想象力的限制。 FL Studio主要功能 1、FL St…

Authorization Failed You can close this page and return to the IDE

一.问题描述 注册JetBrains成功,并且通过了学生认证,但在activate pycharm时,却显示Authorization Failed You can close this page and return to the IDE如上图 二.原因: 可能是因为之前使用了破解版pycharm 三.解决方法&am…

2024阿里云和腾讯云的第一战打响:搭建《幻兽帕鲁》私服游戏

为了搭建《幻兽帕鲁》游戏私服, 2024年阿里云 VS 腾讯云的第一场战争开始了…… 事情是这样的: 1月19日,最离谱新游 《幻兽帕鲁》突然爆火了,这是一款日本开发商展耗费4年开发的冒险类游戏,这款戏一推出就迅速俘获了…

KT6368A蓝牙芯片开发app小程序接口api里面的device ID是什么?

KT6368A蓝牙芯片开发app或者小程序的时候,给出的接口api,里面的device ID是什么? 有客户在开发app的过程中,问到我们device ID的问题 其实这个问题您稍微有点方法,直接百度搜搜就很清楚了,但是没办法&…

Linux 网络流量相关工具

本文聚焦于网络流量的查看、端口占用查看。至于网络设备的管理和配置,因为太过复杂且不同发行版有较大差异,这里就不赘述,后面看情况再写。 需要注意的是,这里列出的每一个工具都有丰富的功能,流量/端口信息查看只是其…

uniCloud发行部署H5进行网页托管

生成文件,生成文件这个和我们平时用uniapp 生成H5的时候是一样的,我们可以选择hash 或者history 模式,默认的这是显示的根目录,如果我们在根目录下建立了H5目录,那么我们在发布H5的时候,是需要在manifest.j…

vue3 codemirror关于 sql 和 json格式化的使用以及深入了解codemirror 使用json格式化提示错误的关键代码

文章目录 需求说明0、安装1. 导入js脚本2.配置3.html处使用4.js处理数据(1)json格式化处理(2)sql格式化处理 5. 解决问题1:json格式化错误提示报错(1)打开官网(2)打开官网&#xff0…

【css揭秘】

文章目录 背景与边框半透明边框多重边框box-shadowoutline 背景定位background-positionbackground-origincalc() 条纹背景水平条纹 形状圆形圆柱自适应的椭圆半椭圆四分之一椭圆 背景与边框 半透明边框 目标:给一个容器设置一层白色背景和一道半透明白色边框 写…

机器学习_集成学习之Bagging(集成多个模型,以降低整体的方差)

文章目录 Bagging 算法 —— 多个基模型的聚合决策树的聚合从树的聚合到随机森林从随机森林到极端随机森林 Bagging 算法 —— 多个基模型的聚合 Bagging 是我们要讲的第一种集成学习算法,是Bootstrap Aggregating 的缩写。有人把它翻译为套袋法、装袋法&#xff0…

Flutter App 生命周期观察监听

前言 本文主要讲解两种 Flutter生命周期观察监听 方式一:Flutter SDK 3.13 之前的方式,WidgetsBindingObserver; 方式二:Flutter SDK 3.13 开始的新方式,AppLifecycleListener; 测试平台:IO…

HCS 华为云Stack产品组件

HCS 华为云Stack产品组件 Cloud Provisioning Service(CPS) 负责laas的云平台层的部署和升级是laas层中真正面向硬件设备,并将其池化软件化的部件。 Service OM 资源池(计算/存储/网络)以及基础云服务(ECS/EVS/PC)的管理工具。 ManageOne ManageOne包括服务中心…

IMX6ULL驱动学习——通过总线设备驱动模型点亮野火开发板小灯【参考韦东山老师教程】

参考:【IMX6ULL驱动开发学习】11.驱动设计之面向对象_分层思想(学习设备树过渡部分)-CSDN博客 韦东山课程:LED模板驱动程序的改造_总线设备驱动模型 我使用的开发板:野火imx6ull pro 欢迎大家一起讨论学习 实现了总线设…

大型语言模型基础知识的可视化指南

直观分解复杂人工智能概念的工具和文章汇总 如今,LLM(大型语言模型的缩写)在全世界都很流行。没有一天不在宣布新的语言模型,这加剧了人们对错过人工智能领域的恐惧。然而,许多人仍在为 LLM 的基本概念而苦苦挣扎&…