许庚林, 冉 峰, 邓 良, 史华康, 郭爱英
(上海大学微电子研究与开发中心, 上海 200444)
随着现代社会的发展, 嵌入式人脸抓拍设备在新零售场景和监控安防等领域具有广泛的应用价值.人脸抓拍是在摄像头视频流数据中挑选每个行人最佳人脸并确定其身份的过程, 其步骤分为人脸检测、人脸跟踪、最佳人脸提取和人脸识别.
人脸检测是人脸抓拍的基础.2015 年Ren等[1]提出了Faster R-CNN(convolutional neural network)检测算法, 该算法利用卷积神经网络提取图像特征, 同时提出区域生成网络(region proposal network, RPN)提取候选框, 大幅加快网络计算速度;同年, He等[2]针对CNN 网络梯度存在消失的问题, 提出了残差神经网络(residual neural network, ResNet)算法, 该算法依靠150 层的网络深度学习, 得到更深层抽象的特征, 分类能力更强;2016 年Zhang等[3]提出了多任务级联卷积神经网络(multi-task cascaded convolutional neural network, MTCNN)人脸检测算法, 该算法使用3 个级联CNN 网络检测人脸位置和关键点, 且确定的人脸关键点可用于人脸对齐, 便于后续人脸识别的研究;2018 年, Deng 等[4]提出了附加角幅度损失(additive angular margin loss, ArcFace loss)算法, ArcFace loss 算法更加注重在角度空间里对类别进行区分, 使用50 层的ResNet 进行训练, Lfw 测试集上的准确率达到了99.8%.
多目标跟踪作为经典计算机视觉问题, 在单目标跟踪问题的基础上额外增加了目标ID(identification)的关联任务, 在人脸抓拍系统中主要为不同帧中的同一行人赋予相同标签.多目标跟踪的典型算法有卡尔曼滤波[7]、均值漂移、核相关滤波、多尺度空间跟踪等.近年来, 基于深度学习的检测器迅速发展, 在检测速度和精度上刷新了几乎所有的算法测试集榜单.在此背景下, 基于检测的跟踪(tracking-by-detection, TBD)思路逐步应用在多目标跟踪中.2016 年, Yu等[8]首先基于Faster R-CNN 设计目标检测器, 再使用GoogleNet 提取目标外观特征, 最后采用匈牙利算法进行数据关联;2017 年, Bochinski等[9]以高精度检测算法为背景,针对高帧率跟踪场景, 提出使用交并比(intersection over union, IOU)跟踪目标, 并对检测算法设定双阈值, 筛选检测框以提高鲁棒性;2018 年, Hilke等[10]设计了联合检测和跟踪的神经网络, 使用单网络多目标检测器(single shot multibox detector, SSD)[11]检测目标, 并把检测结果传到循环神经网络(recurrent neural network, RNN)中, RNN 负责计算当前帧目标与上一帧目标的相似度矩阵, 最后通过匈牙利算法对相邻帧目标进行相似度匹配, 从而实现多目标的跟踪.
尽管基于深度学习的人脸检测、跟踪和识别算法已经取得了较好的效果, 但嵌入式设备资源相对有限, 难以部署需要高实时性的深度学习.轻量化网络以牺牲部分识别精度为代价精简网络参数, 降低网络计算复杂度, 更适用于嵌入式平台的部署, 典型网络有MobileNet[5]、ShuffleNet[6]等.目前多目标跟踪算法大多在关联模型上投入大的时间开销.关联模型包括特征表达和特征关联, 特征表达是关联模型的核心, 最常见的特征是目标外观特征和运动特征.提取深层次特征会造成较大的时间开销, 但将多个浅层次特征融合, 不仅计算量低, 而且算法鲁棒性也较单一浅层次特征算法高.因此, 多特征融合更有利于完成嵌入式平台的实时多目标跟踪任务.
本工作基于目前较优秀的轻量化卷积网络MobileNet, 对SSD 检测网络剪枝优化, 构建了速度更快的人脸检测网络MobileNet SSPD(MobileNet single shot multibox purning detector);再利用MTCNN 中的O-Net 网络将人脸对齐以提高后续跟踪和识别的精度;基于融合哈希(fusion Hash, fHash)算法提取人脸外观特征, 并利用卡尔曼滤波跟踪器估计人脸运动信息, 通过求解最优关联矩阵实现多人脸跟踪;使用关键点欧氏距离、人脸尺寸和四方向Sobel 算子[12]对同一行人的人脸进行最佳提取;使用轻量化网络MobileFaceNet[13]提取该最佳人脸的特征, 利用余弦相似度进行特征匹配.实验结果表明, 本工作基于嵌入式平台设计的人脸抓拍系统能够满足实时抓拍的要求, 同时也能达到很高的抓拍准确率.
本工作人脸抓拍系统将训练好的神经网络模型移植到嵌入式设备上, 实现离线人脸抓拍功能, 系统模型如图1 所示.系统通过摄像头捕捉图像, 保存在缓存器中;经过人脸检测算法检测人脸, 对齐之后进行人脸跟踪;提取当前每个行人的最佳人脸, 直至行人离开视野后对其进行识别;将识别结果发送至远端服务器进行应用管理.
图1 人脸抓拍系统模型图Fig.1 Model diagram of face capture system
人脸检测是在预处理输入图像后, 进行场景图像特征提取和人脸预测框回归的过程.人脸对齐是人脸检测的后处理, 首先检测面部关键点, 再对关键点做仿射变换实现对齐.人脸对齐的目的是摆正人脸, 提高后续跟踪和识别的准确率.人脸跟踪在检测到人脸后进行特征提取、运动估计, 通过求解关联矩阵实现跟踪;然后通过人脸质量评价函数提取最佳人脸.人脸识别与人脸跟踪算法流程一致, 但是为了提高效率, 人脸抓拍系统只需对最佳人脸进行识别;同一行人只识别一次, 人脸跟踪则需对同一行人持续提取特征, 因此人脸跟踪相比人脸识别需要更快速的特征提取方法.
在人脸抓拍系统中, 一位行人在视野期内会被多次检测和跟踪, 人脸检测和跟踪算法的准确度和复杂度直接决定抓拍系统的性能, 是人脸抓拍系统的关键技术.本工作基于此提出了MobileNet SSPD 快速人脸检测网络和融合哈希人脸跟踪算法.
人脸检测网络主要由2 个部分组成: 场景图像特征提取网络和人脸检测网络.为了能够在保证检测精度的同时提高检测速度, 本工作将轻量化网络MobileNet 作为场景图像特征提取器, 将剪枝优化后的SSD 网络SSPD 作为人脸检测网络.通常, 卷积神经网络的不同层有不同的感受野, 而在SSD 网络结构中省缺框(prior box)不需要和每一层的感受野对应, 特定的特征图负责处理图像中特定尺寸的物体.MobileNet SSD 网络适用于多物体检测, Howard等[5]抽取了19×19、10×10、5×5、3×3、2×2、1×1 这6 个不同特征图尺寸大小的网络层的特征进行人脸预测框的回归.而人脸抓拍系统只需检测出人脸, 而且特小尺寸的人脸图像检测后再识别的误差较大, 故在后续最佳人脸提取中也会被舍弃.因此本工作对SSD 网络进行剪枝处理以提高人脸检测效率.图2 是剪枝优化后的网络MobileNet SSPD, 这里SSPD 只抽取前级MobileNet 中19×19 的第11 层卷积层和10×10 的第13 层卷积层的特征, 直接回归出预测框的位置以及分类的置信度.其中抽取特征用来回归最小检测框的尺寸为第11 层卷积层的60 像素, 设定回归框IOU 的舍弃阈值为0.5, 则SSPD 网络可以过滤掉尺寸小于42 像素的人脸图像.
图2 MobileNet SSPD 网络结构Fig.2 MobileNet SSPD network structure
损失函数由位置损失Lloc和分类损失Lconf加权获得,
式中:N为匹配正样本的总量(如果N= 0, 则令L= 0);x,c分别为分类的指示量和置信度;l,g分别为预测框和实际标注的真实框;α为位置损失的权重;位置损失Lloc为预测框l和标注的真实框g之间的Smooth L1 损失;分类损失为分类置信度之间的Softmax 损失.
人脸对齐是在检测到人脸后, 对人脸图像进行优化处理的过程.O-Net 是MTCNN 中的第3 阶段网络, 在MTCNN 中对第2 阶段的预测框进行进一步的回归和校正, 并为每个预测框生成5 个人脸关键点,分别为2 只眼睛、鼻尖和2 个嘴角.利用5 个关键点坐标使用OpenCV 进行仿射变换, 实现人脸对齐, 其流程如图3 所示.
图3 人脸对齐流程Fig.3 Flow chart of face alignment
在人脸抓拍系统中, 人脸跟踪是对检测到的人脸持续标记的过程, 即同一行人在不同视频帧中具有同样的人脸标记.本工作提出的融合哈希算法快速提取人脸特征, 再将特征映射到汉明空间求得特征相似度;同时利用卡尔曼滤波预测下一帧目标位置及大小获取运动信息, 通过计算跟踪子集的预测坐标与检测子集的当前坐标的IOU 和2 个子集运动向量的余弦相似度,实现运动信息模型的估计;基于上述多特征模型的构建及使用择优匹配求解相似度关联矩阵,进行多人脸跟踪.系统流程如图4 所示.
图4 多人脸跟踪算法流程Fig.4 Multi-face tracking algorithm flow
融合哈希特征提取算法将均值哈希(average Hash, aHash)与感知哈希(perceptual Hash,pHash)算法[14]相结合(见表1).首先求解2 幅图像的均值哈希和感知哈希的特征向量, 再分别对2 组特征向量求汉明距离, 最后将汉明距离转化为特征相似度.均值哈希算法利用人脸的低频信息, 通过双3 次插值法将人脸变换为8×8 的矩阵, 灰度化后计算灰度像素平均值;将64 位矩阵元素与灰度平均值作比较, 大于平均值记为1, 否则为0, 输出64 位均值哈希向量.感知哈希算法使用离散余弦变换(discrete cosine transform, DCT)将人脸图像从像素域变换到频率域, 描述了2 维离散余弦正变换:
表1 融合哈希特征提取算法Table 1 Fusion Hash feature extraction algorithm
式中:f(i)为原始的信号;f(u)为DCT 变换后的系数;N为原始信号的点数;c(u)为补偿系数,可以使DCT 变换矩阵为正交矩阵.感知哈希算法输出也是64 位向量.
为了提高系统抓拍效率, 本工作对跟踪到的每个ID 的人脸图像做质量评价, 选出质量最高的人脸送入后续的人脸识别网络.本工作使用3 个指标评测人脸质量.
(1) 人脸侧转角.人脸对齐后仍存在侧脸情况, 本工作基于O-Net 的5 个关键点计算人脸侧转角.过鼻尖关键点作垂直x轴直线, 计算其余4 个关键点到该直线的距离, 设左眼、左嘴角、右眼、右嘴角到直线距离分别为e1,m1,e2,m2, 人脸侧转角得分t为
式中: 人脸越正,t的值越接近1;反之越接近0.侧转角得分计算如图5 所示.
图5 人脸侧转角计算Fig.5 Face side angle calculation
(2) 人脸尺寸.设当前检测目标人脸框面积为s1, 当前最清晰人脸图像面积为s2.此时更大面积的人脸尺寸得分为1, 小面积人脸尺寸得分为s1/s2或s2/s1(舍弃大于1 的值).
(3) 人脸清晰度.本工作使用四方向sobel 算子计算图像梯度, 同时使用强边缘像素的强度均值表示清晰度评价值.
最后将3 种指标加权, 筛选最高质量人脸.
3.1 实验设置及数据准备
本工作训练模型的服务器运行Ubuntu16.04 系统, 配备Intel Xeon E5 2620 v4 处理器,64 GB 内存, Nvidia GeForce GTX 1080Ti 显卡.本人脸抓拍系统最终运行在ARM 平台上, 设备为酷芯AR9201 EVB 开发板, 开发板配置如表2 所示.
表2 开发板配置Table 2 Development board configuration
本工作在Wider 数据集下训练MobileNet SSPD, 并在Fddb 数据集下进行测试.首先,对Wider 数据集进行处理, 剔除其中人脸太小或太模糊的照片, 整理出279 408 张人脸图像.使用Afad 亚洲人脸数据库和Orl 标准人脸库对融合哈希算法进行测评.对不同人脸, 从Afad 中挑选出2 040 张背景一致的不同人脸图像, 相互组合进行104 万次测试.对相同人脸的评判数据库用的是Orl 标准人脸库, 包含40 个人, 每人10 张人脸图像, 共计求出1 800(45×40)组数据.
在一致的训练集上, 分别对MobileNet SSD 和MobileNet SSPD 进行训练.初始学习率为0.01, 学习率下降策略为Multistep, 分别在以10 为倍数的Epoch 时下降学习率.在Fddb 测试集的表现如表3 所示, 第一行从左至右分别为模型、验证集上准确率、Fddb 测试集召回率、开发板单核DSP 下的运行时间及帧率.由表中数据可以观察到MobileNet SSPD 在牺牲了0.3%准确率的基础上实现了22.7%的速度提升.
表3 MobileNet SSD 与MobileNet SSPD 性能比较Table 3 Performance comparison between MobileNet SSD and MobileNet SSPD
在人脸抓拍系统中, 衡量人脸抓拍效率的指标是每秒人脸的准确抓拍数(accurate capture of the face per second, ACFS):
式中: ACFS 值越高, 每秒人脸正确抓拍数越多, 系统效率越高.本工作将MobileNet SSPD 与时下表现较好的算法VGG-SSD、DeepFace、MTCNN 和MobileNet SSD 进行比较.从表4 可以看出, 得益于轻量化的网络结构, 本算法在检测速度上优于其他算法;在Fddb 数据集的召回率上网络更深的VGG-SSD 和DeepFace 表现更好;本算法的Acfs 值远高于其他算法, 每秒准确抓拍到的人脸数量最多, 是最适合人脸抓拍系统的人脸检测算法.
表4 不同人脸检测算法抓拍性能比较Table 4 Capture performance comparison between different face detection algorithms
通过将融合哈希算法在整理后的Afad 和Orl 数据集上测试可以看出, 当阈值设为1.6 时,融合哈希算法可以排除98.5%以上的不同人脸, 同时能将76.7%的相同人脸匹配.
表5 不同人脸/相同人脸在不同阈值下数据对比Table 5 Comparison of different faces/identical faces under different thresholds
在相同测试集下将本算法与aHash、pHash、互信息、余弦相似度进行测试(见表6).可见, 本算法综合性能表现最好, 在与余弦相似度跟踪算法准确率表现几乎一致的情况下可大大减少计算时间.本算法的准确率比aHash 和pHash 算法高出21.7%和10.1%.
表6 不同相似度算法性能比较Table 6 Comparison of performance between different similarity algorithms
使用Mot16 数据集验证本算法的有效性, 检测器采用Pubilc detector.设定当第m帧的某检测结果未关联到第m −1 帧跟踪序列子集时, 将该检测结果作为新目标, 从第m+1 帧开始ID 排序;当关联度超过阈值θ时, 则关联成功.在fHash 算法中,α表示为pHash 特征相似度所占权重;在总关联度计算时,α为卡尔曼滤波跟踪器估计关联度占总关联度的权重.
图6(a)中, 4 条实线表示对应的算法在不同关联度阈值下的跟踪准确率, 虚线为该算法在不同阈值段的准确率平均值.可见在θ= 0.6 时, 目标跟踪准确率(multi-object tracking accuracy, MOTA)较高, 且融合哈希特征对多目标跟踪准确率的提升效果明显.图6(b)中实线为该算法在θ= 0.6 时不同权重α下算法的表现, 虚线为其均值.可见, 当pHash 权重α为0.6,外观特征相似度与运动信息估计相似度权重持平时, 算法跟踪准确率最高.
图6 不同条件下MOTA 得分(KF 表示卡尔曼滤波跟踪器)Fig.6 MOTA score under different conditions (KF for Kalman filter tracker)
本算法与其他先进多目标跟踪算法比较结果如表7 所示, 其中本算法实时性最高且具有较低的ID 交换次数, 同时能保持较高精度的跟踪准确率, 这也取决于相似度矩阵关联的择优匹配求取策略.
表7 不同多目标跟踪算法比较Table 7 Comparison of different multi-object tracking algorithms
在单目标和多目标条件下对本算法进行测试, 测试数据为实际场景中的视频图像, 每隔1 s 抽取一张作为效果图.从图7 和8 可见, 同一目标的ID 不变且无错检, 说明算法准确跟踪到了该目标, 抓拍到最佳人脸后识别结果也均正确, 实际测试准确率在95%以上.
图8 多张人脸抓拍效果图Fig.8 Capture effect diagram of multiple faces
表8 列出了本系统运行时间测试结果, 整个人脸抓拍系统在单核DSP 下平均每帧处理时间为138 ms, 在4 核DSP 加速下, MobileNet SSPD、O-Net 和MobileFaceNet 平均运算速度提高了4 倍, 整个系统抓拍速度能达到28 帧/s, 可满足实时的人脸抓拍需求.
表8 系统运行时间Table 8 System running time
表8 中, DSP 工艺制程为40 nm, 每秒可执行1.2 万亿次运算(1.2 tera operations per second, 1.2 TOPs).在人工智能应用需求日益上升的背景下, 以手机为代表的嵌入式设备均加强了SoC 芯片算力: 高通骁龙855 芯片算力为7 TOPs;苹果A12 芯片算力为5 TOPs;华为海思麒麟990 芯片运行MobileNet(int8)达到970 帧/s.以上设备在工艺和算力上都优于本工作所用开发板, 因此如果本算法部署在手机端, 则抓拍效率会更高, 具有更高的应用价值.
本工作基于酷芯微开发板设计和实现了人脸抓拍系统.首先, 本工作在MobileNet SSD 网络的基础上设计了MobileNet SSPD 快速人脸检测网络, 再级联MTCNN 中的O-Net, 并依据人脸关键点进行仿射变换实现人脸对齐;然后, 基于均值哈希与感知哈希算法设计出融合哈希匹配算法跟踪人脸, 使用侧转角、尺寸和清晰度这3 个标准得到最佳的人脸图像;最后, 对最佳人脸进行识别.本工作通过优化算法和4 核DSP 加速, 在嵌入式系统上达到了较快的人脸抓拍速度, 并取得了较高的抓拍准确率.