os.rename()方法实现分割数据集

以kaggle猫狗大战数据集为例

官网上下载下来的目录是这样的:
在这里插入图片描述
里面就是一些猫猫狗狗的图片混在一起,文件名就是它们的标签。

我们要实现的结构是这样的:
在这里插入图片描述
将小猫小狗分类放好,并且训练集和验证集各一部分。
方法:
通过文件名匹配的方式利用rename方法将图片所在文件夹改变。
代码:

path = 'D:\Pytorch\kaggle\input\dogsvscats'

#读文件夹内的所有内容
files =glob.glob(os.path.join(path,'*\*.jpg'))#直接glob不太行

print(f'Total no of images {len(files)}')
no_of_images = len(files)

#创建可用于创建验证数据集的混合索引
shuffle = np.random.permutation(no_of_images)#随即返回一个序列

os.mkdir(os.path.join(path,'valid'))

#使用标创建目录
for t in ['train','valid']:
    for folder in ['dog\\','cat\\']:
        os.mkdir(os.path.join(path,t,folder))

#将图片的一小部分子集复制到validation文件夹
for i in shuffle[:2000]:
    folder = files[i].split('\\')[-1].split('.')[0]#按str分割num+1次,-1代表分割所有
    image = files[i].split('\\')[-1]
    os.rename(files[i],os.path.join(path,'valid',folder,image))#rename这个方法用得不对

for i in shuffle[2000:]:
    folder = files[i].split('\\')[-1].split('.')[0]#按str分割num+1次,-1代表分割所有
    image = files[i].split('\\')[-1]
    os.rename(files[i],os.path.join(path,'train',folder,image))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值