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

firebeetle ESP32

EdgeImpulse官网:https://edgeimpulse.com/
本项目EdgeImpulse链接:https://studio.edgeimpulse.com/public/571380/live

数据采集

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

标记数据

  • 在EdgeImpulse中创建项目
firebeetle ESP32
  • 点击“Add existing data”添加数据
firebeetle ESP32
  • 选择“Upload data”上传数据
firebeetle ESP32
  • 选择采集到的图片文件上传,并输入图片的标签
firebeetle ESP32
  • 在“Data acquisition -> Labeling queue”中对物体主体进行标记并保存
firebeetle ESP32
  • 标记橘子
firebeetle ESP32

训练模型

  • 将所有数据标记完后,点击“Impulse design -> Create impulse”创建Impulse并保存
    各处理块的意义:https://docs.edgeimpulse.com/docs/edge-impulse-studio/processing-blocks
firebeetle ESP32
  • 进入“image”页面,点击“Save parameters”
firebeetle ESP32
  • 进入“Generate features”页面,点击“Generate features”按钮生成图像特征
firebeetle ESP32
  • 进入“Object detection”页面,点击“Save & train”按钮对模型进行训练。
firebeetle ESP32
  • 训练完成后可看到模型性能,若模型性能不佳可调整参数再进行训练
firebeetle ESP32
  • 进入“Retrain model”页面,点击“Train model”
firebeetle ESP32
  • 进入“Deployment”页面,“DEFAULT DEPLOYMENT”选择“Arduino library”选项,“MODEL OPTIMIZATIONS”选择“TensorFlow Lite”选型,然后点击“build”
firebeetle ESP32

部署模型

  • 将训练完成的模型库文件解压到"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即可看到摄像头画面
firebeetle ESP32