由于制作训练集和验证集、测试集的需要,我需要从原始数据集中,随机取出(剪切)一定数量的图片。手动挑选毕竟不能保证随机性,且费时费力。故参考了这位博主的方法。
1 ##深度学习过程中,需要制作训练集和验证集、测试集。 2 3 import os, random, shutil 4 def moveFile(fileDir): 5 pathDir = os.listdir(fileDir) #取图片的原始路径 6 filenumber=len(pathDir) 7 rate=0.1 #自定义抽取图片的比例,比方说100张抽10张,那就是0.1 8 picknumber=int(filenumber*rate) #按照rate比例从文件夹中取一定数量图片 9 sample = random.sample(pathDir, picknumber) #随机选取picknumber数量的样本图片 10 print (sample) 11 for name in sample: 12 shutil.move(fileDir+name, tarDir+name) 13 return 14 15 if __name__ == '__main__': 16 fileDir = "./source/" #源图片文件夹路径 17 tarDir = './result/' #移动到新的文件夹路径 18 moveFile(fileDir)
如果是要复制文件可参考以下完整代码
1 import os, random, shutil 2 def copyFile(fileDir): 3 pathDir = os.listdir(fileDir) #取图片的原始路径 4 filenumber=len(pathDir) 5 rate=0.01 #自定义抽取图片的比例,比方说100张抽10张,那就是0.1 6 picknumber=int(filenumber*rate) #按照rate比例从文件夹中取一定数量图片 7 sample = random.sample(pathDir, picknumber) #随机选取picknumber数量的样本图片 8 print (sample) 9 for name in sample: 10 shutil.copy(fileDir+name, tarDir+name) 11 return 12 13 if __name__ == '__main__': 14 fileDir = "./source/" #源图片文件夹路径 15 tarDir = './result/' #移动到新的文件夹路径 16 copyFile(fileDir)