本项目将通过ESP32-S3 AI CAM模块和EdgeImpulse对苹果和橘子进行识别。通过该项目,你将学会如何通过EdgeImpulse训练自己的模型并部署到ESP32-S3 AI CAM模块上。

EdgeImpulse官网:https://edgeimpulse.com/
本项目EdgeImpulse链接:https://studio.edgeimpulse.com/public/571380/live
数据采集
- 烧录"CameraWebServer"示例代码,打开串口监视器查看IP地址
- 局内网内的设备通过浏览器访问IP,点击start按钮查看图像画面
- 点击画面右上角保存图片到电脑(建议将不同物体图片分开保存,以便于训练模型时标记数据)
注意:请尽可能的多采集图像数据,这样可以使模型更加准确,本项目苹果和橘子照片使用了50张左右

- 采集到的图片集

标记数据
- 在EdgeImpulse中创建项目

- 点击“Add existing data”添加数据

- 选择“Upload data”上传数据

- 选择采集到的图片文件上传,并输入图片的标签

- 在“Data acquisition -> Labeling queue”中对物体主体进行标记并保存

- 标记橘子

训练模型
- 将所有数据标记完后,点击“Impulse design -> Create impulse”创建Impulse并保存
各处理块的意义:https://docs.edgeimpulse.com/docs/edge-impulse-studio/processing-blocks

- 进入“image”页面,点击“Save parameters”

- 进入“Generate features”页面,点击“Generate features”按钮生成图像特征

- 进入“Object detection”页面,点击“Save & train”按钮对模型进行训练。

- 训练完成后可看到模型性能,若模型性能不佳可调整参数再进行训练

- 进入“Retrain model”页面,点击“Train model”

- 进入“Deployment”页面,“DEFAULT DEPLOYMENT”选择“Arduino library”选项,“MODEL OPTIMIZATIONS”选择“TensorFlow Lite”选型,然后点击“build”

部署模型
- 将训练完成的模型库文件解压到"arduino->libraies"中
- 替换"src\edge-impulse-sdk\tensorflow\lite\micro\kernels"中的"depthwise_conv.cpp"和"conv.cpp"文件
- 将edge_camera文件夹及其子文件移动到模型库文件的examples中
- 打开arduino IDE,选择edge_camera示例,将代码中的第一行改为模型库的.h文件,填入WiFi账号密码,然后编译烧录
- 打开串口监视器即可看到IP地址和识别结果,访问IP即可看到摄像头画面
