加入收藏 | 设为首页 | 会员中心 | 我要投稿 驾考网 (https://www.jiakaowang.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

pyqt 搭建深度学习训练界面一

发布时间:2023-02-28 11:05:50 所属栏目:Linux 来源:
导读:github链接:
有需要联系我

requirements:
测试在ubuntu18.04和Windows均可运行

ubuntu18.04
OS: Ubuntu 18.04.6 LTS
Python version: 3.7 (64-bit runtime)
Is CUDA available: True
CUDA runtime versi
github链接:
有需要联系我

requirements:
测试在ubuntu18.04和Windows均可运行

ubuntu18.04
OS: Ubuntu 18.04.6 LTS
Python version: 3.7 (64-bit runtime)
Is CUDA available: True
CUDA runtime version: 11.1.74
GPU models and configuration: GPU 0: NVIDIA GeForce RTX 3090 Ti
Nvidia driver version: 510.108.03

安装可能存在的问题:
No module named ‘kornia’

pip install kornia==0.5
注: 不带版本号会默认下载新的torch

No module named ‘PyQt5.QtChart’
需单独安装

popip install pyqtchart
ModuleNotFoundError: No module named ‘qt_material’

ModuleNotFoundError: No module named ‘jinja2’

pip install jinja2
主函数
if __name__ == '__main__':
    # multiprocessing.freeze_support()
    # initialize QApplication
    app = QApplication(sys.argv)
    # set style
    app.setStyleSheet(StyleSheet)
    # set the launch 
    global splash
    splash = GifSplashScreen()
    splash.show()
    m_window = MainCode()
    apply_stylesheet(app, theme='dark_blue.xml') #,invert_secondary=True)
    m_window.show()
    sys.exit(app.exec_())
启动界面
通常在主界面加载完成之前提供一个启动界面,减少主程序加载过程用户的等待

# 启动界面
class GifSplashScreen(QSplashScreen):
    def __init__(self, *args, **kwargs):
        super(GifSplashScreen, self).__init__(*args, **kwargs)
        self.movie = QMovie('./Lib/splash.gif')
        self.movie.frameChanged.connect(self.onFrameChanged)
        self.movie.start()
    def onFrameChanged(self, _):
        self.setpixmap(self.movie.currentpixmap())
    def finish(self, widget):
        self.movie.stop()
        super(GifSplashScreen, self).finish(widget)
主界面设计
利用QtDesigner来设计界面,通过Pycharm外部工具PyUIC转化成py文件

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setobjectName("MainWindow")
        MainWindow.resize(1000, 800)
        icon = QtGui.QIcon()
        icon.addpixmap(QtGui.Qpixmap("./icon.ico"), QtGui.QIcon.normal, QtGui.QIcon.Off)
        MainWindow.setwindowIcon(icon)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setobjectName("centralwidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget)
        self.horizontalLayout.setobjectName("horizontalLayout")
        self.toolBox = QtWidgets.QToolBox(self.centralwidget)
        self.toolBox.setMaximumSize(QtCore.QSize(200, 16777215))
        self.toolBox.setobjectName("toolBox")
        self.m_First = QtWidgets.QWidget()
        self.m_First.setGeometry(QtCore.QRect(0, 0, 200, 597))
        self.m_First.setobjectName("m_First")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.m_First)
        self.horizontalLayout_2.setobjectName("horizontalLayout_2")
        self.m_ImageDirBtn = QtWidgets.QPushButton(self.m_First)
        self.m_ImageDirBtn.setobjectName("m_ImageDirBtn")
        self.horizontalLayout_2.addWidget(self.m_ImageDirBtn)
        self.toolBox.addItem(self.m_First, "")
        self.m_Second = QtWidgets.QWidget()
        self.m_Second.setGeometry(QtCore.QRect(0, 597))
        self.m_Second.setobjectName("m_Second")
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.m_Second)
        self.horizontalLayout_3.setobjectName("horizontalLayout_3")
        self.m_SetTrainPareBtn = QtWidgets.QPushButton(self.m_Second)
        self.m_SetTrainPareBtn.setobjectName("m_SetTrainPareBtn")
        self.horizontalLayout_3.addWidget(self.m_SetTrainPareBtn)
        self.toolBox.addItem(self.m_Second, "")
        self.m_Third = QtWidgets.QWidget()
        self.m_Third.setGeometry(QtCore.QRect(0, 597))
        self.m_Third.setobjectName("m_Third")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.m_Third)
        self.verticalLayout.setobjectName("verticalLayout")
        self.m_StartTrainBtn = QtWidgets.QPushButton(self.m_Third)
        self.m_StartTrainBtn.setobjectName("m_StartTrainBtn")
        self.verticalLayout.addWidget(self.m_StartTrainBtn)
        self.toolBox.addItem(self.m_Third, "")
        self.m_Forth = QtWidgets.QWidget()
        self.m_Forth.setGeometry(QtCore.QRect(0, 597))
        self.m_Forth.setobjectName("m_Forth")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.m_Forth)
        self.verticalLayout_2.setobjectName("verticalLayout_2")
        self.m_DetectSinglePicBtn = QtWidgets.QPushButton(self.m_Forth)
        self.m_DetectSinglePicBtn.setobjectName("m_DetectSinglePicBtn")
        self.verticalLayout_2.addWidget(self.m_DetectSinglePicBtn)
        self.toolBox.addItem(self.m_Forth, "")
        self.m_fifth = QtWidgets.QWidget()
        self.m_fifth.setobjectName("m_fifth")
        self.m_convertModel = QtWidgets.QPushButton(self.m_fifth)
        self.m_convertModel.setGeometry(QtCore.QRect(50, 180, 75, 23))
        self.m_convertModel.setobjectName("m_convertModel")
        self.toolBox.addItem(self.m_fifth, "")
        self.horizontalLayout.addWidget(self.toolBox)
        self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.tabWidget.setobjectName("tabWidget")
        self.home_page = QtWidgets.QWidget()
        self.home_page.setobjectName("home_page")
        self.gridLayout_8 = QtWidgets.qgridLayout(self.home_page)
        self.gridLayout_8.setobjectName("gridLayout_8")
        self.m_homePagelabel = QtWidgets.QLabel(self.home_page)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.m_homePagelabel.sizePolicy().hasHeightForWidth())
        self.m_homePagelabel.setSizePolicy(sizePolicy)
        self.m_homePagelabel.setobjectName("m_homePagelabel")
        self.gridLayout_8.addWidget(self.m_homePagelabel, 1, 1)
        self.tabWidget.addTab(self.home_page, "")
        self.m_FirstW = QtWidgets.QWidget()
        self.m_FirstW.setobjectName("m_FirstW")
        self.gridLayout = QtWidgets.qgridLayout(self.m_FirstW)
        self.gridLayout.setobjectName("gridLayout")
        self.le_imageDir = QtWidgets.QLineEdit(self.m_FirstW)
        self.le_imageDir.setobjectName("le_imageDir")
        self.gridLayout.addWidget(self.le_imageDir, 1)
        self.tableImgList = QtWidgets.QTableWidget(self.m_FirstW)
        self.tableImgList.setMaximumSize(QtCore.QSize(300, 16777215))
        self.tableImgList.setobjectName("tableImgList")
        self.tableImgList.setColumnCount(0)
        self.tableImgList.setRowCount(0)
        self.gridLayout.addWidget(self.tableImgList, 1)
        self.la_image = QtWidgets.QLabel(self.m_FirstW)
        self.la_image.setobjectName("la_image")
        self.gridLayout.addWidget(self.la_image, 1)
        self.tabWidget.addTab(self.m_FirstW, "")
        self.m_SecondW = QtWidgets.QWidget()
        self.m_SecondW.setobjectName("m_SecondW")
        self.gridLayout_5 = QtWidgets.qgridLayout(self.m_SecondW)
        self.gridLayout_5.setobjectName("gridLayout_5")
        self.m_MaxIterationL = QtWidgets.QLabel(self.m_SecondW)
        self.m_MaxIterationL.setobjectName("m_MaxIterationL")
        self.gridLayout_5.addWidget(self.m_MaxIterationL, 1)
        self.m_MaxIterationEd = QtWidgets.QLineEdit(self.m_SecondW)
        self.m_MaxIterationEd.setobjectName("m_MaxIterationEd")
        self.gridLayout_5.addWidget(self.m_MaxIterationEd, 1)
        self.m_BathSizeL = QtWidgets.QLabel(self.m_SecondW)
        self.m_BathSizeL.setobjectName("m_BathSizeL")
        self.gridLayout_5.addWidget(self.m_BathSizeL, 1)
        self.m_BathSizeEd = QtWidgets.QLineEdit(self.m_SecondW)
        self.m_BathSizeEd.setobjectName("m_BathSizeEd")
        self.gridLayout_5.addWidget(self.m_BathSizeEd, 1)
        self.m_ImageSizeL = QtWidgets.QLabel(self.m_SecondW)
        self.m_ImageSizeL.setobjectName("m_ImageSizeL")
        self.gridLayout_5.addWidget(self.m_ImageSizeL, 2, 1)
        self.m_ImageSizeEd = QtWidgets.QLineEdit(self.m_SecondW)
        self.m_ImageSizeEd.setobjectName("m_ImageSizeEd")
        self.gridLayout_5.addWidget(self.m_ImageSizeEd, 1)
        self.m_ValidationRatioL = QtWidgets.QLabel(self.m_SecondW)
        self.m_ValidationRatioL.setobjectName("m_ValidationRatioL")
        self.gridLayout_5.addWidget(self.m_ValidationRatioL, 3, 1)
        self.m_ValidationRatioEd = QtWidgets.QLineEdit(self.m_SecondW)
        self.m_ValidationRatioEd.setobjectName("m_ValidationRatioEd")
        self.gridLayout_5.addWidget(self.m_ValidationRatioEd, 1)
        self.m_LearningRateL = QtWidgets.QLabel(self.m_SecondW)
        self.m_LearningRateL.setobjectName("m_LearningRateL")
        self.gridLayout_5.addWidget(self.m_LearningRateL, 4, 1)
        self.m_LearningRateEd = QtWidgets.QLineEdit(self.m_SecondW)
        self.m_LearningRateEd.setobjectName("m_LearningRateEd")
        self.gridLayout_5.addWidget(self.m_LearningRateEd, 1)
        self.m_WeightDecayL = QtWidgets.QLabel(self.m_SecondW)
        self.m_WeightDecayL.setobjectName("m_WeightDecayL")
        self.gridLayout_5.addWidget(self.m_WeightDecayL, 5, 1)
        self.m_WeightDecayEd = QtWidgets.QLineEdit(self.m_SecondW)
        self.m_WeightDecayEd.setobjectName("m_WeightDecayEd")
        self.gridLayout_5.addWidget(self.m_WeightDecayEd, 1)
        self.m_isCuda = QtWidgets.QCheckBox(self.m_SecondW)
        self.m_isCuda.setobjectName("m_isCuda")
        self.gridLayout_5.addWidget(self.m_isCuda, 6, 1)
        self.m_OkBtn = QtWidgets.QPushButton(self.m_SecondW)
        self.m_OkBtn.setobjectName("m_OkBtn")
        self.gridLayout_5.addWidget(self.m_OkBtn, 7, 1)
        self.tabWidget.addTab(self.m_SecondW, "")
        self.m_ThirdW = QtWidgets.QWidget()
        self.m_ThirdW.setobjectName("m_ThirdW")
        self.gridLayout_7 = QtWidgets.qgridLayout(self.m_ThirdW)
        self.gridLayout_7.setobjectName("gridLayout_7")
        self.m_trainwidget = QtWidgets.QWidget(self.m_ThirdW)
        self.m_trainwidget.setobjectName("m_trainwidget")
        self.gridLayout_2 = QtWidgets.qgridLayout(self.m_trainwidget)
        self.gridLayout_2.setobjectName("gridLayout_2")
        self.m_initModelBtn = QtWidgets.QPushButton(self.m_trainwidget)
        self.m_initModelBtn.setobjectName("m_initModelBtn")
        self.gridLayout_2.addWidget(self.m_initModelBtn, 1)
        self.m_startTrainBtn = QtWidgets.QPushButton(self.m_trainwidget)
        self.m_startTrainBtn.setobjectName("m_startTrainBtn")
        self.gridLayout_2.addWidget(self.m_startTrainBtn, 1)
        self.m_pauseTrainBtn = QtWidgets.QPushButton(self.m_trainwidget)
        self.m_pauseTrainBtn.setobjectName("m_pauseTrainBtn")
        self.gridLayout_2.addWidget(self.m_pauseTrainBtn, 1)
        self.m_resumTrainBtn = QtWidgets.QPushButton(self.m_trainwidget)
        self.m_resumTrainBtn.setobjectName("m_resumTrainBtn")
        self.gridLayout_2.addWidget(self.m_resumTrainBtn, 1)
        self.m_stopTrainBtn = QtWidgets.QPushButton(self.m_trainwidget)
        self.m_stopTrainBtn.setobjectName("m_stopTrainBtn")
        self.gridLayout_2.addWidget(self.m_stopTrainBtn, 1)
        self.gridLayout_7.addWidget(self.m_trainwidget, 1)
        self.m_savemodelWidget = QtWidgets.QWidget(self.m_ThirdW)
        self.m_savemodelWidget.setMinimumSize(QtCore.QSize(0, 100))
        self.m_savemodelWidget.setMaximumSize(QtCore.QSize(16777215, 100))
        self.m_savemodelWidget.setobjectName("m_savemodelWidget")
        self.gridLayout_3 = QtWidgets.qgridLayout(self.m_savemodelWidget)
        self.gridLayout_3.setobjectName("gridLayout_3")
        self.m_modelSaveEd = QtWidgets.QLineEdit(self.m_savemodelWidget)
        self.m_modelSaveEd.setobjectName("m_modelSaveEd")
        self.gridLayout_3.addWidget(self.m_modelSaveEd, 1)
        self.m_modelSaveBtn = QtWidgets.QPushButton(self.m_savemodelWidget)
        self.m_modelSaveBtn.setobjectName("m_modelSaveBtn")
        self.gridLayout_3.addWidget(self.m_modelSaveBtn, 1)
        self.m_modelSaveL = QtWidgets.QLabel(self.m_savemodelWidget)
        self.m_modelSaveL.setobjectName("m_modelSaveL")
        self.gridLayout_3.addWidget(self.m_modelSaveL, 1)
        self.gridLayout_7.addWidget(self.m_savemodelWidget, 1)
        self.m_modelTrainProcesssbar = QtWidgets.QProgressBar(self.m_ThirdW)
        self.m_modelTrainProcesssbar.setProperty("value", 24)
        self.m_modelTrainProcesssbar.setobjectName("m_modelTrainProcesssbar")
        self.gridLayout_7.addWidget(self.m_modelTrainProcesssbar, 2)
        self.textbrowser = QtWidgets.QTextbrowser(self.m_ThirdW)
        self.textbrowser.setobjectName("textbrowser")
        self.gridLayout_7.addWidget(self.textbrowser, 2)
        self.tabWidget.addTab(self.m_ThirdW, "")
        self.m_ForthW = QtWidgets.QWidget()
        self.m_ForthW.setobjectName("m_ForthW")
        self.gridLayout_6 = QtWidgets.qgridLayout(self.m_ForthW)
        self.gridLayout_6.setobjectName("gridLayout_6")
        self.m_loadmodelwidget = QtWidgets.QWidget(self.m_ForthW)
        self.m_loadmodelwidget.setMinimumSize(QtCore.QSize(0, 50))
        self.m_loadmodelwidget.setMaximumSize(QtCore.QSize(16777215, 50))
        self.m_loadmodelwidget.setobjectName("m_loadmodelwidget")
        self.gridLayout_4 = QtWidgets.qgridLayout(self.m_loadmodelwidget)
        self.gridLayout_4.setobjectName("gridLayout_4")
        self.m_loadmodelBtn = QtWidgets.QPushButton(self.m_loadmodelwidget)
        self.m_loadmodelBtn.setobjectName("m_loadmodelBtn")
        self.gridLayout_4.addWidget(self.m_loadmodelBtn, 1)
        self.m_loadmodelEd = QtWidgets.QLineEdit(self.m_loadmodelwidget)
        self.m_loadmodelEd.setobjectName("m_loadmodelEd")
        self.gridLayout_4.addWidget(self.m_loadmodelEd, 1)
        self.gridLayout_6.addWidget(self.m_loadmodelwidget, 1)
        self.la_result = QtWidgets.QLabel(self.m_ForthW)
        self.la_result.setobjectName("la_result")
        self.gridLayout_6.addWidget(self.la_result, 1)
        self.tabWidget.addTab(self.m_ForthW, "")
        self.tab = QtWidgets.QWidget()
        self.tab.setobjectName("tab")
        self.gridLayout_9 = QtWidgets.qgridLayout(self.tab)
        self.gridLayout_9.setobjectName("gridLayout_9")
        self.m_choosemodelEd = QtWidgets.QLineEdit(self.tab)
        self.m_choosemodelEd.setobjectName("m_choosemodelEd")
        self.gridLayout_9.addWidget(self.m_choosemodelEd, 1)
        self.m_choosemodelBtn = QtWidgets.QPushButton(self.tab)
        self.m_choosemodelBtn.setobjectName("m_choosemodelBtn")
        self.gridLayout_9.addWidget(self.m_choosemodelBtn, 1)
        self.m_starttransformBtn = QtWidgets.QPushButton(self.tab)
        self.m_starttransformBtn.setobjectName("m_starttransformBtn")
        self.gridLayout_9.addWidget(self.m_starttransformBtn, 1)
        self.tabWidget.addTab(self.tab, "")
        self.horizontalLayout.addWidget(self.tabWidget)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 1000, 22))
        self.menubar.setobjectName("menubar")
        self.openmenu = QtWidgets.QMenu(self.menubar)
        self.openmenu.setobjectName("openmenu")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setobjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.toolBar = QtWidgets.qtoolbar(MainWindow)
        self.toolBar.setobjectName("toolBar")
        MainWindow.addToolBar(QtCore.Qt.BottomToolBararea, self.toolBar)
        self.menubar.addAction(self.openmenu.menuAction())
        self.retranslateUi(MainWindow)
        self.toolBox.setCurrentIndex(4)
        self.tabWidget.setCurrentIndex(5)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setwindowTitle(_translate("MainWindow", "训练界面"))
        self.m_ImageDirBtn.setText(_translate("MainWindow", "选择图像路径"))
        self.toolBox.setItemText(self.toolBox.indexOf(self.m_First), _translate("MainWindow", "第一步"))
        self.m_SetTrainPareBtn.setText(_translate("MainWindow", "设置训练参数"))
        self.toolBox.setItemText(self.toolBox.indexOf(self.m_Second), "第二步"))
        self.m_StartTrainBtn.setText(_translate("MainWindow", "开始训练"))
        self.toolBox.setItemText(self.toolBox.indexOf(self.m_Third), "第三步"))
        self.m_DetectSinglePicBtn.setText(_translate("MainWindow", "检测图像"))
        self.toolBox.setItemText(self.toolBox.indexOf(self.m_Forth), "第四步"))
        self.m_convertModel.setText(_translate("MainWindow", "模型转换"))
        self.toolBox.setItemText(self.toolBox.indexOf(self.m_fifth), "第五步"))
        self.m_homePagelabel.setText(_translate("MainWindow", "TextLabel"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.home_page), "home"))
        self.la_image.setText(_translate("MainWindow", "TextLabel"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.m_FirstW), "第一步"))
        self.m_MaxIterationL.setText(_translate("MainWindow", "最大训练次数:"))
        self.m_BathSizeL.setText(_translate("MainWindow", "batch_size(批尺寸)"))
        self.m_ImageSizeL.setText(_translate("MainWindow", "图像尺寸"))
        self.m_ValidationRatioL.setText(_translate("MainWindow", "验证集比例"))
        self.m_LearningRateL.setText(_translate("MainWindow", "学习率"))
        self.m_WeightDecayL.setText(_translate("MainWindow", "权重衰减系数:"))
        self.m_isCuda.setText(_translate("MainWindow", "是否使用显卡训练"))
        self.m_OkBtn.setText(_translate("MainWindow", "OK"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.m_SecondW), "第二步"))
        self.m_initModelBtn.setText(_translate("MainWindow", "初始化"))
        self.m_startTrainBtn.setText(_translate("MainWindow", "开始训练"))
        self.m_pauseTrainBtn.setText(_translate("MainWindow", "暂停训练"))
        self.m_resumTrainBtn.setText(_translate("MainWindow", "继续训练"))
        self.m_stopTrainBtn.setText(_translate("MainWindow", "停止训练"))
        self.m_modelSaveBtn.setText(_translate("MainWindow", "选择路径"))
        self.m_modelSaveL.setText(_translate("MainWindow", "模型保存位置:"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.m_ThirdW), "第三步"))
        self.m_loadmodelBtn.setText(_translate("MainWindow", "加载模型:"))
        self.la_result.setText(_translate("MainWindow", "TextLabel"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.m_ForthW), "第四步"))
        self.m_choosemodelBtn.setText(_translate("MainWindow", "选择模型文件"))
        self.m_starttransformBtn.setText(_translate("MainWindow", "转换"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), "第五步"))
        self.openmenu.setTitle(_translate("MainWindow", "打开"))
        self.toolBar.setwindowTitle(_translate("MainWindow", "toolBar"))

(编辑:驾考网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章