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

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')

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

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

相关文章

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

1 PyTorch中语义分割的内置模型 在torchvision库下的models\segmentation目录中,找到segmentation.Py文件。该文件中存放着PyTorch内置的语义分割模型。 2 MaskR-CNN内置模型实现语义分割 2.1 代码逻辑简述 将COCO 2017数据集上的预训练模型dceplabv3_resnet101…

怎么查看电脑内存和配置_电脑内存不足处理方法,电脑卡死处理方法。

超过10万人正在关注赶快来关注吧,这里有你想找的热点资讯,这里有你想要的各种资料,还有海量的资源,还在等什么。快来关注,大佬带你开车。电脑系统经常奔溃,软件经常运行不了,开不了机&#xff0…

前端开源项目周报0307

由OpenDigg 出品的前端开源项目周报第十一期来啦。我们的前端开源周报集合了OpenDigg一周来新收录的优质的前端开源项目,方便前端开发人员便捷的找到自己需要的项目工具等。 react-trend 简单优雅的光线 react-progressive-web-app 优化ProgressiveWeb应用开发 pull…

【Pytorch神经网络理论篇】 35 GaitSet模型:步态识别思路+水平金字塔池化+三元损失

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

win7分区软件_神奇的工作室win7旗舰版重装系统连不上网怎么解决

深度技术win7系统下载有的时刻我们的电脑安装、重装了win10操作系统之后有的小伙伴们就发现了自己的电脑连不上网了。对于这种问题小编以为可能是我们的电脑在安装系统的过程中泛起了一些内部组件的冲突或者是由于网卡驱动没有安装好导致的,可以通过重新安装、重装驱…

【Pytorch神经网络实战案例】28 GitSet模型进行步态与身份识别(CASIA-B数据集)

1 CASIA-B数据集 本例使用的是预处理后的CASIA-B数据集, 数据集下载网址如下。 http://www.cbsr.ia.ac.cn/china/Gait%20Databases%20cH.asp 该数据集是一个大规模的、多视角的步态库。其中包括124个人,每个人有11个视角(0,18&am…

Android Camera调用流程

一个流程图画的非常好的文章 http://blog.csdn.net/lushengchu_luis/article/details/11033095 1、Packages/apps/到framework 打开Camera ./packages/apps/Camera/src/com/android/camera/Camera.java 进来第一个肯定是onCreate(Bundle icicle) { 这里是开始了一个Camera…

【Pytorch神经网络实战案例】29 【代码汇总】GitSet模型进行步态与身份识别(CASIA-B数据集)

1 GaitSet_DataLoader.py import numpy as np # 引入基础库 import os import torch.utils.data as tordata from PIL import Image from tqdm import tqdm import random# 1.1定义函数,加载文件夹的文件名称# load_data函数, 分为3个步骤:…

linq from 多个sum_快手重拳打击劣质电商 7月以来封禁700多个团伙账号

何为劣质电商?炒作演戏?PK售卖劣质商品?私下交易?夸大其词?……在快手电商的定义里,有上述不良行为的,都可以定义为劣质电商。快手电商站内官方号“快手卖货助手”日前发布第 11 期“自售或PK销…

win10怎么更改账户名称_Win10邮件功能如何查看邮件

win10的用户当中,一方面有说系统臃肿的,另外一方面有说功能多了不少,好用。不管是出于前者还是后者,win10功能确实多了不少,尤其是一些比较常用的功能,比如说邮箱功能,一般用户可能会选择登录网…

AttributeError: ‘set‘ object has no attribute ‘items‘

AttributeError: ‘set’ object has no attribute ‘items’ 出现这个问题,原因可能是定义的header有问题 正确如下: header{“key”:“value”} 如果是直接在请求数据中复制,很有可能会忽略键和值的冒号。

使用eclipse以及Juint进行测试

打开eclipse后,点击左上角的File,新建一个project,命名为testJunit,然后在src目录下新建两个包,分别命名为TestScore和Test(这是文件夹里没有文件所以是白色)。 在TestScore中新建一个class,命名为Score.ja…

excel单元格下拉选项怎么设置_单元格下拉效果怎么实现?

单元格右边的下拉菜单怎么做的?感觉逼格略有提升啊上视频单元格下来效果https://www.zhihu.com/video/1249633577441800192

电脑如何测网速_物联网卡的网速到底怎么样呢

最近不少朋友发私信问我,物联网卡网速到底怎么样,和手机卡的网速有没有什么区别?其实关于网速这个问题,我已经重复解释了很多遍。只要是走公网的流量卡,在不限速的情况下,基本是和你手机卡网速是一致的&…

dll可以在linux下使用吗_Linux下安装和使用杀毒软件AntiVir

小白玩转智能数据湖,20分钟开发实时豆瓣评分Top20电影的脚本!>>> 提起计算机病毒来,可谓人人皆知,有些吃过病毒苦头的人更是有点谈虎色变的感觉。其实无论对于企业还是个人,病毒的危害都是不可避免的&#xf…

[转]微信小程序登录逻辑梳理

本文转自:http://www.jianshu.com/p/d9996cafdb31 官方文档 文档相关地址: 用户登录 获取用户数据 用户数据的签名验证和加解密 登录时序图.png微信两个api所拿到的信息:login和getUserInfo 返回的信息.png注册/登录 小程序端: 通过上面wx.login和wx.getUserInfo两个…

转一篇写的比较好的camera文档[Camera 图像处理原理分析]

色彩篇(一) 1 前言 做为拍照手机的核心模块之一,camera sensor效果的调整,涉及到众多的参数,如果对基本的光学原理及sensor软/硬件对图像处理的原理能有深入的理解和把握的话,对我们的工作将会起…

201521123061 《Java程序设计》第三周学习总结

1. 本章学习总结 2. 书面作业 **Q1.代码阅读 public class Test1 { private int i 1;//这行不能修改 private static int j 2; public static void main(String[] args) {geti();Test1getj(); }public static void geti() {System.out.println(i); }public static void getj(…

自带flash的浏览器_解决Flash插件已被屏蔽的问题(谷歌、火狐、IE、Edge)

病症,浏览器界面中显示 adobe flash player 已被屏蔽:作为产品运营,作为经常必须可能要接触到Flash/Html5视频应用的人来员;作为曾开发过flash产品的我来说,这题,我会。并且,提供三种解决方式。…