一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

图像中的面部定位的制作方法

2022-02-24 18:37:37 来源:中国专利 TAG:


1.本说明书涉及在图像中进行面部定位的方法。具体地,本说明书涉及神经网络的使用和训练,以在图像中进行面部定位。


背景技术:

2.图像中的面部定位是为了确定图像中是否存在面部以及确定面部的位置。图像中的面部定位还可以包括识别包围确定在图像中存在的每个人脸的边界框的位置。在许多应用中,例如面部属性(例如,表情和/或年龄)和/或面部身份识别,自动人脸定位是人脸图像分析的前提步骤。通常,训练神经网络(面部分类/检测神经网络)以在图像中进行面部定位包括仅使用分类和框回归损失。
3.面部检测与通用对象检测在几个方面不同。面部检测的比率变化较小(例如,从1:1到1:1.5),但缩放变化要大得多(例如,从几像素到几千像素)。将通用对象检测器用于面部检测和定位存在重大挑战。


技术实现要素:

4.根据本说明书的第一方面,描述了一种训练神经网络以进行人脸定位的计算机实现的方法,所述方法包括:向所述神经网络输入训练图像,所述训练图像包括一个或多个人脸;使用所述神经网络处理所述训练图像;从所述神经网络为所述训练图像中的多个训练锚点中的每一个训练锚点输出一组或多组输出数据,每组输出数据包括预测面部分类、对应的人脸框的预测位置和一个或多个对应的特征向量;根据目标函数更新所述神经网络的参数。对于所述训练图像中的每个正锚点,所述目标函数包括:分类损失,用于将所述正锚点的预测分类与所述正锚点的已知分类进行比较;框回归损失,用于将所述正锚点的人脸框的预测位置与所述人脸框的已知位置进行比较;特征损失,用于将所述正锚点的所述一个或多个特征向量的基于像素的属性与和所述正锚点相关联的、人脸的已知的基于像素的属性进行比较。
5.所述一个或多个特征向量可以包括人脸的多个面部特征点的预测位置,其中,所述特征损失包括面部特征点回归损失,用于将所述多个面部特征点的所述预测位置与所述多个面部特征点的已知位置进行比较。
6.所述一个或多个特征向量可以包括预测人脸框内的人脸的编码表示,并且所述方法还可以包括:使用网格解码器神经网络生成所述人脸的三维表示,所述网格解码器神经网络包括一个或多个几何卷积层;使用可微渲染器从所述人脸的所述三维表示生成所述人脸的二维图像,其中,所述特征损失包括将所述生成的人脸的二维图像与所述预测人脸框内的所述人脸的实测值图像进行比较的密集回归损失。
7.所述特征向量还可以包括相机参数和/或照明参数,其中,所述可微渲染器在从所述人脸的所述三维表示生成所述人脸的所述二维图像时使用所述相机参数和/或照明参数。
8.所述密集回归损失可以是所述生成的人脸的二维图像与所述预测人脸框内的所述人脸的所述实测值图像之间的像素差。
9.所述网格解码器可以包括多个几何卷积层和多个放大层,其中,所述多个放大层与所述多个几何卷积层交错。
10.对于所述训练图像中的每个负锚点,所述目标函数包括分类损失,用于将所述负锚点的预测分类与所述负锚点的已知分类进行比较。
11.所述方法还可以包括使用一个或多个其它训练图像迭代所述方法,直到满足阈值条件。
12.所述神经网络可以包括:第一多个卷积层,包括输入层、多个卷积过滤器和一个或多个跳跃连接;第二多个卷积层,横向连接到所述第一多个卷积层,并用于以自上而下的方式处理所述第一多个卷积层的输出。第二多个卷积层可以包括一个或多个可变形卷积层。
13.每个横向连接可以用于将所述第一多个卷积层中的一个层的输出与所述第二多个卷积层的前一层的输出合并。
14.神经网络还可以包括一个或多个上下文模块,每个上下文模块用于使用一个或多个可变形卷积网络处理所述第二多个卷积层中的一个层的所述输出。
15.根据本说明书的另一方面,描述了一种人脸定位方法,所述方法包括:使用神经网络识别输入图像中的一个或多个人脸;使用所述神经网络识别所述输入图像中的一个或多个对应的人脸框,其中,所述神经网络已经使用本文所述的训练方法中的一种进行训练。
16.根据本说明书的另一方面,描述了一种计算机实现的人脸定位方法,所述方法包括:向所述神经网络输入图像,所述图像包括一个或多个人脸;使用所述神经网络处理所述图像;从所述神经网络输出一组或多组输出数据,每组输出数据包括预测面部分类、对应的人脸框的预测位置和一个或多个对应的特征向量。所述神经网络包括:第一多个卷积层,包括输入层、多个卷积过滤器和一个或多个跳跃连接;第二多个卷积层,横向连接到所述第一多个卷积层,并用于以自上而下的方式处理所述第一多个卷积层的输出。
17.每个横向连接可以用于将所述第一多个卷积层中的一个层的输出与所述第二多个卷积层的前一层的输出合并。第二多个卷积层可以包括一个或多个可变形卷积层。
18.神经网络还可以包括一个或多个上下文模块,每个上下文模块用于使用一个或多个可变形卷积网络处理第二多个卷积层中的层的输出。
19.神经网络可以使用本文描述的任何训练方法进行训练。
20.根据本说明书的另一方面,描述了一种系统,所述系统包括:一个或多个处理器;存储器,所述存储器包括计算机可读指令,当由所述一个或多个处理器执行时,所述计算机可读指令使所述系统执行本文所述的方法中的一个或多个。
21.根据本说明书的另一方面,描述了一种计算机程序产品,所述计算机程序产品包括计算机可读指令,当由计算设备执行时,所述计算机可读指令使所述计算设备执行本文所述的方法中的一个或多个。
22.如本文所使用,术语“面部定位”和/或“人脸定位”优选用于表示以下各项中的一个或多个:人脸检测;人脸对齐;像素人脸解析;和/或3d密集对应回归。
附图说明
23.现在将参考附图通过非限制性示例来描述实施例,其中:
24.图1示出了在图像中进行面部定位的方法的示意性概述;
25.图2示出了使用多任务损失训练神经网络以在图像中进行面部定位的方法的示意性概述;
26.图3示出了训练神经网络以在图像中进行面部定位的方法的流程图;
27.图4示出了用于在图像中进行面部定位的神经网络结构的示例;
28.图5示出了用于在图像中进行面部定位的神经网络中横向连接的示例;
29.图6示出了用于在图像中进行面部定位的神经网络结构的另一示例;
30.图7示出了用于执行面部定位的计算机系统的示例。
具体实施方式
31.在本文描述的实施例中,面部识别神经网络除了可以用于输出人脸评分(即,一个位置是否存在人脸的指示)和人脸框之外,还可以用于输出其它特征向量。例如,面部识别神经网络可以输出一个或多个面部特征点位置。或者或另外,面部识别神经网络可以输出人脸框内区域的嵌套(embedding)。这些输出可用于多任务损失函数,以训练面部识别神经网络。
32.与其它面部定位方法相比,使用这种多任务损失函数可以提高面部分类/检测神经网络的性能。例如,面部分类/检测神经网络可以具有较低的错误率。
33.在一些实施例中,采用了轻量级骨干网。这可以使面部分类/检测神经网络在单个cpu内核上实时运行。
34.图1示出了在图像中进行面部定位的方法100的示意性概述。包括一个或多个人脸104的图像102输入到神经网络106中。神经网络106通过多个神经网络层处理图像,并输出一组或多组输出面部数据108。每组输出面部数据108包括图像102中的人脸106的预测面部分类、对应的人脸框的预测位置,以及对图像102中对应人脸的一个或多个属性进行编码的一个或多个对应特征向量。
35.输入图像102(即,i)是包括一个或多个人脸的图像。输入图像102可以包括阵列(例如,二维或三维阵列)中的一组像素值。例如,在彩色图像中,h是图像的高度(以像素为单位),w是图像的宽度(以像素为单位),图像具有三个彩色信道(例如,rgb或cielab)。在一些实施例中,图像102可以是黑白的/灰度的。
36.神经网络106包括多层节点,每个节点与一个或多个参数相关联。神经网络的每个节点的参数可以包括一个或多个权重和/或偏差。节点将上一层中的节点的一个或多个输出作为输入。上一层中的节点的一个或多个输出由节点用于使用激活函数和神经网络的参数生成激活值。经过训练的生成器神经网络106的一个或多个层可以是卷积层。经过训练的生成器神经网络106的一个或多个层可以是可变形卷积层。
37.在一些实施例中,神经网络106可以包括残差网络和特征金字塔网络。神经网络106可以包括残差网络的层与特征金字塔网络的层之间的横向连接。特征金字塔可以以自上而下的方式处理残差网络的输出。下面结合图4至图6描述使用残差网络和特征金字塔的神经网络架构的示例。
38.神经网络106的参数可以使用多任务目标函数(本文也称为损失函数)来训练。多任务目标函数可以包括面部分类损失、人脸框回归损失、面部特征点回归损失和/或密集人脸回归损失中的两个或多个。多任务损失函数可以包括监督损失和/或自监督损失。下面结合图2和图3描述神经网络的训练方法的示例。
39.对于由神经网络在图像102中识别的每个潜在人脸,一组输出面部数据108包括图像102中的人脸106的预测面部分类108a。预测分类108a包括图像中的锚点是人脸的概率。
40.对于由神经网络在图像102中识别的每个潜在人脸,一组输出面部数据108还包括图像102中的人脸106的预测边界框108b。例如,预测的边界框108b可以是潜在人脸的边界框110的角点的坐标。
41.对于由神经网络在图像102中识别的每个潜在人脸,一组输出面部数据108还包括对人脸的一个或多个属性进行编码的一个或多个特征向量108c。例如,特征向量108c可以包括一个或多个面部特征点的位置,所述面部特征点例如人脸上的眼睛、鼻子、下巴和/或嘴。或者或另外,特征向量108c包括包含在边界框110中的人脸的嵌套。
42.图2示出了使用多任务损失训练神经网络以在图像中进行的面部定位的方法的示意性概述。该方法包括使用多任务损失函数204在一组训练图像102上训练神经网络106。对于训练数据集中的多个图像202中的每一个图像,训练图像202被输入到神经网络106中,并通过多个神经网络层进行处理。神经网络106根据输入训练图像202输出一组预测面部数据206。使用多任务损失函数204将预测面部数据206与对应训练图像202的已知面部数据进行比较,并且该比较用于更新神经网络106的参数。
43.训练图像202从训练集中获得。训练集包括多个包含人脸的图像,以及每个图像的一组已知面部数据。已知面部数据包括对应图像中每个人脸的位置,以及对应图像中每个人脸的边界框的位置。在一些实施例中,已知面部数据还包括对应图像中的每个人脸的一个或多个面部特征点的位置。
44.每个训练图像可以与多个训练锚点相关联。每个锚点表示图像中可能存在人脸的“先前(prior)”框。每个锚点可以被定义为包括中心位置和标度的参考框。但是,应理解,锚点可以以其它方式定义。锚点用于面部检测,用于区分正负训练样本。正锚点定义为存在人脸的锚点。负锚点定义为不存在人脸的锚点。以下文献中提供了使用锚点的示例:“更快的r-cnn:使用区域建议网络实现实时对象检测(faster r-cnn:towards real-time object detection with regional proposal networks)”(shaoqing ren等人,arxiv:1506.01497,其内容通过引用的方式并入本文中)。
45.预测面部数据206包括面部分类210。预测面部分类210包括相关联的锚点i是人脸的概率pi。在一些实施例中,预测面部分类210可以具有对应于“存在人脸”和“不存在人脸”的两个部分。
46.锚点的预测面部分类210与分类损失相关联,其中,是锚点i的已知面部分类(即,1表示正锚点,0表示负锚点)。分类损失将锚点的预测分类与锚点的已知分类进行比较。例如,分类损失可以是二进制情况的softmax损失,例如交叉熵损失或二进制合页损失。但是,本领域技术人员将理解,可以使用其它损失函数。在一些实施例中,分类损失可以仅用于正锚点。在其它实施例中,分类损失可以用于正锚点和负锚点。
47.预测面部数据206包括预测面部框位置212(即,ti)。预测面部框位置212包括识别
锚点i的对应人脸的边界框的预测位置的数据。预测面部框位置212可以是例如用于人脸的预测边界框的角点的坐标,例如框的所有四个角点或框的两个对角线相对的角点的坐标。或者,预测面部框位置212可以是边界框的中心以及框的高度和宽度的坐标。其它示例也是可能的。
48.正锚点的预测面部框位置212与框回归损失相关联,其中,是正锚点i的已知面部框位置。框回归损失将预测面部框位置212(即,ti)与对应人脸框的已知位置进行比较。例如,框回归损失可以是鲁棒损失函数,例如平滑l1损失函数。但是,本领域技术人员将理解,可以使用其它损失函数。在一些实施例中,框回归目标可以归一化到框的中心位置以及宽度和高度。
49.预测面部数据还包括一个或多个预测特征向量,每个预测特征向量对具有面部框的区域的一个或多个基于像素的属性进行编码。特征向量分别与特征损失相关联,所述特征损失用于将正锚点的一个或多个特征向量的基于像素的属性与和正锚点相关联的、人脸的已知的基于像素的属性进行比较。
50.这种特征向量的示例是面部特征点数据214。面部特征点数据214包括预测面部框内一个或多个面部特征点的预测坐标/位置。例如,可以使用对应于眼睛、嘴角和鼻子的五个面部特征点。
51.面部特征点数据214与面部特征点回归损失相关联,其中,是正锚点i的已知面部特征点位置。面部特征点回归损失将预测面部特征点位置214(即,li)与对应的面部特征点的已知位置进行比较。例如,面部特征点回归损失可以是鲁棒损失函数,例如平滑l1损失函数。但是,本领域技术人员将理解,可以使用其它损失函数。在一些实施例中,面部特征点位置目标可以归一化到中心位置。
52.或者或另外,特征向量可以包括边界框内潜在人脸的嵌套216(即,p
st
)。嵌套216可以包括对应边界框内的人脸的形状和纹理参数。在一些实施例中,相机参数218和/或照明参数220也可以由神经网络106输出。相机参数218可以包括以下各项中的一个或多个:相机位置;相机姿势;和/或相机的焦距。照明(lighting或illumination)参数可以包括以下各项中的一个或多个:光源位置;光源的颜色值;和/或环境光颜色。相机参数218和/或照明参数220可以被称为渲染参数。
53.嵌套216可以与密集回归损失函数l
pixel
相关联。密集回归损失不直接将嵌套216与已知嵌套进行比较。相反,嵌套被后处理以生成预测面部图像222,然后使用回归损失函数将所述预测面部图像与潜在面部图像(即,边界框中的图像)进行比较。因此,该过程的这一分支可被视为自监督。
54.为了生成预测面部图像222,可以使用网格解码器神经网络224处理嵌套,以生成潜在人脸的三维表示,例如三维网格。网格解码器神经网络224包括多层节点,每个节点与一个或多个参数相关联。神经网络的每个节点的参数可以包括一个或多个权重和/或偏差。节点将上一层中的节点的一个或多个输出作为输入。上一层中的节点的一个或多个输出由节点用于使用激活函数和神经网络的参数生成激活值。网格解码器神经网络224包括一个或多个几何卷积层(本文中也称为网格卷积层)。几何卷积层是在几何深度学习中使用的神经网络的一种卷积过滤器层,可以直接应用于网格域。
55.网格解码器还可以包括一个或多个放大层,用于放大网格(即,增加网格中顶点的数量)。放大层可以与几何卷积层交错。例如,几何卷积层可以与放大层交替。
56.网格解码器224用于将嵌套参数216作为输入,并使用一系列神经网络层处理输入,以从训练图像输出二维潜在人脸的形状图和纹理图。网格解码器神经网络的输出可以用符号表示为形状和纹理图包括与输入视觉数据相关的三维形状和纹理信息。在一些实施例中,输出是参数集,描述网格中点的(x,y,z)坐标和网格中每个点的对应(r,g,b)值。在一些实施例中,输出可以是单位球面内的彩色网格。
57.网格解码器可以被预训练,并在神经网络106的训练期间固定其参数。可以结合共同待决的gb专利申请第902524.6号(其内容通过引用的方式并入本文中),描述网格解码器神经网络的示例以及如何训练网格解码器神经网络。
58.网格可以根据无向连通图定义,其中,是包含联合形状(例如(x,y,z))和纹理(例如(r,g,b))信息的n个顶点的集合,ε∈{0,1}n×n是定义顶点之间连接状态的邻接矩阵。但是,应理解,可以使用网格的替代表示。
59.图/网格上的卷积运算符的示例可以使用递归多项式(例如,契比雪夫(chebyshev)多项式)通过用内核g
θ
制定网格过滤来定义。在网格上定义这种卷积运算符时,按以下方式定义一些中间变量是很有用的。非归一化图拉普拉斯(laplacian)可以定义为其中,是对角线矩阵,其中,d
ii
=∑jε
ij
。然后,归一化图拉普拉斯可以定义为l=i
n-d-1/2
εd-1/2
,其中,in是单位矩阵。
60.拉普拉斯可以被傅里叶(fourier)基对角线化使得l=u∧u
t
,其中,然后,可以将给定网格的图傅里叶表示定义为然后,可以将给定网格的图傅里叶表示定义为的倒数。
61.给出这些定义,可以定义图/网格上的卷积运算符g
θ
的示例。过滤器g
θ
可以参数化为k阶的截断契比雪夫多项展开式,如
[0062][0063]
其中,是契比雪夫系数的向量,是在缩放的拉普拉斯是在缩放的拉普拉斯时求得的k阶契比雪夫多项式。tk(x)可以使用tk(x)=2xt
k-1
(x)-t
k-2
(x)递归计算,其中,t0(x)=1,t0(x)=1。
[0064]
然后,谱卷积可以定义为
[0065][0066]
其中,是输入,且这种过滤操作非常高效,仅需要运算。
[0067]
或者或另外,可以使用其它类型的几何/网格卷积(或图卷积)。例如,可以使用其它正交多项式集来代替契比雪夫多项式。
[0068]
使用可微渲染器226对联合形状和纹理图进行进一步处理,以生成边界框内潜在人脸的2d渲染表示222,所述表示可以包括联合形状和纹理图在图像平面上的二维投影。渲染参数集218、220可用于渲染二维视觉数据的表示,例如用于定义渲染中使用的相机模型的参数,即,2d渲染表示222通过表示。例如,可微渲染器226可以是将彩色网格投影到2d图像平面上的3d网格渲染器。这种可微渲染器226的示例可以在genova等人的(cvpr,2018.2,3)中找到,但也可以使用其它渲染器。
[0069]
密集回归损失l
pixel
将渲染的2d人脸222(即,)与训练图像202中的原始面部图像(即,预测面部框内的实测值图像)进行比较。像素差可用于执行比较。密集回归损失的示例可通过以下方式给出:
[0070][0071]
其中,i
*
是实测值训练图像的锚点修剪,h和w分别是锚点修剪的宽度和高度。∥x∥n是l-n范数,例如l-1范数。或者,可以使用其它像素损失函数。
[0072]
多任务目标函数204包括分类损失、框回归损失和特征损失的组合。训练的目的是,对于每个训练锚点i,最小化多任务目标函数。锚点i的多任务损失函数的示例是:
[0073][0074]
其中,{λi}是控制多任务目标函数中不同损失函数的相对重要性的常数。例如,这些参数可以在(0,1]范围内。例如,λ1=0.25、λ2=0.1,且λ3=0.01。
[0075]
多任务目标函数204用于在训练期间更新神经网络106的参数。神经网络106的参数可以使用旨在优化多任务损失函数208的优化过程来更新。例如,优化过程可以是梯度下降算法。优化过程可以使用反向传播,例如通过将多任务损失函数204反向传播到神经网络106的参数。优化程序可以与训练期间变化的学习速率相关联。例如,学习速率可以从初始值(例如10^(

3))开始,然后在第一阈值个周期之后增大,例如在5个周期之后增大到10^(

2)。然后,学习速率可以在进一步的阈值周期之后减小,例如在预定义周期个数时减小预定义倍数。例如,在55和68个周期时,学习速率可能会减小10倍。
[0076]
图3示出了训练神经网络以在图像中进行面部定位的方法的流程图。该方法可以对应于上面结合图2描述的方法。
[0077]
在操作3.1中,将训练图像输入到神经网络,该训练图像包括一个或多个人脸。训练图像可以从包括多个图像的训练数据集中选择,每个图像包括位于已知位置的一个或多个人脸,并具有已知的边界框。人脸的一个或多个特征,例如面部特征点的位置,也可以是已知的。
[0078]
在操作3.2中,使用神经网络处理输入训练图像。
[0079]
在操作3.3中,神经网络为训练图像中的多个训练锚点中的每一个训练锚点输出一组或多组输出数据,每组输出数据包括预测面部分类、对应的人脸框的预测位置和一个或多个对应的特征向量。
[0080]
操作3.1至3.3可以在训练数据中的训练示例的子集上迭代,以形成训练示例的集合。该集合可用于确定操作3.4中的目标函数,例如通过在集合上平均多任务目标函数。或
者,可以对每个训练示例单独地执行操作3.4。
[0081]
在操作3.4中,神经网络的参数根据目标函数更新。对于所述训练图像中的每个正锚点,所述目标函数包括:分类损失,用于将所述正锚点的预测分类与所述正锚点的已知分类进行比较;框回归损失,用于将所述正锚点的人脸框的预测位置与所述人脸框的已知位置进行比较;特征损失,用于将所述正锚点的所述一个或多个特征向量的基于像素的属性与和所述正锚点相关联的、人脸的已知的基于像素的属性进行比较。更新可以在操作3.1至3.3的每次迭代之后执行。或者,更新可以在操作3.1至3.3的多次迭代之后执行。在这些实施例中,多任务损失函数可以包括在训练示例集合上获取的一个或多个期望值。
[0082]
操作3.1至3.4可以在训练数据集上迭代,直到满足阈值条件。阈值条件可以是训练周期的阈值个数。训练周期的阈值个数可以在50-150的范围内,例如70-90的范围内,例如为80。
[0083]
图4示出了用于在图像中进行面部定位的神经网络结构的示例。在一些实施例中,神经网络106可以使用这种结构。
[0084]
神经网络400包括骨干网402。骨干网402可以包括多个卷积层。骨干网402还可以包括多个下采样层,这些下采样层减少了对该层的输入的维数。骨干网可以初始化为预训练的分类网络,例如resnet网络(例如,resnet-152)。例如,对于640
×
640彩色像素的输入图像404大小,骨干网402的结构可以通过以下方式给出:
[0085][0086][0087]
其中,卷积构建块显示在方括号中,下采样由conv3_1、conv4_1和conv5_1执行,步幅为2。骨干网402用于以“自下而上”的方式(即从低索引层到高索引层)通过一系列卷积层(在该示例中标记为c2-c6)处理输入图像404并为每个卷积层生成输出。尽管在本示例中示出了六个层,但可以使用更少或更多的层。在训练期间,可以固定预训练的骨干网的一个或多个层,例如前两层,以提高精度。
[0088]
在训练期间,一个或多个卷积层可以固定到它们的初始预训练值。例如,前两层可
以是固定的。这可以在训练后实现更高的神经网络精度。
[0089]
神经网络400还包括特征金字塔网络406。特征金字塔网络406包括多个特征金字塔级别(在本示例中标记为p2-p6,其中,p6直接作用在骨干网402的最后一层上/与该最后一层共享)。特征金字塔级别可以包括卷积层。卷积层可以是可变形卷积层。卷积层可以与一个或多个放大层交错。特征金字塔406用于以“自上而下”的方式(即,从高索引层到低索引层)处理骨干网402中的对应层的输出,以便生成多个特征图。
[0090]
特征金字塔结构的示例如下所示:
[0091][0092]
其中,每个层的输出的维度在第一列中表示,“锚点”列表示与金字塔的每个层相关联的标度,“步幅”列表示每个层执行的卷积的步幅。例如,在该示例中,p2层与锚点标度16
×
16、20.16
×
20.16和25.4
×
25.4相关联,并使用步幅4执行卷积。但是,应理解,可以选择使用不同的标度和卷积。特征金字塔的较低级别可以与比较高级别更小的标度相关联和/或具有较小的步幅。
[0093]
神经网络400包括骨干网402的层的输出与特征金字塔406的层之间的多个横向连接408。在一些实施例中,横向连接408可以处理关联骨干网402层的输出,然后将其与较高特征金字塔层的输出一起输入到对应的特征金字塔层。换句话说,最高层之后的每个特征金字塔层接收对应骨干网络层的输出和特征金字塔的前一高层的输出的组合作为输入,例如,特征金字塔的层p3接收骨干网的层c3的输出和特征金字塔的层p4的输出的组合作为输入。特征金字塔的较高层(在本示例中,层p6和p5)从骨干网接收其输入,而不将其与前一层的输出组合。
[0094]
特征金字塔的每一层都输出一组特征。可以进一步处理特征以生成输出数据108和/或多任务损失208。每个层中的特征数量可以固定为相同。例如,每个层可以固定为具有256个特征。
[0095]
使用横向连接可以使“自下而上”路径和“自上而下”路径组合。一般来说,自上而下路径可能在语义上较强,但在空间上较粗糙,而自下而上的路径可能在空间上较精细,但在语义上较弱。通过使用横向连接组合路径,可以提高神经网络在面部定位中的性能。
[0096]
在一些实施例中,骨干网402可以是mobilenet网络,例如mobilenet-0.25。这提供了一个更轻量级的模型,可以在单个cpu上基本上实时运行。这些轻量级模型可以在输入图像上使用步幅为4的7
×
7卷积来减小数据大小。密集锚点可以在p4-p5上平铺,以提高性能。在一些实施例中,可变形卷积层被卷积层取代,以加速处理。在训练期间,可以固定预训练的骨干网的一个或多个层,例如前两层,以提高精度。
[0097]
图5示出了用于在图像中进行面部定位的神经网络中横向连接的示例。在该示例中,横向连接适用于特征金字塔的p3级别,尽管它可以经过必要的修改应用于层之间的任
何横向连接。
[0098]
横向连接500将骨干网402的层502(在该示例中,骨干网的c3层)的输出提供到特征金字塔网络406的对应层(在该示例中,特征金字塔的p3层)。横向连接500可用于处理骨干网402的层502的输出以生成处理后的输出504。例如,该处理可以改变骨干网402的层502的输出的维数,使得它可以用作对应特征金字塔层的输入。在所示的示例中,使用1
×
1卷积将骨干网的层502的输出的维数从80
×
80
×
512减少到80
×
80
×
256。每个横向连接可以应用不同的卷积以减少或增加相关联的输出层的维数,以匹配对应的特征金字塔层。
[0099]
对来自特征金字塔的紧接较高层506的输出(在该示例中,p4)进行上采样以增加其维数。在所示的示例中,金字塔网络的p4层的输出被放大了2倍,从40
×
40
×
256到80
×
80
×
256。例如,放大可以通过最近邻居上采样来执行。然后,将放大的输出添加到来自横向连接500的处理后的输出504中,以便生成合并图508。元素加法可用于合并放大的输出与处理后的输出504。
[0100]
合并图508被用作对应于横向连接500(在该示例中,p3层)的特征金字塔网络406的层的输入。p3层将3
×
3可变形卷积应用于合并图508,以便生成输出特征图510。使用可变形卷积可以减少上采样的混叠效应,并执行非刚性上下文建模。
[0101]
图6示出了用于在图像中进行面部定位的神经网络结构的另一示例。该示例的神经网络600基本上与图4的神经网络相同,但为每个特征金字塔层添加了上下文模块602。上下文模块602可以增加接受域并增强神经网络600的刚性上下文建模能力。
[0102]
每个上下文模块602从对应的特征金字塔层获取特征图604作为输入。使用特征图604执行一系列可变形卷积。在第一可变形卷积之后的每个可变形卷积被应用到前一个可变形卷积的输出606a-606c。在所示的示例中,应用了三个3
×
3可变形卷积。但是,应理解,可以应用更少或更多数量的可变形卷积,并且可以使用不同大小的可变形卷积。
[0103]
每个可变形卷积606a-606c的输出被组合以形成增强的输出608。可以进一步处理增强的输出608以生成输出数据108和/或多任务损失208。
[0104]
图7示出了用于执行本文描述的任何方法的系统/装置的示意性示例。所示的系统/装置是计算设备的示例。本领域技术人员应理解,其它类型的计算设备/系统可替代地用于实现本文所述的方法,例如分布式计算系统。
[0105]
装置(或系统)700包括一个或多个处理器702。一个或多个处理器控制系统/装置700的其它组件的操作。一个或多个处理器702例如可以包括通用处理器。一个或多个处理器702可以是单核设备或多核设备。一个或多个处理器702可以包括中央处理单元(central processing unit,cpu)或图形处理单元(graphical processing unit,gpu)。或者,一个或多个处理器702可以包括专用处理硬件,例如risc处理器或具有嵌入式固件的可编程硬件。可以包括多个处理器。
[0106]
系统/装置包括工作或易失性存储器704。一个或多个处理器可以访问易失性存储器704,以便处理数据,并且可以控制将数据存储在存储器中。易失性存储器704可以包括任何类型的ram,例如静态ram(static ram,sram)、动态闪存,例如sd-card。
[0107]
系统/装置包括非易失性存储器706。非易失性存储器706存储一组操作指令708,用于以计算机可读指令的形式控制处理器702的操作。非易失性存储器706可以是任何类型的存储器,例如只读存储器(read only memory,rom)、闪存或磁驱动存储器。
[0108]
一个或多个处理器702用于执行操作指令408以使系统/装置执行本文所述的任何方法。操作指令708可以包括与系统/装置700的硬件组件有关的代码(即,驱动程序),以及与系统/装置700的基本操作有关的代码。一般来说,一个或多个处理器702使用易失性存储器704来临时存储在执行所述操作指令708期间生成的数据,从而执行永久或半永久存储在非易失性存储器706中的操作指令708的一个或多个指令。
[0109]
本文描述的方法的实现可以在数字电子电路、集成电路、专门设计的专用继承电路(application specific integrated circuit,asic)、计算机硬件、固件、软件和/或其组合中实现。这些可以包括计算机程序产品(例如,存储在例如磁盘、光盘、存储器、可编程逻辑器件上的软件),包括计算机可读指令,当由计算机(例如结合图7描述的计算机)执行时,使所述计算机执行本文所述的一个或多个方法。
[0110]
本文所述的任何系统特征也可以作为方法特征提供,反之亦然。如本文所使用,装置加功能特征可以根据它们的对应结构来表示。具体地,方法方面可以应用于系统方面,反之亦然。
[0111]
此外,一个方面中的任何、一些和/或所有特征可以以任何适当的组合应用于任何另一方面中的任何、一些和/或所有特征。还应理解,在本发明的任何方面中描述和定义的各种特征的特定组合可以独立地实现和/或提供和/或使用。
[0112]
尽管已经示出和描述了若干实施例,但本领域技术人员将理解,在不背离本发明的原理的情况下,可以在这些实施例中进行改变,其范围在权利要求中定义。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献