簡體   English   中英

ImageDataGenerator flow_from_directory 與孫文件夾

[英]ImageDataGenerator flow_from_directory with grandchild folder

我有一個 k 折訓練數據集,但它的結構有一個孫文件夾,例如:

/monkey
     / howler monkey
         - img1
         - img2
     / japanese macaque
         - img1
         - img2
/dog
     / bulldog
         - img1
         - img2
     / Rottweiler
         - img1
         - img2

在這種情況下,當我使用ImageDataGenerator flow_from_directory時。 准確找到 8 個 img,但 class 有 2 個,而不是 4 個。我怎樣才能獲得 4 個類?

我有這個問題很長時間了,我找不到使用.flow_from_directory的直接答案。 我所做的是使用.flow_from_dataframe代替。 首先,我剛剛創建了一個 dataframe 和圖像路徑及其對應的 label(在你的情況下是吼猴、日本獼猴等)。 制作此 dataframe 時,您不會在任何時候實際加載圖像。

它會 go 是這樣的:

images_paths_label = []
for root_class in os.listdir(root_folder):
   temp_class = os.path.join(root_folder, root_class)
   for class in os.listdir(temp_class):
       temp_subclass = os.path.join(temp_class, class)
       for image in os.listdir(temp_subclass):
           temp_img_path = os.path.join(temp_subclass, image)
           images_paths_label.append([temp_img_path, class])

df = pd.DataFrame(images_paths_label, columns = ['image_path', 'label'])

# Now the flow_from_dataframe part
generator = ImageDataGenerator(validation_split = 0.2)
train_generator = generator.flow_from_directory(df, directory = None, x_col = 'image_path', y_col = 'label', seed = 14,...)
  • 在使用之前檢查代碼片段的縮進。 我只是在stackoverflow中輸入它。

您正在給出directory = None ,因為您將絕對路徑放在 dataframe 的image_path列中。 並且指定了一個種子,因為默認情況下shuffle= True並且它應該是 true 因為您的 dataframe 樣本是按 class 排序的。 並在此處設置種子,可以確保驗證數據保持不變。

這應該讓您總體了解如何在仍然使用生成器的同時克服這個問題。 如果您發現任何問題,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM