HuskyLens人工智能摄像头
目录
1、模块特性
2、模块功能
3、模块调测
3.1、单对象识别
3.2、多对象识别
4、模块应用
1、模块特性
HuskyLens是一款简单易用的人工智能摄像头(视觉传感器),内置6种功能:人脸识别、物体追踪、物体识别、巡线追踪、颜色识别、标签(二维码)识别。仅需一个学习按键即可完成AI训练,摆脱繁琐的训练和复杂的视觉算法,让你更加专注于项目的构思和实现。
HuskyLens板载UART/I2C接口,可以连接到Arduino、Raspberry Pi、LattePanda、micro:bit、STM32等主流控制器,实现硬件无缝对接,直接输出识别结果给控制器,无需折腾复杂的算法,就能制作非常有创意的项目,该智能硬件模组于2020年2月正式出售(预售价329RMB),通过一段官方演示视频进一步了解该模组。
Huskylens内置了许多类型的图像处理算法,可支持拍照、运算、识别和处理为一体,最终将识别结果通过UART/I2C输出到控制器,其接口说明如下所示:
- USB 接口:接上电源自动开机,断掉电源自动关机,配上上位机,可以更新固件;
- 传感器接口:支持 UART 或 I2C 协议,通过该接口,可连接常用的主控板,如 Arduino、树莓派、micro:bit;该接口也支持供电;
- 功能按键:左右拨动,切换选择内置的功能;向下短按,调出或隐藏菜单;向下长按,进入当前功能的参数设置;
- 学习按键:按下“学习按键”,学习指定物体。支持长按操作,长按期间,将持续学习;
- 屏幕:2.0 寸 IPS 显示器,实时看到各种状态下的结果,方便调试,所见即所得。
2、模块功能
Huskylens主要有六大功能,简介如下所示:
- 物体追踪:追踪指定的物体,可以是任何有明显轮廓的物体,甚至是各种手势;
- 人脸识别:侦测脸部轮廓,可同时识别多人;
- 物体识别:识别这是什么物体(仅限于内置的 20 种物体);
- 巡线追踪:识别指定的线条,并做路径规划;
- 颜色识别:识别指定的颜色及其位置(由于光线的变化,对于相近的颜色,摄像头有时会误识别);
- 标签识别:侦测二维码标签,识别出指定标签(目前摄像头不能识别复杂二维码,如微信上用的二维码)。
3、模块调测
由于Huskylens将识别的结果通过UART/I2C传输到控制器,所以我们只需要在Huskylens上训练好识别对象,解析接口协议即可,这里我使用的是UART通信协议(57600 (bps) 8N1),该模块的协议格式如下所示:
数据头1 | 数据头2 | 地址 | 数据长度 | 命令 | 数据 | 累加和校验 |
0x55 | 0xAA | 1 Byte | 1Byte | 1Byte |
Data 1~Data n (10Byte) |
1Byte |
协议解析如下:
数据头1和数据头2以0x55和0xAA固定格式开头,因为0x55二进制是0101 0101,0xAA二进制是1010 1010,在通讯编码原理中,应该尽可能避免过多的重复0或1,因为当你的传输变成一个长0/1时,一个脉冲干扰就会将你的数据截断,整加误码的机会。 若你的通讯机不能正确接受10101010或01010101,那么你的线路等肯定出现问题。 这个只是一个快速判断线路状态的一个手段,在做内现存测试的时候也经常使用这两个数据字段,也是同样的道理;
地址占用一个字节,本模块默认地址是0x11;
数据长度占用一个字节,指数据的长度,注意不是整个数据帧的长度;
命令ID占用一个字节;
数据长度为10位,数据信息为检测到对象的像素尺寸和对象属性,顺序为:检测对象X点中心低位字节、检测对象X点中心高位字节、检测对象Y点中心低位字节、检测对象Y点中心高位字节、检测对象宽度低位字节、检测对象宽度高位字节、检测对象高度低位字节、检测对象高度高位字节,剩余两个字节为检测到的对象;
8位累加和校验,不进位,例如:0x55+0xAA+0x11+0x0A+0x10+0x2C+0x01+0xC8+0x00+0x0A+0x00+0x14+0x00+0x01
+0x00=0x23E,则校验位为0x3E。
3.1、单对象识别
Huskylens无需请求指令,自动发送毫秒级的设备状态数据帧,打开串口调测助手即可直接分析,下面以人脸识别功能为例,分析协议帧结构。
这里选取了周杰伦的图像作为识别对象, Huskylens人脸识别训练操作流程如下所示:
在尚未检测到目标对象的情况下,打开串口调测助手,模组发送大量数据(均相同),选择其中一条分析。
数据头1 | 数据头2 | 地址 | 数据长度 | 命令 | 数据 | 累加和校验 |
0x55 | 0xAA | 0x11 |
0x0A (10 Byte) |
0x10 |
0x00 0x00 0x00 0x00 0x01 0x00 0x01 0x00 (8 Byte对象尺寸大小数据) 0x00 0x00 (2 Byte目标对象标识,此时代表无对象) |
55+ AA+11+0A+10+00+00+00+00+01+ 00+01+00+00+00=0x12C (取低位为0x2C) |
训练周杰伦的人脸作为识别对象,如下所示:
此时模块发送的协议帧,可以识别出0001号ID,也就是周杰伦的人脸图像尺寸,如下所示:
数据头1 | 数据头2 | 地址 | 数据长度 | 命令 | 数据 | 累加和校验 |
0x55 | 0xAA | 0x11 |
0x0A (10 Byte) |
0x10 |
0x9C 0x00 0x88 0x00 0x53 0x00 0x70 0x00 (8 Byte对象尺寸大小数据) 0x00 0x01 (创建的第一个人脸ID) |
55+ AA+11+0A+10+9C+00+88+00+53+ 00+70+00+00+01=0x312 (取低位为0x12) |
3.2、多对象识别
可以打开模块的多人脸训练模式,训练阿信为第二个识别对象,如下所示:
多人模式模块发送的协议帧中识别对象ID和单人模式有所区别,此时识别周杰伦(创建的第一个对象)。
模块发送协议如下所示:
其中0xFFFE代表多人识别中第二个对象(阿信)未识别到。
再识别阿信(创建的第二个对象),如下所示:
模块发送协议如下所示:
其中0xFFFF代表多人识别中第一个对象(周杰伦)未识别到。
HuskyLens人工智能摄像头的应用就简要讲解人脸识别的功能,其他功能都是大同小异,小伙伴们了解协议帧就可以轻松应对。
4、模块应用
由于目前手头上只有STM32系列开发板,遂基于STM32+HuskyLens实现人脸识别开关灯小案例,实现代码如下所示,主要是拆解、校验协议(演示视频)。
uint8_t UART2_ReceivedChar=0,check = 0;
uint8_t USART2_RxData[16];
uint32_t USART2_RX_DATA_BUF_CNT=0;
int8_t USART2_RX_Flag=0;
uint16_t data_id=0;
void USART2_IRQHandler(void)
{//UART2接收数据if(LL_USART_IsActiveFlag_RXNE(USART2)){UART2_ReceivedChar = 0;//读取接收寄存器,读数据会清中断UART2_ReceivedChar = LL_USART_ReceiveData8(USART2);//判断若以0x55开头,接收16个字符if(UART2_ReceivedChar==0x55){USART2_RX_Flag=1;}if(USART2_RX_Flag==1&&USART2_RX_DATA_BUF_CNT<16){USART2_RxData[USART2_RX_DATA_BUF_CNT++] = UART2_ReceivedChar;}//接收16个字符后进行处理else{//因为模块发送速度过快,需要校验if(USART2_RxData[0]==0x55&&USART2_RxData[1]==0xAA&&USART2_RxData[2]==0x11){//进行累加和校验,对比发送和接收的是否一致for(int8_t i=0;i<15;i++){LL_mDelay(10);check+=USART2_RxData[i];}LL_mDelay(200);//若接收正确,处理if(check==USART2_RxData[15]){//装载低位、高位识别对象IDdata_id=USART2_RxData[14];data_id<<=8;data_id|=USART2_RxData[13];//未检测到周杰伦if(data_id==0xFFFF){ //LED灯灭LL_GPIO_ResetOutputPin(GPIOB, LL_GPIO_PIN_9);}//未检测到阿信else if(data_id==0xFFFE){//LED灯亮LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_9);}}}//清除标志USART2_RX_Flag=0;USART2_RX_DATA_BUF_CNT=0;check=0;}//清除溢出标志LL_USART_ClearFlag_ORE(USART2);}
}
通过设定断点可以看到每一次的上次数据和发送到串口调试助手的一致。
HuskyLens人工智能摄像头相关推荐
- esp32 接摄像头_撸狗初体验 | 手把手教你上手 HuskyLens 哈士奇人工智能摄像头
直接上视频听我 BB: 下面开始编故事-- 某个周末,走在去加班的路上,脚底突然被某个东西咯噔一下,抬脚一看,竟然是-- 捡起来一看-- 哈士奇!哈士奇!哈士奇! 竟然是 DF 还在预售的 Husky ...
- 007 人工智能摄像头之二哈识图转接板模块
007 人工智能摄像头之二哈识图转接板模块 01 功能作用 将二哈识图的功能完全移植到EV3上.EV3在人工智能上的传感器很欠缺,而二哈识图的人工智能功能很完善,这完全弥补了EV3人工智能方面的缺 ...
- 二自由度云台扫描算法_基于HuskyLens人脸识别的二自由度自动跟踪云台
"看什么看?" "就盯着你看!" --基于HuskyLens人脸识别的二自由度自动跟踪云台 试用群里的老师们先后放出了各色利用二哈人脸识别功能的案例,实验对象从 ...
- 物联网--二哈实现人脸识别
一.实验目的及要求 [一]实现人脸识别 [二]实现云数据库应用 二.实验原理与内容 基于二哈实现多人人脸学习和识别 基于TinywebDB实现云数据库应用 基于EasyIoT实现mqtt数据上传. 三 ...
- 科普介绍 | 想要开展人工智能教育?一文了解创客教育中常见的视觉摄像头
本文首发于<爱上机器人>杂志 2020 年 7 月刊(第 4 期),欢迎大家购买. <爱上机器人>杂志是由中国科学技术协会主管,中国通信学会.人民邮电出版社主办,中国工信出版集 ...
- 人工智能AI趣闻:光头请戴假发!英球赛AI摄像头只对准边裁光头,球迷错过进球,AI:我眼里只有他
[新智元导读]又是一场被AI毁掉的比赛!苏格兰球队因弗内斯近日引入全新AI智能转播系统,号称可以自动追踪足球,原本是为了解放摄像师.但最近的一场比赛中,系统似乎错把边裁的光头当成了足球-每次人工修正后 ...
- 基于Mind+、MOTT实现人工智能
@基于Mind+.MOTT实现人工智能 人工智能实验 一.实验目的及要求 [一]实现人脸识别 [二]实现云数据库应用 [三]实现测温数据mqtt上传至物联网云平台 二.实验原理与内容 基于二哈实现多人 ...
- 垃圾自动分拣系统python代码_[HuskyLens]掌控垃圾分拣系统
360截图20200119220505036_副本.jpg (139.65 KB, 下载次数: 0) 2020-1-19 22:08 上传 2019年7月1日,被称为"史上最严"垃 ...
- 看后视镜扣钱?AI 摄像头监控下的货车司机
生活在科技领先时代的我们,每天无不被算法支配着,从衣食住行到工作中的决策参考.以前在电影中见到的AIer控制人类的场景,越来越现实化. 在AI算法不断优化地前提下,有些企业直接通过AI来给员工打绩效, ...
最新文章
- php取数组中连续数,PHP实现求连续子数组最大和问题2种解决方法
- unicode字符显示方框_【硬核】韦东山:字符的编码方式
- 3.C#知识点:is和as
- 大数据泄露你的行踪?隐私不再是隐私
- 好用的vp n推荐2020_哪个牌子的沐浴露好,2020年最新沐浴露选购测评,好用好闻易清洗沐浴露品牌推荐...
- Axure移动端app抽奖转盘+电商圆盘抽奖+商品抽奖+年会抽奖+抽奖动态+Axure通用抽奖转盘组件原型+九宫格方形随机抽奖原型组件+运营活动抽奖转盘
- 具体数学-第7课(取整基础)
- BZOJ5074 小B的数字
- SQL——连接查询、聚合函数、开窗函数、分组功能、联合查询、子查询
- Windows server 2008 R2 SP1 IE8升级IE11(离线安装)
- Powerbuilder 12.5 下载地址
- 安卓怎么搭建开发环境 安卓开发环境搭建教程
- 解决win10学习汇编工具的烦恼——汇编masm的下载和使用(包含可用下载连接)
- 稚晖君软件硬件开发环境总结
- 80后小学计算机课上的游戏,80后最值得回味的15个经典课间游戏(组图)
- 11408考研复习规划
- 手机中.android_secure文件夹中的文件能删除吗,安卓手机里的各“文件夹”都是什么?能删吗?-手机相册在哪个文件夹...
- Visio画拓扑图随记
- cad计算机快捷键设置,小U讲解完整版电脑CAD快捷键大全
- php 事件驱动,详述PHP事件驱动问题的理解
热门文章
- 三菱伺服电机编码器故障判断方法
- How to set edit and display rights for users by each feld or view of the list
- 格式化时间戳(时间戳转化为日期时间格式)
- win10清理C盘好用的办法
- 基于Photoshop CC2018讲解PS最新入门到精通
- 移动手机用户目录下的证书至根目录下
- 【2021版】吐血整理_专升本计算机文化基础—Word2010
- java获取系统时间差_java获取系统时间与实际相差8小时的解决方法
- PCB板上的白色残留物怎么来的呢?
- .net 根据接口获取数据并序列化