IdentiFace——多模态人脸识别系统,可捕捉从情绪到性别的所有信息及其潜力

1. 概述

面部识别系统的开发极大地推动了计算机视觉领域的发展。如今,人们正在积极开发多模态系统,将多种生物识别特征高效、有效地结合起来。

本文介绍了一种名为 IdentiFace 的多模态人脸识别系统。该系统利用基于 VGG-16 架构的模型,将人脸识别与性别、脸型和情绪等重要生物特征信息结合起来,但不同子系统之间略有改动。

在从 FERET 数据库收集的数据上,性别识别准确率达到 99.2%,在作者的数据集上达到 99.4%,在公共数据集上达到 95.15%。在脸形识别方面,作者使用名人脸形数据集取得了 88.03% 的测试准确率;在情绪识别方面,作者使用 FER2013 数据集取得了 66.13% 的测试准确率。这表明性别识别任务相对容易,而面部形状和情感识别任务则容易在相似类别之间产生混淆。

IdentiFace "多模态面部识别系统可应用于安全、监控和个人身份识别领域。通过利用面部特征,可以实现更高效、更准确的生物识别。

论文地址:https://arxiv.org/ftp/arxiv/papers/2401/2401.01227.pdf
源码地址:https://github.com/MahmoudRabea13/IdentiFace

2. 数据集

本节将介绍每项任务所使用的数据集。首先,在人脸识别方面,使用了 NIST 的 "Colour FERET"数据集。该数据集包含 994 人的 11,338 张人脸图像。该数据集包含 13 种不同的人脸方向,每种方向都有指定的面部旋转度。此外,一些受试者有戴眼镜和不戴眼镜的图像,另一些受试者则有不同发型的图像。本文使用的是这些图像的压缩版本,图像大小为 256 x 484 像素。之所以选择这个数据集,是因为它的差异很大,有助于模型学习到较高的泛化性能。此外,四位作者本人也作为新对象被添加到数据库中,并在不同场景下进行了测试。

接下来,为了进行性别分类,我们从作者的教师中收集了一个数据集。起初,该数据集由 15 名男性和 8 名女性组成,每张图像都包含多种变化,以增加数据量。然而,后来受试者的数量不断增加,最终将数据量增加到总图像数(133 张男性图像/66 张女性图像),其中男性 31 张,女性 27 张。训练/验证数据没有在收集过程中进行拆分,而是在预处理阶段进行了拆分。为了便于比较,我们还使用了 Kaggle 的 “性别分类数据集”。该数据集的训练数据每类约分为 23,000 张图片,验证数据每类约分为 5,500 张图片。

由于任务的复杂性,需要人工标注,作者无法收集自己的脸型预测数据集,因此使用了脸型数据集,其中包含最受欢迎的脸型数据集–名人脸型。该数据集于 2019 年发布,只包含女性受试者,五个类别(圆形/椭圆形/方形/矩形/心形)各包含 100 张图片。

最后,在情绪识别方面,作者军团最初为这项任务收集了自己的数据集。其中包括 38 名受试者,分为 22 名男性和 16 名女性。每个受试者的每种特定情绪有 7 幅图像,每类有 38 幅图像,共计 266 幅图像。每个类别中的图像都是人工标注的。有些受试者在多个类别中都有相似的面部表情,这使得图像标注和分类过程相对具有挑战性。因此,为了收集一个合适的情感数据集。我们使用了 "FER-2013"数据集。该数据集是公开的,包含 30,000 多张图片,包含七个类别(愤怒/厌恶/恐惧/快乐/悲伤/惊讶/中立)。所有图像均转换为 48x48 灰度图像,所有类别几乎均匀分布。

4 .算法架构

本文构建了一个单一网络,通过在每个任务之间对网络进行微调,该网络可适应多个与人脸相关的任务。VGGNet 架构被用作多模态系统的主网络。本文对基本的 VGG-16 进行了试验,最终将其简化为只有三个主要区块,去掉了最后两个卷积区块。这样做主要是为了减少参数数量和模型的整体复杂性,因为该模型在各种任务中的表现已经很好。下表列出了该模型在层数、输出几何图形和参数数量方面的信息。

在最终编译模型时,采用了以稀疏分类交叉熵为损失函数的亚当优化器。此外,还引入了早期停止功能,以防止模型的过度训练。

此外,人脸识别任务的预处理如下

  • 使用 Dlib 基于 CNN 的人脸检测。
  • 对识别出的人脸进行裁剪并转换成灰度图像。
  • 调整为 128x128 像素。
  • 班级数改为 5 个(Hanya、Mahmoud、Nourhan、Sohaila 和其他人)。

除人脸识别外,所有任务都要进行以下预处理

  • 使用 Dlib 中的 68 个面部地标进行人脸检测
  • 所有检测到的人脸都会被裁剪,没有人脸的图像会被过滤。
  • 脸部尺寸调整为 128 x128,并转换为灰度

在调整大小后,每个数据集都会按以下方式进行扩展,以确保所有任务的平衡。为确保所有类别的公平分布,仅对不平衡和较小的数据集进行了扩展。

数据扩展后的数据集如下所示。在人脸识别方面,数据集最初包含了来自彩色 FERET 数据集的 11,338 张 "其他 "类图像,但为了避免过度训练,数据集减少到了 500 张。有些数据集,如情感识别和性别识别数据集,不需要进行数据扩展,因为每个类别都有很多图像,而且分布均衡。

5. 试验

对于人脸识别,数据集的训练与测试比例为 80:20,并使用以下参数训练模型

  • 学习率 (lr) = 0.0001
  • 批量大小 = 32
  • 测试规模 = 0.2
  • 历时次数 = 100

结果如下

在性别分类中,任务被视为多类分类,将女性受试者标记为 0,男性受试者标记为 1。以下参数用于训练作者数据集的模型和公共数据集的模型。

  • 学习率 (lr) = 0.0001
  • 批次大小 = 128
  • 测试规模 = 0.2

结果如下

下图是作者绘制的数据集混淆矩阵图。

下图显示了数据集与公共数据集的混淆矩阵。

在脸型预测中,我们尝试了两种不同的模型来完成这项任务:一种是针对所有类别的模型,另一种是只针对三个类别(长方形/正方形/圆形)的模型。这样做的目的是为了观察模型在类别重叠最少的情况下是如何工作的,并与其他包含所有类别的模型进行比较。

  • 学习率 (lr) = 0.0001
  • 批次大小 = 128
  • 测试规模 = 0.2

标签如下

结果如下

支持向量机(SVM)和卷积神经网络(CNN)已被用于情绪识别。支持向量机(SVM)的结果如下。

卷积神经网络(CNN)的结果如下。

为了实现结果的可视化,正在开发一种名为 "IdentiFace "的多模式面部生物识别系统,作为基于 Pyside 的桌面应用程序。它可以同时在线和离线进行面部生物识别。

在这里插入图片描述
在这里插入图片描述

6.总结

我们尝试了不同的方法,并在每项任务中使用了我们自己的数据集以及其他公开可用的数据集,包括人脸识别、性别分类、人脸形状确定和情感识别。我们还选择了 VGGNet 模型,因为它在使用这些数据集的所有任务中表现最佳。此外,我们还将所有表现最佳的模型结合起来,开发了一个名为 IdentiFace 的多模态面部生物识别系统。该系统集成了人脸识别、性别分类、面部形状确定和情感识别于一体。

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

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

相关文章

【NumPy】NumPy线性代数模块详解:掌握numpy.linalg的核心功能

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

多年期货盈利的秘诀就是亏了就跑

不怎么看消息面,尤其期货,外汇。 正大招主账户:欧美4恒指26小恒12 欢迎咨询代理 详YJCFPL 坚持学习,吸收别人的经验,为我所用。 独立思考,培养良好的生活习惯。 我能活到现在的秘诀就是:亏了就赶…

Hexo最新实战:(一)Hexo7.0+GitHub Pages博客搭建

前言 很多平台都能写博客还有创作激励,为什么我又要搭一个?为什么这次要选择用Hexo框架? 对应的原因是流量自由和省钱,第一个,很多平台能写但不是都有收益,而且平台有自身的规则,比如会屏蔽一…

【区块链】外部应用程序与区块链进行交互

一,外部应用程序与区块链进行交互案例目标与流程 1.1案例目标 掌握FISCO BCOS应用环境的搭建 与使用(FISCO BCOSWeBASE)掌握基于Java SpringBoot的应 用程序后端项目搭建与开发。掌握应用程序后端与FISCO BCOS 链的交互。掌握应用程序前端…

『大模型笔记』量化 vs 剪枝 vs 蒸馏:为推理优化神经网络!

量化 vs 剪枝 vs 蒸馏:为推理优化神经网络! 文章目录 一. 量化 vs 剪枝 vs 蒸馏:为推理优化神经网络!1.1. 量化(Quantization)1.2. 剪枝(purning)1.3. 知识蒸馏(Knowledge Distillation,也称为模型蒸馏)1.4. 工程优化(Engineering Optimizations)1.5. 总结二. 参考…

【旅行商问题的优化】

#include<bits/stdc.h> // 包含标准库的头文件using namespace std; // 使用标准命名空间template <class Type> // 模板声明&#xff0c;Type为类型参数 class Traveling{ // 定义Traveling类friend Type Tsp(int **, int[],int, Type); // 声明友元函数Tsp publi…

WPF hc:PropertyGrid 嵌套显示

重点&#xff1a; 编写Edit特性即可&#xff1a; public class ParameterEditor : PropertyEditorBase{public override FrameworkElement CreateElement(PropertyItem propertyItem){var pg new PropertyGrid();return pg;}public override DependencyProperty GetDependen…

2024/5/22 ARMday7

按键控制LED灯亮和灭 do_irq.c #include "key_it.h" //#include "led.h" extern void printf(const char *fmt, ...); unsigned int i 0; void do_irq(void) {//获取中断号unsigned int irqno(GICC->IAR & (0x3FF));switch (irqno){case 99://处…

Playwright 元素定位

一、get_by_XXXXX 1. get_by_role&#xff1a;根据元素角色进行定位, 常用的参数有两个&#xff0c;第一个是角色名称 role&#xff0c;第二个是元素的文本 name。其他参数的解释大家可以参考源码注释。 # 获取页面名称为确定的按钮 page.get_bt_role(button, name确定) pl…

cfa三级大神复习经验分享系列(一)

教材还是Notes? 对于愚钝如我之流&#xff0c;建议大家三级一定要看教材。Note很精华很浓缩&#xff0c;我觉得看过教材再看note感觉总结的很精辟&#xff0c;但是Note是以考点列的&#xff0c;而教材像小说一样娓娓道来&#xff0c;有逻辑有情节&#xff0c;如果不follow很难…

Android MIPI屏配置

参考资料&#xff1a;RockChip发布的DRM Display Driver Development Guide手册&#xff0c;以及网上大量相关博客资料 首先要拿到《屏幕硬件规格书》和《DataSheet》&#xff0c;软件配置主要依靠DataSheet提供数据支持。 查阅DataSheet里面on sequence和off sequence说明&a…

机器学习之爬山算法(Hill Climbing Algorithm)

爬山算法(Hill Climbing Algorithm)是一种简单而常见的启发式搜索算法,通常用于解决优化问题。它的基本思想类似于登山过程中爬升到山顶的过程,即从一个起始点开始,不断尝试向邻近的点移动,直到找到一个局部最优解。 下面是爬山算法的基本工作流程: 初始化:选择一个初…

关于同一个地址用作两个不同页面时,列表操作栏按钮混淆状态

同一个地址用作两个不同页面时&#xff0c;列表页的操作栏中有好多个按钮&#xff0c;如果用了v-if&#xff0c;可能会导致按钮混淆状态如disabled等属性混乱 解决方法1&#xff1a; 将v-if换成v-show&#xff0c;用了v-show之后意味着所有按钮都在只是在页面上隐藏了 解决方…

【python深度学习】——torch.min()

【python深度学习】——torch.min 1. torch.min()1.1 计算整个张量的最小值1.2 沿特定维度计算最小值1.3 比较两个张量 1. torch.min() torch.min()接受的参数如下: input: 输入的张量。dim: 沿指定维度寻找最小值。如果指定了该参数&#xff0c;返回一个元组&#xff0c;其中…

基于Vue+SpirngBoot的博客管理平台的设计与实现(论文+源码)_kaic

摘 要 随着当下社会的发展&#xff0c;互联网已经成为时代的主流&#xff0c;从此进入了互联网时代&#xff0c;对大部分人来说&#xff0c;互联网在日常生活中的应用是越来越频繁&#xff0c;大家都在互联网当中互相交流、学习、娱乐。博客正是扮演这样一个角色。博客已成为当…

[Nodejs]使用adm-zip和fs-extra压缩打包后的文件

在此之前&#xff0c;操作目录、压缩文件是通过scripts来实现的&#xff0c;在windows机器上多有不便&#xff0c;需要通过linux命令行来实现cp、rm命令&#xff1a; "cpdist": "cp -r ./dist/* ../../qw-portal/assetAllocation/", "rmdist": …

实验八 单区域OSPF路由协议配置

一、实验目的 掌握 OSPF 动态路由协议的配置、诊断方法。 二、实验步骤 1、 运行Cisco Packet Tracer软件&#xff0c;在逻辑工作区放入三台路由器、两台工作站PC及一台笔记本&#xff0c;分别点击各路由器&#xff0c;打开其配置窗口&#xff0c;关闭电源&#xff0c;分别加…

如何选择云服务器

云服务器选择概述 在选择合适的云服务器时&#xff0c;需要综合考虑多个方面的因素&#xff0c;包括但不限于云服务器的类型、配置、价格、性能、安全性、可靠性、扩展性以及服务商的品牌信誉等。以下是根据搜索结果得出的详细分析和建议。 云服务器选择详解 云服务器类型选…

Python装饰器的应用

Python 中的装饰器是一种语法糖&#xff0c;可以在运行时&#xff0c;动态的给函数或类添加功能。装饰器本质上是一个函数&#xff0c;使用 函数名就是可实现绑定给函数的第二个功能 。它的作用就是在不修改被装饰对象源代码和调用方式的前提下为被装饰对象添加额外的功能。 …

策略模式代码

import java.util.*; enum TYPE { NORMAL,CASH_DISCOUNT,CASH_RETURN}; interface Cashsuper { public double acceptCash(double money); } class CashNormal implements CashSuper{// 正常收费子类 public double accptCash(double money){ return money; …