Sentry2视觉模块使用方法

说明

在使用Sentry2视觉模块前,请确认源师兄固件版本高于1.3.9。

查看方法:将“源师兄”配备的type-c数据线(非普通手机充电线)连接到电脑或者供电后,屏幕上将会显示版本号1.3.9,如果低于,或者没有显示任何内容,请按照提示升级固件。

概述

Sentry2AI视觉模块采用先进的64位RISC-V神经网络处理器K210开发设计,集成多种先进的离线视觉处理算法,无需网络即可识别物体,包括颜色识别、人脸识别、机器学习、色块检测、标签识别、交通标志卡片识别、数字识别、物体识别等功能,可以满足中小学人工智能教学的视觉处理需求。

可广泛应用于人工智能、创客、AIoT物联网等教学场景。

算法列表

连接方式

说明:

  1. 建议将引脚连接至扩展板。
  2. Sentry2摄像头务必连接至5V电压位置,否则会出现摄像头不稳定的问题,例如:闪动、重启等现象。
  3. 如果扩展板没有5V电压输出,可以通过摄像头一侧的Type-C供电。切记:Type-C供电时,一点要断开上图中V处连接线与扩展板的电源连接。

UI界面

Sentry2视觉传感器具有2种UI界面:运行界面、设置界面。

运行界面

  1. 算法状态: 此区域用于显示当前正在运行的算法,也就是程序中启用的算法。
  2. 图像区域: 显示摄像头的图像
  3. 显示元素: 对被测物体进行标识,包括检测框、坐标、信息
  4. 系统状态: 显示当前帧率和当前图像缩放变焦值

设置界面

  1. 菜单选项: 上下拨动摇杆来选择不同的菜单,垂直短按摇杆可以进入相应的设置页面
  2. 版本信息: 此处可以查看固件版本号和固件发布日期
  3. 简介说明: 对当前菜单进行介绍说明
  4. 控件按钮: 各种交互按键,用于进行设置操作,不同菜单下的控件是不同的,当导航键移动到某个控件上时会进行高亮显示或蓝边显示
  5. 操作提示: 当摇杆悬停到不同的控件上时,会显示相应的介绍信息或操作说明,相当于说明书的作用

设置说明

  1. 运行界面往右拨动摇杆可以进入UI设置界面,UI设置共有三个页面:算法设置、摄像头设置、硬件设置
  2. 依次往左拨动摇杆则会逐次退出页面,直至返回运行界面
  3. 算法设置: 可以开启或关闭算法,配置算法参数
  4. 摄像头设置: 用于调整摄像头的参数,可以对图像进行缩放、白平衡、饱和度、亮度、对比度等参数进行精细调节,需要具备一定的摄像头调参基础,适用于高阶玩家
  5. 硬件设置: 用于配置通讯方式、波特率、设备地址、灯光颜色、语言等参数,以适配不同的使用模式

摇杆按键功能定义

当前模式操作方式动作含义
运行模式向上拨动切换上个算法
运行模式向下拨动切换下个算法
运行模式向左拨动拍照(当插入SD时)
运行模式向右拨动进入GUI设置模式
运行模式垂直短按保存当前模型(部分算法有效)
运行模式向上长按放大镜头焦距Zoom
运行模式向下长按缩小镜头焦距Zoom
运行模式向左长按关闭/开启屏幕
运行模式垂直长按删除所有保存的模型(部分算法有效)
设置模式向上拨动切换上一个菜单或控件
设置模式向下拨动切换下一个菜单或控件
设置模式向左拨动切换上一个设置界面/返回运行模式
设置模式向右拨动切换下一个设置界面
设置模式垂直短按进入控件进行参数设置
开机时向上长按10秒重置传感器
开机时垂直长按进入固件烧录模式

提示:

拨动即为短按,长按需要至少为2秒以上的保持时间后再松开

设置通讯方式

  1. 在运行界面往右拨动3次摇杆,进入硬件设置界面。
  2. 在“输出模式”选项上,压按摇杆进入设置。
  3. 选择”I2C“模式,点击”确认“返回到菜单栏。
  4. 往下拨动摇杆,切换到”设备地址“菜单。
  5. 查看设备地址,此地址应与主控代码中的保持一致,压按摇杆可以进入设置,地址可设置为”0x60~0x63“, 需与编写程序时选择的地址一直,默认0x60即可,点击”确认“并返回。
  1. 10.往左拨动3次摇杆,返回至运行界面

设置运行界面显示元素

进行图像识别时,为了便于观察检测结果,需要对识别结果进行标识,Sentry2定义了3种标识元素:识别框、坐标、信息,可以更具情况确定是否先显示再屏幕上。

识别框: 显示被测物体的轮廓范围,为一个矩形的方框,其大小为物体的宽和高,位置由物体的中心坐标来确定。

坐标: 在图像中绘制出被测物体的水平和垂直坐标线,并显示其数值,X:水平位置,Y:垂直位置,W:物体宽度,H:物体高度

信息: 显示物体的分类标签、名称内容等信息。

提示:

  1. 当进行多结果检测时,绘制太多的元素可能会降低图像检测帧率,可适当关闭部分元素绘制功能;
  2. 有些算法并不具备所有的绘制元素,比如“线条检测”不会绘制坐标线;
  3. 当图像中没有显示任何检测结果时,可能是显示功能全部被关闭了,需要打开相关的功能即可。

设置LED灯光颜色

进行图像识别时,可以通过传感器前面的LED灯光来指示检测结果,每检测一帧图像,会闪烁一次灯光,灯光颜色和亮度可以进行自定义设置。

用户可以分别设置“检测到”物体时的灯光颜色和“未检测到”时的灯光颜色,每按一次控件,将会改变一个颜色,切换顺序如下:

其中,黑色代表关闭灯光

当“检测到”和“未检测到”颜色相同时,LED灯光将保持常亮,不再闪烁。

亮度调节范围为0~15,其中0为关闭灯光,15为最亮,如果只作为一般性指示功能,亮度设为1或2即可

关闭灯光

在某些情况下,灯光可能会对图像识别产生干扰(如颜色类算法,近距离物体识别时,等),此时需要关闭灯光,有两种方式可以关闭的灯光:

1.将“检测到”和“未检测到”设置为黑色;

2..将亮度设置为0。

补光灯功能

当环境较暗时,或者处于逆光环境情况下,需要开启补光灯来照明,可以按照下面的方式设置:

1.将“检测到”和“未检测到”都设为白色,此时LED灯光将保持白色常亮状态,不再闪烁;

2.将亮度提高,比如设为最大15,此时发光最亮。

设置坐标系

Sentry2支持2种坐标系:绝对值坐标系、百分比坐标系。

绝对值坐标系: 返回图像中的实际坐标数据,与图像分辨率一致,水平方向范围“0~319”,垂直方向范围“0~239”,图像中心点坐标为(160,120),该模式具有更高的精确度。

百分比坐标系: 将实际检测到的坐标结果量化至整幅图像“0~100”的范围区间内,返回其相对值坐标,水平X方向和垂直Y方向范围“0~100”,图像中心点坐标为(50,50)。

摄像头设置

数码变焦
  1. 当需要看清远处的物体时,可以对图像进行放大或缩小,支持1~5档调节;
  2. 增大缩放值会让物体放大,但视野会变小,看到的东西会变少;
  3. 减小缩放值会让物体缩小,但视野会变大,可以看到更多的东西;
  4. 除了UI控件可以设置缩放值外,还支持导航快捷键来设置
  5. 向上长按:放大
  6. 向下长按:缩小
白平衡

在不同光照下(白光和黄光),白色会有一定的偏差,从而导致其他颜色的正常显示,此时需要设置白平衡来进行调节,一共有4种模式:自动、锁定、白光、黄光

自动: 此为默认模式,适用于通用场景

锁定: 当图像中存在大面积单色背景时,比如近距离识别颜色时,会导致图像发生偏色问题,将导致颜色识别出错,因此在识别之前需要进行白平衡的锁定,避免颜色自动调节,方法如下:

1.在相同的灯光环境下,将摄像头面向白纸,保持约20cm的距离;

2.进入“白平衡”设置页面,选择“锁定”模式;

3.点击“确认”,此时摄像头会记录下当前参数值,不再自动调整;

4.返回运行界面

白光: 白色灯光环境下使用

黄光: 黄色灯光环境下使用

饱和度

增大饱和度会让色彩变得鲜艳,色彩会被强化与突出,进行颜色检测和识别时,可以适当增大饱和度,减小饱和度会让色彩变得黯淡,很低时则类似于黑白画面。

亮度

图像过暗时可以适当提高亮度,但如果在较亮的环境下提高,则图像会变得灰白,如蒙了一层雾气一般,当面对电脑屏幕等光源时,可以适当减小亮度。

对比度

增大对比度会让相邻有色差的地方区分度更高,当进行黑白线条或二维码图案识别时,可以适当提高对比度,减小对比度会让图像看起来黯淡。

锐化

增大锐化会让边缘轮廓更清晰,细节更明显,但过高会产生噪点,减小锐化图像会变得模糊。

曝光

光线较强导致图像曝光时可以减小曝光值,反之如果环境较暗则可以增大曝光值。

旋转镜头

开启后镜头画面将旋转180度。

常用编程代码块说明

仅介绍常用代码块的功能及使用方法。

初始化

首先初始化摄像头,选择对应的I2C地址,与设置通。

启动算法

设定采集点

采集范围指的是有效的区域。

索引:指的是识别后,采集到内容的序号,获取数据时需要使用此序号,不能重复。

也可以通过系统设置,而不采用代码块设置采集点。

以颜色识别为例,通过菜单,选择颜色识别->参数,选择网格数和大小,每一个网格代码一个检测位置,每个检测位置称为一个识别区域,也是一个索引,从左到右、从上到下从1开始计数,其位置和大小由用户进行设置,最多25组识别区域,返回该区域的颜色标签信息和实际的红R、绿G、蓝B数值。

设置采集点参数

用户需要指定识别区域的坐标和大小,最多可设置25个识别区域,如果没有指定,则默认为图像中心点。分别为横向坐标、纵向坐标、宽度、高度、空。

具体请参考“算法”中每个算法的配置参数。

检测到的数量

检测到的数量指的是识别到结果总数量,此代码块通常放置于重复执行中。

检测到的结果

指的是检测到数量中每个索引的结果,如果检测到3个有效位置,索引分别为1、2、3,可以选择对应索引返回的结果类型,包括横向坐标、纵向坐标、宽度、高度、标签,其中不同的算法,标签结果是不一样的。具体参考算法。

其它代码块的使用,请参考算法。

算法

颜色识别

用户指定一个或多个识别区域,识别该区域的颜色分类。每个检测位置称为一个识别区域,其位置和大小由用户进行设置,最多25组识别区域,返回该区域的颜色标签信息和实际的红R、绿G、蓝B数值。

注意: 由于紫色、青色(蓝绿色)、橙色、灰色等,相对来说容易造成误报,因此这几个颜色部分区间被划分为临近颜色的标签,部分被划分为未知颜色,如果用户确实有这几种颜色的使用需求,可以通过返回参数的R、G、B实际值自行计算与判断

配置参数

用户需要指定识别区域的坐标和大小,最多可设置25个识别区域,如果没有指定,则默认为图像中心点当通过主控设置寄存器参数时,每个识别区域都需要设置以下参数:

参数含义
1识别区域中心x坐标
2识别区域中心y坐标
3识别区域宽度w
4识别区域高度h
5

在UI设置页面中,有几种预置的识别区域网格分布形式和识别区域大小:

网格(水平方向数量 x 垂直方向数量):1×1、2×2、3×3、4×4、5×5、1×10、2×10、6×1、6×2

识别区域大小(水平方向像素 x 垂直方向像素):2×2、4×4、8×8、16×16、32×32

注意: 百分比坐标系下想表示一个正方形,其宽w和高h是不相等的,而是符合3:4的关系。比如,如果正方形的宽w为12%,那么其对应的高度h应该为12/3×4=16%

百分比坐标系下,预设的识别区域大小(水平方向百分比 x 垂直方向百分比):1×1、2×3、3×4、6×8、9×12

返回结果

识别到颜色后,UI界面上的识别区域将会变为其对应颜色的方框,如果是未知颜色,则会显示一个四角框

当通过主控读取寄存器时,将会返回以下的数据:

颜色识别每个采集点(索引)返回的结果

结果含义
1R,红色值,范围 0~255
2G,绿色值,范围 0~255
3B,蓝色值,范围 0~255
4
5颜色分类标签

颜色识别标签说明

分类标签英文标识中文含义分类标签英文标识中文含义
1Black黑色2White白色
3Red红色4Green绿色
5Blue蓝色6Yellow黄色
0Unknown未知
使用技巧
  1. 由于是对像素进行统计处理,当识别区域较多且较大时,处理速度会相应的变慢,反之则会比较快速。
  2. 当识别区域窗口较小时(比如2×2),可以识别较小的色块,处理速度快,但统计样本太少,容易被干扰,可信度较低,适合于背景单一可控的环境。
  3. 当识别区域窗口较大时(比如32×32),统计样本多,即便出现若干的杂色也会被滤除,具有较高的可信度,但处理速度会变慢,当识别区域处于2种颜色的边界时,颜色可能会经常跳变。
  4. 当画面存在偏色时,需要锁定白平衡功能
色块检测-Blob

用户指定检测一个或多个颜色,判断图像中是否有该颜色的色块,返回其坐标和大小,支持多颜色多色块检测,颜色分类标签与颜色识别中的定义相同。

配置参数

用户需要指定待检测的颜色标签,最多可同时开启全部6种颜色检测,但速度会有所下降。用户还可以通过设置色块的最小宽度w和高度h来过滤那些小于该值的色块,以减少误报。

当通过主控设置寄存器时,有以下参数需要设置:

参数含义
1
2
3有效色块最小宽度w
4有效色块最小高度h
5待检测的颜色分类标签
色块检测设置

在UI界面中,有几种预置的参数可以使用:

算法性能

根据不同的应用需求来选择合适能算法性能,有3个选项可以设置,分别为“灵敏”、“均衡”、“准确”

在灵敏模式下识别速度快,帧率高。准确模式下可以检测远处的色块,但速度会降低。默认为均衡性能

同时检测的最大数量:

单个颜色的最大检测数量支持1~5个的输出

当设置为1时,只返回一个最优结果,如果图像中有多个色块,则返回最大的那个,如果大小相近,则优先返回左上角的那个

当设置大于1时,返回色块的数量不会超过这个值。

最小色块的区域大小:

如果背景中存在相同颜色的小色块,可以通过合理的设置最小值实现过滤功能

绝对值坐标系下的预设值为:2×2、4×4、8×8、16×16、32×32、64×64、128×128像素

百分比坐标系下的预设值为:1×1、2×3、3×4、6×8、9×12、21×28、42×56 %

待检测的颜色:

以按键形式提供用户选择,开启某个颜色后会显示一个小眼睛图标,未开启的颜色则会显示一个带斜杠的眼睛图标,可以同时开启一个或多种颜色

返回结果


识别到指定色块后会在UI界面上进行标识,显示其位置、大小、分类标签、名称等信息

当通过主控读取寄存器时,将会返回以下的数据:

结果含义
1色块中心x坐标
2色块中心y坐标
3色块宽度w
4色块高度h
5颜色分类标签
使用技巧
  1. 当确定需要跟踪一个物体时,比如检测白色的道路或是跟踪小球,可以将色块数量设置为1,可以提高速度,减少误报
  2. 采用较小的识别区域并使用准确性能模式,可以看到更远处的物体
  3. 识别大面积的色块时,运行帧率会明显下降,此时可以用灵敏模式
  4. 当画面存在偏色时,需要锁定白平衡功能
标签识别-Apriltag

判断图像中是否有Apriltag标签图案,目前支持16H5,25H9,36H11的编码形式,算法运行时需要先指定用哪一种解码方式,不同的编码形式不可以同时检测,但同一种编码可同时检测25个标签。

默认为使用36H11编码,可通过设置配置参数。

apriltag标签为一组已经定义好的黑白方块图案,不同的编码形式使用的方块数量是不同的。每个图案都有一个预定义的分类标签值,识别后会返回该值。

Apriltag图案下载:https://github.com/AprilRobotics/apriltag-imgs/tree/master

配置参数

UI界面中可以设置算法性能和编码形式

算法性能:

根据不同的应用需求来选择合适能算法性能,有3个选项可以设置,分别为“灵敏”、“均衡”、“准确”

在灵敏模式下识别速度快,帧率高。准确模式下可以检测远处的标签,但速度会降低。默认为均衡性能

编码形式:

当点击按钮时,会循环切换“16H5”,“25H9”,“36H11”三种编码模式,切换后需要重启算法,下次启动时生效。

返回结果
结果含义
1标签中心x坐标
2标签中心y坐标
3标签宽度w
4标签高度h
5标签编号
使用技巧
  • 所识别到的标签宽度和高度具有较稳定的输出,可以利用这一点进行距离判断,标签旋转后不会改变其大小,但倾斜时可能会有影响
  • 当需要识别多个标签时,可以关闭坐标线的显示,看起来比较简洁
  • 标签越大,识别的距离就越远
人脸识别

检测图像中是否含有人脸,可以通过按键对人脸进行学习训练,当再次检测到该人脸时,返回一个分类标签用于区分是哪个人脸。

配置参数

训练新的人脸:

在运行界面可以训练新的人脸,操作方法如下:

新训练的人脸会自动分配标签值,分配原则是:选择当前可用ID号中最小的那个序号

删除所有人脸:

在运行界面中,垂直长按摇杆2秒以上,可以删除所有模型数据

当通过主控设置寄存器时,可以将参数5写入0来删除对应的模型文件。

在UI界面中,可以对已训练的模型进行重命名或删除操作,操作方法可参考:机器学习。

注意:设置名称只用于帮助用户记忆和理解,但主控设备并不能读取该名称

返回结果

该算法支持人脸检测(未训练的人脸)和人脸识别(已训练的人脸)同时运行,检测到未训练的人脸时会显示标签为0,名称为“新人脸”,当检测到已训练的人脸时,会显示相应的标签和存储的名称

特殊的,如果检测到戴口罩的新人脸,会显示“新人脸(口罩)”

当通过主控读取寄存器时,将会返回以下的数据:

结果含义
1人脸中心x坐标
2人脸中心y坐标
3人脸宽度w
4人脸高度h
5人脸分类标签
机器学习

可以对任意物体进行离线学习并识别,目前支持存储10个物体,用户可以对已训练的模型进行重命名,删除操作。

配置参数

训练新的物体:

在运行界面可以训练新的物体,操作方法如下:

新训练物体会自动分配标签值,分配原则是:选择当前可用ID号中最小的那个序号

删除所有模型:

在运行界面中,垂直长按摇杆2秒以上,可以删除所有模型数据

当通过主控设置寄存器时,可以将参数5写入0来删除对应的模型文件:

参数含义
1
2
3
4
5如果当前Param-ID已经存在,写入0后可以删除对应的模型数据

在UI界面中,可以对已训练的模型进行重命名或删除操作

对模型重命名:

在UI界面中可以对已训练的物体进行重命名,操作方法如下:

注意:只支持英文的命名方式,不支持其他语言

注意:名称最大支持32个字符,建议不要太长

删除单个模型:

在UI界面中可以删除单个模型数据,操作方法如下:

返回结果

该算法只支持判断被训练物体是否存在,而不判断其坐标方位等信息,所以识别框为一个固定输出值

当通过主控读取寄存器时,将会返回以下的数据:

结果含义
1固定值,160
2固定值,120
3固定值,224
4固定值,224
5训练物体的ID号
卡片识别

识别图像中是否有指定的卡片图案,返回其卡片坐标、大小、分类标签等信息。包括交通标志类,图形符号类,数字类,其分类标签见下表

交通标志

分类标签英文标识中文含义分类标签英文标识中文含义
1Forward前进2Left左转
3Right右转4Turn Around掉头
5Park停车6Green绿灯
7Red红灯8Speed 40限速40
9Speed 60限速6010Speed 80限速80

图形符号

分类标签英文标识中文含义分类标签英文标识中文含义
11Check对号12Cross叉号
13Circle圆形14Square方形
15Triangle三角形16Plus加号
17Minus减号18Divide除号
19Equal等于号

数字

分类标签英文标识中文含义分类标签英文标识中文含义
20Num 0数字021Num 1数字1
22Num 2数字223Num 3数字3
24Num 4数字425Num 5数字5
26Num 6数字627Num 7数字7
28Num 8数字829Num 9数字9
返回结果

该算法支持多张卡片同时识别,卡片在30度以内的旋转仍然可以识别,角度旋转过大则无法识别

当通过主控读取寄存器时,将会返回以下的数据:

结果含义
1卡片中心x坐标
2卡片中心y坐标
3卡片宽度w
4卡片高度h
5卡片分类标签
使用技巧
  • 该算法可以检测到远距离的卡片,但此时并不是用户所期望的检测位置,此时可以通过判断“卡片宽度”来排除那些远距离的卡片,比如只有当卡片宽度>50%时,才会触发接下来的动作行为
  • 图像中有多个卡片时,比如拍成一排的卡片,其检测输出顺序以卡片中心点为基准,从左上角(0,0)点逐行扫描,自上而下,从左到右,的顺序输出
20类物体识别

识别常见的20类物体,返回他们的坐标信息和分类标签,详见下表。

图形符号类

分类标签英文标识中文含义分类标签英文标识中文含义
1Airplane飞机2Bicycle自行车
3Bird4Boat
5Bottle瓶子6Bus公交车
7Car小汽车8Cat
9Chair椅子10Cow
11DiningTable餐桌12Dog
13Horse14Motorbike摩托车
15Person16PottedPlant盆栽植物
17Sheep18Sofa沙发
19Train火车20Tvmonitor电视
配置参数

UI界面中可以设置算法性能

算法性能:

根据不同的应用需求来选择合适能算法性能,有3个选项可以设置,分别为“灵敏”、“均衡”、“准确”

灵敏模式下会更容易识别到物体,但可能误报较高,准确模式下会相对减少误报,默认为均衡模式

返回结果

当通过主控读取寄存器时,将会返回以下的数据:

结果含义
1物体中心x坐标
2物体中心y坐标
3物体宽度w
4物体高度h
5物体分类标签
使用技巧
  1. 图像清晰度会较为明显的影响到识别效果,如果图案太小,摄像头无法清晰对焦到图案上,屏幕中图像看起来比较模糊,那么识别效果会变差,可以使用较大的图片
  2. 如果直接对电脑屏幕上的图案进行识别,可以适当调低电脑屏幕的亮度,避免过曝。
运动物体检测

在摄像头静止状态下,通过对比相邻帧的像素差异,来判断图像中是否有发生变化的区域,如果有则认为该区域有运动物体,返回这个区域的坐标信息。 该算法目前只能返回一个检测结果。

返回结果

当通过主控读取寄存器时,将会返回以下的数据:

结果含义
1运动区域中心x坐标
2运动区域中心y坐标
3运动区域宽度w
4运动区域高度h
5

示例代码

检测第一个检测点的颜色标签。代码如下:

随着摄像头的移动,当第一个检测点落到不同的颜色上,会显示不同的数值,具体参考算法中的“颜色识别”。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动到顶部