ubuntu下学会facenet的使用教程(二)

本文档介绍了在Ubuntu环境下使用Facenet进行图像裁剪对齐、人脸比对、模型训练和验证的步骤。通过运行align_dataset_mtcnn.py进行图像预处理,compare.py进行人脸比对,train_tripletloss.py训练模型,validate_on_lfw.py测试模型性能,最终达到初步的人脸识别能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如大家参考上篇博客完成了对facenet配置的话,那恭喜了,接下来我们开始上硬菜了,go!

facenet源码中实现的很多功能,如:图像裁剪对齐、对比、训练、测试模型精确度、训练svm分类器、人脸识别等等,下面我开始来意义介绍:

  • 运行图像裁剪对齐程序(align\align_dataset_mtcnn.py)

       对下载好的lfw数据集下载后解压在data文件夹中,此外lfw同一目录下建立一个裁剪后的图像保存文件夹备用,这是因为程序中神经网络使用的是谷歌的“inception resnet v1”网络模型,这个模型的输入时160*160的图像,而我们下载的LFW数据集是250*250限像素的图像,所以需要进行图片的预处理。

      参数的修改:input_dir: /home/user/facenet/data/lfw     output_dir:/home/user/facenet/data/lfw_160  裁剪尺寸参数:--image_size 160 --margin 32 --random_order(如果不指定,默认的裁剪结果是182*182像素的)

终端输入:/home/user/facenet/data/lfw     output_dir:/home/user/facenet/data/lfw_160 --image_size 160 --margin 32 --random_order

  • 运行人脸比对程序(compare.py)

对下载好的预训练模型放入compare.py同目录下,从lwf数据集中随意抽取两张图像进行测试。

参数修改:模型位置+图像,如:/home/user/facenet/src/20170512-110547 1.png 2.png

  • 运行训练程序(train_tripletloss.py)

训练程序前首先打开.py文件,在input_dir出将数据集的路径给上,方便后期训练,如下图:

或者直接在终端出给出路径,如: sudo train_tripletloss.py /home/user/facenet/data/lfw_160

  • 运行模型测试程序(validate_on_lfw.py)

参数设置:/home/user/facenet/data/lfw_160  /home/user/facenet/src/20180803-131712

这将执行以下四个操作: 
1)加载模型。 
2)加载和解析文本文件与图像对。 
3)计算所有图像(以及它们的水平翻转版本)在测试集中的向量。 
4)计算精度,验证率(@ FAR = -10e-3),曲线下面积(AUC)和等误差率(EER)等性能指标。

运行结果

Model directory: /home/user/facenet/src/20180803-131712/ Metagraph file: model-20180803-131712.meta Checkpoint file: model- model-20180803-131712.ckpt-275 Runnning forward pass on LFW images ........................ Accuracy: 0.9975+-0.00152 Validation rate: 0.98367+-0.00948 @ FAR=0.00100 Area Under Curve (AUC): 1.000 Equal Error Rate (EER): 0.003

 

如上述程序能完整跑下来,则实现了通过两照对比检测是不是同属于一个人,由于时间关系,下篇将介绍如何通过分类器实现真正意义上的人脸识别,持续更新中。

最后,附上原来的文件中各py文件的作用

一、主要函数

align/ :用于人脸检测与人脸对齐的神经网络

facenet :用于人脸映射的神经网络

util/plot_learning_curves.m:这是用来在训练softmax模型的时候用matlab显示训练过程的程序

 

二、facenet/contributed/相关函数:

1、基于mtcnn与facenet的人脸聚类

代码:facenet/contributed/cluster.py(facenet/contributed/clustering.py实现了相似的功能,只是没有mtcnn进行检测这一步)

主要功能:

① 使用mtcnn进行人脸检测并对齐与裁剪

② 对裁剪的人脸使用facenet进行embedding

③ 对embedding的特征向量使用欧式距离进行聚类

 

2、基于mtcnn与facenet的人脸识别(输入单张图片判断这人是谁)

代码:facenet/contributed/predict.py

主要功能:

① 使用mtcnn进行人脸检测并对齐与裁剪

② 对裁剪的人脸使用facenet进行embedding

③ 执行predict.py进行人脸识别(需要训练好的svm模型)

 

3、以numpy数组的形式输出人脸聚类和图像标签

代码:facenet/contributed/export_embeddings.py

主要功能:

① 需要对数据进行对齐与裁剪做为输入数据

② 输出embeddings.npy;labels.npy;label_strings.npy

 

 

 

 

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值