本帖最后由 nahao8 于 2024-1-8 23:14 编辑  
 
一、项目简介 
本项目旨在于将人工智能与物联网相结合,通过图像分类模型训练得到一个二分类图像分类模型,并通过视觉识别实现yeelight灯的“开”和“关”的控制。  
二、材料准备 
- 树莓派+sd卡
 - usb接口摄像头
 - yeelight灯+螺纹口底座
 - 无线局域网
 - 浦育平台账号(openinnolab.org.cn)
 
 
  
三、实践操作 
图像分类模型的训练平台采用的是浦育平台(openinnolab.org.cn)AI体验中的图像分类。 
  
图像模型分类训练采用的是二分类:“on”和“off”,“on”分类采用的图像样本是“手掌”图像,“off”分类采用的图像样本是“拳头”图像。  
简单测试一下“手掌”和“拳头”两个手势的识别率,若识别率较为不错就可以点击下载模型。将下载下来的训练好的模型解压,得到以下文件。 
  
在浦育平台项目栏目中搜索关键字“模型转换:从TensorFlowJS到ONNX”,并克隆该项目。进入项目后,删除项目中原有的model.json、model.onnx和model.weights.bin文件,将解压得到的model.json和model.weights.bin两个文件上传至相关目录下,如图所示。 
  
在完成tensorflow模型的上传后,按照模型转换步骤完成模型转换,得到轻量级的通用模型格式文件onnx文件。 
  
 
 
四、部署应用 
在树莓派上安装好python环境的第三方模块:cv2、numpy、BaseDT.data、BaseDeploy、matplotlib.pyplot、yeelight,即可开始进行模型的应用推理了。推理代码如下所示: 
 
			
			
			- import cv2
 - import numpy as np
 - from BaseDT.data import ImageData, ModelData
 - import BaseDeploy as bd
 - import matplotlib.pyplot as plt
 - import time
 - from yeelight import Bulb
 - #bulb=Bulb("192.168.31.153")
 - # 设置摄像头
 - print('现在开始拍照...')
 - cap = cv2.VideoCapture(0)
 - print('拍照已完成')
 - # 从摄像头中读取画面
 - 
 - while True:
 -     cap = cv2.VideoCapture(0)
 -     ret,img = cap.read()
 -     cap.release()
 -     model_path = 'model.onnx'
 -     model = bd(model_path)
 -     result = model.inference(img,show = False)
 -     rsl=model.print_result(result)
 -     print(rsl)
 -     if rsl["标签"]==0:
 -         print("开灯")
 -         bulb=Bulb("192.168.31.153")
 -         bulb.turn_on()
 -     else:
 -         print("关灯")
 -         bulb=Bulb("192.168.31.153")
 -         bulb.turn_off()
 -     time.sleep(2)
 - 
 - 
 
  复制代码
  
 
 
在树莓派主板上配置好WIFI,连接上yeelight灯同一局域网络。将python文件拷贝到树莓派上,设置为开机运行,插上usb接口的摄像头即可。 
 
附件: 基于树莓派的手势识别灯.zip 
 
 
 
 
 
 |