Dlib 深度学习人脸识别

转自:https://blog.csdn.net/qq_34106574/article/details/84022449

1,dlib库编译安装

(1)下载源码 http://dlib.net/ 生成编译工程(使用cmake),可以选择gup选项,需要cuda9.0支持,点击generate后,Open project使用vs编译即可。

 Dlib 深度学习人脸识别_第1张图片

编译完成后创建工程,配置相关头文件,包含dlib文件夹的文件夹添加到#include搜索路径,将静态库加入工程,即可编译。

(2)也可将下载的源码直接加入工程,添加all目录的文件,即可在工程一同编译

但速度较慢。具体步骤:

(1),使用Visual Studio 2015或更新版本在Windows上编译只需创建一个空控制台项目。然后添加dlib/all/source.cpp。

(2),将包含dlib文件夹的文件夹添加到#include搜索路径。然后,您可以通过将示例程序添加到项目中来编译它。

Dlib 深度学习人脸识别_第2张图片

(3),如果需要读取libjpeg和libpng图像文件,在Visual Studio中,dlib只使用jpeg和png文件最简单的方法是

将dlib/external文件夹中的所有libjpeg、libpng和zlib源文件添加到项目中,并定义DLIB_PNG_SUPPORT和DLIB_JPEG_SUPPORT预处理器指令。

Dlib 深度学习人脸识别_第3张图片

2,人脸识别测试

 (1)下面是dlib提供的人脸识别例程,该算法在LFW上的人脸识别率为99.38%,官网也有训练方法,使用的是嵌入网络将人脸映射到128维子空间,通过对向量的比较判定是否为同一人,经验阈值为小于0.6则判定为同一人。

人脸关键点检测回归参数 下载

shape_predictor_5_face_landmarks.dat

与深度人脸特征提取的模型参数下载

dlib_face_recognition_resnet_model_v1.dat
#include 
#include 
#include 
#include 
#include 
#include 
 
using namespace dlib;
using namespace std;
 
// ----------------------------------------------------------------------------------------
 
// The next bit of code defines a ResNet network.  It's basically copied
// and pasted from the dnn_imagenet_ex.cpp example, except we replaced the loss
// layer with loss_metric and made the network somewhat smaller.  Go read the introductory
// dlib DNN examples to learn what all this stuff means.
//
// Also, the dnn_metric_learning_on_images_ex.cpp example shows how to train this network.
// The dlib_face_recognition_resnet_model_v1 model used by this example was trained using
// essentially the code shown in dnn_metric_learning_on_images_ex.cpp except the
// mini-batches were made larger (35x15 instead of 5x5), the iterations without progress
// was set to 10000, and the training dataset consisted of about 3 million images instead of
// 55.  Also, the input layer was locked to images of size 150.
template