阅读 240

TensorFlow SiameseNet 人脸识别实战

原文链接: www.jianshu.com

文章的主要工作是用SiameseNet模型实现人脸识别的功能。 SiameseNet卷积神经网络模型如下(详细结构移步到GitHub,简化版的VGG):


SiameseNet模型
输入输出示例

数据集采用微软的MS-Celeb-1M公开人脸数据集,大家直接下载对齐好的那个数据集,首先网络上有一份清理过的list,文件名是:MS-Celeb-1M_clean_list.txt,大约160M。然后用组合算法生成positive_pairs_path.txt和negative_pairs_path.txt两个文件,每个约150W对,生成后的样子是:


生成文件示例

关键的问题来了,Loss函数怎么定义,其实就是Logistic Regression的Loss函数,这里值得注意的是最后一层的激活函数要用Sigmoid Function。Loss函数如下:


Loss函数

接下来就是训练咯,在TITAN X上训练大约3天,我们可以看到这样的Loss曲线:


Loss曲线

我们可以看到,Loss收敛得很好,不过经过多次试验当Loss下降到0.1左右的时候就不在下降了,目前我还没有找到原因,如果您有解决这个问题的思路,可以给我留言或者给我发邮件(hfrommane@qq.com)。

那我们的模型正确率怎么样呢? 哈哈,不高,在LFW上的正确率90%+,模型还需要优化。

项目源码:
github.com/hfrommane/T…

如果您喜欢,给我点一个star,感谢。