前面几篇博客介绍了目前基于深度学习比较常用的神经网络,并且在准确度方面都已经超越了人眼的效果。本篇博客就主要从表面介绍一下他们之间的区别。之所以是表面主要是因为目前只是从理论的层面来比较他们之间的差异。随着后续的使用可能再对差异进行补充。

一、模型:

DeepFace:在实现时需要使用3D对齐技术,然后将对齐的结果送入一个9层网络进行处理。整个训练过程前两个卷积层采用了共享卷积核,后三个卷积采用不共享卷积核,倒数第二层采用全连接层提取出对应的人脸特征。最后一层是一个softmax层分类。

DeepID:DeepID网络有一代和二代两种,两种网络的区别主要在于损失函数的定义。以DeepID二代为例,其网络结构是8层网络结构。4个卷积层,3个池化层,1个全连接层,全连接得到的是160特征向量。然后在根据160维向量svm或者softmax分类。在第一阶段处理完之后还根据生成的结果训练了用于鉴定图片是不是一类的贝叶斯分类器。并用该分类器对特征向量进行筛选并且可以泛化的。除此之外,该网络的最后一层分别和倒数前两层相连接(为了视野的互补)。

FaceNet:FaceNet是谷歌提出的网络结构,其网络结构灵活性较大可以使22层的Zelier&Fergus的网络,也可以使用现在在物体识别里面效果比较好的inception网络。其主要特点采用三元对之间的距离构建损失函数。

二、损失函数

DeepFace在训练过程中采用的是一般的交叉熵损失函数,并且采用一般的softmax对训练的数据进行分类,只不过从特征向量产生到用来分类的过程中使用了一些内积,卡方距离或者siamese的度量方式来计算相似度,用相似度来进行训练产生分类器。

DeepID2在训练过程中除了采用softmax训练构建分类器时产生的交叉熵函数之外,还添加了关于两张图片是不是一个人的损失函数,两个损失函数按权重组合,最终生成了对应的总损失函数用来进行训练。

FaceNet网络在使用的过程中通过三元对来构造损失函数,直接根据学习到的特征向量,计算在一类的图片距离和不在一类的图片距离,训练的结果是一类之间的距离尽量小,不一类之间的距离尽量大。

三、数据处理

DeepFace在使用前需要对数据进行3D对齐处理。

DeepID在训练的时候并没有进行对齐(但是对齐肯定会提高准确度)而是采用了通过对图片进行翻转,切片等处理方式得到许多不同的patch(400个),通过向前向后算法选出最适合的25个,并计算出对应的特征向量,生成的特征向量拼接成高维向量并采用PCA再次进行降维。同时在剩余的图片里面再选25个再进行计算,最终选出7组进行组合生成贝叶斯分类器。

FaceNet:处理时不要求对数据进行对齐(但是对齐后准确度会提高),直接输入需要识别的图片,并将图片放入网络进行计算。只不过在训练的过程中计算损失函数时需要对模型进行分批处理。即加入semi-hard约束条件选择最合适的边界向量。

三、模型参数(M表示million,B表示billion)

DeepFace网络的参数为:120M个参数

DeepID网络的参数为:未知

FaceNet网络的参数为:Zeiler&&Fergus网络140M个参数,1.6B次浮点计算(每张图片)

Inception网络为7.5M个参数,1.6B次浮点计算(NN2)

NNS1网络为26M个参数,220M次浮点计算(比标准的小)

NNS2网络为4.3M个参数,20M次浮点运算(更小)

NN4网络为285M次浮点运算(输入尺寸不一样96X96)

四、结果维度、准确度及速度:(基于对齐后人脸的准确度,按最好情况来算)

模型                           维度                     准确度 (LFW数据)       准确度(YTF视频)                  速度

DeepFace                     4096                         97.35%                          92.5%                    0.18s+0.05s(对                                                                                                                                                                齐)

DeepID                          160                           99.15%                         无                                 35ms(GPU)

FaceNet(NN3)                512                          99.65%                          95.12%                        无,但是NNS2                                                                                                                                                     移动端是30ms

六、模型使用

DeepFace:模型在使用时需要先对齐,提取出对应的特征,但是存在一个弊端,模型训练特征的过程是使用分类器的结果构造损失函数的。也就是说当模型使用的时候特征和分类器是绑定的,而这种分类器分出来的类大小又和输入数据类的大小绑定。针对不同的输入数据需要不同的训练以保证准确度。

DeepID: 模型在使用过程中同样面临和上述模型一样的问题。但是该模型在最后训练了贝叶斯分类器,该分类器在一定程度上解决了泛化的问题。使用时通过贝叶斯分类器进行鉴定。

FaceNet:直接通过模型计算距离,并通过距离进行分类和预测。

人脸识别之DeepFace、DeepID以及FaceNet网络的区别相关推荐

  1. 人脸识别之DeepFace模型

    之前了解过了DeepID和FaceNet网路结构,但根据一些博客的说法DeepFace是深度学习用在人脸识别领域的奠基之做,所以也看了一下DeepFace的理论,现在主要将自己的理解梳理一下,如理解有 ...

  2. 聪明的人脸识别4——Pytorch 利用Retinaface+Facenet搭建人脸识别平台

    睿智的目标检测51--Pytorch 利用Retinaface+Facenet搭建人脸识别平台 学习前言 什么是Retinface和Facenet 1.Retinface 2.Facenet 整体实现 ...

  3. 简单人脸识别一之使用opencv+cnn网络实现人脸识别

    最近在研究目标检测这个方向,看到网上有很多的人脸识别帖子,所以也想着上上手看看.当时是做了三个模型出来,第一个就是网上很通用普遍的opencv+简单三层cnn网络来实现的,说实话效果真的一般吧!具体的 ...

  4. AI人脸检测和人脸识别是一个概念吗?有什么区别?

    人脸检测 - 也称为面部检测 - 是一种基于人工智能 (AI) 的计算机技术,用于在数字图像中查找和识别人脸.人脸检测技术可应用于各个领域--包括安全.生物识别.执法.娱乐和个人安全--以提供对人员的 ...

  5. 人脸识别与膜虹识别_虹膜识别vs指纹识别vs人脸识别:从三星S8看三者的区别!...

    三星S8号称提供五种解锁方式,解锁姿势突出一个丰富,其中虹膜识别.指纹识别和人脸识别都属于生物识别技术.比起传统的绘制图案和密码解锁,他们应用在手机上更加安全和方便,三星为了展示实力也一股脑将他们全都 ...

  6. 深度学习人脸检测与人脸识别

    一.概述 1. 基本概念 人脸是个人重要的生物特征,业界很早就对人脸图像处理技术进行了研究.人脸图像处理包括人脸检测.人脸识别.人脸检索等.人脸检测是在输入图像中检测人脸的位置.大小:人脸识别是对人脸 ...

  7. 港中大教授研发DeepID人脸识别技术 准确率超99%

    http://mi.techweb.com.cn/tmt/2014-06-23/2049460.shtml 6月23日凌晨消息,香港中文大学教授汤晓鸥.王晓刚及其研究团队上周宣布,他们研发的DeepI ...

  8. 人脸识别:1.DeepFace

    DeepFace: Closing the Gap to Human-Level Performance in Face Verification Cite 基于卷积的人脸识别pipeline共有四个 ...

  9. TensorFlow--实现人脸识别实验精讲 (Face Recognition using Tensorflow)

    做一个人脸检测实验. 1.获取数据集(LFW) Labeled Faces in the Wild Home Menu->Download->All images as gzipped t ...

最新文章

  1. SAP S4HANA系统里的客供件管理
  2. replace into
  3. 面试之什么是java虚拟机
  4. 连接硬盘计算机没显示,新买的移动硬盘在我的电脑中无法显示,但是右下角图标显示已经连接,? 爱问知识人...
  5. __attribute__((section(name))) study again
  6. Progressive Scramble 复杂模拟
  7. Java 异常处理的 20 个最佳实践,你知道几个?| CSDN 博文精选
  8. hping3发送MTU大包无法正确设置DF标志patch
  9. 系统建模与仿真 - 电子书下载(高清版PDF格式+EPUB格式)
  10. 求助wpe封包遇到动态验证怎么办
  11. qunee for html5,Qunee for HTML5(二)
  12. uni-app map路线轨迹回放功能及turf.js实现缓冲区渲染(微信小程序)
  13. BSC 再现闪电贷攻击 BUNNY 闪崩
  14. 2015 计蒜之道 初赛 第一场 搜狗输入法的分词算法
  15. 无人驾驶公司大全(原无人驾驶龙虎榜)
  16. 形式化方法(Formal Methods)
  17. “3亿”风暴席卷昆明 搜狗全国移动峰会即将开幕
  18. TCP拥塞控制算法纵横谈-Illinois和YeAH
  19. 删 卡尔 波普尔_卡尔波普尔哲学语录28句,深度揭示生活中的错误
  20. PPT转PDF怎么转?这几种转换小技巧轻松拿捏

热门文章

  1. 杨桃电子P17-STM32F103最小系统电路图
  2. 【图解算法数据结构】数据结构篇 + Java代码实现
  3. 演讲实录 | Service Mesh 时代的选边与站队(附PPT下载)
  4. 360lib投影格式介绍(一) - 伪圆柱投影(ERP / EAP / AEP / ECP)
  5. js利用tab键切换当前页面_js小技巧:tab页切换
  6. ArcGIS有什么板块,应用于什么方面
  7. 三维模型和场景数据自动导入UE4的方法与流程
  8. 软考阅卷老师10条忠告,得牢记
  9. python图片识别是否p过_用 Python 和 OpenCV 检测图片上的条形码
  10. java 安卓 sqlite数据库,android sqlite数据库操作