我正在尝试使用jupyter Notebook建立人脸检测模型,并在尝试使用文件名和标签编写.csv文件时遇到一些困难。
这是我使用的功能:
##Attaching label to correct file names
item_list = glob.glob('data/dest/celeba/faces/*/*.jpg'. )
item_df = pd.DataFrame({'image_name':pd.Series(item_list).apply(lambda x: '/'.join(x.split('/')[-2]))})
istem_df['image_id'] = item_df.image_name.apply(lambda x: x.split('/')[1])
## Creating final label set
label_df = pd.read_csv('data/dest/celeba/labels.csv')
label_df = label_df.merge(item_df, on='image_id', how='inner')
label_df.rename(columns={'label':'tags'}, inplace=True)
label_df.loc[:,['image_name','tags']].to_csv('data/dest/celeba/labels1.csv', index=False)
我认为,“ labels.csv”应该是应该的。这是文件开头的几行:
,image_id,label
0,000001.jpg,Arched_Eyebrows Attractive Brown_Hair Heavy_Makeup High_Cheekbones Mouth_Slightly_Open No_Beard Pointy_Nose Smiling Straight_Hair Wearing_Earrings Wearing_Lipstick Young
1,000002.jpg,Bags_Under_Eyes Big_Nose Brown_Hair High_Cheekbones Mouth_Slightly_Open No_Beard Smiling Young
应再次用“标签”书写。但是labels1.csv看起来像这样:
image_name,tags
否则为空。当我打电话给print(data.c,'\n',data.classes)
时,它会打印0 []
。
有人可以帮我解释我在做什么错吗?
编辑。我将其编辑到此处以避免聊天。因此,我已经根据收到的帮助编辑了代码,这就是现在的样子:
## Attachhing label to correct file names
item_list = glob.glob('data/dest/celeba/faces/*/*.jpg')
item_df = pd.DataFrame({'image_name':pd.Series(item_list).apply(lambda x: '/'.join(x.split('/')[-2]))})
item_df['image_id'] = item_df.image_name.apply(lambda x: x.split('/')[1])
## Creating final label set
label_df = pd.read_csv('data/dest/celeba/labels.csv')
label_df = label_df.merge(item_df, left_on='image_id', right_on='image_id')
label_df.rename(columns={'label':'tags'}, inplace=True)
label_df.loc[:,['image_name','tags']].to_csv('data/dest/celeba/faces/labels.csv', index=False)
这仍然给我一个空的“ labels1.csv”文件,仅包含标题:image_name,tags
。
答案 0 :(得分:0)
您正在使用.loc方法从行ID中仅获取['image_name','tags']。 更改此部分:
label_df.loc[:,['image_name','tags']].to_csv('data/dest/celeba/labels1.csv', index=False)
与此:
header = ["image_id", "tags"]
label_df.to_csv('data/dest/celeba/labels1.csv', columns = header, index=False)
答案 1 :(得分:0)
我认为首先您必须在“ data / celeba / faces /”中创建两个名为“ training”和“ validation”的文件夹。
代码中的某些更改:
new String(targetString.getBytes(), "UTF-8")
这将通过合并数据框来帮助您创建“ label.csv”,并将数据集分为训练和验证。