【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_detection
API,完成图片检测或实时检测任务。
(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开发环境中,…...

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

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

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的官网&…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...