本项目将通过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安装目录的libraries文件夹中
-
下载【conv.cpp】、【depthwise_conv.cpp】和【edge_camera】文件
-
将下载conv.cpp、和depthwise_conv.cpp文件粘贴到自己训练模型的文件夹中,选择替换
- 路径:自己训练的模型文件夹\src\edge-impulse-sdk\tensorflow\lite\micro\kernels
- 复制【edge_camera】文件夹,粘贴到自己训练模型的文件夹中
- 路径:自己训练的模型文件夹\examples
-
打开arduino ide找到【edge_camera】示例代码,将头文件改为自己模型的头文件,填入WiFi账号和密码
-
编译烧录,打开串口监视器即可看到IP地址和识别结果,访问IP即可看到摄像头画面。