在做图像分类时候,会收集一批相应的数据,这里将其称为总数据集total-data
,
按照一般的做法,会将总数据集划分为训练集(train-data
)、验证集(valid-data
)以及测试集(test-data
)。这里为了方便,将总的数据集划分为训练集和验证集。
有时候使用随机分配的算法会导致每个标签下样本的个数分布不是很均匀,有的标签下样本个数很多,有的标签下样本个数很少,这就导致了一种数据不均衡问题,使得训练的模型偏向于数据样本多的标签。那么我们能不能按照相应的比例,也将每一个标签下的数据按照对应的比例进行划分呢?这其实也是比较好实现的。
假设项目目录为dataset
,下面有total-data
文件夹、train-data
以及test-data
文件夹
total-data
目录下存放的是所有的图像数据集,图像命名样式为label_xxxx.jpg
1.获取所有的图像样本名称:
2.按照比例将total_data.txt
划分为train_data.txt
以及test_data.txt
:
其中,split_train_test.py
样式如下:
3.统计分析下每个标签下样本的数量
其中,statistic.py
:
从总数据集中复制对应的图像文件到训练集和测试集
其中,cp_file.py
:
后续就是准备标签,以及定义模型及训练了,这里不做过多介绍。上述有些功能在一些深度学习框架中有实现,但自己实现一下可以更加清楚一下整个流程。