基于opencv卷积网络实现人脸检测和性别分类 附项目代码

简介: 基于opencv卷积网络实现人脸检测和性别分类 附项目代码

项目代码:https://download.csdn.net/download/qq_38735017/87425701


背景介绍


  • 影像分析(video):一个影像分析模块,它包括动作判断,背景弱化和目标跟踪算法。
  • 3D 校准(calib3d):基于多视图的几何算法,平面和立体摄像机校准,对象姿势判断, 立体匹配算法,和 3D 元素的重建。
  • 平面特征(features2d):突出的特征判断,特征描述和对特征描述的对比。
  • 对象侦查(objdetect):目标和预定义类别实例化的侦查(例如:脸、眼睛、杯子、 人、汽车等等)。
  • highgui:一个容易使用的用户功能界面。
  • 视频输入输出(videoio):一个容易使用的视频采集和视频解码器。
  • GPU:来自不同 OpenCV 模块的 GPU 加速算法。
  • 一些其他的辅助模块,比如 FLANN 和谷歌的测试封装,Python 绑定和其他。


3.安装 OpenCV


我们利用 python 里面已有的库来安装 OpenCV。Python 是一种计算机程序设计语言。是一 种动态的、面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更 新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。


我们只需要通过 pip 或者 anaconda 安装 OpenCV 包就可以通过导入包并使用。


4.BP 神经网络算法介绍和实践


BP 神经网络通常是指基于误差反向传播算法( Back Propagation, 简称 BP 算法)的多层 前向神经网络 ( Multi-laye Feed-forward Neural Networks, MFNN),它最初是由 Paul Werboss 在 1974 年提 出, 但未在传播,直到 20 世纪 80 年代中期 Rumelhart、Hinton 和 Williams, David Parker 和 Yann Le Cun 重新发现了 BP 算法,同时因此算法被包括在《并行 分布处理》(Parallel Distributed Processing),此算法才广为人知。目前 BP 算法已成为应 用最广泛的神经网络学习算法,据统计有近 90% 的神经网络应用是基于 BP 算法的。BP 网络的神 经元采用的传递函数通常是 Sigmoid 型可微函数,所以可以实现输入和输出间的任意非线性映 射,这使得它在诸如信号处理、计算机网络、过程控制、语音识别、函数逼近、模式识别及数 据压缩等领域均取得了成功的应用。


4.1 BP 神经网络结构


BP 网络的基本结构如图所示,其输入层节点数为,输入变量为()( = 1,2, . . . , ),隐层 节点数为,输入层节点与隐层节点间的连接权值为( = 1,2, . . . , ; = 1,2. . . , ),隐层节点的 阈值为 ( = 1,2, . . , ),隐节点输出为 ();输出层节点数为,隐层节点与输出层节点间的 连接权值为( = 1,2, . . . , ; = 1,2, . . . , ),输出层节点的阈值为( = 1,2, . . . , ),输出层 节点输出为()。每一个神经元用一个节点表示,网络由输入层、隐层和输出层节点组成。隐层可以是如图所示的一层,也可以是多层,前层到后层的节点通过权联结。隐节点一般采用 Sigmoid 型函数,输入和输出节点可以采用 Sigmoid 型函数或者线性函数。由于采用的是 BP 算法,所以常称为 BP 神经网络。


4.2 BP 算法原理


BP 算法由正向传播和反向传播两部分组成。在正向传播过程中,输入信息从输入层经隐层 单元处理后,传至输出层,每一层神经元的状态只影响下一层神经元的状态。如果输出层得不 到期望的输出,就转为反向传播,即:把误差信号沿连接路径返回,并通过修改各层神经元之 间的连接权值,使误差信号最小。


由于多输入-多输出的网络可以转化为多输入-单输出的情况,所以这里采用的是多输入-单输出的神经模型。假设网络由层,而第层仅含输出节点,第一层为输入节点。另外,假设有个标准样本对 undefined,对网络的第层的输出为()。而且,隐层节点和输出层节点的作用函数为 SIgmoid 行函数,即



a4320ba189ea13d824b170a144e8ee9e.png


它反映了神经元的饱和特性,在 0 和 1 之间取值。上式中,Q 为表示神经元非线性的参数, 称增益型(Gain),也称调节参数。Q 值越大,S 型曲线越陡峭;反之,Q 值越小,S 型曲线越平 坦;一般取 Q = 1。


假设对某一输入(),网络输出为(),节点的输出为,节点的输入为

defb1249a66efe6c34f9ef6741228cad.png


节点的输出为:= (ne)


并将误差函数定义为

7083778e528454a713ed7ddccc9d712e.png


其中为网络目标输出。

013897d8366a3ea316a6a5b42dd3bbe1.png


下面分两种情况来讨论:

cc1f45dababbd0f3f815b5c68c543b36.png


由以上两式可以得到:

cc6b38ea4e324ab403ec7f51e146290e.png


又由于

4fa4b830b1da5b9bec9a8bd39a057b2f.png


根据前面的推导过程,具体的 BP 算法步骤可概括如下:


根据前面的推导过程,具体的 BP 算法步骤可概括如下: 第一步,选取初始权值、阈值。 第二步,重复下述过程直至满足性能要求为止:


1.对于学习样本=1 到


1)计算每层各节点的,et 和的值(正向过程); 2 ) 对各层从层到第二层,对每层各节点,由式(4.5)和(4.8)反向计算(反向过程)


2.修正权值


93d657c012ec3062d3d3a747e26e1a33.png


4.3 BP 算法收敛性


BP 算法是最小均方误差的近似最快下降算法,其性能曲面可能有多个局部极小点而且在参 数空间的不同区域曲率也是变化的。依照 BP 网络的性能曲面,设置 BP 算法的初始参数时需注 意, 首先不能把初始参数设置为 0。这是由于对性能曲面来说,参数空间的原点趋向鞍点。其 次,不能把初始参数设置过大。这是由于在远离优化点的位置,性能曲面将变得十分平坦。典 型情况下,可以选择一些小的随机值作为初始权值和偏置值。这样可以在不离开性能曲面平坦 区域的同时避开可能的鞍点。也可用 S 型传递函数的形状和输入变量的范围决定权值的大小, 然后用偏置值将 S 型函数的形状移到操作区域的中央国)。通过调整参数,BP 算法最终收敛到 最优化的解,但收敛的速度很慢。如果提高学习速度,算法将通过初始的平坦曲面而快速收 敛,即可以在平坦曲面时增加学习速度,在斜率增加时减少学习。另外,也可采用平滑轨迹, 即当算法开始发散时,用平均改变参数的方法过滤轨迹可以提高收敛性。


5.结果展示


在此,我们是基于 python 语言。学习了 200 张男生照片和 200 张女生照片。运用了三层神 经网络,一个输入层,一个隐藏层和一个输出层。下面是最终结果。

35314e83bdba1ae9866565afb2c1afb9.png


图片 1. 视频识别人脸

5002e346bdff683304c6684c02f97ae2.png


图片 2. 视频识别性别


相关文章
|
2天前
|
关系型数据库 Java MySQL
【JavaEE】项目的部署-让网络上的人都能访问你的网站
【JavaEE】项目的部署-让网络上的人都能访问你的网站
4 0
|
3天前
|
机器学习/深度学习 算法 PyTorch
卷积神经网络的结构组成与解释(详细介绍)
卷积神经网络的结构组成与解释(详细介绍)
17 0
|
3天前
|
机器学习/深度学习 算法 数据挖掘
深度学习500问——Chapter05: 卷积神经网络(CNN)(4)
深度学习500问——Chapter05: 卷积神经网络(CNN)(4)
8 1
|
3天前
|
机器学习/深度学习 自然语言处理 计算机视觉
深度学习500问——Chapter05: 卷积神经网络(CNN)(3)
深度学习500问——Chapter05: 卷积神经网络(CNN)(3)
10 1
|
3天前
|
机器学习/深度学习 存储 算法
卷积神经网络(CNN)的数学原理解析
卷积神经网络(CNN)的数学原理解析
33 1
卷积神经网络(CNN)的数学原理解析
|
3天前
|
机器学习/深度学习 自然语言处理 计算机视觉
深度学习500问——Chapter05: 卷积神经网络(CNN)(2)
深度学习500问——Chapter05: 卷积神经网络(CNN)(2)
11 2
|
3天前
|
机器学习/深度学习 算法 PyTorch
卷积神经网络(CNN)——基础知识整理
卷积神经网络(CNN)——基础知识整理
26 2
|
3天前
|
机器学习/深度学习 存储 自然语言处理
深度学习500问——Chapter05: 卷积神经网络(CNN)(1)
深度学习500问——Chapter05: 卷积神经网络(CNN)(1)
14 1
|
3天前
|
Linux 开发工具
【项目--Hi3559A】如何在Hi3559A上运行自己的yolov3模型(修改类别、网络结构)
【项目--Hi3559A】如何在Hi3559A上运行自己的yolov3模型(修改类别、网络结构)
9 0
|
3天前
|
网络安全 数据安全/隐私保护 计算机视觉
2024蓝桥杯网络安全-图片隐写-缺失的数据(0基础也能学会-含代码解释)
2024蓝桥杯网络安全-图片隐写-缺失的数据(0基础也能学会-含代码解释)

热门文章

最新文章