使用机器学习进行面部检测的制作方法

文档序号:10694091阅读:183来源:国知局
使用机器学习进行面部检测的制作方法
【专利摘要】公开的面部检测系统(和方法)基于卷积神经网络(CNN)的结构。一个方面涉及一种用于自动地训练用于面部检测的CNN的方法。通过从面部图像获取附加的面部图像来执行训练,使得平衡数量的面部图像和非面部图像被用于训练。还通过根据自动停止准则自适应地改变阶段的训练的数量来执行训练。另一个方面涉及一种用于通过集成不同的尺度(即,不同的图像程度)的数据以便更好地使用每个尺度的数据来执行图像检测的系统。系统可以包括使用在本文公开的方法自动地训练的CNN。
【专利说明】
使用机器学习进行面部检测
技术领域
[0001] 本发明一般地涉及图像处理,并且更具体地涉及使用机器学习的对象检测。
【背景技术】
[0002] 面部检测系统对数字图像或视频帧执行图像处理以自动地识别出人。在一个方法 中,面部检测系统将图像分类为包含面部的正样本(positive)图像和不包含任何面部的负 样本(negative)图像。面部检测系统可以训练用于检测面部的神经网络并且将面部从背景 分离。通过将面部从背景分离,面部检测系统可以确定图像是否包含面部。良好的面部检测 系统应当具有低比率的假正样本检测(即,将负样本图像错误地检测为正样本图像)和高比 率的真正样本检测(即,应当检测到图像中的所有面部)。
[0003] 因为可用于训练的正样本图像和负样本图像的数量典型地不平衡,所以面部检测 仍然具有挑战性。例如,与正样本图像相比,可能存在多得多的负样本图像,并且可能通过 具有太多负样本图像的有偏向性的方式来训练神经网络。结果,利用不平衡数量的正样本 和负样本所训练的神经网络可能因高假正样本检测率或低真正样本检测率而遭遇面部检 测方面的低准确度。
[0004] 因为面部容貌可能是无规律的而具有大的变化,所以面部检测还仍然具有挑战 性。例如,由于主体具有变化的姿态或表情,因此面部可能是变形的。此外,可能由于诸如光 照条件之类的外部环境、咬合等使面部发生变形。结果,神经网络可能无法从背景中区分出 面部并且导致了高假正样本检测率。
[0005] 因而,需要好的方法来进行准确的面部检测以及其它对象的检测。

【发明内容】

[0006] 本发明通过采用用于检测例如面部的对象的框架来克服现有技术的限制。框架基 于卷积神经网络(CNN)的结构。一个方面涉及一种用于自动地训练用于面部检测的CNN的方 法。另一个方面涉及一种用于通过集成不同尺度(scale)(即,图像尺寸)的数据以便更好地 使用每个尺度的数据来执行面部检测的系统。系统可以包括使用在本文公开的方法自动地 训练的CNN。
[0007] 在一个方面中,使用具有一定数量的包含面部的图像("面部图像"或"正样本图 像")以及明显更大数量的没有面部的图像("非面部图像"或"负样本图像")的池来训练 CNN。然而,并不是平等地使用池中的所有图像。相反,从池中获取的平衡数量(即,大致相等 数量)的面部图像和非面部图像被用于进行训练。
[0008] 在一种实现方式中,按阶段执行训练。各阶段可以包含用于不同阶段的不同训练 集合。训练集合可以具有大致相等数量的从池中的图像获取的面部图像和非面部图像。可 以通过包括在较早阶段中是假正样本的非面部图像来选择用于阶段的训练集合中的非面 部图像。
[0009] 优选地,训练继续,直到满足预先确定的条件为止。在一个方面中,用于阶段的训 练继续,直到在预先确定的持续时间中不能再提高验证成本为止。验证成本的一个测量是 对单独的验证数据集合的成功率的负对数似然。在另一个方面中,可以训练附加的阶段,直 到用于最近阶段的假正样本的数量下降到低于假正样本的阈值数量。
[0010]在一个方法中,通过修改池中的面部图像来获取训练集合中的面部图像。如果用 于阶段的训练集合包括明显更大数量的非面部图像,可以生成附加的面部图像,使得该阶 段具有大致相等数量的面部图像和非面部图像。可以例如通过将面部图像进行旋转、模糊、 镜像或扭曲来获取附加的面部图像。
[0011]在一个方法中,使用双尺度CNN来执行面部检测。双尺度CNN使得能够以两个不同 的尺度(即,图像的尺寸)进行数据的集成。在一个结构中,双尺度CNN包括两个CNN。每个CNN 确定图像是否包含面部、但是这基于图像内的不同尺寸区域而进行。优选地,使用较大尺寸 区域的CNN还比另一个CNN多包括至少一个卷积层。只有两个CNN都指示图像包含面部,双尺 度CNN的输出才可以指示图像包含面部。
[0012] 在一种实现方式中,双尺度CNN采用从图像产生特征块集合的公共CNN。在公共CNN 后面的是两个CNN,这两者都使用特征块。例如,一个CNN可以使用整个特征块集合作为输 入,并且另一个CNN可以使用特征块集合的内部区域作为输入。
[0013] 其它方面包括与上文有关的组件、设备、系统、改善、方法、处理、应用和其它技术。
【附图说明】
[0014] 本发明具有在结合附图时根据本发明的以下详细描述和所附权利要求将更易于 显而易见的其它优点和特征,在附图中:
[0015] 图1是面部检测系统的简图。
[0016] 图2是用于训练卷积神经网络(CNN)并且使用CNN执行面部检测的总体框架的图。 [0017]图3是在阶段中训练CNN的方法的流程图。
[0018] 图4是根据实施例的、使用自动阶段训练来训练CNN的示例过程。
[0019] 图5是双尺度CNN的示例结构的图。
[0020] 图6是检测面部的方法的流程图。
[0021]各图描绘本发明的实施例仅仅是为了说明的目的。本领域技术人员根据以下讨论 将容易地意识到,在不背离本文所描述的本发明的原理的情况下,可以采用本文所说明的 结构和方法的替换实施例。
【具体实施方式】
[0022]附图和以下描述仅仅通过说明的方式来提及优选的实施例。应当注意到,根据以 下讨论,将会容易地把在本文公开的结构和方法的替换实施例承认为在不背离权利要求所 要求保护的原理的情况下可以采用的可行的替换。
[0023]所公开的面部的检测系统(和方法)基于卷积神经网络(CNN)的结构。在一个方法 中,使用自动阶段训练来训练CNN。自动阶段训练根据包含一定数量的面部图像和明显更大 数量的负样本(即,非面部)图像的池来训练CNN。自动阶段训练可以获取附加的面部图像以 平衡面部图像和非面部图像的数量。
[0024]在一种实现方式中,面部检测基于双尺度CNN来确定图像是否包含面部。双尺度 CNN包括两个CNN以利用不同尺度(即,不同的图像尺寸)中的信息。例如,第一CNN基于图像 内的预先确定尺寸的第一区域来确定图像是否包含面部,并且第二CNN基于图像内的不同 的预先确定尺寸的第二区域来确定图像是否包含面部。只有第一 CNN和第二CNN两者都指示 图像包含面部,双尺度CNN才指示该图像包含面部。
[0025] 面部检测概述
[0026] 图1是根据一个实施例的面部检测系统100的简图。面部检测系统100接收输入图 像110并且确定输入图像是否包含面部。面部检测系统100生成用于指示输入图像110是面 部图像还是非面部图像的输出150。
[0027] 面部检测系统100包括双尺度CNN 120、训练模块130和处理器140。双尺度CNN 120 使用神经网络执行面部检测。训练模块130训练双尺度CNN120中的神经网络。处理器140运 行指令以在面部检测系统100上执行面部检测。这些组件中的每一个可以被实施为硬件、软 件、固件或其组合。这些组件一起执行输入图像110的面部检测。
[0028]双尺度CNN 120接收输入图像110并且确定输入图像是否包含面部。在一个方法 中,双尺度CNN 120执行至少两个CNN。双尺度CNN 120从输入图像110获得不同程度(即,尺 度)的图像块,并且集成不同程度的图像块的信息。另外,双尺度CNN 120生成输出150以指 示输入图像110是否包含面部。
[0029]训练模块130训练用于执行面部检测的双尺度CNN 120中的神经网络。在一个方面 中,训练模块130使用面部图像和非面部图像训练CNN。面部检测系统100可以具有用于存储 不同个体的面部图像和非面部图像的大型数据库。数据库可以具有不平衡数量的面部图像 和非面部图像。例如,数据库可以包括明显更大数量的非面部图像。训练模块130可以获取 附加的面部图像来平衡面部图像和非面部图像的数量以便训练CNN。
[0030] 处理器140运行指令以在面部检测系统100中执行面部检测。处理器140从存储器 (未示出)或外部电路接收指令。指令也可以完全地或至少部分地存在于处理器140内(例 如,在处理器的高速缓存存储器内)。根据指令,处理器140变换或选择输入图像110的一部 分以提供给双尺度CNN 120。此外,处理器140根据指令操作双尺度CNN 120和训练模块130 以执行面部检测的功能。可以在CPU或GPU中实现处理器140。
[0031] CNN的自动阶段训练
[0032] 图2是使用CNN 200执行面部检测的总体框架的图。双尺度CNN可以包括如图2中所 图示的CNN 200。由训练模块130使用面部图像230P和非面部图像230N来训练CNN 200XNN 200可以从用于训练CNN 200的面部图像230P和非面部图像230N获得多个图像块。在训练之 后,CNN 200接收输入图像210并且确定输入图像210是否包含面部。在该示例中,CNN 200生 成响应图290,其可以指示在图像210上的对应位置处的可能的面部。
[0033] 在一种实现方式中,CNN 200涉及卷积和池化260以及softmax函数280XNN 200执 行卷积和池化260以从图像210生成中间特征图270。中间特征图270和/或响应图290可以小 于图像210。
[0034] CNN 200可以包括用于执行卷积的全连接层。为了定位图像210中的面部,通过将 输出矢量处理为具有许多通道的lx 1特征图来将全连接层转换为卷积层。例如,如果针对 全连接层的输入是具有k个通道的m X η特征图并且输出是t维矢量,那么所得到的层包含k X m X η X t卷积。在面部检测期间,可以通过常数因子(例如,α = 1.2)对图像210连续地进 行下采样(subsample)以产生图像金字塔。向金字塔中的每个图像应用卷积和池化操作260 和sof tmax 280,得到面部可能性的响应图290。在一个方法中,响应图290中的高数值指示 在图像210中的对应尺度和位置处的面部候选。优选地,卷积和池化层不包含任何填充 (padding)。该过程等效于滑动窗口方法,但是快得多,这是因为重叠窗口的卷积结果被共 享和重新使用。
[0035] 在一个方面中,使用面部图像230P和非面部图像230N来训练CNN 200,以确定用于 执行卷积和池化260和sof tmax功能280的最优权重。在数据库中,非面部图像的数量可能显 著地大于面部图像的数量。使用不平衡数量的面部图像230P和非面部图像230N训练CNN 200可能使得CNN 200有偏向性。优选地,使用平衡数量的面部图像230P和非面部图像230N 来执行训练,使得可以通过具有低假正样本率的无偏向性的方式来训练CNN 200。
[0036] 例如,一种情形包括大约10,000个固定尺寸的小面部图像以及30,000个不包含面 部的负样本。然而,负样本多得多,使得能够从负样本中提取出数十亿非面部图像。要处理 数十亿候选非面部图像来选择用于训练的更有用的那些非面部图像,例如很可能被错误分 类为包含面部的那些非面部图像。因而,虽然原始池可以包含1〇〇χ、1〇〇〇χ或者甚至1000 Ox 更多的非面部图像,但训练集合优选地被选择为具有大致相等数量(例如,10%以内或20% 以内)的面部以及非面部图像。
[0037]在一个实施例中,按阶段来训练CNN 200。在一个方面中,CNN 200执行自动阶段训 练,使得使用从包含不平衡数量的面部图像和非面部图像的原始池获取的平衡数量的面部 图像230P和非面部图像230N来训练CNN 200。如果原始池不包含足够的面部图像,则可以从 池中的面部图像获取附加的"合成"面部图像230P,使得用于阶段的训练集合具有大致相等 数量的面部图像230P和非面部图像230N。可以例如通过将原始池中的面部图像进行旋转、 模糊、镜像或扭曲来获取附加的面部图像230P。例如,通过对原始的面部图像应用达到± 20 度的随机通道内(in-lane)旋转、[-0.8,1.2]内的伽马校正以及具有概率0.5的水平翻转来 获取附加的面部图像230P。也可以通过将来自原始池的不同面部图像进行组合来获取附加 的面部图像230P。
[0038] 随着阶段的训练的进行,利用更接近面部/非面部边界的更困难的示例来呈现CNN 200。在每个阶段中,对CNN 200进行测试和评估以获得假正样本的数量。训练继续进行附加 的阶段,直到最后的阶段具有小于阈值数量的假正样本。对于具有阈值数量或具有更多假 正样本的其它阶段,假正样本被引导(bootstrap)并且重新用作非面部图像230N以用于接 下来阶段中的训练。优选地,用于接下来阶段的非面部图像230N包括来自所有先前阶段的 所有假正样本。在一个方法中,对于每个阶段(至少对于训练的一部分)而言,在阶段中所使 用的假正样本的数量增加。因此,对于每个相继的阶段,来自较早阶段的假正样本占训练集 合中的非面部图像的百分比是不断增加的百分比。随着训练的进行,在往后阶段中的新近 添加的困难的非面部图像230N构成所有负样本中的较小部分,从而有效地指导CNN 200更 温和地微调其参数(或权重)。因此,通过在参数空间中移动得不太远、同时仍然借助于微调 来降低假正样本率,由此预期CNN 200记住先前的正确的非面部图像230N。
[0039] 图3是根据一个实施例的在阶段中训练CNN的方法的流程图。在一个方面中,由训 练模块130或由处理器140根据来自训练模块130的指令来执行该方法。在每个阶段中,训练 模块130构建用于该阶段的训练集合和验证集合(310)。训练集合具有大致相等数量的面部 图像230P和非面部图像230N。训练模块130使用用于该阶段的训练集合来训练CNN(320)。训 练模块130使用用于该阶段的验证集合来评估CNN(330)并且生成评估的成本(即,验证成 本),其是将被优化的目标值。例如,可以是应当被最小化的成功率的负对数似然。计数对于 该阶段所执行的训练的数量。
[0040] 在每个阶段中,训练模块130训练CNN 200,直到满足预先确定的要求为止。在一个 方法中,训练模块确定是否能够在预先确定的持续时间(例如,预先确定的训练或时期 (epoch)的数量)中获得更低的成本(340)。例如,来自该阶段的先前评估的最低验证成本被 用作阈值成本。将阈值成本与该阶段的评估的成本相比较。如果在预先确定的持续时间(例 如,预先确定的训练的数量T)内评估的成本低于该阶段的阈值成本,则训练模块130使用评 估的成本来更新阈值成本并且重置所执行的训练的计数。进一步地,训练模块130重复CNN 的训练和评估。如果在预先确定的持续时间(例如,预先确定的训练的数量T)内找不到更低 的成本,则训练模块130使用阈值成本更新CNN( 350 ),并且结束训练的该阶段。
[0041] 在另一个方法中,阶段中的训练继续进行,直到满足其它预先确定的条件为止。例 如,阶段中的训练可以继续,直到用于该阶段的验证成本下降到低于阈值成本。算法可以在 每个时期之后检查验证成本并且确定是否满足终止准则。另一个可能的方法将是在预先定 义的时期的数量进行训练。
[0042]对于具有用于阶段的最低成本的CNN,训练模块130将假正样本的数量与假正样本 的阈值数量相比较。如果对阶段的上个训练中的CNN具有阈值数量的假正样本或更多的假 正样本,则训练模块130搜索(bootstrap)假正样本并且重新使用所搜索的假正样本作为用 于接下来阶段中的训练的非面部图像230N。训练模块130利用更新的非面部图像230N来执 行接下来阶段的训练,如参考图3详细描述的。如果对阶段的上个训练中的CNN具有比假正 样本的阈值数量更低数量的假正样本,则训练模块130完成训练。在一个方法中,训练可以 针对附加的阶段继续,直到用于阶段的新的假正样本(即,在先前阶段中不是假正样本的假 正样本)的数量下降到低于阈值数量。然而,在另一个方法中,训练可以针对附加的阶段继 续,直到用于阶段的总的假正样本的数量下降到低于阈值数量。
[0043]在算法1上示出了自动阶段训练中的一个方法。

[0046]图4示出了根据实施例的、由训练模块130执行的、使用自动阶段训练来训练CNN的 示例过程。在图4中,在三个阶段中执行CNN的训练。在其它实施例中,可以在任何数量的阶 段中执行训练,直到最后的阶段中的假正样本的数量小于假正样本的阈值数量。在该示例 中,假正样本的阈值数量是2。
[0047]在每个阶段中,训练模块130使用线405以上的面部图像230P以及线405以下的非 面部图像230N来训练CNN。在每个阶段中,训练模块130接收包含正样本图像和负样本图像 的样本。根据样本,训练模块130构建训练集合和验证集合。优选地,每个训练集合具有平衡 数量的正样本图像和负样本图像,并且每个验证集合也具有平衡数量的正样本图像和负样 本图像。训练模块130使用训练集合来训练CNN并且使用验证集合来评估所训练的CNN。根据 评估,训练模块130对假正样本的数量进行计数。
[0048]例如,阶段1的左列表示由阶段1使用的训练集合410。用于阶段1的训练集合410包 含从图像的原始池取出的一定数量的非面部图像410N。用于阶段1的训练集合410也包含从 图像的原始池取出的较低数量的面部图像410P。训练模块130获取附加的面部图像410D,使 得面部图像410P/410D的总数量匹配训练集合410中的非面部图像410N的数量。训练模块 130使用训练集合410的一部分来用于训练以及一部分来用于验证。
[0049]阶段1的右列表示验证结果。线405以上是面部图像的评估结果。415P是被正确地 归类为正样本图像的面部图像,415FN是未被正确地归类为非面部图像的面部图像(即,假 负样本)。类似地,在线405以下,非面部图像415N被正确归类,而非面部图像415FP是假正样 本。在该示例中,存在四个假正样本415FP。这多于假正样本的阈值数量(例如,在该示例中 是2)。因而,训练模块130前进到阶段2。
[0050] 阶段2中的训练集合420包含一定数量的非面部图像420N/420FP。非面部图像包含 来自阶段1的假正样本415FP,如由箭头所指示并且被重新标记为420FP。非面部图像也可以 包含新的非面部图像420N。训练集合420还包含面部图像420P和/或所获取的面部图像420D 以匹配非面部图像的数量。在训练该阶段之后,根据评估结果425,存在三个假正样本 425FP,这仍然多于假正样本的阈值数量(例如,在该示例中是2)。因而,训练模块130前进到 阶段3。
[0051] 阶段3中的训练集合430包含许多非面部图像430。在一种实现方式中,非面部图像 包含仅仅来自紧邻的在前的阶段的假正样本。因此,训练集合430包含与来自阶段2的假正 样本425FP对应的非面部图像430FP。训练集合430可以包含来自阶段2的假正样本的全部或 仅仅一些。在另一种实现方式中,训练集合中的非面部图像包含与来自前面阶段的所有假 正样本对应的非面部图像430。因此,训练集合430包含与来自阶段1和2两者的假正样本 415FP和425FP对应的非面部图像430FP。在该示例中,在训练之后,仅仅存在一个假正样本 435FP,这小于假正样本的阈值数量(例如,在该示例中是2)。因而,训练模块130完成CNN的 训练。
[0052] 双尺度CNN
[0053]图5是双尺度CNN 120的示例结构的图。双尺度CNN 120接收图像510,并且确定图 像510是否包含面部。在一个实施例中,双尺度CNN 120包含公共CNN 520、第一CNN 580A、第 二CNN 580B和输出生成器550。可以由训练模块130根据自动尺度训练来训练双尺度CNN 120中的CNN。共同地,这些分量聚集两个不同程度的图像中的信息,以有效地利用分量的局 部外观和全局特性。
[0054] 公共CNN 520接收图像510,并且从图像510产生特征块集合530。优选地,图像510 具有包括覆盖大部分的可能面部的24x 24像素的第一区域Rl以及包括覆盖可能的面部和 背景的32x 32像素的第二区域R2。在一种实现方式中,公共CNN 520可以用lx 3x 3x 16核 对图像510执行卷积,并且可以通过非重叠最大池化(maxpooling)将卷积的图像块下采样 至大致一半尺寸。另外,公共CNN 520可以执行附加的16x 4x 4x 24卷积和最大池化。结果, 公共CNN 520生成具有6x 6空间维度的24通道的特征块集合530。
[0055]第一CNN 580A接收特征块的输入集合530A并且确定图像510是否包含面部。第一 CNN 580A可以提取特征块集合530的内部区域作为特征块的输入集合530A。优选地,特征块 集合530的内部区域对应于在图像510内的预先确定尺寸的第一区域。例如,特征块集合530 的内部区域具有与覆盖图像510的可能面部的24x 24像素对应的4x 4维度。第一CNN 580A 包括两个全连接层,并且基于图像510内的预先确定尺寸的第一区域来确定图像510是否包 含面部。因此,第一CNN 580A捕捉图像510的局部信息。
[0056] 第二CNN 580B基于特征块集合530确定图像510是否包含面部。第二CNN 580B可以 使用整个特征块集合530作为与图像510内的预先确定尺寸的第二区域对应的特征块的输 入集合。在该示例中,特征块集合530的整个区域具有与图像510的32x 32像素面部部分对 应的6x 6维度,而特征块集合530的内部区域具有与覆盖图像510的可能面部的24x 24像素 对应的4x 4维度。第二CNN 580B可以包括附加的卷积层和两个全连接层。在一个方面中,附 加的卷积层535产生与用作特征块的输入集合530A的内部区域相同尺寸的特征块集合 530B。例如,附加的卷积层535具有24x 3x 3x 24核,并且从具有6x 6x 24维度的整个特征 块集合530生成具有4x 4x 24维度的特征块集合530B。另外,第二CNN 580B中的两个全连接 层基于特征块集合530B来确定图像510是否包含面部。两个全连接层可以共享第一 CNN 580A中的两个全连接层中的权重。因此,第二CNN 580B基于图像510内的预先确定尺寸的第 二区域来检测可能的面部并且捕捉图像510的全局信息。
[0057] 输出生成器550将来自第一CNN 580A和第二CNN 580B的结果进行组合,以生成指 示图像510是否包含面部的输出。在一个方面中,只有第一CNN580A和第二CNN 580N两者都 指示图像510包含面部,输出生成器550才指示图像510包含面部。输出生成器550可以顺序 地组合来自第一CNN 580A和第二CNN 580B的结果。
[0058] 在一种实现方式中,可以通过顺序地操作两个CNN 580来实现输出生成器550。在 一个方法中,只有第一CNN 580A已经确定图像510包含面部,第二CNN 580B才确定图像510 是否包含面部。因此,第二CNN 580B指示图像510包含面部暗示了第一CNN 580A也指示图像 510包含面部。可替换地,可以颠倒顺序,并且只有第二CNN 580B已经确定图像510包含面 部,第一CNN 580A才确定图像510是否包含面部。
[0059]在一个方法中,以部分分离的方式来训练两个CNN 580。优选地,使用自动阶段训 练算法在24x 24个块上训练第一CNN 580A。然后,利用固定到第一CNN 580A的前两个卷积 层的权重在32x 32个块上训练第二CNN580B。初始的负样本可以是不同的。权重共享提高了 训练和检测速度两者,并且也减小模型尺寸。
[0060] 图6是检测图像510中的面部的方法的流程图。双尺度CNN 120接收图像510(610)。 双尺度CNN 120使用公共CNN 520从图像510产生特征块集合530(620)。双尺度CNN 120使用 第一CNN 580A、基于特征块集合530的内部区域确定图像510是否包含面部(630)。优选地, 特征块集合530的内部区域对应于覆盖大部分的可能面部的图像510内的预先确定尺寸的 第一区域。另外,双尺度CNN 120使用第二CNN 580B、基于整个特征块集合530来确定图像 510是否包含面部(635)。优选地,整个特征块集合对应于覆盖可能的面部和背景的图像510 内的预先确定尺寸的第二区域。只有第一CNN580A和第二CNN 580B两者都指示图像包含面 部,双尺度CNN 120才指示图像包含面部(640)。
[0061] 有利地,面部检测系统100更好地提高面部检测的准确度。自动尺度训练通过动态 地平衡来自包含不平衡数量的面部图像和非面部图像的池的面部图像和非面部图像的数 量来提高准确度。另外,自动尺度训练通过根据自动停止准则自适应地改变阶段的训练的 数量来提高准确度。例如,执行训练,直到在预先确定的时期数量中不能更新验证成本。而 且,双尺度CNN 120通过组合来自第一CNN 580A和第二CNN 580B的结果提高准确度。因此, 能够捕捉图像的不同方面。结果,能够降低假正样本比率。甚至在无规律面部容貌的情况 下一一例如由于变化的姿态、表情、光照条件、咬合等,利用图像的不同方面允许更鲁棒的 面部检测。采用利用自动阶段训练所训练的双尺度CNN 120的面部检测系统100在面部检测 数据集合和基准(FDDB)上实现具有仅六个假正样本的81.6%的检测率,而现有技术的当前 状态实现大约具有50个假正样本的80%的检测率。
[0062]另外,面部检测系统100可以实现面部检测中速度的显著提高。通过在双尺度CNN 120的第一CNN 580A和第二CNN 580B中共享权重,能够增强训练和检测速度两者。双尺度 CNN 120具有足够能力以直接地执行多视图面部检测,因此能够避免标记面部姿态以及将 它们划分为不同的类别。由于具有提高的面部检测速度,面部检测系统100可以以实时速度 在现代GPU上实现。例如,在x86/64Linux平台上的NVIDIA CUDA API中实现面部检测系统 100。当逐个帧地处理图像时,面部检测系统100在单个NVIDIA GTX Titan Black上对VGA图 像(640\480像素)以24€?8运行。如果整体供给一批10个图像,则速度上升到32€?8。在没有 优化的情况下通过简单地使用对应的CPU实现来替换GPU内核,由此在CPU上实现面部检测 系统100,这会实现Intel Core i7的单线程上的1.38fps。
[0063]仿真结果
[0064]为了评估CNN和双尺度CNN 120的自动阶段训练对面部检测的性能,在面部检测数 据集合和基准(FDDB)上执行具有不同方法的实验。
[0065]为了评估自动阶段训练的效力,使用不同方法来训练第一CNN 580A。为了验证自 动的停止准则的效力(在本文被称为"autostop"),在每个阶段中使用固定数量的时期来训 练第一CNN 580A以便进行比较。为了验证动态扩充面部图像以平衡面部图像和非面部图像 的数量的效力,使用预先生成的面部图像(其仅仅是在没有自动阶段训练中执行的获取的 情况下的重复的面部图像)来训练第一CNN 580A。在表格1中汇总结果。
[0066]表格1:用于自动阶段训练的不同配置的性能。自动停止是在阶段训练中的自动的 停止准则,并且dynaug是阳性样本的动态扩充。
[0068]在表格1中,根据自动阶段训练使用训练1所训练的CNN实现仅具有72个假正样本 的最高Fl得分。在动态扩张的情况下使用固定数量的训练、根据训练2-5所训练的CNN实现 更低的Fl得分和更高的假正样本数量。另外,使用预先生成的面部图像、使用自动的停止准 贝丨J、根据训练6-7所训练的CNN实现更低的Fl得分和更高的假正样本数量。因此,自动阶段训 练提高面部检测的准确度。
[0069] 为了评估双尺度CNN 120的效力,分开地在H)DB上测试每个CNN 580。在表格2中汇 总结果。
[0070] 表格2:双尺度CNN和单个CNN的性能。
[0072]如在表格2中列出的,使用两个CNN 580进行不同尺度的信息的集成显著地提高检 测的准确度。尽管双尺度CNN 120的Fl得分不是最高的,但双尺度CNN 120的Fl得分基本上 接近于第一CNN 580A和第二CNN 580B的那些Fl得分。同时,当仅仅实现第一CNN 580A会实 现72个假正样本并且仅仅实现第二CNN 580B会实现47个假正样本时,实现双尺度CNN 120 会实现6个假正样本。因而,当诸如在实际应用中期望具有低假正样本比率的很好的准确度 时,双尺度CNN结构是有效的。
[0073] 尽管【具体实施方式】包含许多细节,但这些不应当被理解为限制本发明的范围而是 仅仅被理解为说明本发明的不同的示例和方面。应当理解,本发明的范围包括未在上面详 细地讨论的其它实施例。例如,也能够将在双尺度CNN 120或自动尺度训练中公开的原理应 用于除面部检测之外的其它区域或对象。在不背离在所附权利要求中限定的本发明的精神 和范围的情况下,可以在本文所公开的本发明的方法和装置的布置、操作和细节方面进行 对那些本领域技术人员将是显而易见的各种其它修改、改变和变化。因此,本发明的范围应 当由所附权利要求及其合法等同物来确定。
[0074] 在替换实施例中,在计算机硬件、固件、软件和/或其组合中实现本发明。可以在由 可编程处理器执行的有形地实现在机器可读存贮设备中的计算机程序产品中实现本发明 的装置;并且能够通过可编程处理器对输入数据进行操作并且生成输出执行指令的程序以 执行本发明的功能来执行本发明的方法步骤。可以在可在包括至少一个可编程处理器的可 编程系统上执行的一个或多个计算机程序中有利地实现本发明,该至少一个可编程处理器 被耦合以从数据存贮系统、至少一个输入设备和至少一个输出设备接收数据和指令并且向 数据存贮系统、至少一个输入设备和至少一个输出设备传送数据和指令。如果期望的话,可 以以高级别程序或面向对象的程序设计语言或者以汇编或机器语言来实现每个计算机程 序;并且在任何情况下,语言可以是编译或解释语言。举例来说,适当的处理器包括通用和 专用微处理器两者。通常,处理器将从只读存储器和/或随机存取存储器接收指令和数据。 通常,计算机将包括用于存储数据文件的一个或多个大容量存储设备;此类设备包括诸如 内部的硬盘和可换式磁盘之类的磁盘;磁光盘;以及光盘。适于有形地实现计算机程序指令 和数据地存贮设备包括所有形式的非易失性存储器,举例来说包括:诸如EPR0M、EEPR0M,和 闪速存储器设备之类的半导体存储器设备;诸如内部硬盘和可换式磁盘之类的磁盘;磁光 盘;以及CD-ROM盘。上文中的任何能够被ASIC(专用集成电路)和其它形式的硬件补充,或被 并入其中。
【主权项】
1. 一种在计算机系统上实现自动地训练关于面部检测的卷积神经网络(CNN)的方法, 所述训练方法使用包含面部图像以及明显更大数量的非面部图像的池,所述训练方法出现 在各阶段中,所述各阶段包括: 构建用于该阶段的训练集合,所述训练集合具有从所述池中的图像选取的大致相等数 量的面部图像和非面部图像,所述非面部图像包含在较早阶段中是假正样本的非面部图 像;以及 使用用于该阶段的训练集合来训练CNN。2. 根据权利要求1所述的方法,其中,所述各阶段进一步包括: 构建用于该阶段的面部图像和非面部图像的验证集合,其中所述训练集合用于在该阶 段期间训练所述CNN,并且所述验证集合用于计算用于该阶段的验证成本,并且所述验证成 本用于确定是否继续该阶段的训练。3. 根据权利要求1所述的方法,其中,对阶段的训练继续,直到该阶段的验证成本下降 到低于阈值成本为止。4. 根据权利要求1所述的方法,其中,对阶段的训练继续,直到该阶段的验证成本在预 先确定的训练持续时间内没有提尚。5. 根据权利要求4所述的方法,其中,预先确定的持续时间是预先确定的用于该阶段的 训练的数量。6. 根据权利要求1所述的方法,其中,训练针对附加的阶段继续,直到用于阶段的新的 假正样本的数量下降到低于阈值。7. 根据权利要求1所述的方法,其中,训练针对附加的阶段继续,直到用于阶段的总的 假正样本的数量下降到低于阈值。8. 根据权利要求1所述的方法,其中,对于每个相继的阶段,来自较早阶段的假正样本 占训练集合中的非面部图像的百分比是不断增加的百分比。9. 根据权利要求1所述的方法,其中,用于阶段的训练集合包含来自紧邻的在前的阶段 的所有假正样本。10. 根据权利要求1所述的方法,其中,用于阶段的训练集合包含仅仅来自紧邻的在前 的阶段的假正样本。11. 根据权利要求1所述的方法,其中,用于阶段的训练集合包含来自多个在前阶段的 假正样本。12. 根据权利要求1所述的方法,其中,通过修改所述池中的面部图像来获取所述训练 集合中的面部图像。13. 根据权利要求12所述的方法,其中,通过将所述池中的面部图像进行旋转、模糊、镜 像或扭曲来获取所述训练集合中的面部图像。14. 根据权利要求12所述的方法,其中,通过将所述池中的不同面部图像进行组合来获 取所述训练集合中的面部图像。15. 根据权利要求1所述的方法,其中,使用所述池中的基本上所有所述面部图像来获 取所述训练集合中的面部图像。16. 根据权利要求1所述的方法,其中,使用所述池中的少于一半的所述非面部图像来 获取所述训练集合中的非面部图像。17. 根据权利要求1所述的方法,其中,所述CNN以权重为特征,并且训练所述CNN包括适 配所述权重。18. 根据权利要求1所述的方法,其中,所述计算机系统包括GPU,并且CNN的训练在所述 GPU上实现。19. 根据权利要求1所述的方法,其中,所述CNN是双尺度CNN。20. -种被配置为存储由指令组成的程序代码的非暂时型计算机可读介质,当所述指 令由处理器运行时,使得处理器训练关于面部检测的卷积神经网络(CNN),所述训练方法使 用包含面部图像以及明显更大数量的非面部图像的池,所述训练方法出现在各阶段中,所 述各阶段包括: 构建用于该阶段的训练集合,所述训练集合具有从所述池中的图像获取的大致相等数 量的面部图像和非面部图像,所述非面部图像包含在较早阶段中是假正样本的非面部图 像;以及 使用用于该阶段的训练集合来训练CNN。21. -种自动地训练关于面部检测的卷积神经网络(CNN)的系统,所述训练方法使用包 含面部图像以及明显更大数量的非面部图像的池,所述训练方法出现在各阶段中,所述各 阶段包括: 构建用于该阶段的训练集合,所述训练集合具有从所述池中的图像获取的大致相等数 量的面部图像和非面部图像,所述非面部图像包含在较早阶段中是假正样本的非面部图 像;以及 使用用于该阶段的训练集合来训练CNN。22. -种用于面部检测的系统,所述系统包括: 用于接收图像的输入; 第一神经网络,其基于所述图像内的预先确定尺寸的第一区域来确定所述图像是否包 含面部; 第二神经网络,其基于所述图像内的预先确定尺寸的第二区域来确定所述图像是否包 含面部,其中所述第二区域大于所述第一区域,并且所述第二神经网络比所述第一神经网 络多包含至少一个卷积层;以及 输出,只有所述第一神经网络和所述第二神经网络两者都指示所述图像包含面部,所 述输出才指示所述图像包含面部。23. 根据权利要求22所述的系统,其中,所述第一区域的尺寸被调整为包含可能的面 部,并且所述第二区域的尺寸被调整为包含所述可能的面部和背景。24. 根据权利要求22所述的系统,其中,与由第一神经网络单独进行的指示或者由第二 神经网络单独进行的指示相比,输出指示更准确。25. 根据权利要求22所述的系统,还包括: 公共神经网络,其从所述图像产生特征块集合,其中所述第二神经网络使用整个特征 块集合作为输入,并且所述第一神经网络使用特征块集合的内部区域作为输入。26. 根据权利要求25所述的系统,其中,所述第二神经网络包含卷积层,所述卷积层产 生与用作所述第一神经网络的输入的所述内部区域有相同尺寸的碎片集合。27. 根据权利要求25所述的系统,其中,所述公共神经网络包含卷积层和下采样层。28. 根据权利要求25所述的系统,其中,所述第一神经网络由使用所述特征块集合的所 述内部区域作为输入的全连接层组成,并且第二神经网络由使用所述整个特征块集合作为 输入的、后面是全连接层的卷积层组成。29. 根据权利要求25所述的系统,其中,由所述第一神经网络使用的所述内部区域小于 由所述第二神经网络使用的所述整个特征块集合的一半尺寸。30. 根据权利要求22所述的系统,其中,只有所述第一神经网络已经确定所述图像确实 包含面部,所述第二神经网络才确定所述图像是否包含面部。31. 根据权利要求22所述的系统,其中,只有所述第二神经网络已经确定所述图像包含 面部,所述第一神经网络才确定所述图像是否包含面部。32. 根据权利要求22所述的系统,其中,所述第一神经网络对与所述图像内的预先确定 尺寸的所述第一区域对应的特征块集合执行卷积,并且所述第二神经网络对与所述图像内 的预先确定尺寸的所述第二区域对应的另一个特征块集合执行卷积,并且其中,所述第一 神经网络中的卷积和所述第二神经网络中的卷积具有共享的权重。33. -种用于面部检测的方法,所述方法在实现第一神经网络和第二神经网络的计算 机系统上实现,所述方法包括: 接收图像; 所述第一神经网络基于图像内的预先确定尺寸的第一区域来确定图像是否包含面部; 所述第二神经网络基于图像内的预先确定尺寸的第二区域来确定图像是否包含面部, 其中所述第二区域大于所述第一区域,并且所述第二神经网络比所述第一神经网络多包含 至少一个卷积层;以及 只有所述第一神经网络和所述第二神经网络两者都指示所述图像包含面部,才指示所 述图像包含面部。34. -种被配置为存储由指令组成的程序代码的非暂时型计算机可读介质,当所述指 令由处理器运行时,使得处理器执行包括以下的面部检测: 接收图像; 第一神经网络基于图像内的预先确定尺寸的第一区域来确定图像是否包含面部; 第二神经网络基于图像内的预先确定尺寸的第二区域来确定图像是否包含面部,其中 所述第二区域大于所述第一区域,并且所述第二神经网络比所述第一神经网络多包含至少 一个卷积层;以及 只有所述第一神经网络和所第二神经网络两者都指示图像包含面部,才指示所述图像 包含面部。
【文档编号】G06K9/66GK106062774SQ201480076851
【公开日】2016年10月26日
【申请日】2014年11月15日
【发明人】印奇, 曹志敏, 贾开
【申请人】北京旷视科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1