人脸追踪、双目活体对齐……系统梳理人脸识别开发的硬核技巧
随着人脸识别终端设备的广泛应用,很多开发者在实践中会产生疑惑:为什么同一款主板,运行性能相仿的算法时,系统资源占用会相差悬殊?为什么同样配备了活体检测,防攻击能力却可以差好几个级别?
事实上,人脸识别算法在实际部署中存在一些编程开发策略,能对识别效果和识别速度产生显著影响。虹软视觉开放平台推出的"从零学习人脸识别"技术公开课第七期——《人脸识别应用方案(PC和设备端)》对此做了详细阐述(完整课程可搜索"从零学习人脸识别"),将主要从人脸追踪、双目活体对齐、图像质量检测和特征值提取技巧等进行系统性介绍。
一、有效降低系统资源占用的【人脸追踪】
人脸追踪是相当重要的优化策略之一,最大的用处是防止重复识别,降低资源占用,在需要同时检测多张人脸等算力消耗较高的场景下,可以显著提升识别速度。
从技术原理来说,算法在运行过程中,会检测视频系列帧前后的人脸移动情况和特征,从而进行追踪和检测。以虹软视觉开放平台的ArcFace免费人脸识别算法为例,当人脸入框时,算法会根据检测结果为该张人脸标记一个FaceID。该人脸从进入画面到离开画面的整个过程中,FaceID不变,算法也不会重复提取特征值,避免重复识别导致资源无效占用。
二、提升活体检测精确度的【双目活体对齐】
作为甄别纸张照片、屏幕成像、人脸面具等伪造人脸攻击的主要防守手段,活体检测几乎是人脸识别不可或缺的刚需功能。目前,虹软免费人脸识别SDK可以同时支持RGB和IR红外双目活体检测,既能通过分析采集摩尔纹、成像畸形、反射率等人像破绽来识别活体,也能基于红外图像天然滤除特定波段光线的特征,来抵御基于屏幕成像的假脸攻击,在成本与性能上达到了较好的平衡。
但是,由于RGB摄像头和红外摄像头是不同的模组,不可避免会在成像参数和组装精度上有所不同。因此需要进行双目对齐,以确保两个镜头在活体检测、人脸比对时,使用的是同一张人脸图像。
一般来说,我们的策略是将RGB镜头所检测到人脸框坐标,嵌套至红外镜头采集的图像中。如发现该人脸框与红外图像中的对应人脸有所偏移,就需要对该人脸框坐标进行调整。
人脸框嵌套只是最简单的双目对齐策略,在安卓系统上开发时,还需要用到镜像、缩放、旋转等对齐策略,这些都可以在虹软视觉开放平台所提供的官方Demo中得到参考。
三、提升识别效率的【图像质量检测算法】
无感通行是人脸识别闸机、门禁等设备非常重要的卖点。要实现这一效果,除了与芯片算力、算法性能有关,也需要用于识别的人脸图像质量合格。图像质量检测能对摄像头拍摄的人脸图像进行评估,刨除低质量图片,只留下质量较好的人脸图像进行检测。
在实际使用中,模糊、遮挡、大角度、逆光暗光等复杂环境问题,都会导致摄像头拍摄的人脸图像难以识别。未引入图像质量检测的情况下,图片质量再差也会被系统送入人脸识别环节,直到识别失败后再进行下一次抓拍。人脸图像检测提供的筛选机制能避免系统做无用功,从而提升后续流程的效率。对比实验中,增加图像质量检测的人脸识别系统,后续环节耗时平均减少约30%。
除影响识别效率外,图像质量检测也能帮助用户高效完成人脸识别底库注册,快速完成人工筛选难以完成的工作量的同时,也让底库注册照的质量更有保障。
四、加速系统运行的【特征值保存技巧】
在人脸识别算法的运行过程中,特征值的保存方式也对运行速度有所影响。如果照片底库只有几十张或者上百张,可以将特征值保存在缓存中,每次启动程序都进行一次完整特征值提取。但注册底库达到数千甚至上万张人脸照的规模时,提取完整特征值耗时就会较长,此时如果将特征值保存在数据库中再用于人脸比对,对人脸识别速度会有明显提升。
人脸识别开发是一个复杂工程,除核心算法的研发外,还涉及很多影响性能的技术细节,掌握与否对最终产品影响极大。"从零学习人脸识别"系列课程将持续帮助开发者们查漏补缺,既夯实基础,也释疑难题,从而成长技术全面的开发人员。