多标签分类数据集制作
模仿fashion-product-images数据集,制作自己的多标签分类数据集
先来看看fashion-product-images数据集
数据集下有两个内容,放图片的文件夹和一个.csv文件(保存图片位置,类别标签)
制作数据集的准备工作
我的数据集有两个属性,颜色和形状,颜色有Tc_Red和Tc_Lightwhite两个类别,形状有TS_Swollen和Ts_Thin两个类别。分别将图片放于对应属性文件夹下。注意,一张图片只能选择同一属性一种类别,例如图片01不能同时出现再Tc_Red和Tc_Lightwhite文件夹中。
每张图片和编号是一一对应的,这里截图仅用于测试代码,一个编号可能对应两个不同内容图片。
制作.csv文件
新建val.csv文件,运行下列代码,即可生成带有图片位置和标签的val.csv文件
import os
import csv
img_dic = {}
label2idx = {'TC_LightWhite': 0, 'TC_Red': 1, 'TS_Swollen': 2, 'TS_Thin': 3}
with open('val.csv', mode='w', newline='') as file_handle:
writer = csv.writer(file_handle)
writer.writerow(['image_path', 'color', 'shape'])
for home, dirs, files in os.walk('/home/xxx/tx/datasets/muti-label/image/'):
for filename in files:
label = label2idx[home.split('/')[-1]]
img_path = os.path.join("/home/xxx/tx/datasets/muti-label/image", filename)
if filename not in img_dic:
img_dic[filename] = [label]
else:
img_dic[filename].append(label)
for filename, labels in img_dic.items():
color = ''
shape = ''
for label in labels:
if label in [0, 1]:
color = label
else:
shape = label
writer.writerow([os.path.join("/home/hyhz/tx/datasets/muti-label/shap", filename), color, shape])