• FaceNet实现人脸检测和识别


    转载博客(三处修改):https://www.cnblogs.com/weixuqin/p/9046225.html   

    参考博客:http://www.cnblogs.com/gmhappy/p/9472388.html

    整个过程比较顺利,如果有一两个报错情况,百度即可。

    facenet 进行人脸识别测试

    1.简介:facenet 是基于 TensorFlow 的人脸识别开源库,有兴趣的同学可以扒扒源代码:

    https://github.com/davidsandberg/facenet

    2.安装和配置 facenet

    我们先将 facenet 源代码下载下来:

    git clone https://github.com/davidsandberg/facenet.git

    在使用 facenet 前,务必安装下列这些库包:

    这里如果是anaconda环境,强烈建议隔个虚拟环境一键安装,如果tf版本过新后面一定会报错

     

    或者直接移动到 facenet 目录下,一键安装

    pip install -r requirements.txt
     

    3.下载 LFW 数据集

    LFW 是由美国马萨诸塞大学阿姆斯特分校计算机视觉实验室整理的。它包含13233张图片,共5749人,其中4096人只有一张图片,1680人的图片多余一张,每张图片尺寸是250x250 。

    下载地址:http://vis-www.cs.umass.edu/lfw/   ->Menu->Download->All images as gzipped tar file

    下载完成后,我们将文件解压到 facenet/data/lfw_data/lfw 目录下

    先切换到 lfw_data路径

    tar zxvf lfw.tgz -C ./
    

    在 lfw_data 目录下新建一个目录 lfw_160,用来存放裁剪后图片。

    4.对图像进行预处理

    因为程序中神经网络使用的是谷歌的“inception resnet v1”网络模型,这个模型的输入时160*160的图像,而我们下载的LFW数据集是250*250限像素的图像,所以需要进行图片的预处理。

    运行 facenet/src/align/align_dataset_mtcnn.py 来修改图片尺寸大小,加入下列参数

    facenet/data/lfw_data/lfw        #输入图像文件夹
    facenet/data/lfw_data/lfw_160          #输出图像文件夹
    --image_size 160 --margin 32 --random_order --gpu_memory_fraction 0.25     #指定裁剪后图像大小(如果不指定,默认的裁剪结果是182*182像素的)

    python align_dataset_mtcnn.py facenet/data/lfw_data/lfw facenet/data/lfw_data/lfw_160 --image_size 160 --margin 32 --random_order --gpu_memory_fraction 0.25 

    如果用的是 pycharm,可以在 RUN -> Edit Configurations 下添加参数信息,然后运行 align_dataset_mtcnn.py 文件:

     

    校准后图像大小即变为160 x 160 

     

    5.评估 Google 预训练模型在数据集中的准确性

    facenet提供了两个预训练模型,分别是基于CASIA-WebFace和 VGGFace2人脸库训练的。

    百度网盘地址:https://blog.csdn.net/weixin_41813620/article/details/87282076

     

    将下载好的预训练文件解压到 facenet/src/models目录下

    python src/validate_on_lfw.py data/lfw_data/lfw_160 src/models/20180402-114759
    

    可以看到识别精度可以达到 98.5%可以看到识别精度可以达到 97.7%

    但是程序运行完以后虽然最终运行结果正确,但是最后却还是报了个错误:_2_input_producer: Skipping cancelled enqueue attempt with queue not closed

    原因是主线程已经关闭,但是读取数据入队线程还在执行入队。

    6.对比2个人脸经过它的网络映射之后的欧式距离

     python src/compare.py src/models/20180402-114759/20180402-114759.pb data/images/Anthony_Hopkins_0001.jpg data/images/Anthony_Hopkins_0002.jpg

    得到的值为0.8396,这个值代表的是欧氏距离,用来判别这两张图片是否为同一个人。两张人脸图片越相似,空间距离越小;差别越大,则空间距离越大。

    7.安装和配置Facenet环境(方法二)【转】

    1. 在自己电脑对应的Anaconda3Libsite-packages目录下,新建facenet文件夹,本人的目录如下:

    2. 然后,将facenet-mastersrc目录下的全部文件复制到上面新建的facenet文件夹内;

    facenet-mastersrc目录下的全部文件信息如下:

    复制到facenet目录内,如下:

    3. 最后,在Anaconda Prompt内输入import facenet,不会报错即可,如下:

  • 相关阅读:
    Oracle 口令文件:即 oracle密码文件
    Oracle_plsql_开发工具搭建最小化客户端
    Oracle 网络监听配置管理
    Oracle12c 从入门到精通(第二版) 闫红岩 金松河 编著
    手工建库
    Oracle管理文件OMF (oracle managed files)
    逻辑存储结构
    Oracle管理文件OMF (oracle managed files)
    PowerDesigner连接Oracle并导出表结构
    win 系统设置weblogic 进行定时自动重启并删除其日志和缓存文件,定时监控cpu是否达到100%并重启weblogic服务
  • 原文地址:https://www.cnblogs.com/exciting/p/10837758.html
Copyright © 2020-2023  润新知