nahao8 发表于 2024-1-8 23:14:38

基于树莓派的视觉识别手势Yeelight灯制作

本帖最后由 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接口的摄像头即可。

附件:





页: [1]
查看完整版本: 基于树莓派的视觉识别手势Yeelight灯制作