FaceNet: A Unified Embedding for Face Recognition and Clustering 笔记
2017-01-12 12:20
369 查看
此文由google 于2015年发表
论文链接:http://xueshu.baidu.com/s?wd=paperuri%3A%28b5457de3c4f74fbbb7d4703e93dc5974%29&filter=sc_long_sign&tn=SE_xueshusource_2kduw22v&sc_vurl=http%3A%2F%2Farxiv.org%2Fabs%2F1503.03832&ie=utf-8&sc_us=12680360272531669381
FaceNet 则认为最后的分类器其实也可以用网络模拟,替代softmax。
FaceNet 采用三元损失函数训练网络,直接进行端到端学习一个图像到欧式空间的编码方式,然后基于这个编码再做人脸识别、人脸验证和人脸聚类。
去掉了最后的softmax ,经过L2归一化,得到特征表示,再基于这个特征计算三元组损失。
最粗暴的方式是对每个样本,找到离它最近的反例和最远的正例,然后优化,但是这样会有两个问题:耗时,比训练时间还长;容易受不好的数据主导。
采用的方法:
生成mini-batch, 每个mini-batch 中每个人平均有40张图片,然后随机加入一些反例
生成triplet, 不是找到所有的艰难正样本,而是找到所有的anchor-positive 对,然后根据这些特征对,找到semi-hard-negative
人脸识别:成为一个k-NN 问题
人脸验证:对两个编码求欧氏距离,与阈值对比
人脸聚类:利用像k-means 之类的聚类算法
结果:在LFW 上人脸不对齐,效果在98.87%左右,如果使用额外的人脸对齐,效果在99.63%,优于DeepID
论文链接:http://xueshu.baidu.com/s?wd=paperuri%3A%28b5457de3c4f74fbbb7d4703e93dc5974%29&filter=sc_long_sign&tn=SE_xueshusource_2kduw22v&sc_vurl=http%3A%2F%2Farxiv.org%2Fabs%2F1503.03832&ie=utf-8&sc_us=12680360272531669381
1.研究问题
人脸识别、人脸验证、人脸聚类2.此文工作
传统的方法:首先利用softmax 损失函数训练网络,然后从网络中抽取某些层或输出层作为特征,然后基于此特征训练分类器,对人脸进行识别、验证。FaceNet 则认为最后的分类器其实也可以用网络模拟,替代softmax。
FaceNet 采用三元损失函数训练网络,直接进行端到端学习一个图像到欧式空间的编码方式,然后基于这个编码再做人脸识别、人脸验证和人脸聚类。
2.1 模型结构
去掉了最后的softmax ,经过L2归一化,得到特征表示,再基于这个特征计算三元组损失。
2.2 Triplet Loss
2.3 Triplet Selection
很少的数据就能产生很多的三元组,选取合适的三元组可以加快收敛速度。最粗暴的方式是对每个样本,找到离它最近的反例和最远的正例,然后优化,但是这样会有两个问题:耗时,比训练时间还长;容易受不好的数据主导。
采用的方法:
生成mini-batch, 每个mini-batch 中每个人平均有40张图片,然后随机加入一些反例
生成triplet, 不是找到所有的艰难正样本,而是找到所有的anchor-positive 对,然后根据这些特征对,找到semi-hard-negative
2.4 网络结构
此文中比较了好几个网络,有些网络很深,参数较多(1.4亿),也有网络较浅,参数较少(4.3百万,此网络可用于手机)。此文重点不在网络,可视为黑箱子。2.5 人脸识别、人脸验证、人脸聚类
当完成端到端学习到图像到欧式空间的编码,则可以轻松完成以下三个任务: 人脸识别:成为一个k-NN 问题
人脸验证:对两个编码求欧氏距离,与阈值对比
人脸聚类:利用像k-means 之类的聚类算法
2.6 实验与讨论
训练数据:100-200M张图像,分布在8M个人上。恐怖!结果:在LFW 上人脸不对齐,效果在98.87%左右,如果使用额外的人脸对齐,效果在99.63%,优于DeepID
3.总结
抛弃了softmax, 创造性的采用triplet-loss, 得到特征的欧式编码,使得人脸识别、验证、聚类大大简化。但是其超大量的训练数据他人难以效仿。相关文章推荐
- 二当家的官网微信小程序源码实例解析
- 234. Palindrome Linked List
- 安卓开发基础篇——Anroid四大组件之Activity
- mkdir和rmdir命令
- sublime text 3 安装
- 读写锁(read-write lock)机制-----多线程同步问题的解决
- java POI实现Excel单元格数据格式化
- Git 简明使用教程
- 论文笔记 Ensemble of Deep Convolutional Neural Networks for Learning to Detect Retinal Vessels in Fundus
- spring boot +WebSocket 广播式(一)
- test
- D3D9 GPU Hacks 和 用例
- 洛谷1059明明的随机数
- CardLayout布局
- ireport 序号 合计,分组序号
- ListView的实现步骤及几种实现方式
- 语法解析(rs.next())
- 递归的函数
- 平面周期镶嵌
- log4j之DailyRollingFileAppender