基于yolov8的手势识别系统及脱机部署

通过对yolov8模型的训练来实现模型对19种不同手势识别的功能,制作简易ui界面并实现3种不同的按钮功能(视频检测、图片检测、摄像头实时检测),最后完成部署以实现项目的脱机运行并应用于实际应用中。
yolov8的开源项目是一个十分成熟的项目,且实现起来较易上手,在装好所需要的各种包后,通过修改训练所使用的yaml文件,指定将要使用的训练集、验证集以及测试集和对应编号所代表的手势(大部分情况需要自己使用labelimg手动标注数据),在终端上通过指令yolo detect train data=.../handgesture.yaml model=yolov8n.yaml pretrained=.../yolov8n.pt epochs=10 batch=128 lr0=0.0005 resume=True seed=10即可直接运行模型的训练脚本,data一定要等于yaml文件所在的地址,而pretrained一定要等于所欲选用的预训练模型所在的地址,我用的显卡是RTX 4090,为了避免显存不够的问题,建议训练时将参数batch设置为8或者16甚至可以为1,使用指令yolo val data=.../handgesture.yaml model=.../best.pt imgsz=640 batch=128 split=test来使用训练好的模型对测试集进行测试(...表路径)。
完成ui界面设计后为实现模型的部署,先将pt格式的模型转换为onnx格式(为什么要要转成onnx模型呢,主要是因为onnx没有训练,只有推理,速度很快,而且目前大多数芯片都适配onnx模型,相当于一个通用模型,易部署。)转换的代码如下:

from ultralytics import YOLO

model = YOLO("best.pt")
model.export(format="onnx")  # export the model to onnx format
#切忌将该代码的代码名命名为onnx.py,否则会引起循环重复的问题。

部署前,先安装pyinstaller的包对ui的代码文件ui.py使用pyinstaller -F ui.py打包,封装过程十分费时且时不时会出现bug,如找不到default,则将yolov8中util中的init文件的yaml文件的相对地址修改为default的绝对地址,如使用UI代码中使用有Qt包,pyinstaller打包因与Qt的兼容问题可能无法导出图片如图所示,将图片修改为qrc再转换为py文件,在ui.py中使用import引入可解决封装的ui无图片的问题。转换qrc为py的代码附上。

import base64

def pic2py(picture_name):
    """
    将图像文件转换为py文件
    :param picture_name:
    :return:
    """
    open_pic = open("%s" % picture_name, 'rb')
    b64str = base64.b64encode(open_pic.read())
    open_pic.close()
    # 注意这边b64str一定要加上.decode()
    write_data = 'img = "%s"' % b64str.decode()
    f = open('%s.py' % picture_name.replace('.', '_'), 'w+')
    f.write(write_data)
    f.close()

if __name__ == '__main__':
    pics = ["E:/yolo/pythonProject/m.jpg",
            "E:/yolo/pythonProject/video_icon.png",
            "E:/yolo/pythonProject/sxt.png",
            "E:/yolo/pythonProject/image_icon.png"]
    for i in pics:
        pic2py(i)
    print("ok")

打包时如果想加上一个.ico的图标,直接使用-i并不能正常添加,需要修改name,pyinstaller命名如下:

pyinstaller --onefile --windowed -i (ico名字).ico --name (任意名字).exe (py文件名字).py

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值