Skip to content
/ U-Net Public

U-NET used for semantic segmentation of cultivated land in remote sensing image

Notifications You must be signed in to change notification settings

25jia/U-Net

Folders and files

NameName
Last commit message
Last commit date

Latest commit

97ede5c · Mar 7, 2024

History

30 Commits
Apr 16, 2022
Apr 16, 2022
Apr 16, 2022
Apr 16, 2022
Apr 16, 2022
Apr 16, 2022
Apr 16, 2022
Apr 16, 2022
Apr 16, 2022
Apr 16, 2022
Apr 16, 2022
Apr 16, 2022
Apr 16, 2022
Apr 16, 2022
Mar 7, 2024

Repository files navigation

Mathorcup2020-2021


点击下方可查看该项目对应的论文
初赛论文
复赛论文

结果展示

1111

程序概述


下面介绍程序思想以及程序运行方法
我们基于U-Net卷积神经网络建立模型对题目数据进行处理,实现了精确度较高的遥感图像耕地地块分割与提取,成功计算出耕地面积比例并制作出较为清晰的耕地标签图。参考“集成学习”的思想,我们提出“多图平均二值法”用以辅助U-Net模型预测。该方法成功降低了预测结果中的噪声干扰,显著提升了预测的准确度。 我们进一步探究“多图平均二值法”的合理性与使用条件,并依据其原理改进了数据增广方法和模型训练参数,对数据增广的随机旋转范围和训练迭代次数进行优化,使得训练出的U-Net模型预测精度显著提升。优化后的模型准确率达99.02%,损失率0.041,在遥感图像空间分辨率为2m的条件下,测试中可作出误差在2%范围内的对耕地的精确分割。同时,为了在保证预测精度的同时提升耕地标签图的视觉效果,此外,我们采用腐蚀膨胀操作对预测结果做进一步处理。结果显示,腐蚀与膨胀操作使得模型预测效果得到进一步提升。相比初赛模型,本文模型具有更为优秀的分割性能和更为良好的视觉效果。本文模型的预测图像耕地边缘更为清晰,噪声基本消失,道路连通性强。利用上述优化模型,本文预测Test3,Test4图像的耕地地块分布并制作标签图,计算耕地面积占比。
***************************************************************************
我们的程序测试主要通过一下步骤完成:
a)将tif卫星图放至‘pridict/tif_question’文件夹中
b)运行predict.py程序,可以在out1里看到标签(二值化前ori后bi),tif_result里面是相应二值化图片的tif
c)运行S_calculation.程序计算面积占比,适当修改地址路径
d)运行predict前请检查文件夹in1、out1、tif_result为空,以防影响结果查看。
e)按照predict文件夹下readme以及其中erode&dilate_Enhance_view文件夹的read指示操作,获得进一步腐蚀膨胀优化的结果
腐蚀膨胀程序使用方法简述:
1将待操作的500x600 png格式图放在out1文件夹中;
2修改<erode&dilate.py>中路径文件名及相关参数,运行,运行结果会以png格式保存在本文件夹中;
3将需要转tif的png图片移动到answer_tif_generater文件夹中;
4依次运行answer_tif_generater文件夹中的<answer_tif.py>,<answer_S.py>获得tif标签图及耕地面积;
【注意事项】
1算法输出图片名称标注'数字_bi.png.tif',其中‘数字_bi.png’为其对应png文件名称;
2mask将与in1中数字顺序对应,

可能与tif_question顺序不一致,由于glob抓取;
可以采用前位补零或按文件名修改算法等方式应对2中问题,程序将会输出tif与png文件名称对应关系,以及相应抓取顺序,希望您可以抽出时间核对;
//补零//图片数为n位数,则补零对齐,如共100张则001,002,,,099,100编号;1000张则0001,0002,,,0011,0012,,,0111,0112,,,0999,1000编号


3程序我们再本地Spider和PyCharm上成功运行,但由于设备不同,可能需在测试前对程序进行些许相应修改(地址,图片数目等参数),希望您能谅解;
4算法细节问题参见程序中的备注。
5运行时,按照一下逻辑进行,其中中介文件夹反复使用,数据更新,不做保留。
tif_question--->in1--->in6--->in12--->out12--->out12change--->out6--->out1--->tif_result
问题及结果文件夹:tif_question、in1、out1、tif_result
中介文件夹:in6--->in12--->out12--->out12change--->out6(最终记录为最后一张图片)
6希望您能认真阅读本总说明以及每个文件夹中的readme文件(细节说明),感谢!

***************************************************************************
【程序文件总体概况】
<data.py>:模型训练(train)和简单测试(test)时用的基本函数库//部分引自[1]
<model.py>:unet基本模型//部分引自[1]
<pre-data.py>:准备数据,用于将不可视的tif转化成可视的png处理,将image和mask剪切生成原始训练数据集 转化理由:过程可视化,方便寻找模型缺陷,设计合理应用方法,提高最终结果准确性 操作文件夹:data、train、test


<train.py>:训练网络,调用data.py和model.py //部分引自[1] 操作文件夹:train
<test.py>:模型效果检测,测试集image和truelabel不同于原始训练数据集剪切,提供未经过优化的预测方法//部分引自[1] 操作文件夹:test


<predict.py>:(详细见predict文件夹内readme文件)
---1利用训练模型结果,完整进行由卫星tif至标签tif的转化,中间过程png格式可视化显示。
---2提供优化后的预测方法:
a)将500600切为256256;
b)每256256图通过180度旋转以及相应x,y镜像生成6张图输入模型;
c)将6图输出结果对比,利用适当算法求取平均,整合为1张256
256图;
d)将6张256256图拼接成500600的结果图;
操作文件夹:predict
tif_question--->in1--->in6--->in12--->out12--->out12change--->out6--->out1--->tif_result
【注】上述优化方法是通过观察下述方法生成的12图选定的6种合适图片处理方式完成。
<predict(12).py>:
a)将500600切为256256;
b)每256256图通过90,180,270旋转以及相应x,y镜像生成12张图输入模型;
c)将12图输出结果对比,利用适当算法求取平均,整合为1张256
256图;
d)将6张256256图拼接成500600的结果图;
操作文件夹:predict
tif_question--->in1--->in6--->in12--->out12--->out12change--->out6--->out1--->tif_result


<S_calculation>:利用tif或png标签图计算每张图耕地占比。


<erode&dilate.py>:腐蚀膨胀操作程序。
***************************************************************************
【问题解决方法简述】
//1
运行<S_calculation>,选择适当数据 或者运行‘问题1求标签耕地面积占比’文件夹下文件直接得到结果(初赛面积问题)
//2
按本说明,运行程序,形成结果
<pre-data.py>,<train.py>,<test.py>,<predict.py>
//3
根据预先test优化模型产生predict,寻找合适思路,获得合适标签图。
//4
设计合适腐蚀膨胀程序,对结果进一步优化
//5
计算耕地比例,适当修改计算面积程序的地址
【注】您可以通过适当修改<S_calculation.py>的地址(原来的地址是没有经过腐蚀膨胀的预测图文件夹)或者使用predict文件夹下erode&dilate_Enhance_view文件夹下的<answer_S.py>计算耕地面积,我队实验使用<answer_S.py>计算的面积。

***************************************************************************
【创新点简述】
1流程可视化
2通过旋转、镜像输入方法,测试模型预测效果,选择模型优势预测角度,制定优化方法
3多图平均二值法,在路径中断、点状误差、图像不清问题,提升优势明显;

[注]上述平均法可通过二值化达到‘1+1>2’的效果,原因如下:
平均的是非二值图,黑白部分在不同图片求和时相互抵消,强度随深浅而定。
因此可做到类似“集成学习”模型取比例最高分类的效果。
同时,该方法减少了训练模型所消耗的时间,明显减少了错误点数目。
降低了损失,提高了准确率。

4选择合适的batchsize和epoch,防止过拟合和较早进入饱和,降低了损失,提升了准确率。

5将训练输入规范化256256问题,适合多种图片,裁剪符合,稍改拼接程序即可进行预测。

6根据“多图平均二值法”原理改进了数据增广方法和训练方法,对训练数据增广的随机旋转范围和训练迭代次数进行优化,使得训练出的U-Net模型预测精度显著提升。

7为了在保证预测精度的同时提升耕地标签图的视觉效果,本文提出采用腐蚀膨胀操作对预测结果做进一步处理,详细分析了腐蚀膨胀操作的使用对面积精度的影响,选取合适操作处理图片,使得预测结果的视觉效果等得到显著提升。

**************************************************************************
【赛题运行案例】
在该文件夹下,我们展示了程序运行案例和部分运行结果,供评委老师参考。 同时,也为我组论文提供论据支持。
案例地址:
链接:https://pan.baidu.com/s/15Z7avhCVuve5U8lt9Gsbkw
提取码:1248

***************************************************************************
【参考文章来源简述】
[1]https://blog.csdn.net/Xnion/article/details/105797671

About

U-NET used for semantic segmentation of cultivated land in remote sensing image

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages