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

本文涉及的产品
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,视频资源包5000点
简介: 基于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. 视频识别性别


相关文章
|
3天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【8月更文挑战第28天】本文将深入探讨深度学习领域的核心概念之一——卷积神经网络(CNN),并展示其在图像识别任务中的强大能力。文章首先介绍CNN的基本结构,然后通过一个简单的代码示例来演示如何构建一个基础的CNN模型。接着,我们将讨论CNN如何处理图像数据以及它在图像分类、检测和分割等任务中的应用。最后,文章将指出CNN面临的挑战和未来的发展方向。
|
3天前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
|
1天前
|
安全 网络安全 开发者
探索Python中的装饰器:简化代码,增强功能网络安全与信息安全:从漏洞到防护
【8月更文挑战第30天】本文通过深入浅出的方式介绍了Python中装饰器的概念、用法和高级应用。我们将从基础的装饰器定义开始,逐步深入到如何利用装饰器来改进代码结构,最后探讨其在Web框架中的应用。适合有一定Python基础的开发者阅读,旨在帮助读者更好地理解并运用装饰器来优化他们的代码。
|
3天前
|
机器学习/深度学习 算法框架/工具 计算机视觉
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【8月更文挑战第28天】本文深入探讨了深度学习领域中的一个核心概念——卷积神经网络(CNN),并详细解释了其在图像识别任务中的强大应用。从CNN的基本结构出发,我们逐步展开对其工作原理的解析,并通过实际代码示例,展示如何利用CNN进行有效的图像处理和识别。文章旨在为初学者提供一个清晰的学习路径,同时也为有经验的开发者提供一些深入的见解和应用技巧。
18 1
|
3天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
深入浅出卷积神经网络——从理论到实践
【8月更文挑战第28天】探索卷积神经网络的奥秘,本文将带你领略深度学习中的这一核心技术。我们将从CNN的基本概念出发,逐步深入到网络架构、训练技巧,以及在图像处理中的应用实例。无论你是初学者还是有一定基础的开发者,这篇文章都将为你揭开卷积神经网络的神秘面纱,让你能够更加自信地应用这项技术解决实际问题。
yolov5项目如何安装pycocotools和opencv-python?
本文提供了解决yolov5项目中安装pycocotools和opencv-python包失败的两种方法:手动安装或使用国内镜像源进行安装。
yolov5项目如何安装pycocotools和opencv-python?
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)简介
【8月更文挑战第30天】在人工智能的浪潮中,深度学习以其强大的数据处理能力成为时代的宠儿。本文将深入浅出地介绍深度学习的一个重要分支——卷积神经网络(CNN),并探讨其如何在图像识别等领域大放异彩。通过实例,我们将一窥CNN的神秘面纱,理解其背后的原理,并探索如何利用这一工具解锁数据的深层价值。
|
2天前
|
机器学习/深度学习 网络安全 TensorFlow
探索操作系统的心脏:内核与用户空间的奥秘云计算与网络安全:技术挑战与未来趋势深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【8月更文挑战第29天】在数字世界的每一次点击与滑动背后,都隐藏着一个不为人知的故事。这个故事关于操作系统——计算机的灵魂,它如何协调硬件与软件,管理资源,并确保一切运行得井井有条。本文将带你走进操作系统的核心,揭示内核与用户空间的秘密,展现它们如何共同编织出我们日常数字生活的底层结构。通过深入浅出的讲解和代码示例,我们将一同解锁操作系统的神秘面纱,理解其对现代计算的重要性。 【8月更文挑战第29天】本文将深入探讨卷积神经网络(CNN)的基本原理和结构,以及它们如何被广泛应用于图像识别任务中。我们将通过代码示例来展示如何使用Python和TensorFlow库构建一个简单的CNN模型,并训练
|
3天前
|
计算机视觉 Python
opencv在pycharm不能自动补全代码
opencv在pycharm不能自动补全代码
9 0
|
18天前
|
机器人 计算机视觉
巧用 OpenCV solvePnP() 函数完成由图像坐标系到机器人坐标系的转换(二维坐标系之间的转换)
巧用 OpenCV solvePnP() 函数完成由图像坐标系到机器人坐标系的转换(二维坐标系之间的转换)
31 2

热门文章

最新文章

下一篇
云函数