实现计算机视觉——人脸检测

2023-11-13

概述:计算视觉是人工智能的一部分,旨在设计能够像人类视觉一样进行观察的智能算法。

在本文中,我们将介绍三个主要范围。

  • 人脸检测

  • 物体检测

  • 面部识别

  • 对象跟踪

在第一篇文章中,我们将重点介绍计算机视觉,以及基于 Python OpenCV 库的人脸识别应用。

在以后的文章中,我们将演示对象识别、人脸识别和对象跟踪在实时视频中的应用。

7708f0def13642a065baf8ca35f6069d.png

目录

  1. 介绍

  2. 人脸检测算法

  3. 人脸检测实现

  4. OpenCV 的替代方案

  5. 结论

  6. 参考文献

介绍

本文的读者将能够了解几个视觉计算应用程序的功能、它们在后台和架构中的操作,以及实现应用程序以供实际使用的必要步骤。

044203fb68c864c0c523940e7f51467e.png

现在让我们看看我们之前已经讨论过的一些可以在该领域开发的其他应用程序。

人脸检测在找到人脸时会放一个小方框,并为这些人命名。我们将做一个有点类似于这个的实现。

我们有这张来自微软的 Kinect 图像,它与运动检测的 Xbox 视频游戏集成在一起。

当有人移动方向盘时,你可以使用计算机视觉来检测控制汽车的人。需要计算机视觉技术来进行图像识别,也就是说,机器人需要看到它面前的东西来做出决定。

另一个例子是自动驾驶汽车。你可以注意到这辆车中有一系列传感器,例如,它需要检测行人以避免撞到人。

你需要检测交通标志或是否有红绿灯。

如果信号为红色,则必须停止,如果信号为绿色,则必须继续。为此,使用计算机视觉技术,包括所使用的技术。这种人脸检测技术也用于物体检测。

如果他识别出轨道上的物体,他就必须采取某种行动。增强现实、虚拟现实的想法使用计算机视觉技术。

这张SD光束的图像显示的是不存在的人。算法使用了一种叫做GAN的技术生成了这些人,即生成对抗网络,这是深度学习人工神经网络中的一个超级领域。

最后,我们还有另一个例子,称为 deep Durin,它是由神经网络生成的图像。你可以看到这些迷幻的图像,在这个图像的某些部分有一些特征,有一些动物的痕迹,即算法已经有了关于动物的信息,关于这些动物的图像非常类似于一种算法,这种算法将图像的特征与风景图像相结合。

一个应用示例是深度人脸,它是人工智能创建的人脸。

003b3e8038208f5f66f4e995bd274a27.png

人脸检测算法

级联分类器是一种算法,你将学习对某个对象进行分类以开始训练。

我们需要两组图像,第一组带有你要检测的正面图像的人脸,第二组图像称为负图像,它们不是简单的图像。

8ba6a2a3ef2b62d0bc1f96c39717dd06.png

例如,如果你想检测汽车,你会将汽车作为正图像,将各种型号和类型的汽车作为负图像。

任何其他类型的图像,你都需要将这两组图像提交给算法进行训练。

在机器学习领域有一种叫做 Ada boost 的算法训练。我不会详细介绍该算法的工作原理,但基本上,你把这个算法应用到正图像和负图像上,这个想法就是特征选择。

我们有几个特征或者是这些黑色和白色的小方块,你可以用这些特征来分类一张脸。

这些小方块用于图像的每个子窗口。

这个窗口概念表明它从左到右,从上到下移动。

人脸检测实现

我们将使用 Python OpenCV 库,它是市场上用于开发可视化计算应用程序的主要工具之一。

2a44a1d0327f4fb73faf0a41c8647648.png

下载训练截图,以及带有人脸识别训练的 Cascade Classifier.XLM 训练。

现在让我们用 Python 展示我们的代码:

import cv2 # OpenCV Import
img = cv2.imread('/content/imagem-computer-vision.jpg', cv2.IMREAD_UNCHANGED) # Import Image with Peoples
cv2_imshow(img)
3d8a82c41915f62ed31344591494be96.png
detector_face = cv2.CascadeClassifier('/content/haarcascade_frontalface_default.xml')
imagem_cinza = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

cv2_imshow(imagem_cinza)
2a741558c4a7c050a4203cbabc59b8d1.png
deteccoes = detector_face.detectMultiScale(imagem_cinza, scaleFactor=1.3, minSize=(30,30))
deteccoes
array([[1635,  156,  147,  147],
       [ 284,  262,  114,  114],
       [1149,  260,  129,  129],
       [ 928,  491,  171,  171],
       [ 222,  507,  151,  151]], dtype=int32)
for (x, y, l, a) in deteccoes:

  #print(x, y, l, a)

  cv2.rectangle(img, (x, y), (x + l, y + a), (0,255,0), 2)

cv2_imshow(img)
bd39a5298861dc5de3689591f4af4b6d.png

我们通过 Google Colab notebook 可视化了人脸识别的处理过程:

6ee14c6b395a52c425d02073908ae5cf.gif

将返回数字 5 表示他检测到5张脸,我们有这些点来指示每张脸,以便你更好地理解,让我们使用最后一张脸。

len(deteccoes) # Fotal Faces= 5
5

OpenCV 的替代方案

在选择 OpenCV 的替代方案时,我们采用了以下标准:

  • 易于使用

  • 可用性

  • 可扩展性

  • 稳健性

  • 灵活性

以下是我的替代方案列表,遵循上述标准:

  1. Microsoft Computer Vision API

  2. AWS Rekognition

  3. Google Cloud Vision API

  4. Scikit-Image

  5. SimpleCV

  6. Azure Face API

  7. DeepDream

  8. IBM Watson Visual Recognition

  9. Clarifi

  10. DeepPy

结论

在本文中,我们使用 Python OpenCV 库作为一种工具,以敏捷高效的方式加快人脸识别速度。

参考

  • https://opencv.org/

  • https://newbedev.com/how-to-download-haarcascade-frontalface-default-xml-code-example

  • https://www.pyimagesearch.com/start-here/

  • https://docs.microsoft.com/en-us/azure/cognitive-services/computer-vision/

  • https://rekognition-immersionday.workshop.aws/en/

  • https://www.ibm.com/br-pt/cloud/watson-visual-recognition

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 woshicver」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓

46f583af8bf662ffda0eba0a2052d4fa.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实现计算机视觉——人脸检测 的相关文章

  • MANIFEST.in、package_data 和 data_files 澄清吗?

    我正在尝试创建一个 Python 包 并且目录结构如下 mypkg init py module1 x py y py z txt module2 a py b py 然后我将所有文件添加到MANIFEST in当我检查创建的存档时 它包含
  • 如何在 Google App Engine 的 Python 中获取 StringProperty 的值?

    如何获取 nbd Model 的值 我想返回由多个字段组成的描述 但我无法让它工作 这是我的班级代码 class User ndb Model name ndb StringProperty email ndb StringProperty
  • Python GTK + webkit - 在 gtk.main() 之后插入 JavaScript

    我在终端中尝试了这个 一切正常 但是如果我在脚本内运行这个 我无法在 gtk main 之后插入 JavaScript import gtk import webkit w gtk Window b webkit WebView w add
  • Python 的 mysqldb 晦涩文档

    Python 模块 mysqldb 中有许多转义函数 我不理解它们的文档 而且我努力查找它们也没有发现任何结果 gt gt gt print mysql escape doc escape obj dict escape any speci
  • 如何在Python代码中查找列号

    简短问题 当按上述方式调用函数时 我可以找到行号here https stackoverflow com questions 3056048 filename and line number of python script 同样 如何找到
  • 张量流和线程

    下面是来自 Tensorflow 网站的简单 mnist 教程 即单层 softmax 我尝试通过多线程训练步骤对其进行扩展 from tensorflow examples tutorials mnist import input dat
  • scikit-learn 和tensorflow 有什么区别?可以一起使用它们吗?

    对于这个问题我无法得到满意的答案 据我了解 TensorFlow是一个数值计算库 经常用于深度学习应用 而Scikit learn是一个通用机器学习框架 但它们之间的确切区别是什么 TensorFlow 的目的和功能是什么 我可以一起使用它
  • 在 Linux 上的 Python 中使用受密码保护的 Excel 工作表

    问题很简单 我每周都会收到一堆受密码保护的 Excel 文件 我必须解析它们并使用 Python 将某些部分写入新文件 我得到了文件的密码 当在 Windows 上完成此操作时 处理起来很简单 我只需导入 win32com 并使用 clie
  • 如何将类添加到 LinkML 中的 SchemaDefinition?

    中的图表https linkml io linkml model docs SchemaDefinition https linkml io linkml model docs SchemaDefinition and https link
  • 在 iPython/pandas 中绘制多条线会生成多个图

    我试图了解 matplotlib 的状态机模型 但在尝试在单个图上绘制多条线时遇到错误 据我了解 以下代码应该生成包含两行的单个图 import pandas as pd import pandas io data as web aapl
  • 在谷歌云上训练神经网络时出现“无法获取路径的文件系统”错误

    我正在使用 Google Cloud 在云上训练神经网络 如下例所示 https cloud google com blog big data 2016 12 how to classify images with tensorflow u
  • Pandas groupby apply 执行缓慢

    我正在开发一个涉及大量数据的程序 我正在使用 python pandas 模块来查找数据中的错误 这通常工作得非常快 然而 我当前编写的这段代码似乎比应有的速度慢得多 我正在寻找一种方法来加快速度 为了让你们正确测试它 我上传了一段相当大的
  • 如何使用 Celery 多工作人员启用自动缩放?

    命令celery worker A proj autoscale 10 1 loglevel info启动具有自动缩放功能的工作人员 当创建多个工人时 me mypc projects x celery multi start mywork
  • 使用 WSGI 在 Windows XAMPP 中设置 Python 路径

    我正在 Webfaction 上设置实时服务器的开发版本 在本地计算机上的虚拟 Apache 服务器环境 运行没有任何错误 中运行 Django 应用程序 XP 使用 Python 2 6 运行 XAMPP Lite 我可以提交更改通过 G
  • Jupyter Notebook 中的深色模式绘图 - Python

    我正在使用 Jupyter Notebook 目前正在使用 JupyterThemes 的深色日光主题 我注意到我的绘图不是处于黑暗模式 并且文本仍然是黑色并且在日光照射的背景上无法读取 JupyterThemes 的自述文件建议在 ipy
  • 如何分析组合的 python 和 c 代码

    我有一个由多个 python 脚本组成的应用程序 其中一些脚本正在调用 C 代码 该应用程序现在的运行速度比以前慢得多 因此我想对其进行分析以查看问题所在 是否有工具 软件包或只是一种分析此类应用程序的方法 有一个工具可以将 python
  • 在 scipy 中创建新的发行版

    我试图根据我拥有的一些数据创建一个分布 然后从该分布中随机抽取 这是我所拥有的 from scipy import stats import numpy def getDistribution data kernel stats gauss
  • Python:无法使用 os.system() 打开文件

    我正在编写一个使用该应用程序的 Python 脚本pdftk http www pdflabs com tools pdftk the pdf toolkit 几次来执行某些操作 例如 我可以在 Windows 命令行 shell 中使用
  • 沿轴 0 重复 scipy csr 稀疏矩阵

    我想重复 scipy csr 稀疏矩阵的行 但是当我尝试调用 numpy 的重复方法时 它只是将稀疏矩阵视为对象 并且只会将其作为 ndarray 中的对象重复 我浏览了文档 但找不到任何实用程序来重复 scipy csr 稀疏矩阵的行 我
  • Java/Python 中的快速 IPC/Socket 通信

    我的应用程序中需要两个进程 Java 和 Python 进行通信 我注意到套接字通信占用了 93 的运行时间 为什么通讯这么慢 我应该寻找套接字通信的替代方案还是可以使其更快 更新 我发现了一个简单的修复方法 由于某些未知原因 缓冲输出流似

随机推荐

  • 类EMD的“信号分解方法”及MATLAB实现(第四篇)——VMD

    重头戏来了 在以往的应用经验里 VMD方法在众多模态分解方法中可以说是非常好的 从催更力度上看 这个方法也是格外受关注 笔者决定加快进度快一些写完这个方法 十月份了有些同学要开始做毕设 希望这篇文能帮上忙 1 VMD 变分模态分解 的概念
  • poj1338【丑数·DP】

    我记得这道题以前写过 而且是写出来了 DP吧 然后现在想了好久 没想出来 然后考虑一下递推 mdzz 直接就是让之前的这个每次乘以2 3 5就好了嘛 然后每轮取最小 include
  • jquery form表单.serialize()序列化后中文乱码问题原因及解决decodeURIComponent

    jquery form表单 serialize 序列化后中文乱码问题原因及解决 原因 serialize 自动调用了encodeURIComponent方法将数据编码了 解决方法 调用decodeURIComponent XXX true
  • 列表list转树形结构(python/golang/js/php)

    文章目录 1 原数据 2 利用对象内存共享生成嵌套结构 2 1 算法原理 2 2 算法实现 2 2 1 JS 2 2 2 Python 2 2 3 go 2 2 4 php 2 3 运行结果 3 递归 3 1 算法实现 3 1 1 pyth
  • 基于协同过滤算法的书籍推荐 毕业设计-附源码101555

    摘 要 21世纪的今天 随着社会的不断发展与进步 人们对于信息科学化的认识 已由低层次向高层次发展 由原来的感性认识向理性认识提高 管理工作的重要性已逐渐被人们所认识 科学化的管理 使信息存储达到准确 快速 完善 并能提高工作管理效率 促进
  • 微服务restful风格,用Post在服务之间发送请求接收不到参数接收不到问题(@RequestParam和@RequestBody)

    上代码 发送端 接收端 问题 发送端可以接受从前段传过来的数据 但是请求接收端时 接收端可以接收url请求 但是参数传不到接收端 分析 用get和post传输的数据是截然不同的 用get是追加在url之后 直接放在请求头 但是post请求的
  • 体验css:repeat和grid

    文章目录 一 repeat 1 语法 2 auto fill和auto fit 3 专属尺寸 fr auto max content min content 二 grid 1 设置grid布局 2 设置列宽行高 3 设置间距 4 设置分区
  • 【C++实现】 数据库连接池

    文章目录 涉及知识 为什么要弄连接池 功能介绍 成员变量讲解 代码剖析 Connection h Connection cpp ConnectionPool h ConnectionPool cpp 性能测试 难点 总结 涉及知识 MySQ
  • 解一元二次方程——Java

    解一元二次方程 可以使用下面的公式求元二次方程ax x bx c 0的两个根 b b 4ac称作一元二次方程的判别式 如果它是正值 那么一元二次方程就有两个实数根 如果它为0 方程式就只有一个根 如果它是负值 方程式无实数根 编写程序 提示
  • js中使用websocket

    后端地址是http的 websocket地址 ws开头 后端地址是https的 websocket地址wss开头 对于websocket没有跨域的问题 import MessageBox from element ui let url ws
  • Linux学习笔记--8(文件权限)

    文件权限与归属 Linux不同的字符来区分文件类型 常见如下 普通文件 d 目录文件 l 链接文件 b 块设备文件 c 字符设备文件 p 管道文件 对应目录文件 可读 表示能够读取目录内的文件列表 可写 表示能够在目录内新增 删除 重命名文
  • Oracle : ORA-02290: 违反检查约束条件

    背景 一个oracle表 有个字段开始被设置不为空 后来我想测试 把这个不为空 去掉了 然后保存 就报错 om dtwave meteor connector common exception ConnectorException Writ
  • 感知机原始形式、对偶形式的Python实现

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 感知机学习的目标就是求得一个能够将训练数据集中正负实例完全分开的分类超平面 感知机原始形式 from future import division import rando
  • Rabbitmq延迟队列实现定时任务

    场景 开发中经常需要用到定时任务 对于商城来说 定时任务尤其多 比如优惠券定时过期 订单定时关闭 微信支付2小时未支付关闭订单等等 都需要用到定时任务 但是定时任务本身有一个问题 一般来说我们都是通过定时轮询查询数据库来判断是否有任务需要执
  • 多态数组的简单代码教学

    多态数组的简单代码教学 package com hspedu polrArr public class PloyArray public static void main String args Person persons new Per
  • 基于github搭建自已的个人博客

    昨天搭建了基于github 的个人博客 在此记录搭建过程 1 环境准备 1 1 git 1 2 nodejs 1 3 hexo 1 安装命令 npm install hexo g 2 测试是否安装成功 hexo v 3 安装hexo依赖 n
  • vue 虚拟dom转换真实dom源码解析

    当不断的通过JS修改DOM时 不经意间会触发到渲染引擎的回流或者重绘 这个性能开销是非常巨大的 因此为了降低开销 我们需要做的是尽可能减少DOM操作 当我们想用JS脚本大批量进行DOM操作时 会优先作用于Virtual DOM这个JS对象
  • TCP和UDP相关问题

    目录 一 网络基础 1 OSI 七层模型划分为以下七层 不实用 2 TCP IP五层 或四层 模型 二 UDP与TCP的区别 三 如何基于UDP协议实现可靠传输 实际想说的是TCP 四 什么场景中适合使用TCP和UDP 一 网络基础 1 O
  • java web系统设计思路_JavaWeb——实战入门,设计思路总结。

    期末考试炸掉了 关于此次期末考试题 我一言难尽 过后总结 还是应该加强功底 勤能补拙 做一篇入门的设计思路总结 巩固一下基础 如讲解有误 请多多包涵 我的设计思路如下 1 在navicat mysql可视化 上建立数据库 gt 建立数据表
  • 实现计算机视觉——人脸检测

    概述 计算视觉是人工智能的一部分 旨在设计能够像人类视觉一样进行观察的智能算法 在本文中 我们将介绍三个主要范围 人脸检测 物体检测 面部识别 对象跟踪 在第一篇文章中 我们将重点介绍计算机视觉 以及基于 Python OpenCV 库的人