【深度学习目标检测】十八、基于深度学习的人脸检测系统-含GUI和源码(python,yolov8)

人脸检测是计算机视觉中的一个重要方向,也是一个和人们生活息息相关的研究方向,因为人脸是人最重要的外貌特征。人脸检测技术的重要性主要体现在以下几个方面:

  1. 人脸识别与安全:人脸检测是人脸识别系统的一个关键部分,是系统实现的前提和基础。在安防监控中,通过人脸检测可以抓拍人脸并将结果上传,与嫌疑犯人脸进行比对,协助公安人员的执法工作。此外,企业还在为考勤系统实施人脸识别技术,以防止时间欺诈并提高员工进出办公室的安全性。
  2. 人机交互与自动化:人脸检测也可以用于人机交互和图像数据库管理,如数码相机使用人脸检测来自动对焦,以及智能业务系统及平台的研发等。
  3. 零售与支付:在零售行业,人脸检测被用来加速盗窃和欺诈调查,以及分析来自众多来源的镜头以识别感兴趣的个人。此外,预计未来几年零售领域将发生巨大变化,全球将推广刷脸支付,这也离不开人脸检测技术的应用。

总之,人脸检测技术在许多领域都有广泛的应用前景,它能够提高人们生活的便利性、安全性和自动化程度。随着技术的不断进步,人脸检测将在更多领域发挥重要作用。

本文介绍了基于深度学习yolov8的洋葱检测系统,包括训练过程和数据准备过程,同时提供了推理的代码和GUI。对准备计算机视觉相关的毕业设计的同学有着一定的帮助。

检测结果如下图:

一、安装YoloV8

yolov8官方文档:主页 - Ultralytics YOLOv8 文档

安装部分参考:官方安装教程

1、安装pytorch

根据本机是否有GPU,安装适合自己的pytorch,如果需要训练自己的模型,建议使用GPU版本。

①GPU版本的pytorch安装

对于GPU用户,安装GPU版本的pytorch,首先在cmd命令行输入nvidia-smi,查看本机的cuda版本,如下图,我的cuda版本是12.4(如果版本过低,建议升级nvidia驱动):

打开pytorch官网,选择合适的版本安装pytorch,如下图,建议使用conda安装防止cuda版本问题出现报错:

②CPU版本pytorch安装

打开pytorch官网,选择CPU版本安装pytorch,如下图:

2、安装yolov8

在命令行使用如下命令安装:

pip install ultralytics

二、数据集准备

WIDER FACE数据集是一个用于面部检测的大规模人脸数据集,由香港中文大学的研究团队创建。该数据集的特点和组成如下:

  1. 规模与内容:该数据集包含了32,203张图片和393,703个人脸实例,涵盖了广泛的场景、姿态和光照条件。
  2. 标注信息:每个实例都有精确的边界框标注和五个面部特征点标注,这为研究者提供了丰富的信息来进行面部检测和相关任务的研究。
  3. 挑战性:WIDER FACE数据集拥有一个挑战性高的评估基准,旨在评估面部检测算法在各种实际场景中的性能。
  4. 数据划分:该数据集以60个事件类别(如交通、节日、游行等)为基础进行划分,每个事件类别中随机选择40%的数据作为训练集,10%作为验证集,50%作为测试集。这种划分方式使得数据集更具实际应用价值。
  5. 难度级别:WIDER FACE数据集为每个子集(训练集、验证集和测试集)都提供了三个级别的检测难度:Easy、Medium和Hard。这有助于研究者了解他们的算法在不同难度级别上的表现。

总的来说,WIDER FACE数据集是一个丰富、多样且具有挑战性的面部检测数据集,为面部检测和相关任务的研究提供了有力的支持。

本文使用的数据集来自widerface数据集,包含12876张训练图片,3226个测试图片,部分图片如下所示:

为了使用yolov8进行训练,需要将数据集转为yolo格式,本文提供转换好的数据集连接:widerface-yolov8数据集

三、模型配置及训练

1、数据集配置文件

创建数据集配置文件widerface.yaml,内容如下(将path路径替换为自己的数据集路径):

# Ultralytics YOLO 🚀, AGPL-3.0 license
# COCO 2017 dataset http://cocodataset.org by Microsoft
# Example usage: yolo train data=coco.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco  ← downloads here (20.1 GB)
 
 
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: D:\DeepLearning\datasets\csdn\widerface_yolo8  # 替换为自己的数据集路径
train: images/train 
val: images/val 
test: images/val  
 
# Classes
names:
  # 0: normal
  0: face

2、训练模型

使用如下命令训练模型,数据配置文件路径更改为自己的路径,model根据自己的需要使用yolov8n/s/l/x版本,其他参数根据自己的需要进行设置:

yolo detect train project=widerface name=train exist_ok data=widerface/widerface.yaml model=yolov8n.yaml epochs=100 imgsz=416

3、验证模型

使用如下命令验证模型,相关路径根据需要修改:

yolo detect val imgsz=640 model=widerface/train/weights/best.pt data=widerface/widerface.yaml

验证的精度如下:

# Ultralytics YOLOv8.1.10 🚀 Python-3.9.18 torch-2.2.0 CUDA:0 (NVIDIA GeForce RTX 3060, 12288MiB)
# YOLOv8n summary (fused): 168 layers, 3005843 parameters, 0 gradients, 8.1 GFLOPs
# val: Scanning D:\DeepLearning\datasets\csdn\thsant-wgisd-ab223e5\wgisd_yolov8\labels\test.cache... 58 images, 0 backgrounds, 0 corrupt: 100%|██████████| 58/58 [00:00<?, ?it/ 
#                  Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 4/4 [00:06<00:00,  1.70s/it]
#                    all         58        850      0.772      0.714        0.8      0.445
# Speed: 2.7ms preprocess, 8.4ms inference, 0.0ms loss, 8.4ms postprocess per image

四、推理

训练好了模型,可以使用如下代码实现推理,权重路径修改为自己的路径:

from PIL import Image
from ultralytics import YOLO
 
# 加载预训练的YOLOv8n模型
model = YOLO('best.pt')
 
image_path = 'test.jpg'
results = model(image_path)  # 结果列表
 
# 展示结果
for r in results:
    im_array = r.plot()  # 绘制包含预测结果的BGR numpy数组
    im = Image.fromarray(im_array[..., ::-1])  # RGB PIL图像
    im.show()  # 显示图像
    im.save('results.jpg')  # 保存图像

五、界面开发

使用pyqt5开发gui界面,支持图片、视频、摄像头输入,支持导出到指定路径,其GUI如下图(完整GUI代码可在下方链接下载):

代码下载连接:基于yolov8的人脸检测系统,包含训练好的权重和推理代码,GUI界面,支持图片、视频、摄像头输入,支持检测结果导出

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【QT QML】软件打包,生成安装包

一、版本 Desktop 5.15.2 MinGW 64-bit二、打包 1. 编译Release版本 2. 在工程目录下找到Realse文件夹 3. 拷贝文件 ***-Desktop_Qt_5_15_2_MinGW_64_bit-Release - release - xxx.exe到一个新文件夹中 4. 开启相应打包工具&#xff08;根据自己的编译器和版本选择&#xff0…

PPT大珩助手使用方法的详细介绍

软件介绍 PPT大珩助手是一款全新设计的Office PPT插件&#xff0c;它是一款功能强大且实用的PPT辅助工具&#xff0c;支持Wps Word和Office Word&#xff0c;能够轻松帮助您修改、优化和管理幻灯片。凭借丰富的功能和用户友好的界面&#xff0c;PPT大珩助手能够助力您打造出精…

【力扣hot100】刷题笔记Day11

前言 科研不顺啊......又不想搞了&#xff0c;随便弄弄吧&#xff0c;多花点时间刷题&#xff0c;今天开启二叉树&#xff01; 94. 二叉树的中序遍历 - 力扣&#xff08;LeetCode&#xff09; 递归 # 最简单递归 class Solution:def inorderTraversal(self, root: TreeNode) …

ChatGPT/GPT4科研应用与AI绘图及论文写作

2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…

第十一天-Excel的操作

目录 1.xlrd-Excel的读模块 安装 使用 获取工作簿 读取工作簿的内容 xlsxwriter-Excel的写模块 安装 使用 生成图表 add_series参数 图表的样式 demo&#xff1a;生成图表 Excel的操作在python中有多个模块&#xff0c;为了能够快速使用&#xff0c;选择了相对简单…

MATLAB使用绘图plot制作动态GIF

文章目录 1 前言2 DemoDemo 1 - 不使用函数Demo 2 - 使用函数 1 前言 在PPT展示或者博客创作中&#xff0c;有时需要插入动态图如GIF&#xff0c;来演示算法效果或者结果。在MATLAB中&#xff0c;可以通过一些代码&#xff0c;将绘图plot转化为动态的GIF。 其大致方法为&…

C++中的STL数据结构

内容来自&#xff1a;代码随想录&#xff1a;哈希表理论基础 1.常见的三种哈希结构 当我们想使用哈希法来解决问题的时候&#xff0c;我们一般会选择如下三种数据结构 数组 set &#xff08;集合&#xff09; map(映射) 在C中&#xff0c;set 和 map 分别提供以下三种数据结构…

vue3的diff

以vue3的patch为例 首先判断两个节点是否为相同同类节点&#xff0c;不同则删除重新创建如果双方都是文本则更新文本内容如果双方都是元素节点则递归更新子元素&#xff0c;同时更新元素属性更新子节点时又分了几种情况 新的子节点是文本&#xff0c;老的子节点是数组则清空&a…

07 STL 简介

目录 什么是STLSTL的版本STL的六大组件STL的重要性如何学习STLSTL的缺陷 1. 什么是STL c标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且是一个包罗数据结构和算法的软件框架 2. STL的版本 原始版本 Alexander Stepanov、Meng Lee在惠普实验室的…

详解AP3216C(三合一sensor: 光照、距离、照射强度)驱动开发

目录 概述 1 认识AP3216C 1.1 AP3216C特性 1.2 AP3216C内部结构 1.3 AP3216C 硬件电路 1.4 AP3216C工作时序 1.4.1 I2C 写数据协议 1.4.2 I2C 读数据协议 1.5 重要的寄存器 1.5.1 系统配置寄存器 1.5.2 和中断相关寄存器 1.5.3 IR数据寄存器 1.5.4 ALS 数据寄存器 …

Android 开发一个耳返程序(录音,实时播放)

本文目录 点击直达 Android 开发一个耳返程序程序编写1. 配置 AndroidManifast.xml2.编写耳返管理器3. 录音权限申请4. 使用注意 最后我还有一句话要说怕相思&#xff0c;已相思&#xff0c;轮到相思没处辞&#xff0c;眉间露一丝 Android 开发一个耳返程序 耳返程序是声音录入…

计算机网络实验八 利用 Java /C++开发网络聊天应用程序

一、实验目的和要求 1)基本掌握利用 Java 开发环境调试应用程序的方法。 2)理解基于套接字开发网络应用程序的过程,深入理解客户/服务器方式工作原理。 3)掌握基于Java和C++开发网络通信程序的方法。 二、实验环境 1)运行 Windows 2008 Server/XP/7 操作系统的 PC 2 台…

应急响应实战笔记03权限维持篇(3)

0x00 前言 攻击者在获取服务器权限后&#xff0c;会通过一些技巧来隐藏自己的踪迹和后门文件&#xff0c;本文介绍Linux下的几种隐藏技术。 0x01 隐藏文件 Linux 下创建一个隐藏文件&#xff1a;touch .test.txt touch 命令可以创建一个文件&#xff0c;文件名前面加一个 点…

一文读懂:AWS 网络对等互连(VPC peering)实用操作指南

VPC peering connection-网络对等互连在您的 Atlas VPC 和云提供商的 VPC 之间建立私有连接。该连接将流量与公共网络隔离以提高安全性。本篇文章有VPC peering的操作指南以及价格等信息。如还有疑问请联系我们MongoDB的销售&#xff0c;客户成功经理或解决方案架构师。 1 使用…

开源大语言模型作为 LangChain 智能体

概要 开源大型语言模型 (LLMs) 现已达到一种性能水平&#xff0c;使它们适合作为推动智能体工作流的推理引擎: Mixtral 甚至在我们的基准测试中 超过了 GPT-3.5&#xff0c;并且通过微调&#xff0c;其性能可以轻易的得到进一步增强。 引言 针对 因果语言建模 训练的大型语言模…

用买糖果的方式来理解正交匹配追踪(OMP)算法

在信号处理领域&#xff0c;压缩感知&#xff08;Compressed Sensing&#xff09;是一种能够从远少于传统奈奎斯特采样定理所要求的样本数目中重建稀疏信号的技术。压缩感知的理论基础在于一个前提假设&#xff0c;即许多自然信号都含有稀疏的表示&#xff0c;换句话说&#xf…

【Python】OpenCV-图像轮廓检测初学

图像轮廓检测初学 在图像处理领域中&#xff0c;轮廓检测是一项重要的任务&#xff0c;用于寻找并标定图像中的物体边缘。本文将介绍如何使用OpenCV库进行图像轮廓检测&#xff0c;并展示一个简单的示例代码。代码中的注释将详细解释每一步的操作。 1. 引言 图像轮廓检测是图…

决策树算法

目录 谷歌笔记本&#xff08;可选&#xff09; 决策树 决策树的一般流程 信息增益 划分数据集 递归构建决策树 使用Matplotlib注解绘制树形图 Matplotlib注解 构造注解树 测试和存储分类器 测试算法&#xff1a;使用决策树执行分类 使用算法&#xff1a;决策树的存…

RISC-V知识总结 —— 指令集

资源1: RISC-V China – RISC-V International 资源2: RISC-V International – RISC-V: The Open Standard RISC Instruction Set Architecture 资源3: RV32I, RV64I Instructions — riscv-isa-pages documentation 1. 指令集架构的类型 在讨论RISC-V或任何处理器架构时&…

基于springboot+vue的图书进销存管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…