前言

已完成TensorFlow Object Detection API环境搭建,具体搭建过程请参照:

安装运行谷歌开源的TensorFlow Object Detection API视频物体识别系统

Ubuntu系统安装配置tensorflow开发环境

下载Facenet源码工程

1. 源码下载地址:https://github.com/davidsandberg/facenet.git

2. 将下载的源码解压,如图所示:

安装和配置Facenet环境

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

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

facenet-master\src目录下的全部文件信息如下:

复制到facenet目录内,如下:

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

下载LFW数据集

1. LFW数据集是由美国马萨诸塞大学阿姆斯特分校计算机视觉实验室整理的人脸检测数据集,是评估人脸识别算法效果的公开测试数据集,全称为带标签的自然人脸数据库(Labeled Faces in the Wild);

2. LFW数据库内每张图片命名方式为“lfw/name/name_xxxx.jpg”,这里“xxxx”是前面补零的四位图片编号。例如,前美国总统乔治•W•布什的第10张图片为“lfw/George_W_Bush/George_W_Bush_0010.jpg”。

3. LFW数据库 总共有 13233 张 JPEG 格式图片,属于 5749 个不同人。每张图片尺寸都是 250x250;

4. 数据库下载地址:http://vis-www.cs.umass.edu/lfw/lfw.tgz

5. 下载完成后,把数据集解压到facenet-master\data下面,如下:

对LFW数据集进行预处理

1. 在data目录新建一个空文件夹,命名为“lfw_160”;

原图像大小为250*250,如下图:

2. 我们需要将待检测所使用的数据集校准为和预训练模型所使用的数据集大小一致(160*160),转换后的数据集存储在lfw_160文件夹内;

3.切换目录至facenet-master下

4.图片预处理——运行人脸对齐程序(src\align\align_dataset_mtcnn.py)

命令校准

python src\align\align_dataset_mtcnn.py --help

缺少align模块,进行安装

pip install align -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

再次运行

python src\align\align_dataset_mtcnn.py --help

需配置环境变量

再输入

python src\align\align_dataset_mtcnn.py --help

执行转换

python src\align\align_dataset_mtcnn.py data/lfw data/lfw_160 --image_size 160 --margin 32 --random_order --gpu_memory_fraction 0.25

下载训练好的网络模型

1. facenet提供了两个预训练模型,分别是基于CASIA-WebFace和MS-Celeb-1M人脸库训练的,如下:



2. 本人使用的是基于数据集CASIA-WebFace采用Inception ResNet v1神经网络结构训练好的模型。模型存储在Google网盘,需要翻墙。推荐大家用Lantern;

3. 把下载的文件解压到src\models\目录下面,如下所示:

4. 程序也下载了,测试数据集LFW也有了,模型也有了,接下来就是评估模型的准确率;

评估预训练模型的准确率

1. 在cmd命令行或者Anaconda Propmt下定位到facenet文件夹下;

cd D:\eclipse-workspace\facenet-master

2. 输入以下命令:

python src\validate_on_lfw.py D:\eclipse-workspace\facenet-master\data\lfw_160 D:\eclipse-workspace\facenet-master\models\20180408-102900

预测中,结果如图:

人脸对比

1. Facenet可以直接对比2个人脸经过它的网络映射之后的欧式距离;

运行程序为facenet-master\src\compare.py;

2.在data\images目录下有两张图片进行测试;

python src\compare.py D:\eclipse-workspace\facenet-master\models\20180408-102900 D:\eclipse-workspace\facenet-master\data\images\Anthony_Hopkins_0001.jpg D:\eclipse-workspace\facenet-master\data\images\Anthony_Hopkins_0002.jpg

facenet 人脸识别(一)的更多相关文章

  1. facenet 人脸识别(二)——创建人脸库搭建人脸识别系统

    搭建人脸库 选择的方式是从百度下载明星照片 照片下载,downloadImageByBaidu.py # coding=utf-8 """ 爬取百度图片的高清原图 &qu ...

  2. FaceNet人脸识别研究

    https://github.com/WindZu/facenet_facerecognition (代码) https://segmentfault.com/a/1190000015917420?u ...

  3. facenet 进行人脸识别测试

    1.简介:facenet 是基于 TensorFlow 的人脸识别开源库,有兴趣的同学可以扒扒源代码:https://github.com/davidsandberg/facenet 2.安装和配置 ...

  4. 第三十七节、人脸检测MTCNN和人脸识别Facenet(附源码)

    在说到人脸检测我们首先会想到利用Harr特征提取和Adaboost分类器进行人脸检测(有兴趣的可以去一看这篇博客第九节.人脸检测之Haar分类器),其检测效果也是不错的,但是目前人脸检测的应用场景逐渐 ...

  5. TensorFlow环境 人脸识别 FaceNet 应用(一)验证测试集

    TensorFlow环境 人脸识别 FaceNet 应用(一)验证测试集 前提是TensorFlow环境以及相关的依赖环境已经安装,可以正常运行. 一.下载FaceNet源代码工程 git clone ...

  6. 人脸识别FaceNet+TensorFlow

    一.本文目标 利用facenet源码实现从摄像头读取视频,实时检测并识别视频中的人脸.换句话说:把facenet源码中contributed目录下的real_time_face_recognition ...

  7. paper 50 :人脸识别简史与近期进展

    自动人脸识别的经典流程分为三个步骤:人脸检测.面部特征点定位(又称Face Alignment人脸对齐).特征提取与分类器设计.一般而言,狭义的人脸识别指的是"特征提取+分类器"两 ...

  8. FaceNet--Google的人脸识别(转)

    引入 随着深度学习的出现,CV领域突破很多,甚至掀起了一股CV界的创业浪潮,当次风口浪尖之时,Google岂能缺席.特贡献出FaceNet再次刷新LFW上人脸验证的效果记录. 本文是阅读FaceNet ...

  9. DeepFace--Facebook的人脸识别(转)

    DeepFace基本框架 人脸识别的基本流程是: detect -> aligh -> represent -> classify 人脸对齐流程 分为如下几步: a. 人脸检测,使用 ...

随机推荐

  1. csv导入数据

    1.关闭Neo4j服务器进程 2.删除graph.db数据库文件  /data/databases/  rm -rf graph.db 3.重新启动Neo4j服务器 4.数据导入import 5.wi ...

  2. php内置函数分析之strtoupper()、strtolower()

    strtoupper(): PHP_FUNCTION(strtoupper) { zend_string *str; ZEND_PARSE_PARAMETERS_START(, ) Z_PARAM_S ...

  3. django之请求和响应

    一:请求 1. 浏览器向服务器传参的几种方式: 方式一:通过正则的形式进行传递,名字为未命名模式 路由的正则形式: from django.conf.urls import url from . im ...

  4. POJ 2960 S-Nim (sg函数)

    题目链接:http://poj.org/problem?id=2960 题目大意:给定数组S,接下来给出m个游戏局面.游戏局面是一些beads堆,先给出堆数,然后是每一堆中beads的数目.游戏规则是 ...

  5. Linux安装mysql5.6.33

    1.下载mysql安装包: 下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downloads 下载版本:我这里选择的5.6.33,通用版,lin ...

  6. 英语单词Obsolete

    Obsolete 来源——命令帮助 [root@centos73 ~]# help typeset typeset: typeset [-aAfFgilrtux] [-p] name[=value] ...

  7. [CSP-S模拟测试]:可爱的精灵宝贝(搜索)

    题目描述 $Branimirko$是一个对可爱精灵宝贝十分痴迷的玩家.最近,他闲得没事组织了一场捉精灵的游戏.游戏在一条街道上举行,街道上一侧有一排房子,从左到右房子标号由$1$到$n$.刚开始玩家在 ...

  8. 132、TensorFlow加载模型

    # The tf.train.Saver对象不仅保存变量到checkpoint文件 # 它也恢复变量,当你恢复变量的时候,你就不必须要提前初始化他们 # 列如如下的代码片段解释了如何去调用tf.tra ...

  9. curl的一些常用命令

    在学习nodejs中get到了一项新的技能crul curl 可以给在命令行上面给node服务器发送一些信息,然后得到服务器返回而响应信息,在命令行中打印出来. 下面是我整理的一些常用的命令:

  10. PHP获得计算机的唯一标识[cpu,网卡]

    以下是从网上转载来的源码,但是我测试均不能执行,不知道怎么回事,转过来大家可以交流一下 <?php//获取电脑的CPU信息 function OnlyU(){ $a = ''; $b = arr ...