当前位置:   article > 正文

目标检测:YOLOv8 + PySide6 可视化界面设计步骤_yolov8界面设计

yolov8界面设计

1. 安装PySide6

  1. # 安装pyqt5
  2. pip install PySide6

2. 具体实现

2.1 设计界面

        使用PySide6中自带的工具设计UI界面,并通过插件将.ui文件转换为.py文件(这样才可以进行顺利展示)。

2.2 YOLOv8权重预测

        编写交互文件,绑定检测事件,通过使用YOLOv8模型权重进行预测,得到结果并渲染到UI界面。

3. 使用gradio部署

3.1 在本地安装gradio

pip install gradio

3.2 在项目中创建app.py

  1. # 1.案例
  2. import gradio as gr
  3. def greet(name):
  4. return "Hello" + name + "!"
  5. iface = gr.Interface(dn=greet, inputs="text", outputs="text")
  6. iface.launch()
  7. # 2. import gradio as gr
  8. from PIL import Image
  9. from ultralytics import YOLO
  10. def predict_image(img):
  11. # 转换PIL图像为RGB
  12. if img.mode != "RGB":
  13. img = img.convert('RGB')
  14. # 使用YOLOv8模型进行预测
  15. model = YOLO('runs/detect/train853/weights/best.pt')
  16. results = model.predict(source=img, conf=0.25)
  17. im_array = results[0].plot()
  18. # 转换结果为PIL图像并返回
  19. pil_img = Image.fromarray(im_array[..., ::-1])
  20. return pil_img
  21. # 创建Gradio界面
  22. iface = gr.Interface(
  23. fn=predict_image,
  24. inputs=gr.Image(type='pil'),
  25. outputs='image',
  26. examples=["./image/T0001_XM_20110807100242_01.jpg"],
  27. title="Real-Time Object Detection with YOLOv8",
  28. description="Upload an image to detect objects using Yolov8"
  29. )
  30. # 启动界面
  31. iface.launch()

3.3 解决:ImportError: cannot import name 'soft_unicode' from 'markupsafe' (C:\ProgramData\Anaconda3\lib\site-packages\markupsafe\__init__.py)

  1. # 原来
  2. Name: MarkupSafe
  3. Version: 2.1.3
  4. # 降低MarkupSafe版本
  5. python -m pip install markupsafe==2.0.1

3.4 ImportError: Pandas requires version '3.0.0' or newer of 'jinja2' (version '2.11.2' currently installed).

  1. # 升级pandas版本
  2. 原有版本:2.0.3
  3. 升级版本:2.1.4
  4. # 升级jinjia2版本
  5. 原有版本:2.11.2
  6. 升级最新版本:3.1.2
  7. python -m pip install jinja2==3.1.2

3.5 注意:需要将训练好的模型部署为中间格式,因此安装onnx

  1. pip install onnxruntime-gpu
  2. # 验证安装成功
  3. import onnxruntime
  4. print(onnxruntime.get_device())

3.6 pytroch转onnx模型

  1. yolo export model=./yolov8n.pt format=onnx
  2. # 或者
  3. from ultralytics import YOLO
  4. # 载入模型
  5. model = YOLO("./yolov8n.pt")
  6. # 导出模型
  7. model.export(format='onnx')

3.7 验证onnx模型导出成功

  1. import onnx
  2. # 读取onnx模型
  3. onnx_model = onnx.load('./yolov8n.onnx')
  4. # 检查模型格式是否正确
  5. onnx.checker.check_model(onnx_model)
  6. print("无报错,转换成功")

3.8 使用Netron可视化onnx模型结构

3.9 使用onnxsim优化onnx模型

3.10 onnx模型推理预测:和.pth原生模型预测完全相同,只需要把model参数换成.onnx模型即可。

  1. # 单张图像
  2. yolo predict pose model=./yolov8n.onnx source=image/train01.jpg
  3. # 视频
  4. yolo predict pose model=./yolov8n.onnx source=videos/train02.mp4
  5. # 摄像头
  6. yolo predict pose model=./yolov8n.onnx source=0 show verbose=False
  7. # 或者使用Python API
  8. from ultralytics import YOLO
  9. model = YOLO('./yolov8n.onnx', task='pose')
  10. # 预测图像
  11. results = model.predict('images/train01.jpg', task='pose', save=True)

3.11 ONNX Runtime推理预测-单张图像

  1. import cv2
  2. import numpy as np
  3. from PTL import Image
  4. import onnxruntime
  5. import torch
  6. # 有GPU
  7. device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
  8. # 创建onnx runtime的InferenceSession
  9. session = onnxruntime.InferenceSession("./yolov8n.onnx", None)

 3.12 在实际应用中,可能涉及到对模型的调参优化,找到最优的超参数

 yolov8提供了两种不同方式的超参数调优方式(两种方式都存在错误,在github上也有相应的解决,但是并不能帮助到我,后续会进行修改)

1. 使用原有的方法tune()

注意:目前遇到的问题是:UnboundLocalError: local variable 'ckpt_file' referenced before assignment

2. 使用ray tune的方式

注意:目前遇到的问题是:core_worker.cc:201: Failed to register worker 01000000ffffffffffffffffffffffffffffffffffffffffffffffff to Raylet. IOError: [RayletClient] Unable to register worker with raylet. Unknown error

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/495156
推荐阅读
相关标签
  

闽ICP备14008679号