1 PyTorch中语义分割的内置模型

在torchvision库下的models\segmentation目录中,找到segmentation.Py文件。该文件中存放着PyTorch内置的语义分割模型。

2 MaskR-CNN内置模型实现语义分割

2.1 代码逻辑简述

将COCO 2017数据集上的预训练模型dceplabv3_resnet101_coco加载到内存,并使用该模型对图片进行语义分割。

2.2 代码实现:MaskR-CNN内置模型实现语义分割

Maskrcnn_resent_Semantic_Segmentation.py

import torch
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
from torchvision import models
from torchvision import  transforms
import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"# 获取模型,如果本地没有缓存,则下载
model = models.segmentation.deeplabv3_resnet101(pretrained=True) # 调用内置模型,并使用预训练权重进行初始化。
model.eval() # 不然报错 Expected more than 1 value per channel when training, got input size torch.Size# 在图片的数据输入网络之前,对图片进行预处理
transform = transforms.Compose([transforms.Resize(256), # 将图片尺寸调整为256×256transforms.CenterCrop(224), # 中心裁剪成224×224transforms.ToTensor(), # 转换成张量归一化到[0,1]transforms.Normalize( # 使用均值,方差标准化mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225])
])def preimg(img): # 定义图片预处理函数if img.mode == 'RGBA':  # 兼容RGBA图片ch = 4print('ch', ch)a = np.asarray(img)[:, :, :3]img = Image.fromarray(a)return img# 加载要预测的图片
img = Image.open('./models_2/mask.jpg') # 将图片输入模型,进行预测。
# 模型预测的输出是一个OrderedDict结构。deeplabv3_resnet101模型的图片输入尺寸是[224,224],输出形状是[1,21,224,224],代表20+1(背景)个类别。
plt.imshow(img)
plt.axis('off')
plt.show() # 显示加载图片
im = preimg(img)
# 对输入数据进行维度扩展,成为NCHW
inputimg = transform(im).unsqueeze(0)# 显示用transform转化后的图片
tt = np.transpose(inputimg.detach().numpy()[0],(1,2,0))
plt.imshow(tt.astype('uint8')) # 不然报错:Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers)
plt.show()output = model(inputimg) # 将图片输入模型
print("输出结果的形状:",output['out'].shape)
# 去掉批次维度,提取结果。使用argmax函数在每个像素点的21个分类中选出概率值最大的索引,为预测结果。
output = torch.argmax(output['out'].squeeze(), dim=0).detach().cpu().numpy()
resultclass = set(list(output.flat))
print("所发现的分类:",resultclass)
# 所发现的分类.{0,13,15}
# 模型从图中识别出了两个类别的内容。索引值13和15分别对应分类名称“马”和“人”。def decode_segmap(image,nc=21): # 对图片中的每个像素点根据其所属类别进行染色。不同的类别显示不同的颜色。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)])r = np.zeros_like(image).astype(np.uint8)  # 初始化RGBg = np.zeros_like(image).astype(np.uint8)b = np.zeros_like(image).astype(np.uint8)for l in range(0, nc):  # 根据预测结果进行染色idx = image == lprint("idx:",idx)r[idx] = label_colors[l, 0]g[idx] = label_colors[l, 1]b[idx] = label_colors[l, 2]return np.stack([r, g, b], axis=2)  # 返回结果rgb = decode_segmap(output)
img = Image.fromarray(rgb)
plt.axis('off') # 显示模型的可视化结果
print("快完了")
plt.imshow(img)
plt.show()

【Pytorch神经网络实战案例】27 MaskR-CNN内置模型实现语义分割相关推荐

  1. 【Pytorch神经网络实战案例】26 MaskR-CNN内置模型实现目标检测

    1 Pytorch中的目标检测内置模型 在torchvision库下的modelsldetecton目录中,找到__int__.py文件.该文件中存放着可以导出的PyTorch内置的目标检测模型. 2 ...

  2. 【Pytorch神经网络实战案例】21 基于Cora数据集实现Multi_Sample Dropout图卷积网络模型的论文分类

    Multi-sample Dropout是Dropout的一个变种方法,该方法比普通Dropout的泛化能力更好,同时又可以缩短模型的训练时间.XMuli-sampleDropout还可以降低训练集和 ...

  3. 【Pytorch神经网络实战案例】23 使用ImagNet的预训练模型识别图片内容

    1 案例基本工具概述 1.1 数据集简介 Imagenet数据集共有1000个类别,表明该数据集上的预训练模型最多可以输出1000种不同的分类结果. Imagenet数据集是目前深度学习图像领域应用得 ...

  4. 【Pytorch神经网络实战案例】18 最大化深度互信信息模型DIM实现搜索最相关与最不相关的图片

    图片搜索器分为图片的特征提取和匹配两部分,其中图片的特征提取是关键.将使用一种基于无监督模型的提取特征的方法实现特征提取,即最大化深度互信息(DeepInfoMax,DIM)方法. 1 最大深度互信信 ...

  5. 【Pytorch神经网络实战案例】15 WGAN-gp模型生成Fashon-MNST模拟数据

    1 WGAN-gp模型生成模拟数据案例说明 使用WGAN-gp模型模拟Fashion-MNIST数据的生成,会使用到WGAN-gp模型.深度卷积GAN(DeepConvolutional GAN,DC ...

  6. 【Pytorch神经网络实战案例】40 TextCNN模型分析IMDB数据集评论的积极与消极

    卷积神经网络不仅在图像视觉领域有很好的效果,而且在基于文本的NLP领域也有很好的效果.TextCN如模型是卷积神经网络用于文本处理方面的一个模型. 在TextCNN模型中,通过多分支卷积技术实现对文本 ...

  7. 【Pytorch神经网络实战案例】20 基于Cora数据集实现图卷积神经网络论文分类

    1 案例说明(图卷积神经网络) CORA数据集里面含有每一篇论文的关键词以及分类信息,同时还有论文间互相引用的信息.搭建AI模型,对数据集中的论文信息进行分析,根据已有论文的分类特征,从而预测出未知分 ...

  8. 【Pytorch神经网络实战案例】01 CIFAR-10数据集:Pytorch使用GPU训练CNN模版-方法①

    import torch import torchvision from torch import nn from torch.utils.tensorboard import SummaryWrit ...

  9. 【Pytorch神经网络实战案例】02 CIFAR-10数据集:Pytorch使用GPU训练CNN模版-方法②

    import torch import torchvision from torch import nn from torch.utils.tensorboard import SummaryWrit ...

最新文章

  1. oracle根据一张表更新另外一张表
  2. 如何看待团队合作这件事?
  3. 世博、城市云和2020
  4. 好好学python · 元组
  5. Linux动态库应用
  6. NDK Socket编程:面向连接的通信(tcp)
  7. 百万级并发 Node.js也能行
  8. freebsd下支持LATEX书写数学公式的网站搭建
  9. SFML 与 VS2015 的安装配置
  10. 《算法图解》之选择排序
  11. Python 参数解析(getopt模块)
  12. 一个html页面最多写多少代码,在多个页面使用同一个HTML片段的代码
  13. winform窗体界面闪烁解决办法
  14. 智慧城管系统提高城市综合管理水平
  15. 浅析地理数据模型发展
  16. AI上推荐 之 MIND(动态路由与胶囊网络的奇光异彩)
  17. scheme语言编写执行
  18. wkhtmltopdf下载pdf有个别字体是乱码
  19. 微信新版本(6.6.7)功能设计背后的逻辑及需求
  20. 用Matlab实现猫变虎简单动画

热门文章

  1. 三次握手的第三个ACK包丢了,会发生什么?
  2. jsp中%@ % 与% % 与%! %
  3. Flask爱家租房--城区信息
  4. matlab如何用代码导入文件_20+行Matlab代码实现文件扫描
  5. html表格里的超链接点不了,Excel如何添加和取消超链接 Excel超链接打不开是怎么回事...
  6. tornado学习笔记day05-访问数据库
  7. Django-session的存放位置
  8. java.lang.IllegalArgumentException: Does not contain a valid host:port authority: ignorethis
  9. 第二季3:海思MPP模块与视频缓冲池
  10. 选购四轴飞行器的部件