千家信息网

Python怎么实现AI人脸识别

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,这篇文章主要介绍"Python怎么实现AI人脸识别",在日常操作中,相信很多人在Python怎么实现AI人脸识别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Pytho
千家信息网最后更新 2024年11月26日Python怎么实现AI人脸识别

这篇文章主要介绍"Python怎么实现AI人脸识别",在日常操作中,相信很多人在Python怎么实现AI人脸识别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Python怎么实现AI人脸识别"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1、买台小"电脑"

既然要做人脸识别,那得找台带摄像头的小电脑啊。首先得价格便宜,简单搜了下,基本有以下几个选择:

  • 树莓派4: ARM系统,生态好。价格合适,55刀。CPU在3个中最好,算力0.1TFLOPS

  • K210:RISC-V的(非ARM),价格是最实惠的,299元。算力有0.8TOPS

  • Jetson Nano:ARM系统,比树莓派4还贵,但是多一个英伟达的GPU(当然是丐版的GPU),价格99刀。算力0.47TFLOPS

这3个里面,考虑到人脸识别应该有更多的AI属性,那么带GPU能做AI推理不是更香么,于是就选择了英伟达的Jetson Nano开发板(主要也是想先入门英伟达的GPU派系,谁叫现在NVIDIA比较香呢)。

2、启动系统

这里需要先把"系统image"刷到 tf 卡里面,然后把tf卡插到开发板上,然后开机启动。启动有2个点需要注意:

  1. 跳线帽,需要插上(不然电源点不亮)。

  2. 第一次开机会卡住,需要重启一次。

启动后,发现是个带界面的 Ubuntu系统,接上鼠标+键盘,就是最熟悉的小电脑嘛。

连接网络,设置国内Ubuntu源,安装 jtop 命令(因为nano不能敲 nvidia-smi 命令)。

3、原来CUDA是个编译器

既然选了英伟达的GPU开发板,刚好了解一下CUDA是什么。

3.1 写个CUDA程序

可以看到是C语言的,一共就2个函数。一个main函数,一个useCUDA函数。

要跑起来,需要先进行编译。发现不使用gcc,而是使用 nvcc 编译器,有意思。

Jetson Nano的image已经安装了nvcc,所以可以直接用,只是使用前需要设置一下path。

export CUDA_HOME=/usr/local/cuda-10.0export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATHexport PATH=/usr/local/cuda-10.0/bin:$PATH

设置后,才可以敲 nvcc 命令。

于是开始编译:

nvcc -o main.out main.cu foo.cu  (跟gcc编译一样)

运行:./main.out 即可。呵,原来CUDA是个编译器啊(编译出给GPU跑的程序)。

3.2 CUDA在干嘛

普通的程序编译出来都是给CPU跑的;写个程序,想给GPU跑,就得使用cuda编译器了。毕竟咱们的这个GPU弱是弱了一点,也有128核呢,跑这种简单的cuda程序还是OK的。

另外,CUDA还提供了一些现成的操作GPU的函数,比如:矩阵乘法,矩阵转置 之类的。CUDA只能用于英伟达的GPU,用于利用GPU进行复杂的并行计算。然后很多AI框架都是基于CUDA搞的,所以跑个cuda程序,帮助理解挺好的。

4、检测摄像头功能OK

这里需要使用 nvgstcapture-1.0 命令,经查,字母gst原来是Gstreamer的缩写。

直接敲:

nvgstcapture-1.0

发现可以把摄像头打开了。

4.1 Gstreamer

搜了下,发现是一个音视频流处理的pipeline框架。

比如Shell命令的管道符为:|

为避免冲突,Gstreamer的管道符,用了个比较像的:! 符号。

5、人脸可以正常识别

Copy了一个 face_detect.py 文件。

直接运行了:

python ./face_detect.py

发现就可以识别出人脸了,厉害了。。。(额,只是图像是倒过来的)

于是简单看了下代码(不会Python,但是也大概能看懂),发现有一个图像模式的参数 "flip_method=0",我改成了6,发现图像就转过来正常了。

再看了下,发现获取摄像头拍摄的图片,还是通过 Gstreamer 来实现的。

6、Opencv才是隐藏的Boss?

通过上面的章节,发现总共代码没几行,怎么就能识别人脸了呢?虽然python不熟,但好在代码少,仔细看了下:发现主要是调用了opencv的函数就可以识别人脸了,那说明opencv还是得了解一下。

你看识别人脸的代码,总共也就10行,简单过一下:

6.1 Haar分类器

再搜索,发现这里的人脸识别用的是 "Haar分类器"这种方法实现的。学习了下,属于机器学习的范畴,没有用卷积神经网络。

7、Windows上面复现人脸识别

既然通过opencv就能识别人脸,那我不需要摄像头,直接拿图片是不是也可以跑了?于是Windows上面安装个opencv试试。

7.1 安装Python

去 https://www.python.org/ 下载最新的Python, 安装后就有Python了。当然执行命令是 py。

7.2 pip命令

发现pip命令,还是不行。 找到原来在:

C:\Users\tsjsdbd\AppData\Local\Programs\Python\Python39\Scripts

这个目录下。

于是把这个路径,加入到了本机的环境变量里面:

所以pip命令ok了

7.3 设置pip国内源

vi ~/pip/pip.ini

然后设置内容:

[global]index-url = https://pypi.tuna.tsinghua.edu.cn/simple

7.4 安装 opencv 包

pip install opencv-python

这条命令会同时安装 numpy 包。

Ps:如果需要代理。设置一下

  export http_proxy=http://代理:端口export https_proxy=http://代理:端口

7.5 重现Haar人脸识别

下载一个带人脸的jpg照片,这里假设名为 face.jpg

detect.py代码如下:

import cv2# load modeldetector=cv2.CascadeClassifier('C:/Users/t00402375/AppData/Local/Programs/Python/Python39/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml')src = cv2.imread("./face.jpg")cv2.namedWindow("image", cv2.WINDOW_AUTOSIZE);# detectgray=cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)faces=detector.detectMultiScale(gray,1.2,5)# boxfor x,y,w,h in faces:    cv2.rectangle(src,(x,y),(x+w,y+h),(255,0,0),2)  # showcv2.imshow("image", src);cv2.waitKey(0);cv2.destroyAllWindows();

运行就行了。

py detect.py

得到结果:

发现确实可以,杠杠滴。

8、通过神经网络的人脸识别

现在视频图像的识别,一般走CNN,所以咱也得玩一遍。Jetson 开发板,自己配套了一套 jetson-inference 的推理项目,就是用来跑GPU推理的。

到此,关于"Python怎么实现AI人脸识别"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

人脸 命令 编译 程序 学习 代码 函数 摄像头 系统 英伟 摄像 价格 编译器 还是 开发 图像 更多 电脑 网络 代理 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 东营瓷砖库存软件开发公司 服务器安全防护怎么看 数据库管理员的日常 数据库技术及应用实验教材 大学免费数据库app 计算机网络技术和应用技术有什么区别 上海旧笔记本服务器 共享自动娃娃机软件开发 网络技术专业报考条件 电子商务网络技术基础文字 华为服务器上架实施步骤 大数据管理局网络安全 贵州点石互联网科技有限公司 我的世界最大红石服务器下载教程 湖北生物科技互联网 数据库发布订阅项目属性 亚马逊独立ip服务器是什么意思 品高软件开发者 魔域08数据库 网络安全为人民体会 舆情监测数据库 下列关于数据数据库 网络安全知识进校园活动方案 pppoe服务器占用系统资源吗 网络安全宣传周活动拉开帷幕 服务器内存有多少 深圳光明区做服务器的公司 数据库创建索引视图容易犯的错误 好听的互联网科技名字 问答计算机网络技术专业
0