Affectnet数据集 按标签值对图像进行分类(备忘)
设计目标如下:
首先,对Affectnet数据集中大概42万张图像,我们根据需要将arousal(或valence)的标注值-1到1,按步长0.2分为10个区间,统计每个区间的样本个数,并将整体的标记csv文件分成11个单独的csv文件,分别是-1.0–0.8, … ,0.8-1,第11个区间为图像中未检测到人脸的图像,其arousal和valence的标注值都为-2。 保存每个区间样本的文件路径名以及其对应的arousal(valence)值(当然也可以是离散的其它标注,只要原本的标记文件里存在的都行)。
这样分类的目的是为了保证训练样本的平衡性,我们可以每个区间随机选取等量的训练样本,保证训练模型的泛化能力~
代码如下:
import csv
#linux系统下,可以不设置newline参数,windows系统下必须设置,否则存储会出问题
with open(r'D:/Dvidide_Data/file1.csv', 'a+', newline = "") as csvfile1:
writer = csv.writer(csvfile1)
writer.writerow(['img', 'valence'])
with open(r'D:/Dvidide_Data/file2.csv', 'a+', newline = "") as csvfile2:
writer = csv.writer(csvfile2)
writer.writerow(['img', 'valence'])
with open(r'D:/Dvidide_Data/file3.csv', 'a+', newline = "") as csvfile3:
writer = csv.writer(csvfile3)
writer.writerow(['img', 'valence'])
with open(r'D:/Dvidide_Data/file4.csv', 'a+', newline = "") as csvfile4:
writer = csv.writer(csvfile4)
writer.writerow(['img', 'valence'])
with open(r'D:/Dvidide_Data/file5.csv', 'a+', newline = "") as csvfile5:
writer