您好,登錄后才能下訂單哦!
這篇文章給大家介紹 TensorFlow 中怎么實現數據增強操作,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
數據擴充是現有訓練數據集的大小和多樣性的增加,而無需手動收集任何新數據。通過對現有數據執行一系列預處理轉換,可以獲取此增強數據,對于圖像數據,這些轉換可以包括水平和垂直翻轉,傾斜,修剪,旋轉等。總而言之,與僅復制相同的數據相反,這種擴充的數據能夠模擬各種細微不同的數據點。這些“附加”圖像的細微差別應該足以幫助訓練更魯棒的模型。同樣,這就是想法。
本文的重點是在TensorFlow中第二種方法的實際實施,以減輕少量圖像訓練數據(數據增強)的問題,而稍后將對轉移學習進行類似的實際處理。
當卷積神經網絡學習圖像特征時,我們希望確保這些特征以各種方向出現,以便使經過訓練的模型能夠識別出人的雙腿可以同時出現在圖像的垂直和水平方向。除了增加數據點的原始數量之外,增強功能在這種情況下還可以通過采用諸如圖像旋轉的變換來幫助我們。作為另一個示例,我們還可以使用水平翻轉來幫助模型訓練識別貓是直立的貓還是被倒置拍照的貓。
數據增強不是萬能藥;我們不希望它能解決我們所有的小數據問題,但是它可以在許多情況下有效,并且可以通過將其作為一種全面的模型訓練方法的一部分,或者與另一種數據集擴展技術(例如,轉移學習)
在TensorFlow中,使用ImageDataGenerator類完成數據擴充。它非常易于理解和使用。整個數據集在每個時期循環,并且數據集中的圖像根據選擇的選項和值進行轉換。這些轉換是在內存中執行的,因此不需要其他存儲(盡管save_to_dir
如果需要,該參數可用于將增強的圖像保存到磁盤)。
如果您正在使用TensorFlow,則可能已經使用了ImageDataGenerator
簡單的方法來縮放現有圖像,而沒有進行任何其他擴充。可能看起來像這樣:
ImageDataGenerator
執行增強的更新可能如下所示:
這是什么意思呢?
rotation_range
-隨機旋轉的度數范圍;在上述示例中為20度
width_shift_range
-總寬度的一部分(如果值<1,在這種情況下),以隨機地水平轉換圖像;上例中為0.2
height_shift_range
-總高度的一部分(如果值<1,在這種情況下),以垂直方向隨機平移圖像;上例中為0.2
shear_range
-逆時針方向的剪切角,以度為單位,用于剪切轉換;上例中為0.2
zoom_range
-隨機縮放范圍;上例中為0.2
horizontal_flip
-用于水平隨機翻轉圖像的布爾值;在上面的例子中為真
vertical_flip
-布爾值,用于垂直隨機翻轉圖像;在上面的例子中為真
fill_mode
-根據“常數”,“最近”,“反射”或“環繞”填充輸入邊界之外的點;在以上示例中最接近
然后,您可以使用該ImageDataGenerator
flow_from_directory
選項指定訓練數據的位置(以及選擇是否進行驗證,如果要創建驗證生成器),例如,使用選項,然后使用fit_generator
在訓練過程中流向您網絡的這些增強圖像來訓練模型。此類代碼的示例如下所示:
關于 TensorFlow 中怎么實現數據增強操作就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。