python人脸识别库Face_Recognition-实操篇

@WP20190307

================================目 录=================================

一、编译dlib库

二、编译face_recognition环境

三、使用opencv遇到的问题

 

================================正 文=================================

基础认识:

(1)Dlib是一个使用现代C++技术编写的跨平台的通用库,是一个包含机器学习算法的C++开源工具包,有c++、Python的接口。使用dlib可以大大简化开发,比如人脸识别,特征点检测之类的工作都可以很轻松实现,也可以帮助用户创建很多复杂的机器学习方面的软件来帮助解决实际问题。目前Dlib已经被广泛的用在行业和学术领域,包括机器人,嵌入式设备,移动电话和大型高性能计算环境。

(2)Face_recogintion是python的开源人脸识别库,是基于dlib开发的应用和开源库,而dlib依赖Boost和cmake。引用ageitgey/face_recognition“Face_recogintion项目的人脸识别模型是基于成年人的,在孩子身上效果可能一般。如果图片中有孩子的话,建议把临界值设为0.6.”

(3)本文环境:Ubuntu18.04+Dlib19.16.99+Python3.6.4+faceRecognition1.2.3,其中Dlib19.16.99+Python3.6.4+faceRecognition1.2.3版本是编译后,查看版本显示的。

经验总结:

安装face_recognition最简单的命令,使用pip安装face_recognition。

$ pip install face_recognition

注意,Ubuntu下使用的是python2.7就使用pip2,使用python3则使用pip3。

但由于face recognition基于dlib库,所以在使用“pip install face_recognition ”安装的过程中会卡在“编译dlib”这一步上,很长时间都不会有什么反应,所以先编译dlib库。如果编译dlib完后直接再使用“pip install face_recognition ”安装依然会卡在dlib那里不动,所以换一种方式安装face recognition。

一、编译dlib库

网络博客推荐的方法,有:

T1方法:pip install dlib

此方法是需要在你安装cmake、Boost环境的计算机使用。

T2方法:conda install -c menpo dlib==19.8.1

此方法适合那些已经安装好conda库的环境的计算机使用。

T3方法:pip install dlib-19.8.1-cp36-cp36m-win_amd64.whl

这里主要参考http://www.cnblogs.com/whenyd/p/7721989.html《Ubuntu下dlib库编译安装》:

(1.0)前提需要boost和cmake环境,如果有配置过caffe就不用重复了。

boost环境,  $ sudo apt-get install libboost-all-dev

cmake环境, $ sudo apt-get install -y cmake,也可参考其他解决。

********http://www.cnblogs.com/whenyd/p/7721989.html

********https://www.cnblogs.com/spyplus/p/7829772.html

(1.1)下载Dlib库到本地。

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

(1.2)编译Dlib。

$ cd dlib

$ mkdir build; cd build; cmake .. -DDLIB_USE_CUDA=0 -DUSE_AVX_INSTRUCTIONS=1; cmake --build .(注意中间有个空格)

说明: -DDLIB_USE_CUDA=0不使用cuda,-DUSE_AVX_INSTRUCTIONS=1使用cpu的AVX加速

$ cd ..

$ python setup.py install --yes USE_AVX_INSTRUCTIONS --no DLIB_USE_CUDA

说明:这里可以指定python2或python3,也可以在虚拟环境中安装,--no DLIB_USE_CUDA选项不使用cuda,使用cuda可以不指定该选项或DLIB_USE_CUDA。

开始漫长的等待过程。。。。。。。莫着急。。。。。。

(1.3)查看Dlib是否安装成功。

$ python

$ import dlib

确认Dlib是否安装成功,这一步卡主了,重复安装了七八遍,在本地、在虚拟机下、换不同的python版本,都是前面步骤均无报错,也提示Dlib成功安装了。最后就是 输入import dlib一直报错,显示“非法指令(核心已转存)”跳出程序。折腾一天,第二天发现Dlib自动安装的路径没注意,Dlib安装的版本制定了需要的python版。

这里是Dlib19.16.99+Python3.6.4,个人一直没有注意,一直在python2.7和python3.5下面使用,自然就一直报错啦。以后,安装漫长的过程,也要稍微留意一下安装细节。

二、编译face_recognition环境

因尝试使用“pip install face_recognition ”安装多次卡住,故这里换用下面的方法。

(2.1)下载face_recognition到本地。

$ git clone https://github.com/ageitgey/face_recognition

(2.2)编译安装face_recognition

$ cd ~/face_recognition

$ python3 setup.py build

$ python3 setup.py install

(2.3)查看face_recognition是否安装成功。

$ python

$ import face_recognition

$ import dlib

(2.4)测试一张图片。

wp@wp-MS-7519:~/FaceRecognitionPy3.6.4/examples$

python find_faces_in_picture.py

 (2.5)Face Recognition 人脸识别。

各种案例识别,详细参考:https://github.com/ageitgey/face_recognition/blob/master/README_Simplified_Chinese.md。实操起来,还挺有意思的哦~~

三、使用opencv遇到的问题

执行命令,$ python,  $ import cv2, 报错。细看(1)$ python2,  $ import cv2,(2)$ python3,  $ import cv2,发现Python2能使用opencv,然而python3却不能使用opencv。分析原因,之前完整的装过opencv3.4.2,python2能使用,python3却不能用,说明是哪里配置的问题。分析dlib配置/home/wp/anaconda2/lib/python3.6在路径下,而且python要调用opencv,查找解决问题的办法最后通过进入Anaconda终端:pip3 install opencv_python解决问题。

wp@wp-MS-7519:~/anaconda2$

$  sudo pip3 install opencv-python

$  sudo pip3 install numpy Matplotlib

$  sudo pip3 install --upgrade setuptools

然后,成功解决问题:

wp@wp-MS-7519:~/anaconda2$ python3

Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 18:10:19)

[GCC 7.2.0] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> import cv2

>>> cv.__version__

算法---Face_Recognition配置实战篇的更多相关文章

  1. 算法---FaceNet在Tf下的实战篇

    FaceNet---Tensorflow下的下的实战篇 @WP20190225 ===============目录=============== 一.FaceNet算法简介 二.FaceNet配置与使 ...

  2. Nginx 核心配置-location的登录账户认证实战篇

    Nginx 核心配置-location的登录账户认证实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.使用ab命令模拟网站攻击 1>.安装httpd-tools工具 ...

  3. Nginx 核心配置-location的匹配案例实战篇

    Nginx 核心配置-location的匹配案例实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.location语法规则介绍 在没有使用正则表达式的时候,nginx会先在 ...

  4. KNN 算法-实战篇-如何识别手写数字

    公号:码农充电站pro 主页:https://codeshellme.github.io 上篇文章介绍了KNN 算法的原理,今天来介绍如何使用KNN 算法识别手写数字? 1,手写数字数据集 手写数字数 ...

  5. SVM 支持向量机算法-实战篇

    公号:码农充电站pro 主页:https://codeshellme.github.io 上一篇介绍了 SVM 的原理和一些基本概念,本篇来介绍如何用 SVM 处理实际问题. 1,SVM 的实现 SV ...

  6. Redis实战篇

    Redis实战篇 1 Redis 客户端 1.1 客户端通信 原理 客户端和服务器通过 TCP 连接来进行数据交互, 服务器默认的端口号为 6379 . 客户端和服务器发送的命令或数据一律以 \r\n ...

  7. ROS2.9.27架设网吧软路由实战篇之端口映射与回流

    转载:http://blog.csdn.net/zm2714/article/details/7924280 上一篇:ROS2.9.27架设网吧软路由实战篇之连通网络,主要讲述了网吧架设软路由ROS2 ...

  8. javamail模拟邮箱功能发送电子邮件-基础实战篇(javamail API电子邮件实例)

    引言: JavaMail 是一种可选的.能用于读取.编写和发送电子消息的包 JavaMail jar包下载地址:http://java.sun.com/products/javamail/downlo ...

  9. Systemd 入门教程:实战篇

    Systemd 入门教程:实战篇 上一篇文章,介绍了 Systemd 的主要命令,这篇文章主要介绍如何使用 Systemd 来管理我们的服务,以及各项的含义: 一.开机启动 对于那些支持 System ...

随机推荐

  1. Django:(08)序列化器

    1.序列化和反序列化变量从内存中变成可存储或传输的过程称之为序列化,序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上.反过来,把变量内容从序列化的对象重新读到内存里称之为反序列 ...

  2. hadoop java VM 参数设置 默认native栈大小设置

    问题总结: 程序栈太小,64位机器的栈大小默认比32位的大,将程序从64放到32中执行则报错,需要修改初始堆栈大小 (.so库中提供两个函数接口,一个里面使用的是尺寸较大的图像,另一个处理的图像很小, ...

  3. python logging模块【转载】

    转自:https://www.cnblogs.com/dahu-daqing/p/7040764.html 参考:老顽童log模块,讲的很细致,基本上拿到手就可以直接用了,很赞 1 logging模块 ...

  4. Spring 控制器重定向

    1.示例 return "redirect:/allUser"; redirect是跳转的意思后面是跳转的页面

  5. Spring分层次建包

    1.包分三层 配置包 控制器包 模型包 视图层 模板放 src/main/resources下的templates目录下

  6. restful规范与rest_framework

    django两种开发模式: 一.前后端不分离项目 二.前后端分离项目 什么是restful规范? 在前后端不分离的项目中,网页所需要的数据可以直接通过模板渲染的方式传递到前端页面,并且可以很好的支持d ...

  7. Beta冲刺博客

    这个作业属于哪个课程 当然是属于程序分析与设计呀 这个作业要求在哪里 在这儿 团队名称 六扇门编程小组(团队博客) 这个作业的目标 完成为期两周的β版本冲刺 1.团队信息 姓名 学号 曹欢(组长) 2 ...

  8. P5441 【XR-2】伤痕

    Luogu5441 有 \(n\) 个点 ( \(n\) 为奇数 , \(n \le 99\) ) 的完全图 , 其中可以有最多 \(n\) 条无向边 , 其他都是有向边 . 如果对于某四个点不经过这 ...

  9. 《C++ Primer》读书笔记之第15章:面向对象编程

    一.面向对象概述 1. 面向对象的三个基本特性 封装.继承和多态. 2. 封装 指把隐藏对象的实现细节,仅对外提供接口,从而达到接口与实现分离的效果.封装的好处:一是提高数据的安全性,用户只能使用对象 ...

  10. 【青橙商城-管理后台开发】3. web模块搭建

    [青橙商城-管理后台开发]3. web模块搭建 1.创建qingcheng_web_manager模块 pom.xml <?xml version="1.0" encodin ...