在上一篇 文章中,我們Fast.ai 在衛星圖像中檢測云輪廓,檢測物體輪廓被稱為語義分割。雖然我們用幾行代碼就能達到 96% 的準確率,但該模型無法考慮數據集中提供的所有輸入通道(紅、綠、藍和近紅外)。問題在于,深度學習框架(如 Keras、Fast.ai 甚至 PyTorch)中的大多數語義分割模型都是為處理 RGB 圖像而設計的,并帶有預先訓練好的權重。除此之外,這些庫中的視覺模塊也僅限于 RGB 文件。這就是我們在前面的故事中忽略近紅外通道,只使用 RGB patchs的原因。
這促使我采用了一種完全不同的方法,從頭開始構建我自己的 U-Net,而不是使用視覺庫來準備數據集。本篇我將介紹如何使用簡單的 PyTorch 函數創建數據集,而下一篇將繼續介紹如何創建一個簡單的U-NET分割模型,并對其進行訓練以獲得結果。
1、數據準備
在上一篇文章中我們使用的數據集,是由 8400 個大小為 384x384 的訓練片段組成(適合深度學習)。還有一組 9201 個圖像塊patchs用于測試,但我們暫時不處理它們。這些patchs分別位于紅、綠、藍和近紅外(NIR)通道的目錄中,另外還有一個用于參考掩膜(真實值ground truth*_gt)的目錄。
2、PyTorch 數據集類
在上一篇文章中,我們在磁盤中創建了 rgb_patch*.tif 文件,并使用 PIL 將條帶合并為 384x`384x3