YOLOv5可视化界面

Pyside6可视化界面

安装Pyside6

激活之前的虚拟环境yolov5

在该环境的终端输入以下命令

image-20230804130702828

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyside6

image-20230804130800817

输入where python找到当前使用的Python的路径

image-20230804130822697

找到该路径下的designer.exe文件(/Lib/site-packages/PySide6/designer.exe),然后发送到桌面创建快捷方式

image-20230804131040967

UI设计

  1. 打开designer
  2. 选择Main Window

image-20230804135928424

  1. 移除菜单栏

image-20230804140001249

  1. 拖两个label个一个line进来

image-20230804140218860

  1. 拖两个button进入,并进行命名

image-20230804140548127

  1. 调整界面,填写两个label里面文件,将界面调小一些

image-20230804140817179

  1. 居中对齐,同时勾选scaledContents

image-20230804140925757

  1. 元素名称更改

image-20230804141119743

  1. Ctrl+S保存,保存到上一部分训练数据集的文件内

image-20230804141230616

设置Pyside6-uic 工具

  1. 在当前虚拟环境的Python路径下,打开Scripts文件夹夹,找到pyside6-uic.exe,记住当前路径

image-20230804133419243

  1. 创建工具

image-20230804133534319

名称:PyUic(可自己定义)
程序:E:\kaifa\Anaconda3\envs\yolov5\Scripts\pyside6-uic.exe
实参:$FileName$ -o $FileNameWithoutExtension$.py
工作目录: $FileDir$
  1. 使用该工具

先在pycharm中打开刚才生成的ui文件

双击打不开的话,把文件拖到右边就可以打开了

image-20230804141619914

然后在【工具】选项卡下的【external tools】下,点击【PyUic】(这个名称是你刚才自己设计的)

image-20230804133624645

如果生成了相同文件名的.py文件,即说明设置成功

image-20230804141836515

编写运行程序

创建模板文件base_ui.py

import sys
import torch
from PySide6.QtGui import QPixmap, QImage
from PySide6.QtWidgets import QMainWindow, QApplication, QFileDialog

from main_window import Ui_MainWindow #main_windows是刚才生成的ui对用的Python文件名

def convert2QImage(img):
    height, width, channel = img.shape
    return QImage(img, width, height, width * channel, QImage.Format_RGB888)

class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setupUi(self)

if __name__ == "__main__":
    app = QApplication(sys.argv)

    window = MainWindow()
    window.show()

    app.exec()

编译运行,弹出窗口说明成功

编写内部具体功能的代码

讲解视频:YOLOv5 Pyside6可视化界面

import sys
import cv2
import torch
from PySide6.QtGui import QPixmap, QImage
from PySide6.QtWidgets import QMainWindow, QApplication, QFileDialog
from PySide6.QtCore import QTimer

from main_window import Ui_MainWindow  # main_windows是刚才生成的ui对用的Python文件名


def convert2QImage(img):
    height, width, channel = img.shape
    return QImage(img, width, height, width * channel, QImage.Format_RGB888)


class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setupUi(self)
        self.model = torch.hub.load("./", "custom", path="runs/train/exp/weights/best.pt", source="local")
        self.video = None
        self.timer = QTimer()
        self.timer.setInterval(1)
        self.bind_slots()  # 绑定槽函数

    def image_pred(self, file_path): # 图片检测
        results = self.model(file_path) 
        image = results.render()[0]
        return convert2QImage(image)

    def open_image(self): # 打开图片
        print("点击了检测图片按钮")
        self.timer.stop()  # 停止视频检测
        file_path = QFileDialog.getOpenFileName(self, dir="./data02/images/train", filter="*.jpg;*.png;*.jpeg")
        if file_path[0]:
            file_path = file_path[0]
            qimage = self.image_pred(file_path)
            self.input.setPixmap(QPixmap(file_path))
            self.output.setPixmap(QPixmap.fromImage(qimage))

    def video_pred(self):  # 视频检测
        ret, frame = self.video.read()
        if not ret:
            self.timer.stop()
        else:
            frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
            self.input.setPixmap(QPixmap.fromImage(convert2QImage(frame)))
            results = self.model(frame)
            image = results.render()[0]
            self.output.setPixmap(QPixmap.fromImage(convert2QImage(image)))

    def open_video(self):  # 打开视频
        print("点击了检测视频!")
        file_path = QFileDialog.getOpenFileName(self, dir="./data02", filter="*.mp4")
        if file_path[0]:
            file_path = file_path[0]
            self.video = cv2.VideoCapture(file_path)
            self.timer.start()

    def bind_slots(self):  # 绑定槽函数
        self.det_image.clicked.connect(self.open_image)
        self.det_video.clicked.connect(self.open_video)
        self.timer.timeout.connect(self.video_pred)


if __name__ == "__main__":
    app = QApplication(sys.argv)

    window = MainWindow()
    window.show()

    app.exec()

Gradio搭建Web GUI

安装Gradio

激活之前的虚拟环境yolov5

在该环境的终端输入以下命令

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple gradio

实现

新建gradio_demo.py文件

输入图片、输出图片、预测函数

Gradio不支持实时检测

import torch
import gradio as gr

model = torch.hub.load("./", "custom", path="runs/train/exp/weights/best.pt", source="local")

title = "基于Gradio的YOLOv5演示项目"

desc = "这是一个基于Gradio的YOLOv5演示项目,非常简洁,非常方便!"

base_conf, base_iou = 0.25, 0.45


def det_image(img, conf_thres, iou_thres):
    model.conf = conf_thres
    model.iou = iou_thres
    return model(img).render()[0]


gr.Interface(
    inputs=["image", gr.Slider(minimum=0, maximum=1, value=base_conf), gr.Slider(minimum=0, maximum=1, value=base_iou)],
    outputs=["image"],
    fn=det_image,
    title=title,
    description=desc,
    live=True,
    examples=[["./data02/images/train/30.jpg", base_conf, base_iou],
              ["./data02/images/train/60.jpg", 0.3, base_iou]]
).launch(share=True)

如果想发布到网上,设置share=True参数,但是运行的时候会因为网络原因,报出下面的错误,可以通过提示的网址下载对应文件,重命名后放到相应的目录下,重新运行

image-20230804221752389

  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
### 回答1: YOLOv5是一种用于目标检测和实时目标识别的计算机视觉算法。虽然YOLOv5没有官方提供的可视化界面,但可以通过其他工具进行可视化操作。 首先,YOLOv5提供了一个命令行界面,可以在终端中运行相应的命令来执行目标检测任务。这些命令可以接收输入图像或视频并输出检测结果,可以通过显示结果图像来进行简单的可视化。 其次,YOLOv5还可以结合使用一些流行的计算机视觉工具包,如OpenCV或Matplotlib,来将检测结果可视化。这些工具可以帮助将检测到的对象用边框标记,并在图像中显示出来。通过调整参数和显示的方式,可以根据需求进行交互式的可视化操作。 另外,YOLOv5还支持使用TensorBoard进行可视化。TensorBoard是一个方便的可视化工具,可以用于显示训练模型的指标、损失函数、优化器的图表等。通过将YOLOv5的训练日志导入到TensorBoard中,可以直观地观察训练过程,并进行模型参数的调整和优化。 总之,虽然YOLOv5本身没有官方提供的可视化界面,但可以通过命令行界面、计算机视觉工具包和TensorBoard等其他工具来实现可视化操作,以便更好地理解和分析目标检测的结果。 ### 回答2: YOLOv5是一个用于物体检测的深度学习模型,它可提供一个可视化界面来帮助用户更好地理解和使用该模型。 YOLOv5可视化界面通常包括以下几个主要组件: 1. 图像显示窗口:该窗口用于显示输入图像以及检测结果。用户可以通过拖拽或选择文件来加载图像,并即时查看模型的检测效果。 2. 参数设置面板:该面板提供了一些参数的调整选项,用户可以根据需要来修改这些参数以优化模型的性能。例如,用户可以调整检测的阈值、非极大值抑制的阈值以及输入图像的大小等。 3. 检测结果显示窗口:该窗口用于显示模型的检测结果。检测结果通常以边界框的形式展示在输入图像上,并标注了物体的类别和置信度。 4. 输出数据导出功能:该功能允许用户将检测结果导出为常见的格式,如CSV或JSON,以便进一步处理或分析。 5. 模型选择和加载:用户可以从预训练模型列表中选择不同的权重文件,以载入不同的模型。这些预训练模型通常在大规模的数据集上进行训练,可提高检测精度和泛化能力。 6. 性能评估和统计信息:该功能提供了模型的性能评估和统计信息,包括平均准确率、召回率和特定类别的检测统计信息。 通过YOLOv5可视化界面,用户可以直观地观察和了解模型的检测过程和效果。同时,用户还可以根据不同的需求进行参数调整,优化模型的性能。这样的可视化界面使得使用YOLOv5更加方便和高效。 ### 回答3: YOLOv5是一种目标检测算法,具有可视化界面方便用户进行模型训练和测试。可视化界面提供了许多功能和选项,使用户能够轻松地管理和分析训练过程。 首先,可视化界面允许用户选择自己的数据集,并提供了数据集加载功能。用户可以将自己的图像和对应的标签导入到界面中,方便后续的训练和测试。 其次,可视化界面提供了训练模型的选项。用户可以选择不同的训练参数和模型配置,如学习率、迭代次数等等。界面还提供了可视化的训练日志,用户可以实时查看训练的损失和准确率,以便进行模型调整和优化。 此外,可视化界面还支持模型的测试和推理。用户可以选择测试图像,并查看模型的检测结果。界面能够直观地显示检测结果,即在图像上框出检测到的物体,并显示其类别和置信度。 最后,界面还提供了模型性能评估的功能。用户可以选择不同的评估指标,如精确率、召回率等,以评估模型的性能。界面会生成相应的评估报告,供用户参考和分析。 总的来说,YOLOv5可视化界面为用户提供了一个集中管理并分析模型的平台,帮助用户更好地理解和利用该目标检测算法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值