【pytorch-ssd目标检测】可视化检测结果
时间:2022-07-23
本文章向大家介绍【pytorch-ssd目标检测】可视化检测结果,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
制作类似pascal voc格式的目标检测数据集:https://www.cnblogs.com/xiximayou/p/12546061.html
训练自己创建的数据集:https://www.cnblogs.com/xiximayou/p/12546556.html
验证自己创建的数据集:https://www.cnblogs.com/xiximayou/p/12550471.html
测试自己创建的数据集:https://www.cnblogs.com/xiximayou/p/12550566.html
还是以在谷歌colab上为例:
cd /content/drive/My Drive/pytorch_ssd
导入相应的包:
import os
import sys
module_path = os.path.abspath(os.path.join('..'))
if module_path not in sys.path:
sys.path.append(module_path)
import torch
import torch.nn as nn
import torch.backends.cudnn as cudnn
from torch.autograd import Variable
import numpy as np
import cv2
if torch.cuda.is_available():
torch.set_default_tensor_type('torch.cuda.FloatTensor')
from ssd import build_ssd
加载谷歌网盘:
from google.colab import drive
drive.mount('/content/drive')
加载模型:
net = build_ssd('test', 300, 3) # initialize SSD
net.load_weights('weights/ssd300_MASK_5000.pth')
可视化要检测的图像:
# image = cv2.imread('./data/example.jpg', cv2.IMREAD_COLOR) # uncomment if dataset not downloaded
%matplotlib inline
from matplotlib import pyplot as plt
from data import MASKDetection, MASK_ROOT, MASKAnnotationTransform
# here we specify year (07 or 12) and dataset ('test', 'val', 'train')
mask_root="/content/drive/My Drive/pytorch_ssd"
testset = MASKDetection(mask_root, "val", None, MASKAnnotationTransform())
img_id = 2
image = testset.pull_image(img_id)
rgb_image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# View the sampled input image before transform
plt.figure(figsize=(10,10))
plt.imshow(rgb_image)
plt.show()
调整图片的格式:
x = cv2.resize(image, (300, 300)).astype(np.float32)
x -= (104.0, 117.0, 123.0)
x = x.astype(np.float32)
x = x[:, :, ::-1].copy()
plt.imshow(x)
x = torch.from_numpy(x).permute(2, 0, 1)
使用模型进行预测:
xx = Variable(x.unsqueeze(0)) # wrap tensor in Variable
if torch.cuda.is_available():
xx = xx.cuda()
y = net(xx)
输出结果:
from data import MASK_CLASSES as labels
top_k=3
plt.figure(figsize=(10,10))
colors = plt.cm.hsv(np.linspace(0, 1, 3)).tolist()
plt.imshow(rgb_image) # plot the image for matplotlib
currentAxis = plt.gca()
detections = y.data
# scale each detection back up to the image
scale = torch.Tensor(rgb_image.shape[1::-1]).repeat(2)
for i in range(detections.size(1)):
j = 0
while detections[0,i,j,0] >= 0.6:
score = detections[0,i,j,0]
label_name = labels[i-1]
display_txt = '%s: %.2f'%(label_name, score)
pt = (detections[0,i,j,1:]*scale).cpu().numpy()
coords = (pt[0], pt[1]), pt[2]-pt[0]+1, pt[3]-pt[1]+1
color = colors[i]
currentAxis.add_patch(plt.Rectangle(*coords, fill=False, edgecolor=color, linewidth=2))
currentAxis.text(pt[0], pt[1], display_txt, bbox={'facecolor':color, 'alpha':0.5})
j+=1
由于我的数据集中很少没有戴口罩的样本,因此没有戴口罩的AP较低。
至此,使用pytorch-ssd训练测试自己数据集就全部完成啦。
- [LeetCode]Math主题系列{第7,9,13,273题}
- 被忽视的攻击面:Python package 钓鱼
- [LeetCode]LinkedList主题系列{第2题}
- [LeetCode]HashTable主题系列{第3题}
- 如何使用Oozie API接口向Kerberos集群提交Java程序
- [LeetCode]Array主题系列{35,39,40,48题}
- 如何使用Sqoop2
- [LeetCode]Array主题系列{1,11,15,16,18,26,27,31,33,34题}
- Bwapp漏洞平台答案全解-A1(第三篇)
- pom.xml配置文件中所有标签及作用简单描述
- 关于C#获取动态的时间差函数
- SQL Server 存储过程
- ubuntu中配置hadoop
- jQuery选择器大全(48个代码片段+21幅图演示)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 模拟赛 2018 Benelux Algorithm Programming Contest (BAPC 18)(部分题)
- vue动态生成表单组件vue-form-maker
- 对顶堆求区间k小(大)数
- 祖传快读快写模板
- 进阶版树状数组
- Julia 生产环境就绪了吗?我们跟项目维护者聊了聊
- 《2017年内蒙古自治区第十二届大学生程序设计-超级密码》
- 知识图谱入门(三)
- xmuC语言程序实践week 2 大作业
- redis学习(二十三)
- Vue 轻量级后台管理系统基础模板
- R语言对混合分布中的不可观测与可观测异质性因子分析
- JavaScript同步、异步及事件循环
- Node.js开发人员都应该知道的12个有用的包
- 欧拉函数的几条重要性质