PyQt5 结合神经网络做可视化训练数据集界面(PyQt5 tiny-yolo)

目前从事深度学习的工作,在训练模型的时候,每次都要修改源码的参数,感觉比较麻烦,所以想着通过可视化的界面来操作,节省大量的时间。目前开源最多的神经网络算法是用python语言,所以借助PyQt5工具做界面,感觉非常的顺手,而且PyQt5和Qt5的操作是相似的,只是用到的语言差异比较大。

项目介绍:

界面用到PyQt5工具,逻辑和操作相对的简单:

所有的源码将传到github,希望可以帮到大家

主要的代码:

1.读取文件夹函数:

def load_train_pics():
    self.load_train_pic_path.clear()#首先清空显示文件夹的框
    load_dir_path = QFileDialog.getExistingDirectory(self, "输入文件路径")
    if not os.path.exists(load_dir_path):
        QMessageBox.warning(self, "提示", "输入文件目录不存在,请重新选择")
        return
    self.load_train_images = load_dir_path
    self.load_train_pic_path.setText(self.load_train_images)#显示选择的文件夹路径
    print("加载训练数据:", self.load_train_images)

2.选择txt文件

# 加载类别文件
def load_class_fun(self):

    self.load_class_path.clear()#清空显示文件的框
    classes_path, dir_type = QFileDialog.getOpenFileNames(self, "选择文件", "datasets")
    # print("11111",input_dir_path)
    # 判断文件合法性
    if len(classes_path):
        for each_path in classes_path:
            if ".txt" not in each_path or not os.path.exists(each_path):
                QMessageBox.warning(self, "提示", "文件选择错误,请重新选择!")
                return
        self.class_path = classes_path[0]
        self.load_class_path.setText(self.class_path)#显示选择的文件路径
        print("输入训练文件:", self.class_path)
        return
    else:
        return

3.界面显示图片

image = QtGui.QPixmap(“exemple/image”).scaled(self.label_img_show.width(), self.label_img_show.height())
self.label_img_show.setPixmap(image)

图片展示的大小,会根据界面label的大小定。

4.下拉框

comboBox = QtWidgets.QComboBox(self.tab_6)#创建对象
comboBox.setStyleSheet("background-color: rgb(255, 255, 255);")#设置格式
comboBox.setObjectName("comboBox")#对象名称,用于css样式
comboBox.addItem("")# 下拉框个数,添加多少个数,就写多少个
comboBox.addItem("")
comboBox.setItemText(0, _translate("MainWindowv", "1"))# 填写下拉框里的数值
comboBox.setItemText(0, _translate("MainWindowv", "2"))

后端算法介绍:

使用的是轻量级神经网络tiny-yolo,tiny-yolo的效果并不差,而且在训练时候需要调参的部分不是很多,用于可视化操作界面相对

要简单一些。

tiny-yolo用于训练的anchors是固定值,每次要生成用于训练和用于验证的数据。tiny-yolo具体的源码可参考:这个连接

下面是界面样式:

界面的右侧用于训练模型,左侧用于测试图片,训练分4步骤,分别按照选择按钮上的数字执行。

注:其中标注文件是xml格式,类别文件是用于训练的类别名称,格式为txt;右侧的加载类别文件同训练中的类别文件。

右侧的测试框,可以对单张图片做测试,同时显示在空白界面,也可批量识别图片,生成结果文件夹。

epoch为训练的迭代次数,batch_size根据自己的主机配置选择,显存高的可以选择大一些。

源码更新到:https://github.com/python-bookworm/FirePlanV

在探索如何将YOLO模型集成到基于PyQt5的GUI应用程序中以实现高效的实时目标检测时,首先需要了解YOLO模型的工作原理及其在Python环境中的使用方法。YOLO是一种先进的目标检测算法,能够将图片分割成网格,并对每个网格进行目标检测,因此对于实时性有较高要求的应用场景非常适合。 参考资源链接:[Python PyQt5实现YOLO多线程目标检测系统](https://wenku.csdn.net/doc/1i3pm83t0i?spm=1055.2569.3001.10343) PyQt5框架提供了丰富的组件来构建复杂的用户界面,它能够帮助开发者创建高性能的桌面应用程序。在GUI应用程序中,我们可以利用PyQt5的信号与槽机制来处理实时视频帧,并将这些帧传递给YOLO模型进行检测。 实现步骤如下: 1. 准备YOLO模型的权重文件和配置文件,这些通常可以从YOLO官方资源或第三方资源下载。 2. 使用Python的深度学习库,如PyTorch或TensorFlow,加载YOLO模型。 3. 在PyQt5应用程序中,创建视频捕获模块,通常是使用OpenCV库从摄像头捕获视频帧。 4. 利用PyQt5的QThread实现多线程,将视频帧捕获和目标检测逻辑分别放在不同的线程中,避免GUI界面阻塞。 5. 将捕获的视频帧通过信号发送到处理目标检测的线程,在该线程中,使用YOLO模型对帧进行处理。 6. 将处理结果,即检测到的目标的边界框、类别等信息,通过信号发送回主线程,并在GUI中更新显示。 为了保证实时性,可以对YOLO模型进行优化,例如降低输入图像的分辨率、使用更快的YOLO版本(如YOLOv4-tiny)或者进行模型剪枝等。此外,利用GPU加速也可以显著提升处理速度。 当你完成了上述步骤之后,就可以获得一个集成了YOLO模型的实时目标检测系统。你可以通过PyQt5的丰富组件来展示视频流和检测结果,例如使用QLabel来显示图像,使用自定义的绘图方法来在图像上绘制检测框和标签。 如果你希望更深入地学习PyQt5YOLO模型以及多线程编程等技术,推荐参考《Python PyQt5实现YOLO多线程目标检测系统》这份资源。它不仅涵盖了GUI设计和目标检测系统的搭建,还包括了优化和调试的实用技巧。通过学习这份资源,你将能够更好地理解和掌握如何将深度学习模型集成到GUI应用程序中,为你的毕业设计、课程设计或个人项目提供强大的技术支持。 参考资源链接:[Python PyQt5实现YOLO多线程目标检测系统](https://wenku.csdn.net/doc/1i3pm83t0i?spm=1055.2569.3001.10343)
评论 49
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值