嵌入式人工智能应用
人脸检测
- 嵌入式人工智能应用
- 1 人脸检测
- 1.1 CNN 介绍
- 1.2 人脸检测原理
- 1.3 MTCNN介绍
- 1.4 NCNN介绍
- 2 系统安装
- 2.1 安装依赖库NCNN
- 2.2 运行对应的库
- 3 总结
1 人脸检测
1.1 CNN 介绍
卷积神经网络。卷积是什么意思呢?从数学上说,卷积是一种运算。它是我们学习高等数学之后新接触的一种运算。在泛函分析中,卷积、旋积或摺积(英语:Convolution)是通过两个函数 f 和 g 生成第三个函数的一种数学算子,表征函数 f 与 g 经过翻转和平移的重叠部分函数值乘积对重叠长度的积分。
卷积神经网络听起来像是一个奇怪的生物学和数学的结合,但是这些网络已经成为计算机视觉领域最具影响力的创新之一。2012 年是神奇网络成长的第一年,Alex Krizhevsky 用它们赢得了当年的 ImageNet竞赛(基本上是计算机视觉年度奥运会),把分类错误记录从 26%降到了 15%,这个惊人的提高从那以后,许多公司一直在以服务为核心进行深度学习。Facebook 使用自动标记算法的神经网络,谷歌的照片搜索,亚马逊的产品推荐,Pinterest 的家庭饲料个性化和 Instagram 的搜索基础设施。
卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。
1.2 人脸检测原理
人脸检测的目标是找出图像中所有的人脸对应的位置,算法的输出是人脸外接矩形在图像中的坐标,可能还包括姿态如倾斜角度等信息。虽然人脸的结构是确定的,由眉毛、眼睛、鼻子和嘴等部位组成,近似是一个刚体,但由于姿态和表情的变化,不同人的外观差异,光照,遮挡的影响,准确的检测处于各种条件下的人脸是一件相对困难的事情。
简单叙述,人脸检测的难点在于:人脸可能出现在图像中的任何一个位置;人脸可能有不同的大小;人脸在图像中可能有不同的视角和姿态;人脸可能部分被遮挡。由于人脸可能出现在图像的任何位置,在检测时用固定大小的窗口对图像从上到下、从左到右扫描,判断窗口里的子图像是否为人脸,这称为滑动窗口技术(sliding window)。为了检测不同大小的人脸,还需要对图像进行放大或者缩小构造图像金字塔,对每张缩放后的图像都用上面的方法进行扫描。由于采用了滑动窗口扫描技术,并且要对图像进行反复缩放然后扫描,因此整个检测过程会非常耗时。
人脸检测是计算机视觉领域被深入研究的经典问题,在安防监控、人证比对、人机交互等领域都有重要的应用价值。数码相机、智能手机等端上的设备已经大量使用人脸检测技术实现成像时对人脸的对焦、图集整理分类等功能,各种虚拟美颜相机也需要人脸检测技术定位人脸,然后才能根据人脸对齐的技术确定人脸皮肤、五官的范围然后进行美颜。在人脸识别的流程中,人脸检测是整个人脸识别算法的第一步。
1.3 MTCNN介绍
MTCNN,Multi-task convolutional neural n