簡體   English   中英

Keras圖像增強:如何選擇“每個時期的步數”參數並在訓練過程中包括特定的增強?

[英]Keras image augmentation: How to choose “steps per epoch” parameter and include specific augmentations during training?

我正在使用Keras訓練圖像分類CNN。 使用ImageDataGenerator函數,我對訓練圖像進行了一些隨機變換(例如旋轉,剪切,縮放)。 我的理解是,這些變換在傳遞給模型之前會隨機應用於每個圖像。

但是有些事情我不清楚:

1)在訓練過程中,如何確定圖像的所有特定旋轉角度(例如90°,180°,270°)都包括在內。

2)應該將model.fit_generatorsteps_per_epoch參數設置為數據集的唯一樣本數除以flow_from_directory方法中定義的批量大小。 當使用上述圖像增強方法時,由於它們會增加訓練圖像的數量,這仍然適用嗎?

謝謝,馬里奧

不久前,我對自己提出了同樣的問題,我認為可能的解釋在這里:

考慮以下示例:

    aug = ImageDataGenerator(rotation_range=90, width_shift_range=0.1, 
                             height_shift_range=0.1, shear_range=0.2, 
                             zoom_range=0.2, horizontal_flip=True, 
                             fill_mode="nearest")

對於問題1):我指定了rotation_range = 90,這意味着在您流傳輸(檢索)數據時,生成器將以0到90度之間的角度隨機旋轉圖像。 您無法指定ImageDataGenerator所做的確切角度原因:隨機生成旋轉。 關於您的第二個問題,這也非常重要。

對於問題2):是的,它仍然適用於數據擴充方法。 一開始我也很困惑。 原因是由於圖像是隨機生成的,因此對於每個時期,網絡看到的圖像都與前一個時期不同。 這就是為什么數據被“擴充”的原因-擴充不是在一個時代內完成的,而是在整個訓練過程中完成的。 但是,我看到其他人指定了原始steps_per_epoch的2x值。

希望這可以幫助

暫無
暫無

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

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