最近接了个人脸识别相关的项目,是基于某个非常简单易懂的人脸识别 API:face_recognition 做的。这个库接口非常傻瓜,很适合新手上手,而且可以研究其源码来学习 dlib 这个拥有更加灵活、强大的人脸识别功能的库。本文介绍了该 API 的环境配置和一个简单例程。

从源代码编译安装 Cmake

准备工作

访问 Cmake官网下载页面,下载最新的发布版本。

例如,当前最新版本为 cmake-3.14.1,则我们可以直接下载、解压或用命令行:

wget https://github.com/Kitware/CMake/releases/download/v3.14.1/cmake-3.14.1.tar.gz &&
tar xzvf cmake-3.14.1.tar.gz

开始安装

首先进入解压完成的主目录,运行 bootstrap

cd cmake-3.14.1/ && ./bootstrap

完成后,最后一行提示应该是:

CMake has bootstrapped.  Now run make.

根据提示,运行 make

make

编译完成后,运行安装命令(这里需要管理员权限):

sudo make install

搞定。

一句话总结

直接运行命令:

wget https://github.com/Kitware/CMake/releases/download/v3.14.1/cmake-3.14.1.tar.gz &&
tar xzvf cmake-3.14.1.tar.gz &&
./bootstrap &&
make && sudo make install

从源码安装 dlib[1]

准备工作

Clone 源码:

git clone https://github.com/davisking/dlib.git

编译并安装

建立 dlib 主库:

cd dlib
mkdir build && cd build && cmake .. && cmake --build .

安装 Python 扩展:

cd ..
python3 setup.py install

成功后应该会有一行提示类似于:

Successfully installed dlib-19.17.0

安装人脸识别 API Face Recognition

很简单,直接运行命令:

pip3 install face_recognition

安装成功提示:

Successfully installed Click-7.0 Pillow-6.0.0 face-recognition-1.2.3 face-recognition-models-0.3.0 numpy-1.16.2

Face Recognition API 简单用法示例

这里顺带介绍一些 Face Recognition API 的简单用法。

假设我们想用机器识别某张聚会照片 ~/party_photos/001.jpg 里面,自己有没有被照进去,那么就可以拿一张自己的自拍(照片中只包含自己的脸) ~/Pictures/selfie.jpg 来,让人脸识别算法对比是否存在一张脸和自己照片里的脸相似。

# -*- coding: utf-8 -*-
import face_recognition as face_reco
import numpy as np def am_i_in_party(party_photo_path, selfie_path, simi_thresh=.6):
# 读取图像文件:
image_party = face_reco.load_image_file(party_photo_path)
image_selfie = face_reco.load_image_file(selfie_path) # 检测图像中的人脸:
# (注意,这里可以选择检测人脸模型: HOG or CNN,
# CNN 检测成功率更高,但是如果没有 GPU 加速会很慢)
face_bboxes_party = face_reco.face_locations(image_party, model='cnn')
face_box_selfie = face_reco.face_locations(image_selfie, model='cnn') # 将检测到的人脸特征编码:
face_encodings_party = face_reco.face_encodings(image_party, known_face_locations=face_bboxes_party)
face_encoding_selfie = face_reco.face_encodings(image_selfie, known_face_locations=face_bbox_selfie)[0] # 计算人脸特征的距离(Dissimilarity):
face_distances = face_reco.face_distance(face_encodings_party, face_encoding_selfie) # 相似度阈值转化为距离阈值:
dist_thresh = 1 - simi_thresh # 判定是否自己是否存在于聚会照片中:
return face_distances[face_distances > dist_thresh].size > 0 if __name__ == '__main__':
print(am_i_in_party('~/Pictures/selfie.jpg', '~/party_photos/001.jpg'))

上面这段代码就是检测一张照片中的人是否在另一张照片中出现的流程,因此很多人脸匹配应用都可以基于这个逻辑完成。


Written with StackEdit.


  1. 如果不想从源码安装,可以直接使用命令:pip3 install dlib ↩︎

某简单易懂的人脸识别 API 的开发环境搭建和简易教程的更多相关文章

  1. Android开发环境搭建(图文教程)

    昨天又搭建了一次Android的开发环境,尝试了好几种方式,也遇到了一些问题,在此分享一下. 注意:官网公布的最新版本号的SDK和ADT(23.0.0),对于和Eclipse集成的开发环境是有BUG存 ...

  2. [转]Android开发环境搭建(图文教程)

    转自:http://www.cnblogs.com/yxwkf/p/3853046.html 昨天又搭建了一次Android的开发环境,尝试了好几种方式,也遇到了一些问题,在此分享一下. 注意:官网公 ...

  3. Windows Server 2012上PHP运行环境搭建的简易教程(Win08适用)

    微软的Windows Server 2012发布后,第一时间进行了简单的试用,非常不错,特写了个简易的PHP环境搭建教程.先来欣赏下Win2012的登录界面吧第一步我们需要安装IIS81.点击任务栏最 ...

  4. python 之django (一) Windows环境下Django 1.6.11开发环境搭建(简易版)

    转自 https://www.cnblogs.com/kkddij/p/4397163.html 需要安装如下部件: python 2.6.6 pip(最新版即可) Django 1.6.11 PyC ...

  5. wince开发环境搭建与全套教程

    http://www.cnblogs.com/zhchongyao/archive/2010/12/28/1919176.html http://blog.csdn.net/weiren2006/ar ...

  6. 区块链Hyperledger Fabric 学习记录(一)开发环境搭建(ubuntu16.04/ubuntu18.04)

    目录 Fabric开发环境搭建 更新说明 教程环境及软件版本 Docker 安装Docker 配置用户组 配置Aliyun Docker加速器 安装docker-compose Go 下载源码 安装源 ...

  7. 微信公众平台消息接口开发(24)图片识别之人脸识别API

    微信公众平台开发模式 微信 公众平台 消息接口 开发模式 企业微信公众平台 图片识别 人脸识别 API 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/archi ...

  8. 免费人脸识别APi

    今天对应一些免费的人脸识别的api 做了一下简单的对比,觉得百度开发出来的人脸识别接口还是最符合的我的要求,简单易用,容易上手. 据说百度的一些门禁也使用上了人脸识别的功能了,功能很强大,而且能识别出 ...

  9. ArcGIS API for JavaScript开发环境搭建及第一个实例demo

    原文:ArcGIS API for JavaScript开发环境搭建及第一个实例demo ESRI公司截止到目前已经发布了最新的ArcGIS Server for JavaScript API v3. ...

随机推荐

  1. BZOJ3514:GERALD07加强版(LCT,主席树)

    Description N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数. Input 第一行四个整数N.M.K.type,代表点数.边数.询问数以及询问是否加密. 接下来 ...

  2. MySQL - FEDERATED引擎实现跨服务器查询

    1. MySQL插件的安装与卸载 # 查看插件信息 mysql> show plugins; mysql> select plugin_name,plugin_status,plugin_ ...

  3. 关于vmware workstation10常见问题

    简单的说明:win7和win10的解决办法都是这个,都可以用这个解决. 这是一个共性的问题. 出现这个问题的原因是: a.要么是系统更新没有及时正确的关闭虚拟机导致的; b.没有及时将虚拟机手动关闭再 ...

  4. 初识Qt布局管理器

    Qt布局管理器的类有4种,它们分别为QHBoxLayout.QVBoxLayout.QGridLayout和QStackLayout.其中,QHBoxLayout实现水平布局,QVBoxLayout实 ...

  5. 定义抽象类Shape,抽象方法为showArea(),求出面积并显示,定义矩形类Rectangle,正方形类Square,圆类 Circle,根据各自的属性,用showArea方法求出各自的面积,在main方法中构造3个对象,调用showArea方法。(体现多态)

    实现多态的三个条件:1.要有继承2.要有抽象方法重写3.用父类指针(引用)指向子类对象 重载重写重定义的区别: 1.重载:在同一个类中进行; 编译时根据参数类型和个数决定方法调用; 子类无法重载父类; ...

  6. 分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点,使之满足下列要求:

    (1) Point2D有两个整型成员变量x, y (分别为二维空间的X,Y方向坐标),Point2D的构造方法要实现对其成员变量x, y的初始化. (2)Point2D有一个void型成员方法offs ...

  7. ps命令使用详解

    转自:http://blog.csdn.net/lsbhjshyn/article/details/18549869 ps:要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程 ...

  8. keepalived + nginx(负载均衡反向代理HTTP,https) + tomcat(HTTP,https)

    基本架构: nginx(192.168.116.198) client        --->keepalived(116.200)      ------> tomcat (192.16 ...

  9. MySQL数据库初始

    MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句 一 ...

  10. Linux-2.6_LCD驱动学习

    内核自带的驱动LCD,drivers/video/Fbmem.c LCD驱动程序 假设app: open("/dev/fb0", ...) 主设备号: 29, 次设备号: 0--- ...