当前位置: 首页 > news >正文

【Pytorch项目实战】基于PaddlenHub的口罩检测与语音提示

文章目录

  • 一、项目思路
  • 二、环境配置
    • 1.1、PaddlenHub模块(飞桨预训练模型应用工具)
      • (1)预训练模型:pyramidbox_lite_mobile_mask
      • (2)face_detection人脸检测模型(默认为 pyramidbox_lite_mobile)
      • (3)PaddleHub与PytorchHub的区别
      • (4)安装(paddlehub + paddlepaddle)
    • 1.2、PlaySound模块(音频播放)
  • 三、项目实战:基于PaddlenHub的口罩检测与语音提示(Opencv)

一、项目思路

(1)调用PaddlenHub模块口罩检测预训练模型,通过PaddlenHub.face_detectionAPI,完成图片检测或实时检测任务。
(2)若未佩戴口罩,则使用PlaySound模块播放录制的MP3文件(一秒钟提示音),完成警告提示。

二、环境配置

1.1、PaddlenHub模块(飞桨预训练模型应用工具)

  • PaddleHub 是基于 PaddlePaddle 开发的预训练模型管理工具。PaddlenHub官网
  • 配合使用 Fine-tune API,快速完成迁移学习到应用部署的全流程工作。让预训练模型能更好地服务于用户特定场景的应用,也让开发者体验到大规模预训练模型的价值。
  • PaddleHub 目前提供的预训练模型覆盖了图像分类、目标检测、词法分析、Transformer、情感分析五大类别

(1)预训练模型:pyramidbox_lite_mobile_mask

PyramidBox-Lite是基于2018年百度发表于计算机视觉顶级会议ECCV 的论文所提出的PyramidBox网络而研发的轻量级模型。

  • 模型基于主干网络FaceBoxes,对于光照、口罩遮挡、表情变化、尺度变化等常见问题具有很强的鲁棒性。
  • 该PaddleHub Module是针对于移动端优化过的模型,适合部署于移动端或者边缘检测等算力受限的设备上。
  • 可用于检测人脸是否佩戴口罩。

在这里插入图片描述

(2)face_detection人脸检测模型(默认为 pyramidbox_lite_mobile)

作用:识别输入图片中的所有的人脸,并判断有无戴口罩。

def face_detection(images=None, paths=None, batch_size=1, use_gpu=False, visualization=False, output_dir='detection_result', use_multi_scale=False, shrink=0.5, confs_threshold=0.6)"""
输入参数:(1)images (list[numpy.ndarray]): 图片数据,ndarray.shape 为 [H, W, C],BGR格式;(2)paths (list[str]): 图片的路径;(3)batch_size (int): batch 的大小;(4)use_gpu (bool): 是否使用 GPU;(5)visualization (bool): 是否将识别结果保存为图片文件;(6)output_dir (str): 图片的保存路径,默认设为 detection_result;(7)use_multi_scale (bool) : 用于设置是否开启多尺度的人脸检测,开启多尺度人脸检测能够更好的检测到输入图像中不同尺寸的人脸,但是会增加模型计算量,降低预测速度;(8)shrink (float): 用于设置图片的缩放比例,该值越大,则对于输入图片中的小尺寸人脸有更好的检测效果(模型计算成本越高),反之则对于大尺寸人脸有更好的检测效果;(9)confs_threshold (float): 置信度的阈值。输出参数:res (list[dict]): 识别结果的列表,列表中每一个元素为 dict,各字段为:(1)path (str): 原输入图片的路径(2)data (list): 检测结果,list的每一个元素为 dict,各字段为:11、label (str): 识别标签,为 'NO MASK' 或者 'MASK';22、confidence (float): 识别的置信度33、left (int): 边界框的左上角x坐标44、top (int): 边界框的左上角y坐标55、right (int): 边界框的右下角x坐标66、bottom (int): 边界框的右下角y坐标
"""

(3)PaddleHub与PytorchHub的区别

在这里插入图片描述
PytorchHub 目前支持18个模型,PaddleHub支持29个。60分钟教你上手PaddleHub

  • PytorchHub涉及的方向更多,但是每个方向的模型并不多,对CV的支持更多;
  • PaddleHub涉及的方向只有两个,CV和NLP,但是对NLP的支持尤其多,高达22个,不仅包括目前最潮的BERT,还有百度自己研发的知识增强语义表示模型Ernie,在多个中文NLP任务中表现超过BERT,除此之外还有对话系统的一系列模型,做智能客服、智能音箱的同学可以使用一下。

对于迁移学习来说,Fine-tune(微调)是必不可少的,虽然我们有预训练的模型,但是新任务的场景和数据都不相同,直接使用预训练模型其实很难得到很好的效果。


(4)安装(paddlehub + paddlepaddle)

  • 第一步:paddlehub安装
pip install paddlehub

安装后若提示:ModuleNotFoundError: No module named ‘paddle‘,则需要安装paddlepaddle。
请添加图片描述

  • 第二步:paddlepaddle安装
cpu:	pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple 
gpu:	pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple 

1.2、PlaySound模块(音频播放)

PlaySound是Windows用于播放音乐的API函数。添加模块后,检测速度会有所延迟。

函数:BOOL PlaySound(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound)

  • 参数pszSound是指定了要播放声音的字符串。(1)该参数可以是WAVE文件的名字(2)或是WAV资源的名字(3)或是内存中声音数据的指针(4)或是在系统注册表WIN.INI中定义的系统事件声音(5)如果该参数为NULL,则停止正在播放的声音。
  • 参数hmod是应用程序的实例句柄,当播放WAV资源时要用到该参数,否则它必须为NULL。
  • 参数fdwSound是播放标志的组合。(1)SND_APPLICATION:用应用程序指定的关联来播放声音。(2)SND_ALIAS:pszSound参数指定了注册表或WIN.INI中的系统事件的别名。(3)SND_ALIAS_ID:pszSound参数指定了预定义的声音标识符。(4)SND_ASYNC:用异步方式播放声音,PlaySound函数在开始播放后立即返回。(5)SND_FILENAME:pszSound参数指定了WAVE文件名。(6)SND_LOOP:重复播放声音,必须与SND_ASYNC标志一块使用。(7)SND_MEMORY:播放载入到内存中的声音,此时pszSound是指向声音数据的指针。(8)SND_NODEFAULT:不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音。(9)SND_NOSTOP:PlaySound不打断原来的声音播出并立即返回FALSE。(10)SND_NOWAIT:如果驱动程序正忙则函数就不播放声音并立即返回。(11)SND_PURGE:停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。(12)SND_RESOURCE:pszSound参数是WAVE资源的标识符,这时要用到hmod参数。(13)SND_SYNC:同步播放声音,在播放完后PlaySound函数才返回。

(1)playsound安装WIN +R + cmd + 运行 + pip install playsound。**
(2)playsound功能演示:一秒提示音下载地址

# 注意不能写成:import playsound, 将导致报错。from playsound import playsound
playsound('path/play.mp3')

运行后若出现以下报错:
在这里插入图片描述
报错原因:直接更改语音包的后缀进行格式转换,将导致报错。
解决方法:音频格式转换地址

三、项目实战:基于PaddlenHub的口罩检测与语音提示(Opencv)

在这里插入图片描述

import paddlehub
from playsound import playsound
import cv2
################################################################################################
module = paddlehub.Module(name="pyramidbox_lite_mobile_mask")       # 调用paddlehub模块中的口罩检测模型:pyramidbox_lite_mobile_mask。
cap = cv2.VideoCapture(0)                                           # 调用本机摄像头# 循环判断面部区域位置
while cap.isOpened():frame = cap.read()[1]                                   # 读取帧图像input_dict = {'data': [frame]}                          # 字典的形式存储results = module.face_detection(data=input_dict)        # face_detection:人脸检测模型result = results[0]                                     # 获取识别后的:标签、置信度、四元数组(位置)# waitKey可以控制视频的播放速度,数值越小,播放速度越快k = cv2.waitKey(1) & 0xFF                               # 0xFF == 27    表示退出键(Esc)# 若检测结果存在(即当前图像中是否有人脸)if result['data'] != []:                                # 判断字典中的某个键对应的值是否为空label = result['data'][0]['label']                  # label(str): 识别标签:'NO MASK' 或者 'MASK';left = result['data'][0]['left']                    # left(int): 边界框的左上角x坐标right = result['data'][0]['right']                  # top(int): 边界框的左上角y坐标top = result['data'][0]['top']                      # right(int): 边界框的右下角x坐标bottom = result['data'][0]['bottom']                # bottom(int): 边界框的右下角y坐标# 当判断为肯定时,绘制绿色矩形及文字if label == 'MASK':color = (0, 255, 0)color2 = (0, 255, 0)# 当判断为否定时,绘制红色矩形及文字if label == 'NO MASK':color = (0, 0, 255)color2 = (0, 0, 255)playsound(r'C:\Users\my\Desktop\output.mp3')        # 打开语音文件# 绘制矩形框 + 添加文本内容cv2.rectangle(frame, (left, top), (right, bottom), color, 3)cv2.putText(frame, label, (left, top - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.8, color2, 2)cv2.imshow('martial art', frame)# 监听键盘事件: 按空格键退出.if k == ord(' '):breakcap.release()               # 释放摄像头
cv2.destroyAllWindows()     # 释放内存

相关文章:

【Pytorch项目实战】基于PaddlenHub的口罩检测与语音提示

文章目录一、项目思路二、环境配置1.1、PaddlenHub模块(飞桨预训练模型应用工具)(1)预训练模型:pyramidbox_lite_mobile_mask(2)face_detection人脸检测模型(默认为 pyramidbox_lite…...

EasyExcel 让Excel导入导出更简单

一、什么是EasyExcel?二、对比ApachePoi 其他Excel框架 优势在于哪里三、本质上对于原生做了哪些优化?四、有哪些功能五、如何实践? 5.1 常规文件读取5.2 常规文件写入5.3 常规WEB的上传和下载 一、什么是EasyExcel? EasyExcel是对07版POI的提升和优…...

华为OD机试 - 需要广播的服务器数量 | 机试题算法思路 【2023】

最近更新的博客 华为OD机试 - 简易压缩算法(Python) | 机试题算法思路 【2023】 华为OD机试题 - 获取最大软件版本号(JavaScript) 华为OD机试 - 猜字谜(Python) | 机试题+算法思路 【2023】 华为OD机试 - 删除指定目录(Python) | 机试题算法思路 【2023】 华为OD机试 …...

三次握手四次挥手详细解析面试常问

文章目录1.第2次握手传回了ACK,为什么还要传回SYN?2.断开连接-TCP 四次挥手3.为什么要四次挥手?4.为什么不能把服务器发送的 ACK 和 FIN 合并起来,变成三次挥手?5.如果第二次挥手时服务器的 ACK 没有送达客户端&#x…...

组合由于继承

目录 前言: 1.什么是继承? 2.继承的劣势、问题? 3.组合相比继承有哪些优势? 4、如何判断该用组合还是继承? 参考资料 前言: 我们在平时日常开发设计的过程中,经常会有人提到一条经典的设…...

大学计算机基础 知识点总结

一/ 计算机的发展、类型及其应用领域。 1. 计算机(computer)是一种能自动、高速进行大量算术运算和逻辑运算的电子设备。 其特点为:速度快、精度高、存储容量大、通用性强、具有逻辑判断和自动控制能力。 2. 第一台计算机:ENIAC,美国&#…...

手撸React组件库前必须清楚的9个问题

1. 组件库文档问题 以前常用的组件库文档storybook,包括现在也有用dumi、vitepress做组件库文档等。storybook缺点不美观、webpack的热更新太慢,虽然新版本支持了vite提高了速度但还不算稳定。好在各种文档、mdx、测试等组件第三方工具很多集成进去能很…...

试用国内及国外AI绘图软件后的总结

最近AI很火,所以这几天抱着试试看的角度试用了多款AI绘图软件,大概测试了市面上的3款工具吧,3款国外的,1款国内的。因为有对比,波哥也不是专业的评测机构出身,所以这些比对无论是从角度,还是从对…...

DJI 无人机 Onboard SDK ROS 功能包demo运行

DJI 无人机 Onboard SDK ROS 功能包demo运行demo功能准备测试环境运行 dji sdk 节点运行 demo 节点自动飞行任务航点自动飞行兴趣点环绕自动飞行飞行控制本地坐标位置控制搭建好 Onboard SDK ROS 的开发环境后,功能包自身具备一些写好的demo功能案例 dji sdk 的节点…...

揭开JavaWeb中Cookie与Session的神秘面纱

文章目录1,会话跟踪技术的概述2,Cookie2.1 Cookie的基本使用2.2 Cookie的原理分析2.3 Cookie的使用细节2.3.1 Cookie的存活时间2.3.2 Cookie存储中文3,Session3.1 Session的基本使用3.2 Session的原理分析3.3 Session的使用细节3.3.1 Session…...

2023-02-20 Qt 5.13.1 + OpenCV 4.5.4环境编译

引言 OpenCV图像处理在Qt中编译记录。 之前一直是在Python中使用OpenCV,Python中使用某些模块使用pip工具很容易将对应的模块安装在系统中。根据项目需求项目都要转移在国产化中使用,为了适应国产化需求,将代码转移到Qt开发环境中&#xff0c…...

波次分拣系统

一、系统架构: v1.2基站软件管理系统仓库标签v1.4仓库标签二、系统简介: 标签系统主要由标签服务器,基站,电子标签前三部分组成,操作界面借助于京东仓库已有的作业电脑来实现,标签服务器与WMS进行数据对接。…...

【Servlet篇】Request请求转发详细解读

文章目录1. 前言2. 实战案例3. 特点1. 前言 请求转发是一种在服务器内部的资源跳转方式,如图: 上图的大致过程为,浏览器发送请求给服务器,服务器中 a 资源接收到请求,资源 a 处理完请求后将请求发送给资源 b&#xff…...

vector

目录 vector的成员函数: at: ​编辑 size: assign:赋值 insert find? erase swap shrink_to_fit ​编辑 vector的模拟实现: vector的框架: 构造函数: size和capacity r…...

LeetCode——104. 二叉树的最大深度

一、题目 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/maximum…...

漫画 | Python是一门烂语言?

这个电脑的主人是个程序员,他相继学习了C、Java、Python、Go, 但是似乎总是停留在Hello World的水平。 每天晚上,夜深人静的时候,这些Hello World程序都会热火朝天地聊天但是,这一天发生了可怕的事情随着各个Hello wor…...

2023.2 新方案 java代码混淆 java加密 字符串加密

Java字节码可以反编译,特别是创业公司,很好的项目很容易被别人破解反编译,造成很严重的损失,所以本混淆方案能很好的保护源码,而且在不断迭代,增强混淆效果,异常问题处理,达到保护项目的目的: 本次升级包括: 2023年02年19日 : ht-confusion-project-1.8…...

Swift 周报 第二十三期

前言 本期是 Swift 编辑组自主整理周报的第十四期,每个模块已初步成型。各位读者如果有好的提议,欢迎在文末留言。 欢迎投稿或推荐内容。目前计划每两周周一发布,欢迎志同道合的朋友一起加入周报整理。 勇敢是即便知道好结局不会每每降临在…...

android系统屏幕旋转角度,应用界面横竖屏,设备旋转角度,三者的区别以及使用。

注意区分以下三种概念的区别!!!。以及使用这三种方式判断横竖屏的方式。系统屏幕旋转角度fun getSystemRotation(): Int {val angle (getSystemService(WINDOW_SERVICE) as WindowManager).defaultDisplay.rotation//系统屏幕旋转的角度值re…...

【华为云-开发者专属集市】DevCloud+ECS、MySQL搭建WordPress

文章目录AppBazaar官网选择与购买项目项目概况操作过程购买DevCloud服务创建项目添加制品库应用部署购买ECS添加部署模板并执行任务故障排除安装及访问WordPress登录网站管理后台访问网站完善部署模板资源释放使用总结AppBazaar官网 首先,我们来到AppBazaar的官网&…...

DL00924-基于深度学习YOLOv11的工程车辆目标检测含数据集

文末有代码完整出处 🚗 基于深度学习YOLOv11的工程车辆目标检测——引领智能识别新潮流! 🚀 随着人工智能技术的飞速发展, 目标检测 已经在各个领域取得了显著突破,尤其是在 工程车辆识别 这一关键技术上。今天&#…...

牛客小白月赛117

前言:solveABCF相对简单,D题思路简单但是实现麻烦,F题郭老师神力b( ̄▽ ̄)。 A. 好字符串 题目大意:给定字符串s,里面的字母必须大小写同时出现。 【解题】:没什么好说的&#xff0…...

生产系统中TongWeb故障应急处理办法

本文档主要说明在上线正式运行的系统中,若TongWeb或部署在TongWeb上的应用出现问题时,现场维护人员或在现场的TongWeb支持人员应当采取的处理步骤。 工作基本原则: 任何操作必须经过项目相关负责人同意后进行,禁止在未允许的情况…...

AI 让无人机跟踪更精准——从视觉感知到智能预测

AI 让无人机跟踪更精准——从视觉感知到智能预测 无人机跟踪技术正在经历一场前所未有的变革。曾经,我们只能依靠 GPS 或简单的视觉识别来跟踪无人机,但如今,人工智能(AI)结合深度学习和高级视觉算法,正让无人机的跟踪变得更加智能化、精准化。 尤其是在自动驾驶、安防监…...

MVVM、MVC的区别、什么是MVVM

一、什么是MVVM (一)定义 MVVM是Model - View - ViewModel的缩写,它是一种软件架构设计模式,主要用于构建用户界面。这种模式将应用程序分为三个主要部分: Model(模型层) 它是应用程序中负责…...

结合 AI 编程,让前端开发更简单:趋势、方法与实践

在 AI 迅猛发展的浪潮中,前端开发正在迎来范式转变。本文将深入探讨如何将 AI 编程能力嵌入前端工程体系中,重塑前端生产力工具链与开发方式。 一、前端开发的核心痛点 尽管前端框架(如 Vue、React)已经大大简化了 UI 构建&#…...

刚出炉热乎的。UniApp X 封装 uni.request

HBuilder X v4.66 当前最新版本 由于 uniapp x 使用的是自己包装的 ts 语言 uts。目前语言还没有稳定下来,各种不支持 ts 各种报错各种不兼容问题。我一个个问题调通的,代码如下: 封装方法 // my-app/utils/request.uts const UNI_APP_BASE…...

理解频域滤波

1 频域滤波基础 对一幅数字图像,基本的频率滤波操作包括: 1)将图像变换到频率域; 2)根据需要修改频率域数值; 3)反变换到图像域。 使用公式表达为 , H(u,v) 为滤波器(滤…...

mybatis plus的源码无法在idea里 “download source“

下载不了源码 如下: Souces not found for com.baomidou:mybatis-plus-extension 解决方案 运行 mvn dependency:resolve -Dclassifiersources 不知道啥作用,总之对我管用,在项目根目录运行即可,即根pom.xml的位置。...

智能制造之精读——RPA制造行业常见场景【附全文阅读】

RPA 在制造行业应用广泛,为企业带来显著价值,是极具潜力的智能化解决方案。它能节省成本,降低人力与管理成本;提升运营效率,减少人机交互损耗;提高质量,保障流程准确性;还能增强合规…...