iT邦幫忙

2025 iThome 鐵人賽

0
佛心分享-IT 人自學之術

深度學習Tensorflow 2.X系列 第 29

深度學習中的影像資料預處理與資料增強

  • 分享至 

  • xImage
  •  
  1. 影像預處理:統一影像尺寸 (Image Resizing)
    在訓練神經網路時,輸入影像的大小通常需要固定,然而自行收集的資料集中的影像尺寸往往不一。因此,在預處理階段需要將圖片統一尺寸。
  • 目的: 將大小不一的輸入影像統一為神經網路所需的固定尺寸。
  • 示例程式 (基於 TensorFlow/NumPy/Matplotlib):
    • 使用 tf.io.read_file(x) 讀取影像檔案。
    • 使用 tf.image.decode_jpeg(image, channels=3) 將 JPEG 格式解碼成三維張量。
    • 使用 tf.image.resize(image, [128, 128]) 將影像縮小或放大到指定尺寸(例如 128x128)。
    • 最後,將張量轉換為 NumPy 陣列 (np.asarray(image.numpy(), dtype='uint8')) 並使用 plt.imshow(image) 顯示。
    • 結果範例: 原始影像大小可能是 (620,620,3),經過處理後變成 (128,128,3)。
  1. 資料增強 (Data Augmentation)
    資料增強是一種為了提高深度學習模型性能的技術,它在現有的訓練資料基礎上人工創建新的、合理的訓練樣本。這能有效擴展訓練資料集的範圍,讓模型學習到更多影像特徵,並減少過度擬合。
  • 目的: 擴展訓練資料集,提高模型的泛化能力。
  • 常用增強操作: 旋轉、翻轉、調整大小、比例尺、改變亮度、改變色溫、裁剪等。
  • 注意事項: 資料增強主要用於訓練資料集,不應應用於驗證或測試資料集。同時,某些操作(如垂直翻轉)可能不適用於特定的任務。
  1. 使用 tf.keras.preprocessing.image.ImageDataGenerator 進行批次資料增強與讀取
    TensorFlow 提供了 ImageDataGenerator 類別,它能從資料夾中快速產生增強後的資料。
    主要步驟:
  2. 在工作目錄下建立資料夾,並將不同類別的圖片分門別類放置於各自的子資料夾中(例如:根目錄 flower 下有子資料夾 rose,其中包含玫瑰圖片)。
  3. 建立 ImageDataGenerator 物件,並設定增強參數(如 rescale=1/255)。
  4. 使用 flow_from_directory() 方法從指定資料夾生成一個資料批次產生器 (Generator)。

生成器使用方式:
產生的生成器可以搭配 for...in 迴圈一起使用進行迭代,生成資料批次。需要注意的是,生成器會不斷地生成資料,因此需要手動設定結束條件(例如使用 break)。


上一篇
神經網絡中的正則化:抑制過度擬合的關鍵技術
下一篇
卷積神經網路:從全連接網路的局限性談起
系列文
深度學習Tensorflow 2.X31
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言