TensorFlow框架做实时人脸识别小项目(二)

2023-11-16

在第一部分中,分析了整个小项目的体系,重点讨论了用于人脸检测对齐的mtcnn网络的实现原理,并利用笔记本电脑自带的摄像头进行了测试。今天在这里要讨论的重点是人脸识别中的核心部分——facenet网络。

facenet是Google开源的人脸识别框架,它的作用是把输入的人脸图像映射为多维特征向量,相当于对不同的人脸进行了不同的编码,同一个人脸的图像生成的编码几乎一致,不同的人脸图像生成的编码差异非常大,并以此达到识别的目的。设计一个能够达到这样效果的映射的网络是一个很难的问题,我们下面就一步一步来看facenet是怎样解决这个问题的。

首先,facenet的结构是这样的:


facenet网络的输入有多种不同的大小,中间部分是一个深度卷积神经网络,与其他普通CNN没有多大区别。facenet不一样的地方在于后面部分,它对深度卷积神经网络的输出做了一个L2正则化,然后再对输出进行了embedding,直接将embedding的映射结果作为特征向量输出。facenet并没有像其他一般的CNN用softmax作为损失函数,而是设计了一种新的损失——triplet loss。

在理想的情况下,特征向量之间的距离可以直接反映人脸的相似度,即:

  • 对于同一个人的两张人脸图像,对应的向量之间的欧几里得距离比较小
  • 对于不同人的两张图像,对应的向量之间的欧几里得距离比较大

假设人脸图像为x1和x2,对应的特征为f(x1)和f(x2)。当x1和x2对应的是同一个人脸时,其距离II f(x1)-f(x2) II应该很小,而当x1和x2对应的是不同的人脸时,其距离II f(x1)-f(x2) II应该很大。

然而事实并非如此。在一般CNN网络中,最后的输出经过softmax分类器,使用的是softmax损失。这个损失是不同类别间的损失。对于人脸来说,每一个人脸就是一个人。看起来似乎很合理,但是用softmax表示损失,以此区别出不同的人是不可行的。softmax本质上没有对每一类的向量表示之间的距离做出要求。用softmax分类的结果,可能同一个类中的向量,它的类间距比不同类中的向量间距还要大。对于这种情况,就要考虑设计新的损失函数解决问题。

下面重点看triplet loss的定义及原理

三元组损失(triplet loss)的原理:既然目标是特征之间的距离应当具备某些性质,那么就围绕这个距离来设计损失。具体的,每次都在训练数据中取出三张人脸图像,第一张图像记为,第二张图像记为

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TensorFlow框架做实时人脸识别小项目(二) 的相关文章

随机推荐

  • linux命令详解及软件安装(全)

    环境搭建 环境搭建 Vmware 账号管理 开机关机 目录管理 文件管理 文件操作 touch cat tac more less grep wc vim 磁盘管理 iostat sar df du 内存管理 free CPU管理 top
  • 2023华为OD机试真题Java实现【士兵过河/动态规划】

    题目内容 一支N个士兵的军队正在趁夜色逃亡 途中遇到一条湍急的大河 敌军在T的时长后到达河面 没到过对岸的士兵都会被消灭 现在军队只找到了1只小船 这船最多能同时坐上2个士兵 1 当1个士兵划船过河 用时为 a i 0 lt i lt N
  • 记录vue js-table2excel 导出带有多张图片到Excel

    新建js table2excel js文件 eslint disable let idTmr const getExplorer gt let explorer window navigator userAgent ie if explor
  • Springmvc拦截器三个方法的执行时机

    一 拦截器三个方法分别是 1 1 preHandle 预处理回调方法 实现处理器的预处理 如登录检查 第三个参数为响应的处理器 如具体的Controller实现 返回值 true表示继续流程 如调用下一个拦截器或处理器 false表示流程中
  • 微信小程序与应用服务的关系和“代码安全“

    今天给客户回答了下小程序项目的代码安全问题 他担心源代码提交以及发布系统后被第三方知晓源代码 导致代码泄露 虽然作为程序员来说 这个问题不用考虑 但是非技术人员似懂非懂 所以我还是做了一个解释 一般做微信小程序开发 需要知道微信小程序只是纯
  • 记录PaddleOcr的使用2 -- GPU

    项目场景 之前使用了cpu 但是效率感人 所以想尝试一下GPU的版本 安装环境 windows下使用的 别问 问就是没有有GPU的服务器 1 python 3 7 如果是linux建议3 8 2 pip 版本 20 2 2或更高版本 64
  • LALR(1)语法自动分析生成器Mathew

    首次写博客 文采不好大家不要见笑额 简介 Mathew 马修 马修名字源于 魔力女管家 里的星神马修 马修是一个LALR 1 型活动板房式的语法自动分析生成器 马修继承了Lemon 也许大家对LEX和YACC比较熟悉 这两个工具配合使用可以
  • 记录Chrome截屏整个页面的命令

    F12 右键检查 进入开发者工具 调出命令 MAC command shift P Window ctrl shift P 输入命令 capture full size screenshot
  • C/C++如何输入包含空格的字符串

    对于C 字符串的输入我们看一下下面这段代码 string s 定义空字符串 cin gt gt s 输入字符串 cout lt lt s 打印 但我们会发现如果我们输入了还有空格的字符串 s里读入的字符串遇到空格 回车 tab都会结束 比如
  • 目前 AIGC 工具到底能帮我们做什么?

    最近直播超级多 预约保你有收获 今天腾讯发布了混元大模型 大模型赛道越来越内卷了 今天咱们来聊聊目前的 AIGC 工具能帮助我们做什么 AIGC 的本质是由 AI 来生产内容 通过自然语言交互的方式 让 AIGC 工具输出内容 AIGC 工
  • 20-文件下载及读取漏洞

    WEB 漏洞 文件操作之文件下载读取全解 思维导图 1 文件被解析 则是文件解析漏洞 2 显示源代码 则是文件读取漏洞 3 提示文件下载 则是文件下载漏洞 文件下载漏洞 利用条件 1 存在读文件的函数和操作 2 读取文件的路径用户可控且未校
  • Android 保存资源图片到相册最新写法适用于Android10.0及以上

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 一 首先在AndroidManifest xml中加入权限
  • APFS 文件系统探究

    本文的创作初衷是因为我发现从底层详解 APFS 的资料很少 所以自己来进行了一些探究和整理 一点说明 如果你在看 APFS 的文档或者其他内容 不要把高层级的分区理解成 Windows 中的分区 因为 APFS 里卷 Volume 才是显示
  • OUT指令时,就进入了I/O端口读写周期

    1 译码电路的输入信号 每当CPU执行IN或者OUT指令时 就进入了I O端口读写周期 此时首先是端口地址有效 然后是I O读写控制信号 IOR和 IOW有效 把对端口地址译码而产生的译码信号同 IOR和 IOW结合起来一同控制对I O端口
  • 聊聊FFT

    关于FFT 全称为快速傅里叶变换 目的是把时域的信号转变为频域的信号 具体的科学解释及计算方程组可以去查百度百科 不过小编不建议这么做 因为查了也看不懂的 先看一张都能看懂的图 这是某种食物的配方表 每种配方包含了多少比例标注的很清楚 对于
  • 计算机网络教程_第二章物理层_整理与复习

    计算机网络教程 第一章 概述 第二章 物理层 第三章 数据链路层 提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 计算机网络教程 1 物理层的作用及主要任务 2 数据传输的方式 并行 串行 异步 同步 P40 3
  • python 设置下载源,全局设置

    推荐使用豆瓣的 个人感觉最好用 当然 你如果喜欢其它的 也可以设置 pip config set golbal index url https pypi douban com simple 设置成功 windows 提示的配置文件在 ini
  • Spyder上使用tensorflow训练完成时出现SystemExit异常

    使用spyder tensorflow实现迁移学习训练inception v3网络 训练完成后提示 SystemExit home zhijuan anaconda3 lib site packages python3 6 site pac
  • 深度学习 图像分割综述

    文章目录 前言 语义分割 实例分割 技术路线 掩膜建议分类法 先检测再分割法 标记像素后聚类法 密集滑动窗口法 参考 前言 图像分割在计算机视觉中是个重要的任务 在地理信息系统 医学影像 自动驾驶 机器人等领域都有着很重要的应用技术支持作用
  • TensorFlow框架做实时人脸识别小项目(二)

    在第一部分中 分析了整个小项目的体系 重点讨论了用于人脸检测对齐的mtcnn网络的实现原理 并利用笔记本电脑自带的摄像头进行了测试 今天在这里要讨论的重点是人脸识别中的核心部分 facenet网络 facenet是Google开源的人脸识别