目标分类数据集划分
功能介绍:目标分类数据集划分功能将目标分类的原始数据集划分为训练集、验证集和测试集,用于模型的训练、验证和评估,确保模型在不同数据集上的准确性和泛化能力。

操作步骤:
打开数据集划分界面:在平台主界面中,找到并点击目标分类数据集划分功能入口,进入数据集划分界面。界面主要分为设定源文件区、设定目标文件区和数据集划分区,操作与目标检测数据集划分类似。
设定源文件路径:在设定源文件区,点击“设定文件夹”按钮,为“源数据集图片文件夹”选择路径。选择后,相应文件夹的全路径将显示在对应的主界面上。
设定目标文件路径:在设定目标文件区,点击“设定文件夹”按钮,为“目标数据集图片文件夹”选择路径。选择后,相应文件夹的全路径将显示在对应的主界面上。
选择数据集划分比例:在数据集划分区,有训练集、验证集和测试集选项。训练集和验证集默认必选且不可取消选择,测试集默认不选。
若不勾选测试集,训练集和验证集将按照8:2的比例进行划分。 若勾选测试集,训练集、验证集和测试集将按照7:2:1的比例进行划分。 执行数据集划分:点击“划分数据集”按钮后,系统会首先弹出一个进度条窗口。然后,系统会基于随机原则对数据集图片进行排序,并按照您选择的比例进行训练集、验证集和测试集的划分。同时,标注文件会根据图片的划分情况进行相应的划分。最后,系统会在目标数据集图片文件夹建立训练集、验证集和测试集的子目录,并将划分好的图片文件移动到对应的子目录中。进度条完成后,系统会提示已完成数据集划分,点击“确定”后自动返回主界面。
执行完代码后,分别先生成train、val、test三个文件夹,又分别在这三个文件夹下生成dog和horse两个子文件夹。

目标分类数据集划分界面代码中函数、类及方法的功能
类及方法
ClassficationDatasetDivisionUI 类
功能:创建一个用于图像分类数据集划分的用户界面。
__init__ 方法
功能:初始化类的实例,显式定义各个 QLabel 属性,并调用 initUI 方法初始化界面。
initUI 方法
功能:设置窗口的标题和大小,创建并布局主界面的各个组件。
create_blank_label 方法
功能:创建一个空白的 QLabel 组件。
create_source_group_box 方法
功能:创建一个包含源文件设置的 QGroupBox 组件。
create_target_group_box 方法
功能:创建一个包含目标文件设置的 QGroupBox 组件。
create_folder_setting_layout 方法
功能:创建一个包含文件夹设置的 QHBoxLayout 组件,包括标题标签、路径标签和设定文件夹按钮。
create_division_group_box 方法
功能:创建一个包含数据集划分选项的 QGroupBox 组件,包括训练集、验证集和测试集的复选框。
create_command_group_box 方法
功能:创建一个包含命令按钮的 QGroupBox 组件,包括划分数据集按钮。
set_source_image_folder 方法
功能:打开文件选择对话框,让用户选择源数据集图片文件夹,并将选择的路径显示在对应的标签上。
set_source_text_folder 方法
功能:打开文件选择对话框,让用户选择源 Text 标注文件夹,并将选择的路径显示在对应的标签上。
set_target_image_folder 方法
功能:打开文件选择对话框,让用户选择目标数据集图片文件夹,并将选择的路径显示在对应的标签上。
set_target_text_folder 方法
功能:打开文件选择对话框,让用户选择目标 Text 标注文件夹,并将选择的路径显示在对应的标签上。
divide_dataset 方法
功能:检查用户是否设置了图片文件夹,若未设置则给出提示;获取源图片文件夹和目标图片文件夹的路径,根据测试集复选框的选择设置数据集划分比例;创建目标目录;显示进度对话框;启动一个线程调用 _divide_dataset_thread 方法进行数据集划分。
_divide_dataset_thread 方法
功能:遍历源目录下的每个类别文件夹,创建目标类别目录;获取每个类别下的所有图像文件并随机打乱;根据划分比例将图像文件划分为训练集、验证集和测试集;将划分好的图像文件复制到对应的目标目录中;更新进度对话框;关闭进度对话框并发出提示音。
目标分类数据集划分界面代码层级关系
ClassficationDatasetDivisionUI
├── __init__
│ └── initUI
├── initUI
│ ├── create_blank_label
│ ├── create_source_group_box
│ │ ├── create_blank_label
│ │ └── create_folder_setting_layout
│ ├── create_target_group_box
│ │ ├── create_blank_label
│ │ └── create_folder_setting_layout
│ ├── create_division_group_box
│ │ └── create_blank_label
│ ├── create_command_group_box
│ └── create_blank_label
├── create_blank_label
├── create_source_group_box
│ ├── create_blank_label
│ └── create_folder_setting_layout
├── create_target_group_box
│ ├── create_blank_label
│ └── create_folder_setting_layout
├── create_folder_setting_layout
├── create_division_group_box
│ └── create_blank_label
├── create_command_group_box
├── set_source_image_folder
├── set_source_text_folder
├── set_target_image_folder
├── set_target_text_folder
├── divide_dataset
│ └── _divide_dataset_thread
└── _divide_dataset_thread
以上层级关系展示了类和方法之间的调用关系,其中缩进表示调用的层级。例如,__init__
方法调用了initUI
方法,所以initUI
方法缩进显示在__init__
方法下方。





