某简单易懂的人脸识别 API 的开发环境搭建和简易教程
最近接了个人脸识别相关的项目,是基于某个非常简单易懂的人脸识别 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.
如果不想从源码安装,可以直接使用命令:
pip3 install dlib↩︎
某简单易懂的人脸识别 API 的开发环境搭建和简易教程的更多相关文章
- Android开发环境搭建(图文教程)
昨天又搭建了一次Android的开发环境,尝试了好几种方式,也遇到了一些问题,在此分享一下. 注意:官网公布的最新版本号的SDK和ADT(23.0.0),对于和Eclipse集成的开发环境是有BUG存 ...
- [转]Android开发环境搭建(图文教程)
转自:http://www.cnblogs.com/yxwkf/p/3853046.html 昨天又搭建了一次Android的开发环境,尝试了好几种方式,也遇到了一些问题,在此分享一下. 注意:官网公 ...
- Windows Server 2012上PHP运行环境搭建的简易教程(Win08适用)
微软的Windows Server 2012发布后,第一时间进行了简单的试用,非常不错,特写了个简易的PHP环境搭建教程.先来欣赏下Win2012的登录界面吧第一步我们需要安装IIS81.点击任务栏最 ...
- 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 ...
- wince开发环境搭建与全套教程
http://www.cnblogs.com/zhchongyao/archive/2010/12/28/1919176.html http://blog.csdn.net/weiren2006/ar ...
- 区块链Hyperledger Fabric 学习记录(一)开发环境搭建(ubuntu16.04/ubuntu18.04)
目录 Fabric开发环境搭建 更新说明 教程环境及软件版本 Docker 安装Docker 配置用户组 配置Aliyun Docker加速器 安装docker-compose Go 下载源码 安装源 ...
- 微信公众平台消息接口开发(24)图片识别之人脸识别API
微信公众平台开发模式 微信 公众平台 消息接口 开发模式 企业微信公众平台 图片识别 人脸识别 API 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/archi ...
- 免费人脸识别APi
今天对应一些免费的人脸识别的api 做了一下简单的对比,觉得百度开发出来的人脸识别接口还是最符合的我的要求,简单易用,容易上手. 据说百度的一些门禁也使用上了人脸识别的功能了,功能很强大,而且能识别出 ...
- ArcGIS API for JavaScript开发环境搭建及第一个实例demo
原文:ArcGIS API for JavaScript开发环境搭建及第一个实例demo ESRI公司截止到目前已经发布了最新的ArcGIS Server for JavaScript API v3. ...
随机推荐
- openstack排除查找错误的两种方法
1.openstack日志一般放在什么什么位置?2.如何调试openstack命令执行过程? 我们会经常错误,但是我们碰到错误该怎么做,该如何找到原因.对于openstack有两种办法:在上一篇文章h ...
- npm发布插件步骤
开发好一个插件后,要想让其他人也能使用该插件需要将插件发布到npm上,具体步骤如下: 1.添加npm用户: npm adduser Username: your name Password: your ...
- Python基础-画图:matplotlib.pyplot.scatter
转载自博客:https://blog.csdn.net/qiu931110/article/details/68130199 matplotlib.pyplot.scatter 1.scatter函数 ...
- Redis(五)主从复制
本文转载自编程迷思,原文链接 深入学习Redis(3):主从复制 前言 在前面的两篇文章中,分别介绍了Redis的内存模型和Redis的持久化. 在Redis的持久化中曾提到,Redis高可用的方案包 ...
- 51 Nod 1107 斜率小于0的连线数量 (转换为归并求逆序数或者直接树状数组,超级详细题解!!!)
1107 斜率小于0的连线数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线 ...
- 404 Note Found队Beta4
目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员:恺琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示组 ...
- 数据结构基础(1)--数组C语言实现--动态内存分配
数据结构基础(1)--数组C语言实现--动态内存分配 基本思想:数组是最常用的数据结构,在内存中连续存储,可以静态初始化(int a[2]={1,2}),可以动态初始化 malloc(). 难点就是数 ...
- pyhton 面向对象之 小明左右手换牌
'''#左右手交换牌 案列#小明手里有俩张牌,左手红桃♥K,右手黑桃♠A,小明交换俩手的牌后,手里分别是什么? 人类: 属性:小明,左手,右手 行为:展示手里的牌, 交换手里的牌手类: ...
- ThinkPhp5学习之新手博客
前端框架来源网络,后端框架采用 ThinkPhp 5 开发 参考资料:哔哩哔哩 ThinkPHP5.1新手博客项目实战 项目地址:https://github.com/yjy1/tp5
- PHP核心技术——面向对象
类与对象: 类的定义与实例化. //定义类 class person{ public $name; public $gender; public function say(){ echo $this- ...