一、基本概念
对于二类分类问题,这些训练数据包括正样本和负样本,其中正样本代表属于该类别的实例,而负样本代表不属于该类型的反例。
机器学习的第一步是要找到一种模型,可以用简洁又有差异性的方式准确地反映每幅图像的内容。
换言之,机器学习方法,和图像特征是相互独立的。机器学习,是模型的训练方法,而特征,是训练的原始素材。也可以说,分类特征和分类方法;
二、opencv中的人脸识别结构
它们都是通用类cv::face::FaceRecognizer的子类。本节选用cv::face::LBPHFaceRecognizer类
cv::face::LBPHFaceRecognizer类,因为它基于一种简单但通常很有效的分类方法——最邻近分类法。而且它使用的图像模型基于局部二值模式(local binary pattern, LBP)特征。
三、LBP分类特征
LBP特征,采用相对独立的方法描述图像模式。它是一种局部模式,把每个像素转换为一个二进制数模型,表示邻近位置的图像强度模式。为此需要应用一个简单的规则:将一个局部像素与它的每个邻近像素进行比较,如果它的值大于邻近像素,就把对应的位设为0,否则设为1。最简单也是最常用的做法是将每个像素与它的8个邻近像素做比较,得到8位模式
说简单点,是9宫格的中心位置,与8邻域做大小比较,从而将中心位置像素点转换为8位2进制串。8邻域是最简单的比较方法。8位2进制数,可表示0到256;
对网格上的每个区块构建直方图。最后,把这些直方图的箱子数组合成一个大的向量,得到全局图像模型:对于8×8的网格,计算256-箱子直方图(每个像素已被转换至0到256的范围),得到16384维的向量。由此,图像转为了高维向量。
如果输入点与最近的参考点之间的距离太远,就说明它其实并不属于任何类别,那么“距离太远”的判断标准是什么?这由cv::face::LBPHFaceRecognizer的create方法的第四个参数决定。这里使用到的,就是最邻近分类法。
二、使用步骤
以上是使用步骤。
优劣
显然,这种方法的原理很简单,并且如果不同的类别在描述空间中生成各自独立的“点云”,它的效果就非常好。另外,它只是从最近的邻域中读取分类结果,因而可以处理多个类别,这也是它的一个优势。它的主要缺点是计算量较大——要从这么大的空间中(参考点的数量还可能很多)找出最近的点,需要耗费很长时间。此外,保存这些参考点也要耗费较大的存储空间。