![](/img/trans.png)
[英]Keras ImageDataGenerator method 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,...)
您正在給出directory = None
,因為您將絕對路徑放在 dataframe 的image_path
列中。 並且指定了一個種子,因為默認情況下shuffle= True
並且它應該是 true 因為您的 dataframe 樣本是按 class 排序的。 並在此處設置種子,可以確保驗證數據保持不變。
這應該讓您總體了解如何在仍然使用生成器的同時克服這個問題。 如果您發現任何問題,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.