四、串口调试
人脸识别套件可以通过串口调试来操作各个功能与调试各个参数。接下来将进行关于串口调试的详细讲解。
人脸识别套件可以通过串口调试来操作各个功能与调试各个参数。接下来将进行关于串口调试的详细讲解。
各系统可用调试工具
Computer type | OS version | Terminal |
Apple | Mac OS | PuTTY |
PC | Windows 7 / 10 | PuTTY/Tera Term/SecureCRT(win7串看口驱动安装未成功,安装包未找到) |
PC | Linux | PuTTY |
4.1调试工具
安装好后打开“PuTTY”工具,在左侧“Session”界面进行串口配置。“Connection type”选择“Serial”,“Serial line”填写COM3(不一定是这个要在设备管理器查看端口号),“Speed”填写115200,然后点击左侧导航栏“Connection”内的“Serial”,检查接口名称和速率是否与上面填写的一致,“Data bits”填写8,“Stopbits”填写1,“Parity”选择“None”,“Flow control”选择XON/XOFF,至此软件配置完毕。连接套件,按下Open,就可以开始串口调试了。
需要注意的是,每次重新连接或重启套件,都需要重新打开调试软件进行连接。
4.2串口调试命令
接下来将对一部分常用命令进行讲解。
4.2.1help 显示命令列表。
连接到套件的串行接口后,会看到一个空白的终端屏幕,上面会显示我们输入的任何字符。使用“help”命令可以显示一个列表,所有可用串行命令及其用法都在其中。
包含的命令如下表格所示:
命令 | 参数 | 描述 |
help | | 显示所有的串行命令及其功能和描述。 |
exit | | 退出调试 |
list | | 列出所有注册的用户 |
add | USERNAME | 以此名称来注册一个用户 |
add | -s | 停止注册过程 |
del | USERNAME | 删除该用户 |
del | -a | 删除所有用户 |
rename | Old new | 重命名 |
verbose | <0|1|2|3> | 调整详细模式等级 |
camera ir_pwm | <0~100> | 调整红外补光灯亮度 |
camera white_pwm | <0~100> | 调整白色补光灯亮度 |
version | | 显示版本信息 |
save | | 将人脸信息存入flash中 |
updateotw | | 开启OTW下载模式 |
reset | | 重启MCU |
emotion | <0|2|4|7> | 开启情绪识别,选择可识别情绪种类 |
liveness | <on|off> | 打开或关闭生物识别 |
detection resolution | < qvga | vga > | 配置检测分辨率,并复位 |
display output_mode | < rgb | ir > | 配置RGB或IR摄像头图像作为屏幕显示 |
display output_device | < usb | riverdi > | 选择终端显示设备 |
display interface | < loopback | infobar > | 配置GUI是否显示 |
wifi | <on | off> | 开启或关闭WiFi功能 |
wifi reset | | 重置WiFi连接 |
wifi credentials | | 显示配置的WiFi名和密码 |
wifi credentials | [SSID] [PASSWORD] | 设置WiFi名和密码 |
wifi ip | | 显示IP地址 |
wifi erase | | 完全清除WiFi设置 |
app_type | < 0 | 1 | 2 | 3 > | 更改应用类型 |
low_power | <on | off> | 开启或关闭低电量模式 |
4.2.2list列出所有注册的用户
在窗口中输入“list”,将列出当前注册到系统中的所有用户。
4.2.3add 手动添加用户
输入此命令后将会开始注册一个人脸,并用这个名字进行命名。
4.2.4del 手动删除用户
可以使用del USERNAME来删除指定用户:
也可以使用del -a删除所有用户:
4.2.5rename oldnew 对用户进行重命名
Rename命令可以对用户进行重命名,old为旧名字,new为新名字。
可以看到,用户名已经修改好了。
4.3.6verbose 详细模式
该模式下共有0,1,2,3四个等级,对应四种不同的详细模式等级,其展示的调试信息数量也不尽相同。
verbose 0:静默模式,关闭调试信息。
verbose 1:1级详细模式;
其中,[9938.301]等信息是时间戳,Facedetected – dt 指的是识别到图像内出现人脸时所用的时间,User:abcd –rt 指的是识别出该人脸信息属于哪一个注册用户所用的时间。
verbose 2:2级详细模式;
verbose 2:2级详细模式;
其中 IR Fake Face!说明红外识别发生问题,后面的sim指的是识别准确度,这里我认为这应该是识别到的人脸与登记过的人脸的相似度。
verbose 3:3级详细模式,与2级模式相比,除了在调试窗口显示信息外,在图像界面也显示了四条参数。
其中sim仍然是识别相似度,blur=0是模糊检查通过,rgbLive=1是彩色图像识别通过,irLive=1是红外图像识别通过,front是人脸距离方位判断,只在注册时变化。
4.3.7 camera ir_pwm 红外补光灯调节
刚开始注册不成功,听微信里@龙大侠说要调整此参数到20, 调整到果然注册成功。套件的双摄像头适配器有两个IR(红外) LED补光灯,他们的亮度由PWM信号的占空比来控制,在红外光线照明不足时可以通过此命令来调整红外补光亮度。命令及调整前后对比如下所示。
其中sim仍然是识别相似度,blur=0是模糊检查通过,rgbLive=1是彩色图像识别通过,irLive=1是红外图像识别通过,front是人脸距离方位判断,只在注册时变化。
4.3.7 camera ir_pwm 红外补光灯调节
刚开始注册不成功,听微信里@龙大侠说要调整此参数到20, 调整到果然注册成功。套件的双摄像头适配器有两个IR(红外) LED补光灯,他们的亮度由PWM信号的占空比来控制,在红外光线照明不足时可以通过此命令来调整红外补光亮度。命令及调整前后对比如下所示。
我用 ir_pwm 20 不成功
用下面命令是可以的
- camera ir_pwm 20
4.3.8 camera white_pwm 白光补光灯调节
套件的双摄像头适配器有两个whiteLED补光灯,他们的亮度由PWM信号的占空比来控制,在外界光线照明不足时可以通过此命令来调整白光补光亮度。命令及调整前后对比如下所示。
4.3.9 version 打印版本信息
使用version命令可以显示套件目前使用的内置固件版本信息。
4.3.10 save 保存用户信息
上文提到过,当套件重启时将删除所有用户信息,如果想将信息保存下来,就要用到save命令。使用save N时,N指的是要保存的用户数,按照添加顺序保存。或者直接使用save,保存所有用户信息。4.3.11 reset 软件复位
当需要软件复位套件时,可以使用reset命令。要注意的是,串口调试工具也要同时重新连接。
4.3.12 emotion 配置情绪识别
该套件除了支持人脸识别外,还支持情绪识别。 要想开启此功能,需要通过串行命令启用。
在串口调试工具的窗口内,使用命令“emotion 0”、“emotion 2”、“emotion 4”或“emotion 7”,来开启不同等级的情绪识别,数字指的是情绪识别可以分辨的情绪类型。具体情绪类型见下表:
套件的双摄像头适配器有两个whiteLED补光灯,他们的亮度由PWM信号的占空比来控制,在外界光线照明不足时可以通过此命令来调整白光补光亮度。命令及调整前后对比如下所示。
4.3.9 version 打印版本信息
使用version命令可以显示套件目前使用的内置固件版本信息。
4.3.10 save 保存用户信息
上文提到过,当套件重启时将删除所有用户信息,如果想将信息保存下来,就要用到save命令。使用save N时,N指的是要保存的用户数,按照添加顺序保存。或者直接使用save,保存所有用户信息。
- SHELL>> version
- SHELL>> Engine:v3.
当需要软件复位套件时,可以使用reset命令。要注意的是,串口调试工具也要同时重新连接。
4.3.12 emotion 配置情绪识别
该套件除了支持人脸识别外,还支持情绪识别。 要想开启此功能,需要通过串行命令启用。
在串口调试工具的窗口内,使用命令“emotion 0”、“emotion 2”、“emotion 4”或“emotion 7”,来开启不同等级的情绪识别,数字指的是情绪识别可以分辨的情绪类型。具体情绪类型见下表:
由表格可以看到,识别的情绪种类越少,准确率越高。同时无特殊表情时作为默认状态,无信息提示。
但是我在使用情绪识别功能时,发现无法设置。从下图可以看到,情绪识别功能已经开启,但是在识别过程中并没有显示情绪信息(此时我脸上是大笑表情,对应“Happy”),包括调试窗口也没有相关信息,不知道是套件配置原因还是内置固件版本问题,或者需要对工程文件进行设置。
我在测试时,未能成功,也看到有朋友问了这个问题:https://www.wpgdadatong.com/cn/question/detail/20983
4.3.13liveness 配置活体检测
此命令可以关闭或开启活体检测功能(默认开启)。执行此命令后套件将会重启。
开启活体检测功能用相片是不能识别的。
4.3.14 detectionresolution 配置检测分辨率
此套件在执行人脸识别时有两种检测分辨率,分别是VGA和QVGA模式。默认情况下,套件在 VGA 模式下运行。虽然 VGA 需要更多的处理能力,这可能会轻微影响检测时间,但与使用 QVGA 相比,VGA 模式提供的更高分辨率也使得其拥有了大约两倍的检测/识别范围。两个模式的区别将在下表中展示。
此套件在执行人脸识别时有两种检测分辨率,分别是VGA和QVGA模式。默认情况下,套件在 VGA 模式下运行。虽然 VGA 需要更多的处理能力,这可能会轻微影响检测时间,但与使用 QVGA 相比,VGA 模式提供的更高分辨率也使得其拥有了大约两倍的检测/识别范围。两个模式的区别将在下表中展示。
更改检测分辨率不会影响视频输出的分辨率,只会影响传递给推理引擎的图像的分辨率。执行此命令后套件将会重启。另外,从表格中可以看到,两种模式所耗时间相差不大,所以通常情况下都使用VGA模式。
4.3.15 display 显示输出配置
此命令可用于在来自 IR 和 RGB 摄像头的输出之间切换,功能上与按键3相同。
同样,这里调整的只是展示给用户的图像,对于MCU和人脸识别的处理过程来说,是不产生影响的。
4.3.16 displayoutput_device 显示输出配置
该套件除了支持将显示的图像通过USB输出到电脑外,还支持Riverdi显示器输出。这里不做过多介绍,感兴趣的朋友可以去自行了解。
4.3.17 displayinterface 配置GUI是否显示
此命令可以关闭或开启GUI,与按键1功能相同。
4.3.18 WiFi模式相关命令
a.wifi<on/off> 开启或关闭WiFi功能。当WiFi功能关闭时输入wifi on命令开启WiFi功能,将会显示如下信息:
SHELL>> wifi on
SHELL>> Wi-Fi will start
当WiFi正在尝试连接时使用此命令,将会显示如下界面:
SHELL>> Wi-Fi will start
当WiFi正在尝试连接时使用此命令,将会显示如下界面:
SHELL>> wifi on
SHELL>> Wi-Fi driver is connecting,
如果WiFi已经打开并且连接成功,那么将会显示这个界面:
SHELL>> Wi-Fi driver is connecting,
如果WiFi已经打开并且连接成功,那么将会显示这个界面:
SHELL>> wifi on
SHELL>> Wi-Fi driver is on
最后,如果Wi-Fi已经打开并尝试连接但由于提供的账号密码错误等而失败,将收到以下消息:
SHELL>> Wi-Fi driver is on
最后,如果Wi-Fi已经打开并尝试连接但由于提供的账号密码错误等而失败,将收到以下消息:
SHELL>> wifi on
SHELL>> Wi-Fi is in provisioning mode
当WiFi处于开启状态时使用wifioff命令,
如果输入命令前WiFi已经关闭,那么将显示:
SHELL>> Wi-Fi is in provisioning mode
当WiFi处于开启状态时使用wifioff命令,
如果输入命令前WiFi已经关闭,那么将显示:
SHELL>> wifi off
SHELL>> Wi-Fi will stop
在这里我遇到了一个问题,当我已经配置了WiFi账号密码并且成功连接后,重启套件,开启WiFi功能(当然如果重启前未关闭的话将默认开启),此时WiFi将处于不断搜索尝试连接的状态。如果没有链接成功或者WiFi路由器关闭,套件将会一直处于此状态。此时尝试使用wifi off关闭命令是无效的。
甚至wifi reset 命令也无效。这里我解决方法是直接使用wifi erase命令擦除wifi账号密码信息,再进行wifi off关闭。
b.wifi reset 重置WiFi命令
输入该命令时将会重置套件的WiFi模块,设置WiFi账号密码后也需要进行重置。
SHELL>> wifi reset
SHELL>> Wi-Fi will reset
c.wifi credentialsWiFi账号密码相关命令
输入wifi credentials账号 密码 时将会对WiFi账号密码查看或设置:
SHELL>> Wi-Fi will stop
在这里我遇到了一个问题,当我已经配置了WiFi账号密码并且成功连接后,重启套件,开启WiFi功能(当然如果重启前未关闭的话将默认开启),此时WiFi将处于不断搜索尝试连接的状态。如果没有链接成功或者WiFi路由器关闭,套件将会一直处于此状态。此时尝试使用wifi off关闭命令是无效的。
甚至wifi reset 命令也无效。这里我解决方法是直接使用wifi erase命令擦除wifi账号密码信息,再进行wifi off关闭。
b.wifi reset 重置WiFi命令
输入该命令时将会重置套件的WiFi模块,设置WiFi账号密码后也需要进行重置。
SHELL>> wifi reset
SHELL>> Wi-Fi will reset
c.wifi credentialsWiFi账号密码相关命令
输入wifi credentials账号 密码 时将会对WiFi账号密码查看或设置:
SHELL>> wifi credentials SunshineSilicon 123456
如果直接输入wificredentials将会显示已经设置的信息:
如果直接输入wificredentials将会显示已经设置的信息:
SHELL>> wifi credentials
SHELL>> SSID is SunshineSilicon with password 123456.
如果还没有设置WiFi账号密码,将会给出如下提示:
SHELL>> wifi credentials
SHELL>> Wi-Fi Credentials not found
d.wifi ip获取套件WiFi地址
输入该命令将会显示套件的ip地址,未连接时显示如下:
SHELL>> wifi ip
IPv4 Address: 0.0.0.0
SHELL>> SSID is SunshineSilicon with password 123456.
如果还没有设置WiFi账号密码,将会给出如下提示:
SHELL>> wifi credentials
SHELL>> Wi-Fi Credentials not found
d.wifi ip获取套件WiFi地址
输入该命令将会显示套件的ip地址,未连接时显示如下:
SHELL>> wifi ip
IPv4 Address: 0.0.0.0
(我连接 WIFI一直未连接上)
可以看到WiFi地址是相符的。
SHELL>> wifi ip
IPv4 Address: 192.168.0.165
e.wifi erase清除WiFi信息
使用该命令后将会完全擦除WiFi的配置信息。
SHELL>> wifi erase
SHELL>> Wi-Fi credentials removed
可以看到WiFi地址是相符的。
SHELL>> wifi ip
IPv4 Address: 192.168.0.165
e.wifi erase清除WiFi信息
使用该命令后将会完全擦除WiFi的配置信息。
SHELL>> wifi erase
SHELL>> Wi-Fi credentials removed
4.3.19app_type配置应用程序类型
该套件共有五种不同的应用程序类型,具体如下表:
该套件共有五种不同的应用程序类型,具体如下表:
如上表所示,各种应用类型配置极大地影响了套件的识别速度、面部数量和安全功能。每种应用程序类型都有自己的优点和缺点。
a. Light vs. Heavy
如表上图应用配置所示,与 E-Lock(重)应用类型相比,E-Lock(轻)识别人脸的速度大约快500 毫秒。然而,重型配置能够识别大约两倍于“轻型”应用程序类型的面部数量。在门访问(轻)与门访问(重)模型中可以看到识别速度和最大面部数量之间的类似权衡。
两者之间的差异归结为用于执行推理管道识别阶段的AI模型的差异。轻模型旨在更快地识别人脸,但在可识别的面部总数方面受到更多限制,而重模型针对可识别的最大人脸数进行了优化,导致识别速度较慢轻型模型。
在重型和轻型模型配置之间进行选择归结为性能与用户数量的问题,这通常由用例决定。
b. E-Lock vs. Door Accessvs.UserID
E-Lock 和 Door Access以及应用程序类型都具有活体检测和反欺骗功能,但是,两者之间的主要区别在于最大可识别面部数量和功耗之间的权衡。
与“门禁”应用程序类型相比,等效的重/轻E-Lock应用程序可以识别的面孔要少得多,但使用E-Lock应用程序类型的优势在于E-Lock使用IR摄像头进行人脸识别到RGB相机。虽然 RGB 摄像头提供了更多的特征数据,从而允许识别更多的人脸,但 RGB 在光线不足的条件下很难响应,而红外摄像头要容易得多。因此,红外摄像机对比RGB 摄像机识别过程所需的耗电照明器 LED 的依赖较少。因此,一般来说,在电池供电的用例中推荐使用 E-Lock 应用程序类型,在这些用例中,持续运行耗电 LED 可能会造成能量问题,从而消耗电池的很大一部分电量。
与电子锁和门禁应用类型不同,UserID 应用类型没有任何活体检测/反欺骗功能。 UserID应用程序类型旨在复制不再活跃的原始 SLN-VIZN-IOT 套件。然而,与最初的 SLN-VIZN-IOT 套件不同,SLN-VIZNAS-IOT 的远程注册和低功耗模式功能在此版本的 UserID 应用程序中完全可以进行应用。
这个板未设计驱动锁输出,此点请厂家设计可以考虑优化一下
4.3.20 low_power低功耗模式
使用low_power命令可以开启套件的低功耗模式。该模式建立了以RT106F芯片为核心的低功耗模式,它在电池供电的应用中非常有用,例如电池供电的门锁。当启用低功耗模式时,套件将根据下图中的规则自动进入休眠状态:
a. Light vs. Heavy
如表上图应用配置所示,与 E-Lock(重)应用类型相比,E-Lock(轻)识别人脸的速度大约快500 毫秒。然而,重型配置能够识别大约两倍于“轻型”应用程序类型的面部数量。在门访问(轻)与门访问(重)模型中可以看到识别速度和最大面部数量之间的类似权衡。
两者之间的差异归结为用于执行推理管道识别阶段的AI模型的差异。轻模型旨在更快地识别人脸,但在可识别的面部总数方面受到更多限制,而重模型针对可识别的最大人脸数进行了优化,导致识别速度较慢轻型模型。
在重型和轻型模型配置之间进行选择归结为性能与用户数量的问题,这通常由用例决定。
b. E-Lock vs. Door Accessvs.UserID
E-Lock 和 Door Access以及应用程序类型都具有活体检测和反欺骗功能,但是,两者之间的主要区别在于最大可识别面部数量和功耗之间的权衡。
与“门禁”应用程序类型相比,等效的重/轻E-Lock应用程序可以识别的面孔要少得多,但使用E-Lock应用程序类型的优势在于E-Lock使用IR摄像头进行人脸识别到RGB相机。虽然 RGB 摄像头提供了更多的特征数据,从而允许识别更多的人脸,但 RGB 在光线不足的条件下很难响应,而红外摄像头要容易得多。因此,红外摄像机对比RGB 摄像机识别过程所需的耗电照明器 LED 的依赖较少。因此,一般来说,在电池供电的用例中推荐使用 E-Lock 应用程序类型,在这些用例中,持续运行耗电 LED 可能会造成能量问题,从而消耗电池的很大一部分电量。
与电子锁和门禁应用类型不同,UserID 应用类型没有任何活体检测/反欺骗功能。 UserID应用程序类型旨在复制不再活跃的原始 SLN-VIZN-IOT 套件。然而,与最初的 SLN-VIZN-IOT 套件不同,SLN-VIZNAS-IOT 的远程注册和低功耗模式功能在此版本的 UserID 应用程序中完全可以进行应用。
这个板未设计驱动锁输出,此点请厂家设计可以考虑优化一下
4.3.20 low_power低功耗模式
使用low_power命令可以开启套件的低功耗模式。该模式建立了以RT106F芯片为核心的低功耗模式,它在电池供电的应用中非常有用,例如电池供电的门锁。当启用低功耗模式时,套件将根据下图中的规则自动进入休眠状态:
如上所示,当套件启动并启用低功耗模式时,两个计时器将启动,用于确定套件何时应入睡。一个定时器仅在检测到面部但未识别时使用,另一个定时器用于根本没有检测到面部。
默认情况下,未检测到面部时使用的“No_Face_Timer”将导致超时并在未检测到面部 15 秒后断电。“Has_Face_Timer”用于检测到人脸但未被识别的情况,默认情况下,在帧中出现无法识别的人脸时,将在 25 秒后超时并断电。
触发注册或注销将重置“No_Face_Timer”并在注册/注销期间暂停它,以便这些进程都不会被试图进入睡眠状态的系统中断。
一旦系统进入“识别失败”状态,距离进入低功耗模式还有5秒,屏幕上方会突出显示如下“识别超时”信息,提示系统即将断电。
为了防止在电路板断电时删除注册的人脸,当启用低功耗模式时,注册的人脸会自动保存到闪存中,这与禁用低功耗模式时必须在重置时明确地将人脸保存到闪存中的方式不同。
进入休眠状态后,开发板只能被图 95 中提到的触发器唤醒:低功耗超时流程:PIR 传感器 *、按键3和 USB 电源(对套件进行电源循环)。触发唤醒将使电路板恢复正常操作。