目前從事深度學習的工作,在訓練模型的時候,每次都要修改源碼的參數,感覺比較麻煩,所以想着通過可視化的界面來操作,節省大量的時間。目前開源最多的神經網絡算法是用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根據自己的主機配置選擇,顯存高的可以選擇大一些。