把原始圖片隨機分爲訓練集驗證集測試集

import os
import numpy
import random, shutil

def moveSomeFileToNewDir(fileDir, tarDir):
    #sonDirPath = []
    allDir = os.listdir(fileDir)  # 列出指定路徑下的全部文件夾,以列表的方式保存
    for dir in allDir:  # 遍歷指定路徑下的全部文件和文件夾
        sonDirName = os.path.join(fileDir, dir)  # 子文件夾的路徑名稱
        if os.path.isdir(sonDirName):
            #sonDirPath.append(sonDirName)
            pathDir = os.listdir(sonDirName)  # 取圖片的原始路徑
            filenumber = len(pathDir)
            rate = 0.15  # 自定義抽取圖片的比例,比方說100張抽15張,那就是0.15
            picknumber = int(filenumber * rate)  # 按照rate比例從文件夾中取一定數量圖片
            sample = random.sample(pathDir, picknumber)  # 隨機選取picknumber數量的樣本圖片
            print(sample)
            for name in sample:
                oldDir = sonDirName +'\\'+ name
                newDir = tarDir + '\\' + dir
                isExists = os.path.exists(newDir)
                if not isExists:
                    os.makedirs(newDir)
                newTarDir = tarDir +'\\'+dir +'\\'+ name

                print(oldDir, newTarDir)
                shutil.move(oldDir, newDir)


fileDir = r"E:\all_data"      #源圖片文件夾路徑
valDir = r'E:\val_data'       #移動到驗證集目錄路徑
moveSomeFileToNewDir(fileDir, valDir)
testDir = r'E:\test_data'     #移動到測試集目錄路徑
moveSomeFileToNewDir(fileDir, testDir)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章