最近在做一個圖像分類的比賽,作為初次接觸深度學習的菜鳥,上手了keras。說實話,除了keras教程,中文博客的技術支持太差了。正在頭大的學習中...廢話不多說,記錄一下學習中的一些小細節。在遇到generator.flow_from_directory('data/train'...)這個函數時,需要輸入訓練圖片的路徑。此時訓練圖像和驗證圖像都在一個目錄下,所以我需要重建兩個文件來分別放訓練圖像和驗證圖像。開始,我想,利用opencv將每張圖片讀出來,然后再根據是否為訓練圖像或者驗證圖像分別重新寫到重新建的文件夾里。后來發現python中的 from shutil import copy2 函數可以直接將圖片放到指定的路徑下。
import os import random import shutil from shutil import copy2 trainfiles = os.listdir('Data/train') num_train = len(trainfiles) index_list = range(num_train) random.shuffle(index_list) num = 0 trainDir = 'Data/pre_train' validDir = 'Data/pre_valid' for i in index_list: fileName = os.path.join('Data/train', trainfiles[i]) if num < num_train*0.8: copy2(fileName, trainDir) else: copy2(fileName, validDir) num += 1
簡單思路:將原來‘Data/train’路徑下的圖片名讀出,然后打亂所有圖片的順序,將打亂順序后的總圖片數的前80%圖片作為訓練數據放到新建的'Data/pre_train'目錄下,其余的圖片放到'Data/pre_valid'目錄下。