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
有需要联系我
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")) (编辑:驾考网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
