python开发构建基于CNN的人脸识别系统

news2024/9/21 0:46:37

卷积神经网络在图像处理领域中早就是独树一帜的存在,今天正好有时间就想着基于CNN开发构建一个人脸识别系统,首先看下效果图:

 数据集来源于LFW数据集,简单看下本文使用的小批量的数据集如下:

 一共有12个人的图像数据,随机看下几个如下所示:

【Ariel_Sharon】

【Donald_Rumsfeld】

 【Gerhard_Schroeder】

 【Jean_Chretien】

 【Serena_Williams】

 接下来我们需要对原始数据进行解析处理,核心实现如下所示:

# 图片
one_img = cv2.imread(one_path)
one_img = cv2.resize(one_img, (224, 224))
one_img = one_img.transpose((2, 0, 1))
# 标签
one_label = one_path.split("/")[1]
print("one_path: ", one_path, "one_label: ", one_label)
one_pic_classes = one_label
one_y = getY(one_pic_classes)

处理完成后得到了可用于模型训练使用的dataset.h5数据集文件。

模型实现如下所示:

def initModel(h=16, w=10, way=1):
    """
    模型初始化
    """
    input_shape = (h, w, way)
    model = Sequential()
    model.add(
        Conv2D(
            64,
            (3, 3),
            strides=(2, 2),
            input_shape=input_shape,
            padding="same",
            activation="relu",
            kernel_initializer="uniform",
        )
    )
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(
        Conv2D(
            128,
            (3, 3),
            strides=(2, 2),
            padding="same",
            activation="relu",
            kernel_initializer="uniform",
        )
    )
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(
        Conv2D(
            256,
            (3, 3),
            strides=(2, 2),
            padding="same",
            activation="relu",
            kernel_initializer="uniform",
        )
    )
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Flatten())
    model.add(Dense(256, activation="relu"))
    model.add(Dropout(0.1))
    model.add(Dense(512, activation="relu"))
    model.add(Dropout(0.15))
    model.add(Dense(numbers, activation="softmax"))
    model.compile(
        loss="categorical_crossentropy", optimizer="sgd", metrics=["accuracy"]
    )
    print(model.summary())
    return model

训练完后绘制计算了模型的混淆矩阵,如下所示:

 模型训练过程准确率曲线和损失曲线对比如下所示:

 从四个指标对模型进行评估计算,结果如下所示:

              precision    recall  f1-score   support

           0       0.80      0.77      0.78        26
           1       0.93      0.96      0.94        70
           2       0.95      0.90      0.92        39
           3       0.90      0.94      0.92       139
           4       0.72      0.62      0.67        37
           5       0.81      0.77      0.79        22
           6       0.75      0.43      0.55        14
           7       0.92      0.92      0.92        12
           8       0.77      0.77      0.77        13
           9       0.70      0.94      0.80        17
          10       0.83      0.91      0.87        11
          11       0.86      0.86      0.86        44

    accuracy                           0.86       444
   macro avg       0.83      0.82      0.82       444
weighted avg       0.86      0.86      0.86       444

整体来看效果还是很不错的。

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

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

相关文章

详解git(工作必备)

基本概念 Git 是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。 Git 的作用与好处是: 可以帮我们保存文件的所有修改记录,并且使用版本号进行区分,让我们随时可以浏览历史版本、对比不同版本…

Mysql列的完整性约束详解(设置表字段的非空约束(NOT NULL, NK))

设置表字段的非空约束(NOT NULL, NK) 文章目录 系列文章目录一、设置表字段的非空约束(NOT NULL, NK) 1.简介2.语句格式总结 一、设置表字段的非空约束(NOT NULL, NK) 1.简介 当数据库表中的某个字段上的…

perf工具报错,升级ubuntu子系统linux内核

文章目录 1,运行perf工具报错1.1,可能的原因有: 2,我选择升级linux内核,和当前perf工具版本保持一致2.1,下载6.2.12内核源码2.2,安装6.2.12内核 1,运行perf工具报错 1.1,…

今天国际医药行业大型物流系统集成建设案例——广州医药智慧物流中心项目

请点击↑关注、收藏,本博客免费为你获取精彩知识分享!有惊喜哟!! 近几年,带量采购常态化、制度化、医保支付方式改革、医保谈判药品“双通道”、线上购药医保结算等一系列政策加速药品流通行业变革步伐,由…

数据驱动的皮肤病变分类深度监测

文章目录 Data-Driven Deep Supervision for Skin Lesion Classification摘要本文方法Layer-Wise Effective Receptive Field (LERF)Object Size Approximation Using Activation MappingDeep Supervision Employment 实验结果 Data-Driven Deep Supervision for Skin Lesion C…

基于html+css的图展示33

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

15天学习MySQL计划-SQL优化/视图(进阶篇)-第八天

SQL优化 1.插入数据(insert) 1.批量插入 insert into 表名 values(值1,值2),(值1,值2),(值1,值2),(值1,值2) 2.手动提交事务 --查看当前提交的状态 select autocommit; --0代表手动提交 1代表自动提交 set autocommit 0; ​ commit #提交事务 3…

【计算机网络 - 第二章】应用层(更新中)

目录 一、应用层协议原理 1、网络应用程序体系结构 (1)客户/服务器模型(C/S) (2)P2P模型(Peer-to-Peer) 2、进程通信 (1)客户和服务器进程 &#xff0…

重载是什么?只有返回值类型不同算不算重载?为什么?

重载定义 首先,重载,从简单说,就是函数或者方法有相同的函数名,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者重载方法,例子如下: 重载但…

机房一体化监测解决方案

随着5G、工业互联网等最新基建项目的扎实推进,我国数字经济发展也在不断开拓,很多地区也在积极建设新型信息基础设施,围绕规划、网络、用能等方面加大支持力度。在信息网络技术不断发展的背景下,各类网络设备机房广泛分布。但很多…

品牌商业笔记怎么写,投放笔记总结

小红书的用户当中有百分之五十以上都是来自一线城市,这证明着平台蕴藏着巨大的流量价值。这其中,品牌为了利益自然会去追求如何写商业笔记。今天就来和大家一起分享一下品牌商业笔记怎么写,在投放笔记的时候需要注意什么呢。 根据最新的数据显…

【22-23 春学期】人工智能基础--AI作业2-监督学习

【22-23 春学期】AI作业2-监督学习_HBU_David的博客-CSDN博客 用自己的语言,解释以下概念 1 结构风险最小化 2 正则化 3 线性回归 4 逻辑斯蒂回归 5 Sigmoid 与 SoftMax 函数 6 决策树 7 信息熵 条件熵 信息增益 8 线性判别分析 LDA 9 概率近似正确 PAC …

TCP分岔:优化云服务的性能

云服务器问题 对于搜索、电子邮件和社交网络等云服务,非常需要提供高水平的响应性,因此这些服务运行在自己的端系统(包括其智能手机)中 由于用户经常位于远离数据中心的地方,而这些数据中心负责为云服务管理的动态内…

刷爆朋友圈!前百度总裁陆奇最新AI重磅演讲:我的大模型世界观

文 / 高扬 陆奇的演讲刷屏了,我认真看了他的演讲稿,收获颇丰。 陆奇提到,人类社会的发展,大致可分为:农业化、工业化和数字化三个阶段。 在三个递进的阶段中,人类一直在探索如何减少烦琐且消耗能量的体力和…

紧密联结玩家 | 2023 Google 游戏开发者峰会

玩家的选择是对游戏莫大的认可,重视玩家反馈并和他们建立联系是您的游戏取得成功的关键。我们也在努力创造更多机会,让您的游戏从琳琅满目的列表中脱颖而出,帮助您吸引更多用户。 上篇内容我们介绍了帮助您优化游戏性能的几大功能更新&#x…

【Anaconda】更换清华源实现pip提速

Anaconda用pip安装package时,经常会遇到安装过慢或安装失败的情况,使用以下方法,可以实现package的快速安装。 目录 一、修改配置文件 1.1 生成生成.condarc文件 1.2 修改~/.condarc文件,写入源文件 1.3 配置成功 二、通过A…

中国的chatGpt-中国chatGPT软件

chatGPT中文免费版 您是否在寻找一款免费且实用的聊天软件来更好地与别人交流?那么,“chatGPT中文免费版”将是您的不二选择! 作为一款由 OpenAI 训练的大型语言模型,chatGPT 中文免费版可以让您轻松地与其他人进行交流&#xf…

主引导记录(MBR)、硬盘分区表(DPT)、扩展引导记录(EBR)

前言 最近在研究使用grub引导自制操作系统时,发现grub链式引导过程中向boot传递的硬盘分区表表项数据有疑问,特此记录下。 一、主引导记录(MBR) MBR是存储在计算机硬盘的第一个物理扇区的512字节的数据块,它包含了引…

【Linux】线程池|单例模式|STL、智能指针线程安全|读者写者问题

文章目录 线程池线程池代码线程池单例模式STL,智能指针和线程安全其他锁(了解)读者写者问题(了解) 线程池 我们去处理任务时,一个任务对应一个创建一个线程进行处理,效率是比较低的。我们可以预先创建一批线…

软件框架技术-实现在数据库中建立信息表,在id当中进行编写显示、查询、增加、修改、删除数据的代码,最后在localhost8080端口进行输出并显示在网页上

友情提示:本文代码较长,逻辑上较为复杂,若有需要建议详细阅读!!! 目录 前言 一、代码目录结构 二、数据库Student表的建立 三、idea代码配置 3.1 Student.java类(entity软件包中) 3.2 StudentDao接口类&#xff…