基于二哈实现多人人脸学习和识别

一、实验目的及要求

【一】实现人脸识别。
【二】实现云数据库应用。

二、实验原理与内容

基于二哈实现多人人脸学习和识别。
基于TinywebDB实现云数据库应。
基于EasyIoT实现mqtt数据上传。

三、实验软硬件环境

硬件:掌控板、二哈识图、掌控扩展板、电脑、手机。
软件:Mind+。

四、 实验过程(实验步骤、记录、数据、分析)

(一)HuskyLens二哈识图介绍

点击查看二哈识图详细介绍
简介:HuskyLens二哈识图是一款简单易用的AI视觉传感器,内置7种功能:人脸识别、物体追踪、物体识别、巡线追踪、颜色识别、标签识别、物体分类。
基于二哈实现多人人脸学习和识别_第1张图片

1、功能按键与学习按键说明:

功能按键与学习按键的基本操作如下:
向左或向右拨动“功能按键”,切换到不同的功能。
短按“学习按键”,学习指定的物体;长按“学习按键”,从不同的角度和距离持续学习指定的物体;如果HuskyLens之前学习过,则短按“学习按键”,可让HuskyLens忘记当前功能下所学的。
长按“功能按键”,进入当前功能的二级菜单参数设置界面,向左、向右拨动或向下短按“功能按键”即可设置相关参数。
基于二哈实现多人人脸学习和识别_第2张图片

2、升级固件

使用windows 10操作系统升级HuskyLens的固件。操作步骤如下:

(1)下载HUSKYLENS Uploader V2.1软件。点击下载。由于是.exe文件,windows系统可能会拦截,请放行或保留该文件即可。
(2)下载并安装USB转串口芯片CP2102的驱动程序。如之前已经安装过,此步骤可跳过。点击此处 选择适合您的驱动。(注:也可使用Mind+中的一键安装驱动功能安装此驱动。)

驱动安装完毕后,使用microUSB线,连接HUSKYLENS上的固件烧录口(USB口)与电脑USB口,此时打开设备管理器应该出现名字开头为"Silicon Labs CP210x"的COM端口。如下图所示:
在这里插入图片描述

(3)下载固件。点击下载V0.5.1版本。
(4)运行HUSKYLENS Uploader V2.1软件, 会先弹出一个小黑窗(cmd窗口),稍等片刻,就会出现界面。然后点击“Select File”按钮,加载固件。

基于二哈实现多人人脸学习和识别_第3张图片

(5)点击“Upload”按钮即可进行烧录,耐心等待烧录完成。烧录完成后,“Uploading”字样会消失,HuskyLens屏幕会点亮。烧录期间请不要关闭界面窗口和小黑窗(cmd窗口)。烧录过程大概需要5分钟左右。固件比较大,因此上传时间会有点长。

基于二哈实现多人人脸学习和识别_第4张图片

3、人脸识别功能

本功能可以侦测任何脸部轮廓;识别、追踪学习过的人脸。本次实验做的是识别多个人脸,详细步骤如下。

(1)操作设置:

向左拨动“功能按键”,至屏幕顶部显示“人脸识别”。
长按“功能按键”,进入人脸识别功能的二级菜单参数设置界面。
向左或向右拨动“功能按键”,选中“学习多个”,然后短按“功能按键”,接着向右拨动“功能按键”打开“学习多个”的开关,即:进度条颜色变蓝,进度条上的方块位于进度条的右边。再短按“功能按键”,确认该参数。
向左拨动“功能按键”,选中“保存并返回“,短按”功能按键“,屏幕提示”是否保存参数?“。默认选择”确认“,此时短按”功能按键“,即可保存参数,并自动返回到人脸识别模式。
基于二哈实现多人人脸学习和识别_第5张图片

(2)学习多个人脸:

将HuskyLens屏幕中央的“+”字对准需要学习的人脸,长按“学习按键”完成第一个人脸的学习(各个角度)。松开”学习按键“后,屏幕上会提示:”再按一次按键继续!按其他按键结束“。如要继续学习下一个人脸,则在倒计时结束前短按“学习按键”,可以继续学习下一个人脸。如果不再需要学习其他人脸了,则在倒计时结束前短按”功能按键”即可,或者不操作任何按键,等待倒计时结束。
本章节中,我们需要继续学习下一个人脸,因此在倒计时结束前短按“学习按键”。然后将HuskyLens屏幕中央的“+”字对准需要学习的下一个人脸,长按“学习按键”完成第二个人的脸的学习。以此类推。
HuskyLens标注的人脸ID与录入人脸的先后顺序是一致的,也就是:学习过的人脸会按顺序依次标注为“人脸:ID1”,“人脸:ID2”,“人脸:ID3”,以此类推,并且不同的人脸ID对应的边框颜色也不同。
基于二哈实现多人人脸学习和识别_第6张图片

(3)识别多个人脸:

HuskyLens学习过的人脸信息会自动保存起来。后续,当HuskyLens检测到学习过的人脸时,会将这些人脸用方框框选出来并标识ID,第一个学习的人脸标注为“人脸:ID1”,第二个学习的人脸标注为“人脸:ID2”,第三个学习的人脸标注为“人脸:ID3”,以此类推。不同的人脸ID对应的边框颜色也不同,边框大小会随着人脸大小而变化,并自动追踪人脸。
基于二哈实现多人人脸学习和识别_第7张图片

(二)TinyWebDB

点击跳转到TinyWebDB官网

1、在红色选区部分按照提示注册TinyWebDB账号。

基于二哈实现多人人脸学习和识别_第8张图片

2、注册后登陆TinyWebDB,点击数据浏览。

基于二哈实现多人人脸学习和识别_第9张图片

3、在右上角输入标签和值创建两个id(识别多少个人脸创建多少个id)。

基于二哈实现多人人脸学习和识别_第10张图片

(三)Easy IoT

点击跳转到Easy IoT官网

1、添加或直接登陆Easy IoT账号。

基于二哈实现多人人脸学习和识别_第11张图片

2、登陆成功后,点击工作间,添加一个新的设备。

基于二哈实现多人人脸学习和识别_第12张图片

(四)Mind+

1、编程准备

(1)将组装好的设备通过USB接口连接电脑,打开Mind+,在上方导航栏中连接设备并切换到上传模式

在这里插入图片描述

(2)点击左侧导航栏中的扩展

在这里插入图片描述

(3)在主控板中添加掌控板,在扩展板中添加掌控扩展板,在传感器中添加AI摄像头,在网络服务中添加MQTT,WiFi和TinyWebDB。

在这里插入图片描述

基于二哈实现多人人脸学习和识别_第13张图片
基于二哈实现多人人脸学习和识别_第14张图片

基于二哈实现多人人脸学习和识别_第15张图片
基于二哈实现多人人脸学习和识别_第16张图片

2、编程

点击跳转到github下载源代码“实验三”

(1)整体图形代码块

基于二哈实现多人人脸学习和识别_第17张图片

(2)设置参数

基于二哈实现多人人脸学习和识别_第18张图片
基于二哈实现多人人脸学习和识别_第19张图片

基于二哈实现多人人脸学习和识别_第20张图片
基于二哈实现多人人脸学习和识别_第21张图片

基于二哈实现多人人脸学习和识别_第22张图片

3、C代码

#include 
#include 
#include 
#include 
// 动态变量
String mind_s_name;
// 静态常量
const String topics[5] = {
     "3mhx5iKMR","","","",""};
// 创建对象
DFRobot_Iot       myIot;
mPython_TinyWebDB mydb;
DFRobot_HuskyLens huskylens;
// 主程序开始
void setup() {
     
	mPython.begin();
	myIot.wifiConnect("lyb", "lyb1234567890;");
	display.setCursorLine(1);
	display.printLine("WiFi正在尝试连接...");
	while (!myIot.wifiStatus()) {
     yield();}
	display.setCursorLine(1);
	display.printLine("WiFi连接成功!");
	display.setCursorLine(2);
	display.printLine(myIot.getWiFiLocalIP());
	myIot.init("iot.dfrobot.com.cn","ZtF_tiFGR","","ZpKlpmFMgz",topics,1883);
	myIot.connect();
	display.setCursorLine(3);
	display.printLine("MQTT正在尝试连接...");
	while (!myIot.connected()) {
     yield();}
	display.fillInLine(3, 0);
	display.setCursorLine(3);
	display.printLine("MQTT连接成功");
	mydb.setServerParameter("http://tinywebdb.appinventor.space/api", "lybiot","87bb2345");
	huskylens.beginI2CUntilSuccess();
	huskylens.writeAlgorithm(ALGORITHM_FACE_RECOGNITION);
	display.fillScreen(0);
	display.setCursorLine(1);
	display.printLine("请保持面向摄像头");
}
void loop() {
     
	huskylens.request();
	if (huskylens.isAppearDirect(HUSKYLENSResultBlock)) {
     
		if (huskylens.isLearned(huskylens.readBlockCenterParameterDirect().ID)) {
     
			mind_s_name = mydb.getTag((String(huskylens.readBlockCenterParameterDirect().ID)));
			display.setCursorLine(2);
			display.printLine(mind_s_name);
			myIot.publish(topic_0, mind_s_name);
		}
	}
}

五、测试/调试及实验结果分析

1、使用二哈学习多个人脸

2、在Mind+中上传代码到掌控板

基于二哈实现多人人脸学习和识别_第23张图片
基于二哈实现多人人脸学习和识别_第24张图片
基于二哈实现多人人脸学习和识别_第25张图片
基于二哈实现多人人脸学习和识别_第26张图片

3、人脸识别

基于二哈实现多人人脸学习和识别_第27张图片
基于二哈实现多人人脸学习和识别_第28张图片
基于二哈实现多人人脸学习和识别_第29张图片

基于二哈实现多人人脸学习和识别_第30张图片

六、实验结论与体会

通过这次实验我利用二哈识图,掌控板和掌控扩展板组合的设备,以及Mind+编程实现了人脸识别的功能。在实验过程中体会到了物联网的魅力。

你可能感兴趣的:(物联网,人脸识别,github,c语言,物联网)