写点什么

如何利用 VGG19 实现 insightface 人脸识别?

发布于: 2021 年 03 月 22 日
  • 前言

我们知道 VGGNet 探索了卷积神经网络的深度与其性能之间的关系,成功地构筑了 16~19 层深的卷积神经网络,证明了增加网络的深度能够在一定程度上影响网络最终的性能,使错误率大幅下降,同时拓展性又很强,迁移到其它图片数据上的泛化性也非常好。但是到目前为止,VGG 仍然被用来提取图像特征。 VGGNet 可以看成是加深版本的 AlexNet,都是由卷积层、全连接层两大部分构成。


  • 浅谈实现原理


VGG 使用多个较小卷积核(3x3)的卷积层代替一个卷积核较大的卷积层,一方面可以减少参数,另一方面相当于进行了更多的非线性映射,可以增加网络的拟合/表达能力。小卷积核是 VGG 的一个重要特点,虽然 VGG 是在模仿 AlexNet 的网络结构,但没有采用 AlexNet 中比较大的卷积核尺寸(如 7x7),而是通过降低卷积核的大小(3x3),增加卷积子层数来达到同样的性能(VGG:从 1 到 4 卷积子层,AlexNet:1 子层)。众所周知,VGG 是一个良好的特征提取器,其与训练好的模型也经常被用来做其他事情,比如计算 perceptual loss(风格迁移和超分辨率任务中),尽管现在 resnet 和 inception 网络等等具有很高的精度和更加简便的网络结构,但是在特征提取上,VGG 一直是一个很好的网络。VGG 之所以是一个很好的特征提取器,除了和它的网络结构有关,我认为还和它的训练方式有关系,VGG 并不是直接训练完成的,它使用了逐层训练的方法。

  • 具体实验

采用国际官方数据集亚洲人脸数据集,训练集与测试集:

Asian-Celeb 93,979 ids/2,830,146 aligned images.

验证集:

AgeDB-30 (570 ids/12,240 images/6K pairs);CFP-FP (500 ids/7K images/7K pairs);LFW (5749 ids/13233 images/6K pairs)。

构建 IR-SE50 网络框架

对比 consineFace,ArcFac 在训练前期对 margin 的惩罚比 consineFace 更大,而到最后 ArcFace 收敛的角度区间位置比 ConsineFace 更小,这样可以让收敛的更好一些。



在表情识别上采用的网络 VGG19 结构,训练使用的是 fer2013 表情数据集。Fer2013 人脸表情数据集由 35886 张人脸表情图片组成,其中,测试图(Training)28708 张,公共验证图(PublicTest)和私有验证图(PrivateTest)各 3589 张,每张图片是由大小固定为 48×48 的灰度图像组成,共有 7 种表情,分别对应于数字标签 0-6,具体表情对应的标签和中英文如下:0 anger 生气; 1 disgust 厌恶; 2 fear 恐惧; 3 happy 开心; 4 sad 伤心;5 surprised 惊讶; 6 neutral 中性。详细网络结构如下图所示。

  • 小结:

数据集虽然是公开的比较权威的数据,但是在使用过程中仍然有瑕疵,因为数据集本身对表情的分类并不明显,人工标注有些许粗糙,还有其他一些不标准的图片,人脸不全,表情不符合等等,所以会有正常的误差,这点不需要太过于纠结。


发布于: 2021 年 03 月 22 日阅读数: 13
用户头像

程序媛观澜 2020.09.06 加入

还未添加个人简介

评论

发布
暂无评论
如何利用VGG19实现insightface人脸识别?