毕业设计-基于机器视觉的口罩佩戴检测识别

news2025/7/19 19:11:23

目录

前言

课题背景和意义

实现技术思路

数据来源

 COCO数据集预训练模型

图片检测

视频检测

训练&评估结果

实现效果图样例


前言


    📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

🚀对毕设有任何疑问都可以问学长哦!

本次分享的课题是

🎯基于机器视觉的口罩佩戴检测识别

课题背景和意义

疫情期间,有一个关键点就是春节之后的复工。在国内有一个特殊的情况,就是在复工的时候,人员流动量相当庞大。肺炎疫情仍在持续,佩戴口罩是预防感染的有效措施,目前很多公众场合要求强制佩戴口罩,检测人物是否佩戴口罩。软件可以检测摄像头视频中的人是否佩戴口罩。进行口罩数据集训练,达到检测人群中有无戴口罩的目的。

实现技术思路

数据来源

  • 少量手动标注
    • 使用LabelImg,每个目标类别标注约50张图片
  • 训练检测模型
    • 使用PaddleDetection基于少量标注的数据集进行训练
    • 观察训练结果,如果mAP较为满意,保存预测模型
  • 生成自动标注
    • 使用基于少量标注训练的模型,对未标注数据进行预测,将预测结果保存为VOC格式
  • 矫正标注结果
    • 基于数据集特性,矫正目标标签
    • 导出预测数据的标注文件,回到LabelImg中,修正目标矩形框和标签

 COCO数据集预训练模型

 COCO数据集全称为Microsoft Common Objects in Context(MS COCO),它是一个大规模(large-scale)的对象检测(object detection)、分割(segmentation)、关键点检测(key-point detection)和字幕(captioning)数据集。此数据集由32.8万张图像组成.COCO API可以帮助加载、解析和可视化COCO中的标注。API支持多种标注格式(annotation formats)。

图片检测

def detect_image(image_path):
    print('Start detect!')
    yolo = YOLO()
    try:
        image = Image.open(image_path)
    except:
        print('Open Error! Try again!')
        pass
    else:
        r_image = yolo.detect_image(image)
        r_image.save(image_path.split('.')[0] + '_result.png')
    print('Finish detect!')

视频检测

def detect_video(video_path):
    print('Start detect!')
    yolo = YOLO()
    capture = cv2.VideoCapture(video_path)
    writer = None
    fps = 0.0
    while True:
        t1 = time.time()
        # 读取某一帧
        grabbed, frame = capture.read()
        if not grabbed:
            break
        # opencv读取的是BGR,格式转变,BGRtoRGB
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        # 转变成Image
        frame = Image.fromarray(np.uint8(frame))
        # 进行检测
        frame = np.array(yolo.detect_image(frame))
        # RGBtoBGR满足opencv显示格式
        frame = cv2.cvtColor(frame,cv2.COLOR_RGB2BGR)

        fps  = (fps + (1. / (time.time() - t1))) / 2
        print("FPS: %.2f" % (fps))
        frame = cv2.putText(frame, "FPS: %.2f" % (fps), (0, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 2, cv2.LINE_AA)
        
        if writer is None:
            fourcc = cv2.VideoWriter_fourcc(*'MP4V')
            writer = cv2.VideoWriter(video_path.split('.')[0] + '_result.mp4', fourcc, 30, (frame.shape[1], frame.shape[0]), True)
        writer.write(frame)
    writer.release()
    capture.release()
    print('Finish detect!')

训练&评估结果

 

 

实现效果图样例

 

我是海浪学长,创作不易,欢迎点赞、关注、收藏、留言。

毕设帮助,疑难解答,欢迎打扰!

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

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

相关文章

结冰过程渲染-Ovito实现

结冰过程渲染-Ovito实现结冰过程渲染后结果一、渲染步骤-主要突出内容二、识别并区分冰晶和溶液三、渲染溶液中的水四、渲染出溶液中的冰五、突出溶液中溶质、金属板的显示六、data测试文件下载结冰过程渲染后结果 一、渲染步骤-主要突出内容 这里我们主要研究掺杂溶质如何影响…

k8s网络插件之Flannel

Flannel简介 Flannel官网:https://github.com/coreos/flannel Flannel是由CoreOS开源的针对k8s的网络服务,其目的是为解决k8s集群中各主机上Pod之间的通信问题,其借助etcd维护网络IP地址分配,并为每个Node节点分配一个不同的IP地…

学生HTML个人网页作业作品 HTML+CSS校园环保(大学生环保网页设计与实现)

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

redis : 持久化

redis通过将数据放在内存里实现高速访问,为了防止意外情况,其数据也可以存放起来 持久化的实现方式有两种方案:一种是直接保存当前已经存储的数据,相当于复制内存中的数据到硬盘上,需要恢复数据时直接读取即可&#x…

代理模式与动态代理深入理解

一,代理模式的简单认识 1.参与者: 代理对象,被代理对象 代理对象相当于现实生活中的房产中介,被代理对象 相当于 房东 2.目的:保护被代理对象 避免外界直接修改被代理对象,破坏掉被代理对象原本的功能。…

KubeGems容器云平台体验

KubeGems容器云平台体验 KubeGems 是一款开源的企业级多租户容器云平台。围绕云原生社区,KubeGems 提供了多 Kubernetes 集群接入能力,并具备丰富的组件管理和资源成本分析功能,能够帮助企业快速的构建和打造一个本地化、功能强大且低成本的…

关于BigInteger和BigDecimal

BigInteger BigInteger类是用于解决整形类型(含基本数据类型及对应的包装类,)无法表示特别大的数字及运算的问题,即使是占用字节数最多的整形long,能表示的范围也是有限的.理论上,你可以使用BigInteger表示任意整数基于java8中BigInteger的构造方法. BigDecimal的构造方法2 …

Java代码审计基础——RMI原理和反序列化利用链

目录 (一)何为RMI (二)、 RMI的模式与交互过程 0x01 设计模式 0x02 交互过程 0x03 Stub和Skeleton (三)简单的 RMI Demo 1、Server 2、Registry 3、Client 补充——动态类加载机制 几个函数 (…

Java集合框架详解(四)——Map接口、HashMap类、LinkedHashMap类

一、Map接口 Map接口的特点: (1)映射键值对的形式(key和value); (2)Map集合中,key是不能重复的,value是可以重复的; (3)…

解决报错:fatal: Authentication failed for ‘https://github.com/*/*.git/‘

目录 问题 解决 步骤一、 步骤二、 步骤三、 ​步骤四、 ​步骤五、 步骤六、 问题 今天创建一个 github 新仓库,首次上传本地代码时,遇到了一个报错。但是,之前这样操作肯定是没有问题的,毕竟我可以保证用户名和密码都是…

复杂环境下多移动机器人路径规划研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

数据结构 | 顺序栈与链式队【栈与队列的交际舞】

数据结构之栈与队列🌳顺序栈🍃前言🔥栈的结构简介及概述🔥为什么要用顺序栈?🔥结构声明🍃接口算法实现🍞初始化栈🍞销毁栈🍞入栈🍞出栈&#x1f3…

磨金石教育|干货分享:剪辑技法之跳切(上)

有一种剪辑手法划分了传统剪辑与现代剪辑的界限,它就是“跳切”; 跳切,是“切”的一种。属于一种无技巧的剪辑手法。它打破常规状态镜头切换时所遵循的时空和动作连续性要求,以较大幅度的跳跃式镜头组接,突出某些必要内…

【kafka】三、kafka命令行操作

kafka命令行操作 kafka的相关操作命令脚本文件在bin目录下 查看所有的topic kafka-topics.sh --zookeeper hll1:2181 --list 或 kafka-topics.sh --zookeeper 192.168.171.132:2181 --listkafka-topics.sh:topic执行脚本 --zookeeper hll1:2181:需要的…

[carla]把carla世界坐标系 转换为 俯视地图像素坐标系

在下面这篇参考博客中介绍了如何手动获取从carla世界坐标系到俯视地图像素坐标系的旋转平移矩阵.我也是采用了一样的思路和代码,这里把实现的过程以及最后所有地图的变换矩阵记录如下. 参考博客:carla真实世界坐标系与全局俯视地图像素坐标系变换 文章目录代码:1.carla世界坐标…

【表白】html表白代码

目录一.引言二.表白效果展示1.惊喜表白2.烟花表白3.玫瑰花表白4.心形表白5.心加文字6.炫酷的特效一.引言 我们可以用一下好看的网页来表白,下面就有我觉得很有趣的表白代码 下载整套表白文件 二.表白效果展示 1.惊喜表白 2.烟花表白 源码:新建一个文本文…

基于51单片机的温度控制系统数码管显示蜂鸣器报警proteus仿真原理图PCB

功能: 0.本系统采用STC89C52作为单片机 1.系统实时监测并显示当前温度,并通过四位数码管显示 2.超过设定阈值,蜂鸣器将报警,同时控制相应继电器实现降温或者加热 3.系统具备三个功能按键,可更改温度上限和下限 4.采用D…

SpringBoot+Mybatis-Plus+Thymeleaf 实现增删改查+登录/注册

SQL -- student_info create table if not exists student_info ( sid int not null auto_increment comment 学生表主键 primary key, sname varchar(20) not null comment 学生账号登录名、姓名, pwd varchar(32) not null comment 密码, sex varchar(20) not null comment …

AQS源码解析 7.共享模式_CyclicBarrier重复屏障

AQS源码解析 —共享模式_CyclicBarrier重复屏障 简介 CyclicBarrier:循环屏障、循环栅栏,用来进行线程协作,等待线程满足某个计数。构造时设置『计数个数』,每个线程执行到某个需要“同步”的时刻调用 await() 方法进行等待&…

【多目标进化优化】多目标进化群体的分布性

0 前言 \quad\quad进化算法是模拟生物自然进化的人工方法,与大自然生态环境一样,进化的物种也需要平衡发展。因此,设计者必须制定合适的生存规则来维持种群的多样性和分布性。在多目标进化算法中,对于某些问题,Pareto最…