基于树莓派的视觉识别手势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]