当前位置: 首页 > news >正文

《深度学习》Dlib库 CNN卷积神经网络 人脸识别

目录

一、如何实现CNN人脸识别

1、CNN核心概念

1)卷积层

2)池化层

3)激活函数

4)全连接层

2、步骤

1)加载预训练的人脸识别模型

2)读取图像并检测人脸

3)提取人脸特征向量

4)比较相似度

二、案例实现

1、完整代码

运行结果:


一、如何实现CNN人脸识别

1、CNN核心概念

        1)卷积层

                卷积层是CNN的核心组成部分之一,它通过应用一组卷积核(也称为滤波器)在输入图像上滑动,提取图像的局部特征。每个卷积核会对图像进行卷积操作,得到一个输出特征图。

        2)池化层

                池化层用于对卷积层输出的特征图进行下采样,减少特征图的尺寸和参数数量。常见的池化操作有最大值池化(Max Pooling)和平均值池化(Average Pooling)。

        3)激活函数

                在卷积层或全连接层之后,通常使用非线性激活函数来引入非线性关系。常见的激活函数有ReLU函数、Sigmoid函数和Tanh函数等。

        4)全连接层

                全连接层将前面的卷积层或池化层输出的特征图展平,并与相邻层的所有神经元进行全连接操作。它的作用是将提取到的特征进行分类或回归预测。

2、步骤

        1)加载预训练的人脸识别模型

                Dlib提供了一个预训练的人脸识别模型,可以在下载并安装Dlib库后找到。

        2)读取图像并检测人脸

                使用Dlib库提供的人脸检测器来检测输入图像中的人脸,并将每个检测到的人脸提取为一个矩形框。

        3)提取人脸特征向量

                使用CNN模型对每个检测到的人脸图像进行特征提取,得到一个固定长度的向量表示每个人脸。

        4)比较相似度

                使用提取的人脸特征向量来比较不同人脸之间的相似度。可以使用欧氏距离或余弦相似度等度量方法来计算相似度分数。

二、案例实现

1、完整代码

import dlib
import cv2# opencv可以直接通过retnet来读取神经网络。dlib也可以的。
cnn_face_detector = dlib.cnn_face_detection_model_v1("mmod_human_face_detector.dat")  # 加载预训练的卷积神经网络模型,文件内包含检测人脸所需的权重和配置img = cv2.imread("people3.png")  # 读取待识别人脸图片faces = cnn_face_detector(img,1)  # 调用卷积神经网络检测模型对img图像检测人脸,1表示上采样次数为1for d in faces:  # 遍历识别到的每一个人脸# 计算每个人脸的位置rect = d.rect   # 获取当前人脸的矩形框对象,返回两个坐标,左上右下left = rect.left()  # 左边界x坐标top = rect.top()   # 上边界y坐标right = rect.right()   # 右边界xbottom = rect.bottom()   # 下边界y# 绘制人脸对应的矩形框pt1:(left, top)cv2.rectangle(img,(left,top),(right,bottom),(0,255,0), 3)cv2.imshow("result",img)
k = cv2.waitKey()
cv2.destroyAllWindows()
        运行结果:

http://www.lryc.cn/news/464101.html

相关文章:

  • 滚雪球学Redis[7.1讲]:Redis实战案例
  • WordPress外部图片本地化插件
  • Linux基础-shell的简单实现
  • Tomcat日志文件详解及catalina.out日志清理方法
  • react 中的hooks中的useState
  • STM32学习笔记---DMA
  • Cesium 实战 - 自定义纹理材质 - 立体墙(旋转材质)
  • 进程间关系与守护进程
  • 金山翻译接口逆向
  • unified-runtime编译与验证
  • 【Python】最详细--基础语法
  • 二叉树基础:什么样的二叉树适合用数组来存储?
  • iTOP-RK3568开发板独立NPU通过算法加特应用到以下的场景
  • Java基于SpringBoot微信小程序的跳蚤市场系统设计与实现(lw+数据库+讲解等)
  • 【分布式微服务云原生】《Redis 的高效之道:线程模型、IO 模型与 Reactor 模型全解析》
  • 科研类型PPT的制作技巧
  • rom定制系列------小米6x_MIUI14_安卓13刷机包修改写入以及功能定制 界面预览
  • 线性代数基础02
  • 「4.4」祖孙询问
  • Datawhale 组队学习 文生图 Prompt攻防 task03随笔
  • 游戏投屏软件有哪些?分享这10款比较好用的!
  • [Unity Demo]从零开始制作空洞骑士Hollow Knight第十六集(下篇):制作小BOSS龙牙哥
  • 顺序表算法题【不一样的解法!】
  • VuePress的基本常识
  • 深入解析Vue2与Vue3的区别与Vue3的提升
  • 认识python数据分析
  • 以太网交换安全:MAC地址漂移与检测(实验:二层环路+网络攻击)
  • NeRF三维重建—神经辐射场Neural Radiance Field(二)体渲染相关
  • 软件测试工程师:如何写出好的测试用例?
  • 「图::连通」详解并查集并实现对应的功能 / 手撕数据结构(C++)