本帖最后由 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
|