前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于tensorflow的人脸识别技术(facenet)的测试

基于tensorflow的人脸识别技术(facenet)的测试

作者头像
sparkexpert
发布2018-01-09 16:14:03
2.9K0
发布2018-01-09 16:14:03
举报

人脸识别的应用非常广泛,而且进展特别快。如LFW的评测结果上已经都有快接近99.9%的。

Uni-Ubi60

0.9900 ± 0.0032

FaceNet62

0.9963 ± 0.0009

Baidu64

0.9977 ± 0.0006

AuthenMetric65

0.9977 ± 0.0009

MMDFR67

0.9902 ± 0.0019

CW-DNA-170

0.9950 ± 0.0022

Faceall71

0.9967 ± 0.0007

JustMeTalk72

0.9887 ± 0.0016

Facevisa74

0.9955 ± 0.0014

pose+shape+expression augmentation75

0.9807 ± 0.0060

ColorReco76

0.9940 ± 0.0022

Asaphus77

0.9815 ± 0.0039

Daream78

0.9968 ± 0.0009

Dahua-FaceImage80

0.9978 ± 0.0007

Easen Electron81

0.9978 ± 0.0006

Skytop Gaia82

0.9630 ± 0.0023

CNN-3DMM estimation83

0.9235 ± 0.0129

Samtech Facequest84

0.9971 ± 0.0018

XYZ Robot87

0.9895 ± 0.0020

THU CV-AI Lab88

0.9973 ± 0.0008

dlib90

0.9938 ± 0.0027

Aureus91

0.9920 ± 0.0030

YouTu Lab, Tencent63

0.9980 ± 0.0023

Orion Star92

0.9965 ± 0.0032

Yuntu WiseSight93

0.9943 ± 0.0045

PingAn AI Lab89

0.9980 ± 0.0016

Turing12394

0.9940 ± 0.0040

Hisign95

0.9968 ± 0.0030

VisionLabs V2.038

0.9978 ± 0.0007

Deepmark96

0.9923 ± 0.0016

Force Infosystems97

0.9973 ± 0.0028

ReadSense98

0.9982 ± 0.0007

      在上述模型中,有许多是商业公司的排名,所以呢,基本上很少有开源的东西。此处只对谷歌的facenet进行测试。

      FaceNet的架构如下所示:

      从上面可以看出,没有使用softmax层,而直接利用L2层正则化输出,获取其图像表示,即特征抽象层。而深度学习的框架可以使用现有的成熟模型,如tensorflow slim中的每一种模型。

      而最后一个Triplet Loss则是采用了三元组的损失函数。其代码如下所示

代码语言:javascript
复制
def triplet_loss(anchor, positive, negative, alpha):
    """Calculate the triplet loss according to the FaceNet paper
    
    Args:
      anchor: the embeddings for the anchor images.
      positive: the embeddings for the positive images.
      negative: the embeddings for the negative images.
  
    Returns:
      the triplet loss according to the FaceNet paper as a float tensor.
    """
    with tf.variable_scope('triplet_loss'):
        pos_dist = tf.reduce_sum(tf.square(tf.subtract(anchor, positive)), 1)
        neg_dist = tf.reduce_sum(tf.square(tf.subtract(anchor, negative)), 1)
        
        basic_loss = tf.add(tf.subtract(pos_dist,neg_dist), alpha)
        loss = tf.reduce_mean(tf.maximum(basic_loss, 0.0), 0)
      
    return loss

从上面代码可以看出,三元组其实就是三个样例,如(anchor, pos, neg),利用距离关系来判断。即在尽可能多的三元组中,使得anchor和pos正例的距离,小于anchor和neg负例的距离。

       其学习优化如下图所示:

测试:(代码见:https://github.com/davidsandberg/facenet)

        由于facenet无需限制人脸对齐,但是代码中提供了MTCNN的对齐,而且在LFW评分中也发现经过对齐的分数能够提高一个档次。

        利用提供的代码,在LFW上进行EVAL,发现其精度高达99.2%

         当然,还有更高的。

另外,程序中还提供了进行两张图片距离的比较的代码,进行调试,结果如下:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年06月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档