最近整理了CV方向的一些产品基础知识,我的上一篇文章《看AI产品经理如何介绍“计算机视觉”(基于实战经验和案例)》算是这个系列的第一篇;本文是本系列下的第二篇,主要针对人脸识别进行梳理。后续还会有多目标跟踪、OCR等方向的内容。希望大家能从这个系列收获到更多的CV干货:)
人脸识别(Face Recognition):对图像中的人脸进行检测、识别和跟踪。 一、技术流程详解 技术流程:
1、人脸采集 人脸采集主要关注以下因素—— 1)图像大小:人脸图像过小会影响识别效果,人脸图像过大会影响识别速度。非专业人脸识别摄像头常见规定的最小识别人脸像素为60*60或100*100以上。在规定的图像大小内,算法更容易提升准确率和召回率。图像大小反映在实际应用场景就是人脸离摄像头的距离。 2)图像分辨率:越低的图像分辨率越难识别。图像大小综合图像分辨率,直接影响摄像头识别距离。现4K摄像头看清人脸的最远距离是10米,7K摄像头是20米。 3)光照环境:过曝或过暗的光照环境都会影响人脸识别效果。可以从摄像头自带的功能补光或滤光平衡光照影响,也可以利用算法模型优化图像光线。
4)模糊程度:实际场景主要着力解决运动模糊,人脸相对于摄像头的移动经常会产生运动模糊。部分摄像头有抗模糊的功能,而在成本有限的情况下,考虑通过算法模型优化此问题。
5)遮挡程度:五官无遮挡、脸部边缘清晰的图像为最佳。而在实际场景中,很多人脸都会被帽子、眼镜、口罩等遮挡物遮挡,这部分数据需要根据算法要求决定是否留用训练。 6)采集角度:人脸相对于摄像头角度为正脸最佳。但实际场景中往往很难抓拍正脸。因此算法模型需训练包含左右侧人脸、上下侧人脸的数据。工业施工上摄像头安置的角度,需满足人脸与摄像头构成的角度在算法识别范围内的要求。 2、人脸检测(Face Detection) 人脸位置检测:
目的是在图像中准确标定出人脸的位置和大小。 人脸关键点检测(人脸对齐):
目的是自动估计人脸图片上脸部特征点的坐标 一般可以使用Openface中的Dlib模型实现人脸检测,利用OpenCV库对数据进行处理。最近人脸检测算法模型的流派包括三类及其之间的组合:viola-jones框架(性能一般速度尚可,适合移动端、嵌入式上使用),dpm(速度较慢),cnn(性能不错)。 人脸检测关注以下指标: 检测率:识别正确的人脸/图中所有的人脸。检测率越高,代表检测模型效果越好。 误检率:识别错误的人脸/识别出来的人脸。误检率越低,代表检测模型效果越好。 漏检率:未识别出来的人脸/图中所有的人脸。漏检率越低,代表检测模型效果越好。 速度:从采集图像完成到人脸检测完成的时间。时间约短,检测模型效果越好。 举一个实际例子说明: 在摄像头某张抓拍图像中,一共有7张人脸,算法检测出4张人脸,其中3张是真实人脸,1张是把路标误识为人脸。 在这个实际案例中:检测率=3/7 误检率=1/4 漏检率=(7-3)/7 3、图像预处理 图像预处理的目的是消除图像中无关的信息,尽可能去除或者减少光照、成像系统、外部环境等对图像的干扰,使它具有的特征能够在图像中明显地表现出来。主要过程包括人脸图像的光线补偿、灰度变换、直方图均衡化、归一化、几何校正、滤波以及锐化等。 1)灰度化:将彩色图像转化为灰色图像的过程。
2)直方图均衡化:直方图描述了一副图像的灰度级内容。直方图均衡化主要目的是为了提高对比度和灰度色调的变化,使图像更加清晰。
3)归一化:通过一系列变换,将待处理的原始图像转换成相应的唯一标准形式(该标准形式图像对平移、旋转、缩放等仿射变换具有不变特性),使得图像可以抵抗几何变化的攻击。例如用放大缩小图像、减少图片由于光照不均匀造成的干扰等。 4)中值滤波:将图片进行平滑操作以消除噪声。
预处理的效果直接影响到人脸识别率。可以通过不同方法,相同算法、相同训练模式评估模型效果,选择最佳的预处理方式。 4、人脸特征提取及人脸识别方法 传统的人脸识别模型一般都是在SVM等分类器分类后,通过CNN提取特征。 (责任编辑:admin) |