从Market-1501-attribute数据集中提取性别

本文介绍了如何从Market-1501-attribute数据集中提取性别属性,提供了相应的Python代码实现,将图片按性别归类到不同的文件夹中。数据集包含27个属性注解,其中性别标签为1(男性)和2(女性)。代码读取标注文件,解析每个图片的性别信息,并复制到对应的男性或女性文件夹下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文提供了一种从Market-1501-attribute数据集中提取性别属性的方法,并给出了实现代码。

目录

1、数据集介绍

2、代码实现

附:


1、数据集介绍

        Market-1501注释了27个属性。原始数据集包含751个用于训练的身份和750个用于测试的身份。属性在身份级别中进行注释,因此文件包含用于训练的28 x 751个属性和用于测试的28 x 750个属性,其中标签“image_index”表示身份。

        数据集样式如下:

         各个属性的介绍如下:

attributerepresentation in filelabel
gendergendermale(1), female(2)
hair lengthhairshort hair(1), long hair(2)
sleeve lengthuplong sleeve(1), short sleeve(2)
length of lower-body clothingdownlong lower body clothing(1), short(2)
type of lower-body clothingclothesdress(1), pants(2)
wearing hathatno(1), yes(2)
carrying backpackbackpackno(1), yes(2)
carrying bagbagno(1), yes(2)
carrying handbaghandbagno(1), yes(2)
ageageyoung(1), teenager(2), adult(3), old(4)
8 color of upper-body clothingupblack, upwhite, upred, uppurple, upyellow, upgray, upblue, upgreenno(1), yes(2)
9 color of lower-body clothingdownblack, downwhite, downpink, downpurple, downyellow, downgray, downblue, downgreen,downbrownno(1), yes(2)

         在我们提供的下载链接中可以获取标注信息,其中每一条标注都包含了文件名、各个属性,形如:

Market-1501/market1501/bounding_box_test/0001_c1s1_001051_03.jpg 1 0 0 0 0 1 1 1 0 1 2 2

        其中,倒数第三个是我们需要的性别信息。 

2、代码实现

        通过以下代码,可以从数据集中解析出每个图片的属性,并根据性别存放到不同文件夹:

"""
parse person's gender from Market-1501-attribute
"""
import glob
import os
import shutil


def parse_market1501(labels_path, imgs_path, new_dataset_path):
    classes = ['0_Female', '1_Male']
    os.makedirs(new_dataset_path, exist_ok=True)
    Male_path = os.path.join(new_dataset_path, '1_Male')
    Female_path = os.path.join(new_dataset_path, '0_Female')
    os.makedirs(Male_path, exist_ok=True)
    os.makedirs(Female_path, exist_ok=True)
    labels = sorted(glob.glob(labels_path + '/*label_final.txt'))
    for label in labels:
        print("processing{}: ".format(label))
        with open(label, 'r') as f:
            lines = f.readlines()
            for line in lines:
                line_split = line.replace('\n', '').split(' ')
                img_path = os.path.join(imgs_path, line_split[0].split('Market-1501/market1501/')[-1])
                cls_id = 0 if int(float(line_split[-3])) == 1 else 1  # 0 for Male and 1 for Female
                class_name = classes[cls_id]
                shutil.copy(img_path, os.path.join(new_dataset_path, class_name, 'market1501_'+line_split[0].split('/')[-1]))


if __name__ == '__main__':
    labels_path = "../market1501-attribute"
    imgs_path = labels_path + '/Market-1501-v15.09.15'
    new_dataset_path = 'new_dataset_path/from_Market1501'
    parse_market1501(labels_path=labels_path, imgs_path=imgs_path, new_dataset_path=new_dataset_path)

附:

链接: https://pan.baidu.com/s/12C3tIMjfZai-0jj5eroXww?pwd=a8wb 提取码: a8wb 
 


参考:

GitHub - vana77/Market-1501_Attribute: 27 hand-annotated attributes of Market-1501

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AICVHub

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值