1 Pytorch中的目标检测内置模型

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

2 MaskR-CNN内置模型实现目标检测

2.1 代码逻辑简述

将COCO2017数据集上的预训练模型maskrcnm_resnet50_fpn_coco加载到内存,并使用该模型对图片进行目标检测。

2.2 代码实战 :MaskR-CNN内置模型实现目标检测

Maskrcnn_resent_Object Detection.py

from PIL import Image
import matplotlib.pyplot as plt
import torchvision.transforms as T
import torchvision
import numpy as np
import cv2
import random
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'# 加载模型
model = torchvision.models.detection.maskrcnn_resnet50_fpn(pretrained=True)
model.eval()
# 标签
COCO_INSTANCE_CATEGORY_NAMES = ['__background__', 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus','train', 'truck', 'boat', 'traffic light', 'fire hydrant', 'N/A', 'stop sign','parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow','elephant', 'bear', 'zebra', 'giraffe', 'N/A', 'backpack', 'umbrella', 'N/A', 'N/A','handbag', 'tie', 'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball','kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', 'tennis racket','bottle', 'N/A', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl','banana', 'apple', 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza','donut', 'cake', 'chair', 'couch', 'potted plant', 'bed', 'N/A', 'dining table','N/A', 'N/A', 'toilet', 'N/A', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone','microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'N/A', 'book','clock', 'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush']def get_prediction(img_path, threshold): # 定义模型,并根据阈值过滤结果img = Image.open(img_path).convert('RGB') # 需要转化:RuntimeError: The size of tensor a (4) must match the size of tensor b (3) at non-singletontransform = T.Compose([T.ToTensor()])img = transform(img)# MaskR - CNN模型会返回一个字典对象,该字典对象中包含如下key值:#                 boxes∶每个目标的边框信息。#                 labels:每个目标的分类信息。#                 scores:每个目标的分类分值。#                 masks:每个目标的像素掩码(Mask)。pred = model([img]) # 调用模型print('pred')print(pred)pred_score = list(pred[0]['scores'].detach().numpy())pred_t = [pred_score.index(x) for x in pred_score if x > threshold][-1]print("masks>0.5")print(pred[0]['masks'] > 0.5)masks = (pred[0]['masks'] > 0.5).squeeze().detach().cpu().numpy()print("this is masks")print(masks)pred_class = [COCO_INSTANCE_CATEGORY_NAMES[i] for i in list(pred[0]['labels'].numpy())]pred_boxes = [[(i[0], i[1]), (i[2], i[3])] for i in list(pred[0]['boxes'].detach().numpy())]masks = masks[:pred_t + 1]pred_boxes = pred_boxes[:pred_t + 1]pred_class = pred_class[:pred_t + 1]return masks, pred_boxes, pred_classdef random_colour_masks(image):colours = [[0, 255, 0], [0, 0, 255], [255, 0, 0], [0, 255, 255], [255, 255, 0], [255, 0, 255], [80, 70, 180],[250, 80, 190], [245, 145, 50], [70, 150, 250], [50, 190, 190]]r = np.zeros_like(image).astype(np.uint8)g = np.zeros_like(image).astype(np.uint8)b = np.zeros_like(image).astype(np.uint8)randcol = colours[random.randrange(0, 10)]r[image == 1] = randcol[0]g[image == 1] = randcol[1]b[image == 1] = randcol[2]coloured_mask = np.stack([r, g, b], axis=2)print("randcol",randcol)return coloured_mask, randcoldef instance_segmentation_api(img_path, threshold=0.5, rect_th=3, text_size=3, text_th=5): # 进行目标检测masks, boxes, pred_cls = get_prediction(img_path, threshold)  # 调用模型print("已加载COCO标签类数:", len(COCO_INSTANCE_CATEGORY_NAMES))img = cv2.imread(img_path)img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)for i in range(len(masks)):rgb_mask, randcol = random_colour_masks(masks[i])  # 使用随机颜色为模型的掩码区进行填充。img = cv2.addWeighted(img, 1, rgb_mask, 0.5, 0)# 元组里面有小数,需要转化为整数 否则报错T1,T2 =  boxes[i][0],boxes[i][1]x1 = int(T1[0])y1 = int(T1[1])x2 = int(T2[0])y2 = int(T2[1])cv2.rectangle(img, (x1,y1), (x2,y2), color=randcol, thickness=rect_th)# # putText各参数依次是:图片,添加的文字,左上角坐标,字体,字体大小,颜色黑,字体粗细cv2.putText(img, pred_cls[i], (x1,y1), cv2.FONT_HERSHEY_SIMPLEX, text_size, randcol, thickness=text_th)plt.figure(figsize=(20, 30))plt.imshow(img)plt.xticks([])plt.yticks([])plt.show()# 显示模型结果
instance_segmentation_api('./models_2/mask.jpg')

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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. Centos 7 64位 minimal 最小化安装的系统中静默安装oracle 11g r2(无图形化安装)
  2. 第三次作业-介绍一款原型设计工具
  3. SAP BDC(Batch Data Conversion )技术之我见
  4. 基于xilinx异构平台上视频采集分析
  5. mysql5.7修改root密码_七小服公开课EMC isilon修改丢失的root密码
  6. 《剑指Offer》24:反转链表
  7. unix oracle数据库启用,UNIX下ORACLE数据库的创建
  8. 开始研究3D并用硬件加速器实现
  9. 大数据云端实验室项目实战-微博舆情大数据分析有感
  10. 小程序跳转样式布局错乱_微信小程序页面布局问题
  11. 对996的一些看法与个人价值实现
  12. Android中常用的传感器有哪些,手机传感器的主要类型有哪些 手机传感器的功能...
  13. MapReduce之简单K-mer计数
  14. python 高德地图交通态势爬取(存入mysql)
  15. LSTM的loss和accuracy近乎不变问题
  16. 有道云笔记中markdown插入本地图片(绝对路径)后无法显示图片问题
  17. 仿生学计算机pdf,基于仿生学的计算智能系统论文.pdf
  18. 小米6.0系统设备一键激活xposed框架的经验
  19. (CNS复现)CLAM——Chapter_03
  20. 亿级以上的数据量 ES如何优化

热门文章

  1. 小结三种控制路由发布的方法
  2. Python面试题总结(6)--数据类型(综合)
  3. Python 第三方模块之 imgaug (图像增强)
  4. Linux 监控命令之 vmstat
  5. macbook所有型号大全_苹果笔记本型号大全
  6. 怎么用计算机画正弦函数图像,几何画板如何绘制正弦函数图象
  7. ]数据结构:单链表之判断两个链表是否相交及求交点(带环、不带环)
  8. STM32的串口通信
  9. ubuntu16.04下安装NS-2.35以及对simple例的理解
  10. RHadoop和CDH整合实例(三)- RHive