所有代碼,數據集和模型下載地址: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 指定信息輸出