使用神經網絡(ICNet)對航拍圖片(遙感圖像)進行圖像語義分割(數據集+代碼+最終訓練模型)

所有代碼,數據集和模型下載地址:https://github.com/wangye707/ICNet-paddlepaddle

本博客主要做部分內容講解

1.數據集介紹以及預處理

1.1數據集介紹

上圖中左側爲航拍原圖,右側爲標籤(類別標籤 像素值分別爲 0,1,2,3,4,所以人的肉眼不能夠分辨出區別,本文對標籤進行可 視化處理 (實際訓練中不做可視化處理),植被用綠色,道路用黑色,建築用灰色, 水體用藍色,以及其背景用白色標註)

1.2 圖片裁剪、鏡像和旋轉

裁剪:

鏡像和選裝:

2.代碼執行過程

2.1 環境說明

本次採用的深度學習環境爲飛槳(paddlepaddle),神經網絡模型採用ICNet,相關核心依賴包的版本關係爲:

  • numpy == 1.18.1
  • opencv-python == 4.2.0.32
  • paddlepaddle-gpu == 1.7.1.post97
  • pandas == 0.25.3

注意:操作系統儘量採用linux。

2.2 執行方式

執行方式請參考我的github:https://github.com/wangye707/ICNet-paddlepaddle

各位如果覺得有用的話麻煩點個 star,感謝!有問題也可以在Issues下留言。

1.下載代碼:

git clone https://github.com/wangye707/ICNet-paddlepaddle.git

2.進入到ICNet-paddlepaddle目錄下(爲了方便觀看,本次在windows目錄下進行,實際路徑爲linux下)

開始把百度雲中下載的數據集放過來

如果您也下載了已經訓練的模型,並且想再用默認的模型路徑,請先手動新建 chkpnt文件夾,然後放入即可,如下圖所示:

3.執行代碼:

1.圖片裁剪
python preprocess.py 

2.訓練神經網絡
簡化版本,均使用默認參數請執行:
python train.py 
指定參數請執行:              
python train.py  --batch_size=64 --checkpoint_path=chkpnt --init_model=chkpnt/1000 --use_gpu=True
說明:checkpoint_path:  模型將保存的路徑,默認爲10000步保存一次。
      init_model:      預訓練模型的路徑,本次沒有給出預訓練模型。
      模型恢復訓練方式:  指定最新的模型路徑來恢復訓練,記得修改當
                        前迭代步數以保證正常訓練(如在1000步時終止
                        ,記得修改迭代步數從1000開始,而不是默認參數0)
     
3.評估網絡模型
python eval.py --model_path=chkpnt/400000
說明:model_path是指定的模型文件路徑

4.通過已訓練完成的網絡模型預測圖片
直接預測:
python infer1.py --model_path=chlpnt/400000 --images_path=/dataset/origin/5.png
膨脹預測優化(推薦使用):
python infer_exp.py --model_path=chlpnt/400000 --images_path=/dataset/origin/5.png

 3.後期優化

3.1 膨脹預測:

膨脹預測的主要思想是每次預測僅僅保留圖片的中心部分,其餘地方捨棄,而舍 棄的地方通過滑動切割的思想也會成爲其他預測圖的中心區域,該方法避免因邊界的 特徵提取問題而產生拼接痕接,影響最終分割效果。膨脹預測主要思想如圖 3.13 所 示,填充一倍的邊框來確保膨脹預測時保留中心區域,以 256*256 爲滑動窗口大小, 每次保留中心的 128*128,步長設置爲 128。通過此膨脹預測,使得航拍圖片最終拼 接無痕,提升龐大尺寸圖片的分割效果。(執行方式在上面有提到)

膨脹預測結果展示:

3.2 圖片融合

參考代碼:https://blog.csdn.net/qq_28626909/article/details/105569221

3.3 指定信息輸出

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章