人脸入门

目前在学习论文SphereFace:Deep Hypersphere Embedding for Face Recognition.将一些预备知识总结与本文。

一. 数据集部分

1.CASIA-WebFace 源于论文Learning face representation from scratch

共有10575个不同个体,一共494414张面部图像。

2.VGG faces

版本1:源于论文Deep face recognition 2015年的BMVC论文。下载地址:http://www.robots.ox.ac.uk/~vgg/data/vgg_face/ 

数据集说明:2622个id。

版本2:9131 id。同上下载地址。

3. CelebA数据集

来源:Deep learning face attributes in the wild

介绍:CelebA是CelebFaces Attribute的缩写,意即名人人脸属性数据集,其包含10,177个名人身份的202,599张人脸图片,每张图片都做好了特征标记,包含人脸bbox标注框、5个人脸特征点坐标以及40个属性标记,CelebA由香港中文大学开放提供,广泛用于人脸相关的计算机视觉训练任务,可用于人脸属性标识训练、人脸检测训练以及landmark标记等,官方网址:Large-scale CelebFaces Attributes (CelebA) Dataset

4. CACD 2000数据集

来源:Face recognition and retrieval using cross-age regerence coding with cross-age celebrity dataset

介绍:数据集包含2000名年龄在16岁至62岁之间的名人的16万多张照片。共有163,446 images 。

下载地址:http://bcsiriuschen.github.io/CARC/  (我的网盘也有)

二. 预处理部分

对包含人脸的图像进行人脸框识别人脸对齐人脸剪裁。目前我整理了三种方式来得到裁好的人脸:

  • 利用https://github.com/RiweiChen/FaceTools可以一步到位直接得到处理好的结果(但是只能在win下使用,python2下使用稳定,但是漏检人脸还不少
  • 根据香港中文大学提供的人脸框检测和人脸特征点检测的windows二进制程序实现。 http://mmlab.ie.cuhk.edu.hk/archive/CNN_FacePoint.htm
  • 利用 MTCNN 算法来识别框和人脸关键点landmarks。这需要进一步处理,即根据landmarks得到一个变换矩阵,再将变换后的图像裁剪出来。(Pytorch实现,漏检好像很少,但一小部分结果不太精确

暂时来看,方法3)还是相对可取的。 

三. SphereFace代码(Pytorch)的研究

1)数据预处理的问题

代码train.py中的src_pts用来存放landmarks,然后利用函数alignment(img,src_pts)实现对齐后的结果。注意代码提供的landmarks的顺序和MTCNN算法提供的顺序略有不同。而且数值大小而有些偏差。我通过几个例子发现代码提供的landmarks比我利用 MTCNN 算法检测到的landmarks更准确一些。说明方式3)不是最准确的实现方式。暂时不讨论准确与否,这里说明一下具体差别:

例如在D:\人脸代码\sphereface_pytorch-master\data中的casia_landmark.txt文件,第一行为:

0000045/001.jpg 0 96 114 151 104 127 139 110 176 154 170

共有12个元素。第一个为图像名,第二个为图像ID,剩下10个元素,分别为左眼,右眼,鼻子,左嘴,右嘴的landmark坐标。

所以src_pts的内容是:【【96,114】,【151,104】,【127,139】,【110,176】,【154,170】】

而MTCNN的组织方式是直接产生landmarks:

array([[ 91.47854 , 152.12856 , 125.03657 , 107.52206 , 157.33965 ,
        114.140945, 104.736916, 138.18289 , 178.11989 , 169.56583 ]],
      dtype=float32)

所以相应的src_pts应该按列来取:【【91.5,114.1】,【152.1,104.7】,【125.0,138.2】,【107.5,178.1】,【157.3,169.6】】

可以看到还是有一些数值上的差别。另外,利用这个pytorch版本的MTCNN对0000045/005.jpg 进行检测时,发现误差特别大,所以这个代码还是不要用做训练预处理的好。

但目前好没有找到作者提供的andmarks的具体实现方式。

2)数据数目问题

在casia_landmark.txt中,只有 454590 images of 10574 identites。和最初的数据10575个不同个体,一共494414张数据不同。我觉得作者可能做了一些筛选吧。

猜你喜欢

转载自www.cnblogs.com/king-lps/p/10733961.html