【无标题】

就像无数人从敲下“Hello World”开始代码之旅一样,许多研究员从“MNIST数据集”开启了人工智能的探索之路。

MNIST数据集(Mixed National Institute of Standards and Technology database)是一个用来训练各种图像处理系统的二进制图像数据集,广泛应用于机器学习中的训练和测试。

作为一个入门级的计算机视觉数据集,发布20多年来,它已经被无数机器学习入门者“咀嚼”千万遍,是最受欢迎的深度学习数据集之一。
一、数据集简介

发布方:National Institute of Standards and Technology(美国国家标准技术研究所,简称NIST)

发布时间:1998

背景:

该数据集的论文想要证明在模式识别问题上,基于CNN的方法可以取代之前的基于手工特征的方法,所以作者创建了一个手写数字的数据集,以手写数字识别作为例子证明CNN在模式识别问题上的优越性。

简介:

MNIST数据集是从NIST的两个手写数字数据集:Special Database 3 和Special Database 1中分别取出部分图像,并经过一些图像处理后得到的。

MNIST数据集共有70000张图像,其中训练集60000张,测试集10000张。所有图像都是28×28的灰度图像,每张图像包含一个手写数字。

二、数据集详细信息

  1. 数据量

训练集60000张图像,其中30000张来自NIST的Special Database 3,30000张来自NIST的Special Database 1。

测试集10000张图像,其中5000张来自NIST的Special Database 3,5000张来自NIST的Special Database 1。

  1. 标注量

每张图像都有标注。

  1. 标注类别

共10个类别,每个类别代表0~9之间的一个数字,每张图像只有一个类别。

4.可视化在这里插入图片描述
首先定义了一些超参数,包括类别个数、迭代次数、学习率和批次大小。接下来,创建了训练集和测试集的数据集对象。train_dataset对象表示训练集,通过指定train=True来加载训练集。test_dataset对象表示测试集,通过指定train=False来加载测试集。在加载数据集时,还进行了一些预处理操作。使用了transforms.Compose()函数来将多个预处理操作组合起来。这里使用了两个预处理操作:Resize将图像大小调整为28x28像素,ToTensor将图像转换为Tensor类型。这样,训练集和测试集的数据集对象就创建好了。接下来可以使用DataLoader来实现数据的批量加载和随机打乱。然后设计卷积神经网络,进行训练。在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
口罩识别
准备工具

创立MASk文件夹,子文件夹为images和labels。打开labelimg
在这里插入图片描述
开始打标签,为mask和no mask
之后将yolo格式数据集转化为coco数据集上传到飞桨

在飞桨创立数据集
建立项目
在这里插入图片描述
修改训练要求
在这里插入图片描述
更改环境选择gpu,这个要领飞桨的算力
然后更改训练文件
在这里插入图片描述
训练完后下载模型
在这里插入图片描述
进入yolov5支持d的netron可视化网页界面在这里插入图片描述
进行模型剪枝
在这里插入图片描述
模型转换
在这里插入图片描述
在这里插入图片描述
在jupyter上运行模型推理代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
label_path = “labels.txt”
yoloe_model_path = “ppyoloe_crn_s_80.xml”
predictor = Predictor(model_path = yoloe_model_path)
boxes_name = predictor.get_outputs_name(0)
conf_name = predictor.get_outputs_name(1)
labels = read_label(label_path=label_path)
cap = cv.VideoCapture(0)
while cap.isOpened():
ret, frame = cap.read()
frame = cv.flip(frame, 180)
cv.namedWindow(“MaskDetection”, 0) # 0可调大小,注意:窗口名必须imshow里面的一窗口名一直
cv.resizeWindow(“MaskDetection”, 640, 480) # 设置长和宽
input_frame = process_image(frame, 640)
results = predictor.predict(input_data=input_frame)
boxes, scores, classes = process_result(box_results=results[boxes_name], conf_results=results[conf_name])
result_frame = draw_box(image=frame, boxes=boxes, scores=scores, classes=classes, labels=labels)
cv.imshow(‘MaskDetection’, result_frame)
key = cv.waitKey(1)
if key == 27: #esc退出
break
cap.release()
cv.destroyAllWindows()
label_path = “labels.txt”
yoloe_model_path = “ppyoloe_crn_s_80.xml”
predictor = Predictor(model_path = yoloe_model_path)
input_layer = predictor.get_inputs_name(0)
labels = read_label(label_path=label_path)
cap = cv.VideoCapture(0)
curr_request = predictor.get_request()
next_request = predictor.get_request()
ret, frame = cap.read()
curr_frame = process_image(frame, 640)
curr_request.set_tensor(input_layer, ov.Tensor(curr_frame))
curr_request.start_async()
while cap.isOpened():
ret, next_frame = cap.read()
next_frame = cv.flip(next_frame, 180)
cv.namedWindow(“MaskDetection”, 0) # 0可调大小,注意:窗口名必须imshow里面的一窗口名一直
cv.resizeWindow(“MaskDetection”, 640, 480) # 设置长和宽
in_frame = process_image(next_frame, 640)
next_request.set_tensor(input_layer, ov.Tensor(in_frame))
next_request.start_async()
if curr_request.wait_for(-1) == 1:
boxes_name = curr_request.get_output_tensor(0).data
conf_name = curr_request.get_output_tensor(1).data
boxes, scores, classes = process_result(box_results=boxes_name, conf_results=conf_name)
frame = draw_box(image=frame, boxes=boxes, scores=scores, classes=classes, labels=labels)
cv.imshow(‘MaskDetection’, frame)
frame = next_frame
curr_request, next_request = next_request, curr_request
key = cv.waitKey(1)
if key == 27: #esc退出
break
cap.release()
cv.destroyAllWindows()

然后就成功了在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值