根据文件夹中的图片数据集生成.txt文件标签


前言

深度学习中的与图片有关的任务,如图像识别,图像分类,目标检测,图像分割等,在准备图片数据集时,图片的序号和标签往往是由.txt文件获取的。本文将介绍如何给文件夹中的图片数据集上标签并保存的.txt文件中。


数据集格式

以二分类任务为例,我的数据集目录是:

E:/c/images/001.bad_apple

E:/c/images/002.good_apple

其中,001.bad_apple文件夹中包含若干张图片和一个Readme文件。图片命名格式是0.bmp、1.bmp、2.bmp……;Readme文件是一个.txt文件,用于说名该文件夹下的一些相关信息。002.bad_apple中的文件命名和格式与001.bad_apple完全相同。

一些细节:生成的.txt文件中,每一行的格式是"序号+空格+类别标签"。其中序号从1开始,类别标签从1开始。

Python实现

函数实现:

import os

def generate(dir,label):
    '''
    dir:输入的文件路径,本例是E:/c/images
    label:要生成的标签
    '''
 
    #返回dir中的所有文件,本例中是001.bad_apple和002.good_apple
    files = os.listdir(dir)
    #文件夹中的数据是按序排好的,否则可以先排序
    #files.sort()  
    
    #要写入的文件名,若没有则生成一个新的
    listText = open('E:/image_class_labels.txt','a')
    
    #序号i
    i = 1
    for file in files:
        #返回路径和文件名
        fileType = os.path.split(file)
        #print(file)
        #print(fileType) 
        #图片数据集中可能会有一个readme是.txt格式的,忽略它
        #readme文件也可能是其他格式的文件,根据修改即可
        #若没有readme即可删掉
        if fileType[1] == '.txt':
            #print(fileType[1])
            continue
        #生成序号和标签
        #i和label必须是同类型的
        name = str(i) + ' ' + str(int(label)) +'\n'
        #生成文件名和标签
        #name = file + ' ' + str(int(label)) +'\n'
        listText.write(name)
        i += 1
        
    listText.close()

传参:


#图片数据集路径
out_path = 'E:/c/images'

#标签i
i = 1
#获取到该文件夹下的所有子文件夹,即每一类的图片文件夹
folderlist = os.listdir(out_path)
#遍历每一类中的每一张图片          
for folder in folderlist:
	#生成标签
    generate(os.path.join(out_path, folder),i)
    i += 1

注意事项

  1. 文件目录和格式根据自己的数据集的目录和格式结合代码修改(修改out_path)。若只有一个图片文件夹其中有不同类别的图片则去掉一个循环,且将图片顺序与序号对应好即可(可以排序等等)。
  2. .txt标签文件中的序号和类别标签根据自己的需要修改(修改两个i)。由于笔者是模仿cub-200数据集的标签格式,所以序号和标签都是从1开始,而不是从0开始。

没有硬件条件,需要云服务的同学可以扫码看看:
请添加图片描述

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

十小大

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

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

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

打赏作者

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

抵扣说明:

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

余额充值