• 回答数

    4

  • 浏览数

    316

小笨猪seven
首页 > 职称论文 > 基于dlib的人脸识别毕业论文

4个回答 默认排序
  • 默认排序
  • 按时间排序

油墩子2016

已采纳

python使用dlib进行人脸检测与人脸关键点标记

Dlib简介:

首先给大家介绍一下Dlib

Dlib是一个跨平台的C++公共库,除了线程支持,网络支持,提供测试以及大量工具等等优点,Dlib还是一个强大的机器学习的C++库,包含了许多机器学习常用的算法。同时支持大量的数值算法如矩阵、大整数、随机数运算等等。

Dlib同时还包含了大量的图形模型算法。

最重要的是Dlib的文档和例子都非常详细。

Dlib主页:

这篇博客所述的人脸标记的算法也是来自Dlib库,Dlib实现了One Millisecond Face Alignment with an Ensemble of Regression Trees中的算法

这篇论文非常出名,在谷歌上打上One Millisecond就会自动补全,是CVPR 2014(国际计算机视觉与模式识别会议)上的一篇国际顶级水平的论文。毫秒级别就可以实现相当准确的人脸标记,包括一些半侧脸,脸很不清楚的情况,论文本身的算法十分复杂,感兴趣的同学可以下载看看。

Dlib实现了这篇最新论文的算法,所以Dlib的人脸标记算法是十分先进的,而且Dlib自带的人脸检测库也很准确,我们项目受到硬件所限,摄像头拍摄到的画面比较模糊,而在这种情况下之前尝试了几个人脸库,识别率都非常的低,而Dlib的效果简直出乎意料。

相对于C++我还是比较喜欢使用python,同时Dlib也是支持python的,只是在配置的时候碰了不少钉子,网上大部分的Dlib资料都是针对于C++的,我好不容易才配置好了python的dlib,这里分享给大家:

Dlib for python 配置:

因为是用python去开发计算机视觉方面的东西,python的这些科学计算库是必不可少的,这里我把常用的科学计算库的安装也涵盖在内了,已经安装过这些库的同学就可以忽略了。

我的环境是:

大家都知道Ubuntu是自带的,而且很多Ubuntu系统软件都是基于的,有一次我系统的python版本乱了,我脑残的想把卸载了重装,然后……好像是提醒我要卸载几千个软件来着,没看好直接回车了,等我反应过来Ctrl + C 的时候系统已经没了一半了…

所以我发现想要搞崩系统,这句话比rm -rf 还给力…

sudo apt-get remove

首先安装两个python第三方库的下载安装工具,好像是预装了easy_install

以下过程都是在终端中进行:

1.安装pip

sudo apt-get install python-pip1

2.安装easy-install

sudo apt-get install python-setuptools1

3.测试一下easy_install

有时候系统环境复杂了,安装的时候会安装到别的python版本上,这就麻烦了,所以还是谨慎一点测试一下,这里安装一个我之前在博客中提到的可以模拟浏览器的第三方python库测试一下。

sudo easy_install Mechanize1

4.测试安装是否成功

在终端输入python进入python shell

python1

进入python shell后import一下刚安装的mechanize

>>>import mechanize1

没有报错,就是安装成功了,如果说没有找到,那可能就是安装到别的python版本的路径了。

同时也测试一下PIL这个基础库

>>>import PIL1

没有报错的话,说明PIL已经被预装过了

5.安装numpy

接下来安装numpy

首先需要安装python-dev才可以编译之后的扩展库

sudo apt-get install python-dev1

之后就可以用easy-install 安装numpy了

sudo easy_install numpy1

这里有时候用easy-install 安装numpy下载的时候会卡住,那就只能用 apt-get 来安装了:

sudo apt-get install numpy1

不推荐这样安装的原因就是系统环境或者说python版本多了之后,直接apt-get安装numpy很有可能不知道装到哪个版本去了,然后就很麻烦了,我有好几次遇到这个问题,不知道是运气问题还是什么,所以风险还是很大的,所以还是尽量用easy-install来安装。

同样import numpy 进行测试

python>>>import numpy1234

没有报错的话就是成功了

下面的安装过程同理,我就从简写了,大家自己每步别忘了测试一下

6.安装scipy

sudo apt-get install python-scipy1

7.安装matplotlib

sudo apt-get install python-matplotlib1

8.安装dlib

我当时安装dlib的过程简直太艰辛,网上各种说不知道怎么配,配不好,我基本把stackoverflow上的方法试了个遍,才最终成功编译出来并且导入,不过听说更新之后有了,那真是极好的,我没有亲自配过也不能乱说,这里给大家分享我配置的过程吧:

1.首先必须安装libboost,不然是不能使用.so库的

sudo apt-get install libboost-python-dev cmake1

2.到Dlib的官网上下载dlib,会下载下来一个压缩包,里面有C++版的dlib库以及例子文档,Python dlib库的代码例子等等

我使用的版本是,大家也可以在我这里下载:

之后进入python_examples下使用bat文件进行编译,编译需要先安装libboost-python-dev和cmake

cd to 123

之后会得到一个,复制到dist-packages目录下即可使用

这里大家也可以直接用我编译好的.so库,但是也必须安装libboost才可以,不然python是不能调用so库的,下载地址:

将.so复制到dist-packages目录下

sudo cp /usr/local/lib/

最新的好像就没有这个bat文件了,取而代之的是一个setup文件,那么安装起来应该就没有这么麻烦了,大家可以去直接安装,也可以直接下载复制我的.so库,这两种方法应该都不麻烦~

有时候还会需要下面这两个库,建议大家一并安装一下

9.安装skimage

sudo apt-get install python-skimage1

10.安装imtools

sudo easy_install imtools1

Dlib face landmarks Demo

环境配置结束之后,我们首先看一下dlib提供的示例程序

1.人脸检测

源程序:

#!/usr/bin/python# The contents of this file are in the public domain. See   This example program shows how to find frontal human faces in an image.  In#   particular, it shows how you can take a list of images from the command#   line and display each on the screen with red boxes overlaid on each human#   face.##   The examples/faces folder contains some jpg images of people.  You can run#   this program on them and see the detections by executing the#   following command:#       ./ ../examples/faces/*.jpg##   This face detector is made using the now classic Histogram of Oriented#   Gradients (HOG) feature combined with a linear classifier, an image#   pyramid, and sliding window detection scheme.  This type of object detector#   is fairly general and capable of detecting many types of semi-rigid objects#   in addition to human faces.  Therefore, if you are interested in making#   your own object detectors then read the example#   program.  ### COMPILING THE DLIB PYTHON INTERFACE#   Dlib comes with a compiled python interface for python on MS Windows. If#   you are using another python version or operating system then you need to#   compile the dlib python interface before you can use this file.  To do this,#   run .  This should work on any operating#   system so long as you have CMake and boost-python installed.#   On Ubuntu, this can be done easily by running the command:#       sudo apt-get install libboost-python-dev cmake##   Also note that this example requires scikit-image which can be installed#   via the command:#       pip install -U scikit-image#   Or downloaded from . import sysimport dlibfrom skimage import iodetector = ()win = ()print("a");for f in [1:]:print("a");print("Processing file: {}".format(f))img = (f)# The 1 in the second argument indicates that we should upsample the image# 1 time.  This will make everything bigger and allow us to detect more# = detector(img, 1)print("Number of faces detected: {}".format(len(dets)))    for i, d in enumerate(dets):print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format(i, (), (), (), ()))()(img)(dets)()# Finally, if you really want to you can ask the detector to tell you the score# for each detection.  The score is bigger for more confident detections.# Also, the idx tells you which of the face sub-detectors matched.  This can be# used to broadly identify faces in different (len([1:]) > 0):img = ([1])dets, scores, idx = (img, 1)    for i, d in enumerate(dets):print("Detection {}, score: {}, face_type:{}".format(d, scores[i], idx[i]))1234567891011128192021222324252627282930337383940414243444546474849505575859606162636465666768697077778798081

我把源代码精简了一下,加了一下注释:

# -*- coding: utf-8 -*-import sysimport dlibfrom skimage import io#使用dlib自带的frontal_face_detector作为我们的特征提取器detector = ()#使用dlib提供的图片窗口win = ()#[]是用来获取命令行参数的,[0]表示代码本身文件路径,所以参数从1开始向后依次获取图片路径for f in [1:]:    #输出目前处理的图片地址print("Processing file: {}".format(f))    #使用skimage的io读取图片img = (f)    #使用detector进行人脸检测 dets为返回的结果dets = detector(img, 1)    #dets的元素个数即为脸的个数print("Number of faces detected: {}".format(len(dets)))    #使用enumerate 函数遍历序列中的元素以及它们的下标#下标i即为人脸序号#left:人脸左边距离图片左边界的距离 ;right:人脸右边距离图片左边界的距离#top:人脸上边距离图片上边界的距离 ;bottom:人脸下边距离图片上边界的距离for i, d in enumerate(dets):print("dets{}".format(d))print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format( i, (), (), (), ()))    #也可以获取比较全面的信息,如获取人脸与detector的匹配程度dets, scores, idx = (img, 1)for i, d in enumerate(dets):print("Detection {}, dets{},score: {}, face_type:{}".format( i, d, scores[i], idx[i]))    #绘制图片(dlib的ui库可以直接绘制dets)(img)(dets)    #等待点击()123456789101112819202122232425262728293033738394041424344454647484950

分别测试了一个人脸的和多个人脸的,以下是运行结果:

运行的时候把图片文件路径加到后面就好了

python ./data/

一张脸的:

两张脸的:

这里可以看出侧脸与detector的匹配度要比正脸小的很多

2.人脸关键点提取

人脸检测我们使用了dlib自带的人脸检测器(detector),关键点提取需要一个特征提取器(predictor),为了构建特征提取器,预训练模型必不可少。

除了自行进行训练外,还可以使用官方提供的一个模型。该模型可从dlib sourceforge库下载:

也可以从我的连接下载:

这个库支持68个关键点的提取,一般来说也够用了,如果需要更多的特征点就要自己去训练了。

源程序:

#!/usr/bin/python# The contents of this file are in the public domain. See   This example program shows how to find frontal human faces in an image and#   estimate their pose.  The pose takes the form of 68 landmarks.  These are#   points on the face such as the corners of the mouth, along the eyebrows, on#   the eyes, and so forth.##   This face detector is made using the classic Histogram of Oriented#   Gradients (HOG) feature combined with a linear

139 评论

tarrinbiubiubiu

dlib的安装很头疼我自己折腾了好几星期才成功 要讲的话很多所以写在了word里

链接:

278 评论

cindyhouse0221

现在的人脸识别技术已经得到了非常广泛的应用,支付领域、身份验证、美颜相机里都有它的应用。用iPhone的同学们应该对下面的功能比较熟悉iPhone的照片中有一个“人物”的功能,能够将照片里的人脸识别出来并分类,背后的原理也是人脸识别技术。这篇文章主要介绍怎样用Python实现人脸检测。人脸检测是人脸识别的基础。人脸检测的目的是识别出照片里的人脸并定位面部特征点,人脸识别是在人脸检测的基础上进一步告诉你这个人是谁。好了,介绍就到这里。接下来,开始准备我们的环境。准备工作本文的人脸检测基于dlib,dlib依赖Boost和cmake,所以首先需要安装这些包,以Ubuntu为例:$ sudo apt-get install build-essential cmake$ sudo apt-get install libgtk-3-dev$ sudo apt-get install libboost-all-dev我们的程序中还用到numpy,opencv,所以也需要安装这些库:$ pip install numpy$ pip install scipy$ pip install opencv-python$ pip install dlib人脸检测基于事先训练好的模型数据,从这里可以下到模型数据下载到本地路径后解压,记下解压后的文件路径,程序中会用到。dlib的人脸特征点上面下载的模型数据是用来估计人脸上68个特征点(x, y)的坐标位置,这68个坐标点的位置如下图所示:我们的程序将包含两个步骤:第一步,在照片中检测人脸的区域第二部,在检测到的人脸区域中,进一步检测器官(眼睛、鼻子、嘴巴、下巴、眉毛)人脸检测代码我们先来定义几个工具函数:def rect_to_bb(rect): x = () y = () w = () - x h = () - y return (x, y, w, h)这个函数里的rect是dlib脸部区域检测的输出。这里将rect转换成一个序列,序列的内容是矩形区域的边界信息。def shape_to_np(shape, dtype="int"): coords = ((68, 2), dtype=dtype) for i in range(0, 68): coords[i] = ((i).x, (i).y) return coords这个函数里的shape是dlib脸部特征检测的输出,一个shape里包含了前面说到的脸部特征的68个点。这个函数将shape转换成Numpy array,为方便后续处理。def resize(image, width=1200): r = width * / [1] dim = (width, int([0] * r)) resized = (image, dim, interpolation=) return resized这个函数里的image就是我们要检测的图片。在人脸检测程序的最后,我们会显示检测的结果图片来验证,这里做resize是为了避免图片过大,超出屏幕范围。接下来,开始我们的主程序部分import sysimport numpy as npimport dlibimport cv2if len() < 2: print "Usage: %s " % [0] (1)image_file = [1]detector = ()predictor = ("")

86 评论

大馄饨小馄饨

1 KM-1 键混器的设计 1 Sw3204V监控器的设计 1 基于射频遥控型(单片机)交通灯的设计1 Sw802V视频切换器的设计 1 无线数控多相位灯从机的设计1 基于RS232遥控型交通灯的设计1 Sw802A音频切换器的设计1 Sw6408V监控器的设计 1 KM-3键混器的设计1 无线数控多相位灯主机的设计1 SW162V数字视频切换器的设计1 基于RS232监控切换器1 SW401V 数字视频切换器的设计1 基于单片机的多路数据采集系统1 RS485转RS232的模块设计1 基于LCD显示的波形发生器的设计1 4-20mA转RS-485模块的设计 1 基于RS232流量计的设计 1 基于PTR2000的交通灯控制器主机的设计1 基于RS485量水仪的设计1 压力采集控制器的设计 1 数字量转4-20mA模拟量输出的模块设计1 正弦波形发生器的设计1 基于PTR2000的交通灯控制器从机的设计1 基于RS485视频切换器的设计1 LCD车速里程表电路设计1 LED车速里程表电路设计1 MSK通信系统的仿真设计1 员工信息管理系统 1 计算机文化基础考试系统的设计和开发1 人事工资管理系统1 员工信息管理系统设计1 超市进销存管理系统的VB实现1 基于单片机的多波形发生器的应用1 基于单片机电动自行车控制器设计1 个人理财管理系统1 基于CAN总线火灾监控系统的研究1 基于DSP平台的FIR滤波器设计1 于Matlab的FIR数字滤波器设计与仿真1 基于TMS320VC5402-DSP的最小系统硬件设计1 基于单片机的热水控制器 1 基于单片机的路灯控制系统的设计1 于单片机远程控制家用电器系统的设计1 基于液晶显示的乘法口诀测试仪的设计1 实验室设备管理系统毕业设计开题报告1 用AT89C51做 洗衣机全自动控制.doc1 数显频率计的设计.doc1 数控车间温度湿度控制系统设计.doc1 三角波斜率测试仪设计.doc1 人脸几何特征提取1 全自动洗衣机的控制程序设计.doc1 乞丐论文.doc1 教学楼毕业设计.doc1 建立海上风电场的技术要求分析与探讨.doc1 基于凌阳61A的数字式温湿度检测仪.doc1 基于几何匹配和分合算法的人脸识别.doc1 基于单片机数字钟的设计.doc1 基于单片机数据通用采集器的设计.doc1 基于单片机数据采集器.doc1 基于单片机的自动报警器的设计.doc1 基于单片机的终端设计.doc1 基于单片机的路灯控制系统控制系统的设计.doc1 基于单片机的交通灯的设计.doc1 基于单片机的简易计算器的设计.doc1 基于单片机的家用安保系统的设计.doc1 基于VHDL的数字频率计.doc1 基于SystemView的OFDM系统仿真设计.doc1 基于SystemView的OFDM系统仿真设计 基于PLC的烧结配料控制系统设计.doc1 基于MSP430的温度检测系统设计 基于MATLAB工具箱的数字滤波器设计.doc1 基于MATLAB的扩频通信系统仿真研究.doc1 基于GSM短信息通信方式的路灯无线监控系统.doc1 基于FPGA的信号源设计.doc1 基于EPP协议的AVR与PC并行通信系统的设计 单片机交通灯.doc1 单片机多点温度巡回检测系统的设计.doc1 单片机的温湿度检测系统 单路口交通信号PLC控制系统的设计.doc1 城市路口多相位自寻优交通信号控制设计.doc1 陈洁(螺旋瓶盖的设计).doc1 八路竞赛抢答器.doc1 matlab信号与系统.doc1 GSM系统的研究与SystemView仿真.doc1 蒯申红智能语音报站系统设计 MT8888在家庭安全电话报警系统中的应用设计1 基于FPGA的频率与功率因数在线测量1 基于FPGA的误码测试仪如果需要定做的话系 Q 273546756

236 评论

相关问答

  • 毕业论文设计人脸识别

    1 KM-1 键混器的设计 1 Sw3204V监控器的设计 1 基于射频遥控型(单片机)交通灯的设计1 Sw802V视频切换器的设计 1 无线数控多

    爱吃爱玩007 2人参与回答 2023-12-10
  • 人脸识别的仿真毕业论文

    写设计系统方面的就可以了。之前也是苦于写不出,还是学姐给的文方网,写的《人脸识别系统的研究与实现——图像获取、定位、特征提取和特征识别》,很专业的说人寿保险老业

    WaimanTong 5人参与回答 2023-12-12
  • 人脸检测与识别论文

    dlib的安装很头疼我自己折腾了好几星期才成功 要讲的话很多所以写在了word里 链接:

    榜样的力量 3人参与回答 2023-12-11
  • 基于特征脸人脸识别毕业论文

    计算机软件毕业论文的题目都好写啊

    快乐齐分享yeah 6人参与回答 2023-12-10
  • 人脸识别毕业设计论文答辩

    2022年下半年我省高等教育自学考试毕业证书网上申办12月10日开始。符合申办条件的考生,请在规定的时间按照相应流程和有关要求完成申办手续。一、申办时限序号日期

    诗酒趁年少r 3人参与回答 2023-12-06