HuskyLens人工智能摄像头

简介: HuskyLens人工智能摄像头

目录

1、模块特性


2、模块功能


3、模块调测


3.1、单对象识别


3.2、多对象识别


4、模块应用


1、模块特性

HuskyLens是一款简单易用的人工智能摄像头(视觉传感器),内置6种功能:人脸识别、物体追踪、物体识别、巡线追踪、颜色识别、标签(二维码)识别。仅需一个学习按键即可完成AI训练,摆脱繁琐的训练和复杂的视觉算法,让你更加专注于项目的构思和实现。

image.png



HuskyLens板载UART/I2C接口,可以连接到Arduino、Raspberry Pi、LattePanda、micro:bit、STM32等主流控制器,实现硬件无缝对接,直接输出识别结果给控制器,无需折腾复杂的算法,就能制作非常有创意的项目,该智能硬件模组于2020年2月正式出售(预售价329RMB),通过一段官方演示视频进一步了解该模组。


image.png


Huskylens内置了许多类型的图像处理算法,可支持拍照、运算、识别和处理为一体,最终将识别结果通过UART/I2C输出到控制器,其接口说明如下所示:


image.png


USB 接口:接上电源自动开机,断掉电源自动关机,配上上位机,可以更新固件;

传感器接口:支持 UART 或 I2C 协议,通过该接口,可连接常用的主控板,如 Arduino、树莓派、micro:bit;该接口也支持供电;

功能按键:左右拨动,切换选择内置的功能;向下短按,调出或隐藏菜单;向下长按,进入当前功能的参数设置;

学习按键:按下“学习按键”,学习指定物体。支持长按操作,长按期间,将持续学习;

屏幕:2.0 寸 IPS 显示器,实时看到各种状态下的结果,方便调试,所见即所得。

2、模块功能

Huskylens主要有六大功能,简介如下所示:

image.png



物体追踪:追踪指定的物体,可以是任何有明显轮廓的物体,甚至是各种手势;

人脸识别:侦测脸部轮廓,可同时识别多人;

物体识别:识别这是什么物体(仅限于内置的 20 种物体);

巡线追踪:识别指定的线条,并做路径规划;

颜色识别:识别指定的颜色及其位置(由于光线的变化,对于相近的颜色,摄像头有时会误识别);

标签识别:侦测二维码标签,识别出指定标签(目前摄像头不能识别复杂二维码,如微信上用的二维码)。

3、模块调测

由于Huskylens将识别的结果通过UART/I2C传输到控制器,所以我们只需要在Huskylens上训练好识别对象,解析接口协议即可,这里我使用的是UART通信协议(57600 (bps)  8N1),该模块的协议格式如下所示:

image.png

数据头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人脸识别训练操作流程如下所示:


image.png


在尚未检测到目标对象的情况下,打开串口调测助手,模组发送大量数据(均相同),选择其中一条分析。


image.png

image.png


数据头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)


训练周杰伦的人脸作为识别对象,如下所示:


image.png


此时模块发送的协议帧,可以识别出0001号ID,也就是周杰伦的人脸图像尺寸,如下所示:

image.png



数据头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、多对象识别

可以打开模块的多人脸训练模式,训练阿信为第二个识别对象,如下所示:


image.png


多人模式模块发送的协议帧中识别对象ID和单人模式有所区别,此时识别周杰伦(创建的第一个对象)。


image.png


模块发送协议如下所示:


image.png


其中0xFFFE代表多人识别中第二个对象(阿信)未识别到。


再识别阿信(创建的第二个对象),如下所示:


image.png


模块发送协议如下所示:

image.png



其中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])
        {
            //装载低位、高位识别对象ID
            data_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);
  }
}

通过设定断点可以看到每一次的上次数据和发送到串口调试助手的一致。

image.png

相关文章
|
机器学习/深度学习 人工智能 搜索推荐
人工智能第三次黄金时代,藏在全球数亿摄像头里?
人工智能历史上的三次黄金时代是什么?这次有何不同?视觉智能应用成功的关键因素有哪些?本文通过众多的成功实例和遍地黄金的视觉计算应用机会,对这些问题进行探讨,并试图讨论云上视觉智能的终局。 注:本文整理自阿里iDST科学家华先胜在全球人工智能技术大会上的演讲。
1694 0
|
10月前
|
机器学习/深度学习 存储 人工智能
AI职场突围战:夸克应用+生成式人工智能认证,驱动“打工人”核心竞争力!
在AI浪潮推动下,生成式人工智能(GAI)成为职场必备工具。文中对比了夸克、豆包、DeepSeek和元宝四大AI应用,夸克以“超级入口”定位脱颖而出。同时,GAI认证为职场人士提供系统学习平台,与夸克结合助力职业发展。文章还探讨了职场人士如何通过加强学习、关注技术趋势及培养合规意识,在AI时代把握机遇。
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能应用领域有哪些
本文全面探讨了人工智能(AI)的应用领域和技术核心,涵盖医疗、交通、金融、教育、制造、零售等多个行业,并分析了AI技术的局限性及规避策略。同时,介绍了生成式人工智能认证项目的意义与展望。尽管AI发展面临数据依赖和算法可解释性等问题,但通过优化策略和经验验证,可推动其健康发展。未来,AI将在更多领域发挥重要作用,助力社会进步。
|
机器学习/深度学习 人工智能 运维
人工智能在事件管理中的应用
人工智能在事件管理中的应用
325 21
|
机器学习/深度学习 人工智能 搜索推荐
探索人工智能在现代医疗中的革新应用
本文深入探讨了人工智能(AI)技术在医疗领域的最新进展,重点分析了AI如何通过提高诊断准确性、个性化治疗方案的制定以及优化患者管理流程来革新现代医疗。文章还讨论了AI技术面临的挑战和未来发展趋势,为读者提供了一个全面了解AI在医疗领域应用的视角。
274 11
|
机器学习/深度学习 人工智能 自然语言处理
人工智能在医疗诊断中的应用与前景####
本文深入探讨了人工智能(AI)技术在医疗诊断领域的应用现状、面临的挑战及未来发展趋势。通过分析AI如何辅助医生进行疾病诊断,提高诊断效率和准确性,以及其在个性化医疗中的潜力,文章揭示了AI技术对医疗行业变革的推动作用。同时,也指出了数据隐私、算法偏见等伦理问题,并展望了AI与人类医生协同工作的前景。 ####
915 0
|
12月前
|
机器学习/深度学习 数据采集 人工智能
人工智能在变更管理中的应用:变革的智能化之路
人工智能在变更管理中的应用:变革的智能化之路
521 13
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
机器学习/深度学习 人工智能 自然语言处理
探索未来编程:Python在人工智能领域的深度应用与前景###
本文将深入探讨Python语言在人工智能(AI)领域的广泛应用,从基础原理到前沿实践,揭示其如何成为推动AI技术创新的关键力量。通过分析Python的简洁性、灵活性以及丰富的库支持,展现其在机器学习、深度学习、自然语言处理等子领域的卓越贡献,并展望Python在未来AI发展中的核心地位与潜在变革。 ###
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能在客服领域有哪些应用?
人工智能正在彻底改变着传统客服行业,它不仅拓展了业务边界,还推动着整个行业向更高效、更人性化方向迈进。
845 7

热门文章

最新文章