本文选用的人脸检测算法为HOG结合SVM分类算法,此模型优势在于速度快、量级小,并选择Dlin库提供的基于级联回归树模型定位五官,回归演算出人体面部的68个关键点。 ### HOG特征提取 HOG 特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。HOG 特征提取的流程如下。 将输入图像转换为灰度图像,进行 Gamma 校正,完成对整个图像的归一化。通过归一化调节图像的对比度,降低局部光照不均匀或者阴影的影响。公式如下: $$ I(x, y) = I(x, y)^{\gamma}, \gamma = \dfrac{1}{2} $$ 分别求取图像水平方向和垂直方向的梯度,然后计算每个像素点的梯度幅值和方向。通过梯度捕获图像边缘和纹理信息,弱化光照不均匀的影响。公式如下: $$ G_x(x,y) = I(x+1,y) - I(x-1,y)\\ G_y(x,y) = I(x,y+1) - I(x,y-1)\\ \nabla G(x,y) = \sqrt{G_x(x,y)^2+G_y(x,y)^2}\\ \theta(x,y) = arctan(G_y(x,y) / G_x(x,y)) $$ 将图像划分为 $n \times n$ 个像素的连通区域,然后在每个区域内统计梯度方向直方图。相邻 $K$ 个单元区域组成块,合并块内所有区域的特征向量得到该块的HOG特征描述子。不同块之间可能相互重叠,可以有效地利用局部邻域信息。最后搜索整个图像,将所有特征合并形成HOG描述子。 ### 面部表情对照模型 确认人脸位置后,采用Dlib人脸检测预训练模型,提取人脸68个特征点,定位眼部矩形位置。选取非凌晨0~6点和下午1~4点驾驶员普遍容易困乏的时间段来采集人脸的数据进行模型训练,对眼部状态数据采集分为睁眼和闭眼,按照时间进行排序,按分钟划分为单位时间,计算眨眼频率平均值 $\bar{i}$ 和闭目时长平均值比例 $T$ 情况。 $$ \bar{i} = \frac{\sum_{j=1}^{n} i_j}{n}\\ T = \frac{\sum_{j=1}^{n} t_j }{n}\times 100\% $$ 疲劳状态下人易触发眨眼机制,眨眼的状态与平时睁眼情况对比,眼睑的闭合程度会增加。在现实生活中,人眨眼的闭合程度不仅仅存在于疲劳状态下,为保证计算的准确性,需要计算眼睑闭合程度和眨眼时间作为判断人是否正在眨眼的依据。通过眼标志之间的欧式距离计算眼睑的纵横比作为闭合程度,左右两只眼睑取平均值。计算单只眼睑闭合程度的公式如下: $$ n_{\text{PEC}} = \frac{P_2P_6 + P_3P_5}{2 \cdot P_1P_4} $$ 在非疲劳状态下,计算眼睑闭合程度的均值可作为未来疲劳比较的阈值。 ### PERCLOS疲劳识别 正常情况下,驾驶员每隔 3s 或 4s 眨一次眼,每分钟约眨眼 15 到 20 次,每次闭眼耗时约 0.2s。而当驾驶员产生疲劳时,眨眼消耗的时间也将会减慢至 0.5s 左右,同时眨眼频率也会增加。所以,单位时间内眨眼次数和闭眼的时长可以用来判断驾驶员的疲 劳程度 。 卡内基梅隆研究所对度量疲劳提出 PERCLOS 准则,其表示在单位时间内眼睛处于闭合状态的时间所占的比例,计算公式如下: $$ \text{PERCLOS} = \frac{{\sum_{i=1}^{n} t_i}}{{n \cdot T}} $$ 其中,$n$ 表示观察的时间段数,$t_i$ 表示每个时间段内眼睑闭合的时间,$T$ 表示每个时间段的总时长。 驾驶员疲劳时,除了眨眼频率增加外,也会频繁的打哈欠。疲劳时,打哈欠的频率也会随疲劳程度增加,且打哈欠时间一般持续 4s 左右,张嘴幅度较大,特征明显,可以辅助检测眨眼频率判断疲劳。 当展示图像灰度化、计算梯度以及计算梯度幅值和方向时,你可以使用以下 LaTeX 公式进行表示: 1. 图像灰度化: 公式:$\(I_{\text{gray}}(x, y) = 0.2989 \cdot R(x, y) + 0.5870 \cdot G(x, y) + 0.1140 \cdot B(x, y)\)$ 解释:将彩色图像转换为灰度图像,其中 \(R(x, y)\)、\(G(x, y)\) 和 \(B(x, y)\) 分别表示像素 \((x, y)\) 处的红色、绿色和蓝色通道值。 2. 计算梯度: 公式(水平方向梯度):\(G_x(x, y) = I_{\text{gray}}(x+1, y) - I_{\text{gray}}(x-1, y)\) 公式(垂直方向梯度):\(G_y(x, y) = I_{\text{gray}}(x, y+1) - I_{\text{gray}}(x, y-1)\) 解释:使用差分运算计算图像中每个像素的水平和垂直方向的梯度。 3. 计算梯度幅值和方向: 公式(梯度幅值):\(G(x, y) = \sqrt{{G_x(x, y)}^2 + {G_y(x, y)}^2}\) 公式(梯度方向):\(\theta(x, y) = \arctan\left(\frac{{G_y(x, y)}}{{G_x(x, y)}}\right)\) 解释:根据水平和垂直梯度计算每个像素的梯度幅值和方向。 以上是展示图像灰度化、计算梯度以及计算梯度幅值和方向的一些常用的 LaTeX 公式。你可以将这些公式插入到你的 PPT 中,以便清晰地展示相关步骤。