CN107909026B - 基于小规模卷积神经网络年龄和/或性别评估方法及*** - Google Patents
基于小规模卷积神经网络年龄和/或性别评估方法及*** Download PDFInfo
- Publication number
- CN107909026B CN107909026B CN201711118413.XA CN201711118413A CN107909026B CN 107909026 B CN107909026 B CN 107909026B CN 201711118413 A CN201711118413 A CN 201711118413A CN 107909026 B CN107909026 B CN 107909026B
- Authority
- CN
- China
- Prior art keywords
- size
- image
- input
- module
- cnn
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/172—Classification, e.g. identification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
- G06F18/2148—Generating training patterns; Bootstrap methods, e.g. bagging or boosting characterised by the process organisation or structure, e.g. boosting cascade
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/44—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
- G06V10/443—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
- G06V10/449—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
- G06V10/451—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
- G06V10/454—Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/178—Human faces, e.g. facial parts, sketches or expressions estimating age from face image; using age information for improving recognition
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Biomedical Technology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Multimedia (AREA)
- Evolutionary Biology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Oral & Maxillofacial Surgery (AREA)
- Human Computer Interaction (AREA)
- Computational Linguistics (AREA)
- Biodiversity & Conservation Biology (AREA)
- Image Analysis (AREA)
Abstract
本申请描述的多个实施例提供了可以对人脸图像执行年龄和性别评估***的多个示例,该人脸图像的尺寸大于给定的小规模硬件卷积神经网络(CNN)模块可支持的输入像素的最大值。在一些实施例中,该年龄和性别评估***首先将高分辨率的输入人脸图像分割成一组合适尺寸的图像块,相邻的图像块之间均具有严谨设计的重叠部分。然后由小规模CNN模块,例如Hi3519 SoC的内嵌CNN模块分别处理每个图像块。对应于该组图像块的输出随后被合并,以获得对应于该输入人脸图像的输出,并且该合并后的输出可以被该年龄和性别评估***中的后续层进一步处理,为该输入人脸图像生成年龄和性别分类。
Description
优先权要求及相关专利申请
本专利申请依照35 U.S.C.119(e),要求美国临时专利申请62/428,497(申请名称:基于有限分辨率小规模CNN模块的卷积神经网络(CNN)(CONVOLUTIONAL NEURALNETWORKS(CNN)BASED ON RESOLUTION-LIMITED SMALL-SCALE CNN MODULES);发明人:王星、吴谦伟、梁杰;申请日:2016年11月30日)的优先权。该美国临时申请的内容以引用形式被并入本申请,并作为本申请的一部分。
本申请还与正在审查中的美国专利申请15/441,194(申请名称:基于有限分辨率小规模CNN模块的卷积神经网络(CNN)***(CONVOLUTIONAL NEURAL NETWORK(CNN)SYSTEMBASED ON RESOLUTION-LIMITED SMALL-SCALE CNN MODULES);发明人:王星、吴谦伟、梁杰;申请日:2017年2月23日)相关。该美国专利申请以引用形式被并入本申请,并作为本申请的一部分。本申请还与正在审查中的美国专利申请15/657,109(申请名称:采用嵌入式***的小规模卷积神经网络(CNN)模块的人脸检测(FACE DETECTION USING SMALL-SCALECONVOLUTIONAL NEURAL NETWORK(CNN)MODULES FOR EMBEDDED SYSTEMS);发明人:王星、梅迪·塞伊菲、陈明华、吴谦伟、梁杰;申请日:2017年7月21日)相关。
技术领域
本申请一般涉及机器学习和人工智能领域,更具体而言,涉及使用小规模硬件卷积神经网络(CNN)模块从输入人脸图像中评估人的性别和年龄组的***、装置和技术。
背景技术
深度学习(DL)是机器学习和人工神经网络的一个基于一组算法的分支,该算法通过使用具有很多个处理层的人工神经网络来试图建模数据中的高层次抽象。典型的DL架构可包括许多层的神经元和数百万个参数。可以在配备有GPU的高速计算机上用海量数据训练这些参数,并由在深层网络也能适用的新的训练算法来指导,诸如修正线性单元(ReLU)、漏失(或丢弃)、数据集增强,以及随机梯度下降(SGD)。
在现有的DL架构之中,卷积神经网络(CNN)是最流行的架构之一。虽然CNN背后的思想在20多年前就被发现了,但是,CNN的真正的能力只是在深度学习理论的近期发展之后才被认识到。到目前为止,CNN已经在许多人工智能和机器学习领域,诸如人脸识别、图像分类、图像字幕生成、可视问答以及自动驾驶汽车中取得了巨大成功。
在很多人脸识别应用中,人脸检测都是比较重要的过程。很多人脸检测技术可以容易地检测近距离的正向脸部。然而,在无约束情形下,实现稳健并快速的人脸检测依然是非常困难的。这是因为,这些情形通常与人脸的大量变化相关,这些变化包括姿态变化、遮挡、夸张的表情以及极端的光照变化。可以处理这些无约束情形下的有效人脸检测技术包括:(1)在“用于人脸检测的卷积神经网络级联”(A Convolutional Neural NetworkCascade for Face Detection)(H.Li,Z.Lin,X.Shen,J.Brandt,and G.Hua,计算机视觉和模式识别,IEEE会议学报(Proc.IEEE Conf.on Computer Vision and PatternRecognition),2015年6月1日)中描述的级联卷积神经网络(CNN)结构(下文称之为“级联CNN”或者“级联CNN结构”);以及(2)在“利用多任务级联卷积网络的接合人脸检测和对齐”(Joint Face Detection and Alignment Using Multitask Cascaded ConvolutionalNetworks)(K.Zhang,Z.Zhang,Z.Li,and Y.Qiao;IEEE信号处理学报(IEEE SignalProcessing Letters),Vol.23,No.10,pp.1499-1503,2016年10月)中描述的多任务级联CNN结构(下文称之为“MTCNN”或者“MTCNN结构”)。
在级联CNN中,由粗至精的级联CNN架构用于人脸检测。更具体地,该级联CNN架构不使用单个深度神经网络,而是使用在输入图像的不同分辨率上操作的多个浅层神经网络,从而该CNN可以快速地在低分辨率级舍弃背景区域,然后在最终高分辨率级谨慎地评估少量候选区域。为了提高定位效率,在每个检测/分类级之后采用校正级,以调整已检测窗口(或者“边界框”)的位置。因此,该级联CNN通常需要6级或者6个简单的CNN:三个级或CNN用于二进制人脸检测/分类,而另外三个用于边界框校正。由于在每级采用的级联设计以及简单的CNN,因此该人脸检测结构高度适用于在嵌入式环境中运行。需要注意,级联CNN内的每个边界框校正级都需要额外的计算开销。此外,在该级联CNN中,人脸检测和人脸对齐的固有相关性被忽略了。
在MTCNN中,多任务级联CNN通过多任务学习,利用统一标准的级联CNN整合人脸检测和人脸对齐操作。原则上,该MTCNN还采用多个由粗至精的CNN级,从而对输入图像的不同分辨率进行操作。然而,在MTCNN中,在每一级,利用单个CNN结合训练人脸关键点定位、二进制人脸分类和边界框对准。因此,MTCNN只需要三个级。更特别地,MTCNN的第一级迅速地通过浅层CNN生成候选人脸窗口。接下来,该MTCNN的第二级利用更复杂的CNN,通过舍弃大量非人脸窗口筛选出候选窗口。最终,MTCNN的第三级使用处理能力更强的CNN,以确定每个输入窗口是否包括人脸。如果确定包括,则对五个人脸关键点的位置进行估计。相对于先前的人脸检测***,MTCNN的性能得到了明显的改善。相对于上文所述的级联CNN结构,MTCNN结构通常更适于在资源有限的嵌入式***上执行。
发明内容
本申请描述的多个实施例提供了关于可以对人脸数字图像(下文中也称之为“人脸图像”)执行年龄和性别分类的年龄和性别评估***的多个示例,该人脸数字图像的尺寸可大于给定的小规模硬件卷积神经网络(CNN)模块可支持的输入像素的最大值。在一些实施例中,本申请提出的年龄和性别评估***首先将高分辨率的输入人脸图像分割成一组合适尺寸的图像块(也被称为“子图像”),各图像块与邻近的图像块均具有严谨设计的重叠部分。然后由小规模CNN模块,例如来自华为技术有限公司的子公司,海思半导体有限公司的Hi3519芯片组的内嵌CNN模块分别处理每个图像块。对应于该组图像块的输出随后被合并,以获得对应于高分辨率输入人脸图像的输出,并且该合并后的输出可以被该年龄和性别评估***中的后续的层进一步处理,从而为该输入人脸图像生成年龄和性别分类。
本申请提出的年龄和性别评估***可在包括至少一个小规模硬件CNN模块的低成本嵌入式***中实现,并且可以与同样可在该低成本嵌入式***上实现的人脸检测***集成。在一些实施例中,该年龄和性别评估***可与该人脸检测***连接,从而在由该人脸检测***生成的已检测人脸图像上执行年龄和性别评估,其中,年龄和性别评估***以及人脸检测***可以使用至少一个如Hi3519等的小规模CNN模块,以执行其指定的操作。通过将该基于子图像的技术应用于高分辨率人脸图像,本申请提出的年龄和性别评估***可以在小规模CNN模块上执行年龄和性别评估,并且不会影响到年龄和性别评估的准确度。基于已获取并检测到的人脸图像,在嵌入式***内现场执行年龄和性别评估,而无需独立的设备、***或服务器执行该操作的能力可显著降低操作成本。在一些实施例中,本申请提出的年龄和性别评估还可以在不包括人脸检测结构的低成本嵌入式***上实现。在这些实施例中,该低成本嵌入式***可直接通过一个或多个外部源接收到人脸图像,并随后利用该年龄和性别评估***对接收到的人脸图像执行专门的年龄和性别评估。
一方面,公开了一种利用具有最大输入尺寸限制的小规模卷积神经网络(CNN)模块对人脸图像执行年龄和性别评估的过程。该过程包括步骤:接收主要由人脸覆盖的输入人脸图像,随后根据最大输入尺寸限制,确定该输入人脸图像的尺寸是否大于该小规模CNN模块可支持的最大输入图像尺寸。如果是,则该过程进一步包括,确定该输入人脸图像的尺寸是否满足预定义输入图像尺寸限制。该预定义输入图像尺寸限制为满足可将输入图像划分为一组具有第二尺寸的子图像的多个图像尺寸中的一个给定图像尺寸,其中该第二尺寸小于该最大输入图像尺寸。如果该输入人脸图像的尺寸满足该预定义输入图像尺寸限制,则该过程还包括步骤:将该输入人脸图像划分为一组具有第二尺寸的子图像;利用该小规模CNN模块处理该组子图像,以生成特征图阵列;将该特征图阵列合并为对应于该输入人脸图像的一组合并特征图;利用两个或多个全连接层处理该组合并特征图,从而为该输入人脸图像中的人生成年龄和/或性别分类。
在一些实施例中,如果该输入人脸图像的尺寸不满足该预定义输入图像尺寸限制,则该过程还包括步骤:将该输入人脸图像的尺寸重新设定为满足该预定义输入图像尺寸限制的给定图像尺寸;将该重新设定尺寸的输入人脸图像划分为一组具有第二尺寸的子图像;利用该小规模CNN模块处理该组子图像,以生成特征图阵列;将该特征图阵列合并为对应于该重新设定尺寸的输入人脸图像的一组合并特征图;利用两个或多个全连接层处理该组合并特征图,从而为该输入人脸图像中的人生成年龄和/或性别分类。
在一些实施例中,将该输入人脸图像的尺寸重新设定为该给定图像尺寸包括:如果该输入人脸图像的尺寸大于该给定图像尺寸,则将该输入人脸图像降采样至该给定图像尺寸;如果该输入人脸图像的尺寸小于该给定图像尺寸,则将输入人脸图像上采样至该给定图像尺寸。
在一些实施例中,如果该输入人脸图像的尺寸小于或等于与该小规模CNN模块相关的最大输入图像尺寸,则该过程直接利用该小规模CNN模块处理该输入人脸图像,而无需将该输入人脸图像划分为具有更小尺寸的一组子图像。
在一些实施例中,如果该输入人脸图像的尺寸小于或等于该小规模CNN模块的最大输入图像尺寸,则该过程还包括步骤:将该输入人脸图像的尺寸上采样至满足该预定义输入图像尺寸限制的给定图像尺寸;将该重新设定尺寸的输入人脸图像划分为一组具有第二尺寸的子图像;利用该小规模CNN模块处理该组子图像,以生成特征图阵列;将该特征图阵列合并为对应于该重新设定尺寸的输入人脸图像的一组合并特征图;利用两个或多个全连接层处理该组合并特征图,从而为该输入人脸图像中的人生成年龄和/或性别分类。
在一些实施例中,该输入人脸图像为人脸检测CNN模块的输出,该人脸检测CNN模块从输入视频图像中检测人脸图像。
在一些实施例中,该小规模CNN模块包括三个卷积层,其中该三个卷积层中的每一个均后接有修正线性单元(ReLU)层和池化层。
在一些实施例中,该两个或多个全连接层的最后一个全连接层包括柔性最大值分类器。
另一方面,公开了一种利用至少一个小规模CNN模块的年龄和性别评估***。该年龄和性别评估***包括:输入模块,用于接收主要由人脸覆盖的输入人脸图像;小规模CNN模块,与该输入模块的输出相连,用于利用一组滤波器处理人脸图像,其中该小规模CNN模块具有最大输入尺寸限制;合并模块,与该小规模CNN模块的输出相连;以及决策模块,包括两个或多个全连接层,并与该合并模块的输出相连。在一些实施例中,该输入模块还用于根据该最大输入尺寸限制,确定该输入人脸图像的尺寸是否大于该小规模CNN模块可支持的最大输入图像尺寸;如果是,则确定该输入人脸图像的尺寸是否满足预定义输入图像尺寸限制。该预定义输入图像尺寸限制为满足可将输入图像划分为一组具有第二尺寸的子图像的多个图像尺寸中的一个给定图像尺寸,该第二尺寸小于该最大输入图像尺寸。如果该输入人脸图像的尺寸满足该预定义输入图像尺寸限制,则该输入模块还用于将该输入人脸图像划分为一组具有第二尺寸的子图像。该小规模CNN模块用于处理该组子图像,以生成特征图阵列。该合并模块用于将该特征图阵列合并为对应于该输入人脸图像的一组合并特征图。最终,该决策模块利用两个或多个全连接层处理该组合并特征图,从而为该输入人脸图像中的人生成年龄和/或性别分类。
在一些实施例中,如果该输入人脸图像的尺寸不满足该预定义输入图像尺寸限制,则该输入模块将该输入人脸图像的尺寸重新设定为满足该预定义输入图像尺寸限制的给定图像尺寸,并将该重新设定尺寸的输入人脸图像划分为一组具有第二尺寸的子图像;该小规模CNN模块处理该组子图像,以生成特征图阵列;该合并模块将该特征图阵列合并为对应于该重新设定尺寸的输入人脸图像的一组合并特征图;并且该决策模块利用两个或多个全连接层处理该组合并特征图,从而为该输入人脸图像中的人生成年龄和/或性别分类。
在一些实施例中,该输入模块将该输入人脸图像的尺寸重新设定为该给定图像尺寸的方式为:如果该输入人脸图像的尺寸大于该给定图像尺寸,则将该输入人脸图像降采样至该给定图像尺寸;如果该输入人脸图像的尺寸小于该给定图像尺寸,则将输入人脸图像上采样至该给定图像尺寸。
在一些实施例中,如果该输入人脸图像的尺寸小于或等于该小规模CNN模块的最大输入图像尺寸,则该小规模CNN模块直接处理该输入人脸图像,而无需将该输入人脸图像划分为具有更小尺寸的一组子图像。
在一些实施例中,如果该输入人脸图像的尺寸小于或等于该小规模CNN模块的最大输入图像尺寸,则该输入模块将该输入人脸图像的尺寸上采样至满足该预定义输入图像尺寸限制的给定图像尺寸,并将该重新设定尺寸的输入人脸图像划分为一组具有第二尺寸的子图像;该小规模CNN模块处理该组子图像,以生成特征图阵列;该合并模块将该特征图阵列合并为对应于该重新设定尺寸的输入人脸图像的一组合并特征图;并且该决策模块利用两个或多个全连接层处理该组合并特征图,从而为该输入人脸图像中的人生成年龄和/或性别分类。
在一些实施例中,该输入模块与人脸检测CNN模块相连,该人脸检测CNN模块从输入视频图像中检测人脸图像,并且该输入人脸图像为人脸检测CNN模块的输出。
在一些实施例中,该小规模CNN模块为嵌入在芯片组或片上***(SoC)的硬件CNN模块。
在一些实施例中,该合并模块通过将该特征图阵列串联成一维向量,合并该特征图阵列。
另一方面,公开了一种可在已获取视频图像中现场执行人脸检测以及年龄和性别评估的嵌入式***。该嵌入式***包括:处理器;与该处理器相连的存储器;与该处理器和该存储器相连,并用于获取视频图像的图像获取装置;与该图像获取装置相连,并用于从该已获取视频图像中检测人脸的人脸检测子***;以及与该人脸检测子***相连,并包括具有最大输入尺寸限制的小规模CNN模块的年龄和性别评估子***。在一些实施例中,该年龄和性别评估子***用于:接收来自该人脸检测子***的主要由人脸覆盖的已检测人脸图像;根据最大输入尺寸限制,确定该已检测人脸图像的尺寸是否大于该小规模CNN模块可支持的最大输入尺寸限制;如果是,则确定该已检测人脸图像的尺寸是否满足预定义输入图像尺寸限制。该预定义输入图像尺寸限制为满足可将输入图像划分为一组具有第二尺寸的子图像的多个图像尺寸中的一个给定图像尺寸,其中该第二尺寸小于该最大输入图像尺寸。如果该已检测人脸图像的尺寸满足该预定义输入图像尺寸限制,则该年龄和性别评估子***还用于:将该已检测人脸图像划分为一组具有第二尺寸的子图像;利用该小规模CNN模块处理该组子图像,以生成特征图阵列;将该特征图阵列合并为对应于该已检测人脸图像的一组合并特征图;利用两个或多个全连接层处理该组合并特征图,从而为该已检测人脸图像中的人生成年龄和/或性别分类。
在一些实施例中,该小规模CNN模块为由该年龄和性别评估子***和该人脸检测子***共享的低成本硬件CNN模块。
另一方面,公开了一种利用具有最大输入尺寸限制的小规模CNN模块用于执行深度学习图像处理的过程。该过程首先接收输入图像。随后,该过程根据最大输入尺寸限制,确定该输入图像的尺寸是否大于该小规模CNN模块可支持的最大输入图像尺寸。如果是,则该过程进一步执行:将该输入图像划分为一组具有第二尺寸的子图像,其中该第二尺寸小于该最大输入图像尺寸;利用该小规模CNN模块处理该组子图像,以生成特征图阵列;将该特征图阵列合并为对应于该输入图像的一组合并特征图;利用两个或多个全连接层处理该组合并特征图,从而为该输入图像生成分类决策。
在一些实施例中,该输入图像的尺寸满足预定义输入图像尺寸限制,其中该预定义输入图像尺寸限制为满足可将输入图像划分为具有第二尺寸的一组子图像的多个图像尺寸中的一个给定图像尺寸。
在一些实施例中,如果该输入图像的尺寸小于或等于与该小规模CNN模块可支持的最大输入图像尺寸,则该过程直接利用该小规模CNN模块处理该输入图像,而无需将该输入图像划分为具有更小尺寸的一组子图像。
在一些实施例中,该输入图像为主要由人脸覆盖的输入人脸图像;该输入图像上的该分类决策包括用于该输入人脸图像中的人的年龄和性别分类。
在一些实施例中,该组子图像在该组子图像中的一对相邻子图像之间具有预定义重叠部分,并且在对应于一对相邻子图像的一对相邻特征图之间不具有重叠部分和间隙。
附图说明
通过阅读下文详细描述和各个附图,可以理解本申请的结构和操作,在附图中,相同的附图标记表示相同的部件,其中:
图1A示出了用于处理低分辨率输入图像的小规模的硬件CNN模块的框图;
图1B示出了图1A中的硬件CNN模块的更为详细的实施过程;
图2A示出了用于处理较高分辨率输入图像的常规的基于完整图像的CNN***的框图;
图2B示出了基于子图像的CNN***的框图;
图3示出了根据本申请一些实施例,基于小规模硬件CNN模块的示例性人脸检测***的框图;
图4示出了根据本申请所述的一些实施例,如图3所示的基于小规模硬件CNN模块的第一级CNN的示例性实施过程的框图;
图5示出了根据本申请描述的一些实施例,如图3所示的基于小规模硬件CNN第二级CNN的示例性实施过程的框图;
图6示出了根据本申请描述的一些实施例,如图3所示的第三级CNN的示例性实施过程的框图;
图7示出了根据本申请描述的一些实施例中,46×46的图像块的示例性输入图像划分方案;
图8示出了根据本申请一些实施例,如图3所示的基于小规模硬件CNN模块的第三级CNN的示例性实施过程的框图;
图9示出了根据本申请一些实施例,如图3所示的最终决策模块的示例性实施过程的框图;
图10示出了一流程图,该流程图描述了根据本发明一些实施例,利用本申请公开的具有CNN功能的嵌入式***上执行的人脸检测***的示例性人脸检测过程;
图11示出了一流程图,该流程图描述了根据本申请所述的一些实施例,利用该基于子图像的CNN***处理第二组重新设定尺寸的图像块(即图10中的步骤1014)的示例性过程;
图12示出了根据本申请一些实施例,基于小规模CNN模块的示例性年龄和性别评估神经网络的框图;
图13示出了根据本申请描述的一些实施例,基于小规模硬件CNN模块和基于子图像技术的示例性年龄和性别评估***的框图;
图14示出了根据本申请描述的一些实施例,用于在该输入模块中预处理输入人脸图像的示例性过程的流程图;
图15示出了根据本申请描述的一些实施例,图13中的小规模CNN模块的示例性实施过程的框图;
图16示出了根据本申请描述的一些实施例,图13中的合并模块和决策模块的示例性实施过程的框图;
图17示出了根据本申请描述的一些实施例,利用本申请提出的年龄和性别评估***执行年龄和性别评估的示例性过程的流程图;以及
图18示出了示例性嵌入式***,在该嵌入式***内,所公开的基于子图像的人脸检测***和基于子图像的年龄和性别评估***根据本申请描述的一些实施例实现功能。
具体实施方式
下文的详细描述旨在作为主题技术的各种配置的描述,并不旨在表示可以实施主题技术的唯一配置。附图包含在本文中,并构成详细描述的一部分。详细描述包括用于旨在全面理解主题技术的具体细节。然而,主题技术不仅限于本文所阐述的具体细节,没有这些具体细节也有可能实施。在某些情况下,结构和组件以框图的形式示出,以避免使主题技术的概念变得模糊。
在整个说明书中,除非上下文另行明确规定外,以下术语具有此处提供的含义。术语“图像分辨率”和“图像尺寸”可互换,用来表示一个给定二维(2D)图像内的像素数。
本申请描述了基于使用小规模低成本CNN模块的人脸检测***、技术和架构的各个示例,该模块被配置到多任务级联CNN模块中。在一实施例中,该小规模低成本CNN模块被嵌入到芯片组或片上***(SoC)。因此,本申请提出的人脸检测***、技术和架构可以在包括小规模低成本的CNN模块的芯片组或片上***(SoC)上实现。在一具体示例中,本申请提出的人脸检测***、技术和架构可以在海思Hi3519片上***(下文中或称之为“Hi3519”或“Hi3519片上***”)上实现。该Hi3519片上***针对智能相机开发,由华为技术有限公司的子公司海思半导体有限公司开发。显著地,Hi3519片上***包括内嵌硬件CNN模块以及可执行一些简单软件CNN功能的CPU。
本专利申请还提供了可以对人脸数字图像(下文中也称之为“人脸图像”)执行年龄和性别分类的多个示例,该人脸数字图像的尺寸可以大于给定的小规模硬件卷积神经网络(CNN)模块可支持的输入像素的最大值。在一些实施例中,本申请提出的年龄和性别评估***首先将高分辨率的输入人脸图像分割成一组合适尺寸的图像块(也被称为“子图像”),各图像块与邻近的图像块均具有严谨设计的重叠部分。然后由小规模CNN模块,例如Hi3519的内嵌CNN模块分别处理每个图像块。然后合并该组图像块对应的输出,以获得对应于高分辨率输入人脸图像的输出,合并生成的输出可以进一步由该年龄和性别评估***内之后的层进一步处理。
本申请提出的年龄和性别评估***可在包括至少一个小规模硬件CNN模块的低成本嵌入式***中实现,并且可以与上文描述的同样可在该低成本嵌入式***上实现的人脸检测***集成。在一些实施例中,该年龄和性别评估***可与该人脸检测***连接,从而在由该人脸检测***生成的已检测人脸图像上执行年龄和性别评估,其中,年龄和性别评估***以及人脸检测***可以使用至少一个如Hi3519等的小规模CNN模块,以执行其指定的操作。通过将该基于子图像的技术应用于高分辨率人脸图像,本申请提出的年龄和性别评估***可以在小规模CNN模块上执行年龄和性别评估,并且不会影响到年龄和性别评估的准确度。基于已获取并检测到的人脸图像,在嵌入式***内现场执行年龄和性别评估,而无需独立的设备、***或服务器执行该操作的能力可显著降低操作成本。在一些实施例中,本申请提出的年龄和性别评估还可以在不包括人脸检测***的低成本嵌入式***上实现。在这些实施例中,该低成本嵌入式***可直接通过一个或多个外部源接收到人脸图像,并随后利用该年龄和性别评估***对接收到的人脸图像执行专门的年龄和性别评估。
在很多嵌入式***应用中,现有大部分基于CNN的DL架构和***不具有成本效益。同时,开始出现了基于低成本芯片组的一些具有CNN功能的嵌入式***。一个典型的例子为Hi3519片上***。Hi3519片上***的成本要明显低于NvidiaTM TK1/TX1芯片组。Hi3519片上***包括具有很多理想性能的内嵌硬件CNN模块。例如,该Hi3519片上***的内嵌CNN模块的参数是可以重新配置的,即用户可修改网络架构和参数,其中可以针对不同的应用对该参数进行预先训练。此外,该内嵌CNN模块处理速度很快。
基于降低成本的设计目的,诸如Hi3519片上***的小规模低成本CNN模块通常能力有限并且具有很多限制。例如,在Hi3519片上***中,嵌入式CNN模块的输入图像的最大像素数为1280。然而,在上述MTCNN结构中的由粗至精的架构中,输入图像尺寸逐级迅速增加。例如,在MTCNN的一些实施方式中,第二级的输入图像尺寸为24×24×3=1728,而第三级的输入图像尺寸为48×48×3=6912。这两个输入图像尺寸均超出了Hi3519片上***内的嵌入式CNN模块的输入尺寸限制。为了在Hi3519片上***上实现MTCNN,需要对MTCNN进行修改,以采用更小的输入图像尺寸并相应地降采样该输入视频。然而这样做的话,视频中人脸的图像质量会明显下降,进而导致人脸检测性能受到严重影响。
与本申请相关的美国专利申请15/441,194的内容以引用形式并入到本申请,该相关专利申请为上文所述的在小规模低成本CNN模块上实现MTCNN提供了解决方案,该小规模低成本CNN模块可以是Hi3519片上***。为了解决输入图像尺寸大于CNN模块的最大输入尺寸的问题,该相关专利申请提供了基于子图像的CNN***的多个实施例,该专利申请首先将较大的输入图像划分为一组较小的子图像,同时在相邻子图像之间具有合理设计的重叠部分。然后每一个子图像由小规模硬件CNN模块处理,该小规模硬件CNN模块可以是Hi3519片上***内的内嵌CNN模块。然后可以合并该一组子图像对应的输出,该合并结果可以进一步由下一级处理。该相关专利申请描述的基于子图像的CNN***可被配置为等同于不需划分而处理整个输入图像的大规模CNN***,从而该基于子图像的CNN***的输出可与大规模CNN的输出完全相同。基于此,该相关专利申请公开的一些实施例将该基于子图像的CNN***和技术应用到级联CNN或MTCNN的一级或多级,从而该级联CNN或者该MTCNN的指定级中的更大的输入图像可以被划分成具有更小尺寸的一组子图像。因此,该级联CNN或者该MTCNN的每一级都可以采用相同的小规模硬件CNN模块,该小规模硬件CNN模块受最大输入图像尺寸限制。
在一些实施例中,为了提高实时执行人脸检测的性能,本申请提出的人脸检测技术和***在每个视频帧/图像中检测正在移动的区域。例如,该人脸检测技术和***可以利用Hi3519中的内嵌背景消除模块,检测视频帧中的移动区域。接下来,该人脸检测技术和***采用由粗至精的多级CNN,检测该视频帧中的大部分或所有人脸。更具体地,对于该多级CNN中具有输入图像尺寸限制的每一级,都可以应用基于子图像的CNN结构。例如,本申请提出的人脸检测技术的一些实施例仅需要将该基于子图像的CNN结构应用于多级CNN结构的最后一级。
在一些实施例中,为了提高实时执行人脸检测的效率,该人脸检测技术和***还可识别每个已检测人脸的人脸关键点(如眼、鼻和嘴)。这些信息可以使该***跟踪到每张脸,为每个人选择最佳姿态的图像(也被称为最佳人脸),例如离正面视角最近的图像,然后将该最佳人脸发送至服务器中以供其进一步处理,如进行人脸识别。对于一些应用环境,发送该视频帧中的人脸信息,而不需要将整个视频帧发送到服务器中,从而降低了对服务器的网络带宽和计算资源的要求。在***应用中,该要求方面的降低对于配备有大量相机以同时获取多通道的视频信号的***是尤其重要的。
在下述讨论中,我们以Hi3519片上***内的内嵌硬件CNN模块为例,描述本申请提出的人脸检测CNN***和技术的一些示例性实施方式。然而,应该理解的是该人脸检测CNN***和技术并不限于特定的芯片组或片上***,如Hi3519片上***。人脸检测CNN***和技术在该级联CNN或MTCNN的一些或所有级中利用小规模硬件CNN模块替代更大更复杂的CNN模块。人脸检测CNN***和技术可应用于任何小规模硬件CNN模块中或者包括嵌入式小规模硬件CNN模块的其他芯片组或片上***。此外,该人脸检测***和技术可以作为单个现场可编程门阵列,并且与嵌入式平台集成。
基于子图像的CNN结构的说明
美国相关专利申请15/441,194描述的基于子图像的CNN***是基于小规模低成本硬件CNN模块构建的。这种基于子图像的CNN***可以在诸如嵌入式***和移动装置的资源有限的***中实现,以使这些***能够执行通常需要大规模的、高复杂度、昂贵的CNN***才能实现的任务。这种基于子图像的CNN***也可以在现有的DL***中实现,以替代大规模的、高复杂度的CNN模块,进而显著降低***成本。例如,这种基于子图像的CNN***允许在需要高复杂度CNN的应用中使用低成本的具有CNN功能的嵌入式***,该应用例如为处理高分辨率输入图像。对于资源有限的嵌入式***,采用不同于本申请提供的方式是无法处理高分辨率输入图像的。在一些实施例中,该基于子图像的CNN***重复使用一个或多个被设计为处理低分辨率输入图像的小规模硬件CNN模块,如Hi3519片上***内的内嵌硬件CNN模块,从而该基于子图像的CNN***可应用于高分辨率输入图像,以及通常需要昂贵的、大规模的硬件CNN模块才具备的处理能力的更具挑战性的任务。
该基于子图像的CNN***为分层***,基于使用分而治之的方法来处理复杂任务。在该相关专利申请的一些实施例中,该基于子图像的CNN***构建有两级或更多级。其中,该两级或更多级的每一级利用一个或多个可对低分辨率输入进行操作的小规模、低成本硬件CNN模块来实现或者利用可对低分辨率输入进行操作的软件来实现。因此,该两级或更多级中的每一级都具有非常低的复杂度。更具体而言,为使用该基于子图像的CNN***,可以将初始高分辨率输入图像划分为明显小于初始输入图像的尺寸的具有相同尺寸或基本相同尺寸的一组子图像,其中,划分后的图像可包括相邻子图像之间适当设计的重叠部分。这些子图像被馈送至该基于子图像的CNN***的第一级,该第一级包括至少一个被设计用于处理低分辨率输入图像的小规模低成本硬件CNN模块,并且第一级的输出的被处理的子图像组随后被合并。更具体而言,可以通过对子图像组反复地重复调用一个或多个小规模硬件CNN模块,对该子图像组进行处理。如此,可以由一个或多个小规模硬件CNN模块通过对子图像组重复调用该一个或多个小规模硬件CNN模块来处理高分辨率输入图像。
随后,基于该子图像组,第一级的输出会被合并。在一些实施例中,该基于子图像的CNN***包括对输入图像和子图像的尺寸的规定,以确保合并后的结果与直接用大规模的高复杂度CNN模块处理整个高分辨率输入图像(而不需要划分输入图像)的输出基本上相同或完全相同。接下来,合并后的结果由该基于子图像的CNN***的第二级处理,该第二级也可以利用一个或多个小规模硬件CNN模块实现或者利用软件实现。如此,所公开的CNN***可以实现高复杂度任务,诸如处理高分辨率输入图像,而不需要大规模的、高复杂度、昂贵的硬件模块,从而改善了性能和成本之间的折衷。因此,该基于子图像的CNN***可高度应用于资源有限的嵌入式***,例如各种监控摄像头、机器视觉相机、无人机、机器人、自驾车以及移动电话。
小规模低成本硬件CNN模块
图1A示出了用于处理低分辨率输入图像的小规模硬件CNN模块100的框图。在一些实施例中,根据应用需求,CNN模块100可以用来提取分辨率有限的输入图像的特征,并进行各种DL推理。在图1A中可以看出,CNN模块100包括至少两个子模块,分别表示为CNN1和CNN2。在一些实施例中,CNN模块100被配置成将输入图像102尺寸限制为不超过1280像素,例如,32x40像素的图像分辨率。这种对输入图像尺寸的限制也严重限制了CNN模块100适于应用的类型。
图1B示出了硬件CNN模块100的更为详细的实施过程。在图1B中可以看出,图1A中的第一子模块CNN1进一步包括串联的多组交替的卷积(CONV)层、修正线性单元(ReLU)层(未示出)和池化层。此外,对于多个CONV层中的每一层,诸如CONV(1)层,子模块CNN1使用一组卷积滤波器,来从输入图像102中提取一组特定特征。子模块CNN1中的多个CONV层中的每一CONV层后接对应的ReLU层(未示出)和池化层,池化层如POOL(1)层;该池化层POOL(1)用于缩小由对应的CONV层生成的已滤波的图像尺寸,同时保留某些提取的特征。
同样如图1B所示出的,图1A中的第二子模块CNN2进一步包括串联的多组交替的完全连接(FC)层和ReLU层(未示出)。子模块CNN2中的多个FC层中的每一层,诸如FC(1)层,都被配置成执行矩阵乘法。多个FC层中的每一层(最后一个FC层除外)后接对应的ReLU层(未示出)。虽然在图1B中没有明确地示出,但是,CNN1和CNN2中的多个ReLU层中的每一层都被配置成向CNN***提供非线性特征。最后,在最后一个FC层(例如,FC(n)层)的输出端,决策模块(也未示出)用于对基于最后一个FC层的输出进行预测,从而生成CNN模块100的输出104。在一些实施例中,第一子模块CNN1包括1~8组CONV层,ReLU层,以及池化层,而第二子模块CNN2包括3~8组完全连接(FC)层和ReLU层。
在一些实施例中,多个CONV层中的每一层中的卷积滤波器的数量至多是50个,并只允许是3×3滤波器。此外,卷积步长被固定为1,不使用补零。在一些实施例中,CNN1中的池化层可以使用最大池化技术来从滤波器图像中的2×2区域中的每一个区域中选择最大值。在一些实施例中,最大池化和平均池化都是可以使用的,但是,池化窗口尺寸固定为2×2,并且步长固定为2。换言之,在每一池化层之后,图像宽度和高度中都缩小一半。
以Hi3519片上***内的硬件CNN模块为例,第一FC层的最大输入尺寸是1024,中间FC层中的神经元的数量至多是256。CNN模块输出的尺寸至多是256。由于这些约束,Hi3519片上***内的硬件CNN模块通常只适于执行简单应用,诸如手写数字识别和汽车牌照识别。对于诸如人脸识别之类的更具有挑战性的应用,至少由于下列原因,直接应用诸如CNN模块100之类的小规模的CNN模块不能令人满意。首先,1280像素的最大输入分辨率(诸如40×32)是非常有局限性的,因为降采样到此分辨率的人脸图像会丢失太多重要的人脸信息。其次,小规模CNN模块100的学习能力也非常有限。
基于子图像的分层CNN架构和***
图2A示出了用于处理高分辨率输入图像的常规基于完整图像的CNN***200的框图。可以看出,常规CNN***200可以在第一卷积层CONV(1)上接收整个高分辨率输入图像202,并对高分辨率输入图像202开始执行特征提取操作。如此,常规CNN***200可以直接处理整个高分辨率输入图像202,而不需划分输入图像。然而,常规CNN***200也要求使用能够处理这样的高分辨率输入图像的大规模的昂贵的芯片,诸如前文所述的NvidiaTM芯片。
图2B示出了基于子图像的CNN***210的框图。在所公开的CNN***210中,分辨率有限的小规模CNN模块,诸如结合图1A和1B描述的CNN模块100或Hi3519片上***内的硬件CNN模块可以作为基于子图像的CNN***210的构件。如上文所提及的,这样的小规模CNN模块对输入图像最大尺寸具有限制,例如最大1280像素。为了能够使用该小规模的CNN模块处理高分辨率输入图像202(例如,图像像素超过1280),所公开的CNN***210包括将高分辨率输入图像202划分为一组较小子图像204的输入模块212,其中,子图像204中的每一个都具有小于或等于作为CNN***210的构成部分的小规模的CNN模块允许/支持的输入图像的最大尺寸。在一些实施例中,输入模块212可以通过在相邻的子图像204之间适当地设定重叠部分来划分高分辨率输入图像202,如图2B所示。需要注意的是,在图2B中示出的带有间隔和重叠部分的两行两列的四个子图像204的集合是为了便于理解其概念,而不是表示实际划分。
如图2B所示,CNN***210包括基于使用和/或重复使用图1A和1B中所描述的小规模CNN模块100的两个硬件子模块CNN1和CNN2中的一个或两个的双层处理结构。除输入模块212之外,CNN***210还包括第一处理级220、合并模块222和第二处理级224。更具体而言,CNN***210的第一处理级220包括至少一个CNN1处理模块,诸如CNN1模块214。在一些实施例中,CNN1模块214是通过图1A和1B中所描述的硬件子模块CNN1来实现的。在其他实施例中,CNN1模块214是通过图1A和1B中所描述的包括CNN1和CNN2两个子模块的整个CNN模块100来实现的。需要注意的是,在第一处理级220内所示出的CNN1模块214的多个实例表示在不同的时间t1,t2,t3,…,和tn使用同一个CNN1模块214,正如对于每一个这样的实例所注释的。因此,图2B中所示出的“t1时的CNN1 214”,“t2时的CNN1 214”,“t3时的CNN1214”,…,以及“tn的CNN1 214”对应于不同的处理时间时的同一CNN1模块214,而不应该被解释为具有相同编号214的多个CNN1模块。虽然未示出,但是,第一处理级220可包括类似于CNN模块214的额外的CNN1模块。例如,第一处理级220可包括两个或更多相同的CNN1模块。
CNN***210的第二处理级224包括至少一个CNN2模块216。在一些实施例中,CNN2模块216是通过图1A和1B中所描述的硬件子模块CNN2来实现的。在其他实施例中,CNN2模块216是通过图1A和1B中所描述的包括CNN1和CNN2两个子模块的整个CNN模块100来实现的。在某些其他实施例中,第二处理级224内的CNN2模块216可以通过软件而不是通过硬件来实现。
具体而言,为处理由输入模块212所生成的子图像204组,可以多次使用同一CNN1模块214按顺序处理子图像204组,每一次处理一个子图像。即,CNN***210的第一处理级220内的CNN1模块214的每一实例都表示在不同的处理时间同一CNN1模块214在子图像204组中的一个子图像204上的多次应用中的一次。然而,由于CNN1模块214对每一子图像204的处理速度非常快,处理子图像204组的总的处理时间也会十分快。CNN1模块214的多次应用的输出包含对应于在多层卷积、ReLU,以及池化操作之后的子图像204组的特征图206的阵列。
需要注意的是,虽然图2B所示出的实施例基于重复使用CNN***210的第一处理级220中的同一硬件CNN1模块214,但是,其他实施例可以使用与CNN***210的第一处理级220中的CNN1模块214类似或相同的额外的硬件CNN1模块,以便多个硬件CNN1模块并行地处理子图像204组。对于一个给定设计,可以基于硬件成本约束和速度要求之间的折衷,来确定给定设计所使用的CNN1模块的实际数量。例如,CNN***210的一些变动方案可在第一处理级中包括3到5个CNN1模块。
如上文所提及的,CNN1模块214可以通过诸如结合图1A和1B所描述的专用硬件子模块CNN1来实现,或者通过结合图1A和1B所描述的包括CNN1和CNN2两个子模块的整个CNN模块100来实现。在第一种情况下,CNN***210内的CNN1模块214可只包括CONV层、ReLU层以及池化层。在第二种情况下,在CNN***210中实现CNN1模块214进一步包括跳过FC层和对应的ReLU层,即跳过CNN模块100内的子模块CNN2。当跳过CNN2子模块时,CNN1模块214一般需要在其输出特征图中保留空间位置信息,这是因为来自CNN1模块214的输出将被合并,并用于进一步处理。对于一些内嵌的硬件CNN模块,诸如Hi3519片上***内的硬件CNN模块,内嵌的CNN模块的参数是可重新配置的。通过使用此属性,当使用该内嵌的CNN模块时,可以通过迫使CNN模块100内的FC层中的每一层成为一个单位矩阵,使得来自每一FC层的输出变成将二维特征图重新组织为一维矢量,来达到跳过子模块CNN2的目的。在这种情况下,每一FC层之后的ReLU层仍可以像通常那样使用。在划分实施例中,对于有三层FC-ReLU组合的CNN2子模块,最后两个ReLU层并不改变任何数据,因为多个ReLU层的串联相当于只有一个ReLU层。
回到图2B,在用CNN1模块214按顺序处理子图像204组中的每一子图像204之后,包含特征图206阵列的来自CNN1模块214的输出成为合并模块222的输入,此合并模块222被配置成合并特征图206的阵列以形成整个输入图像202的完整特征图。然后,合并的特征图可以被用作CNN***210的第二处理级224的输入。在一些实施例中,来自第二处理级224的输出228是来自CNN2模块216的最后一个FC层的输出。理想情况下,输出228与图2A中的常规CNN***200的输出226相同。
在一些实施例中,特征图206的阵列包括一组三维(3D)矩阵(即,二维特征图以及特征图的数量)。例如,特征图206的阵列可以由九个3D矩阵构成,每个矩阵的尺寸是2×2×48,其中,九是具有下标0,1,2,…,8(即3行3列的子图像)的子图像204的数量,2×2是每一个子图像经CNN1模块214处理后的每个输出特征图的尺寸,48是每一子图像的特征图的数量。在一些实施例中,合并模块222被配置成通过基于相应的输出矩阵下标,串联所有的3D输出矩阵,以此合并特征图206的阵列,进而形成合并的3D特征图矩阵,与此同时保留子图像204组的空间关系。在上面的示例中,此步骤会生成6×6×48的3D矩阵。接下来,可以将已合并的3D矩阵平化为一维(1D)矢量。在上面的示例中,这会产生一个具有1728元素的1D矢量。最后,已平化的1D矢量被馈送给第二处理级224。
图2B示出了由合并模块222所生成的已合并的特征图208被馈送给CNN***210的第二处理级224,供进一步处理。更具体而言,CNN***210的第二处理级224包括至少一个CNN2模块216,该CNN2模块216进一步包括如上文所描述的FC层和ReLU层集合。如上文所提及的,CNN***210中的CNN2模块216可以通过结合图1A和1B所描述的专用硬件子模块CNN2来实现。在这些实施例中,CNN***210内的CNN2模块216可只包括FC层和ReLU层。在另外一些实施例中,CNN2模块216可以通过图1A和1B中所描述的包括CNN1和CNN2两个子模块的整个硬件CNN模块100来实现。在这些实施例中,在CNN***210中实现CNN2模块216进一步包括跳过CONV层-ReLU层-池化层,即跳过CNN模块100内的子模块CNN1。在诸如Hi3519之类的一些***中,可能难以跳过CONV层-ReLU层-池化层以直接使用FC层和ReLU层。在这些情况下,CNN2模块216,即,FC层和ReLU层可以通过软件来实现。由于CNN***210的大部分复杂计算位于CONV层,因此,以软件实现FC和ReLU层通常对***的总的速度影响很小。进一步地,诸如Hi3519之类的***还能提供额外的工具用以优化软件实现CNN2模块216的速度。
如上文所提及的,第二处理级224内的CNN2模块216可以通过软件而不是通过硬件CNN模块来实现。需要注意的是,因为FC层和ReLU层的复杂度一般比卷积层低得多,CNN***210的大部分复杂计算存在于由CNN1模块214实现的卷积层。基于这样的认识,由CNN***210中的硬件CNN2模块216实现的低复杂度计算操作可以通过软件而不是上文所提及的硬件CNN2或CNN模块来实现。此外,相比于基于硬件CNN模块的实施例,这样的软件实现方法可以提供更多的灵活性。
本申请提出的人脸检测CNN架构
在前述两种人脸检测结构中,由于MTCNN采用三CNN级,而级联CNN采用六级,因此MTCNN的结构比级联CNN更简单。此外,MTCNN可以检测人脸关键点位置,这有利于人员跟踪并确定每个人脸的姿态。因此,下文描述的人脸检测CNN***和技术的多个示例均基于使用三级CNN的MTCNN结构。然而,需要说明的是,该人脸检测***和技术同样可应用于级联CNN结构中。
上文已经提到,Hi3519片上***的内嵌CNN模块在未解决其输入图像尺寸限制的情况下,不能直接用于实现初始设计的MTCNN的每一级。其实,该MTCNN的初始设计不符合Hi3519片上***的内嵌CNN模块的很多限制或者与之产生冲突。这些冲突包括但不限于:
最大输入图像尺寸:如上文提到的,在Hi3519中,Hi3519可支持的输入图像像素最大值为1280。相比之下,初始设计的MTCNN的第二级的输入图像尺寸为24×24×3=1728,而第三级的输入图像尺寸为48×48×3=6912。这两个输入尺寸均超出了Hi3519的输入图像尺寸的上限。
最小输入图像尺寸:Hi3519的输入图像的最小宽度或高度为16像素。相比之下,初始设计的MTCNN的第一级的输入图像尺寸为12×12,这对于Hi3519而言太小。
滤波器的数量:在Hi3519的嵌入CNN模块中,每个卷积(CONV)层的滤波器最大数量为50。与之相比,初始设计的MTCNN中的若干CONV层具有64或128个滤波器。
CNN架构:在Hi3519的内嵌CNN模块中,每个CONV层后面都有一个最大池化(MP)层。然而,该MTCNN通常具有两个或三个连续的卷积层,该连续的卷积层中间并不存在任何MP层。
池化窗口尺寸:在Hi3519的内嵌CNN模块中,MP层被设计为支持2×2像素的池化窗口尺寸,而在MTCNN中,通常使用3×3的最大池化窗口。
CONV层滤波器尺寸:在Hi3519的内嵌CNN模块中,该CONV层具有3×3滤波器,而在MTCNN中,该CONV层通常采用5×5滤波器以及2×2滤波器。
非线性函数:该MTCNN采用参数修正线性单元(PReLU)作为非线性函数,而该Hi3519的内嵌CNN模块采用修改线性单元(ReLU)。
全连接(FC)层:初始设计的MTCNN的第一级为全卷积网络(FCN),以在测试期间减少该滑动窗口方法的运行时间,其中不涉及FC层。相比之下,Hi3519在一个CNN中至少需要3个FC层。
本申请提出的人脸检测CNN***和技术的多个示例被设计为解决上述问题,从而该MTCNN的每一级内的初始CNN都可以由小规模低成本CNN实现,例如Hi3519的内嵌CNN模块。
图3示出了根据本申请一些实施例,基于小规模硬件CNN模块的示例性人脸检测***300的框图。在一些实施例中,人脸检测***300在具有CNN功能的嵌入式***上实现,该嵌入式***包括诸如Hi3519片上***的小规模、低成本的片上***。如图3所示,人脸检测***300接收视频数据302并将其作为输入,并生成人脸检测决策316并将其作为输出。在一些实施例中,输入视频图像302为由摄像头获取的视频帧或视频。需要说明的是,人脸检测***300至少包括运动检测模块304、金字塔和块生成模块306、第一级CNN 308、第二级CNN310、第三级CNN 312以及最终决策模块314。人脸检测***300还可包括图3未示出的其他模块。以下将更加详细地描述人脸检测***300中的每个模块。
从图中可以看出,运动检测模块304首先接收输入视频图像302。在一些实施例中,认为给定视频内的人脸与移动相关。因此,为了降低计算复杂度,移动检测模块304可基于与先前接收到的视频帧的比较,定位和识别每个视频帧内与运动相关的区域。需要说明的是,这些移动区域包括人或者非人物体,如正在移动的汽车。此外,即使是一个正在移动的人,移动区域可以包括人脸和人体。当人脸识别***300在Hi3519上实现时,运动检测模块302可以通过该Hi3519的内嵌运动检测硬件模块实现。该运动检测模块302的输出包括一组具有不同尺寸的被识别的移动区域。作为输出视频图像302的一部分,每一个被识别的移动区域被发送到人脸检测***300内的后续的人脸检测模块,用于检测该移动区域内的大部分或所有的人脸。在本实施例中,通常不会考虑将输入视频图像302内的非移动区域进行人脸检测。然而,本申请提出的人脸检测***的一些其他实施例可以不包括运动检测模块。
在一些实施例中,人脸跟踪模块(未示出)可以替代运动检测模块302或者与之结合使用。该人脸跟踪模块用于通过人脸检测***300计算已检测人脸的运动轨迹。更具体地,人脸跟踪模块基于在先前视频帧中的人脸位置计算运动轨迹,并基于计算得到的运动轨迹预测该已检测人脸在新的视频帧中的新的位置,并在后续在该预测位置附近检索这些人脸。需要注意的是,通过在人脸检测***300内部结合移动检测和人脸跟踪,可以显著提高人脸检测的速度。
在一些实施例中,由移动检测模块304生成,或者由人脸跟踪模块生成,或者由运动检测结合人脸跟踪的结合体生成的给定的移动区域318的尺寸具有最小值。该移动区域的最小值可基于一个或多个设计参数,以及人脸检测***300中采用的小规模硬件CNN模块的限制确定,该人脸检测***300例如为Hi3519。在一些实施例中,该一个或多个参数包括针对金字塔或块生成模块306的初步降采样因子和第一级CNN308的最小输入图像尺寸。例如,如果金字塔和块生成模块306的初步降采样因子为2:1,第一级CNN308的最小输入图像为16×16,则可被检测的人脸的最小尺寸应为32×32。在另一示例中,如果金字塔和块生成模块306的初步降采样因子为3:1,第一级CNN308的最小输入图像为16×16,则可被检测的人脸的最小尺寸应为48×48。为了降低复杂度,发送至该人脸检测模块的移动区域的最小尺寸通常大于可被检测的人脸的最小尺寸。在一些实施例中,由运动检测模块304生成的移动区域的最大尺寸可以大到整个输入视频图像302的尺寸。例如,该正在移动区域可以对应于一个基本完全被人脸覆盖的输入图像。
从图3可以看出,由运动检测模块304(或者由人脸跟踪模块或者由运动检测与人脸跟踪的结合体)生成的已检测移动区域由人脸检测***300内的其他模块以类似的方式处理,这些模块包括金字塔和块生成模块306、第一级CNN 308、第二级CNN 310、第三级CNN312以及最终决策模块314。因此,将重复性地对每一个已检测移动区域318执行下文描述的与金字塔和块生成模块306、第一级CNN 308、第二级CNN 310、第三级CNN 312以及最终决策模块314相关的操作。这种对每个已检测移动区域执行的处理循环由环绕这些模块标识的虚线表示。因此,下面关于人脸检测***300的讨论仅针对于,并且同样应用于所有的已检测移动区域318。
在人脸检测***300中,作为输入视频图像302的一部分,每个已检测移动区域318由金字塔的块生成模块306接收。金字塔的块生成模块306采用不同的降采样因子对移动区域318降采样,将移动区域318转化为“金字塔”式的多分辨率表示的移动区域318,从而允许后续的人脸检测模块在移动区域318内检测到不同大小的人脸。更具体地,“金字塔”中的移动区域318的高分辨率表示可用于检测初始输入图像302中较小的人脸;而“金字塔”中的移动区域318的低分辨率表示可用于检测初始输入图像302中较大的人脸。
在一些实施例中,金字塔中移动区域318的最高分辨率表示由第一级CNN 308的输入尺寸以及可被检测人脸的最小理想尺寸决定。注意,第一级CNN398的输入尺寸可以是人为定义的参数,而该输入尺寸的最小值受第一级CNN 308的最小输入尺寸限制,其中该第一级CNN 308的最小输入尺寸受特定装置的约束。例如,对于Hi3519的内嵌CNN模块,最小输入尺寸为16×16。该约束表示第一级CNN 308的输入尺寸需要至少为16×16。此外,最高分辨率表示还决定人脸检测***300所能检测的最小人脸。更特别地,可以通过将第一级CNN308的输入尺寸乘以金字塔和块生成模块306采用的降采样因子,决定可检测的最小人脸。例如,如果第一级CNN 308采用的输入尺寸为16×16,而金字塔和块生成模块306采用的初始降采样因子为3,则可被检测的最小人脸为48×48。如果金字塔和块生成模块306采用的初始降采样因子为2,而第一级CNN 308采用的输入尺寸为16×16,则可被检测的最小人脸为32×32。
需要注意的是,确定金字塔和块生成模块使用的降采样因子时,需要考虑人脸检测准确度和速度的折衷。另一方面,可以将初始降采样因子确定为可被检测人脸的最小尺寸对第一级CNN 308的输入尺寸的比例。例如,假定第一级CNN 308的输入尺寸采用16×16,而可被检测人脸的最小尺寸约为48×48,则初始降采样因子应该采用3。在一些实施例中,用户指定的第一级CNN 308的输入尺寸可以大于第一级CNN 308的最小输入尺寸,即16×16。
在一些实施例中,在金字塔中的该移动区域的最低分辨率表示应当等于或接近但不得小于第一级CNN 308的最小输入尺寸,即Hi3519中对应16×16。例如,该移动区域318的最低分辨率表示可以是24×24的图像。该移动区域318的其他分辨率表示可以介于金字塔的最低和最高分辨率之间,并且通常在相邻的分辨率表示之间以2:1或3:1的因数间隔开。
对于每个接收到的移动区域318,金字塔和块生成模块306为该移动区域318生成金字塔式的多分辨率表示。换言之,针对该初始视频图像302中的同一部分,金字塔和块生成模块306会生成一组具有不同分辨率的图像。在一些实施例中,不会将金字塔中所有的图像进行处理,相反地,第一级CNN 308基于上述用户指定的输入尺寸处理图像块。例如,如果采用16×16的输入尺寸,则金字塔中的每个图像会被进一步划分为一组16×16的图像块。
在一些实施例中,金字塔和块生成模块306利用滑动窗口方法,将该金字塔中的每个图像划分为一组图像块。更特别地,可通过用户指定尺寸的滑动窗口,以用户指定步长逐个搜索该金字塔内的每个图像,从而在每个滑动窗口位置处生成一个图像块,其中该指定尺寸例如为16×16;该指定步长例如为行列方向上均为2或4像素。因此,金字塔和块生成模块306生成并输出具有相同尺寸的、对应于该移动区域的多分辨率表示组的若干组图像块320。需要说明的是,移动区域318的高分辨率表示所产生的图像块比移动区域318的低分辨率表示所产生的图像块多。接下来,该若干组图像块320由第一组CNN 308接收。基于硬件配置,第一级CNN 308可以顺序地、逐个图像块地处理该接收到的图像块;或者,并行处理多个图像块,以加快处理速度。下面将更详细地描述第一级CNN 308的一些实施例。
第一级CNN 308用于处理每个接收到的图像块,该图像块对应于该移动区域318的每个金字塔表示内的每个滑动窗口位置。图4示出了根据本申请所述的一些实施例,基于小规模硬件CNN模块的第一级CNN 308的示例性实施过程400的框图。
从图4中可以看出,第一级CNN 400包括两级CONV和MP层(即CONV(1)/MP(1)以及CONV(2)/MP(2)),后接两个FC层(即FC(1)和FC(2))。在一些实施例中,每一个CONV层和FC层(除最后一个FC层外)均后接有ReLU层(图4中未示出)。在一些实施例中,第一级CNN400的输入包括三个R/G/B通道的输入图像块402(即图3所示的图像块320组中的其中一项),其中每个通道的尺寸为16×16。在其他实施例中,该第一级CNN 400的输入包括输入图像块402的灰度图(即单通道)。对于给定的输入图像块402,与采用3个R/G/B通道相比,采用相关的灰度图可具有更短的处理时间。因此,如果该两种类型的输入的相关性能基本相同,则对每个图像采用灰度图比采用3个R/G/B通道具有显著优势。在图中所示的实施例中,CONV(1)层包括步长为1的10个3×3的滤波器。因此,CONV(1)层的输出的尺寸为14×14×10。该MP(1)层使用步长为2的2×2的池化窗口。因此,该MP(1)层的输出尺寸为7×7×10。CONV(2)层包括步长为1的16个3×3的滤波器。因此,CONV(2)层的输出的尺寸为5×5×16。该MP(2)层使用步长为2的2×2的池化窗口。因此,该MP(2)层的输出尺寸为3×3×16。第一层和最后一层FC层的输出分别为32×1和16×1的矢量。在一些实施例中,该最后的16×1的输出矢量中,前两个输出用于生成人脸检测置信度指数(也被称为“人脸分类器”);接下来4个输出为该图像块402中的脸部(如果在该图像块402中检测到人脸的话)的边界框坐标(也被称为“边界框回归运算符”);最后10个输出表示已检测人脸的5个人脸关键点的位置,即左眼、右眼、鼻子和两个嘴角(也被称为“关键点定位运算符”)。因此,第一级CNN 400输出为一组候选人脸窗口/边界框(对应于图3所示的图像块320的一个子集)。
需要说明的是,层数和滤波器的数量、输入图像尺寸、滤波器和池化窗口尺寸、FC层输出尺寸以及第一级CNN 400中所示的其他参数的组合仅为第一级CNN 308的一个示例性配置。在不背离本申请所描述的技术范围的情况下,可以构建具有其他配置的第一级CNN308,使其具有一个多个不同于图4所示的参数值。在一些实施例中,如图4所示的示例性第一级CNN 400,第一级CNN 308满足小规模硬件CNN模块的约束条件,该小模块硬件CNN模块例如可以是Hi3519内的内嵌硬件CNN模块,从而该Hi3519内的内嵌硬件CNN模块可以实现该第一级CNN 308。
在一些实施例中,为了消除更多的“伪报警”,即被第一级CNN 308检测为人脸但实际并非人脸的图像块的报警,可以将一滤波器应用于检测输出处的人脸检测置信度指数。该滤波器仅保留人脸检测置信度指数大于阈值(例如,通常将阈值设定在0.5~0.7之间)的图像块。在一些实施例中,在第一级CNN 308中的最后一个FC层之后实现该滤波操作。
需要说明的是,由于采用金字塔技术生成了多分辨率表示,以及采用滑动窗口技术生成的图像块,可以在输入图像的每个人脸周围生成多个交叠但不相同的边界框。在一些实施例中,对于每一个被第一级CNN 308划分为人脸的图像块,都会在初始输入视频图像302中识别对应的图像区域。接下来,如在MTCNN中所描述的,利用非极大值抑制(NMS)技术合并那些高度重叠的边界框。需要说明,该NMS操作可以在前述对候选人脸窗口执行的过滤操作之后操作。在一些实施例中,该NMS操作在人脸检测***300内的第一级CNN 308内实现。在NMS操作之后,剩余的边界框可以通过边界框回归运算被精准化,从而精确该边界框的位置,同样如在MTCNN中所描述的。再者,可在人脸检测***300内的第一级CNN 308内执行该NMS操作。因此,在一个或多个其他处之后,第一级CNN 300输出一组人脸的候选边界框,或“候选人脸窗口”。
在一些实施例中,对于每一个由第一级CNN 308输出的候选人脸窗口322,都有一个位于并截取自初始输入视频图像302的对应的图像块,并且该被截取的图像块随后被重新设定尺寸为第二级CNN 310的用户指定的输入尺寸。基于这种由粗至精的方法,该第二级CNN 310的用户指定的输入尺寸应当大于第一级CNN 308的输入尺寸。在一些实施例中,第二级CNN 310的输入尺寸为24×24。因此,重新设定尺寸的图像块的尺寸也是24×24。然而,在其他实施例中,在不背离所描述的技术的范围的情况下,也可以采用类似于但稍微不同于24×24的输入尺寸。可以通过硬件、软件或者硬件和软件的组合来实现从候选人脸窗口322中生成重新设定尺寸的图像块的过程。该相应的处理模块可以位于第一级CNN 308和第二级CNN 310之间,该处理模块未在图中明确显示。接下来,第二级CNN 310接收该重新设定尺寸的图像块。基于该硬件配置,第二级CNN 310可以顺序地、逐个图像块地处理该接收到的图像块324;或者,并行处理多个图像块,以加快处理速度。下面将更详细地描述第二级CNN 310的一些实施例。
图5示出了根据本申请描述的一些实施例,基于小规模硬件CNN第二级CNN 310的示例性实施过程500的框图。
从图5中可以看出,第二级CNN 500包括三级CONV和MP层(即CONV(1)/MP(1)、CONV(2)/MP(2)以及CONV(3)/MP(3)),后接两个FC层(即FC(1)和FC(2))。在一些实施例中,每一个CONV层和FC层(除最后一个FC层外)均后接有ReLU层(图5中未示出)。在一些实施例中,第二级CNN 500满足Hi3519的内嵌硬件CNN模块的约束条件。例如,第二级CNN 500的输入为尺寸为24×24的单通道的灰度图502(即图3中其中一个重新设定尺寸的图像块324),而非在MTCNN的第二级CNN中使用的尺寸为24×24×3的RGB图像。这是由于Hi3519支持的最大输入尺寸为1280像素(24×24×3=1728)。然而,实验结果显示,使用灰度图而非彩色图像的性能没有受到明显影响。因此,可以采用诸如Hi3519内的嵌入式CNN的小规模硬件CNN,有效地实现第二级CNN 500。
在如图所示的实施例中,CONV(1)层包括步长为1的28个3×3的滤波器。因此,CONV(1)层的输出的尺寸为22×22×28(基于24×24的输入尺寸)。该MP(1)层使用步长为2的2×2的池化窗口。因此,该MP(1)层的输出尺寸为11×11×28。CONV(2)层包括步长为1的32个3×3的滤波器。因此,CONV(2)层的输出的尺寸为9×9×32。该MP(2)层使用步长为2的2×2的池化窗口。因此,该MP(2)层的输出尺寸为5×5×32。CONV(3)层包括步长为1的48个3×3的滤波器。因此,CONV(3)层的输出的尺寸为3×3×48。该MP(3)层使用步长为2的2×2的池化窗口。因此,该MP(3)层的输出尺寸为2×2×48。第一层和最后一层FC层的输出分别为128×1和16×1的矢量。需要说明,虽然每个CONV层使用的滤波器均多于第一级CNN 400所使用的滤波器,并且FC层也大于第一级CNN 400所使用的FC层,但是,第二级CNN 500的设计依然满足该Hi3519的内嵌CNN模块的约束。
从图中可以看出,第二级CNN 500的最后一个FC层的输出依然为16×1的输出矢量。其中,前两个输出用于生成人脸检测置信度指数或者人脸分类器;接下来4个输出为该图像块502中的脸部(如果在该图像块402中检测到人脸的话)的边界框坐标或边界框回归运算符;最后10个输出表示已检测人脸的5个人脸关键点的位置,即左眼、右眼、鼻子和两个嘴角,即关键点定位运算符。然而,由于第二级CNN 500的输入图像分辨率高于第一级CNN400的输入图像分辨率,并且CNN 500比CNN 400处理能力更强,因此CNN 500的人脸检测准确度也要高于CNN 400的人脸检测准确度。因此,第二级CNN 500输出一组与该输入图像块502的一个子集对应的候选人脸窗口/边界框(如图3所示的候选人脸窗口)。
类似于第一级CNN 308,可以将一置信度指数阈值应用于第二级CNN310的检测输出处的人脸检测置信度指数,仅保留人脸检测置信度指数大于阈值的输入图像块。在一些实施例中,在第二级CNN 310中的最后一个FC层之后实现该滤波操作。类似地,在过滤该候选边界框后,可利用上文提到的NMS技术合并高度重叠的候选边界框。在一些实施例中,还可以在第二级CNN 310中实现该NMS操作。通常,在过滤和NMS操作之后,该候选人脸窗口仅保留一个小子集。在NMS操作之后,可以通过边界框回归运算符精确剩余的边界框的位置,该精确的过程可以通过第二级CNN 310实现。
需要说明的是,层数和滤波器的数量、输入图像尺寸、滤波器和池化窗口尺寸、FC层输出尺寸以及第二级CNN 500中所示的其他参数的组合仅为第二级CNN 308的一个示例性配置。在不背离本申请所描述的技术范围的情况下,可以构建具有其他配置的第二级CNN310,使其具有一个多个不同于图5所示的参数值。例如,可以不采样第二级CNN 310的输入尺寸,即24×24,也可以采用其他类似的尺寸,如32×32。在一些实施例中,如图5所示的示例性第二级CNN 500,第二级CNN 310满足小规模硬件CNN模块的约束条件,该小模块硬件CNN模块例如可以是Hi3519内的内嵌硬件CNN模块,从而该Hi3519内的内嵌硬件CNN模块可以实现该第二级CNN 310。
在一些实施例中,对于每一个由第二级CNN 310输出的候选人脸窗口326,都有一个位于并截取自初始输入视频图像302的对应的图像块,并且该被截取的图像块随后被重新设定尺寸为第三级CNN 312的用户指定的输入尺寸。基于这种由粗至精的方法,该第三级CNN 312的用户指定的输入尺寸应当大于第一级和第二级CNN308、310的输入尺寸。在一些实施例中,第三级CNN 312的输入尺寸为46×46。因此,重新设定尺寸的图像块的尺寸也是46×46。然而,在其他实施例中,在不背离所描述的技术的范围的情况下,也可以采用类似于但稍微不同于46×46的输入尺寸。可以通过硬件、软件或者硬件和软件的组合来实现从候选边界框中生成重新设定尺寸的图像块的过程。该相应的处理模块可以位于第二级CNN310和第三级CNN 312之间,该处理模块未在图中明确显示。接下来,第三级CNN 312接收该重新设定尺寸的图像块,用于最终精准化。基于该硬件配置,第三级CNN 312可以顺序地、逐个图像块地处理该接收到的图像块328;或者,并行处理多个图像块,以加快处理速度。
原则上,第三级CNN 312处理该输入图像块328的方式类似于第一级CNN 308和第二级CNN 310。例如,图6示出了根据本申请描述的一些实施例,第三级CNN 312的示例性实施过程600的框图。
从图6中可以看出,第三级CNN 600同样包括三级CONV和MP层(即CONV(1)/MP(1)、CONV(2)/MP(2)以及CONV(3)/MP(3)),后接两个FC层(即FC(1)和FC(2))。在如图所示的实施例中,CONV(1)层包括步长为1的32个3×3的滤波器。因此,CONV(1)层的输出的尺寸为44×44×32(基于46×46的输入尺寸)。该MP(1)层使用步长为2的2×2的池化窗口。因此,该MP(1)层的输出尺寸为22×22×32。CONV(2)层包括步长为1的50个3×3的滤波器。因此,CONV(2)层的输出的尺寸为20×20×50。该MP(2)层使用步长为2的2×2的池化窗口。因此,该MP(2)层的输出尺寸为10×10×50。CONV(3)层包括步长为1的50个3×3的滤波器。因此,CONV(3)层的输出的尺寸为8×8×50。该MP(3)层使用步长为2的2×2的池化窗口。因此,该MP(3)层的输出尺寸为4×4×50。第一层和最后一层FC层的输出分别为256×1和16×1的矢量。
需要说明,输入图像块602(即,图3中的其中一个重新设定尺寸的图像块328)的尺寸为46×46×1=2116(即仅采用单一通道的灰度图),并且在上文讨论的第三级CNN 600中,第三级CNN 312的最大输入尺寸有必要大于2116。然而,如果CNN模块的最大输入尺寸小于2116,则该CNN模块不能够用于实现第三级CNN 600。因此,在图6所示的实施例中,虽然在设计阶段有益于优化网络参数,仅支持1280像素的最大输入尺寸的Hi3519的内嵌硬件CNN模块无法实现该第三级CNN 600。
为了解决上述问题,可以采用本申请的相关专利申请中所描述的基于子图像的CNN***和技术。更具体地,利用该基于子图像的CNN***和技术,可以将该输入图像块602划分为一组重叠的子图像。例如,图7示出了根据本申请描述的一些实施例中,46×46的图像块的示例性输入图像划分方案。从图7左侧可以看出,输入图像块602可以划分为一组重叠的4个子图像或块,每个子图像或块的尺寸为30×30,并且在相邻的子图像之间具有16像素的偏移或步长。同时需要注意,在图7中,利用较小的人工补偿稍微调整该4个子图像的重叠配置,从而可以更好地显现并且更好地区分该4个子图像。然而,这些人工补偿只是为了使这些重叠的子图像在图中可视化;在实施过程中,不可以将其理解为这些子图像之间的实际补偿。实际上,这4个子图像的行坐标分别以1和17开始,而这4个子图像的列坐标分别以1和17开始。该组不具有人工补偿的4个重叠的图像被显示为具有人工补偿的、***到主图像的右上角的较小的***物。
需要注意的是,具体数值(即46×46的输入图像尺寸、30×30的子图像尺寸以及16×16的步长尺寸)均是基于相关专利申请15/441,194所描述的理论设计的,该部分内容以引用形式被并入本文。如上文所述以及该相关专利申请所证明的,使用这些设计数据确保了该4个子图像的每个输出合并后的输出等同于第三级CNN 600的输出,其中该第三级CNN600处理整个输入图像块,而不采用基于子图像的CNN技术。
图8示出了根据本申请一些实施例,基于小规模硬件CNN模块的第三级CNN 312的示例性实施过程800的框图。从图8中可以看出,第三级CNN 800也包括三级CONV和MP层(即CONV(1)/MP(1)、CONV(1)/MP(1)和CONV(3)/MP(3)),这些CONV和MP层的参数与第三级CNN600的对应CONV和MP层的参数相同。第三级CNN 800还包括输入模块802,该输入模块802接收该46×46的输入图像块602。输入模块802用于将图像块602划分为4个尺寸为30×30的子图像804;该子图像804小于Hi3519内的内嵌硬件CNN可支持的最大输入图像尺寸。关于该输入模块802的更详细的操作可见于相关专利申请15/441,194(例如,如图2B所示的输入模块212),该部分内容以引用形式被并入本文。
在一些实施例中,该第三级CNN 800的该三级CONV和MP层用于顺序地处理该4个子图像804。从图8中可以看出,对于给定的30×30的子图像804(很明显地,该子图像804为图像块602的一部分/子图像),CONV(1)层包括步长为1的32个3×3的滤波器。因此,CONV(1)层的输出的尺寸为28×28×32。该MP(1)层使用步长为2的2×2的池化窗口。因此,该MP(1)层的输出尺寸为14×14×32。CONV(2)层包括步长为1的50个3×3的滤波器。因此,CONV(2)层的输出的尺寸为12×12×50。该MP(2)层使用步长为2的2×2的池化窗口。因此,该MP(2)层的输出尺寸为6×6×50。CONV(3)层包括步长为1的50个3×3的滤波器。因此,CONV(3)层的输出的尺寸为4×4×50。该MP(3)层使用步长为2的2×2的池化窗口。因此,该MP(3)层的输出尺寸为2×2×50,即50个2×2的特征图806。对于该组4个子图像804,MP(3)层生成4组2×2×50的特征图806的输出。
如图8所示,第三级CNN 800还包括合并模块808,该合并模块808用于接收并合并该4组2×2×50的特征图806,以形成该完整输入图像块602的完整特征图,其中该输入图像块602即该第三级CNN 800的输入。关于该合并模块808的更详细的操作可见于相关专利申请15/441,194(例如,如图2B所示的合并模块222),该部分内容以引用形式被并入本文。如该相关专利申请所描述的,与该组4个子图像804相关的输出特征图与相邻的子图像对应的相邻特征图之间不具有重叠部分,并且没有间隙。该输出特征图可在第一FC层之前直接合并,以生成与图6中第三级CNN 600相同的输出。该合并结果,即第三级CNN 800的输出为50组4×4的特征图810,其中一个特征图显示在图7的右侧。
在一些实施例中,该Hi3519的内嵌硬件CNN用于实现第三级CNN 800中所示的三级CONV和MP层。然而,该Hi3519的内嵌硬件CNN还包括至少三个FC层。在一实施例中,为了容纳Hi3519所需的这些FC层,第三级CNN 800还包括两个虚拟FC层(图中未明确示出),该虚拟FC层具有相同的矩阵参数。此外,在Hi3519中,在每个FC层后分别具有一个ReLU层。然而,如相关专利申请所公开的,该ReLU层不会影响该虚拟FC层的输出,这是因为多个串联的ReLU层等同于一个ReLU层。
需要说明的是,第三级CNN 800的输入图像尺寸不是必须为46×46。可以是小于Hi3519的内嵌硬件CNN的最大输入尺寸的别的尺寸(这时不需要把输入分为子图像)。也可以采用其他更大的可行尺寸作为该第三级CNN 800的输入图像尺寸,而该可行尺寸的要求可见于相关专利申请15/441,194,该部分内容以引用形式被并入本文。例如,该第三级CNN800的其他可行输入图像尺寸可以是62×62。利用该图像尺寸,输入图像块802可以划分为9个重叠的子图像,每一个子图像的尺寸为30×30,相邻子图像在水平和垂直方向的步长均为16。
回到图3,如果采用第三级CNN 80实现该人脸检测***300的第三级CNN 312,则第三级CNN 312输出50组4×4的特征图810,该特征图80即为最终决策模块314的输入。在一些实施例中,最终决策模块314包括多个FC层,该FC层用于对接收到的特征图进行操作,并生成该输入视频图像302的最终决策,该决策如图3所示的人脸检测决策316。
图9示出了根据本申请一些实施例,最终决策模块314的示例性实施过程900的框图。从图9可以看出,重组模块接收并处理一组50组4×4的特征图810,该重组模块用于将该组二维特征图合并并重组成尺寸为800×1的一维矢量。该一维矢量进一步由两级FC层处理,即FC(1)和FC(1),随后FC层输出给定的已检测移动区域318的人脸检测决策316。在一些实施例中,利用如柔性最大值(softmax)分类器的线性分类器实现最后的FC层,即FC(2)。在如图所示的实施例中,人脸检测决策316可以包括人脸分类器904、边界框回归运算符906,以及人脸关键点位置运算符908。如上文所述,人脸检测决策316内的标记位置运算符908可以包括已检测人脸的5个人脸关键点,即左眼、右眼、鼻子和两个嘴角。虽然最终决策模块900内的两个FC层的尺寸分别为256和16,但是在其他实施例中,最终决策模块314可以具有不同于最终决策模块900的FC层尺寸。需要注意的是,可以通过软件实现或者通过Hi3519上的CPU上处理该最终决策模块900,这是因为最终决策计算复杂度要远低于三级CNN 308、310和312中的任何一项。
图10呈现了一流程图,该流程图描述了根据本发明一些实施例,利用本申请公开的在具有CNN功能的嵌入式***上执行的人脸检测***300的示例性人脸检测过程1000。在一些实施例中,该具有CNN功能的嵌入式***包括小规模低成本片上***,如Hi3519片上***。当本申请公开的人脸检测***的输入端接收到视频图像/帧(步骤1002),表示该人脸检测过程1000的开始。在一些实施例中,该视频图像由高分辨率摄像头获取,该摄像头例如为监控摄像头、机器视觉摄像头、自动驾驶汽车上的摄像头或移动手机摄像头。
接下来,在人脸检测***1000中,可对输入视频图像/帧执行运动检测操作,以定位并识别该视频帧内的一组移动区域(即该视频帧内与运动相关的图像块),此即步骤1004。在一些实施例中,可利用具有CNN功能的嵌入式***内的内嵌背景消除模块实现该移动检测操作,以检测该视频图像/帧内的移动区域。该移动检测操作的输出包括该视频帧内的一组已被识别的移动区域。在一些实施例中,该移动检测操作可由人脸跟踪操作替代或者与该人脸跟踪操作结合。需要说明,通过在人脸检测过程1000中结合运动检测和人脸跟踪,可以显著提高人脸检测速度。在一些实施例中,人脸检测过程1000省略了该运动检测操作。
接下来,在人脸检测***1000中,针对每一个已检测移动区域,可对该已检测移动区域执行金字塔生成操作,以生成已检测移动区域的多分辨率表示(步骤1006)。更具体地,已检测移动区域的较高分辨率表示可用于检测该初始输入视频图像中的较小的人脸;而已检测移动区域的较低分辨率表示可用于检测该初始输入视频图像中的较大的人脸。
接下来,在人脸检测***1000中,在以多分辨率表示的每个图像执行滑动窗口操作,为该图像生成一组图像块(步骤1008)。在一些实施例中,该滑动窗口的尺寸由配置有第一复杂度的第一CNN处理级的第一输入尺寸决定。
接下来,在人脸检测***1000中,第一CNN处理级用于处理所有的图像块,其中该图像块对应于已检测移动区域的每个多分辨率表示的每个滑动窗口位置,以生成第一组候选人脸窗口(步骤1010)。在一些实施例中,第一组候选人脸窗口中的每一个窗口都与置信度指数和一组边界框坐标关联。在一些实施例中,每一个候选人脸窗口也与5个人脸关键点关联,即左眼、右眼、鼻子和两个嘴角。在一些实施例中,第一CNN处理级满足小规模硬件CNN模块的限制,该CNN模块例如为Hi3519内的内嵌硬件CNN模块,从而可由该Hi3519内的内嵌硬件CNN模块实现该CNN处理级。
接下来,在人脸检测***1000中,第二CNN处理级用于处理对应于第一组候选人脸窗口的第一组重新设定尺寸的图像块,以生成第二组候选人脸窗口(步骤1012)。在一些实施例,该第二CNN处理级具有第二复杂度,该第二复杂度高于第一复杂度。在一些实施例中,该第一组重新设定尺寸的图像块的尺寸等于第二CNN处理级的第二输入尺寸,其中该第二输入尺寸大于第一CNN处理级的第一输入尺寸。因此,相比于第一CNN处理级,第二CNN处理级处理具有更高人脸检测准确度的更高分辨率的输入图像块。在一些实施例中,第二组候选人脸窗口中的每一个窗口与置信度指数和一组边界框坐标关联。在一些实施例中,每一个候选人脸窗口也与5个人脸关键点关联,即左眼、右眼、鼻子和两个嘴角。在一些实施例中,第二CNN处理级满足小规模硬件CNN模块的限制,该CNN模块例如为Hi3519内的内嵌硬件CNN模块,从而可由该Hi3519内的内嵌硬件CNN模块实现该CNN处理级。
接下来,在人脸检测***1000中,第三CNN处理级用于处理对应于第二组候选人脸窗口的第二组重新设定尺寸的图像块,以生成第三组候选人脸窗口(步骤1014)。在一些实施例,该第三CNN处理级具有第三复杂度,该第三复杂度高于第一和第二复杂度。在一些实施例中,该第二组重新设定尺寸的图像块的尺寸等于第三CNN处理级的第三输入尺寸,其中该第三输入尺寸大于第一和第二CNN处理级的第一和第二输入尺寸。因此,相比于第一和第二CNN处理级,第三CNN处理级处理具有更高人脸检测准确度的更高分辨率的输入图像块。在一些实施例中,第三组候选人脸窗口中的每一个窗口与置信度指数和一组边界框坐标关联。在一些实施例中,第三组候选人脸窗口中的每个窗口也与5个人脸关键点关联,即左眼、右眼、鼻子和两个嘴角。需要说明,对于该初始输入视频帧内的每个已检测移动区域,重复1006-1014步骤。
在一些实施例中,理想情况下,同样使用诸如Hi3519内的内嵌硬件CNN模块的小规模硬件CNN模块实现该第三CNN处理级。然而,由于该第三CNN处理级的输入尺寸可能会大于该小规模硬件CNN模块的最大输入尺寸,因此,需要采用基于子图像的CNN方法。
图11呈现了一流程图,该流程图描述了根据本申请所述的一些实施例,利用基于子图像的CNN***处理第二组重新设定尺寸的图像块(即过程1000中的步骤1014)的示例性过程1100。
一开始,给定的重新设定尺寸的图像块被划分为一组具有更小图像尺寸的子图像(步骤1102)。在一些实施例中,该一组子图像包括一个二维阵列的重叠子图像。例如,46×46的图像块可以被划分为一组4个重叠子图像,其中每个子图像的尺寸为30×30,并且相邻子图像之间具有16像素的偏移。此外,该子图像的尺寸小于诸如Hi3519在内的内嵌硬件CNN模块的小规模硬件CNN模块的最大输入尺寸。
接下来,该小规模硬件CNN模块顺序处理该一组子图像,以生成阵列的特征图(步骤1104)。在一些实施例中,利用该小规模硬件CNN模块处理每个子图像的步骤包括在该子图像上应用多级CONV层和MP层。
接下来,该小规模硬件CNN模块输出的该阵列的特征图被合并为一组合并特征图(步骤1106)。更具体地,该一组合并特征图等同于大规模CNN生成的整个高分辨率的重新设定尺寸的图像块的完整的特征图,其中该大规模CNN不需划分而直接处理整个高分辨率的重新设定尺寸的图像块。接下来,第二CNN模块处理该一组合并特征图,以预测该重新设定尺寸的图像块是否为人脸(步骤1108)。在一些实施例中,处理该一组合并特征图的步骤包括在该一组合并特征图上应用多级FC层。
需要说明,虽然上文公开的人脸检测***的多个实施例将该基于子图像的CNN技术应用于一级联CNN***的最后一个CNN级,然而在其他实施例中,该人脸检测***也可以将该基于子图像的CNN技术应用于级联CNN***的不止一级,例如,应用于该级联***的最后两级。
基于人脸图像的年龄和性别评估
需要说明的是,例如在零售业、市场交易、安全监控和社交网络等很多商业应用中,可对视频图像中获取到的人的年龄和性别进行自动评估是高度期望的性能。例如,安装在零售店的安全摄像头***可以利用该性能,基于评估的性别和年龄组对该安全摄像头获取到的顾客进行自动分类,这有利于零售商更好地了解顾客类型、趋势和习惯。因此,在获取到的视频图像中检测到人脸之后,可将CNN应用于该已检测人脸图像中,以执行年龄和性别评估。
在本申请之前,已经公开了一定数量的利用CNN进行年龄和性别评估的方法。罗特(Rothe)等人(对不具有人脸关键点的单个图像执行实际和表观年龄的深度期望(Deepexpectation of real and apparent age from a single image without faciallandmarks),计算机视觉国际期刊(International Journal of Computer Vision,IJCV),2016年7月)利用具有13个CONV层及3个FC层的16层VGG神经网络处理分辨率为256×256的输入图像。利瓦伊(Levi)等人(利用卷积神经网实现年龄和性别分类(Age and genderclassification using convolutional neural networks),计算机视觉和模式识别(Computer Vision and Pattern Recognition,CVPR)研讨会上的IEEE会议,2015年6月)采用了分辨率为227×227的彩色图像。更具体地,利瓦伊采用的网络包含三个CONV层,每个CONV层后都有线性修正算子以及取3×3区域中最大值的MP层。该第一个CONV层包含有96个3×7×7像素的滤波器;第二个CONV层包含有256个96×5×5像素的滤波器;第三个CONV层包含有384个256×3×3像素的滤波器;其中,前两个CONV层还采用了局部反应归一化层。在CONV层之后,采用了包含512个神经元的两个FC层,并且每个FC层后都包含有ReLU以及丢弃层(dropout layer)。此外,另一个FC层(第三FC层)用于将该输出映射到用于年龄和性别分类的最后一级。玛尔(Mall)等人(采用深度学习模型集合实现表观年龄评估(Apparent ageestimation using ensemble of deep learning models),CVPR,2016)对基于VGG的深度学习模型的集合进行训练,然后对这些深度学习模型的输出进行组合,以生成最终的评估。易(Yi)等人(通过多规模卷积网络实现年龄评估(Age estimation by multi-scaleconvolutional network),计算机视觉亚洲会议(Asian Conference on ComputerVision,ACCV),2014)通过融合一些人脸关键点周围的具有不同尺寸的图像块的特征,开发了一种多块且多规模的方案。易还表示可以通过相同的网络联合评估性别和年龄。
需要注意的是,类似于上文描述的在集成有小规模低成本CNN模块的嵌入式***上实现用于人脸检测的级联CNN结构存在的问题,由于技术的复杂性,上文描述的年龄和性别评估技术通常不适用于一些基于小规模硬件CNN模块的低成本的嵌入式***。例如,如果尝试在Hi3519 SoC的内嵌CNN模块上实现上述其中一个年龄和性别评估技术,则必须要考虑与Hi3519内嵌CNN模块相关的众多限制。例如,如上文所述,Hi3519 CNN模块可支持的最大输入图像尺寸,即输入像素的最大值为1280,这就导致了Hi3519的硬件配置限制。因此,当灰度人脸图像作为输入,并假定人脸图像为正方形图像,则这些人脸图像的分辨率一定要小于36×36。当一定要使用彩色人脸图像时,则可支持的最大分辨率会更低。然而,该低分辨率会明显降低年龄和性别评估的准确度,尤其是当人脸图像还会因其他因素而降低分辨率,该因素如照明环境不良、运动模糊以及不同的姿态。
由于特定设计而导致的与Hi3519的内嵌CNN模块相关的其他限制包括但不限于(1)、该输入图像的宽边像素数和高边像素数必须为偶数;(2)CONV层或者FC层的最大值为8;(3)、FC层的最大输出尺寸为256;(4)、第一FC层的输入尺寸不得超过1024;(5)、每一个CONV层后必须接MP层;(6)、每个CONV层的滤波器的数量最多为50;(7)、在每个MP层中,该内嵌CNN仅支持2×2像素的池化窗口尺寸;以及(8)、该内嵌CNN模块在CONV层中仅支持3×3滤波器。
虽然一些低成本嵌入式***具有诸多限制,但是将年龄和性别评估能力与这些低成本嵌入式***结合起来是非常有益的,从而与上述人脸检测能力结合来处理已检测人脸。例如,基于已获取并检测人脸图像在监控摄像头***内现场执行年龄和性别评估,而无需采用独立的服务器执行这些操作可以显著降低操作成本。然而,为了保证该评估的准确度不受影响,需要采用该已检测图像的原始分辨率。
因此,本申请提出的年龄和性别评估***还可以采用上文描述的基于子图像技术,根据分而治之的原则处理可检测到的人脸图像,其中该人脸图像的尺寸大于给定小规模CNN模块可支持的输入像素的最大值。在一些实施例中,该年龄和性别评估***可利用基于子图像技术,首先将高分辨率输入人脸图像划分为一组具有合适尺寸的图像块(也被称为“子图像”),在相邻图像块之间具有合理设计的重叠部分。然后,小规模CNN模块分别处理每个图像块,该小规模CNN模块例如为Hi3519内的内嵌CNN模块。对应于该组图像块的输出随后被合并,以获得对应于高分辨率输入人脸图像的输出,并且该合并后的输出可以被该年龄和性别评估***中的后续的层处理,从而为该输入人脸图像生成年龄和性别分类。在一些实施例中,基于子图像技术的该年龄和性别评估***可媲美无需划分,直接处理整个高分辨率输入人脸图像的大规模CNN。因此,本申请提出的基于子图像的CNN***的输出可完全等同于该大规模CNN的输出。
图12示出了根据本申请一些实施例,基于小规模CNN模块的示例性年龄和性别评估神经网络1200的框图。从图12中可以看出,神经网络1200接收尺寸为46×46的输入人脸图像1202,并将该输入人脸图像1202作为输入。如上文所述,输入人脸图像1202既可以由尺寸分别为46×46的3个R/G/B通道表示,又可以由尺寸为46×46的单个灰度图像/通道表示。输入人脸图像1202然后通过3个CONV层(即CONV(1)-CONV(3)),每个CONV层后都接有ReLU层(未示出)和MP层(即MP(1)-MP(3))。需要说明,每个CONV层均采用3×3滤波器,并且每个MP层均采用尺寸为2×2像素的池化窗口。这些设计参数满足一些小规模CNN模块,如Hi3519的限制。
在该CONV/ReLU/MP层之后,FC层(即FC(1))和基于柔性最大值(softmax)分类器的输出层用于对输入人脸图像1202进行最终分类/评估。虽然最终的输出层显示为基于柔性最大值分类器,但是还可以采用适于深度学习应用的其他类型的分类器实现该神经网络1200的最终输出层。需要说明,神经网络1200的前两个输出(性别:2)用于性别评估,即男性和女性的可能性。神经网络1200的接下来的8个输出(年轮组:8)对应于8个年龄组的可能性,例如年龄范围包括0岁-2岁、4岁-6岁、8岁-13岁、15岁-20岁、25岁-32岁、38岁-43岁、48岁-53岁、60岁及以上。需要说明,在仅需要评估性别或年龄组的应用环境中,可以简化该神经网络1200的输出,仅包括性别输出或年龄输出。
在一些实施例中,年龄和性别评估神经网络1200可通过训练人脸图像训练该网络参数。在一些实施例中,通过训练过程可以优化的这些网络参数,该网络参数包括:每个CONV层中滤波器的数量、每个CONV层中滤波器的权重和阈值等。因此,图12所示的数字仅为训练神经网络1200的示例性配置。更具体地,该CONV(1)层包括步长为1的24个3×3的滤波器。因此,对于尺寸为46×46的输入图像1202,CONV(1)层的输出的尺寸为44×44×32。该MP(1)层使用步长为2的2×2的池化窗口。因此,该MP(1)层的输出尺寸为22×22×32。该CONV(2)层包括步长为1的48个3×3的滤波器。因此,CONV(2)层的输出的尺寸为20×20×48。该MP(2)层使用步长为2的2×2的池化窗口。因此,该MP(2)层的输出尺寸为10×10×48。该CONV(3)层包括步长为1的48个3×3的滤波器。因此,CONV(3)层的输出的尺寸为8×8×48。该MP(3)层使用步长为2的2×2的池化窗口。因此,该MP(3)层的输出尺寸为4×4×48。因此,FC(1)层的输入尺寸为768。FC(1)层以及柔性最大化分类器的输出分别为向量256×1和向量10×1。
在一些实施例中,该训练神经网络1200的上述网络参数可以满足给定小规模CNN模块的限制,从而该给定小规模CNN模块可以用来实现神经网络1200,其中该小规模CNN模块例如为Hi3519SoC中的CNN模块。然而,只要给定的网络配置可以满足如Hi3519中的给定小规模CNN模块的限制,可以构建具有其他配置的神经网络1200,包括使用不同数量的、与神经网络1200不同尺寸的CONV/ReLU/MP层、滤波器和FC层,都在本申请描述的技术保护范围之内。
需要说明的是,在第一CONV层直接接收46×46的输入图像1202的示例性配置的神经网络1200可在本申请提出的基于小规模CNN模块的年龄和性别评估CNN***的设计阶段,利用46×46的训练图像训练该网络参数。然而,对于Hi3519中的内嵌式硬件CNN模块,输入人脸图像1202的尺寸大于该内嵌硬件CNN模块可支持的输入像素的最大值。因此,该示例性配置的神经网络1200不可在该Hi3519的内嵌式硬件CNN模块上直接实现,这是因为输入图像1202的尺寸超出了该Hi3519的CNN模块的CONV(1)层可允许/支持的最大输入图像尺寸。
为了解决上问题,可以采用相关专利申请15/441,194中所述的基于子图像的CNN***和技术。更具体地,通过采用该基于子图像的CNN***和技术,可以将该输入人脸图像1202划分为一组具有合适尺寸的子图像或图像块,各相邻的图像块之间具有合理设计的重叠部分。上文已结合图7描述了46×46的输入图像的合理的划分方案。因此,输入人脸图像1202可以划分为一组具有重叠部分的4个子图像或图像块,其中每个子图像或图像块的尺寸为30×30,并且相邻的子图像或图像块之间的偏移或步长为16像素。
需要说明的是,尽量图12所示的示例中采用46×46图像作为该年龄和性别评估CNN***的输入,但是从原始视频或静止图像中截取的已检测人脸图像可以具有很多不同的尺寸。为了简化讨论,将输入人脸图像设定为具有相同宽度和高度的正方形图像。一般来讲,该输入人脸图像也可包括非正方形图像,下文基于正方形图像的讨论可以延及非正方形图像。
图13示出了根据本申请描述的一些实施例,基于小规模硬件CNN模块以及基于子图像技术的示例性年龄和性别评估***1300的框图。在一些实施例中,由包括小规模CNN模块的低成本嵌入式***实现年龄和性别评估***1300,例如通过集成Hi3519 Soc。如图13所示,年龄与性别评估***1300接收输入人脸图像1302,并将该输入人脸图像1302作为输入,然后生成性别和年龄/年龄组分类1312,并将该性别和年龄/年龄组分类1312作为输出,即,对对应于输入人脸图像1302的人进行年龄和性别评估。在一些实施例中,输入人脸图像1302为上文描述的处理已获取视频图像的人脸检测***300的输出。因此,可以从原始视频图像,如输入视频图像302中截取输入人脸图像1302。然而,输入人脸图像1302也可以是主要包括人脸的原始输入图像。在本文中,输入人脸图像1302可具有不同于46×46的尺寸。
年龄和性别评估***1300至少包括输入模块304、CNN模块1306、合并模块1308以及分类模块1310。输入模块304用于执行上文提到的子图像划分,从而尺寸超出小规模硬件CNN模块可支持的最大输入尺寸的输入人脸图像1302可以被划分为尺寸不大于该小规模硬件CNN模块可支持的最大输入尺寸的一组子图像,从而该组子图像可以分别由该小规模硬件CNN模块分别处理。因此,该CNN模块1306可以由该小规模CNN模块实现,以处理较小的子图像。合并模块1308用于合并对应于该组子图像的输出,以确保该合并结果等同于不采用基于子图像的技术,而将该输入人脸图像1302作为整体进行处理的结果。决策模块1310用于将输出从合并模块1308映射至最后一级,用于年龄和性别分类。年龄和性别评估***1300还可包括图13中未示出的其他模块。下面将更加详细地描述该年龄和性别评估***1300的各个部分。
如图13所示,输入模块1304接收输入人脸图像1302。输入模块1304用于确定该输入人脸图像1302的尺寸是否小于或等于CNN模块1306的最大输入图像尺寸。例如,如果由Hi3519中的小规模CNN模块实现CNN模块1306,则CNN模块1306可支持的最大输入图像尺寸为1028,而输入模块1304将该输入图像1302的尺寸与1028进行对比。在一些实施例中,如果该输入人脸图像1302的尺寸小于或者等于CNN模块1306的最大输入图像尺寸,则输入模块1304被配置为直接将该输入人脸图像1302传送至CNN模块1306,而不执行任何子图像操作。然而,在其他一些实施例中,如果该输入人脸图像1302的尺寸小于或者等于CNN模块1306的最大输入图像尺寸,则输入模块1304将该输入人脸图像1302的尺寸重新设定(通过上采样)为满足子图像划分限制的预定义输入图像尺寸,然后将该重新设定尺寸的输入图像划分为用于后续子图像处理的一组子图像。该预定义输入图像尺寸的概念在下文中将更加详细地描述。
如果该输入人脸图像1302的尺寸大于CNN模块1306可支持的最大输入图像尺寸,则输入模块1304进一步确定该输入图像1302的尺寸是否满足划分限制。以引用形式并入本文的相关专利申请15/441,194提供了关于3CONV层/3MP层的CNN***的划分限制。如该相关专利申请中所讨论的,该输入人脸图像1302应该满足该划分限制,从而确保在该输入人脸图像1302被划分为一组子图像、处理该组子图像以及后续将该组子图像合并成该输入人脸图像1302的特征图之后,每个合并后的特征图不具有空隙或者重叠部分。该划分限制还确保了来自该组子图像的每个特征图的合并特征图等同于无需使用基于子图像的CNN技术将该输入人脸图像1302作为一个整体进行处理而生成的特征图。具体的,对于3CONV层/3MP层的CNN***,该输入图像的宽度和高度应该满足条件:X=8n+14,其中n为正整数。例如,当n=3时,则X=38;当n=4时,则X=46;当n=5时,则X=54;当n=6时,则X=62。然而,需要说明的是,具有不同数量的CONV/MP层的其他配置的CNN模块1306可具有不同的划分限制。
在一些实施例中,年龄和性别评估***1300的划分限制为满足配置CNN模块1306的一般划分限制的预定义输入图像尺寸。例如,如果CNN为3CONV层/3MP层的CNN***,则年龄和性别评估***1300的划分限制可以是用于满足条件X=8n+14的预定义图像尺寸。因此,该划分限制可以是46×46或62×62。在该示例中,如果输入人脸图像1302的尺寸同样为46×46或62×62,则该输入人脸图像1302满足该划分限制。
如果输入模块1304确定该输入图像1302满足预定义限制,则该输入模块1304可将输入人脸图像1302划分为一组子图像。例如,如果该预定义划分限制为46×46,则输入人脸图像1302可被划分为4个尺寸为30×30的子图像,相邻子图像之间的偏移或步长为16像素。需要说明的是,每个子图像的尺寸均小于Hi3519中的内嵌式硬件CNN模块的最大输入图像尺寸。在另一个示例中,如果该预定义划分限制为62×62,则输入人脸图像1302可被划分为9个尺寸为30×30的子图像,相邻子图像之间的偏移或步长为16像素。然而,如果输入模块1304确定该输入图像1302不满足该预定义划分限制,则该输入模块1304将该输入图像1302的尺寸重新设定为预定义输入图像尺寸。例如,如果该预定义划分限制为46×46,则尺寸大于46×46的输入图像将被降采样至46×46的尺寸;反之,尺寸小于46×46的输入图像将被上采样至46×46的尺寸。在重新设定该输入图像1302的尺寸,以满足该限制之后,可以如上文所述的方式相应地将该重新设定尺寸的输入图像1302划分为子图像。
需要说明的是,年龄和性别评估***1300可以具有多个预定义输入图像尺寸,用于满足相关CNN模块的一般划分限制,并且该多个预定义输入图像尺寸中的每一个均针对一给定人脸图像分辨率的特定类型的应用环境而设计。例如,在已获得的人脸图像中大多包含高分辨率人脸的应用环境(例如智能手机摄像头)中,该年龄和性别评估***1300中相应的预定义输入图像尺寸也应该具有较高的分辨率。然而,在已获得的人脸图像中大多包含低分辨率人脸的应用环境(例如零售店的监控摄像头)中,则该年龄和性别评估***1300中相应的预定义输入图像尺寸也应该具有较低的分辨率。
需要说明的是,较高分辨率的预定义输入图像尺寸可获得具有更高准确度的年龄和性别评估,但同时会导致较高的计算成本以及较长的处理时间。与之相较,较低分辨率的预定义输入尺寸需要较短的处理时间,但获得的年龄和性别评估的准确度较低。因此,可将该年龄和性别评估***1300设计为具有适用于不同类型的应用环境的多个预定义输入图像尺寸。接下来,当该年龄和性别评估***1300用于给定应用环境时,可基于与该给定应用环境相关的典型人脸图像分辨率在该多个预定义输入图像尺寸中选择具体的预定义输入图像尺寸。
图14示出了根据本申请描述的一些实施例,在输入模块1304中预处理输入人脸图像的示例性过程1400的流程图。一开始,输入模块1304接收新的输入人脸图像1302(步骤1402)。随后,该输入模块1304确定该输入人脸图像1302的尺寸是否小于或等于CNN模块1306的最大输入图像尺寸(步骤1404)。在一些实施例中,该最大输入图像尺寸为该CNN模块1306内的小规模硬件CNN模块的限制。如果该输入人脸图像1302的尺寸小于或者等于该最大输入人脸图像尺寸,则该输入模块1304可将该输入人脸图像1302直接传送至CNN模块1306,而无需执行任何子图像操作。然而,在其他一些实施例中,输入模块1304可将该输入人脸图像1302的尺寸重新设定(例如通过上采样)为可满足子图像划分限制的预定义输入图像尺寸,然后将该重新设定尺寸的输入图像划分为一组子图像,用于后续子图像处理。
如果该输入人脸图像1302的尺寸大于该CNN模块1306的最大输入图像尺寸,则该输入模块1304确定该输入图像1302的尺寸是否满足预定义划分限制(步骤1406)。需要说明的是,假定输入人脸图像为1302为正方形图像,从而我们只需要检测该图像的大小即可。一般地,只有长度和宽度均满足该划分限制的输入图像1302才能满足划分限制。如果该输入模块1304确定输入图像1302满足预定义划分限制,则输入模块1304将输入人脸图像1302划分为一组子图像(步骤1408),并将该组子图像传送至CNN模块1306。然而,如果该输入模块1304确定该输入图像1302不能满足该预定义划分限制,则该输入模块1304将该输入图像1302的尺寸重新设定为该预定义输入图像尺寸(步骤1410)。例如,如果该输入图像1302大于该预定义输入图像尺寸,则输入模块1304将输入图像1302降采样至该预定义输入图像尺寸;反之,如果该输入图像1302小于该预定义输入图像尺寸,则输入模块1304将输入图像1302上采样至该预定义输入图像尺寸。然后,输入模块1304将该重新设定尺寸的输入人脸图像划分为一组子图像(步骤1412),并将该组子图像传送至CNN模块1306。
需要说明的是,由于该输入模块1304的相关操作与卷积操作相比具有非常低的计算复杂度,因此该输入模块1304可以由软件实现,并由Hi3519 SoC上的CPU处理。
图15示出了根据本申请描述的一些实施例,该年龄和性别评估***1300中的小规模CNN模块1306的示例性实施方式1500的框图。从图15中可以看出,小规模CNN模块1500与年龄和性别评估神经网络1200在第一FC层(FC(1))之前的部分具有相同的CONV层/MP结构以及相同的对应参数。以尺寸为46×46的输入人脸图像1302(可以是原始图像,也可以是重新设定尺寸的图像)为例,该输入模块1304可将尺寸为46×46的图像划分为尺寸为30×30的四个子图像1504,该尺寸30×30小于Hi3519的内嵌硬件CNN最大输入尺寸。如图15所示,小规模CNN模块1500可对每个30×30的子图像进一步处理,并且可以顺序地处理该组4个子图像1504。
如图15所示,对于给定的尺寸为30×30的子图像1504,CONV(1)层包括步长为1的24个3×3的滤波器。因此,CONV(1)层的输出的尺寸为28×28×24。该MP(1)层使用步长为2的2×2的池化窗口。因此,该MP(1)层的输出尺寸为14×14×24。CONV(2)层包括步长为1的48个3×3的滤波器。因此,CONV(2)层的输出的尺寸为12×12×48。该MP(2)层使用步长为2的2×2的池化窗口。因此,该MP(2)层的输出尺寸为6×6×48。CONV(3)层包括步长为1的48个3×3的滤波器。因此,CONV(3)层的输出的尺寸为4×4×48。该MP(3)层使用步长为2的2×2的池化窗口。因此,该MP(3)层的输出尺寸为2×2×48,即分辨率为2×2的48个特征图1506。对该组4个子图像1504,MP(3)层生成的输出为4组特征图1506,其中每组特征图包括48个2×2分辨率的特征图。如上文所描述的,由于示例性46×46输入人脸图像1302满足该划分限制,因此该4个30×30的子图像的输出在相邻子图像对应的相邻特征图之间不具有重叠部分或间隙,并且可以直接拼接,从而获得与图12(图12不需要划分输入人脸图像1302)FC(1)层之前部分相同的输出。
图16示出了根据本申请描述的一些实施例,年龄和性别评估***1300中合并模块1308和决策模块1310的示例性实施过程1600的框图。从图16中可以看出,图15中的每个子图像1504的输出(即48×2×2特征图)首先被转化为4个192×1的向量1602。出自该4个子图像的4个向量1602由串联模块1604串联,形成尺寸为768×1的一维(1D)向量1606。该一维向量1606由FC层1608进一步处理,并最终由柔性最大值分类器1610处理,以生成给定输入人脸图像1302的输出年龄和性别分类1312。例如,该年龄分类可包括8个年龄组,即0岁-2岁、4岁-6岁、8岁-13岁、15岁-20岁、25岁-32岁、38岁-43岁、48岁-53岁、60岁及以上。需要说明的是,由于这些操作与卷积操作相比具有非常低的计算复杂度,因此可以由软件实现,并由Hi3519上的CPU处理该合并模块1308和决策模块1310。在一些实施例中,可以利用设置在Hi3519 SoC上的Arm NEON指令进一步加快该合并模块1308和决策模块1310的操作。需要说明的是,虽然图中示出的FC(1)层1608的尺寸为256,然而在不背离本申请要求保护的技术范围的前提下,本申请提出的年龄和性别评估***1300还可以采用其他的FC(1)尺寸。
图17示出了根据本申请描述的一些实施例,利用本申请公开的年龄和性别评估***执行年龄和性别评估的示例性过程1700的流程图。一开始,该CNN***将输入人脸图像划分为具有较小图像尺寸的一组子图像(步骤1702)。更具体地,该组子图像的尺寸小于CNN***内的小规模硬件CNN模块可支持的最大输入尺寸。接下来,该组子图像在随后由该小规模硬件CNN模块处理,以生成特征图阵列(步骤1704)。在一些实施例中,利用该小规模硬件CNN模块处理每个子图像包括将多级CONV层和MP层应用于该子图像。
接下来,由该小规模硬件CNN模块输出的特征图阵列被合并为一组合并特征图(步骤1706)。更具体地,该组合并特征图等同于由大型CNN模块生成的完整的特征图,其中该大型CNN模块无需划分,直接处理整个输入人脸图像。接下来,该组合并特征图由划分模块处理,以生成与该输入人脸图像相关的人的年龄和性别划分(步骤1708)。在一些实施例中,处理该组合并特征图包括将一个或多个FC层以及FC层后的柔性最大值分类器应用于该组合并特征图。
虽然本申请提出的年龄和性别评估***以及图13-16是基于预定义输入图像尺寸为46×46的情况进行描述的,然而只要满足相关CNN模块的划分限制,也可以使用其他预定义输入图像尺寸,该具体尺寸可基于具体应用环境而定。例如,如果采用62×62的预定义输入图像尺寸,则每个输入图像或者重新设定尺寸的输入图像可以划分为重叠部分大小为30×30的9个子图像,并且无论在横向还是纵向上,相邻子图像间的步长均为16像素。
此外,本申请提出的年龄和性别评估技术可在包括分辨率有限的小规模硬件CNN模块的嵌入式***内实现,因此并不限于Hi3519。需要说明的是,在对获取的视频或静止图像执行现场人脸检测之后,立即对嵌入式***内的一组已检测人脸图像执行现场年龄和性别评估,而无需独立的设备、***或服务器对已检测人脸图像执行年龄和性别评估的能力可显著降低操作成本。在一些实施例中,该年龄和性别评估***还可以在不包括人脸检测低成本嵌入式***上实现。在这些实施例中,该低成本嵌入式***可直接接收来自一个或多个外部源的人脸图像,并在随后利用本申请提出的年龄和性别评估***对该接收到的人脸图像执行专门的年龄和性别评估操作。
应该理解的是,本申请描述的年龄和性别评估***及技术中的多个实施例同样可应用于目标分类。在这些应用中,该输入人脸图像就变成多个待分类的目标,该小规模CNN模块基于一组训练目标图像被训练,并且该分类***的输出表示每个输入目标图像的预计目标。
图18示出了示例性嵌入式***,在该嵌入式***内,所公开的人脸检测***以及年龄和性别评估***根据本申请描述的一些实施例实现功能。嵌入式***1800可整合或实现为监控摄像头、机器视觉摄像头、无人机、机器人,或自动驾驶汽车。在图18中可以看出,嵌入式***1800可包括总线1802、处理器1804、存储器1806、存储装置1808、摄像头***1810、CNN子***1812、输出装置接口1814,以及网络接口1816。
总线1802集中表示可连接嵌入式***1800的各种组件的所有***、***装置以及芯片组总线。例如,总线1802可将处理器1804与存储器1806、存储装置1808、摄像头***1810、CNN子***1812、输出装置接口1814,以及网络接口1816通信连接。
处理器1804从存储器1806取回指令予以执行并取回数据予以处理,以便控制嵌入式***1800的各种组件。处理器1804可以包括任何类型的处理器,包括但不仅限于微处理器、大规模计算机、数字信号处理器、电子记事簿、装置控制器和电器内的计算引擎,以及现在已知或以后开发的任何其他处理器。进一步地,处理器1804可包括一个或多个核。处理器1804本身可包括存储代码以及数据供处理器1804执行的高速缓存。
存储器1806可包括可以存储代码以及数据供处理器1804执行的任何类型的存储器。这包括但不仅限于动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、只读存储器(ROM),以及现在已知或以后开发的任何其他类型的存储器。
存储装置1808可包括可以与嵌入式***1800集成的任何类型的非易失性存储器装置。这包括但不限于磁性、光学,以及磁光存储装置,以及基于闪存和/或带蓄电池后备电源的存储器的存储装置。
总线1802还连接到摄像头***1810。该摄像头***1810被配置成以预定的分辨率采集静止图像和/或视频图像,并通过总线1802,将采集到的图像或视频数据传送到嵌入式***1800内的各种组件,诸如连接到存储器1806供缓冲,并连接到CNN子***1812供进行DL人脸检测。摄像头***1810可以包括一个或多个数字摄像头。在一些实施例中,摄像头***1810是配备有广角镜头的数字摄像头。由摄像头***1810采集到的图像可以具有不同的分辨率,包括高分辨率,诸如1280×720p,1920×1080p或其他高分辨率。
在一些实施例中,CNN子***1812还包括人脸检测子***1818以及年龄和性别评估子***1820。CNN子***1812用于接收获取的视频图像,如通过总线1802获取的高分辨率视频图像,并利用人脸检测子***1818,在接收到的视频图像中执行前述人脸检测操作,以生成该获取的视频图像的人脸检测结果,并利用年龄和性别评估子***1820,进一步在该已检测人脸图像中执行前述年龄和性别评估操作,以生成该已检测人脸图像的年龄和性别分类。特别地,CNN子***1812可包括一个或多个小规模硬件CNN模块。例如,CNN子***1812可包括一个或多个Hi3519片上***,其中每个Hi3519片上***均包括内嵌硬件CNN和可执行软件CNN功能的CPU。在一些实施例中,CNN子***1812根据本申请公开的人脸检测***300和本申请公开的年龄和性别评估***的其中一个实施例实现功能。
输出装置接口1814也连接到总线1802,所述输出装置接口1814例如可以显示由CNN子***1812所生成的结果。与输出装置接口1814一起使用的输出装置包括如打印机和显示装置,诸如阴极射线管显示器(CRT)、发光二极管显示器(LED)、液晶显示器(LCD),有机发光二极管显示器(OLED)、等离子体显示器,或电子纸。
最后,如图18所示,总线1802还通过网络接口1816将嵌入式***1800连接到网络(未示出)。如此,嵌入式***1800可以是网络(诸如局域网(“LAN”)、广域网(“WAN”),或内联网,或网络的网络,诸如因特网)的一部分。嵌入式***1800的任何或所有组件都可以与本公开主题一起使用。
这里所公开的各实施例所描述的各种说明性逻辑块、模块,电路、以及算法步骤,可以作为电子硬件、计算机软件或两者的组合来实现。为清楚地显示硬件和软件的此互换性,上文已经一般就其功能而言描述了各种说明性组件、单元、模块、电路,以及步骤。此类功能集是被实现为硬件还是软件取决于具体应用和整体***的设计约束。技术人员可针对每种特定应用以不同方式来实现所描述的功能集,但此类设计决策不应被解释为能够脱离本公开的范围。
用于实现与本文所公开的各方面一起所描述的各种说明性逻辑、逻辑块、模块、以及电路的硬件可以与通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、场可编程门阵列(FPGA)或其他可编程逻辑器件,单独的栅极或晶体管逻辑、单独的硬件组件,或被设计为执行本文所描述的功能的其任何组合,来实现或执行。通用处理器可以是微处理器,但是在备选方案中,处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器也可以作为接收器装置的组合来实现,例如,DSP和微处理器的组合、多个微处理器、和DSP核一起的一个或多个微处理器,或任何其他这样的配置。可另选地,一些步骤或方法可以由给定功能特定的电路来执行。
在一个或更多示例性方面,所描述的功能可以以硬件、软件、固件,或其任何组合来实现。如果以软件来实现,则功能可以作为一个或多个指令或代码存储在非暂态的计算机可读取的存储介质上或非暂态的处理器可读取的存储介质上。本文所公开的方法或算法的步骤可以以能够驻留在非暂态的计算机可读取的或处理器可读取的存储介质上的处理器可执行指令来具体化。非暂态的计算机可读取的或处理器可读取的存储介质可以是能够被计算机或处理器访问的任何存储介质。作为示例但不作为限制,这样的非暂态的计算机可读取的或处理器可读取的存储介质可包括RAM、ROM、EEPROM、闪存、CD-ROM或其他光盘存储器、磁盘存储器或其他磁存储装置,或可以用来存储指令或数据结构形式的所需要的程序代码并可以被计算机访问的任何其他介质。如本文所使用的磁盘和光盘包括压缩光盘(CD)、激光盘、光盘、数字多功能盘(DVD)、软盘,以及蓝光盘,其中,磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。上述各项的组合也包括在非暂态的计算机可读取的和处理器可读取的介质的范围内。另外,方法或算法的操作可以作为一个代码和/或指令或代码和/或指令的任何组合或组,驻留在非暂态的处理器可读取的存储介质和/或计算机可读取的存储介质上,存储介质可以被包括到计算机程序产品中。
尽管本专利文件包含许多细节,但是,这些不应该被解释为对任何所公开的技术的或要求保护的东西的范围的限制,而是作为对特定的技术的特定实施例的特定的特征的描述。在本专利文件中在单独的实施例的上下文中所描述的某些特征也可以在单一实施例中组合地实现。相反,在单一实施例的上下文中所描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,虽然特征在上文可以被描述为以某些组合地起作用,甚至最初要求如此,来自要求保护的组合的一个或多个特征可以在某些情况下从组合中删除,要求保护的组合可以被定向到子组合或子组合的变体。
类似地,尽管操作在附图中是按特定顺序描绘的,但是,这不应该被理解为要求这样的操作以所示出的特定顺序或按先后顺序执行,或所有所示出的操作都被执行,以实现所需要的结果。此外,在本专利文件中所描述的各实施例中的各种***组件的分离不应该被理解为在所有实施例中都要求这样的分离。
本专利文件只描述了几个实现和示例,可以基于在本专利文件中所描述的和示出的内容作出其他实现、增强和变化。
Claims (25)
1.一种利用具有最大输入尺寸限制的小规模卷积神经网络模块对人脸图像执行年龄和/或性别评估的方法,其特征在于,所述方法包括:
通过计算机接收主要由人脸覆盖的输入人脸图像;
利用所述计算机,根据最大输入尺寸限制,确定所述输入人脸图像的尺寸是否大于所述小规模CNN模块可支持的最大输入图像尺寸;以及
如果是,则确定所述输入人脸图像的尺寸是否满足预定义输入图像尺寸限制,其中所述预定义输入图像尺寸限制为多个图像尺寸中的一个给定图像尺寸,其中,所述多个图像尺寸满足可将输入图像划分为一组具有第二尺寸的子图像,所述第二尺寸小于所述最大输入图像尺寸;
如果是,
将所述输入人脸图像划分为一组具有第二尺寸的子图像;
利用所述小规模CNN模块处理该组子图像,以生成特征图阵列;
将所述特征图阵列合并为对应于所述输入人脸图像的一组合并特征图;
利用两个或多个全连接层处理该组合并特征图,从而为所述输入人脸图像中的人生成年龄和/或性别分类。
2.根据权利要求1所述的方法,其特征在于,如果所述输入人脸图像的尺寸不满足所述预定义输入图像尺寸限制,则所述方法还包括:
将所述输入人脸图像的尺寸重新设定为满足所述预定义输入图像尺寸限制的给定图像尺寸;
将重新设定尺寸的输入人脸图像划分为一组具有第二尺寸的子图像;
利用所述小规模CNN模块处理该组子图像,以生成特征图阵列;
将所述特征图阵列合并为对应于所述重新设定尺寸的输入人脸图像的一组合并特征图;以及
利用两个或多个全连接层处理该组合并特征图,从而为所述输入人脸图像中的人生成年龄和/或性别分类。
3.根据权利要求2所述的方法,其特征在于,将所述输入人脸图像的尺寸重新设定为满足所述预定义输入图像尺寸限制的给定图像尺寸包括:
如果所述输入人脸图像的尺寸大于所述给定图像尺寸,则将所述输入人脸图像降采样至所述给定图像尺寸;以及
如果所述输入人脸图像的尺寸小于所述给定图像尺寸,则将所述输入人脸图像上采样至所述给定图像尺寸。
4.根据权利要求1所述的方法,其特征在于,如果所述输入人脸图像的尺寸小于或等于所述小规模CNN模块的最大输入图像尺寸,则所述方法还包括:直接利用所述小规模CNN模块处理所述输入人脸图像,而无需将所述输入人脸图像划分为具有更小尺寸的一组子图像。
5.根据权利要求1所述的方法,其特征在于,如果所述输入人脸图像的尺寸小于或等于所述小规模CNN模块的最大输入图像尺寸,则所述方法还包括:
将所述输入人脸图像的尺寸上采样至满足所述预定义输入图像尺寸限制的给定图像尺寸;
将重新设定尺寸的输入人脸图像划分为一组具有第二尺寸的子图像;
利用所述小规模CNN模块处理该组子图像,以生成特征图阵列;
将所述特征图阵列合并为对应于所述重新设定尺寸的输入人脸图像的一组合并特征图;以及
利用两个或多个全连接层处理该组合并特征图,从而为所述输入人脸图像中的人生成年龄和/或性别分类。
6.根据权利要求1所述的方法,其特征在于,所述输入人脸图像为人脸检测CNN模块的输出,所述人脸检测CNN模块从输入视频图像中检测人脸图像。
7.根据权利要求1所述的方法,其特征在于,所述小规模CNN模块包括三个卷积层,其中所述三个卷积层中的每一个卷积层均后接有修正线性单元层和池化层。
8.根据权利要求1所述的方法,其特征在于,所述两个或多个全连接层的最后一个全连接层包括柔性最大值分类器。
9.一种利用至少一个小规模卷积神经网络模块的年龄和/或性别评估***,其特征在于,所述年龄和性别评估***包括:
输入模块,用于接收主要由人脸覆盖的输入人脸图像;
小规模CNN模块,与所述输入模块的输出相连,用于利用一组滤波器处理人脸图像,其中所述小规模CNN模块具有最大输入尺寸限制;
合并模块,与所述小规模CNN模块的输出相连;以及
决策模块,包括两个或多个全连接层,并与所述合并模块的输出相连;
其中,所述输入模块还用于
根据所述最大输入尺寸限制,确定所述输入人脸图像的尺寸是否大于所述小规模CNN模块可支持的最大输入图像尺寸;
如果是,则确定所述输入人脸图像的尺寸是否满足预定义输入图像尺寸限制,所述预定义输入图像尺寸限制为多个图像尺寸中的一个给定图像尺寸;其中,所述多个图像尺寸满足可将输入图像划分为一组具有第二尺寸的子图像,所述第二尺寸小于所述最大输入图像尺寸;
如果是,则所述输入模块还用于将所述输入人脸图像划分为一组具有第二尺寸的子图像;
其中,所述小规模CNN模块用于处理该组子图像,以生成特征图阵列;
其中,所述合并模块用于将所述特征图阵列合并为对应于所述输入人脸图像的一组合并特征图;
其中,所述决策模块利用两个或多个全连接层处理该组合并特征图,从而为所述输入人脸图像中的人生成年龄和/或性别分类。
10.根据权利要求9所述的年龄和/或性别评估***,其特征在于,如果所述输入人脸图像的尺寸不满足所述预定义输入图像尺寸限制,则
所述输入模块还用于:
将所述输入人脸图像的尺寸重新设定为满足所述预定义输入图像尺寸限制的给定图像尺寸;并且
将重新设定尺寸的输入人脸图像划分为一组具有第二尺寸的子图像;
所述小规模CNN模块还用于处理该组子图像,以生成特征图阵列;
所述合并模块还用于所述特征图阵列合并为对应于所述重新设定尺寸的输入人脸图像的一组合并特征图;并且
所述决策模块还用于利用两个或多个全连接层处理该组合并特征图,从而为所述输入人脸图像中的人生成年龄和/或性别分类。
11.根据权利要求10所述的年龄和/或性别评估***,其特征在于,所述输入模块将所述输入人脸图像的尺寸重新设定为所述给定图像尺寸的方式为:
如果所述输入人脸图像的尺寸大于所述给定图像尺寸,则将所述输入人脸图像降采样至所述给定图像尺寸;
如果所述输入人脸图像的尺寸小于所述给定图像尺寸,则将输入人脸图像上采样至所述给定图像尺寸。
12.根据权利要求9所述的年龄和/或性别评估***,其特征在于,如果所述输入人脸图像的尺寸小于或等于所述小规模CNN模块的最大输入图像尺寸,则所述小规模CNN模块还用于直接处理所述输入人脸图像,而无需将所述输入人脸图像划分为具有更小尺寸的一组子图像。
13.根据权利要求9所述的年龄和/或性别评估***,其特征在于,如果所述输入人脸图像的尺寸小于或等于所述小规模CNN模块的最大输入图像尺寸,则
所述输入模块还用于:
将所述输入人脸图像的尺寸上采样至满足所述预定义输入图像尺寸限制的给定图像尺寸;以及
将重新设定尺寸的输入人脸图像划分为一组具有第二尺寸的子图像;
所述小规模CNN模块还用于处理该组子图像,以生成特征图阵列;
所述合并模块还用于将所述特征图阵列合并为对应于所述重新设定尺寸的输入人脸图像的一组合并特征图;以及
所述决策模块还用于利用两个或多个全连接层处理该组合并特征图,从而为所述输入人脸图像中的人生成年龄和/或性别分类。
14.根据权利要求9所述的年龄和/或性别评估***,其特征在于,所述输入模块与人脸检测CNN模块相连,所述人脸检测CNN模块从输入视频图像中检测人脸图像,并且所述输入人脸图像为人脸检测CNN模块的输出。
15.根据权利要求9所述的年龄和/或性别评估***,其特征在于,所述小规模CNN模块包括三个卷积层,其中所述三个卷积层中的每一个卷积层均后接有修正线性单元层和池化层。
16.根据权利要求9所述的年龄和/或性别评估***,其特征在于,所述两个或多个全连接层的最后一个全连接层包括柔性最大值分类器。
17.根据权利要求9所述的年龄和/或性别评估***,其特征在于,所述小规模CNN模块为嵌入在芯片组或片上***的硬件CNN模块。
18.根据权利要求9所述的年龄和/或性别评估***,其特征在于,所述合并模块通过将所述特征图阵列串联成一维向量,合并所述特征图阵列。
19.一种可在已获取视频图像中现场执行人脸检测以及年龄和/或性别评估的嵌入式***,其特征在于,所述嵌入式***包括:
处理器;
与所述处理器相连的存储器;
与所述处理器和所述存储器相连,并用于获取视频图像的图像获取装置;
与所述图像获取装置相连,并用于从所述已获取视频图像中检测人脸的人脸检测子***;以及
与所述人脸检测子***相连,并包括具有最大输入尺寸限制的小规模CNN模块的年龄和性别评估子***,其中,所述年龄和性别评估子***用于:
接收来自所述人脸检测子***的主要由人脸覆盖的已检测人脸图像;
根据最大输入尺寸限制,确定所述已检测人脸图像的尺寸是否大于所述小规模CNN模块可支持的最大输入尺寸限制;
如果是,则确定所述已检测人脸图像的尺寸是否满足预定义输入图像尺寸限制,其中,所述预定义输入图像尺寸限制为满足可将输入图像划分为一组具有第二尺寸的子图像的多个图像尺寸中的一个给定图像尺寸,其中所述第二尺寸小于所述最大输入图像尺寸;
如果是,
将所述已检测人脸图像划分为一组具有第二尺寸的子图像;
利用所述小规模CNN模块处理该组子图像,以生成特征图阵列;
将所述特征图阵列合并为对应于所述已检测人脸图像的一组合并特征图;以及
利用两个或多个全连接层处理该组合并特征图,从而为所述已检测人脸图像中的人生成年龄和/或性别分类。
20.根据权利要求19所述的嵌入式***,其特征在于,所述小规模CNN模块为由所述年龄和性别评估子***和所述人脸检测子***共享的低成本硬件CNN模块。
21.一种利用具有最大输入尺寸限制的小规模卷积神经网络模块用于执行深度学习图像处理的方法,所述方法包括:
接收输入图像;
根据最大输入尺寸限制,确定所述输入图像的尺寸是否大于所述小规模CNN模块可支持的最大输入图像尺寸;
如果是,则
将所述输入图像划分为一组具有第二尺寸的子图像,其中所述第二尺寸小于所述最大输入图像尺寸;
利用所述小规模CNN模块处理该组子图像,以生成特征图阵列;
将所述特征图阵列合并为对应于所述输入图像的一组合并特征图;
利用两个或多个全连接层处理该组合并特征图,从而为所述输入图像生成分类决策。
22.根据权利要求21所述的方法,其特征在于,所述输入图像的尺寸满足预定义输入图像尺寸限制,其中所述预定义输入图像尺寸限制为满足可将输入图像划分为具有第二尺寸的一组子图像的多个图像尺寸中的一个给定图像尺寸。
23.根据权利要求21所述的方法,其特征在于,如果所述输入图像的尺寸小于或等于与所述小规模CNN模块可支持的最大输入图像尺寸,则所述方法还包括:直接利用所述小规模CNN模块处理所述输入图像,而无需将所述输入图像划分为具有更小尺寸的一组子图像。
24.根据权利要求21所述的方法,其特征在于,所述输入图像为主要由人脸覆盖的输入人脸图像;所述输入图像上的所述分类决策包括用于所述输入人脸图像中的人的年龄和性别分类。
25.根据权利要求21所述的方法,其特征在于,在该组子图像中的每一对相邻子图像之间具有预定义重叠部分,并且在所述特征图阵列中,对应于一对相邻子图像的一对相邻特征图之间不具有重叠部分和间隙。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662428497P | 2016-11-30 | 2016-11-30 | |
US62/428,497 | 2016-11-30 | ||
US15/724256 | 2017-10-03 | ||
US15/724,256 US10558908B2 (en) | 2016-11-30 | 2017-10-03 | Age and gender estimation using small-scale convolutional neural network (CNN) modules for embedded systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107909026A CN107909026A (zh) | 2018-04-13 |
CN107909026B true CN107909026B (zh) | 2021-08-13 |
Family
ID=61843965
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711118413.XA Active CN107909026B (zh) | 2016-11-30 | 2017-11-10 | 基于小规模卷积神经网络年龄和/或性别评估方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107909026B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109614841B (zh) * | 2018-04-26 | 2023-04-18 | 杭州智诺科技股份有限公司 | 嵌入式***中的快速人脸检测方法 |
CN108734146A (zh) * | 2018-05-28 | 2018-11-02 | 北京达佳互联信息技术有限公司 | 人脸图像年龄判断方法、装置、计算机设备及存储介质 |
CN110782554B (zh) * | 2018-07-13 | 2022-12-06 | 北京佳惠信达科技有限公司 | 一种基于视频摄影的门禁控制方法 |
CN110782568B (zh) * | 2018-07-13 | 2022-05-31 | 深圳市元睿城市智能发展有限公司 | 一种基于视频摄影的门禁*** |
CN109285157A (zh) * | 2018-07-24 | 2019-01-29 | 深圳先进技术研究院 | 左心室心肌分割方法、装置及计算机可读存储介质 |
CN109492571B (zh) * | 2018-11-02 | 2020-10-09 | 北京地平线机器人技术研发有限公司 | 识别人体年龄的方法、装置及电子设备 |
CN109886095A (zh) * | 2019-01-08 | 2019-06-14 | 浙江新再灵科技股份有限公司 | 一种基于视觉的轻型卷积神经网络的乘客属性识别***及方法 |
CN110222593A (zh) * | 2019-05-18 | 2019-09-10 | 四川弘和通讯有限公司 | 一种基于小规模神经网络的车辆实时检测方法 |
CN110941399A (zh) * | 2019-12-05 | 2020-03-31 | 北京金山云网络技术有限公司 | 数据处理方法、装置和电子设备 |
CN112818833B (zh) * | 2021-01-29 | 2024-04-12 | 中能国际建筑投资集团有限公司 | 基于深度学习的人脸多任务检测方法、***、装置及介质 |
CN116055778B (zh) * | 2022-05-30 | 2023-11-21 | 荣耀终端有限公司 | 视频数据的处理方法、电子设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7362886B2 (en) * | 2003-06-05 | 2008-04-22 | Canon Kabushiki Kaisha | Age-based face recognition |
US8582807B2 (en) * | 2010-03-15 | 2013-11-12 | Nec Laboratories America, Inc. | Systems and methods for determining personal characteristics |
CN103533331A (zh) * | 2013-10-18 | 2014-01-22 | 华为技术有限公司 | 图像的编解码方法和装置 |
CN105512684A (zh) * | 2015-12-09 | 2016-04-20 | 江苏大为科技股份有限公司 | 基于主成分分析卷积神经网络的车标自动识别方法 |
CN105512649A (zh) * | 2016-01-22 | 2016-04-20 | 大连楼兰科技股份有限公司 | 一种基于颜色空间的高清视频实时车牌定位方法 |
-
2017
- 2017-11-10 CN CN201711118413.XA patent/CN107909026B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7362886B2 (en) * | 2003-06-05 | 2008-04-22 | Canon Kabushiki Kaisha | Age-based face recognition |
US8582807B2 (en) * | 2010-03-15 | 2013-11-12 | Nec Laboratories America, Inc. | Systems and methods for determining personal characteristics |
CN103533331A (zh) * | 2013-10-18 | 2014-01-22 | 华为技术有限公司 | 图像的编解码方法和装置 |
CN105512684A (zh) * | 2015-12-09 | 2016-04-20 | 江苏大为科技股份有限公司 | 基于主成分分析卷积神经网络的车标自动识别方法 |
CN105512649A (zh) * | 2016-01-22 | 2016-04-20 | 大连楼兰科技股份有限公司 | 一种基于颜色空间的高清视频实时车牌定位方法 |
Non-Patent Citations (2)
Title |
---|
Fast and Robust Face Detection on a Parallel Optimized Architecture Implemented on FPGA;Nicolas Farrugia et.al;《IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY》;20090430;第19卷(第4期);第597-602页 * |
基于卷积神经网络的监控视频人数统计算法;马海军 等;《安徽大学学报(自然科学版)》;20160531;第40卷(第3期);第22-28页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107909026A (zh) | 2018-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107506707B (zh) | 采用嵌入式***中的小规模卷积神经网络模块的人脸检测 | |
CN107909026B (zh) | 基于小规模卷积神经网络年龄和/或性别评估方法及*** | |
US10558908B2 (en) | Age and gender estimation using small-scale convolutional neural network (CNN) modules for embedded systems | |
CN107895150B (zh) | 基于嵌入式***小规模卷积神经网络模块的人脸检测和头部姿态角评估 | |
US10467458B2 (en) | Joint face-detection and head-pose-angle-estimation using small-scale convolutional neural network (CNN) modules for embedded systems | |
US20240013506A1 (en) | Joint training of neural networks using multi-scale hard example mining | |
US11315253B2 (en) | Computer vision system and method | |
US20180114071A1 (en) | Method for analysing media content | |
CN107368886B (zh) | 基于重复使用小规模卷积神经网络模块的神经网络*** | |
Xu et al. | Fast vehicle and pedestrian detection using improved Mask R‐CNN | |
CN110598788B (zh) | 目标检测方法、装置、电子设备及存储介质 | |
JP5936561B2 (ja) | 画像における外観及びコンテキストに基づく物体分類 | |
Mittal et al. | Dilated convolution based RCNN using feature fusion for Low-Altitude aerial objects | |
US11158077B2 (en) | Disparity estimation | |
Toprak et al. | Conditional weighted ensemble of transferred models for camera based onboard pedestrian detection in railway driver support systems | |
JP7165353B2 (ja) | 画像特徴量出力装置、画像認識装置、画像特徴量出力プログラム、及び画像認識プログラム | |
Kao et al. | Moving object segmentation using depth and optical flow in car driving sequences | |
Kheder et al. | Transfer learning based traffic light detection and recognition using CNN inception-V3 model | |
Moseva et al. | Development of a System for Fixing Road Markings in Real Time | |
CN111292331B (zh) | 图像处理的方法与装置 | |
Bin et al. | Gpu-accelerated tensor decomposition for moving object detection from multimodal imaging | |
WO2008138802A1 (en) | Device for object detection in an image, and method thereof | |
Labeni et al. | Objects counting in videos via deep learning and image processing | |
Mittal et al. | A feature pyramid based multi-stage framework for object detection in low-altitude UAV images | |
Singh | Anomalous Motion Detection of Vehicles on Highway Using Deep Learning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |