麦壳maikemaker 发表于 2025-5-5 20:32:38

ESP32-S3 AI CAM:基于浦育平台训练图片分类进行图像识别

本帖最后由 麦壳maikemaker 于 2025-5-5 20:37 编辑

其实基于浦育平台可以很方便的训练图片分类进行图像识别应用,如果你不知道怎么做就跟着我一起看一下怎么做吧
浦育平台准备
进入浦育平台https://www.openinnolab.org.cn/,还没账号的自己注册账号,已有账号登录。
顶部菜单栏点击AI体验

选择图片分类


上传或者拍照,这里我们是AIcam还无法作为电脑的摄像头所以我们使用上传照片模式


准备训练素材
使用AICAM拍照(有个原则,识别的时候照片来自哪里训练的时候就要来自哪里这样效果最好)



这里你也可以使用拍照到SD卡的例程然后把SD中的照片拷贝到电脑,但是因为AIcam没有屏幕,无法看到取景器所以SD方式并不方便
这里为了偷懒我使用了YOLOmaker工具自动生成了一部分素材,使用YOLOmaker可以把一张图片通过随机的放大缩小,亮度明暗,旋转等变成N张图片。

YOLOmaker参数:1,输出设置:宽高200*150,标签:图片内容的种类名称,数量:后面前景图的数量与这个数字相乘大于100即可 2,随机处理:自己看着勾选 3,导入前景图:导入你使用AIcam拍摄的照片,拍几张导入几张建议4张起步(4个角度拍摄) 4,导入背景图(纯白,纯黑或者你拍摄时物体的背景,比如墙面,桌面) 5, 输出文件夹:选择这个分类要报存的位置,点击开始生成几秒钟即可完成。
导入前景图之后点击前景图可以在右侧看到预览效果,点一次随机变化一次




开始上传
修改分类标签名称,点击上传按钮



不要使用中文类别名称


上传完成开始训练,训练需要一会,图片越多训练时间越长,根据电脑性能不同时间也不同,我这次训练了差不多要10分钟


训练完成。


点击下载onnx模型,我们去mind+里面使用




可以给模型文件重命名一下


mind+中编程测试
打开mind+进入python模式


点击扩展添加库


选择用户库,在搜索框搜索onnx


添加basedeploy,如果弹窗提示需要安装库同意即可


返回


编写测试程序


添加训练好的模型和图片
打开文件管理系统


点击更多


打开项目文件夹


把模型和测试图片粘贴到这个文件夹


修改测试程序里面的模型名称和图片名称


运行程序


测试结果


使用AI-CAM作为输入摄像头进行识别


代码
# 修改后的程序

import cv2
import urllib.request
import numpy as np
import time
import BaseDeploy as bd

# 定义URL
url = 'http://192.168.22.43:80/capture'# ESP32-CAM的IP地址

# 加载模型
model = bd("emoji.onnx")

# 创建一个窗口用于显示实时图像
cv2.namedWindow("live transmission", cv2.WINDOW_AUTOSIZE)

last_time = time.time()# 记录上一次获取图像的时间

while True:
    current_time = time.time()# 获取当前时间
   
    # 限制频率,2秒一次
    if current_time - last_time >= 2:
      # 从URL获取图像数据
      img_resp = urllib.request.urlopen(url)
      imgnp = np.array(bytearray(img_resp.read()), dtype=np.uint8)
      img = cv2.imdecode(imgnp, -1)

      # 进行模型推理
      bd_result = model.inference(img)# 注意:这里假设input为BGR格式的图像,如果模型需要其他格式(如RGB),需进行转换

      # 打印推理结果
      result_dict = model.print_result(bd_result)
      print("预测结果:", result_dict['预测结果'])
      print("标签:", result_dict['标签'])
      print("置信度:", result_dict['置信度'])

      # 在图像上绘制识别到的标签
      label_text = f"{result_dict['预测结果']}: {result_dict['置信度']:.2f}"
      cv2.putText(img, label_text, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)

      # 显示图像
      cv2.imshow("live transmission", img)

      # 更新上一次获取图像的时间
      last_time = current_time

      # 按下 'q' 键退出
      if cv2.waitKey(1) & 0xFF == ord('q'):
            break

cv2.destroyAllWindows()

视频
https://www.bilibili.com/video/BV1rCVzzYEJv

麦壳maikemaker 发表于 2025-5-5 20:47:14

文章附件,代码和模型

麦壳maikemaker 发表于 2025-5-6 15:30:26

麦壳maikemaker 发表于 2025-5-5 20:47
文章附件,代码和模型

yolomaker,太大了超过了附件限制https://pan.quark.cn/s/f07302d0f63d
页: [1]
查看完整版本: ESP32-S3 AI CAM:基于浦育平台训练图片分类进行图像识别