遥感影像识别-利用较大数据集训练

回顾

经过前两次的思考,最终还是回到最初的想法上来,利用大量比较合理的电子地图进行模型的训练,看能否产生较好的效果。
前两次的博文链接如下:
遥感影像识别-制作数据集
遥感影像识别-训练策略

本次训练所使用的数据集

地域覆盖了全国几个主要的城市,比如杭州、成都、广州等等,不过一方面为了进一步观察数据集的效果,也为了不浪费算力,因此并未采集各个大城市的地图用以制作数据集,而是随便挑了几个城市中的部分区域用以制作,另一方面的原因也是因为现有的地图软件对于地图的识别很多地方都不是特别精确的,因此选择一个比较准确的标注区域实际上是有点靠运气的,只能挨个挨个去试,而在偏远地区则只有主要道路有标注,因此几乎无法从偏远地区取材制作数据集。

数据集并未上传,只是将文件夹上传到我自己的github库里去了,所以可以看到文件夹中有一个README.md文件

数据集类别分布

数据集中的类别越平衡,效果应该也会稍好些,因此为了查看本次做的数据集质量如何,因此统计了各个类别的像素个数以及百分比。
遥感影像识别-利用较大数据集训练_第1张图片
百分比:

背景: 0.8067575502102572
水域: 0.11571123391477656
道路: 0.029220867620779262
建筑: 0.04831034825418703

数据集大小概念:

总分辨率为:26817.35510821304
相当于104.0张 256X256 的图像

这里可以看出数据集的类别分布还是没那么平衡的,但是这也是在预料之中,因为结合遥感影像的特点,一张图里必然背景充斥了大部分板块,而道路则是最少的,毕竟都是以线条状分布在地图中,且零零散散。而建筑与水域情况也和道路差不了太多。因此除去背景,后三类的分布还是较为均匀的。

训练模型

本次并未再使用前文所提及的 DeepLabV3+ 模型,而是重新换了一个网络模型 Unet 来试了一下。
至于为什么,会在下文提及。
在将数据集放到 Unet 中训练之前,先利用一个比赛的数据集跑了一下效果,如下图。

这是把训练的数据集拿出来再预测了一下,基本上整个模型对原数据集拟合的效果还是可以的,但是这个说明不了什么问题,接下来把该模型用来预测我最近做的数据集上看效果咋样。


这就可以看出预测的效果比较差了,但是仔细看的话,还是能看到水域和道路还是能分的清的,但是由于参与训练的数据集比较少,只有五张图像,能有这个样子还是不错了。Unet的预测效果比较平滑,同时为了试试其它模型的效果,所以这次没有用之前的模型。

至于为什么采用最开始的策略,主要还是看效果,实际上的预测效果其实还是能够将主要障碍物识别出来的,因为虽然电子地图标记的很细一条线,但是这一条细线对应的卫星地图应该是标记物的中心位置,也就是说,这条细线和对应的卫星地图位置已经有一个一一对应的关系了。学习后,极有可能实际卫星地图上比较宽的区域也是可以识别出来的。因为虽然标记的样本上,范围小,但是特征是保留了的。

目前的模型还正在训练中,正是使用的新数据集,不过数量也不算特别多,但相较于上述使用的数据集还是要多一些的。

以下是正在跑的损失曲线:
遥感影像识别-利用较大数据集训练_第2张图片
还没有收敛,所以预测效果以及评价指标都得等收敛后再来获得。

你可能感兴趣的:(深度学习,python,深度学习,计算机视觉)