可以的 可以作为论文的模型处理_山?(PaddlePaddle)是集深度学习核心框架、工具组件和服务平台为一体的技术先进、功能完备的开源深度学习平台,已被中国企业广泛使用,深度契合企业应用需求,拥有活跃的开发者社区生态。提供丰富的官方支持模型集合,并推出全类型的高性能部署和集成方案供开发者使用。?0PaddleDetection简介_addleDetection 是PaddlePaddle推出的物体检测统一框架。支持现有的RCNN、SSD、YOLO等系列模型、支持 ResNet、ResNet-VD、ResNeXt、ResNeXt-VD、SENet、MobileNet、DarkNet等主干网络。针对不同的业务场景(性能、目标大小、准确率等)可以调用框架下的不同参数(或者是参数文件),实现任务。相比于tensorflow的Object_Detection,优势之一就是将YOLO这一目标检测的快速算法融合到了框架下。_恼陆砸桓隼游得鳎刺溉绾卫_addleDetection完成一个项目,本文介绍(1-6章节)_钅坑玫降墓ぞ? 硬件:Win10(RTX2060)笔记本、某品牌服务器(4*T4)工业相机(Hikvision)软件:pycharm、VS2019?1、环境部署?2、数据集准备?3、训练?4、训练过程可视化?5、模型导出?6、python进行单张/多张图片的预测?7、python+qt(给客户的演示demo)?8、C++进行单张预测(含编译简介)?9、C++预测代码封装成DLL、配合C#完成一个整体项目?10、扩展:关于PaddlePaddle代码数据读取的方式。
姓名:张钰 学号:21011210154 学院:通信工程学院 【嵌牛导读】Frequency-aware Discriminative Feature Learning Supervised by Single-Center Loss for Face Forgery Detection论文阅读笔记 【嵌牛鼻子】Deepfake人脸检测方法,基于单中心损失监督的频率感知鉴别特征学习框架FDFL,将度量学习和自适应频率特征学习应用于人脸伪造检测,实现SOTA性能 【嵌牛提问】本文对于伪造人脸检测的优势在哪里体现 【嵌牛正文】 转自:
Viola-jones人脸检测算法是一种基于滑动窗口的目标检测算法,但它却克服了滑动窗口检测带来的低效问题,可以用于实时人脸检测,主要归功于以下三点:
我参考论文[1]实现了Viola Jones中提到的attention cascade检测框架,此处是 github传送门 。
下面进一步详细介绍整个检测原理。
基于滑窗的目标检测基本原理很简单,首先构建一个classifier(分类器),以人脸检测为例,分类器的工作是判断给定大小的图像的是否为人脸,用该分类器从左至右从上到下扫描整幅图像,扫描获取的部分图像称为子窗(文章中子窗大小为24x24像素),当分类器判断子窗是人脸时,即完成了人脸检测。
这样处理有个问题,如果图像中包含的人脸变大了,此时采用固定大小的子窗就无法进行检测。通常有两种解决方法,1. 采用image-pyramid(图像金字塔),也就是通过resize获得多种不同大小图像并堆叠在一起,用固定大小分类器同时对所有图像进行扫描;2. 采用不同大小的分类器进行扫描。文章中用到的是第二种方法,尽管如此,虽然避免了调整图像大小带来的计算开销,但不同大小的分类器意味着有更多子窗需要进行处理。
如何构建一个足够快的分类器来对每个子窗进行快速判断。
分类器的构建有两种方式,一种是pixel-based(基于像素),另一种是feature-based(基于特征)。当把神经网络作为图像分类器时,输入是图像的像素值,即基于像素的分类器。用图像像素作为输入不包含任何和待分类目标有关的特定信息,往往训练这种分类器需要大量数据,并且分类过程较慢。基于特征的分类器就是先针对图像进行特征提取(HOG特征,SIFT特征等),再利用获取的特征进行分类。这种分类器不需要大量训练数据,且计算量一般会在特征计算部分,相对较小。
文章采用的是基于特征的分类器,选取了一种较为简单的特征即haar-like特征。利用矩形个数对可以将haar-like特征分为三类,分别由两个,三个,和四个 大小相同 的矩形组成。全部列举出来可以分为以下(a)(b)(c)(d)(e)五类(注意是五类不是五个,具体有多少个haar-like特征是由子窗大小决定的)。如下图所示(文章[1]中的图)。
当子窗大小给定后,我们可以用五个参数唯一确定 一个 haar-like特征,即特征种类(a/b/c/d/e),左上角x轴坐标,左上角y轴坐标,矩形的长,矩形的宽。对应的特征值等于位于白色矩形框中像素值总和减去位于黑色矩形框中的像素值总和。文章中用到的子窗大小为24x24像素,可以计算出来总共有162336个特征(把在子窗中所有可能位置和可能大小的特征全部列举出来)。利用haar-like特征进行分类只需两步:
haar-like特征有两个优点,第一是它是scale-invariant(不随图片大小而改变)的,第二是可以通过积分图像快速计算。简单的说下第一点的含义,例如我们用24x24像素的训练样本训练获取一组haar-like特征和对应的门限值,当对图像进行扫描时,子窗大小调整为SxS像素,此时只需将特征中的矩形大小按同样比例进行缩放(门限值同样需要缩放),计算所得的特征值依然是有效的。 积分图像是受卷积的微分性质启发而定义一种数据结构。积分图像定义: 其中 为积分图像, 为原图像。积分图像中 位置处的像素值等于原图中位于 的左侧和上方的所有像素值之和。有了积分图像我们就可以快速计算haar-like特征,以特征(a)为例,如下图所示。
S1到S6是积分图像在这六个顶点上的值。该特征值等于位于A中的像素总和减去位于B中的像素总和,而A中像素总和等于S5+S1-S2-S4,B中像素总和等于S6+S2-S3-S5,并且无论矩形多大,我们总能在固定时间内计算出特征值(6次索引操作和少量的加法乘法计算)。积分图像只需计算一次后续可以一直使用,事实上在算法实现时,我们只需保存样本的积分图像,原图像反而不用保存。
现在找到了一类特征用于构建分类器,和快速计算该类特征的方法。分类器是由一组特征构成的,而不是一个,如何找到一组有效的特征。
文章列举了前人的一些特征选取方法(此处就不列举了),它们虽然取得了一定的效果,但最终选出来的特征数量还是太多。文章将adaBoost算法用于特征选取(创新点),即每次训练的弱分类器的过程看做特征选取的过程,一次从162336个特征中选取一个特征(同时还包括了对应的门限值,极性,加权误差)。
adaboost算法就不详细介绍了,它的基本思想是训练一系列“弱”分类器,组成一个committee(即每个弱分类器都有投票权,但是权重不同,加权误差越小的弱分类器权重越大)。adaboost采用迭代训练方式,给定一个t阶committee,如何寻找第t+1个弱分类器和对应的权重,以最小化在一定分布下的训练样本的加权指数损失。这个优化过程可以转换为对训练样本的分布进行调整(即增大上一轮错误判断的样本的权重,减小正确判断的样本权重),在调整后的样本分布下寻找最小化加权0-1损失的弱分类器并计算对应的加权0-1损失。
可以利用adaboost找到一组特征构成分类器,使得该分类器有极高的准确率和召回率(这种分类器势必会有较大的计算量),这样会导致图像中的每一个子窗都享有同等的计算量,扫描一整幅图会有几十万甚至上百万子窗,总体计算量依然很大。实际上一幅图像中只有极少可能包含人脸的位置是我们感兴趣的,其他不包含人脸的子窗我们希望能够快速筛除,将更精细的计算用于包含人脸的子窗。
文章引入了attention-cascade的机制(注意力级联),即训练多个分类器进行级联,替代单一的分类器。结构如下图所示(文章[3]中的图)。
上图所示的分类器有三级,上一级的输出是下一级的输入,只有预测为正的样本才能传递给下一级,预测为负的样本直接舍弃。大部分非人脸子窗往往在前几级分类器就被舍弃,这样使得扫描每个子窗所需的平均计算量大大减小。
分类器是一级一级训练之后级联起来的,训练分类器时,整个级联分类器的假负率(fpr_overall)有一个训练目标(文章[1]中设置为10e-7),同时每一级有一对训练目标,即假正率和假负率。每级分类器训练的思想是在假负率极低的情况下(文章[1]中设置为0.005)尽量得到一个较低的假正率(文章中[1]中设置为0.5),即我们保证在正样本尽可能多的通过该级分类器的情况下尽量筛除更多的负样本。文章[3]通过一个松弛量来调节假正率和假负率。
下一级用到的训练数据是由所有的正样本和上一级输出的假正样本组成的,这样训练的好处是可以让处于级联后半部分的分类器“看到”更多负样本数据,缺点是训练后期假正样本很难获取,训练时间会比较长。
尽管我们获取了一个级联分类器,但依然不能保证对同一幅图中的一张人脸只会检测到一次(子窗相对人脸有所便宜或者缩放子窗大小都可能导致重复检测),如何消除重复检测,获得更好的检测效果。
文章[3]中说的较为简略,主要是针对检测框构建并查集,并对并查集中的候选框求平均得出最终的检测框。
文章[1]中是采用连通分量算法,计算每种大小检测框的置信度,根据置信度选取最终结果,但前提是检测器在图像中扫描的步进必须是1个像素,处理时间可能会比较长。
只能用于正脸检测,如果人脸朝屏幕内外或者在屏幕平面上旋转均有可能失效 在背景较亮,人脸较暗的情况下可能失效。 在有遮挡的情况下大概率失效。
提起人脸相似度在线测试,大家都知道,有人问ai与腾讯ai哪个准哪个好 比如人脸识别相似度?另外,还有人想问有没有可以测试两个人脸的相似度的软件?我是苹果手机!你知道这是怎么回事?其实paperpass相似度22%,知网的相似度会是多少,不知道能不能通过知网复写率小于15%检测,下面就一起来看看ai与腾讯ai哪个准哪个好 比如人脸识别相似度?希望能够帮助到大家!
扫一扫匹配明星脸。
没有这样的软件两张照片 在脸比对。
不确定。夫妻相测试免费。
因为paperpass跟知网收录的论文库是有差别的,有可能paperpass未收录的论文,在知网却被收录了,这种情况是很常见的,有很多同学在paperpass查重得到的数据是低于20%,而在知网上却大于60%,这些都是常事。
paperpass是以句子为单位,而且不能识别目录、标题、参考文献,会通通标红,并且的确会如你所说,出现你根本没有抄过的、无关的文章;知网是以段落为单位,目录、标题、参考文献可以自动识别。两者算法也不同。因此,paperpass的重复率一定是高于知网的。免费人工智能看相。
也就是说paperpass比知网严格。用paperpass测出来18%,学校用知网要求20%,肯定能过的。即使没有把参考文献贴进去。因为知网不会把参考文献作为抄袭率。
由于存在引注格式不统一、参考文献格式不规范、虚假引用等问题,PaperPass为了给用户提供最严格、最负责的检测结果,将不再区分“相似”和“引用”。PaperPass检测系统是在论文修改环节为用户提供修改依据的工具,系统所显示的相似部分(红字)是否属于正常引用将保留给用户自行审定。免费AI智能。
另外PaperPass也是全国的论文检测技术提供商,已经为众多的机构和检测系统提供技术方案。所以通过PaperPass的检测后,可以通过其它检测系统的检测。
实际上目前很多社交网站上,人脸识别技术已经有了雏形。比如在国内流行的和美国的Facebook上,用户自己为相册里的人物加上姓名,然后系统自动为同一相册内所有相同的人脸加上姓名。大多数玩社交网站的网民都十分喜欢这项服务。测试自己像哪个明星脸。
而在美国中,我们也可以经常看到这样的画面,最典型的就是《谍影重重》系列。中调查局为了追踪特工伯恩,不但可以通过系统进行人脸识别,还可以通过任何一个公共场所中的头进行人脸识别。测一测你和哪个明星最像。
这些技术早已不再是活在科幻片中的幻想,而是已经来到了每一个普通人的身边,而这项技术如果不加以限制,而是给每一个人,其后果是不堪设想的。
大部分以图片作为输入的搜索引擎,例如tineye(年上线)、搜狗识图(年上线)等,本质上是进行图片近似拷贝检测,即搜索看起来几乎完全一样的图片。年推出的识图也是如此。
在经历两年多的沉寂之后,识图开始向另一个方向探索。年1月的年会中,李彦宏特意提到识图:“以图搜图的准确率从20%提升到80%”。不过与之前相比,识图找到相似图片的能力似乎并未显著提升,那么改变从何而来?李彦宏把这种明显的提升归因于刚上线的人脸搜索。与之前的区别在于,如果用户给出一张图片,识图会判断里面是否出现人脸,如果有,识图在相似图片搜索之外,同时会全网寻找出现过的类似人像。新增加的技术简而言之,首先是人脸检测并提取出特征表达,随后再据此进行数据库对比,按照相似度排序返回结果。其实,人脸检测并不是新技术,相关研究已有三十年历史,然而直到去年底,才决定推动这一技术付诸实施。
以上就是与ai与腾讯ai哪个准哪个好 比如人脸识别相似度?相关内容,是关于ai与腾讯ai哪个准哪个好 比如人脸识别相似度?的分享。看完人脸相似度在线测试后,希望这对大家有所帮助!
随着图像处理技术的迅速发展,图像识别技术的应用领域越来越广泛。我整理了图像识别技术论文,欢迎阅读!
图像识别技术研究综述
摘要:随着图像处理技术的迅速发展,图像识别技术的应用领域越来越广泛。图像识别是利用计算机对图像进行处理、分析和理解,由于图像在成像时受到外部环境的影响,使得图像具有特殊性,复杂性。基于图像处理技术进一步探讨图像识别技术及其应用前景。
关键词:图像处理;图像识别;成像
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2013)10-2446-02
图像是客观景物在人脑中形成的影像,是人类最重要的信息源,它是通过各种观测系统从客观世界中获得,具有直观性和易理解性。随着计算机技术、多媒体技术、人工智能技术的迅速发展,图像处理技术的应用也越来越广泛,并在科学研究、教育管理、医疗卫生、军事等领域已取得的一定的成绩。图像处理正显著地改变着人们的生活方式和生产手段,比如人们可以借助于图像处理技术欣赏月球的景色、交通管理中的车牌照识别系统、机器人领域中的计算机视觉等,在这些应用中,都离不开图像处理和识别技术。图像处理是指用计算机对图像进行处理,着重强调图像与图像之间进行的交换,主要目标是对图像进行加工以改善图像的视觉效果并为后期的图像识别大基础[1]。图像识别是利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对像的技术。但是由于获取的图像本事具有复杂性和特殊性,使得图像处理和识别技术成为研究热点。
1 图像处理技术
图像处理(image processing)利用计算机对图像进行分析,以达到所需的结果。图像处理可分为模拟图像处理和数字图像图像处理,而图像处理一般指数字图像处理。这种处理大多数是依赖于软件实现的。其目的是去除干扰、噪声,将原始图像编程适于计算机进行特征提取的形式,主要包括图像采样、图像增强、图像复原、图像编码与压缩和图像分割。
1)图像采集,图像采集是数字图像数据提取的主要方式。数字图像主要借助于数字摄像机、扫描仪、数码相机等设备经过采样数字化得到的图像,也包括一些动态图像,并可以将其转为数字图像,和文字、图形、声音一起存储在计算机内,显示在计算机的屏幕上。图像的提取是将一个图像变换为适合计算机处理的形式的第一步。
2)图像增强,图像在成像、采集、传输、复制等过程中图像的质量或多或少会造成一定的退化,数字化后的图像视觉效果不是十分满意。为了突出图像中感兴趣的部分,使图像的主体结构更加明确,必须对图像进行改善,即图像增强。通过图像增强,以减少图像中的图像的噪声,改变原来图像的亮度、色彩分布、对比度等参数。图像增强提高了图像的清晰度、图像的质量,使图像中的物体的轮廓更加清晰,细节更加明显。图像增强不考虑图像降质的原因,增强后的图像更加赏欣悦目,为后期的图像分析和图像理解奠定基础。
3)图像复原,图像复原也称图像恢复,由于在获取图像时环境噪声的影响、运动造成的图像模糊、光线的强弱等原因使得图像模糊,为了提取比较清晰的图像需要对图像进行恢复,图像恢复主要采用滤波方法,从降质的图像恢复原始图。图像复原的另一种特殊技术是图像重建,该技术是从物体横剖面的一组投影数据建立图像。
4)图像编码与压缩,数字图像的显著特点是数据量庞大,需要占用相当大的存储空间。但基于计算机的网络带宽和的大容量存储器无法进行数据图像的处理、存储、传输。为了能快速方便地在网络环境下传输图像或视频,那么必须对图像进行编码和压缩。目前,图像压缩编码已形成国际标准,如比较著名的静态图像压缩标准JPEG,该标准主要针对图像的分辨率、彩色图像和灰度图像,适用于网络传输的数码相片、彩色照片等方面。由于视频可以被看作是一幅幅不同的但有紧密相关的静态图像的时间序列,因此动态视频的单帧图像压缩可以应用静态图像的压缩标准。图像编码压缩技术可以减少图像的冗余数据量和存储器容量、提高图像传输速度、缩短处理时间。
5)图像分割技术,图像分割是把图像分成一些互不重叠而又具有各自特征的子区域,每一区域是像素的一个连续集,这里的特性可以是图像的颜色、形状、灰度和纹理等。图像分割根据目标与背景的先验知识将图像表示为物理上有意义的连通区域的集合。即对图像中的目标、背景进行标记、定位,然后把目标从背景中分离出来。目前,图像分割的方法主要有基于区域特征的分割方法、基于相关匹配的分割方法和基于边界特征的分割方法[2]。由于采集图像时会受到各种条件的影响会是图像变的模糊、噪声干扰,使得图像分割是会遇到困难。在实际的图像中需根据景物条件的不同选择适合的图像分割方法。图像分割为进一步的图像识别、分析和理解奠定了基础。
2 图像识别技术
图像识别是通过存储的信息(记忆中存储的信息)与当前的信息(当时进入感官的信息)进行比较实现对图像的识别[3]。前提是图像描述,描述是用数字或者符号表示图像或景物中各个目标的相关特征,甚至目标之间的关系,最终得到的是目标特征以及它们之间的关系的抽象表达。图像识别技术对图像中个性特征进行提取时,可以采用模板匹配模型。在某些具体的应用中,图像识别除了要给出被识别对象是什么物体外,还需要给出物体所处的位置和姿态以引导计算初工作。目前,图像识别技术已广泛应用于多个领域,如生物医学、卫星遥感、机器人视觉、货物检测、目标跟踪、自主车导航、公安、银行、交通、军事、电子商务和多媒体网络通信等。主要识别技术有:
2.1 指纹识别
指纹识别是生物识别技术中一种最实用、最可靠和价格便宜的识别手段,主要应用于身份验证。指纹识别是生物特征的一个部分,它具有不变性:一个人的指纹是终身不变的;唯一性:几乎没有两个完全相同的指纹[3]。一个指纹识别系统主要由指纹取像、预处理与特征提取、比对、数据库管理组成。目前,指纹识别技术与我们的现实生活紧密相关,如信用卡、医疗卡、考勤卡、储蓄卡、驾驶证、准考证等。
2.2 人脸识别 目前大多数人脸识别系统使用可见光或红外图像进行人脸识别,可见光图像识别性能很容易受到光照变化的影响。在户外光照条件不均匀的情况下,其正确识别率会大大降低。而红外图像进行人脸识别时可以克服昏暗光照条件变化影响,但由于红外线不能穿透玻璃,如果待识别的对象戴有眼镜,那么在图像识别时,眼部信息全部丢失,将严重影响人脸识别的性能[4]。
2.3 文字识别
文字识别是将模式识别、文字处理、人工智能集与一体的新技术,可以自动地把文字和其他信息分离出来,通过智能识别后输入计算机,用于代替人工的输入。文字识别技术可以将纸质的文档转换为电子文档,如银行票据、文稿、各类公式和符号等自动录入,可以提供文字的处理效率,有助于查询、修改、保存和传播。文字识别方法主要有结构统计模式识别、结构模式识别和人工神经网络[5]。由于文字的数量庞大、结构复杂、字体字形变化多样,使得文字识别技术的研究遇到一定的阻碍。
3 结束语
人类在识别现实世界中的各种事物或复杂的环境是一件轻而易举的事,但对于计算机来讲进行复杂的图像识别是非常困难的[6]。在环境较为简单的情况下,图像识别技术取得了一定的成功,但在复杂的环境下,仍面临着许多问题:如在图像识别过程中的图像分割算法之间的性能优越性比较没有特定的标准,以及算法本身存在一定的局限性,这使得图像识别的最终结果不十分精确等。
参考文献:
[1] 胡爱明,周孝宽.车牌图像的快速匹配识别方法[J].计算机工程与应用,2003,39(7):90—91.
[2] 胡学龙.数字图像处理[M].北京:电子工业出版社,2011.
[3] 范立南,韩晓微,张广渊.图像处理与模式识别[M].北京:科学出版社,2007.
[4] 晓慧,刘志镜.基于脸部和步态特征融合的身份识别[J].计算机应用,2009,1(29):8.
[5] 陈良育,曾振柄,张问银.基于图形理解的汉子构型自动分析系统[J].计算机应用,2005,25(7):1629-1631.
[6] Sanderson C,Paliwal K K.Information Fusion and Person Verification Using Speech & Face Information[C].IDIAP-RR 02-33,Martigny,Swizerland,2002.
点击下页还有更多>>>图像识别技术论文
URL: 论文pdf Google出品。亚毫秒级的移动端人脸检测算法。移动端可达200~1000+FPS速度。主要以下改进: 在深度可分离卷积中,计算量主要为point-wise部分,增加depth-wise部分卷积核大小并不会明显增加成本。因此本文在depth-wise部分采用了5x5的卷积核,已获得更大的感受野,故此可以降低在层数上的需求。 此外,启发于mobilenetV2,本文设计了一个先升后降的double BlazeBlock。BlazeBlock适用于浅层,double BlazeBlock适用于深层。 16x16的anchor是一样的,但本文将8x8,4x4和2x2的2个anchor替换到8x8的6个anchor。此外强制限制人脸的长宽为1:1。 由于最后一层feature map较大(相对于ssd),导致预测结果会较多,在连续帧预测过程中,nms会变导致人脸框变得更加抖动。本文在原始边界框的回归参数估计变为其与重叠概率的加权平均。这基本没有带来预测时间上的消耗,但在提升了10%的性能。 效果好速度快的方法想不想要?
姓名:张钰 学号:21011210154 学院:通信工程学院 【嵌牛导读】Frequency-aware Discriminative Feature Learning Supervised by Single-Center Loss for Face Forgery Detection论文阅读笔记 【嵌牛鼻子】Deepfake人脸检测方法,基于单中心损失监督的频率感知鉴别特征学习框架FDFL,将度量学习和自适应频率特征学习应用于人脸伪造检测,实现SOTA性能 【嵌牛提问】本文对于伪造人脸检测的优势在哪里体现 【嵌牛正文】 转自:
llery images是用于训练还是测确比较多
Viola-jones人脸检测算法是一种基于滑动窗口的目标检测算法,但它却克服了滑动窗口检测带来的低效问题,可以用于实时人脸检测,主要归功于以下三点:
我参考论文[1]实现了Viola Jones中提到的attention cascade检测框架,此处是 github传送门 。
下面进一步详细介绍整个检测原理。
基于滑窗的目标检测基本原理很简单,首先构建一个classifier(分类器),以人脸检测为例,分类器的工作是判断给定大小的图像的是否为人脸,用该分类器从左至右从上到下扫描整幅图像,扫描获取的部分图像称为子窗(文章中子窗大小为24x24像素),当分类器判断子窗是人脸时,即完成了人脸检测。
这样处理有个问题,如果图像中包含的人脸变大了,此时采用固定大小的子窗就无法进行检测。通常有两种解决方法,1. 采用image-pyramid(图像金字塔),也就是通过resize获得多种不同大小图像并堆叠在一起,用固定大小分类器同时对所有图像进行扫描;2. 采用不同大小的分类器进行扫描。文章中用到的是第二种方法,尽管如此,虽然避免了调整图像大小带来的计算开销,但不同大小的分类器意味着有更多子窗需要进行处理。
如何构建一个足够快的分类器来对每个子窗进行快速判断。
分类器的构建有两种方式,一种是pixel-based(基于像素),另一种是feature-based(基于特征)。当把神经网络作为图像分类器时,输入是图像的像素值,即基于像素的分类器。用图像像素作为输入不包含任何和待分类目标有关的特定信息,往往训练这种分类器需要大量数据,并且分类过程较慢。基于特征的分类器就是先针对图像进行特征提取(HOG特征,SIFT特征等),再利用获取的特征进行分类。这种分类器不需要大量训练数据,且计算量一般会在特征计算部分,相对较小。
文章采用的是基于特征的分类器,选取了一种较为简单的特征即haar-like特征。利用矩形个数对可以将haar-like特征分为三类,分别由两个,三个,和四个 大小相同 的矩形组成。全部列举出来可以分为以下(a)(b)(c)(d)(e)五类(注意是五类不是五个,具体有多少个haar-like特征是由子窗大小决定的)。如下图所示(文章[1]中的图)。
当子窗大小给定后,我们可以用五个参数唯一确定 一个 haar-like特征,即特征种类(a/b/c/d/e),左上角x轴坐标,左上角y轴坐标,矩形的长,矩形的宽。对应的特征值等于位于白色矩形框中像素值总和减去位于黑色矩形框中的像素值总和。文章中用到的子窗大小为24x24像素,可以计算出来总共有162336个特征(把在子窗中所有可能位置和可能大小的特征全部列举出来)。利用haar-like特征进行分类只需两步:
haar-like特征有两个优点,第一是它是scale-invariant(不随图片大小而改变)的,第二是可以通过积分图像快速计算。简单的说下第一点的含义,例如我们用24x24像素的训练样本训练获取一组haar-like特征和对应的门限值,当对图像进行扫描时,子窗大小调整为SxS像素,此时只需将特征中的矩形大小按同样比例进行缩放(门限值同样需要缩放),计算所得的特征值依然是有效的。 积分图像是受卷积的微分性质启发而定义一种数据结构。积分图像定义: 其中 为积分图像, 为原图像。积分图像中 位置处的像素值等于原图中位于 的左侧和上方的所有像素值之和。有了积分图像我们就可以快速计算haar-like特征,以特征(a)为例,如下图所示。
S1到S6是积分图像在这六个顶点上的值。该特征值等于位于A中的像素总和减去位于B中的像素总和,而A中像素总和等于S5+S1-S2-S4,B中像素总和等于S6+S2-S3-S5,并且无论矩形多大,我们总能在固定时间内计算出特征值(6次索引操作和少量的加法乘法计算)。积分图像只需计算一次后续可以一直使用,事实上在算法实现时,我们只需保存样本的积分图像,原图像反而不用保存。
现在找到了一类特征用于构建分类器,和快速计算该类特征的方法。分类器是由一组特征构成的,而不是一个,如何找到一组有效的特征。
文章列举了前人的一些特征选取方法(此处就不列举了),它们虽然取得了一定的效果,但最终选出来的特征数量还是太多。文章将adaBoost算法用于特征选取(创新点),即每次训练的弱分类器的过程看做特征选取的过程,一次从162336个特征中选取一个特征(同时还包括了对应的门限值,极性,加权误差)。
adaboost算法就不详细介绍了,它的基本思想是训练一系列“弱”分类器,组成一个committee(即每个弱分类器都有投票权,但是权重不同,加权误差越小的弱分类器权重越大)。adaboost采用迭代训练方式,给定一个t阶committee,如何寻找第t+1个弱分类器和对应的权重,以最小化在一定分布下的训练样本的加权指数损失。这个优化过程可以转换为对训练样本的分布进行调整(即增大上一轮错误判断的样本的权重,减小正确判断的样本权重),在调整后的样本分布下寻找最小化加权0-1损失的弱分类器并计算对应的加权0-1损失。
可以利用adaboost找到一组特征构成分类器,使得该分类器有极高的准确率和召回率(这种分类器势必会有较大的计算量),这样会导致图像中的每一个子窗都享有同等的计算量,扫描一整幅图会有几十万甚至上百万子窗,总体计算量依然很大。实际上一幅图像中只有极少可能包含人脸的位置是我们感兴趣的,其他不包含人脸的子窗我们希望能够快速筛除,将更精细的计算用于包含人脸的子窗。
文章引入了attention-cascade的机制(注意力级联),即训练多个分类器进行级联,替代单一的分类器。结构如下图所示(文章[3]中的图)。
上图所示的分类器有三级,上一级的输出是下一级的输入,只有预测为正的样本才能传递给下一级,预测为负的样本直接舍弃。大部分非人脸子窗往往在前几级分类器就被舍弃,这样使得扫描每个子窗所需的平均计算量大大减小。
分类器是一级一级训练之后级联起来的,训练分类器时,整个级联分类器的假负率(fpr_overall)有一个训练目标(文章[1]中设置为10e-7),同时每一级有一对训练目标,即假正率和假负率。每级分类器训练的思想是在假负率极低的情况下(文章[1]中设置为0.005)尽量得到一个较低的假正率(文章中[1]中设置为0.5),即我们保证在正样本尽可能多的通过该级分类器的情况下尽量筛除更多的负样本。文章[3]通过一个松弛量来调节假正率和假负率。
下一级用到的训练数据是由所有的正样本和上一级输出的假正样本组成的,这样训练的好处是可以让处于级联后半部分的分类器“看到”更多负样本数据,缺点是训练后期假正样本很难获取,训练时间会比较长。
尽管我们获取了一个级联分类器,但依然不能保证对同一幅图中的一张人脸只会检测到一次(子窗相对人脸有所便宜或者缩放子窗大小都可能导致重复检测),如何消除重复检测,获得更好的检测效果。
文章[3]中说的较为简略,主要是针对检测框构建并查集,并对并查集中的候选框求平均得出最终的检测框。
文章[1]中是采用连通分量算法,计算每种大小检测框的置信度,根据置信度选取最终结果,但前提是检测器在图像中扫描的步进必须是1个像素,处理时间可能会比较长。
只能用于正脸检测,如果人脸朝屏幕内外或者在屏幕平面上旋转均有可能失效 在背景较亮,人脸较暗的情况下可能失效。 在有遮挡的情况下大概率失效。
摘 要 人体识别是计算机视觉领域的一大类热点问题,其研究内容涵盖了人体的监测与跟踪、手势识别、动作识别、人脸识别、性别识别和行为与事件识别等,有着非常广泛的应用价值。随机森林以它自身固有的特点和优良的分类效果在众多的机器学习算法中脱颖而出。随机森林算法的实质是一种树预测器的组合,其中每一棵树都依赖于一个随机向量,森林中的所有的向量都是独立同分布的。本文简单介绍了随机森林的原理,并对近几年来随机森林在姿势识别和人脸识别中的应用进行讨论。 1.人体识别概述 人体识别是计算机视觉领域的一大类热点问题,其研究内容涵盖了人体的监测与跟踪、手势识别、动作识别、人脸识别、性别识别和行为与事件识别等。其研究方法几乎囊括了所有的模式识别问题的理论与技术,例如统计理论,变换理论,上下文相关性,分类与聚类,机器学习,模板匹配,滤波等。人体识别有着非常广泛的应用价值。 绝大多数人脸识别算法和人脸表情分析算法在提取人脸特征之前,需要根据人脸关键点的位置(如眼角,嘴角)进行人脸的几何归一化处理。即使在已知人脸粗略位置的情况下,人脸关键点精确定位仍然是一个很困难的问题,这主要由外界干扰和人脸本身的形变造成。 当前比较流行的算法有:基于启发式规则的方法、主成分分析(PCA)、独立元分析(ICA)、基于K-L 变换、弹性图匹配等。 2.随机森林综述 随机森林顾名思义,使用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的死后,就让森林的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类能被选择最多,就预测这个样本为那一类。 随机森林是一种统计学习理论,其随机有两个方面:首先是在训练的每一轮中,都是对原始样本集有放回的抽取固定数目的样本点,形成k个互不相同的样本集。第二点是:对于每一个决策树的建立是从总的属性中随机抽取一定量的属性作分裂属性集,这样对于k个树分类器均是不相同的。由随机生成的k个决策树组成了随机森林。 对于每一个决策树来讲,其分裂属性是不断的选取具有最大信息增益的属性进行排列。整个随机森林建立后,最终的分类标准采用投票机制得到可能性最高的结果。 下图是随机森林构建的过程: 图1 随机森林构建过程 3.随机森林在人体识别中的应用 3.1 随机森林应用于姿势识别 以[1]一文来讨论,论文中所涉及到的人体识别过程主要分为两步,首先是,身体部位标记:对于从单张景深图像中对人体进行分段,并标记出关键节点。之后进行身体关节定位,将标记的各个人体部分重新映射到三维空间中,对关键节点形成高可靠的空间定位。 图2 深度图像-身体部位标记-关节投影 文的最主要贡献在于将姿势识别的问题转化成了物体识别的问题,通过对身体不同部位的空间位置的确定来实现,做到了低计算消耗和高精确度。在身体部位标记的过程中,将问题转化成了对每个像素的分类问题,对于每个像素点,从景深的角度来确定该点的局域梯度特征。该特征是点特征与梯度特征的良好结合。 举个例子,对于不同点的相同属性值的判别,如下图,图a中的两个测量点的像素偏移间均具有较大的景深差,而图b中的景深差则明显很小。由此看出,不同位置像素点的特征值是有明显差别的,这就是分类的基础。 图3 景深图像特质示例 文中对于决策树的分裂属性的选择来说。由于某两个像素点、某些图像特征选取的随意性,将形成大量的备选划分形式,选择对于所有抽样像素对于不同的分裂属性划分前后的信息熵增益进行比较,选取最大的一组ψ=(θ, τ)作为当前分裂节点。(信息增益与该图像块最终是否正确地分类相关,即图像块归属于正确的关键特征点区域的概率。) 图4 决策时分类说明 决策树的建立后,某个叶子节点归属于特定关键特征点区域的概率可以根据训练图像最终分类的情况统计得到,这就是随机森林在实际检测特征点时的最重要依据。 在人体关节分类中,我们由形成的决策森林,来对每一个像素点的具体关节属性进行判断,并进行颜色分类。随机森林这种基于大量样本统计的方法能够对由于光照、变性等造成的影响,实时地解决关键特征点定位的问题。 如图所示,是对于景深图像处理后的结果展示。 图5 姿势识别处理结果 应该这样说,这篇文章在算法的层面对随机森林没有太大的贡献。在划分函数的形式上很简单。这个团队值得称道的地方是通过计算机图形学造出了大量的不同体型不同姿势的各种人体图像,用作训练数据,这也是成为2011年CVPR Best Paper的重要原因。正是因为论文的成果运用于Kinect,在工业界有着巨大的作用,落实到了商用的硬件平台上,推动了随机森林在计算机视觉、多媒体处理上的热潮。 3.2 随机森林应用于人脸识别 基于回归森林的脸部特征检测通过分析脸部图像块来定位人脸的关键特征点,在此基础上条件回归森林方法考虑了全局的脸部性质。对于[2]进行分析,这篇论文是2012年CVPR上的论文,本文考虑的是脸部朝向作为全局性质。其主要描述的问题是如何利用条件随机森林,来确定面部10个关键特征点的位置。与之前不同的是,在随机森林的基础上,加入了面部朝向的条件约束。 图6 脸部10个特征点 对于面部特征标记的问题转化成了对大量图像块的分类问题。类似于人体识别中的局域梯度特征识别。本文中,对于每一个图像块来说,从灰度值、光照补偿、相位变换等图像特征,以及该图像块中心与各个特征点的距离来判断图像块的位置特征。在决策树的分裂属性确定过程,依然使用“最大信息熵增益”原则。 图7 条件随机森林算法说明 文中提出了更进一步基于条件随机森林的分类方法,即通过设定脸部朝向的约束对决策树分类,在特征检测阶段能够根据脸部朝向选择与之相关的决策树进行回归,提高准确率和降低消耗。此论文还对条件随机森林,即如何通过脸部朝向对决策进行分类进行了说明,但这与随机森林算法没有太大关系,这里就不再继续讨论了。随机森林这种基于大量样本统计的方法能够对由于光照、变性等造成的影响,实时地解决关键特征点定位的问题。 另一篇文章[3]对于脸部特征标记,提出了精确度更高、成本更低的方法。即,基于结构化输出的随机森林的特征标记方式。文中将面部划分为20个特征点,对于各个特征点来说,不仅有独立的图像块分类标记,还加入了例如,点4,对于其他嘴唇特征点3,18,19的依赖关系的判断。这样的方法使特征点标记准确率大大增加。 该方法依然是使用随机森林的方法,有所不同的是引入了如式中所示的与依赖节点之间的关系。对于决策树的建立依然是依赖信息熵增益原则来决定,叶子节点不仅能得到特征的独立划分还会得到该特征对依赖特征的贡献,最终特征节点的判断会综合原始投票及空间约束。 图8 脸部特征标记 图9 决策树依赖关系 例如当对下图中人脸特征点进行分类时,使用简单的随机森林方法,经过判断会将各个点进行标注,可以看到 红色的点,标注出的鼻子特征。如果利用依赖节点进行判断,鼻子的点会被局限在其他鼻子特征点的周围,进行叠加后,得到了这个结果。显然,对于此节点的判断,利用结构输出的方式,准确度更高了。 图10 结构化输出结果 4.随机森林总结 大量的理论和实证研究都证明了RF具有很高的预测准确率,对异常值和噪声具有很好的容忍度,且不容易出现过拟合。可以说,RF是一种自然的非线性建模工具,是目前数据挖掘算法最热门的前沿研究领域之一。具体来说,它有以下优点: 1.通过对许多分类器进行组合,它可以产生高准确度的分类器; 2.它可以处理大量的输入变量; 3.它可以在决定类别时,评估变量的重要性; 4.在建造森林时,它可以在内部对于一般化后的误差产生不偏差的估计; 5.它包含一个好方法可以估计遗失的资料,并且,如果有很大一部分的资料遗失,仍可以维持准确度。 6.它提供一个实验方法,可以去侦测变量之间的相互作用; 7.学习过程是很快速的; 8.对异常值和噪声具有很好的容忍度,且不容易出现过拟合; 随机森林的缺点: 1.对于有不同级别的属性的数据,级别划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的; 2.单棵决策树的预测效果很差:由于随机选择属性,使得单棵决策树的预测效果很差。 参考文献: [1] Shotton, J.; Fitzgibbon, A.; Cook, M.; Sharp, T.; Finocchio, M.; Moore, R.; Kipman, A.; Blake, A., “Real-time human pose recognition in parts from single depth images,”Computer Vision and Pattern Recognition (CVPR), 2011 IEEE Conference on , vol., no., pp.1297,1304, 20-25 June 2011 [2] Dantone M, Gall J, Fanelli G, et al. Real-time facial feature detection using conditional regression forests[C]//Computer Vision and Pattern Recognition (CVPR), 2012 IEEE Conference on. IEEE, 2012: 2578-2585. [3] Heng Yang, Ioannis Patras, “Face Parts Localization Using Structured-output Regression Forests”, ACCV2012, Dajeon, Korea. 本文转自:,仅供学习交流
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的这些科学计算库是必不可少的,这里我把常用的科学计算库的安装也涵盖在内了,已经安装过这些库的同学就可以忽略了。
我的环境是Ubuntu14.04:
大家都知道Ubuntu是自带python2.7的,而且很多Ubuntu系统软件都是基于python2.7的,有一次我系统的python版本乱了,我脑残的想把python2.7卸载了重装,然后……好像是提醒我要卸载几千个软件来着,没看好直接回车了,等我反应过来Ctrl + C 的时候系统已经没了一半了…
所以我发现想要搞崩系统,这句话比rm -rf 还给力…
sudo apt-get remove python2.71
首先安装两个python第三方库的下载安装工具,ubuntu14.04好像是预装了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上的方法试了个遍,才最终成功编译出来并且导入,不过听说18.18更新之后有了setup.py,那真是极好的,18.18我没有亲自配过也不能乱说,这里给大家分享我配置18.17的过程吧:
1.首先必须安装libboost,不然是不能使用.so库的
sudo apt-get install libboost-python-dev cmake1
2.到Dlib的官网上下载dlib,会下载下来一个压缩包,里面有C++版的dlib库以及例子文档,Python dlib库的代码例子等等
我使用的版本是dlib-18.17,大家也可以在我这里下载:
之后进入python_examples下使用bat文件进行编译,编译需要先安装libboost-python-dev和cmake
cd to dlib-18.17/python_examples./compile_dlib_python_module.bat 123
之后会得到一个dlib.so,复制到dist-packages目录下即可使用
这里大家也可以直接用我编译好的.so库,但是也必须安装libboost才可以,不然python是不能调用so库的,下载地址:
将.so复制到dist-packages目录下
sudo cp dlib.so /usr/local/lib/python2.7/dist-packages/1
最新的dlib18.18好像就没有这个bat文件了,取而代之的是一个setup文件,那么安装起来应该就没有这么麻烦了,大家可以去直接安装18.18,也可以直接下载复制我的.so库,这两种方法应该都不麻烦~
有时候还会需要下面这两个库,建议大家一并安装一下
9.安装skimage
sudo apt-get install python-skimage1
10.安装imtools
sudo easy_install imtools1
Dlib face landmarks Demo
环境配置结束之后,我们首先看一下dlib提供的示例程序
1.人脸检测
dlib-18.17/python_examples/face_detector.py 源程序:
#!/usr/bin/python# The contents of this file are in the public domain. See LICENSE_FOR_EXAMPLE_PROGRAMS.txt## 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:# ./face_detector.py ../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 train_object_detector.py example# program. ### COMPILING THE DLIB PYTHON INTERFACE# Dlib comes with a compiled python interface for python 2.7 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 compile_dlib_python_module.bat. 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 = dlib.get_frontal_face_detector()win = dlib.image_window()print("a");for f in sys.argv[1:]:print("a");print("Processing file: {}".format(f))img = io.imread(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# faces.dets = 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, d.left(), d.top(), d.right(), d.bottom()))win.clear_overlay()win.set_image(img)win.add_overlay(dets)dlib.hit_enter_to_continue()# 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 orientations.if (len(sys.argv[1:]) > 0):img = io.imread(sys.argv[1])dets, scores, idx = detector.run(img, 1) for i, d in enumerate(dets):print("Detection {}, score: {}, face_type:{}".format(d, scores[i], idx[i]))123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
我把源代码精简了一下,加了一下注释: face_detector0.1.py
# -*- coding: utf-8 -*-import sysimport dlibfrom skimage import io#使用dlib自带的frontal_face_detector作为我们的特征提取器detector = dlib.get_frontal_face_detector()#使用dlib提供的图片窗口win = dlib.image_window()#sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始向后依次获取图片路径for f in sys.argv[1:]: #输出目前处理的图片地址print("Processing file: {}".format(f)) #使用skimage的io读取图片img = io.imread(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, d.left(), d.top(), d.right(), d.bottom())) #也可以获取比较全面的信息,如获取人脸与detector的匹配程度dets, scores, idx = detector.run(img, 1)for i, d in enumerate(dets):print("Detection {}, dets{},score: {}, face_type:{}".format( i, d, scores[i], idx[i])) #绘制图片(dlib的ui库可以直接绘制dets)win.set_image(img)win.add_overlay(dets) #等待点击dlib.hit_enter_to_continue()1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
分别测试了一个人脸的和多个人脸的,以下是运行结果:
运行的时候把图片文件路径加到后面就好了
python face_detector0.1.py ./data/3.jpg12
一张脸的:
两张脸的:
这里可以看出侧脸与detector的匹配度要比正脸小的很多
2.人脸关键点提取
人脸检测我们使用了dlib自带的人脸检测器(detector),关键点提取需要一个特征提取器(predictor),为了构建特征提取器,预训练模型必不可少。
除了自行进行训练外,还可以使用官方提供的一个模型。该模型可从dlib sourceforge库下载:
arks.dat.bz2
也可以从我的连接下载:
这个库支持68个关键点的提取,一般来说也够用了,如果需要更多的特征点就要自己去训练了。
dlib-18.17/python_examples/face_landmark_detection.py 源程序:
#!/usr/bin/python# The contents of this file are in the public domain. See LICENSE_FOR_EXAMPLE_PROGRAMS.txt## 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
dlib的安装很头疼我自己折腾了好几星期才成功 要讲的话很多所以写在了word里
链接: