掌桥专利:专业的专利平台
掌桥专利
首页

一种基于人脸特征学习的轻量级多头年龄估计方法

文献发布时间:2023-06-19 12:19:35


一种基于人脸特征学习的轻量级多头年龄估计方法

技术领域

本发明涉及一种基于人脸特征学习的轻量级多头年龄估计方法,属于计算机视觉技术领域。

背景技术

随着科学技术的不断发展,人们越来越追求安全、便捷、舒适的生活,例如人们在享受汽车带来便捷出行同时,也更多的关注行车安全问题。因此,如何改善驾驶安全,保障人身安全是目前汽车研究领域一个重要课题。近些年随着辅助驾驶系统(ADAS)和驾驶员监控系统(DMS)的出现,在一定程度上保障了驾驶的安全性。

驾驶员监控系统利用传感器与算法的融合达到对驾驶员属性、状态的实时监控,提高驾驶的安全性。人脸年龄估计任务作为驾驶员监控系统中一个重要的基础任务,实现高效、准确、稳定的人脸年龄估计算法必定能够在驾驶员监控系统中发挥重大作用。

现有技术中,卷积神经网络在分类任务上取得了较大的提升,其准确率已远高于非深度学习方法。虽然卷积神经网络从早期的浅层神经网络不断发展到目前各种复杂结构,在各大计算机视觉任务中已取得巨大的成功,但庞大的网络很难在实际的算力资源有效地在嵌入式平台上使用,并且目前的年龄估计网络大多单独使用分类或者回归的方法来做年龄估计的任务,在精度上还有很大的提高空间。

因此,如何能够将当前优异的深度学习网络模型适配到人脸年龄估计任务中,并且部署到实际应用场景中是目前丞待解决的重要问题。

发明内容

本发明所要解决的技术问题是克服现有技术的缺陷,提供一种基于人脸特征学习的轻量级多头年龄估计方法。

为达到上述目的,本发明提供一种基于人脸特征学习的轻量级多头年龄估计方法,包括:向构建的多头人脸年龄估计模型中输入预处理后的待测人脸图片,构建的多头人脸年龄估计模型预测输出人脸年龄。

优先地,构建多头人脸年龄估计模型,包括:

预处理人脸图片训练数据集,将人脸图片训练数据集按比例分为训练集、验证集和测试集;以经过通道压缩的SSR-NET特征提取网络作为双支路多头的年龄估计主干网络,在年龄估计主干网络后接上多头网络;

对人脸图片训练数据集利用多头网络进行多次二分类任务和一次回归任务的训练;

利用损失函数引导人脸年龄估计网络学习包括二元交叉熵损失和Smooth-L1损失的最佳参数,使用预处理后的训练集训练多头的年龄估计主干网络,获得最佳多头人脸年龄估计模型;利用测试集测试多头人脸年龄估计模型,若多头人脸年龄估计模型不满足设定的要求,则调整模型参数,使用预处理后的训练集训练多头的年龄估计主干网络,获得多头人脸年龄估计模型。

优先地,人脸图片训练数据集和待测人脸图片均包括多个年龄段的训练人脸图片,训练人脸图片和待测人脸图片均为由车载摄像头采集并经过抠取提取人脸得到的人脸图片,预处理训练人脸图片和预处理待测人脸图片包括:

对人脸图片进行真实年龄的标注,年龄标注数值有M个;

从人脸图片训练数据集中随机次序批量读取人脸图片;

对人脸图片进行数据增强;

对人脸图片进行年龄标签处理。

优先地,年龄标签处理,包括:

对人脸图片标记用于回归的原始标签,原始标签为人脸图片对应的实际年龄;对人脸图片标记用于分类的One-hot年龄编码标签,One-hot年龄编码标签将实际年龄编码成M维,M维由0、1两元素组成的向量。

优先地,对人脸图片训练数据集利用多头网络进行多次二分类任务和一次回归任务的训练,包括:

二分类分支处理二分类任务,回归分支处理一次回归任务,利用回归分支引导多个二分类分支学习更加稳定的年龄估计主干网络,二分类分支计算期望值作为实际预测年龄;

二分类分支计算期望值作为实际预测年龄,包括:

将年龄间隔为[1,M]的年龄估计任务均匀划分为M-1个区间,每个区间宽度μ

多头网络输出预测分布向量

利用公式(1)计算期望值,预测实际年龄y:

其中,μ

优先地,数据增强包括通道处理和几何操作;

其中,通道处理使用灰度化方法,将原本三通道的RGB人脸图片通过通道像素值加权的方法转换成单通道;几何操作包括缩放、随机裁剪和水平翻转,最终输出固定尺寸的人脸图片。

优先地,利用损失函数引导人脸年龄估计网络学习包括二元交叉熵损失和Smooth-L1损失的最佳参数,包括:

总的损失函数如公式(2)所示:

L=λ

其中,L

L

其中,训练集分为多个批次,N表示每个批次有N个人脸图片,i表示第i个人脸图片,p(x)为One-hot数据标签的真实分布;q(x)为二分类支路预测分布;

L

其中,x为回归分支的输出。

优先地,使用预处理后的训练集训练年龄估计主干网络,获得多头人脸年龄估计模型,包括:模型参数包括批处理大小、初始学习率和轮次,

将训练集中的人脸图片输入年龄估计主干网络中,令批处理大小为256,初始学习率为0.0005,训练90个轮次,学习率每30个轮次衰减为原来的0.1倍,基于损失函数依次获得多个训练集的损失函数值L;

选择Adam为模型优化器,令权重衰减率为0.0001;

将验证集中的人脸图片输入年龄估计主干网络中,基于损失函数依次获得多个验证集的损失函数值L;

将损失函数值L作为Y轴,将得到损失函数值L的顺序作为X轴,分别获得训练集的损失值曲线图和验证集的损失值曲线图,训练集的损失值曲线图在下降后趋于平稳,且验证集的损失值曲线图与训练集的损失值曲线图相趋近且不再下降时,得到最优的多支路多头人脸年龄估计模型。

优先地,利用测试集测试多头人脸年龄估计模型,若多头人脸年龄估计模型不满足设定的要求,则调整模型参数,重新使用预处理后的训练集训练多头的年龄估计主干网络,获得多头人脸年龄估计模型,包括:

将训练集训练的模型参数加载到多支路多头人脸年龄估计模型中;

将测试集中的人脸图片输入多支路多头人脸年龄估计模型中,预测测试集中人脸图片中人脸的年龄,基于损失函数依次获得多个测试集的损失函数值;

对预测的年龄进行评估,若预测的年龄与真实年龄相差超过10%-50%,则微调包括轮次、批量大小和学习率的模型参数;

微调包括轮次、批量大小和学习率的模型参数,包括:

如果测试集的损失值曲线图处于下降趋势则认为是欠拟合,此时增大轮次;

如果测试集的损失值曲线图处于下降趋势,且验证集的损失值曲线图处于上升趋势,则认为是过拟合,此时降低轮次;

每次微调包括轮次、批量大小和学习率的模型参数时,批量大小增大32的倍数,学习率增加0.1倍;

如果测试集的损失值曲线图出现损失函数值无限大的情况则调小学习率;

如果测试集的损失值曲线图出现损失函数值不下降的情况则调大学习率;重新训练获得多头人脸年龄估计模型,直至预测的年龄与真实年龄相差小于10%-50%。

一种基于人脸特征学习的轻量级多头年龄估计系统,采用上述所述的方法,包括:

以经过通道压缩的SSR-NET特征提取网络作为双支路多头的年龄估计主干网络;

多头网络包括多个二分类分支和单个回归分支,二分类分支包括3x3卷积层、批量归一化层BN、ReLU激活函数和平均池化层,

回归分支包括3x3卷积层、批量归一化层BN、Tanh激活函数和平均池化层,

通过点乘的方式将二分类分支和回归分支的输出信息进行融合;

为了让回归分支引导二分类分支,在融合输出信息之后引出左头部和右头部;

左头部做二分类任务,并且作为网络的输出;右头部做回归引导,引导年龄估计主干网络学习;

将回归分支的最后一层修改为一个神经节点,并且采用sigmoid激活函数将输出值限制在[0,1]之间,同时将输入的普通标签归一化到[0,1]之间,使得回归分支具有相同尺度的输入输出;

使用Smooth-L1作为损失函数进行网络反向传播。

本发明所达到的有益效果:

一方面,通过使用紧凑的多头主干网络确保了模型的参数量与计算量,能够轻松在移动端上部署;另一方面,结合了分类与回归,利用回归引导分类学习,提升了网络的性能。最终,该方法同时保证了精度和稳定性,实现了在移动端的人脸年龄估计。

附图说明

图1是本发明的流程图;

图2是本发明的网络结构示意图。

具体实施方式

以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

一种基于人脸特征学习的轻量级多头年龄估计方法,包括:

向构建的多头人脸年龄估计模型中输入预处理后的待测人脸图片,构建的多头人脸年龄估计模型预测输出人脸年龄。

进一步地,本实施例中构建多头人脸年龄估计模型,包括:

预处理人脸图片训练数据集,将人脸图片训练数据集按比例分为训练集、验证集和测试集;以经过通道压缩的SSR-NET特征提取网络作为双支路多头的年龄估计主干网络,在年龄估计主干网络后接上多头网络;

对人脸图片训练数据集利用多头网络进行多次二分类任务和一次回归任务的训练;

利用损失函数引导人脸年龄估计网络学习包括二元交叉熵损失和Smooth-L1损失的最佳参数,使用预处理后的训练集训练多头的年龄估计主干网络,获得最佳多头人脸年龄估计模型;利用测试集测试多头人脸年龄估计模型,若多头人脸年龄估计模型不满足设定的要求,则调整模型参数,使用预处理后的训练集训练多头的年龄估计主干网络,获得多头人脸年龄估计模型。

进一步地,本实施例中人脸图片训练数据集和待测人脸图片均包括多个年龄段的训练人脸图片,训练人脸图片和待测人脸图片均为由车载摄像头采集并经过抠取提取人脸得到的人脸图片,预处理训练人脸图片和预处理待测人脸图片包括:

对人脸图片进行真实年龄的标注,年龄标注数值有M个;

从人脸图片训练数据集中随机次序批量读取人脸图片;

对人脸图片进行数据增强;

对人脸图片进行年龄标签处理。

进一步地,本实施例中年龄标签处理,包括:

对人脸图片标记用于回归的原始标签,原始标签为人脸图片对应的实际年龄;对人脸图片标记用于分类的One-hot年龄编码标签,One-hot年龄编码标签将实际年龄编码成M维,M维由0、1两元素组成的向量。

进一步地,本实施例中对人脸图片训练数据集利用多头网络进行多次二分类任务和一次回归任务的训练,包括:

二分类分支处理二分类任务,回归分支处理一次回归任务,利用回归分支引导多个二分类分支学习更加稳定的年龄估计主干网络,二分类分支计算期望值作为实际预测年龄;

二分类分支计算期望值作为实际预测年龄,包括:

将年龄间隔为[1,M]的年龄估计任务均匀划分为M-1个区间,每个区间宽度μ

多头网络输出预测分布向量

利用公式(1)计算期望值,预测实际年龄y:

其中,μ

进一步地,本实施例中数据增强包括通道处理和几何操作;

其中,通道处理使用灰度化方法,将原本三通道的RGB人脸图片通过通道像素值加权的方法转换成单通道;几何操作包括缩放、随机裁剪和水平翻转,最终输出固定尺寸的人脸图片。

进一步地,本实施例中利用损失函数引导人脸年龄估计网络学习包括二元交叉熵损失和Smooth-L1损失的最佳参数,包括:

总的损失函数如公式(2)所示:

L=λ

其中,L

L

其中,训练集分为多个批次,N表示每个批次有N个人脸图片,i表示第i个人脸图片,p(x)为One-hot数据标签的真实分布;q(x)为二分类支路预测分布;

L

其中,x为回归分支的输出。

进一步地,本实施例中使用预处理后的训练集训练年龄估计主干网络,获得多头人脸年龄估计模型,包括:模型参数包括批处理大小、初始学习率和轮次,

将训练集中的人脸图片输入年龄估计主干网络中,令批处理大小为256,初始学习率为0.0005,训练90个轮次,学习率每30个轮次衰减为原来的0.1倍,基于损失函数依次获得多个训练集的损失函数值L;

选择Adam为模型优化器,令权重衰减率为0.0001;

将验证集中的人脸图片输入年龄估计主干网络中,基于损失函数依次获得多个验证集的损失函数值L;

将损失函数值L作为Y轴,将得到损失函数值L的顺序作为X轴,分别获得训练集的损失值曲线图和验证集的损失值曲线图,训练集的损失值曲线图在下降后趋于平稳,且验证集的损失值曲线图与训练集的损失值曲线图相趋近且不再下降时,得到最优的多支路多头人脸年龄估计模型。

进一步地,本实施例中利用测试集测试多头人脸年龄估计模型,若多头人脸年龄估计模型不满足设定的要求,则调整模型参数,重新使用预处理后的训练集训练多头的年龄估计主干网络,获得多头人脸年龄估计模型,包括:

将训练集训练的模型参数加载到多支路多头人脸年龄估计模型中;

将测试集中的人脸图片输入多支路多头人脸年龄估计模型中,预测测试集中人脸图片中人脸的年龄,基于损失函数依次获得多个测试集的损失函数值;

对预测的年龄进行评估,若预测的年龄与真实年龄相差超过10%-50%,则微调包括轮次、批量大小和学习率的模型参数;

微调包括轮次、批量大小和学习率的模型参数,包括:

如果测试集的损失值曲线图处于下降趋势则认为是欠拟合,此时增大轮次;

如果测试集的损失值曲线图处于下降趋势,且验证集的损失值曲线图处于上升趋势,则认为是过拟合,此时降低轮次;

每次微调包括轮次、批量大小和学习率的模型参数时,批量大小增大32的倍数,学习率增加0.1倍;

如果测试集的损失值曲线图出现损失函数值无限大的情况则调小学习率;

如果测试集的损失值曲线图出现损失函数值不下降的情况则调大学习率;重新训练获得多头人脸年龄估计模型,直至预测的年龄与真实年龄相差小于10%-50%。

一种基于人脸特征学习的轻量级多头年龄估计系统,采用上述所述的方法,包括:

以经过通道压缩的SSR-NET特征提取网络作为双支路多头的年龄估计主干网络;

多头网络包括多个二分类分支和单个回归分支,二分类分支包括3x3卷积层、批量归一化层BN、ReLU激活函数和平均池化层,

回归分支包括3x3卷积层、批量归一化层BN、Tanh激活函数和平均池化层,

通过点乘的方式将二分类分支和回归分支的输出信息进行融合;

为了让回归分支引导二分类分支,在融合输出信息之后引出左头部和右头部;

左头部做二分类任务,并且作为网络的输出;右头部做回归引导,引导年龄估计主干网络学习;

将回归分支的最后一层修改为一个神经节点,并且采用sigmoid激活函数将输出值限制在[0,1]之间,同时将输入的普通标签归一化到[0,1]之间,使得回归分支具有相同尺度的输入输出;

使用Smooth-L1作为损失函数进行网络反向传播。

当前基于深度学习的分类、回归算法已经非常成熟,在各个计算机视觉任务上都有很好的表现。为了直接利用研究充分的分类、回归算法,本发明将人脸年龄估计任务转换为一系列二元分类和回归的子问题。通过引入回归来引导二分类,使得年龄估计更加准确。总体框架如图1所示。本发明的整体框架分为三个步骤:

(1)构建用于二分类和回归的数据,分类数据使用One-hot编码,回归数据直接使用标注的标签,具体方法见(二)。

(2)使用相应的训练数据联合训练多头分类、回归网络,学习泛化性更强的人脸特征,主干网络见(三)。

(3)利用损失函数引导人脸年龄估计网络学习最佳参数。

(二)数据预处理

数据由车载摄像头拍摄的人脸图片获得,并利用标注软件对数据进行真实年龄的标注,年龄标注区间为1-100,M=100。并且从数据集中随机次序读取人脸图片,输入的人脸图片为PNG格式。

数据预处理主要包含对人脸图片和年龄标签的处理,对人脸图片的处理融合了通道处理和几何操作,通道处理主要使用灰度化的方法,将原本三通道的RGB人脸图像通过通道像素值加权的方法转换成单通道。几何操作主要包括图片的缩放、随机裁剪和水平翻转,输出的人脸图片最终将图片尺寸固定到120x120。对人脸图片的处理大大增加了人脸图片的多样性,使得样本更加丰富。

本发明将1-100类的分类任务转换成100次二分类任务和一次回归任务。为了适配这种训练方式,年龄标签处理也包含两种,一种为原始标签,另一种为One-hot编码标签。原始标签为人脸实际年龄,用于网络回归。One-hot编码标签用于二分类任务,One-hot年龄编码将实际年龄编码成100维由0,1元素组成的向量,如年龄标签为2,则将前2维置为1,剩下的置为0,如[1,1,0,0...]。该编码方式使得网络能够更加专注于人脸特征学习。

(三)主干网络设计

本方法采用经过通道压缩的SSR-NET特征提取网络作为双支路多头的年龄估计主干网络。

图2为主干网络的总体结构,本发明采用双支路多头的网络设计。左边的二分类分支由3x3卷积、批量归一化、ReLU激活函数、平均池化组成的块构建而成。右边的回归分支由3x3卷积、批量归一化、Tanh激活函数、平均池化组成的块构建而成。左右两个支路的总体结构相似,激活函数不同。回归分支输出只用于网络反向传播,调整网络参数,辅助分类支路学习参数,不作为最终年龄估计的输出。

ReLU激活函数在反向求导的时候梯度不会饱和,收敛速度快,也极大的改善了梯度消失的问题,且不需要指数运算,运算速度快,复杂度低。但是ReLU激活函数对参数初始化和学习率非常敏感,且输出的均值不为0,存在神经元死亡,这会影响网络的收敛性。

Tanh激活函数将输出统一到[-1,1]之间,确保了输出为0均值,收敛性会更好。但是Tanh激活函数需要对数运算,计算量相对较大,且存在梯度饱和的问题。本发明通过点乘的方式将激活函数不同的两个支路的输出信息进行融合,能够很好的互补两支路在反向传播跟新参数过程中的不足。同时,为了让回归算法引导分类算法,本发明采用多头的设计方式。在两个支路的输出信息融合之后引出两个头部,左头部用于做二分类任务,并且作为多头网络的输出,右头部用于回归引导,引导网络学习。相比于流行的主干网络,本发明的年龄估计主干网络非常紧凑,在计算量和参数两上都有很大的优势。同时本发明的多头设计能够学习到更加鲁棒的特征,在泛化性上也更强。

(四)损失函数设计

为了满足多支路多头网络的反向传播与参数迭代,

总的损失函数如公式(2)所示:

L=λ

其中,L

L

其中,训练集分为多个批次,N表示每个批次有N个人脸图片,i表示第i个人脸图片,p(x)为One-hot数据标签的真实分布;q(x)为二分类支路预测分布;

L

其中,x为回归分支的输出。

(五)模型训练与推理

在构建的多支路多头人脸年龄估计模型上使用预处理后的训练集进行模型训练,批处理大小为256,初始学习率为0.0005,训练90个epochs,epochs中文含义为轮次,学习率每30个epochs衰减为原来的0.1倍。选择Adam为模型优化器,权重衰减率为0.0001。

训练集上的损失值在下降后趋于平稳,且验证集上的损失值与训练集上的损失值相趋近且不再下降时,得到最优多支路多头人脸年龄估计模型。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

相关技术
  • 一种基于人脸特征学习的轻量级多头年龄估计方法
  • 多尺度轻量级人脸检测模型的构建方法及基于该模型的人脸检测方法
技术分类

06120113254995