转载自:https://www.cnblogs.com/gmhappy/p/9472387.html

选择的方式是从百度下载明星照片

照片下载,downloadImageByBaidu.py

# coding=utf-8
"""
爬取百度图片的高清原图
"""
import re
import sys
import urllib
import osimport requestsdef get_onepage_urls(onepageurl):if not onepageurl:print('执行结束')return [], ''try:html = requests.get(onepageurl).textexcept Exception as e:print(e)pic_urls = []fanye_url = ''return pic_urls, fanye_urlpic_urls = re.findall('"objURL":"(.*?)",', html, re.S)fanye_urls = re.findall(re.compile(r'<a href="(.*)" class="n">下一页</a>'), html, flags=0)fanye_url = 'http://image.baidu.com' + fanye_urls[0] if fanye_urls else ''return pic_urls, fanye_urldef down_pic(pic_urls,pic_name,localPath):if not os.path.exists(localPath):  # 新建文件夹os.mkdir(localPath)"""给出图片链接列表, 下载图片"""for i, pic_url in enumerate(pic_urls):try:pic = requests.get(pic_url, timeout=15)string = pic_name + "_" + str(i + 1) + '.jpg'with open(localPath + '%s' % string, 'wb')as f:f.write(pic.content)print('成功下载第%s张图片: %s' % (str(i + 1), str(pic_url)))except Exception as e:print('下载第%s张图片时失败: %s' % (str(i + 1), str(pic_url)))print(e)continueif __name__ == '__main__':keyword = '范冰冰1920*1080'  # 关键词, 改为你想输入的词即可url_init_first = r'http://image.baidu.com/search/flip?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1497491098685_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&ctd=1497491098685%5E00_1519X735&word='url_init = url_init_first + urllib.parse.quote(keyword, safe='/')all_pic_urls = []onepage_urls, fanye_url = get_onepage_urls(url_init)all_pic_urls.extend(onepage_urls)fanye_count = 1  # 图片所在页数,下载完后调整这里就行while 1:onepage_urls, fanye_url = get_onepage_urls(fanye_url)fanye_count += 1print('第%s页' % fanye_count)if fanye_url == '' and onepage_urls == []:breakall_pic_urls.extend(onepage_urls)down_pic(list(set(all_pic_urls)),'fbb','D:/eclipse-workspace/facenet-master/data/face_store/fbb/')#保存位置也可以修改

因为是从网上下载的照片有些是不符的,需要手动删除部分

检测对齐人脸

python src\align\align_dataset_mtcnn.py data/face_store/old data/face_store/new --image_size 160 --margin 32 --random_order --gpu_memory_fraction 0.25

用自己的人脸库结合SVM训练一个人脸识别系统

用到的代码:calssifier.py,这个程序的基本原理是:通过用图像算出来的向量数据来训练一个SVM分类器,从而对人的身份进行一个判断,同时在.pkl格式的文件中存储每一个分类。这也是作者对于FaceNet程序应用的一个探索。 
这个函数有两个模式,一个模式用来训练,另一个模式用来测试。具体功能如下:

模式= TRAIN:

使用来自数据集的计算出来的向量来训练分类器 
将训练好的分类模型保存为python pickle文件

模式= CLASSIFY:

加载分类模型
使用来自数据集测试部分的嵌入来测试分类器

执行本代码需要添加的参数以及各参数的含义:

mode: 设定“TRAIN”和“CLASSIFY”两种模式。
data_dir: 图片数据所在文件夹
model: 训练好的模型
classifier_filename:类似于标签,如果mode参数是TRAIN,那么需要指定一个输出的文件位置(以.pkl结尾,例如/.pkl),如果mode参数是CLASSIFY,那么就需要指定参数的路径(.pkl文件)。

python src\classifier.py TRAIN D:\eclipse-workspace\facenet-master\data\face_store\new D:\eclipse-workspace\facenet-master\models\20180408-102900 D:\eclipse-workspace\facenet-master\models\classifier.pkl

python src\classifier.py CLASSIFY D:\eclipse-workspace\facenet-master\data\face_store\new D:\eclipse-workspace\facenet-master\models\20180408-102900 D:\eclipse-workspace\facenet-master\models\classifier.pkl

验证

调用facenet-master\contributed\predict.py

网上找张女神的图片

python contributed\predict.py D:\eclipse-workspace\facenet-master\data\test\test1.jpg D:\eclipse-workspace\facenet-master\models\20180408-102900 D:\eclipse-workspace\facenet-master\models\classifier.pkl

再找一张不在人脸库的照片

python contributed\predict.py D:\eclipse-workspace\facenet-master\data\test\test2.png D:\eclipse-workspace\facenet-master\models\20180408-102900 D:\eclipse-workspace\facenet-master\models\classifier.pkl

后续打算基于摄像头进行人脸检测识别


摄像头识别人脸效果

修改contributed目录下的face.py

执行

python contributed\real_time_face_recognition.py

最后,附上原来的文件中各py文件的作用(持续更新):

一、主要函数

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

facenet/src/facenet.py :用于人脸映射的神经网络

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

facenet 搭建人脸识别库相关推荐

  1. 聪明的人脸识别4——Pytorch 利用Retinaface+Facenet搭建人脸识别平台

    睿智的目标检测51--Pytorch 利用Retinaface+Facenet搭建人脸识别平台 学习前言 什么是Retinface和Facenet 1.Retinface 2.Facenet 整体实现 ...

  2. matlab人脸识别样本库建立,facenet 人脸识别(二)——创建人脸库搭建人脸识别系统...

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

  3. facenet 人脸识别库的搭建和使用方法(二)

    上一篇文章介绍了facenet人脸识别的源码使用,这篇文章就来搭建自己的人脸识别库. 1. 制作自己的人脸识别库 1.1 准备数据集 通过百度图片爬取一些明星图片为例,这里准备了一个DownloadI ...

  4. 如何在 Keras 中使用 FaceNet 开发人脸识别系统

    https://www.infoq.cn/article/4wT4mNvKlVvEQZR-JXmp Keras 是一个用 Python 编写的高级神经网络 API,能够以 TensorFlow.CNT ...

  5. c# image转换为bitmap_C# 人脸识别库

    (给DotNet加星标,提升.Net技能) 转自:View12138cnblogs.com/view12138/p/ViewFaceCore.html .NET人脸识别库ViewFaceCore 这是 ...

  6. 基于Python的开源人脸识别库:离线识别率高达99.38%

    基于Python的开源人脸识别库:离线识别率高达99.38% 2019年04月18日 18:13:18 AI终结者 阅读数 1233 项目地址:https://github.com/ageitgey/ ...

  7. face-recognition库(人脸识别库)安装,使用

    一,起因 1,在某hub上下载了所谓"最简单的人脸识别项目". 2,开始了face-recognition的安装之路. 3,人脸识别在win10上的使用,识别图像上面的人脸. 二, ...

  8. Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38%

    Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38% 仅用 Python 和命令行就可以实现人脸识别的库开源了.该库使用 dlib 顶尖的深度学习人脸识别技术构建 ...

  9. Github | 标星3W+ ! Face Recognition世界上最简洁的人脸识别库!

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟  报道  | 公众号 CVLianMeng 转载于 :Github [人工智能资 ...

最新文章

  1. 小程序中点击input控件键盘弹出时placeholder文字上移
  2. iPhoneX快速适配,简单到你想哭。
  3. iOS 网络编程(二)UDP协议小结
  4. 62 Celery远程调用
  5. brave浏览器_区块链浏览器 Brave 为广告观看者提供 BAT 代币奖励
  6. Undo TableSpace ②.回滚段研究
  7. 世界十大最有价值公司(1997-2019)
  8. VS2019C++代码出现cout不明确
  9. 云和恩墨大讲堂丨PostgreSQL逻辑复制案例分享
  10. Oracle案例:index range scan真的不会多块读吗?
  11. SQA计划和验收测试规程设计
  12. 项目如何开始:怎样和客户谈需求(转)
  13. 6.Nginx 的 Rewrite 规则
  14. python-图书管理系统3-[代码部分]-需要完善
  15. 提升技能必备网站(不定时更新)
  16. 缺少链接库报错:ld: symbol(s) not found for architecture x86_64
  17. itextpdf识别不了一些中文字体的问题
  18. 怎样在matlab中使用多项式,MATLAB中的多项式运算
  19. 请编写一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。
  20. ListView在工程中的详细应用(简易记账本)

热门文章

  1. 说话人识别VAD算法概述
  2. 本地计算机架设http服务器,多维互联网(在本地电脑上架设web服务器软件)
  3. Vim指令对应的英语全称
  4. java fxml教程_openjfx(javaFX)完整学习指南(教程)
  5. MacOS Ventura 13.0 Beta2 (22A5286j) 带 OC 0.8.2 三分区原版黑苹果镜像
  6. 办公软件excel表格_Office 办公软件教程丨Word,Excel,PPT
  7. PostgreSQL 别名
  8. 王者荣耀的服务器是什么系统,王者荣耀健康系统 健康系统是什么
  9. 百万级PHP网站架构-Poppen.de
  10. Intel GPA 参数