2024年寒假练 - 使用Seeed XIAO ESP32S3 Sense开发板完成宠物识别系统设计
该项目使用了Seeed XIAO ESP32S3 Sense开发板、Arduino语言,实现了宠物识别的设计,它的主要功能为:基于机器学习算法,对ESP32S3上的摄像头采集到的图片进行识别,从而判断是否是预先设定的宠物。。
标签
嵌入式系统
机器学习
人工智能
ESP32S3
宠物识别
Elec
更新2024-03-28
63

项目介绍

在本次项目中,我采用了XIAO ESP32S3 Sense开发板来实现一个智能宠物识别系统。这款开发板集成了强大的AI处理能力与丰富的传感功能,使得它特别适合用于处理图像和声音数据,进而实现对家中宠物的快速准确识别。通过利用XIAO ESP32S3 Sense开发板的高分辨率摄像头,系统能够捕捉到宠物的细微特征,并通过机器学习算法,实时分析这些图像信息。通过浏览SenseCraft网站,允许宠物主人通过网页界面来查看识别结果,监控宠物的行为模式。

设计思路

该项目使用到机器学习的相关技术,所以需要进行数据收集与预处理,特征提取,模型训练,评估与优化和应用几大步骤。

  • 给XIAO ESP32S3 Sense开发板烧录拍照的程序,使其发送指令进行拍照,从而采集图像,获得原始数据。


  • 1668ba977057c5808e76017eb0ea0c4a_MD5.png
  • 使用roboflow平台对图片进行预处理,如压缩图像等,同时给图片数据打标签。然后导出数据集为链接形式,供其他程序调用。


39d9fd3a7b02468c3c98a59d17735f02_MD5.png

  • 进行模型训练,使用百度AI Stduio 中的ModelAssisant 来进行辅助开发,使用优化的YOLOv5-Tiny Model来进行训练,然后到处对应的tensorflow lite文件


087f95564f3bbaad549f512826155b04_MD5.png


  • 使用SenseCraft 将模型部署到XIAO ESP32S3上


d32f67570706abf15983353324cf97ad_MD5.png

效果展示:


16a6c5e3581797fc5d6112e8cab5dd44_MD5.png

硬件框图


7439e7e224ff8c7921afd46c853a4154_MD5.png

主要代码片段及原理说明

机器学习的原理

  • 数据收集与预处理:首先,需要收集大量的图片数据,这些数据将被用来训练模型。数据预处理包括调整图片大小、归一化、增强等,以提高模型的训练效果。
  • 特征提取:机器学习模型需要从图片中提取有用的信息(特征)。在早期的方法中,如卷积神经网络(CNN)之前,这些特征通常需要手动选择。而现代的深度学习方法,特别是CNN,能够自动从图像中学习到复杂的特征。
  • 模型训练:使用已标记的数据集训练模型。在训练过程中,模型会不断调整其内部参数,以最小化预测结果和实际标签之间的差异。这个过程通常需要大量的计算资源。
  • 评估与优化:在模型训练完成后,使用一组未在训练中使用的图片(测试集)来评估模型的性能。根据评估结果,可能需要对模型进行进一步的调整和优化。
  • 应用:一旦模型被训练并验证了其性能,它就可以被用来识别新的图片。在识别过程中,模型会分析图片的特征,并基于其训练数据来预测图片的内容或类别。

采集图像照片

采集图像的代码,使用的是官方的take_photos例程来进行修改,只修改了loop函数内的部分内容,原始的代码是每2秒自动进行拍照,并将照片储存到内存卡中,现在修改为当串口收到'1'时拍一张照片。

void loop() {

// Camera & SD available, start taking pictures
if(camera_sign && sd_sign){
// Get the current time
unsigned long now = millis();
//If it has been more than 1 minute since the last shot, take a picture and save it to the SD card
//if ((now - lastCaptureTime) >= 60000)
char ch = Serial.read();
if(ch=='1')
{
Serial.println(ch);
char filename[32];
sprintf(filename, "/image%d.jpg", imageCount);
photo_save(filename);
Serial.printf("Saved picture: %s\r\n", filename);
Serial.println("Photos will begin in one minute, please be ready.");
imageCount++;
lastCaptureTime = now;
}
}
}

模型训练

使用默认配置进行训练

!python tools/train.py \
configs/swift_yolo/swift_yolo_tiny_1xb16_300e_coco.py \
--cfg-options \
epochs=10 \
num_classes=${NUM_CLASSES} \
workers=1\
imgsz=192,192 \
data_root=${DATA_ROOT} \
load_from=https://files.seeedstudio.com/sscma/model_zoo/detection/person/person_detection.pth

模型导出和优化

将YOLOv5-Tiny PyTorch模型导出到TFLite模型

!python tools/export.py \
configs/swift_yolo/swift_yolo_tiny_1xb16_300e_coco.py \
$(cat work_dirs/swift_yolo_tiny_1xb16_300e_coco/last_checkpoint) \
--cfg-options \
data_root=${DATA_ROOT} \
num_classes=${NUM_CLASSES} \
imgsz=192,192

遇到的主要难题及解决方法

遇到的问题:对机器学习整套流程不清楚,导致学习的时候一头雾水,没有一个大致的框架。

解决方法:去百度和B站以及博客查找了一些资料,了解了机器学习的原理,并动手实践。

未来的计划

目前的项目仅做到了目标检测识别功能,后续的控制算法还没有进行研究,所以,后期会将二者融为一体进行开发,设计出更多有意思的小项目。


2024年寒假练 - 使用XIAO ESP32S3 Sense 完成宠物识别 - Hackster.io

附件下载
main (2).ipynb
模型训练代码
dataset.zip
原始数据集
take_photos.zip
串口发送字符1,即可拍照采集图片
团队介绍
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号