目前从事深度学习的工作,在训练模型的时候,每次都要修改源码的参数,感觉比较麻烦,所以想着通过可视化的界面来操作,节省大量的时间。目前开源最多的神经网络算法是用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根据自己的主机配置选择,显存高的可以选择大一些。