加载人像检测模型的代码是

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了加载人像检测模型的代码是相关的知识,希望对你有一定的参考价值。

很多人都认为人脸识别是一项非常难以实现的工作,看到名字就害怕,然后心怀忐忑到网上一搜,看到网上N页的教程立马就放弃了。这些人里包括曾经的我自己。其实如果如果你不是非要深究其中的原理,只是要实现这一工作的话,人脸识别也没那么难。今天我们就来看看如何在40行代码以内简单地实现人脸识别。
一点区分

对于大部分人来说,区分人脸检测和人脸识别完全不是问题。但是网上有很多教程有无无意地把人脸检测说成是人脸识别,误导群众,造成一些人认为二者是相同的。其实,人脸检测解决的问题是确定一张图上有木有人脸,而人脸识别解决的问题是这个脸是谁的。可以说人脸检测是是人识别的前期工作。今天我们要做的是人脸识别。

所用工具

Anaconda 2——Python 2

Dlib

scikit-image

Dlib

对于今天要用到的主要工具,还是有必要多说几句的。Dlib是基于现代C++的一个跨平台通用的框架,作者非常勤奋,一直在保持更新。Dlib内容涵盖机器学习、图像处理、数值算法、数据压缩等等,涉猎甚广。更重要的是,Dlib的文档非常完善,例子非常丰富。就像很多库一样,Dlib也提供了Python的接口,安装非常简单,用pip只需要一句即可:

pip install dlib

上面需要用到的scikit-image同样只是需要这么一句:

pip install scikit-image

注:如果用pip install dlib安装失败的话,那安装起来就比较麻烦了。错误提示很详细,按照错误提示一步步走就行了。

人脸识别

之所以用Dlib来实现人脸识别,是因为它已经替我们做好了绝大部分的工作,我们只需要去调用就行了。Dlib里面有人脸检测器,有训练好的人脸关键点检测器,也有训练好的人脸识别模型。今天我们主要目的是实现,而不是深究原理。感兴趣的同学可以到官网查看源码以及实现的参考文献。今天的例子既然代码不超过40行,其实是没啥难度的。有难度的东西都在源码和论文里。

首先先通过文件树看一下今天需要用到的东西:

准备了六个候选人的图片放在candidate-faces文件夹中,然后需要识别的人脸图片test.jpg。我们的工作就是要检测到test.jpg中的人脸,然后判断她到底是候选人中的谁。另外的girl-face-rec.py是我们的python脚本。shape_predi
参考技术A 现在的人脸识别技术已经得到了非常广泛的应用,支付领域、身份验证、美颜相机里都有它的应用。用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
人脸检测基于事先训练好的模型数据,从这里可以下到模型数据

http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2

下载到本地路径后解压,记下解压后的文件路径,程序中会用到。

dlib的人脸特征点

上面下载的模型数据是用来估计人脸上68个特征点(x, y)的坐标位置,这68个坐标点的位置如下图所示:

我们的程序将包含两个步骤:

第一步,在照片中检测人脸的区域

第二部,在检测到的人脸区域中,进一步检测器官(眼睛、鼻子、嘴巴、下巴、眉毛)

人脸检测代码

我们先来定义几个工具函数:
def rect_to_bb(rect):
x = rect.left()
y = rect.top()
w = rect.right() - x
h = rect.bottom() - y
return (x, y, w, h)
这个函数里的rect是dlib脸部区域检测的输出。这里将rect转换成一个序列,序列的内容是矩形区域的边界信息。
def shape_to_np(shape, dtype="int"):
coords = np.zeros((68, 2), dtype=dtype)
for i in range(0, 68):
coords[i] = (shape.part(i).x, shape.part(i).y)
return coords
这个函数里的shape是dlib脸部特征检测的输出,一个shape里包含了前面说到的脸部特征的68个点。这个函数将shape转换成Numpy array,为方便后续处理。
def resize(image, width=1200):
r = width * 1.0 / image.shape[1]
dim = (width, int(image.shape[0] * r))
resized = cv2.resize(image, dim, interpolation=cv2.INTER_AREA)
return resized
这个函数里的image就是我们要检测的图片。在人脸检测程序的最后,我们会显示检测的结果图片来验证,这里做resize是为了避免图片过大,超出屏幕范围。

接下来,开始我们的主程序部分
import sys
import numpy as np
import dlib
import cv2

if len(sys.argv) < 2:
print "Usage: %s <image file>" % sys.argv[0]
sys.exit(1)

image_file = sys.argv[1]
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")

测评|中德宏泰深度神经网络算法-深眸人像识别系统


全新人像识别技术


  人像识别系统成功的关键在于是否拥有尖端的核心算法,并使识别结果具有实用化的识别率和识别速度,它集成了人工智能、机器学习、模型理论、视频图像处理等多种专业技术。那么如何改进算法,让人像识别技术既能高精准识别人脸,又能适应实战中环境、人员特征的多变,同时还要满足易于推广的高性价比条件成了新一代人像识别技术的突破点。


  中德宏泰人像识别基于业界领先的人工智能分析算法,提供了人脸检测、人脸识别、关键点定位、人体体貌甄别和步态特征分析等一整套技术方案以解决动态人像识别技术容易受环境因素左右的技术难点。


测评|中德宏泰深度神经网络算法-深眸人像识别系统


  传统的人像检测和识别算法都有一套固定的分阶段训练框架,人工定义的特征表示往往比较简单,无法很好的表示人像的特征,而分段的训练方式使得每一段训练过程的目标并不完全一致,这两点制约了算法的进一步提升。而深度学习的复杂非线性特征表示和“端到端”的特性刚好相反,整个训练过程完全是以统一的目标为导向,中间过程无需人工定义而且可以学习出更有代表性的特征表示,从而达到更好的效果。深眸持续集成步态和体貌特征,进一步加强人像在实际场景下的识别能力。


  中德宏泰人像识别系统深眸,用的是深度学习神经网络算法,深度学习是在模仿认得一种思维结构,它把底层的特征逐步抽象为成高层特征,然后用这个特征的图像进行一种良好表达。深眸针对多种复杂场景进行了深度优化,在有效控制误报率的情况下大幅度提高复杂场景的人像识别率,对深度网络结构和训练数据集都进行了特定的优化,在保证识别率的同时提高可深度网络的运算速度,结合分布式运算系统可以实现大规模高可用的大型实战系统。


测评|中德宏泰深度神经网络算法-深眸人像识别系统


模块化设计系统安装迅速


  中德宏泰人像识别系统采用灵活的模块化设计,支持系统的灵活组建,以满足不同项目的人像识别需求。其设置、操作颇为简洁、易用,学习、管理迅速。系统安装在不同配置的服务器会有接入通道数量的差别。本次测试的深眸人像识别系统安装于一台X86高性能服务器主机中(i7处理器,16GB内存,运行64位Windws 7操作系统),并为其匹配一台解像力达1050TVL的1080P高清摄像机,同时将服务器和摄像机均接入交换机。


  该系统使用数据库为SQLServer 2008,包含五大服务器模块,人脸抓拍服务器、人脸库/路人库服务器、待对比人脸库服务器、人脸对比服务器、业务服务器等,人像识别系统通过综合控制客户端对五大服务器进行访问应用。另外,人脸抓拍服务器可以直接进行关键点定位、人体体貌特征甄别以及步态特征分析,有效区分不同人员之间的特征,并对进出口人员进行识别。值得一提的是,该人像识别系统既可以独立项目使用,也可以与其他平台或者项目结合使用,灵活性非常强。


客户端使用方便


  深眸人像识别系统控制客户端设计简洁,分别有系统配置、实时监控、人脸库以及查询4大类目,UI设计简约而友好,易于学习、便于操作与管理。


  系统配置有本地配置、前端配置、服务配置以及用户配置。本地配置为是否报警提示、抓图及抓图路径的配置;前端配置为添加摄像机以获取实时视频流,该识别系统支持ONVIF、PSIA、RTSP协议的第三方摄像机和国内外主流厂家品牌摄像机,模拟、标清、高清到超高清视频源均可接入;服务配置则是为本地客户端添加抓拍服务器和人脸比对服务器,以实现视频通道中人脸的检测、比对与识别运算;用户配置即为管理用户的添加和删除。


人脸库


  人脸库包含创建人脸库、浏览人脸库、路人库(被抓拍的非比对数据库中的人脸)、批量导入。


  创建人脸库时都可以设定库识别阀值。首先新建人脸库,可以直接获取已连接的摄像机,把想要的摄像机移入到人脸库列表。系统支持单个图像数据上传和批量导入功能。单个上传时可直接录入姓名、性别、生日、证件类型、证件号等个人信息,然后上传人脸图像,该人脸库具有自动检测人脸功能,可从任意不限大小的JPG、PNG等格式图片中自动识读人脸并将此人脸作为数据库,无需对图片进行刻意处理和优化,人脸导入很方便,同时一条数据库支持导入多张人脸;批量导入时,可在数据库中再分别修改个人信息,数据库建立快速。相比较一张张导入,节省了时间。本次测评从摄像机抓拍的人脸图像、单反照片、网络图片等资源中截取人脸头像,并以JPG格式上传到数据库中。需要说明的是,本次测评中人脸库上传的图像有单张图片包含多张人脸,较标准人脸头像来说质量、像素要低许多,但仍能够识别上传,人脸数据库创建快速。


  浏览人脸库即对所有已创建的人脸库浏览,浏览结果按上传顺序排列显示,每项内容包含所有需上传的项目。


  路人库可以查询到所有摄像机抓拍到的人脸,也就是所有路人的人脸资源。也可以导出人脸和扩展,使用路人库人脸与黑名单库进行比对。


测评|中德宏泰深度神经网络算法-深眸人像识别系统


比对查询


        查询分为人脸对比查询和对比日志查询。


  人脸对比查询中,只需要上传一张照片,选择查询库(这里可以选择人脸库、对比日志和路人库)、摄像机,查询结果按照相似度从高到低显示,并且结果可以导出保存。实测中,上传数据库已存在人脸的正面照查询对比检测,数据库为一个月内路过摄像机抓拍到的人像图片和人脸图片,数据结果显示相似度在69.3%-78.6%,其余相似度较低的也可排列显示。


测评|中德宏泰深度神经网络算法-深眸人像识别系统


  对比日志查询,可以按照姓名、身份证、性别的内容去查询,查询结果会显示想要查询人的信息(如出现地点、出现时间)。


测评|中德宏泰深度神经网络算法-深眸人像识别系统


实时人像识别


  中德宏泰深眸人像识别系统实时监控可以同时监控多个摄像机,界面设置分为一分屏、四分屏、九分屏等,在实时监控画面中出现的人像可自动与人脸库实施对比,高于人脸库设置的相似度阀值时自动报警,并在实时监控界面中显示比对成功的相似图像数据信息。



  该系统具有很强的抗干扰性能,对带帽、发型、化妆、夸张表情、大角度斜侧等条件下也可以识别,并能对多人、全天候黑白/全彩模式进行分析,实现了不错的人像识别效果,具备较强实战实力。实测了如下类型信息的人像图像并可识别:


  正常人像识别,首先将摄像机同时对准测试场景,测试员正面对准摄像机,实时监控界面立即出现测试员人像,系统自动与测试人脸库进行比对,并比对成功(人脸库已上传测试员照片)后报警显示。


  小像素人像识别,在测试场景中,测试人员位置不同,景深较大情况下显示的人像像素数较小,最小60*60像素大小的人像可识别,目测识别时间小于1秒,比对完成迅速。


  超高像素人像识别,支持最大8192×4096格式大尺寸图像识别。


  侧脸识别,支持脸部斜侧识别,实测中左右俯仰角度最大可达30°,头部倾斜20°-30°、人脸水平翻转(采用照片测试)等,系统都能准确识别。若是旋转角度达到45°时,从系统客户端可发现,系统能检测出人脸,但由于可识别特征有限,比对数据库的人脸识别率不高。


  多人像识别,利用一个测试场景中包含多张人像的情况实现,一帧图像里可同时识别的最大人像数为20。


  复杂特征表情人脸识别,测试中,无论是笑状、哭状、闭眼、翻白眼,还是扮鬼脸,系统做到了90%以上的识别率。


  异常人脸识别,测试中,当人脸左侧或右侧被遮挡1/3、带帽、模仿戴口罩遮挡鼻子及以下部位,发现系统也能识别人脸,并可与人脸库比对。


  复杂场景人像识别,首先在复杂背景下检测单人像、多人像识别,发现系统可准确捕抓并识别人像;接着模拟低照度场景,由于所搭配的1080P摄像机具有较好的星光成像效果,提供的图像优良,较低照度下也能正常识别人像。再模拟强光场景,采用强光灯场景时,识别效果尚有保证;而在仿真场景时,识别率有所下降。


应用场景多样化


  中德宏泰的深眸人像识别系统吸取了二维人脸识别易出现识别不准、漏报的缺陷,全新3D人脸生物识别,可自动对人脸进行三维建模分析,支持俯仰30°、左右30°的人脸特征分析;同时内置了多种算法抗干扰引擎技术,可排除部分人脸干扰因素,如眼镜、帽子、胡子、化妆甚至是戴口罩等异常行为;适应多人像、多场景变换、环境照度改变、强光/眩光等复杂恶劣场合;适应人脸时间跨度特征变化。为了将人像识别真正地从实验室落实到应用中来,具有较强的实战场景适应性能,提高实战应用效果,中德宏泰还对系统进行了针对性设计,如动态采集技术,只有当画面中的“人像”为运动状态方可被采集,以规避实际场景中有可能出现的壁画、海报干扰。实现动态实时识别,并且识别比率高,识别速度达到秒级。


产品特色


  1、模块化设计,灵活选择组建,满足不同项目的人像识别需求;


  2、界面设置简洁,易上手使用,管理便捷;


  3、具有很强的抗干扰性能,对带帽、发型、化妆、夸张表情、大角度斜侧等条件下也可进行识别;


  4、适应复杂环境下(背景复杂、人员众多、年龄时间跨度大、照度低下等)的人像识别;


  5、3D人像生物识别技术和动态采集技术,有效规避实际应用场景的壁画、海报之类的干扰。


测试场合及配合设备


  a&s测试室,可上网高性能电脑、交换机、单反相机、创维6M48监视器、不同品牌1080P/720P摄像机、多位测试人员、相片/艺术照等。


适用场合


  适用于道路、机场、小区、火车站、商场等行业应用及公司考勤、安防布控等民用领域应用。


规格参数


  人脸识别大小  最大8192×4096,最小60*60像素

  人脸识别角度  俯仰30°、左右30°

  同时识别的最大人脸数为  20个

  抗干扰因素    带帽、发型、化妆、夸张表情、大角度斜侧

  正脸识别率    98%以上

  抗干扰识别率  75%以上


《2015-2020系统集成行业发展趋势及分析》

↓↓你想要的↓↓

以上是关于加载人像检测模型的代码是的主要内容,如果未能解决你的问题,请参考以下文章

测评|中德宏泰深度神经网络算法-深眸人像识别系统

证件照制作如此简单——基于人脸检测与自动人像分割轻松制作个人证件照(C++实现)

ffmpeg 自动检测人像然后做必要的翻转

静态照片一键动态化,教你如何集成人像复活能力

PaddleHub人像分割模型:AI人像抠图及图像合成

Yolov5自定义对象检测模型未加载