发明内容
鉴于此,本申请提供一种性别识别方法、系统、电子装置及存储介质,以解决现有的神经网络对于一些开集数据有很高的误判率,从而不能够保证性别识别的准确率的问题。
本申请提供的一种性别识别方法,包括:采集人脸图像;对所述人脸图像进行预处理;将预处理后的所述人脸图像输入预先建立的性别识别模型;接收所述性别识别模型对所述人脸图像的性别识别结果,并输出所述性别识别结果;所述预先建立性别识别模型的步骤:获取人脸识别模型,所述人脸识别模型包括特征层、全连接层、第一损失函数;获取修正信息,根据所述修正信息将所述全连接层替换为二分类的全连接层,以及将所述第一损失函数替换为交叉熵损失函数,得到所述性别识别模型。
其中,所述对采集的人脸图像进行预处理包括:利用预先建立的人脸检测模型检测所述人脸图像中的人脸关键点;将所述关键点进行仿射变换至特定点位对所述人脸图像进行校正。
其中,所述交叉熵损失函数为:
其中,M为人脸图像集,i为人脸图像集中的第i个人脸图像,yi为第i个数据的真实标签,p′i为置信度参与后的第i个人脸图像经过全连接层输出的概率;所述概率公式如下:
p′i=c·pi+(1-c)yi
其中,c为置信度,pi为第i个人脸图像在经过全连接层输出的概率。
其中,所述预先建立性别识别模型还包括以下训练所述性别识别模型的步骤:将不同性别的人脸样本数据输入至所述性别识别模型;利用所述交叉熵损失函数计算得到性别分类损失值;计算所述置信度的负对数值,并乘以预设的动态参数,得到置信度损失值;将所述性别分类损失值及所述置信度损失值相加,以得到所述总损失值;当总损失值收敛时,结束训练。
其中,训练所述性别识别模型的步骤还包括:判断所述置信度是否小于预设的第一阈值,若是,则为所述动态参数赋予第一参数,若否,则为所述动态参数赋予第二参数,所述第一参数大于所述第二参数。
其中,采集人脸图像的方法包括:从视频流中获取对同一人脸的N张连续的人脸图像,N为奇数,且大于1;所述性别识别方法还包括:对所述N张连续的人脸图像进行性别识别,得到N个性别识别结果;判断所述N个性别识别结果中,男性结果数量是否大于女性结果数量,若是,输出男性性别识别结果,否则输出女性性别识别结果。
其中,所述性别识别方法还包括:获取对同一人脸的N张连续人脸图像上的人脸图像进行性别识别时,生成的N个置信度判断N个置信度中,是否有小于预设的第二阈值的置信度;若否,判断所述N个性别识别结果中,男性结果数量是否大于女性结果数量,若是则输出男性性别识别结果,否则输出女性性别识别结果;若是,去除N个性别识别结果中,置信度小于所述第二阈值的性别识别结果,得到性别识别结果集,判断所述性别识别结果集中,男性结果数量是否大于女性结果数量,若是则输出男性性别识别结果,否则输出女性性别识别结果。
本申请提供的性别识别系统,包括:图像采集模块,用于采集人脸图像;图像预处理模块,用于对所述人脸图像进行预处理;性别识别模块,用于对输入的人脸图像使用预先建立的性别识别模型进行性别识别,生成性别识别结果;图像输入模块,用于将所述人脸图像输入性别识别模块;结果输出模块,用于接收所述性别识别模块输出的性别识别结果,并输出所述性别识别结果;所述性别识别模块包括:模型获取单元,用于获取预先建立的人脸识别模型,所述人脸识别模型包括特征层、全连接层、第一损失函数;修正单元,用于获取修正信息,根据所述修正信息将所述全连接层替换为二分类的全连接层,以及将所述第一损失函数替换为交叉熵损失函数,得到所述性别识别模型。
本申请提供的电子装置,包括存储器和处理器,所述存储器上存储有计算机程序,所述计算机程序用于被所述处理器执行时,实现上述中的任意一项所述的性别识别方法。
本申请提供的可读存储介质,其上存储有计算机程序,所述计算机程序用于被处理器执行时,实现上述中的任意一项所述的性别识别方法。
本申请上述的性别识别方法、系统、电子装置及存储介质,通过将人脸识别模型的全连接层替换为二分类的全连接层,能够使得模型仅能够输出两种结果,两种结果与性别种类相对应,从而防止模型输出与性别无关的结果,提升性别识别模型识别的准确率。
另外,通过将第一损失函数替换为交叉熵损失函数,由于交叉熵损失函数收敛快,计算过程中求导更简单,能够更快地进行计算,且交叉熵损失函数计算出的损失值均与正确类别的概率有关,且收敛性好,因此使用交叉熵损失函数计算的损失值能够更好地与性别识别模型识别结果的准确率相关联,因此通过交叉熵损失函数训练出来的性别识别模型较好,从而使得性别识别模型进行性别识别时,能够更快、更准确,降低对开集数据的误判率,从而保证性别识别的准确率。
具体实施方式
下面结合附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在不冲突的情况下,下述各个实施例及其技术特征可以相互组合。
请参阅图1,本申请实施例提供一种性别识别方法,包括:S1、采集人脸图像;S2、对人脸图像进行预处理;S3、将预处理后的人脸图像输入预先建立的性别识别模型;S4、接收性别识别模型对人脸图像的性别识别结果,并输出性别识别结果。
在步骤S3中,预先建立性别识别模型的步骤:获取人脸识别模型,人脸识别模型包括特征层、全连接层、第一损失函数;获取修正信息,根据修正信息将全连接层替换为二分类的全连接层,以及将第一损失函数替换为交叉熵损失函数,得到性别识别模型。
在进行性别识别时,由于一些开集数据的照片质量比较低,因此先对采集的人脸图像进行预处理,从而提升照片的质量,使得性别识别模型能够更好地对人脸图像进行识别,因此提升性别识别模型识别结果的准确率。
在预先建立性别识别模型时,会获取一个修正信息,这个修正信息可以是内部预先设置的一个信息,也可以是接收的外部信息,在接收到该信息后,就会将全连接层替换为二分类的全连接层,以及将第一损失函数替换为交叉熵损失函数,得到性别识别模型。
由于现有的性别识别模型对开集数据的误判率较高,在本实施例中,基于预先建立的人脸识别模型,对人脸识别模型进行了改进,由于全连接层在神经网络中的作用是进行分类,因此将人脸识别模型自动生成的全连接层替换为二分类的全连接层,由于二分类的全连接层只能够输出两个分类结果,而性别也只有两种,因此二分类的全连接层输出的分类结果能够与性别一一对应,不会输出与性别无关的结果。
在本实施例中,损失函数在神经网络中的作用是作为学习准则与优化问题相联系,即通过最小化损失函数能够求解和评估模型,而交叉熵损失函数收敛快,计算过程中求导更简单,能够更快地进行计算,而且交叉熵损失函数计算出的损失值均与正确类别的概率有关,因此损失值能够更好地与性别识别模型识别结果的准确率相关联,使得通过交叉熵损失函数训练出来的性别识别模型较好。
在一个实施例中,步骤S1,对采集的人脸图像进行预处理,包括:利用预先建立的人脸检测模型检测人脸图像中的人脸关键点;将关键点进行仿射变换至特定点位对人脸图像进行校正。
仿射变换能够在人脸检测出人脸后将人脸校准输入模型,保证输入图片中人脸关键点位置有较高的一致性,从而便于模型学习有效特征。
仿射变换是在几何上定义为两个向量空间之间的一个仿射变换或者仿射映射,这里将第一个向量空间中的开集数据中的人脸关键点映射到第二个向量空间中的特定点位,能够在第二向量空间中生成质量较高的图像,取第二个空间中的图像为输入性别识别模型的图像,能够更好地被性别识别模型来识别。上述中的特定点位,可以为在第二向量空间中,人脸的正面图像空白图,通过放射变化,将人脸关键点映射到上述空白图内,从而生成质量较高的图像。
在一个实施例中,交叉熵损失函数公式如公式1所示:
在公式(1)中,p′i的计算方法如公式2所示:
p′i=c·pi+(1-c)yi (2)
在上述公式中,M为人脸图像集,i为人脸图像集中的第i个人脸图像,yi为第i个数据的真实标签,p′i为置信度参与后的第i个人脸图像经过全连接层输出的概率;c为置信度,pi为第i个人脸图像在经过全连接层输出的概率。
其中,p、c、pi还有如公式3所示的计算关系:
在本实施例中,S型函数为sigmoid激活函数,置信度c由特征层单独连接一个sigmoid激活函数获得。
由于交叉熵损失函数在进行计算的过程中,对于最后一层权重的梯度只跟输出值和真实值的差值成正比,因此收敛快又由于交叉熵损失函数的反向传播是连乘的,因此使得整个交叉熵损失函数的权重矩阵的更新加快,从而进一步加快了性别识别模型的收敛速度。
又由于交叉熵损失函数是将随机事件或其有关随机变量的取值映射为非负实数以表示该随机事件的“风险”或“损失”的函数,所以交叉熵损失函数计算出的损失值与性别识别模型输出的正确类别的概率有关。
另外引入置信度使得得到损失值可信度/准确性较高,因此使用交叉熵损失函数计算的损失值能够更好地与性别识别模型识别结果的准确率相关联。
综上,通过本实施例的交叉熵损失函数训练出来的性别识别模型较好。
在一个实施例中,预先建立性别识别模型还包括以下训练性别识别模型的步骤:将不同性别的人脸样本数据输入至性别识别模型;利用优化的交叉熵损失函数计算得到性别分类损失值;计算置信度的负对数值,得到置信度损失值;将性别分类损失值及置信度损失值相加,以得到总损失值;当总损失值收敛时,结束训练。
在本实施例中,通过加入置信度损失值对总损失值进行优化,能够防止在模型训练的过程中,性别识别模型向输出概率置信度为0的方向进行优化。
在该实施例中,使用动态参数参与了置信度损失值的计算,从而对总损失值进行优化,其中动态参数的值为预先设定至少两个值,一个较大值,一个较小值。
在置信度损失值过大时,使用置信度损失值乘以取值为较小值的动态参数;在置信度损失值过小时,使用置信度损失值乘以取值为较大值的动态参数;从而使得置信度损失值在总损失值中只占据较小的比例,使得置信度损失值占的比例小于分类损失值占的比例,在该实施例中,置信度损失值及分类损失值的比重为3:7。
在一个实施例中,训练性别识别模型的步骤还包括:判断置信度是否小于预设的第一阈值,若是,则为动态参数赋予第一参数,若否,则为动态参数赋予第二参数,第一参数大于第二参数。
在该实施例中,预先设定的第一阈值可以根据训练性别识别模型时的情况进行设置或调整,在本实施例中,第一阈值为0.3,在第一阈值为0.3时,置信度损失值为1.2。
当置信度小于0.3时,置信度损失值大于1.2,为了协调置信度损失值在总损失值中的权重,就需要增大置信度损失值,为置信度损失值乘以取值为第一参数的动态参数,在本实施例中,第一参数为上述实施例中的较大值,取值为250,从而使得乘以第一参数的置信度损失值能够与性别分类损失值制衡,优化性别识别模型,提高性别识别模型输出结果的置信度。
当置信度大于0.3时,置信度损失值小于1.2,这种情况下,性别识别模型能够输出一个较高的置信度,因此需要减小置信度损失值的占据的比重,让性别识别模型着重对分类损失值进行优化,从而增加性别识别模型对性别识别结果的优化,在减小置信度损失值的占据的比重时,为置信度损失值乘以取值为第二参数的动态参数,在本实施例中,第二参数为上述实施例中的较小值,取值为0.001。
在本实施例中,阈值作为一个临界点,让性别识别模型可以在置信度0.3附近得到有效优化,即,当置信度大于0.3时,性别识别模型的输出结果是可取的,当置信度小于0.3时,性别识别模型的输出结果就要慎重考虑甚至排除这个输出结果,以提升性别识别模型输出结果的准确率。
在一个实施例中,采集人脸图像的方法包括:从视频流中获取对同一人脸的N张连续的人脸图像,N为奇数,且大于1;性别识别方法还包括:对N张连续的人脸图像进行性别识别,得到N个性别识别结果;判断N个性别识别结果中,男性结果数量是否大于女性结果数量,若是,输出男性性别识别结果,否则输出女性性别识别结果。
在该实施例中,是对性别识别的结果进行投票,男性的性别识别结果多,则输出男性性别识别结果,女性的性别结果多,则输出女性的性别识别结果,由于N是一个大于1的奇数,因此肯定会出现男性多于女性,或女性多于男性的结果,不会出现男性等于女性的结果。
在一个实施例中,性别识别方法还包括:获取对同一人脸的N张连续人脸图像上的人脸图像进行性别识别时,生成的N个置信度;判断N个置信度中,是否有小于预设的第二阈值的置信度;若否,判断N个性别识别结果中,男性结果数量是否大于女性结果数量,若是则输出男性性别识别结果,否则输出女性性别识别结果;若是,去除N个性别识别结果中,置信度小于第二阈值的性别识别结果,得到性别识别结果集,判断性别识别结果集中,男性结果数量是否大于女性结果数量,若是则输出男性性别识别结果,否则输出女性性别识别结果。
该实施例的原理如图2所示,先获取同一人脸的N张连续的人脸图像,对N张连续的人脸图像进行性别识别,判断性别识别结果的置信度是否小于阈值,若是,则统计男性及女性的性别识别结果数量,若否,则去除该性别识别结果,随后判断男性的性别识别结果数量是否多于女性,若是,则输出男性的性别识别结果,若否,则输出女性的性别识别结果。
对于改进的性别识别模型,第二阈值取值为0.3,当输入一张人脸图像后,除了输出一个性别识别结果外,还会生成一个置信度,根据上述实施例中的步骤可知,当置信度低于第二阈值0.3时,该结果不可靠,不进行人脸识别结果的输出。因此,从视频流采集的图像中,某些帧的人脸图像不会有性别识别结果,因此,采用N张连续的图像,进行投票,且去除其中置信度小于阈值0.3的性别识别结果后,剩余的男性性别识别结果数量和女性性别识别结果数量进行对比,男性性别识别结果数量多则输出男性的性别识别结果,反之输出女性的性别识别结果。
将N设置为大于1的奇数,是因为若N张人脸图像的置信度均大于第二阈值0.3,则奇数张人脸图像的识别结果,进行男性性别识别结果数量和女性性别识别结果数量的对比时,肯定会有一个最高值,将这个最高值作为输出结果,防止这种情况下,男性性别识别结果数量和女性性别识别结果数量相同。
请参阅图3,本申请实施例提供一种性别识别系统,包括:图像采集模块1、图像预处理模块2、性别识别模块3、图像输入模块4及结果输出模块5。
图像采集模块1用于采集人脸图像;图像预处理模块2用于对人脸图像进行预处理;性别识别模块3用于对输入的人脸图像使用预先建立的性别识别模型进行性别识别,生成性别识别结果;图像输入模块4用于将预处理后的人脸图像输入性别识别模块3;结果输出模块5用于接收性别识别模块3输出的性别识别结果,并输出性别识别结果。
在一个实施例中,性别识别模包括:模型获取单元及修正单元;模型生成单元用于获取预先建立的人脸识别模型,人脸识别模型包括特征层、全连接层、第一损失函数;修正单元用于获取修正信息,根据修正信息将全连接层替换为二分类的全连接层,以及将第一损失函数替换为交叉熵损失函数,得到性别识别模型。
在一个实施例中,图像预处理模块2包括:人脸关键点采集单元及校正单元;人脸关键点采集单元用于利用预先建立的人脸检测模型检测人脸图像中的人脸关键点;校正单元用于将关键点进行仿射变换至特定点位对人脸图像进行校正。
在一个实施例中,交叉熵损失函数公式如下所示:
在公式(1)中,p′i的计算方法如下所示:
p′i=c·pi+(1-c)yi
在上述公式中,M为人脸图像集,i为人脸图像集中的第i个人脸图像,yi为第i个数据的真实标签,p′i为置信度参与后的第i个人脸图像经过全连接层输出的概率;c为置信度,pi为第i个人脸图像在经过全连接层输出的概率。
其中,p、c、pi还有如下所示的计算关系:
在本实施例中,S型函数为sigmoid激活函数,置信度c由特征层单独连接一个sigmoid激活函数获得。
在一个实施例中,优化单元还包括:损失值计算子单元及第一求和子单元;损失值计算子单元用于利用优化的交叉熵损失函数计算得到分类损失值,并计算置信度的负对数值,得到置信度损失值;相加子单元用于将分类损失值及置信度损失值相加,以对总损失值进行优化。
在一个实施例中,性别识别模块还包括:样本数据输入单元、性别分类损失计算单元、置信度损失计算单元、求和单元、第一判断单元;样本数据输入单元用于将不同性别的人脸样本数据输入至性别识别模型;性别分类损失计算单元用于利用交叉熵损失函数计算得到性别分类损失值;置信度损失计算单元用于计算置信度的负对数值,并乘以预设的动态参数,得到置信度损失值;求和单元用于将性别分类损失值及置信度损失值相加,以得到总损失值;第一判断单元用于判断当总损失值收敛时,结束训练。
在一个实施例中,性别识别模块还包括:第二判断单元及赋值单元,第二判断单元用于判断置信度是否小于预设的第一阈值;赋值单元用于置信度小于第一阈值时为动态参数赋予第一参数,并用于置信度大于第一阈值时为动态参数赋予第二参数。
在一个实施例中,图像采集模块1还用于从视频流中获取对同一人脸的N张连续的人脸图像,N为奇数,且大于1;性别识别系统还包括:调用模块、第一判断模块;调用模块用于对N张连续的人脸图像进行性别识别,得到N个性别识别结果;第一判断模块用于判断N个性别识别结果中,男性结果数量是否大于女性结果数量,若是,则调用结果输出模块输出男性性别识别结果,否则调用结果输出模块输出女性性别识别结果。
在一个实施例中,性别识别系统还包括:置信度获取模块及第二判断模块;置信度获取模块用于获取对同一人脸的N张连续人脸图像上的人脸图像进行性别识别时,生成的N个置信度;第二判断模块用于判断N个置信度中,是否有小于预设的第二阈值的置信度;若没有小于预设的第二阈值的置信度,则判断N个性别识别结果中,男性结果数量是否大于女性结果数量,若是则输出男性性别识别结果,否则输出女性性别识别结果;若有小于预设的第二阈值的置信度,去除N个性别识别结果中,置信度小于第二阈值的性别识别结果,得到性别识别结果集,并判断性别识别结果集中,男性结果数量是否大于女性结果数量,若是则调用结果输出模块输出男性性别识别结果,否则调用结果输出模块输出女性性别识别结果。
本申请的性别识别系统与前述的性别识别方法一一对应,关于本申请性别识别系统的具体限定,参见前述的性别识别方法,在此不再赘述。
本申请实施例提供一种电子装置,请参阅4,该电子装置包括:存储器601、处理器602,存储器601上存储有计算机程序,计算机程序可在处理器602上运行,处理器602执行该计算机程序时,实现前述中描述的性别方法。
进一步的,该电子装置还包括:至少一个输入设备603以及至少一个输出设备604。
上述存储器601、处理器602、输入设备603以及输出设备604,通过总线605连接。
其中,输入设备603具体可为摄像头、触控面板、物理按键或者鼠标等等。输出设备604具体可为显示屏。
存储器601可以是高速随机存取记忆体(RAM,Random Access Memory)存储器,也可为非不稳定的存储器(non-volatile memory),例如磁盘存储器。存储器601用于存储一组可执行程序代码,处理器602与存储器601耦合。
进一步的,本申请实施例还提供了一种可读存储介质,该可读存储介质可以是设置于上述各实施例中的电子装置中,该可读存储介质可以是前述中的存储器601。该可读存储介质上存储有计算机程序,该计算机程序用于被处理器602执行时实现前述实施例中描述的性别识别方法。
进一步的,该可存储介质还可以是U盘、移动硬盘、只读存储器601(ROM,Read-OnlyMemory)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
尽管已经相对于一个或多个实现方式示出并描述了本申请,但是本领域技术人员基于对本说明书和附图的阅读和理解将会想到等价变型和修改。本申请包括所有这样的修改和变型,并且仅由所附权利要求的范围限制。特别地关于由上述组件执行的各种功能,用于描述这样的组件的术语旨在对应于执行所述组件的指定功能(例如其在功能上是等价的)的任意组件(除非另外指示),即使在结构上与执行本文所示的本说明书的示范性实现方式中的功能的公开结构不等同。
即,以上所述仅为本申请的实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,例如各实施例之间技术特征的相互结合,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
另外,在本申请的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。另外,对于特性相同或相似的结构元件,本申请可采用相同或者不相同的标号进行标识。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本申请中,“示例性”一词是用来表示“用作例子、例证或说明”。本申请中被描述为“示例性”的任何一个实施例不一定被解释为比其它实施例更加优选或更加具优势。为了使本领域任何技术人员能够实现和使用本申请,本申请给出了以上描述。在以上描述中,为了解释的目的而列出了各个细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本申请。在其它实施例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本申请的描述变得晦涩。因此,本申请并非旨在限于所示的实施例,而是与符合本申请所公开的原理和特征的最广范围相一致。