如何使用UNIHIKER K10进行简单的物体识别
物体识别已成为人工智能和嵌入式视觉系统中最受欢迎的应用之一。目前最常用的方法依赖于TensorFlow、Edge Impulse、OpenCV、云端AI服务或大型预训练神经网络模型等机器学习框架。尽管这些方法能提供令人印象深刻的结果,但通常需要大量的设置、模型训练、数据集准备、云端处理以及额外的软件工具。本项目的目标是探索一种更简单、更快捷的物体识别方法,利用UNIHIKER K10开发板实现,无需使用TensorFlow、互联网连接、云服务或外部AI平台。
UNIHIKER K10是一款基于ESP32-S3的紧凑型开发平台,将多个实用组件集成到单一设备中:
- ESP32-S3微控制器
- 内置彩色显示屏
- 内置摄像头
- 音频扬声器与麦克风
- Wi-Fi和蓝牙连接功能
- 多种AI及多媒体功能
以及大容量PSRAM内存,用于图像处理。
这些特性使K10成为进行计算机视觉、人工智能、机器人和教育项目实验的理想平台。
本项目由PCBWay赞助。别忘了访问PCBWay开源社区,在那里您可以找到无数分类清晰的实用项目。选择您感兴趣的领域,就能发现大量免费且有用的项目资源。您还可以在此下载Gerber文件,或为未来的一些项目订购现成的PCB板。PCBWay提供创建项目所需的一切服务,并以最优价格满足您的需求。
在开发最终的物体识别系统之前,我进行了多项初步实验。第一个实验是一个简单的颜色识别项目:通过摄像头获取图像,软件分析选定感兴趣区域内的主导颜色,并识别出红色、绿色、蓝色、黄色等基本颜色。
第二个实验使用了UNIHIKER K10自带的AI库,展示了K10利用集成摄像头和显示屏实现实时视觉任务的能力。尽管这些工厂级AI示例具有实用价值,但本项目的目标是开发一种完全不同的物体识别方法,能够由用户直接进行训练。
需要说明的是,本项目中所有示例的Arduino代码均在本文末尾提供。
现在让我们回到最初的想法。最终项目介绍了一种非常简单却出人意料有效的物体识别技术。系统无需使用神经网络或机器学习模型,而是通过一个简短的训练过程为每个物体生成视觉特征。摄像头图像被分割成多个区域,计算每个区域的平均亮度,这些数值构成物体的紧凑数字表示,可视为一种视觉指纹。当新的物体被放置在摄像头前时,系统会:
捕捉图像。
•生成新的视觉指纹。
•将其与之前存储的指纹进行比较。
•选择最接近的匹配项。
•并显示检测到的对象名称。
该方法极其轻量,可完全在ESP32-S3处理器上运行。
该项目最有趣的特点之一是训练过程。与传统机器学习系统需要数百甚至数千张图像不同,此方法每个对象仅需一个训练样本即可。用户将物体放在摄像头前并发送训练指令。每个物体都会被存储为设备内存中的参考图案,随后这些参考数据会被保存到内部闪存中,使系统即使断电后仍能记住所有已训练的对象。训练完成后,设备即可立即用于识别。
为了提高检测效果,我将元件放置在白色背景上。代码中每个电子元件对应一个字母:
e = 空(在本例中为白色背景)
c = 电容器
b = 电池
r = 电阻
I = 微控制器芯片
t = 晶体管
s = STM32微控制器板
现在在串行监视器中,我们输入与记录元素相对应的字母,并按回车键发送指令。对于每个电子元件,我们重复此操作。
为了演示目的,使用了多个电子元件:训练完成后,将物体逐一呈现在摄像头前。软件会持续将实时图像与所有存储的参考图像进行比对,并在屏幕上显示最可能匹配的结果。接下来,我将尝试检测之前训练过的物体。
尽管该方法设计得十分简单,但当物体处于相似的光照条件下,并且训练时采用的大致相同朝向时,其结果却出人意料地可靠。这种方法的优点包括:
•开发极其快速
•完全离线运行
•内存需求极低
•适合初学者
•以及即时训练
最后简要总结:本项目表明,实际的物体识别并不总是需要复杂的机器学习框架。仅使用UNIHIKER K10内置的摄像头、显示屏和处理能力,即可构建一个简单、快速且高效的物体识别系统,并可由用户直接进行训练。对于爱好者、创客、教育工作者和初学者而言,这种方法为机器视觉提供了极佳的入门途径,同时避免了现代人工智能开发流程中的诸多复杂性。
最终得到的是一种轻量级、完全离线、易于理解的物体识别系统,可在极短时间内实现部署,并可扩展应用于无数实际场景。
本文编译自hackster.io





