使用百度云智能SDK和树莓派搭建简易的人脸识别系统 Python语言版
硬件
- 树莓派4B一个
- CSI摄像头一个
笔者使用的是树莓派4B和CSI摄像头,但是树莓派3和USB摄像头等相似设备均可。
百度云智能设置
Step 1 登录
百度云智能 网址https://cloud.baidu.com/
首先登录百度账号,与百度云、百度贴吧等互通,可直接扫码登录。如果没有百度账号请先自行注册。
Step 2 实名认证
百度的产品用了这么多年了,想必大家都已经认证过了,没有认证的读者现在认证即可,很快。
Step 3 领取免费资源
实名认证之后可以领取免费的智能云资源,一定要领取,否则之后我们测试程序时会报qps不足,不知道在哪领取的话先往后看,后面也会有链接。
Step 4 创建应用
鼠标放到右上角的三道横杠,依次选择产品服务、人工智能、人脸识别。
进来以后创建应用:
没有什么特别好说的,都无关乎我们的程序,按自己想的填写即可:(注意前面没有领取免费资源的话,可以在这里点击去领取)
Step 5 下载SDK
创建好应用后回到这个界面,点击下载SDK,一会儿要用。
本文采用Python语言实现,后续可能会出C++版本的教程,这里先直接选择Python的SDK:
Step 6 保存关键信息、创建组、新建用户并上传图片
下载好后我们进入到应用详情,首先保存好AppID、API Key、Secret Key三个字段的值,一会儿程序中要用。
保存好后我们点击左侧的“可视化人脸库”,然后根据页面提示创建组、创建用户、并上传用户的人脸图片,这里笔者只上传了一张自拍照,经测试在正常条件下也是可以识别出本人的。
到这里百度云智能的配置就告一段落了。
树莓派摄像头设置及必要视觉库的安装
Step 1 树莓派及摄像头的硬件安装及开启
首先我们将树莓派和摄像头安装好,并通过raspi-config开启摄像头权限,不熟悉的同学可以参考博客:树莓派摄像头基础配置及测试
Step 2 安装必要的视觉库
安装picamera,这是树莓派原生的图像和摄像头库。
pip install picamera
这里假设大家已经安装好python3。
安装opencv,笔者的程序中使用opencv库来做的图像采集。
sudo apt-get install -y libopencv-dev python3-opencv
如果要使用Python来使用GPIO信号,需要使用RPi.GPIO模块。如果你使用的是Python2版本,树莓派默认安装了RPi.GPIO模块(python-rpi.gpio)。
目前大多数的人都是使用Python3了,所以我们要手动安装Python 3版本的模块。
GPIO在本文中暂时不需要,但是还是安装一下,以后可以通过GPIO传输控制信号玩法有很多,笔者私以为树莓派最有魅力的一个点就在与除了可以看作一台电脑,它还带有丰富的GPIO接口。
sudo apt-get install python3-rpi.gpio
Step 3 安装百度云智能相关模块
安装百度AI模块
sudo pip install baidu-aip
安装SDK,将下载好的人脸识别SDK解压并安装:
sudo python3 setup.py install
测试
首先创建一个客户端来访问百度云智能,这里传入的参数就是刚才让大家保存的几个字段APP_ID, API_KEY, SECRET_KEY
client = AipFace(APP_ID, API_KEY, SECRET_KEY)
以下是核心测试函数,笔者在代码中做了比较详细的注释。
def check():stranger_count = 0while True:img_np = get_image() # opencv读取图像img_base64 = image_to_base64(img_np) # 将opencv读取到的图像转base64编码result = client.search(str(img_base64), 'base64', 'admin'); #在百度云人脸库中寻找匹配的人脸if result['error_msg'] == 'SUCCESS': # 如果成功了,说明检测到人,但不一定是成员name = result['result']['user_list'][0]['user_id'] # 获取名字score = result['result']['user_list'][0]['score'] # 获取相似度分数# print(name, score)if score > 80: #如果相似度大于80print('检测到成员:{}, 匹配度:{}'.format(name, score))with open('Log.txt','a') as f:f.write('Person: {},\t score: {:.4f}\t, time: {}\n'.format(name, score, get_curr_time()))time.sleep(2)else:print("检测到非成员,")name = 'stranger'stranger_count += 1stranger_path = os.path.join(STRANGER_DIR, str(stranger_count)+'.jpg')with open('Log.txt','a') as f:f.write('Person: {},\t saved as: {},\t time: {}\n'.format(name, stranger_path, get_curr_time()))cv2.imwrite(stranger_path, img_np)time.sleep(2)elif result['error_msg'] == 'pic not has face':print('未检测到人脸')time.sleep(2)else:print(result['error_code']+' ' + result['error_code'])time.sleep(2)
Log.txt文件的部分输出:
Person: stranger, saved as: strangers/16.jpg, time: Thu Aug 5 19:07:31 2021
Person: stranger, saved as: strangers/17.jpg, time: Thu Aug 5 19:07:34 2021
Person: Song, score: 95.0842 , time: Thu Aug 5 19:07:37 2021
Person: stranger, saved as: strangers/18.jpg, time: Thu Aug 5 19:07:43 2021
stranger是笔者请师哥露脸时的输出。Song是笔者本人露脸的识别结果及分数。识别的精度还是可以满足一般日常场景的需要的。
除了与百度之间的接口之外就是一些简单控制逻辑,大家也可以自行设计一些控制逻辑,根据是否检测到人脸、检测到的人脸能否被识别为用户组里的人脸来配合GPIO做一些控制逻辑,比如开关门、开关灯之类等智能家居,或者人脸识别打卡等。
后续笔者可能会做一个C++语言版的分享。
源码地址:https://github.com/Adenialzz/Rpi-BaiduSDK/tree/main
有其他报错或者困惑的朋友欢迎留言交流,有其他有趣的树莓派或计算机视觉想法的朋友也欢迎留言讨论。
使用百度云智能SDK和树莓派搭建简易的人脸识别系统 Python语言版相关推荐
- 七、搭建自己的人脸识别系统
近年来,面部识别技术因其在各个行业的日益普及和潜在应用而成为头条新闻.从解锁智能手机和访问安全区域到在刑事调查中识别嫌疑人,面部识别技术已成为我们现代社会的重要工具.人脸识别系统,采用MTCNN算法进 ...
- win10环境下基于face_recognition搭建自己的人脸识别软件
在win10环境下安装face_recognition,了解face_recognition中api的使用,如人脸截取.人脸矫正.人脸特征提取.人脸关键点提取.人脸mask获取.人脸特征比对等功能.最 ...
- 《Python自动化》学习笔记:百度云智能进行文字识别(代码干货)
# encoding:utf-8 # 利用百度云智能的资源进行文字识别 import requests import base64 from tkinter import filedialog,Tk ...
- 《Python自动化》学习笔记:百度云智能实现黑白图片上色,人物动漫化(代码干货)
基本要求 要注册百度的账号,并且创建应用,方法如下: 百度智能云新手入门教程:https://cloud.baidu.com/doc/OCR/s/dk3iqnq51 目的是为了获得API_Key和Se ...
- 《Python自动化》学习笔记:百度云智能实现提取身份证信息
问题 由于最近想搞深度学习,和AI这块,计算机算力不够.而且最近经常会碰到一些要用很棘手的算法求解复杂模型的问题. 由于我只对问题的结果有兴趣,而对具体的实现过程不在意,我注意到百度智能云有许多的应用 ...
- 三大优势让百度云智能推荐产品与众不同
百度云推出了全新的智能推荐BRS(Baidu Recommendation Service)产品,依托百度大数据以及在广告营销.AI等方面的技术积累,为广大企业提供有效.易用的智能推荐服务,帮助企业快 ...
- 基于百度智能云的人脸识别系统
演示视频: [人脸识别]没想到自己做个人脸识别软件居然这么简单! 树莓派人脸识别代码: from picamera.array import PiRGBArray from picamera impo ...
- 基于百度云人脸识别API与opencv的人脸识别系统
基于百度云人脸识别API与opencv的人脸识别系统 简介 弄这个东西是因为参加了学校的项目,第一次开发做的不是很好. 本系统是基于百度云人脸识别API.opencv级联器.PYQT5进行开发.百度云 ...
- 如何快速搭建智能人脸识别系统
作者 | 小白 来源 | 小白学视觉 网络安全是现代社会最关心的问题之一,确保只有特定的人才能访问设备变得极其重要,这是我们的智能手机设有两级安全系统的主要原因之一.这是为了确保我们的隐私得到维护,只 ...
最新文章
- 序列号明码比较的反汇编代码以及注册机的初步使用
- CentOS 7下搭建配置 SVN 服务器
- 网易易盾李雨珂:服务性能+算法确定性优化,迎接5G时代内容安全爆发式流量增长...
- 注入dll到explorer.exe中无反应_MBR膜生物反应器的安装及技术要求都有什么呢?
- sql两个时间之间的小时差_2年级学生每天上学路上有两个小时车程,该如何利用好这个时间?-知乎亲子热点快报/2020/09/04...
- 电脑主板跳线_DIY电脑主板的跳线安装及排序规则
- AWT_方位布局(Java)
- 关于linux开机自启
- [Swift]LeetCode145. 二叉树的后序遍历 | Binary Tree Postorder Traversal
- Asp.net MVC3.0 入门指南 4 模型 Model
- cuda_error_launch_failed: unspecified launch failure
- mysql的weekday函数_mysql 日期函数
- Ubuntu下载软件包网速过慢的解决方法
- 踩坑之路---JWT验证
- [Maven] 跨项目调用内容
- vue组件中ctrl键和shift键操作多选
- WVS与Arachni漏扫工具对比实验
- 墨画子卿第三章第4节:躺着修行
- OpenCV 视频处理框架
- 企业成本费用空缺如何解决?享受核定政策一招搞定!
热门文章
- Vue + Spring Boot 项目实战(二):使用 CLI 搭建 Vue.js 项目
- git Could not read from remote repository.Please make sure you have the correct access rights.
- Error和Exception(异常)
- 蓝牙小电池图标_提高MacBook电池寿命的15个技巧
- 求Sn = a+aa+aaa+...+aaaaaa(n个a),其中a是一个数字,n代表a的位数,例如 2+22+222+2222+22222(此时n=5),n由键盘输入。
- linux内核功能关闭透明大页 功能,redhat linux 7.4关闭透明大页
- linux如何运行verilog,linux系统下ncverilog的详细命令linux系统下ncverilog的详细命令.doc...
- d3.js html显示图片,d3.js v4:如何在鼠标点击节点后显示图像
- ddd 访问权限_基于DDD的微服务设计和开发实战
- Linux做施压机的最大线程数,关于性能测试的几个要点