内容介绍
内容介绍
项目介绍
在本次项目中,我采用了XIAO ESP32S3 Sense开发板来实现一个智能宠物识别系统。这款开发板集成了强大的AI处理能力与丰富的传感功能,使得它特别适合用于处理图像和声音数据,进而实现对家中宠物的快速准确识别。通过利用XIAO ESP32S3 Sense开发板的高分辨率摄像头,系统能够捕捉到宠物的细微特征,并通过机器学习算法,实时分析这些图像信息。通过浏览SenseCraft网站,允许宠物主人通过网页界面来查看识别结果,监控宠物的行为模式。
设计思路
该项目使用到机器学习的相关技术,所以需要进行数据收集与预处理,特征提取,模型训练,评估与优化和应用几大步骤。
- 给XIAO ESP32S3 Sense开发板烧录拍照的程序,使其发送指令进行拍照,从而采集图像,获得原始数据。
- 使用roboflow平台对图片进行预处理,如压缩图像等,同时给图片数据打标签。然后导出数据集为链接形式,供其他程序调用。
- 进行模型训练,使用百度AI Stduio 中的ModelAssisant 来进行辅助开发,使用优化的YOLOv5-Tiny Model来进行训练,然后到处对应的tensorflow lite文件
- 使用SenseCraft 将模型部署到XIAO ESP32S3上
效果展示:
硬件框图
主要代码片段及原理说明
机器学习的原理
- 数据收集与预处理:首先,需要收集大量的图片数据,这些数据将被用来训练模型。数据预处理包括调整图片大小、归一化、增强等,以提高模型的训练效果。
- 特征提取:机器学习模型需要从图片中提取有用的信息(特征)。在早期的方法中,如卷积神经网络(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站以及博客查找了一些资料,了解了机器学习的原理,并动手实践。
未来的计划
目前的项目仅做到了目标检测识别功能,后续的控制算法还没有进行研究,所以,后期会将二者融为一体进行开发,设计出更多有意思的小项目。
软硬件
附件下载
main (2).ipynb
模型训练代码
dataset.zip
原始数据集
take_photos.zip
串口发送字符1,即可拍照采集图片
团队介绍
无
评论
0 / 100
查看更多
猜你喜欢
基于Seeed XIAO ESP32S3 Sense开发板实现宠物表情识别系统该项目使用了Robotflow与SenseCraft AI、edge impulse与Arduino IDE,实现了基于Seeed XIAO ESP32S3 Sense开发板实现宠物表情识别系统的设计,它的主要功能为:宠物表情识别、宠物愤怒程度检测。
墨非沧海
1251
2024年寒假练 - 基于Seeed XIAO ESP32S3 Sense开发板实现的玩偶宠物识别系统该项目使用了Seeed XIAO ESP32S3 Sense开发板,实现了识别玩偶宠物的设计,它的主要功能为:基于XIAO ESP32S3 Sense开发板,此开发板还具有扩展板,有一个1600*1200 OV2640摄像头传感器、板载SD卡插槽和数字麦克风。通过摄像头将识别目标拍摄下来,将图片标准并训练好相关的模型,再通过ESP32S3进行目标识别。。
Alkaid
178
2024年寒假练 - 基于XIAO ESP32S3 Sense 开发板的宠物位置识别以及语音行为纠正系统该项目使用了XIAO ESP32S3 Sense 开发板,实现了宠物位置识别以及语音行为纠正系统的设计,它的主要功能为:使用Edge Implues框架完成了宠物位置识别,输出的指示信息通过Home Assitant 平台进行收集测和处理,如果宠物运动到危险区域,发出语音指示纠正宠物行为。。
tinySDR
419