1.一种人脸识别方法,具体包括如下步骤:
步骤1:使用公开的人脸数据集作为搜索过程使用的数据集,其中包括200人的58000多张人脸图像,以8:2的比例划分训练集和测试集,并将训练集对半拆分为所需的训练集和验证集;
数据集划分完成后,根据人脸的预处理技术,使用MTCNN检测面部标记用以将人脸对齐,然后减去每个通道的平均值对像素归一化处理,同时随机翻转图片,将图像填充后再随机裁剪,最后对所有数据进行重排序;
步骤2:层级能耗模型构建,采集神经网络推理过程中各层的运行时间T与功率P,包括卷积层、池化层和全连接层;首先对运行时间进行建模,记为 模型分为两部分:KT阶常规多项式和特殊多项式 公式为:所建模型第一部分的KT阶常规多项式是一个与输入特征XT相关的函数,特征向量XT包含了神经网络每一层中的超参,不同类型的网络层超参有所区别,卷积层包含输入尺寸、输出尺寸、滤波器大小、填充值和步长这五个特征;池化层包含输入尺寸、输出尺寸、步长和卷积核大小这四个特征;全连接层包含输入尺寸和输出尺寸这两特征;其中xi表示XT中第i个分量,qij是其中xi在第j项中的指数,cj则是待学习的系数;
第二部分对应特殊多项式 处理与每一层相关的物理运算,包括内存访问总数和浮点运算次数两个特征,但是如第一部分所述,不同类型的网络层对应的XT不同,所以内存访问总数和浮点运算次数时需要依据各层的特征进行计算;其中c′s是待学习的系数;
然后对功率进行建模,记为 与上述运行时间模型类似,模型分为两部分:Kp阶常规多项式和特殊多项式 公式为:所建模型第一部分的Kp阶常规多项式是一个与输入特征向量XP相关的函数,由于功率模型最终的值必然有上限,特征向量XP在XT的基础上扩展了XT所有特征的对数,即卷积层包含输入尺寸、输入尺寸的对数、输出尺寸、输出尺寸的对数、滤波器大小、滤波器大小的对数、填充值、填充值的对数、步长和步长的对数;池化层包含输入尺寸、输入尺寸的对数、输出尺寸、输出尺寸的对数、步长、步长的对数、卷积核大小和卷积核大小的对数;全连接层包含输入尺寸、输入尺寸的对数、输出尺寸和输出尺寸的对数;mij是特征xi的第j项中的指数,zj是待学习的系数;第二部分的特殊多项式与上述 同理;
第二部分对应特殊多项式 所谓特殊即这部分主要处理与每一层相关的物理运算,包括内存访问总数和浮点运算次数两个特征,但是如第一部分所述,不同类型的网络层对应的XP不同,所以内存访问总数和浮点运算次数时需要依据各层的特征进行计算;其中z′k是待学习的系数;
最终根据采集的数据进行训练直至模型参数收敛;
步骤3:整体能耗模型构建,对于一个N层的网络架构,将每一层的运行时间 求和,计算出神经网络总运行时间 公式为:接着通过每一层的运行时间 和功率 计算得到该层的功耗,N层功耗之和除以总运行时间得到平均功率 公式为:最后计算神经网络架构整体能耗 其中 表示神经网络一次推理的总时间,表示在推理过程中的平均功率,结合公式(2‑1)和公式(2‑2),整体能耗的计算公式为:步骤4:为神经网络初始化一组候选操作集合 其中每个操作附带初始权重α,即架构编码;使用Cell作为架构搜索的基础模块,一个Cell是由N个节点组成的有向无环图,每个节点就是一个隐表示,每条边表示一个混合操作;将节点i和节点j之间原本离散的一些操作松弛为所有可能的操作的softmax映射之和 即混合操作,其中不同类型的线段表示不同操作;其中 表示节点间的候选操作集合, 表示节点i、j之间某个操作o的权重,公式为:(i) (j)
节点x 的值由其所有前驱节点经过各自的混合操作计算并求和后得到;其中x 表示(i,j)前驱节点值,o 表示节点i、j之间的有向边代表的混合操作,公式为:
步骤5:设计用于寻找最优神经网络架构的损失函数L,选择交叉熵损失函数作为原损失函数L1,并在原损失函数之上加入与能耗相关的损失C,C由步骤3构建的网络整体能耗估测模型获得,其中λ为超参,公式为:L=L1+λ·C (4‑1)
先是固定神经网络自身的权重w,用梯度下降的方法优化架构编码α在验证集上的损失公式为;
其中m为学习率, 表示α在 上的梯度;
接着固定架构编码α,用梯度下降的方法优化权重w在训练集上的损失 公式为:
其中n为学习率, 表示w在 上的梯度;
然后重复上述步骤2、3直至权重w和编码α收敛;最后从每一个混合操作中选出α值最大的操作替代原先的混合操作,其中两节点间颜色较深的箭头表示α值较大的那个操作;至此完成单个Cell的搜索;
整个神经网络架构将由多个如步骤4所述的Cell堆叠而成;堆叠完成后先初始化整个网络的权重,然后用原先8:2划分得到的训练集重新训练整个网络架构,并在测试集上验证其性能;
步骤6:将步骤5搜索得到的网络应用于人脸识别中,输入可能包含人脸的原始图像,使用OpenCV检测出图像中人脸位置,并用传统的回归树模型检测人脸中的关键点,然后根据这些关键点对人脸进行对齐与校准,其中关键点包括眼睛、鼻子和嘴角部位,接着将校准后的单张人脸图像作为最终搜索得到的网络架构的输入,最终网络会输出一个向量,相同或相似人脸的向量之间距离小,而不同人脸的向量之间距离大;当给定一张人脸图片,检测数据库中与之最相似的人时,即可转化为求与该张人脸图片的向量距离最近的图片。