由於制作訓練集和驗證集、測試集的需要,我需要從原始數據集中,隨機取出(剪切)一定數量的圖片。手動挑選畢竟不能保證隨機性,且費時費力。故參考了這位博主的方法。
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)