生成眼角识别模型的方法及识别眼部图像中眼角的方法与流程

文档序号:27234834发布日期:2021-11-03 18:19阅读:215来源:国知局
生成眼角识别模型的方法及识别眼部图像中眼角的方法与流程

1.本公开涉及图像处理技术领域,尤其涉及识别眼部图像中眼角是否可见的方法。


背景技术:

2.在身份识别等技术领域,虹膜特征因具有稳定性、唯一性和非侵犯性的特点,有着广泛的市场前景和科学研究价值。
3.在实际应用场景中,采集的包含人眼的眼部图像,有时会出现一些不利于虹膜识别的情况。例如,因遮挡等情况,眼部图像只包含眼部的一部分,缺少眼角等特征;又如,眼部图像中人眼存在不同程度的倾斜。这些问题都制约了虹膜识别的效率和准确性。
4.鉴于此,需要一种对眼部图像的处理方案,以解决上述问题。


技术实现要素:

5.为此,本公开提供了生成眼角识别模型的方法及识别眼部图像中眼角的方法,以力图解决或至少缓解上面存在的问题。
6.根据本公开的第一个方面,提供了一种生成眼角识别模型的方法,包括步骤:对眼部图像中的眼角关键点进行标注,得到标注数据;对眼部图像及标注数据分别进行预处理,得到预处理后的眼部图像及预处理后的标注数据;构建眼角识别模型,并设置初始模型参数;将预处理后的眼部图像输入眼角识别模型,以识别其中的眼角关键点,并输出包含眼角关键点的特征图;对特征图进行处理,生成关于眼角关键点的数值坐标;基于标注数据、数值坐标和特征图,确定损失值,以更新眼角识别模型的模型参数,直到损失值满足预定条件时,将所对应的眼角识别模型作为最终生成的眼角识别模型。
7.可选地,在根据本公开的方法中,对眼部图像及标注数据分别进行预处理,得到预处理后的眼部图像及预处理后的标注数据的步骤包括:按照预设尺寸,从眼部图像中裁剪出人眼区域,并将裁剪出的图像作为预处理后的眼部图像;对标注数据中的人眼关键点的标注坐标进行归一化,得到预处理后的标注数据。
8.可选地,在根据本公开的方法中,眼角识别模型包括相互耦接的卷积处理组件和分类组件;卷积处理组件至少包括多个处理阶段、且各处理阶段间耦接有注意力模块,其中,多个处理阶段适于提取预处理后的眼部图像的特征,注意力模块适于增强预处理后的眼部图像的特征。
9.可选地,在根据本公开的方法中,将预处理后的眼部图像输入眼角识别模型,以识别其中的眼角关键点,并输出包含眼角关键点的特征图的步骤包括:通过卷积处理组件,提取预处理后的眼部图像的眼角关键点,并输出包含眼角关键点的位置坐标的第一特征图;通过分类组件,预测所提取的眼角关键点可见的概率,并输出包含概率的第二特征图。
10.可选地,在根据本公开的方法中,对特征图进行处理,生成关于眼角关键点的数值坐标的步骤包括:生成与所述第二特征图相同大小的特征图模板,且特征图模板的值分布在区间[

1,1];对特征图模板与第二特征图进行点积运算,生成数值坐标。
[0011]
可选地,在根据本公开的方法中,标注数据包括:眼角关键点的标注坐标及指示眼角关键点是否可见的属性标签,其中,当眼角关键点可见时,属性标签为1,当眼角关键点不可见时,属性标签为0。
[0012]
可选地,根据本公开的方法还包括步骤:若属性标签为0,则只计算数值坐标的损失值;若属性标签为1,则计算数值坐标的损失值和第二特征图的损失值。
[0013]
根据本公开的第二个方面,提供了一种识别眼部图像中眼角的方法,包括步骤:将眼部图像输入眼角识别模型,经处理后输出包含眼角关键点的特征图;对特征图中的眼角关键点的坐标进行转换,生成转换后坐标;若转换后坐标不在眼部图像的坐标范围内,则确认眼部图像中眼角不可见;若转换后坐标在眼部图像的坐标范围内,则通过计算眼角关键点的置信度,来确认眼部图像中的眼角是否可见,其中眼角识别模型通过执行如上所述的方法来生成。
[0014]
可选地,在根据本公开的方法中,通过计算眼角关键点的置信度,来确认眼部图像中的眼角是否可见的步骤,包括:基于特征图与特征图模板,计算方差;基于方差,确定眼角关键点的置信度;若置信度大于阈值,则确认眼部图像中的眼角可见;若置信度不大于阈值,则确认眼部图像中的眼角不可见。
[0015]
根据本公开的第三个方面,提供了一种计算设备,包括:至少一个处理器;和存储有程序指令的存储器,当程序指令被处理器读取并执行时,使得计算设备执行上述方法。
[0016]
根据本公开的第四个方面,提供一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得计算设备执行上述方法。
[0017]
根据本公开的技术方案,在训练眼角识别模型时,先通过预处理使标注数据标准化。之后,针对人眼的结构特征设计卷积神经网络,来提取人眼特征信息,所构建的眼角识别模型,在保证检测精度的同时,又兼顾了网络延迟问题。
[0018]
上述说明仅是本公开技术方案的概述,为了能够更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为了让本公开的上述和其它目的、特征和优点能够更明显易懂,以下特举本公开的具体实施方式。
附图说明
[0019]
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
[0020]
图1示出了根据本公开一个实施例的计算设备100的示意图;图2示出了根据本公开一个实施例的生成眼角识别模型的方法200的流程示意图;图3示出了根据本公开一个实施例的眼角识别模型300的结构示意图;图4示出了根据本公开一个实施例的注意力结构的处理过程的示意图;图5和图6示出了根据本公开一个实施例的眼角识别模型300的主要模块的示意图;图7示出了根据本公开一种实施例的识别眼部图像中眼角的方法700的流程示意
图。
具体实施方式
[0021]
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0022]
针对现有技术中存在的问题,本公开提供了一种识别眼部图像中眼角的方案。通过该方案,能够快速识别出眼部图像中的眼角。在根据本公开的实施例中,识别出的眼角用眼角关键点来指示,更具体地,采用左眼角点和右眼角点来指示。这样,一方面可以过滤掉眼部图像中因遮挡等原因造成的眼角不在图像中的情况,以此得到更符合规范的眼部图像。这对后续的其他任务会有帮助,比如在判断虹膜属于左眼或右眼时,眼角是否存在对其判断结果有着较大的影响。另一方面,在虹膜识别系统中,通过识别出眼角,可根据眼角的两个角点(即,左眼角点和右眼角点)对虹膜图像进行旋转,使眼角两个点处在同一水平面上,这将加速后续虹膜识别的速度。
[0023]
根据本公开的实施方式,通过计算设备来执行生成眼角识别模型的方法以及识别眼部图像中眼角的方法。图1是示例性的计算设备100的构造图。
[0024]
如图1所示,在基本配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
[0025]
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(
µ
p)、微控制器(
µ
c)、数字信息处理器(dsp)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(alu)、浮点数单元(fpu)、数字信号处理核心(dsp核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
[0026]
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如ram)、非易失性存储器(诸如rom、闪存等)或者它们的任何组合。计算设备中的物理内存通常指的是易失性存储器ram,磁盘中的数据需要加载至物理内存中才能够被处理器104读取。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用222可以布置为在操作系统上由一个或多个处理器104利用程序数据124执行指令。操作系统120例如可以是linux、windows等,其包括用于处理基本系统服务以及执行依赖于硬件的任务的程序指令。应用122包括用于实现各种用户期望的功能的程序指令,应用122例如可以是浏览器、即时通讯软件、软件开发工具(例如集成开发环境ide、编译器等)等,但不限于此。当应用122被安装到计算设备100中时,可以向操作系统120添加驱动模块。
[0027]
在计算设备100启动运行时,处理器104会从存储器106中读取操作系统120的程序指令并执行。应用122运行在操作系统120之上,利用操作系统120以及底层硬件提供的接口来实现各种用户期望的功能。当用户启动应用122时,应用122会加载至存储器106中,处理器104从存储器106中读取并执行应用122的程序指令。
[0028]
计算设备100还包括存储设备132,存储设备132包括可移除存储器136和不可移除存储器138,可移除存储器136和不可移除存储器138均与存储接口总线134连接。
[0029]
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个a/v端口152与诸如显示器153或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个i/o端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
[0030]
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以是这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(rf)、微波、红外(ir)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
[0031]
计算设备100还包括与总线/接口控制器130相连的存储接口总线134。存储接口总线134与存储设备132相连,存储设备132适于进行数据存储。示例的存储设备132可以包括可移除存储器136(例如cd、dvd、u盘、可移动硬盘等)和不可移除存储器138(例如硬盘驱动器hdd等)。
[0032]
在根据本公开的计算设备100中,应用122包括用于执行本公开的生成眼角识别模型的方法200,和/或,识别眼部图像中眼角的方法700的指令。程序数据124中可以包括用于训练生成眼角识别模型的训练数据、及该眼角识别模型相关的模型参数,本公开对此不做限制。此外,上述指令可以指示处理器104执行本公开的上述方法,以识别眼部图像中的眼角(即,确认眼部图像中的眼角是否可见)。
[0033]
图2示出了根据本公开一个实施例的生成眼角识别模型的方法200的流程示意图。根据一种实施例,方法200可以在计算设备(如上所述的计算设备100)中执行。方法200的目的在于通过训练,生成眼角识别模型,该眼角识别模型能够应用在眼角识别方案中,从眼部图像中识别出眼角。
[0034]
如图2所示,方法200始于步骤s210。在步骤s210中,对眼部图像中的眼角关键点进行标注,得到标注数据。
[0035]
眼部图像例如可以按照以下方法来采集:摄像机面对人脸正面,采集包含人眼的眼部图像。通常,该眼部图像需要重点突出人眼部位,换言之,在眼部图像中,人眼部分应该占据图像中的较大区域。
[0036]
根据本公开的实施方式,对采集到的眼部图像进行标注,标注策略为对人眼的眼角坐标点进行标注,记为眼角关键点。标注数据包括:眼角关键点的标注坐标及指示对应眼角关键点是否可见的属性标签。其中,当眼角关键点可见(即,眼部图像中存在该眼角关键
点)时,属性标签为1;当眼角关键点不可见(即,眼部图像中不存在该眼角关键点)时,属性标签为0。
[0037]
在一种实施例中,若眼角关键点不可见,则记录的标注坐标为(

1,

1),同时将该点的属性标签记为0;若眼角关键点可见,则记录的标注坐标是该眼角关键点在眼部图像中的实际坐标,同时将该点的属性标签记为1。此外,标注数据的内容和顺序为:左眼角点的标注坐标、左眼角点的属性标签(0或1)、右眼角点的标注坐标、右眼角点的属性标签(0或1)。
[0038]
随后,在步骤s220中,对眼部图像及标注数据分别进行预处理,得到预处理后的眼部图像及预处理后的标注数据。
[0039]
根据本公开的实施方式,步骤s220包含两部分:对眼部图像的预处理、对标注数据的预处理,且两部分分别进行。以下分别说明之。
[0040]
1)针对眼部图像的预处理按照预设尺寸,从眼部图像中裁剪出人眼区域对应的图像,并将裁剪出的图像作为预处理后的眼部图像。预设尺寸例如是眼角识别模型所需的输入图像尺寸。
[0041]
当然,为使训练的眼角识别模型更具鲁棒性,在预处理阶段,还可以先对眼部图像做必要的数据增强处理,再从中裁剪出人眼区域。数据增强处理包括但不限于,高斯模糊、亮度调整、仿射变换等。
[0042]
2)针对标注数据的预处理从眼部图像中裁剪出人眼区域对应的图像,会使得眼角的坐标信息也随之变化。因此,需要对标注数据中的人眼关键点的标注坐标进行归一化,将归一化后的标注坐标、与其对应的属性标签一起,作为预处理后的标注数据。
[0043]
在一种实施例中,眼角关键点的标注坐标根据公式(1)进行计算,将其坐标值归一化到[

1, 1]之间,这样做的目的是为与眼角识别模型的输出结果保持同一分布。
[0044]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)其中,x、y为归一化之前的标注坐标,、为归一化后的坐标,w、h为裁剪后的眼部图像的尺寸。
[0045]
进一步地,为方便计算,在预处理后的标注数据中,若眼角关键点可见,则标注坐标分别为对应到裁剪后的图像上的坐标(即,、);若眼角关键点不可见,则标注坐标均记作0。
[0046]
随后,在步骤s230中,构建眼角识别模型,并设置初始模型参数。
[0047]
根据本公开的实施方式,眼角识别模型包括相互耦接的卷积处理组件和分类组件。
[0048]
卷积处理组件通过对预处理后的眼部图像进行卷积等操作,来提取出图像中的眼角关键点,并定位到其位置坐标,以生成指示眼角关键点位置的第一特征图。换言之,第一特征图中包含所识别的眼角关键点的位置坐标。更具体地,生成的第一特征图有2张,分别指示左眼角点和右眼角点的位置坐标。第一特征图例如可以是热图,本公开不限于此。
[0049]
接着,将2张第一特征图输入分类组件,进行归一化等操作,对应输出2张第二特征图。在第二特征图中,各像素值均代表对应位置处像素可见的概率,全部像素值之和为1。由于输入分类组件的第一特征图中指示了眼角关键点的位置坐标,故而,从第二特征图中即
可确定所识别的眼角关键点可见的概率。更具体地,2张第二特征图分别指示左眼角点和右眼角点可见的概率。
[0050]
在一种实施例中,针对人眼所具有的结构化信息,设计卷积处理组件。这些结构化信息例如是,眼部包含眼皮、虹膜等,上下眼皮所形成的曲线具有相交点(即,眼角点),虹膜位于上下眼皮所形成的曲线之间,等等。在本公开中,将其称之为眼部图像的结构特征(即下文中所述的“特征”)。
[0051]
卷积处理组件至少包括多个处理阶段、且各处理阶段间耦接有注意力模块。其中,多个处理阶段用于提取预处理后的眼部图像的特征,注意力模块用于增强预处理后的眼部图像的特征。
[0052]
以下示出根据本公开一种实施例的眼角识别模型的示例。应当了解,该眼角识别模型仅作为示例,任何基于本公开实施例的描述,来构建的眼角识别模型,均在本公开的保护范围之内。
[0053]
图3示出了根据本公开一种实施例的眼角识别模型300的结构示意图。如图3所示,眼角识别模型300包括相互耦接的卷积处理组件310和分类组件320。将预处理后的眼部图像输入眼角识别模型300,经处理后由分类组件320输出特征图。
[0054]
如图3,卷积处理组件310又包含依次耦接的卷积层(conv)、第一处理阶段(stage1)、中间处理模块、第二处理阶段(stage2)、中间处理模块、第三处理阶段(stage3)、中间处理模块、上采样模块(up sample)、中间处理模块、卷积层(conv)。
[0055]
其中,中间处理模块又包含注意力模块和卷积模块。第一处理阶段(stage1)、第二处理阶段(stage2)、第三处理阶段(stage3)用于提取预处理后的眼部图像的特征。中间处理模块中的注意力模块,用于增强预处理后的眼部图像的特征。
[0056]
根据一种实施方式,在构建眼角识别模型300时,为平衡其精度和推理速度,对其输入尺寸和内存访问成本进行了必要的限制。眼角识别模型300的结构设计主要策略是减少分支,减少重复特征的使用。
[0057]
如表1示出了具体的网络结构。应当指出,表1仅作为示例,本公开并不限制眼角识别模型的具体网络结构。
[0058]
表1
层名称输出尺寸卷积核尺寸步长模块重复次数输出通道数 channelsinput128
×
192
ꢀꢀꢀ
3conv164
×
9632132stage132
×
4832/1464attention32
×
48
ꢀꢀ
164conv232
×
4831164stage216
×
2432/16128attention16
×
24
ꢀꢀ
1128conv316
×
24311128stage38
×
1232/14256attention8
×
12
ꢀꢀ
1256conv48
×
12311256
up sample16
×
243 1128attention16
×
24
ꢀꢀ
1128conv516
×
24311128conv616
×
241112softmax16
×
24
ꢀꢀ
12
其中,从conv1到conv6的层结构组成了卷积处理组件310,softmax层表示分类组件320。conv1和conv6分别表示位于第一处理阶段stage1和分类组件softmax之前的卷积层。
[0059]
根据一种实施例,中间处理模块又包含注意力模块(attention)和卷积模块(conv2、conv3、conv 4、conv 5),如表1,attention和conv2构成连接stage1和stage2的中间处理模块,attention和conv3构成连接stage2和stage3的中间处理模块,以此类推。经中间处理模块的特征图的输出尺寸和通道数均不发生变化。
[0060]
如表1,在卷积处理组件310中,经各层的卷积等操作,提取预处理后的眼部图像的眼角关键点。当特征图的输出尺寸下降到8
×
12时,不再降低特征图,对其进行上采样操作,使得特征图尺寸为16
×
24,再经过conv6得到两张特征图,作为第一特征图,两张第一特征图中分别表示左眼角点和右眼角点。
[0061]
之后,将两张第一特征图输入分类组件320,预测所提取的左眼角点和右眼角点可见的概率,并输出两张特征图,作为第二特征图,分别表示左眼角点和右眼角点可见的概率。根据一种实施例,第一特征图经过softmax函数,得到的第二特征图是离散概率分布,且第二特征图的像素值之和为1。根据左眼角点对应坐标位置的概率值,就可以判断出左眼角点是否可见。同理,根据另一张第二特征图中右眼角点对应坐标位置的概率值,可以判断出右眼角点是否可见。
[0062]
如前文所述,在根据本公开的实施例中,针对人眼所具有的结构化信息,为增强该部分特征,设计相应的注意力模块attention。图4示出了根据本公开一个实施例的注意力模块的处理过程。如图4所示,首先,对输入的特征图f做激活(如,relu)处理,得到 。这样做的目的是对特征图进行归一化,起到正则作用。然后将送入sigmoid函数模块中,该模块的目的是为增强眼皮与虹膜等区域间的边界信息。最后,将经sigmoid函数模块的输出与f进行哈达玛积运算,输出特征图o。
[0063]
如公式(2)示出sigmoid函数模块的一种表达式:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)式中,δ表示sigmoid函数,avg表示对特征图求均值。
[0064]
此外,从表1中还可以看出,在每个处理阶段(stage1、stage2和stage3)中,均会设置大于1的模块重复次数,表示主要模块的出现次数。应当了解,当模块重复次数为1时,也可以认为模块只出现1次,即不用再重复该层的结构。
[0065]
根据本实施方式,各处理阶段stage中的主要模块的结构一致,均包含2个主要模块,为便于描述,记作模块a和模块b。并且,每个stage中的第一个模块均采用模块b,后面模块均采用模块a。继续如表1,stage1和stage3的模块重复次数均为4,即,stage1和stage3均由模块b、模块a、模块a、模块a依次耦合而成。stage2中模块重复次数为6,即,stage2由模块b、模块a、模块a、模块a、模块a、模块a依次耦合而成。
[0066]
图5和图6示出了眼角识别模型300的主要模块的示意图。其中,图5示出的为模块a,图6示出的为模块b。图中的h
×
w
×
c表示输入特征图宽为w、高为h、通道为c,图中省略了输入特征图的数量。
[0067]
在图5中,输入特征通道经过通道分离操作(channel splite),其中一半经过1
×
1的卷积操作,输出的通道为t
×
c/2个,t为通道膨胀系数;然后再经过3
×
3的卷积操作,使通道恢复到c/2个通道;之后,将两路分支进行拼接操作(concat)。此过程不涉及到下采样操作。
[0068]
在图6中,s=2表示对特征图进行下采样操作,t的作用与图5中的作用相同。将两路分支直接进行拼接操作(concat),此过程中不对输入通道c进行分离,目的是为通过增加特征图的通道数量,来弥补下采样过程中造成的特征损失。
[0069]
需要说明的是,此处仅作为示例,示出了根据本公开一种实施方式的眼角识别模型的结构。本公开并不限于此。
[0070]
随后,在步骤s240中,将预处理后的眼部图像输入眼角识别模型,以识别其中的眼角关键点,并输出包含眼角关键点的特征图。
[0071]
如上文所述,将预处理后的眼部图像输入眼角识别模型,通过卷积处理组件,提取预处理后的眼部图像的眼角关键点,并输出包含眼角关键点的位置坐标的第一特征图。之后,将第一特征图输入分类组件,由其预测所提取的眼角关键点可见的概率,并输出包含该概率的第二特征图。根据本实施例,将第二特征图作为最终输出的包含眼角关键点的特征图。
[0072]
由于眼角识别模型输出的是特征图,特征图大小对模型的推理速度有较大的影响,因此,为提升模型在部署时的效率,网络最后一层使用的是小特征图。但同时也会带来精度的损失,这主要是因为输出特征图的尺寸与网络输入尺寸相差倍数较大引起的。如表1的示例,输出特征图尺寸为16
×
24,输入的图像尺寸为128
×
192。为缓解使用小特征图造成的精度损失,可将输出的特征图转换为数值坐标,然后对数值坐标进行损失计算。
[0073]
故,在随后的步骤s250中,对特征图进行处理,生成关于眼角关键点的数值坐标。
[0074]
根据一种实施例,先生成与特征图(即,第二特征图)相同大小的特征图模板,换言之,特征图模板尺寸为16
×
24,且对应于步骤s220中对标注数据的预处理,令特征图模板中的各坐标对应的像素值分布在区间[

1,1]。在一种实施例中,针对每一张特征图,分别生成其横坐标对应的特征图模板x、纵坐标对应的特征图模板y。例如,可以通过公式(3)生成特征图模板,分别对应着横纵坐标:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)其中,i、j为第二特征图的横纵坐标,、分别为横纵坐标的特征图模板,特征图模板从左到右,每列数值相同,同理,特征图模板从上到下,每行数值相同;w、h为特征图模板的尺寸。
[0075]
为进一步说明特征图模板的计算,以下举例说明之。假设一张特征图为:0.00.00.00.00.00.00.00.00.10.0
0.00.00.10.60.10.00.00.00.10.00.00.00.00.00.0即,对应在公式(3)中,j=1 ... w, i = 1 ... h,假如w=h=5,按照公式(3)计算后,分别得到横纵坐标的特征图模板。其中,特征图模板x为:
‑1‑
0.500.51
‑1‑
0.500.51
‑1‑
0.500.51
‑1‑
0.500.51
‑1‑
0.500.51特征图模板y为:
‑1‑1‑1‑1‑1‑
0.5

0.5

0.5

0.5

0.5000000.50.50.50.50.511111在计算出两张第二特征图各自的特征图模板后,对特征图模板与第二特征图进行点积运算,生成数值坐标。更具体地,将两个特征图模板分别与对应的第二特征图进行点积运算,得到两个数值,分别对应横坐标和纵坐标,即为一个眼角关键点的数值坐标。对两个第二特征图均进行如上计算,即可得到:左眼角点的数值坐标和右眼角点的数值坐标。
[0076]
在一种实施例中,第二特征图记作z1和z2,且每张第二特征图对应着特征图模板x和y,z1与x点积运算得到x,z1与y点积运算得到y。那么,x、y就是特征图转换后的数值坐标,记作(x,y)。换言之,就是将输出的两张第二特征图,转换成两个(x,y)。
[0077]
随后,在步骤s260中,基于标注数据、数值坐标和特征图,确定损失值,以更新眼角识别模型的模型参数,直到损失值满足预定条件时,将所对应的眼角识别模型作为最终生成的眼角识别模型。
[0078]
在一种实施例中,损失值分为两部分,通过公式(4)确定:
ꢀꢀ
(4)其中,表示第二特征图,表示数值坐标,t为属性标签,函数l
d
指对数值坐标计算的损失值,函数l
f
指对第二特征图计算的损失值,为平衡两部分损失值的超参数。其中,l
f
部分对数值坐标起到监督的作用,使最终计算的结果更加准确。
[0079]
在一种实施例中,l
d
部分可以采用欧氏距离等方式来计算,l
f
部分可以采用kl散度等函数来计算。当然不限于此。
[0080]
此外,在具体计算损失值时,若标注数据中属性标签为0,则只计算数值坐标的损失值,即,只计算公式(4)中函数l
d
部分;若属性标签为1,则按照公式(4)计算损失值,即计算数值坐标的损失值和第二特征图的损失值。
[0081]
根据本公开的方法200,在训练眼角识别模型时,先通过预处理使标注数据标准化。之后,针对人眼的结构特征设计卷积神经网络,来提取人眼特征信息,所构建的眼角识
别模型,在保证检测精度的同时,又兼顾了网络延迟问题。
[0082]
此外,设计损失函数对眼角识别模型输出的特征图进行损失计算,使回归结果更加准确。具体而言,一方面,在计算损失值时,通过将特征图转换到数值坐标的方式,有效缓解了特征图尺寸小所造成的精度损失;另一方面,通过kl散度学习特征图分布,对数值坐标的损失部分起到监督作用,使得损失值的计算更加准确。
[0083]
图7示出了根据本公开一种实施例的识别眼部图像中眼角的方法700的流程示意图。方法700可以在方法200的基础上实现。如图7所示,方法700始于步骤s710。
[0084]
在步骤s710中,将待识别的眼部图像输入眼角识别模型,经处理后输出包含眼角关键点的特征图。
[0085]
在一种实施例中,经眼角识别模型输出两张特征图(即,前文中提到的第二特征图),其中一张特征图指示左眼角点的坐标、以及左眼角点可见的概率,另一张特征图指示右眼角点的坐标、以及右眼角点可见的概率。
[0086]
其中,眼角识别模型可以通过方法200训练生成。关于眼角识别模型的处理流程,可参考前文方法200中的相关描述,此处不再赘述。
[0087]
此外,根据本公开的实施方式,在将待识别的眼部图像输入眼角识别模型之前,还可以对该眼部图像进行预处理。预处理过程可参考方法200中针对眼部图像的预处理。按照预设尺寸,从眼部图像中裁剪出人眼区域对应的图像,并将裁剪出的图像作为预处理后的眼部图像。预设尺寸例如是眼角识别模型所需的输入图像尺寸。应当了解,此处不再需要对眼部图像进行数据增强处理。
[0088]
随后在步骤s720中,对特征图中的眼角关键点的坐标进行转换,生成转换后坐标。
[0089]
如前文所述,眼角识别模型输出的特征图的值(包含所识别的眼角关键点的坐标)分布在[

1,1],在此处,将其转换到原图上的坐标。根据一种实施例,参考方法200中针对标注数据的预处理,采用公式(1)的逆操作,对左眼角点和右眼角点的坐标分别进行转换,即可得到对应的转换后坐标。具体表示如下述公式(5):
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)其中,、为转换后坐标,、为输出的特征图中的眼角关键点的坐标,、为该特征图的尺寸。
[0090]
根据本公开的实施方式,眼角关键点是否可见,需要结合所识别眼角关键点的数值坐标点的位置(即,转换后坐标)及由特征图的分布特征得到的置信度,来共同决定。具体确定过程如下述步骤s730和步骤s740。
[0091]
在随后的步骤s730中,判断转换后坐标是否在待处理的眼部图像的坐标范围内,若转换后坐标不在该眼部图像的坐标范围内,则确认眼部图像中眼角不可见。
[0092]
具体而言,若左眼角点的转换后坐标,不在眼部图像的坐标范围内,则确认左眼角点不可见;若右眼角点的转换后坐标,不在眼部图像的坐标范围内,则确认右眼角点不可见。
[0093]
随后在步骤s740中,若转换后坐标在眼部图像的坐标范围内,则通过计算眼角关键点的置信度,来确认眼部图像中的眼角是否可见。
[0094]
需要说明的是,对两个特征图的处理方式是相同的,故而本公开不再具体区分是
对应左眼角点或右眼角点的特征图,统称为特征图来进行描述。应当理解,当左眼角点的转换后坐标和/或右眼角点的转换后坐标,在眼部图像的坐标范围内时,对各自对应的特征图分别执行如下的步骤,来对应计算出左眼角点和/或右眼角点的置信度,进而确认左眼角点和/或右眼角点是否可见。
[0095]
在一种实施例中,通过如下方式来计算眼角关键点的置信度。
[0096]
第一步,基于特征图与特征图模板,计算方差。特征图模板与前述步骤s250中的特征图模板保持一致,此处不再赘述。针对每个特征图,先将特征图与特征图模板x、y分别进行哈达玛积运算,得到两个中间运算图像;将各中间运算图像的像素值求和,就得到对应的和值,记作mx,my。由于特征图是经过softmax处理后的,它可以作为坐标离散分布的一种概率表示,因此特征图与特征图模板x进行哈达玛积运算,再求和得到的结果mx,即表示在x方向上的均值;同理,my表示在y方向上的均值。
[0097]
之后,根据公式(6)(7)计算mx和my对应的方差:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(7)其中,m表示特征图中每个像素点的值,var1和var2表示方差。
[0098]
同样地,对两个特征图分别进行如上运算,其分别对应两个方差值。
[0099]
第二步,对于每个特征图,基于两个方差var1和var2,再计算眼角关键点的置信度,可以采用公式(8)(9)来计算置信度,分别记作conf1和conf2:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(9)其中,和为超参数,且一定要取大于0的数,防止分母为零情况产生,具体数值可根据具体情况进行选择。
[0100]
之后,将两个置信度conf1和conf2取均值,作为该特征图对应的置信度。
[0101]
这样,当置信度大于阈值时,确认眼部图像中的眼角可见。当置信度不大于阈值时,确认眼部图像中的眼角不可见。
[0102]
根据本公开的识别眼部图像中眼角的方法700,通过眼部识别模型预测出眼部图像中的眼角。预测的结果中包含左眼角点和右眼角点的位置坐标和可见的概率值。之后,对预测的结果进行一系列的数据解码处理,来得到最终的识别结果。
[0103]
基于本公开的方案,在对眼部图像或虹膜图像进行采集时,通过分析当前图像帧中的眼角是否可见,可以提前识别出采集的图像存在遮挡或眼角不在图像中的情况,进而过滤掉这类图像,以此得到更符合规范的、用于虹膜识别的图像。这对后续的其他任务会有帮助。比如,在判断虹膜属于左眼或右眼时,眼角是否存在对其判断结果有着较大的影响。又如,在虹膜识别系统中,通过对眼角的可视化分析,可根据眼角的两个角点对虹膜图像进行旋转,使眼角两个点处在同一水平面上,这将加速后续虹膜识别的速度。因此,本公开对虹膜识别、vr等领域具有重要的启示意义。
[0104]
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本公开
的方法和设备,或者本公开的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、u盘、软盘、cd

rom或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本公开的设备。
[0105]
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本公开的方法。
[0106]
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
[0107]
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本公开的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本公开也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本公开的内容,并且上面对特定语言所做的描述是为了披露本公开的优选实施方式。
[0108]
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本公开的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0109]
类似地,应当理解,为了精简本公开并帮助理解各个公开方面中的一个或多个,在上面对本公开的示例性实施例的描述中,本公开的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本公开要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,公开方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本公开的单独实施例。
[0110]
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
[0111]
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0112]
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例
中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本公开的范围之内并且形成不同的实施例。例如,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0113]
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该公开的目的的元素所执行的功能。
[0114]
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
[0115]
尽管根据有限数量的实施例描述了本公开,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本公开的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本公开的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本公开的范围,对本公开所做的公开是说明性的而非限制性的,本公开的范围由所附权利要求书限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1