將指定的數據集路徑輸入到函數中,函數將創建對應路徑,並復制指定路徑下的文件到當前所創建的路徑下:
其中划分比例暫時還沒有寫出自定義,也可以自己添加修改
代碼中主要應用了os下的lstdir函數和shutil下的函數,具體代碼可參考如下
1 import os 2 import shutil 3 from random import randrange 4 5 img_root0 = 'E:/****/PatternNet' #數據集目錄****這里省略了路徑,自行修改 6 7 #隨機生成訓練集和測試集,比例為7:1 8 def ImgSet_save(images_path=img_root0): 9 save_trainpath = './data/train_images' 10 sava_testpath = './data/test_images' 11 modnum = randrange(8) #首先隨機生成一個隨機數 12 #開始划分訓練集和測試集並保存 13 for temp in os.listdir(images_path): 14 image_dir = images_path +'/'+ temp 15 i = 0 16 print(image_dir) #可以輸出查看下該分類下的數據集是什么 17 for imagename in os.listdir(image_dir): #獲取具體的文件名稱 18 src_image = image_dir + '/'+ imagename 19 #print(src_image) 20 if i%8 == 0: #將數據集划分為7:1,每次處理完八張圖片后變化一次隨機數 21 modnum = randrange(8) 22 i+=1 23 if i %8==modnum: #划分為測試集 24 sava_path = sava_testpath+'/'+temp+'/' 25 if not os.path.exists(sava_path): 26 os.makedirs(sava_path) 27 shutil.copy(src=src_image,dst=sava_path) #復制文件 28 else: #划分為訓練集 29 save_path = save_trainpath+'/'+temp+'/' 30 if not os.path.exists(save_path): 31 os.makedirs(save_path) 32 shutil.copy(src=src_image,dst=save_path) # 33 34 if __name__ == '__main__': 35 ImgSet_save() 36 print("數據集划分完成,划分為7:1的訓練集和測試集")
我這PatternNet目錄下是38個類別的圖像: