Python-给人脸数据添加label分类

有时候需要对同一文件夹下的内容标记相同的 label 作为其类别。下面以人脸数据为例说明。不同文件夹包含着不同人的多张人脸图像,每个文件夹都是不同的类别。为了训练模型做分类,需要为不同的人添加不同的 label (相当于分类问题中响应变量 y)。

ORL人脸数据库

Olivetti Research Laboratory人脸数据库,诞生于英国剑桥AT&T实验室。该人脸库包含40个人,共400张面部图像。每个人包含10幅经过归一化处理的灰度图像,图像尺寸均为92×112。

下载地址:
https://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html

添加 label


下载下来的数据是不带 label 的数据,为了后面训练神经网络,我们可以给它们打上 label 输出到 txt 文件,类别为0~39,每个类别有10个样本。代码如下:

import os

def main():
    path = 'F:\ORL人脸数据库'
    f = open('F:\ORL人脸数据库\label.txt','w')

    root, dirs, files = next(os.walk(path))
    for i in range(len(dirs)):
        fs = os.listdir(path + '/' + dirs[i])
        for file in fs:
            line = os.path.join(root,dirs[i],file) + ' ' + str(i) + '\n'
            #print(line)
            f.write(line)

if __name__ == '__main__':
    main()

输出的 txt 文件截图:

至此完成了添加 label 任务。

如果有需要将 label 加上一个起始数变成新的 label 并更新 txt 文件,代码如下:

import os

def main():

    label_file = 'F:/ORL人脸数据库/label.txt'
    f = open(label_file, 'r')
    lines = f.readlines()

    num = int(input('请输入起始数:'))
    f = open(label_file, 'w')

    lines2 = []

    for i in range(len(lines)):
        line = lines[i].rstrip()
        parts = line.split()

        label2 = str(int(parts[1]) + num)
        line2 = parts[0] + ' ' + label2 + '\n'

        lines2.append(line2)

    f.writelines(lines2)

if __name__ == '__main__':
    main()

运行结果截图:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值