十三、人脸识别

news2025/1/12 1:34:49

文章目录

  • 1、人脸认证和人脸识别
  • 2、One shot学习
  • 3、siamese network
  • 4、Triplet loss function
  • 5、人脸识别和二分类问题
  • THE END

1、人脸认证和人脸识别

\qquad 人脸认证表示输入一幅图片和一个name/ID,输出这个图片和ID是否是同一个人。
\qquad 人脸识别表示数据库中有K个人,输入一幅图片,输出这幅图片是否是数据库中的某一个人。
\qquad 人脸识别属于一对一(1:1)的任务,而人脸识别属于(1:K)的任务,对于误差率很小的人脸认证分类器,用在人脸识别上可能效果会很差。

2、One shot学习

\qquad 人脸识别任务中,有一个比较难解决的问题,就是数据库中的每个人只有一张图片,从而无法直接对数据库中的图片进行训练从而进行不同人脸的识别任务,这样训练出来的分类器也将会十分低效。同时若数据库中新加入了图片,则需要重新对分类器进行训练,从而使得这种思路显得不可行。
\qquad 为了解决上述问题,不是去针对每一幅图片训练,而是训练一个计算不同图片之间相似度的函数:
d ( i m g 1 , i m g 2 ) = d e g r e e o f d i f f e r e n c e b e t w e e n i m a g e s d(img1, img2)=degree of difference between images d(img1,img2)=degreeofdifferencebetweenimages
\qquad 从而在获取到一幅新的图片时,直接将图片和数据库中的图片进行相似度的计算,设置一个阈值 τ \tau τ来决定是否接受这幅图片属于数据库中某个人;最终选择相似度最大的数据库中的图片对应的人作为这幅图片的从属人。

3、siamese network

\qquad siamese network架构就是训练两个相同的卷积神经网络,这个卷积神经网络输入一幅图片,经过若干个卷积层,池化层和全连接层之后,输出这幅图片的编码;最终将不同图片之间的编码做二范数,若两幅图片属于同一个人,则训练二范数的值需要尽可能的小。
在这里插入图片描述

4、Triplet loss function

\qquad 上述siamese network同样使用误差反向传播来进行网络参数的训练,siamese network的目标可以通过下述方式进行设定:选定一幅图片作为anchor picture(A),之后选择一幅同人图片作为positive picture(A)和一幅非同人图片作为negative picture(N),分别计算anchor picture和positive picture,negative picture之间的相似度,同时设定一个margin α \alpha α来进一步区分positive picture和negative picture,最终得到的目标如下所示:
∣ ∣ f ( A ) − f ( P ) ∣ ∣ 2 + α ≤ ∣ ∣ f ( A ) − f ( N ) ∣ ∣ 2 ||f(A)-f(P)||^2+\alpha \leq ||f(A)-f(N)||^2 ∣∣f(A)f(P)2+α∣∣f(A)f(N)2
\qquad 非定三幅图片A,P和N,Triplet loss function的定义如下所示:
L ( A , P , N ) = m a x ( ∣ ∣ f ( A ) − f ( P ) ∣ ∣ 2 + α ≤ ∣ ∣ f ( A ) − f ( N ) ∣ ∣ 2 , 0 ) L(A,P,N)=max(||f(A)-f(P)||^2+\alpha \leq ||f(A)-f(N)||^2, 0) L(A,P,N)=max(∣∣f(A)f(P)2+α∣∣f(A)f(N)2,0)
\qquad 从而可以得到神经网络的损失函数为:
J = ∑ i = 1 m L ( A i , P i , N i ) J=\sum_{i=1}^{m}L(A^i,P^i,N^i) J=i=1mL(Ai,Pi,Ni)
\qquad 在训练时,训练集中需要包含同一个人的不同的图片,从而便于生成A,P,N三元组,e.g., 10K pictures of 1K persons.

5、人脸识别和二分类问题

\qquad 面部识别问题同样可以转化成一个二分类问题来进行处理,方法是将两幅图片输入siamese network,将输出的图像的encoding向量输入到一个神经元中,经过sigmoid函数处理之后输出0和1表示这两幅图片是否为同一个人,令encoding向量的维度为128,其中sigmoid函数输入的值可以如下进行设置:
y ^ = σ ( ∑ k = 1 128 ω i ∣ f ( x ( i ) ) k − f ( x ( j ) ) k ∣ + b ) \hat{y} = \sigma (\sum_{k=1}^{128} \omega_i|f(x^{(i)})_k-f(x^{(j)})_k|+b) y^=σ(k=1128ωif(x(i))kf(x(j))k+b)
\qquad 其中 ω i \omega_i ωi b b b是需要训练的参数,也可以选择其他形式将encoding进行输入,如 χ 2 \chi^2 χ2形式:
( f ( x ( i ) ) k − f ( x ( j ) ) k ) 2 f ( x ( i ) ) k + f ( x ( j ) ) k \frac{(f(x^{(i)})_k-f(x^{(j)})_k)^2}{f(x^{(i)})_k+f(x^{(j)})_k} f(x(i))k+f(x(j))k(f(x(i))kf(x(j))k)2
在这里插入图片描述

THE END

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

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

相关文章

OMA通道-3

4 Transport API 传输 API 作为开放移动 API 的一部分,为开放移动设备中可用的 SE 提供通信框架 4.1 概述 传输 API 的作用是为应用程序提供访问设备上可用的 SE 的方法。 提供的访问权限基于 ISO/IEC 7816-4 [ISO 7816-4] 定义的概念: • APDU&#…

WIN提权 烂土豆dll劫持

烂土豆配合令牌劫持提权(win2012及以下版本可以尝试) 两者配合使用可以直接从web权限提升到system权限 msf反弹后监听 上传文件Potato.exe upload /home/yx/桌面/Potato.exe上传至目标主机目录 烂土豆也很鸡肋 在shell中使用 whoami /priv 查看当…

2023年电工杯报名队伍破万!!!!

截止2023年5月24日凌晨0:56分,刚刚使用账号进行电工杯队伍注册,电工杯报名队伍已经达到10600只队伍,作为本年度上半学年,最后一场大型认可度较高的比赛,本次比赛的时间设置、报名费免费等优势使得,这场比赛…

C++ 图像线特征提取及匹配(LineSegmentMatching)

C++ 线特征提取及匹配【LineSegmentMatching】 1 源码下载2 环境配置2.1 添加预定义设置:2.2.配置项目环境2.1 C/C++ --》常规--》附加包含目录:2.2 链接器-》常规--》附加库目录:2.3 链接器-》常规--》输入:3 编译时踩坑记录4.匹配效果输入两幅图像,分别提取两幅图像中的…

【学习日记2023.5.23】 之 Redis入门未入坑

文章目录 1. Redis入门1.1 Redis简介1.2 Redis下载与安装1.2.1 Redis下载1.2.2 Redis安装 1.3 Redis服务启动与停止1.3.1 服务启动命令1.3.2 客户端连接命令1.3.3 修改Redis配置文件1.3.4 Redis客户端图形工具 2. Redis数据类型2.1 五种常用数据类型介绍2.2 各种数据类型特点 3…

shell sed命令

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 sed 命令sed 编辑器sed 的工作流程的三个过程命定格式常用选项常用操作 实验操作打印内容使用地址删除行替换插入 sed 命令 sed 编辑器 sed是一种流编辑器&#x…

什么是 Java 中的数据库连接池?为什么使用连接池来管理数据库连接?

文章目录 1. 数据库连接池的好处1.1 提高性能1.2 连接的重用1.3 连接管理和监控 2. 代码演示2.1 新建maven项目2.2 配置maven地址2.3 配置 Druid 数据源2.4 编写测试代码2.4.1 创建一个 Druid 数据源连接池和获取连接2.4.2 编写测试类2.4.3 新建数据库表2.4.4 运行截图 3. 完整…

进程控制-进程的替换

回顾 对于进程,我们已经有了初步的了解,我们学会了进程的终止,进程的等待,还有如果创建子进程。 这次,我们来学习如何把一个进程运行的代码和数据替换成其他的代码和数据。 进程的替换 为什么要进程替换&#xff0…

Spark大数据处理讲课笔记----Spark任务调度

零、本节学习目标 理解DAG概念了解Stage划分了解RDD在Spark中的运行流程 一、有向无环图 (一)DAG概念 DAG(Directed Acyclic Graph)叫做有向无环图,Spark中的RDD通过一系列的转换算子操作和行动算子操作形成了一个…

进程控制--进程的等待

回顾 之前我们已经学习了进程的状态和进程的退出如果你没有这些基础知识,应先去了解进程的相关基础知识。 这次我们主要来学习如何让进程等待子进程的退出。 为什么要等待子进程? 之前我们在学习进程的状态的时候,我们知道了进程有一种状态…

JavaEE——阻塞式队列

文章目录 一、阻塞式队列二、生产者消费者模型1.发送方和接受方之间的 “解耦合”2. “削峰填谷”保证系统稳定性3、代码实现阻塞式队列 一、阻塞式队列 阻塞式队列,顾名思义也是一个队列,这个队列遵循的是先进先出的原则。 这里简单提一个特殊的队列&…

chatgpt赋能Python-python_output用法

Python Output 用法介绍 Python 是一种非常流行的编程语言,其简单而有效的语法和丰富的功能集使其成为了各种应用程序和数据分析项目的首选工具。 Python 在输出方面有非常灵活的方式,本文将介绍 Python Output 的用法。 使用 print 函数输出 Python …

python爬虫之request库的使用(友好版)

以下所有爬取的网站都是可以爬取的,爬取时请先学学法律哦~ 如有侵权,私信删除~ 本章目录~。~ 一,request库简介: 二,requests使用方法 1.GET请求 1.1,发起一个get请求 1.2,利用GET请求发…

三、数据仓库实践-拉链表设计

1 写在开头的话 拉链表,学名叫缓慢变化维(Slowly Changing Dimensions),简称渐变维(SCD),俗称拉链表,是为了记录关键字段的历史变化而设计出来的一种数据存储模型,常见于…

蓝奏云软件库源码分享下载(后端源码)

正文: FreePlus后台管理系统是一个基于[Thinkphp]的后台管理系统,提供了基本的应用管理、用户管理 、卡密管理 、笔记管理 、邮箱管理 、商城管理 、论坛管理 、附件管理、软件库、工具箱等功能。#### 软件架构thinkphp5.1mysql实现#### 安装教程(php必…

Spark大数据处理讲课笔记--- RDD持久化机制

零、本讲学习目标 理解RDD持久化的必要性了解RDD的存储级别学会如何查看RDD缓存 一、RDD持久化 (一)引入持久化的必要性 Spark中的RDD是懒加载的,只有当遇到行动算子时才会从头计算所有RDD,而且当同一个RDD被多次使用时&#…

基于SpringBoot的家乡特色推荐系统的设计与实现

背景 设计一个家乡特色推荐系统,通过这个系统能够满足家乡特色文章的管理功能。系统的主要功能包括首页,个人中心,用户管理,文章分类管理,文章分享管理,系统管理等。 管理员可以根据系统给定的账号进行登…

堪比ChatGPT,Claude注册和使用教程

新建了一个网站 https://ai.weoknow.com/ 每天给大家更新可用的国内可用chatGPT资源 Claude简介 Claude是一款人工智能聊天机器人。主要有以下特征: 使用自己的模型与训练方法,而不是基于GPT-3等开源框架。模型采用Transformer编码器与解码器的结构,并使用对话上下文的双向…

Spark大数据处理讲课笔记---RDD容错机制

零、本讲学习目标 了解RDD容错机制理解RDD检查点机制的特点与用处理解共享变量的类别、特点与使用 一、RDD容错机制 当Spark集群中的某一个节点由于宕机导致数据丢失,则可以通过Spark中的RDD进行容错恢复已经丢失的数据。RDD提供了两种故障恢复的方式&#xff0c…

全国大学生数据统计与分析竞赛2021年【研究生组】-B题:“互联网+教育”用户消费行为分析预测模型(附获奖论文和python代码实现)

目录 摘要 1 问题重述 2 问题分析 3 符号说明 4 模型建立与求解 4.1 问题一 4.1.1 数据预处理 4.1.2 处理结果 4.2 问题二 4.2.1 城市分布情况 4.2.2 用户登录情况 4.3 问题三 4.3.1 模型建立 4.3.2 模型求解 4.3.3 模型优化 4.4 问题四 4.4.1 模型建立 4.4.…