对数据集随机抽取图片并且更改数据集文件中的图片名

从数据集中随机抽取部分图片到另一个文件夹

背景

由于电脑配置有限,做深度学习任务时,代码跑得太慢,因此对数据集进行缩小,而且我需要的是一个序列的数据集,数据图片不能集中在莫一块,人工划分费时费力,效果还不好。在这里插入图片描述

在这里插入图片描述
我一共有五个文件夹,全部是雾天图片数据集。每个文件夹大概都有10000+的图片。目前
我只需要每个文件夹一千张。

代码

import os, random, shutil

def moveFile(fileDir):
        pathDir = os.listdir(fileDir)    #取图片的原始路径
        filenumber=len(pathDir)
        rate=0.1    #自定义抽取图片的比例,比方说100张抽10张,那就是0.1
        picknumber=int(filenumber*rate) #按照rate比例从文件夹中取一定数量图片
        sample = random.sample(pathDir, picknumber)  #随机选取picknumber数量的样本图片
        print (sample)
        for name in sample:
                shutil.move(fileDir+name, tarDir+name)
        return

if __name__ == '__main__':
   fileDir = "pair_wise_gaosu(11.20)/dataset/1000+/3000m/"    #源图片文件夹路径
   tarDir = 'pair_wise_gaosu(11.20)/dataset/1000+/'    #移动到新的文件夹路径
   moveFile(fileDir)

提取后,将其合并,例如:1-40m全部放在0-50m文件夹中,依次类推。即可随机抽取我们需要的图片数量。

本人原创,转载请附上链接:
https://editor.csdn.net/md?not_checkout=1&articleId=111709205

更改文件夹中的图片名

背景

为了方便我的tensorflow代码读取图片,文件名需要有特定的标签。
原始文件名:
在这里插入图片描述
在这里插入图片描述

我的训练代码是以$ 中 的 字 符 座 位 标 签 , 因 此 必 须 加 上 中的字符座位标签,因此必须加上 $字符。

代码

import os
import re
import sys

data_dir = os.getcwd() + '\\' + 'dataset'

folder_list = os.listdir(data_dir)
folder_num = len(folder_list)
print(folder_list)
for i, folder_name in enumerate(folder_list): # 当前图像文件夹名称
    print('\n当前场景文件夹名字为: %s\n' % folder_name)
    image_list = os.listdir(data_dir + '\\' + folder_name)
    image_num = len(image_list)

    num = 1

    for image_name in image_list:
        #print('当前场景图像的名字为: %s' % image_name)
        old_name = data_dir + '\\' + folder_name + '\\' + image_name
        a = image_name[:-4]

        new_name = data_dir + '\\' + folder_name + '\\' + folder_name + '$'+str(i)+'$' + '_' + str(num) + '.jpg'
        os.rename(old_name, new_name)

        num += 1
    print('文件夹%s中的图像已更名完毕.' % folder_name)
    print('---------------------------------------')

print('所有文件夹的图像重命名完毕.')

实现后结果:
在这里插入图片描述

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将不同文件的数据划分为训练集和测试集,你可以按照以下步骤进行: 1. 遍历每个文件夹,并将文件夹路径存储在一个列表。 2. 对于每个文件夹,可以使用随机抽样的方式将数据划分为训练集和测试集。你可以自定义训练集和测试集的比例,例如 80% 的数据作为训练集,20% 的数据作为测试集。 3. 对于每个文件夹,可以使用文件操作库(如Python的`os`库)来获取文件列表。 4. 针对每个文件夹的文件列表,可以使用随机抽样的方式将文件分配到训练集和测试集。你可以使用随机数生成器来生成随机索引或者使用现成的库函数,如`random.sample()`。 5. 将训练集和测试集的文件路径分别存储在两个不同的列表。 下面是一个示例代码片段,演示如何将不同文件的数据划分为训练集和测试集: ```python import os import random # 文件夹路径列表 folder_paths = ['folder1', 'folder2', 'folder3'] # 训练集和测试集比例 train_ratio = 0.8 # 存储训练集和测试集文件路径的列表 train_files = [] test_files = [] # 遍历每个文件夹 for folder_path in folder_paths: # 获取文件列表 file_list = os.listdir(folder_path) # 随机抽样,划分训练集和测试集 train_size = int(len(file_list) * train_ratio) train_samples = random.sample(file_list, train_size) test_samples = list(set(file_list) - set(train_samples)) # 构建训练集和测试集文件路径列表 train_files.extend([os.path.join(folder_path, file) for file in train_samples]) test_files.extend([os.path.join(folder_path, file) for file in test_samples]) # 打印训练集和测试集文件路径列表 print("Train Files:") print(train_files) print("Test Files:") print(test_files) ``` 这个示例代码可以根据你的需求进行修改和扩展,例如你可以添加更多的文件夹路径,调整训练集和测试集的比例等。希望对你有所帮助!如果还有其他问题,请继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值