使用ICNet模型对航拍图片(遥感图像)进行图像分割
数据集下载:
- 百度网盘下载链接:https://pan.baidu.com/s/1boXj_k00eg74j729-yK0Gg
- 提取码:pcxh
- 说明:5张图片中前4张用来切分,然后训练网络模型,最后一张图片5.png用来做测试
已训练完成模型下载(其中有1000步和40万步,1000用来参考,40万是最终训练模型):
- 百度网盘下载链接:https://pan.baidu.com/s/1do8RRWy_uDGl5snW5Gxujg
- 提取码:k7hz
- 说明:此处大家也可以自行训练,不采用此处提供的模型。如果下载,请放在模型文件夹下(chkpnt/400000)
训练环境关键包依赖
- numpy == 1.18.1
- opencv-python == 4.2.0.32
- paddlepaddle-gpu == 1.7.1.post97 (python3.6版本,post97为cuda9+cudnn7,其他版本可以对应安装post)
- pandas == 0.25.3
执行方式(注意,以下脚本有生成文件指令,请附带sudo权限):
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=chkpnt/400000 --images_path=dataset/origin/5.png
膨胀预测优化(推荐使用):
python infer_exp.py --model_path=chkpnt/400000 --images_path=dataset/origin/5.png
迭代过程展示(部分细节):
膨胀预测优化:
最终结果对比图1:
最终结果对比图2:
代码部分细节解释请参考我的CSDN博客:https://blog.csdn.net/qq_28626909/article/details/106489285
个人微信联系方式:wy1119744330 (添加请备注来意)
本次数据集提供以及部分数据处理参考代码:https://github.com/ximimiao/deeplabv3-Tensorflow
感谢@zhangwenjing对项目质量审查帮助,感谢@anxiangsir提供图片裁剪脚本,感谢@PaddlePaddle提供icnet网络结构相关源代码