热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深度挖坑系列之三:人脸识别,角度空间,欧氏空间,margin

这是深度挖坑系列的第三篇,可能也是有关人脸识别方向的最后一篇。第二篇,讲network的,由于某些原因,没有写完ÿ

这是深度挖坑系列的第三篇,可能也是有关人脸识别方向的最后一篇。

第二篇,讲network的,由于某些原因,没有写完,之后会补上。

写这篇文章的目的,大概有三个:第一,将第一篇中feature norm的东西补完;第二,最近sensetime用asoftmax在megaface上面刷到了99.8,说一下margin相关的东西;第三,说一说face comparing的局限性。

最后,说一下,因为本人比较懒,所以这篇里面的东西不会给出出处,希望读者能够自己搜索。

 


一:角度空间

从sphereface这篇文章开始,人脸识别就从原来的训练、测试都使用欧氏距离 变成 训练、测试都使用余弦距离,后面的cosface,amsoftmax,arcface均是如此,其分类boundary分别为:

除了sphereface没有进行feature normalization操作,保留了图像质量信息。其余的都进行了feature normalization操作,这也是我们第一篇文章里面讨论的重点,这里,我来详细的分析一下feature normlization的特点:


  1. feature normalization之后,强制将训练图片的质量都认为是1,其导致的结果便是非人脸也会在其中占据一个空间,当做测试的时候,两张质量很低的人脸相似度会很高,并且无法通过feature norm来判断这张图片的质量(arcface实测)。
  2. 这导致了arcface,cosface对于vggface2这样的数据集无能为力,因为里面的图片质量并不都是1.
  3. 问题在于,我们做分类的时候,这张图片到自己类中心的距离是要小于到其他类中心的距离,但是在标注的时候却没有这样做。
  4. 解决的方法是人为的将训练集里面不是人脸的图片删除,这可是一个大工程(手动狗头

 

我们来看vggface2中的一个例子:

我并不认为这张图片的质量好到使他能够和别的id区分开来。

 

考虑一个更为极端的情况,假设我们的训练数据中出现了非人脸,并且我们的网络已经足够好,那么他的特征应该跟非人脸的特征比较像,但是由于标注问题,使得我们的网络不得不去优化这种outlier,从而导致结果变差。




二:欧氏空间

相较于角度空间,欧氏空间有几个明显的好处:


  1. 人脸的类中心长度都是1,非人脸长度为0,这样当训练集中出现非人脸的时候,类中心不会被优化。
  2. 具有图片质量信息,在测试的时候可以进行图像质量评价。

问题是:训练集里面的图片只有label信息,并没有质量信息,欧氏空间的图片质量信息从何而来?




三:network,margin,过拟合

回到刚刚的问题,图片的质量信息从何而来?

要知道我们用的是softmax,分对类的样本feature norm会增加,而没有分对类的样本feature norm则会减少。

所以1.质量信息和是否具有区分度有关。

但是当我们选一个足够牛逼的network,使得训练集里面的样本都分类正确,然后又没有weight_decay的话,图片的feature norm是可以无限大的。

有了weight_decay,feature norm就不可能无限大了,由于weight_decay是每次迭代都做一次,所以在训练集里面具有较少分布的样本其feature norm自然就会比具有较多分布的样本低。

所以这个时候2.质量信息代表的是训练集里面的分布信息。

当然我们更想要1,所以我们要给这个足够牛逼的network制造一点麻烦,我们要加个margin,使得这个network没有办法使得所有的样本都满足margin。

如果这个network还是牛逼到加了margin仍然能够分对类呢?那么很遗憾,过拟合了。

 

一个比较好的例子就是用Amsoftmax训练webface,当网络选择resnet20的时候能够达到很好的效果,但是一旦选用resnet50,立马过拟合。

vggface2同理,resnet20和resnet101下面完全就是两个结果。




四:最优的配置应该是怎么样的?

我们需要明白一点,学术圈里面的人脸识别方法是没有办法在实际中用的。

那么,要使这个模型在实际情况下能用,应该怎么办呢?

 

第一:network的选取,为了能够使模型在各种角度,各种光照下面运行良好,一个牛逼的network是必须的。

第二:训练样本的数量:由于牛逼的network会导致过拟合问题,所以,大量的训练样本也是必须的(这里大量的意思是各种情况下的人脸图片都要有,这也就是为何要做data balance的重要性)

第三:度量空间:训练选择欧氏距离,测试选择余弦距离(+图片质量评价)。

第四:margin:在大量样本的情况下,象征性的加个margin,使得模型更加鲁棒。

 

或许sensetime在megaface上面的99.8的描述能够说明上述问题:


We trained the deep residual attention network(attention-56) with A-softmax to learn the face feature.
The training dataset is constructed by the novel dataset building techinique, which is critical for us to improve the performance of the model. The results are the cleaned test set performance released by iBUG_DeepInsight.
Wang F, Jiang M, Qian C, et al. Residual attention network for image classification[J]. arXiv preprint arXiv:1704.06904, 2017.
Deng J, Guo J, Zafeiriou S. ArcFace: Additive Angular Margin Loss for Deep Face Recognition[J]. arXiv preprint arXiv:1801.07698, 2018.
Liu W, Wen Y, Yu Z, et al. Sphereface: Deep hypersphere embedding for face recognition[C]//The IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2017, 1.

虽然A-softmax并不是最好的margin方法,但是只要训练数据足够,其实也没有什么问题。




五:face comparing的局限性

作为一名算法工程师(或者PM),必须了解到算法(产品)的局限性,人脸识别并不能解决所有的识别问题。

所以,不要再来问为什么一个人带着墨镜+带着口罩无法准确识别了,你简直就是在侮辱我的智商。



这篇文章里面有很多点我都没有进行深入的讲解,读者可以自行进行思考。最后,如果你对我所说的都有共鸣的话,那么恭喜,你离脱坑不远了。

 

https://zhuanlan.zhihu.com/p/40690320


推荐阅读
author-avatar
516837745_d2d52c
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有