来源:DeepHub IMBA本文约3000字,建议阅读5分钟
本文介绍了如何通过模型预测区域内降雨范围和降雨量。

介绍

在农业、自动驾驶、航空或能源领域,预测和了解天气是十分重要的。例如,天气条件对航空和物流公司在规划最快和最安全的航线方面起着重要作用,可再生能源公司也需要根据天气预测他们在给定的一天将生产多少能源。因此,各种天气模型被开发出来并正在世界各地应用。但是这些模型通常需要关于大气和确切条件的高度具体的信息,这样使得模型对数据的需求变得非常复杂。

出于这个原因,Meteomatics (提供对广泛的全球天气、气候预测和环境数据的快速、直接和简单的访问API),已向我们(Lightly.ai)寻求帮助。他们的目标是:在数据稀少且必须依赖卫星图像的地区准确预测降水。在这篇文章中,我们展示了我们如何开发一个神经网络来根据红外卫星数据预测给定区域的降雨量。

数据收集与分析

如果您曾经使用过神经网络,您就会知道它们需要大量数据。出于这个原因,建立一个收集、管理和组装数据的数据管道至关重要。Meteomatics 提供易于使用的 API,使我们能够快速收集训练和真实数据。例如,要在 2021 年 7 月 7 日以 800x600 像素的分辨率获取欧洲的红外图片(坐标从 65, -15 到 35, 20),我们可以简单地进行以下查询:

wget "https://api.meteomatics.com/2021-07-13T20:15:02Z/sat_ir_108:K/65,-15_35,20:800x600/png"

我们可以每隔15分钟运行一个 Python 脚本,连续几天收集欧洲、北美和墨西哥不同波长的红外图像。然后我们将每个时间戳的不同图像在本地组合成一个 RGB 图像。为了使任务更容易,我们在第一步中掩盖了层状降水。然而,正如我们稍后将看到的,这对模型的准确性只有很小的影响。我们还收集了真实数据用于训练和评估模型的准确性。请注意,真实数据仅适用于欧洲和北美。您可以在下面看到欧洲的一对输入和实际真值数据:

卫星图像示例(左)、神经网络的输入(中)和真实数据(右)。基于指标对输入图像和真实图像的浅灰色区域进行遮挡。这些数据是在 2021 年 7 月 13 日星期二 20:15:02 在欧洲收集的。

为了避免“garbage in garbage out”,肯定要在进行机器学习算法训练之前对收集的数据进行理解和整理。我们的 Lightly 支持快速简便的方法来分析数据集以及更深入的算法来选择最相关的训练点。将的数据集上传到 Lightly 后,我们立即注意到所收集数据的一个重要特性:欧洲、北美和墨西哥的图像在视觉和语义上是分开的。这样我们可以使用一个简单的策略来测试算法的泛化能力:如果我们用来自欧洲的数据训练它并且它在来自北美和墨西哥的看不见的数据上表现良好,那么该算法将很好地泛化。

显示的来自欧洲(蓝色)、北美(绿色)和墨西哥(灰色)的输入图像嵌入。图像在嵌入空间中分离良好。

另一个关键问题是,有许多极其相似的小集群图像。这是因为我们在相对较短的时间内收集了数据。因此,数据集中有很多相似的图像,这使得模型难以很好地泛化。通过一种名为“coreset sampling”的方法帮助我们消除了这些冗余,该方法旨在最大限度地提高数据集的多样性。

在使用 Lightly 管理数据集之前,我们的训练数据集(欧洲)中有 1158 张图像。数据整理后,我们剩下 578 张图像。验证数据集(北美)包含 1107 张图像,而测试数据集(墨西哥)仅包含 43 张图像,因为我们开始数据收集的时间较晚。

我们从 Lightly 下载图像,现在我们准备进行一些机器学习。

神经网络和语义分割

卷积神经网络是一类应用于计算机视觉的人工神经网络。他们的共享权重架构使他们能够有效地处理图像数据并轻松检测相关特征。卫星图像非常适合使用神经网络进行训练。因为输入图像的范围相当有限,可能的原因是卫星总是处于大致相同的高度,因此物体总是以相似的比例出现。

语义分割是为图像的每个像素分配标签的任务。例如,在自动驾驶中,算法通常必须了解图像的哪些像素代表汽车、行人、骑自行车的人、停车标志等。为语义分割设计的典型神经网络架构是 UNet(见下图)。在这里,输入图像通过卷积层的金字塔转换为密集向量,然后通过一系列反卷积层再次扩展为图像的原始形状。此外,共享卷积层和反卷积层的特征以获得输入图像的全局视图。

对于此任务,我们使用了Efficient (或 ENet)的神经网络作为基础架构。我们使用它提取特征,然后用Unet进行分割。

为了将预测降水量的任务构建为语义分割问题,我们根据五分钟时间跨度内以毫米为单位的降水量将输出空间分为以下几类:

  • 未标记(如果存在,则掩盖图像的一部分)

  • 0.00mm(无雨)

  • 0.04mm — 0.07mm

  • 0.07mm — 0.15mm

  • 0.15mm — 0.30mm

  • 0.30mm — 0.60mm

  • 0.60mm — 1.20mm

  • 1.20mm — 2.40mm

  • 2.40mm — 4.80mm

  • > 4.80mm

结果展示

除了更改输入的高度和宽度以匹配图像的分辨率 (600x800) 外,我们使用默认设置训练神经网络。在 NVIDIA Tesla P100 上的完整数据集上训练 100 个 epoch 大约需要 1.6 小时。如果从上面对精选数据集进行训练,我们能够将训练时间减少 50% 以上。

下面的表显示了在训练数据集(欧洲)和测试数据集(北美)上的不同类别的预测的 IoU(交集)。

训练集(欧洲)和测试集(北美)上不同预测类的并集交叉(IoU)。注意,对于这类分割任务,IoU是一个次优度量。

正如数字所示,该模型学会了以非常高的准确度区分“下雨”和“不下雨”。不幸的是,精度随着降水量的增加而迅速下降。这可能是因为大量降雨的地区的可用数据比较少(数据不平衡)。表中的数字可能表明该模型的性能相当差。其实这种情况并非如此。下一步就是人肉检查我们模型所做的预测,他们的结论是该模型非常准确——尤其是考虑到它所需的数据量很少。为了让您更好地理解算法所做的预测,我们将向您介绍 Meteomatics 用于进行视觉检查的一些示例。

下图显示了红外图像、真值以及我们的算法对欧洲天气情况(训练集)所做的预测。我们可以立即看到预测的形状非常准确。但是我们观察到模型预测高降水量的像素数量(以红色显示)相当低。这是不平衡数据集的典型示例,收集更多高降水数据可能会解决问题。同样值得注意的是,该模型无法准确预测真实数据的细粒度细节。这只能通过提高分辨率来解决。

来自训练数据集的缩放示例的不同波长的输入红外图像(左)、模型输出(右上)和实际值(右下)。

第二张图显示了红外图像、真值以及我们的算法对北美天气情况(测试集)所做的预测。与训练集中的情况类似,我们可以看到对高降水地区的预测不太准确。但是,该模型正确预测了真值的形状,并且倾向于准确预测降水较多的区域。

最后,将我们的算法与已经在生产中使用的算法进行比较。第三张再次显示了红外图像和我们的算法所做的预测,这次是在墨西哥。然而,它显示了由云和大气的物理模型做出的预测而不是实际的真值。很明显,输出差异很大,并且基于输入图像,我们的算法至少在精度方面似乎优于物理模型。实际上,使用我们的(Lightly)算法观察到的误报更少,因为在没有云的地方无法预测降水。

总结

在本篇文章中,我们开发了一个语义分割模型,该模型可以根据卫星图像以良好的精度预测给定位置的降水量。卷积神经网络在现实生活中的应用可以在改进或补充现有天气模型方面发挥关键作用,从而帮助我们的合作伙伴 Meteomatics 在难以获取数据的地区准确预测降水。

我们可以得出结论,当试图从红外卫星图像中预测降水量时,只有 500 幅图像才有可能获得合理的结果。即使对于考虑层状降水的更困难的情况,性能也仅略有下降(平均约 0.04 的 IoU)。设置的一个关键问题是数据集严重不平衡。为了缓解这种情况,可以在更长的时间内收集更多的训练样本,以确保数据集的多样化。对于更细粒度的结果,最好以更高的分辨率收集图像并将它们切成更小的块以保持较低的内存占用。

希望这篇博文提供了一个示例,说明了数据管理的重要性和神经网络在天气模型中的强大功能。

最后,本篇文章没有代码,如果想实现的话其实不复杂:整理好数据后直接用segmentation_models.pytorch就可以了,有兴趣的可以自己试试

或者去原文看看:

https://towardsdatascience.com/predicting-rain-from-satellite-images-c9fec24c3dd1

编辑:王菁

通过卫星图像预测区域内降雨范围和降雨量相关推荐

  1. python中blit的意思_在python中,如何在特定图像的区域内blit图像?

    如果你能解释一下你想做什么会更好,因为它会给你更多的答案:) 根据我的理解,你想把一个图像放到另一个图像上: 为了使此代码起作用,设置了以下前提条件:包含程序的文件夹还包含名为testimage.pn ...

  2. 图像的区域选取(matlib)

    图像的区域选取 1.多边形区域选择函数roipoly(): BW = roipoly(I,c,r) I:输入图像(维度不能大于2): c.r:多边形每个顶点行列序号,向量大小校相同. BW = roi ...

  3. 遥感图像+CNN,预测区域人口收入水平

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自机器之心 采用卷积神经网络(CNN)和卫星图像数据来预测区 ...

  4. 图像特征 可视化_使用卫星图像可视化建筑区域

    图像特征 可视化 地理可视化/菲律宾/遥感 (GEOVISUALIZATION / PHILIPPINES / REMOTE-SENSING) Big data is incredible! The ...

  5. idft重建图像 matlab_利用 MATLAB 编程,打开一幅图像,对其进行 DFT 变换,并置其不同区域内的系数为零,进行 IDFT ,观察其输出效果。_学小易找答案...

    [连线题]请对正确的快键键连线 [判断题]板书是指教师在课堂黑板或白板上书写,将教学内容形象.直观.简洁地传授给学生.清晰.流畅.快速的粉笔书写是课堂板书的基本功. [其它]利用 MATLAB 编程, ...

  6. 基于Yolo-V3对卫星图像进行储油罐容积占用率的研究

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 在1957年以前,地球上只有一颗天然卫星:月球.1957年10月4日,苏联发射了世界上第一颗人造卫星, ...

  7. 外星人图像和外星人太空船_卫星图像:来自太空的见解

    外星人图像和外星人太空船 By Christophe Restif & Avi Hoffman, Senior Software Engineers, Crisis Response 危机应对 ...

  8. r语言怎么以第二列绘制线图_用卫星图像绘制世界海岸线图-第二部分

    r语言怎么以第二列绘制线图 Part I of this blog series is here. 本博客系列的第一部分 在这里 . At the UKHO we are interested in ...

  9. 基于3D CNN的深度学习卫星图像土地覆盖分类

    本文帮助读者更好地理解使用3D-CNN对卫星数据进行土地覆盖分类的不同深度学习方法. 遥感概论 土地覆盖分类的深度学习 Sundarbans 国家公园卫星图像 CNN在土地覆盖分类中的实现 结论 参考 ...

最新文章

  1. 2018年第十届ACM四川省省赛题解(10 / 11)
  2. spring之继承配置
  3. 阿里云Spark Shuffle的优化
  4. 如何成为一个技术“牛人”
  5. Spring 从入门到入土——AOP 就这么简单!| 原力计划
  6. 进程串行变并行linux,linux进程简述
  7. hibernate之多对多关联映射
  8. Form Builder的三种查询方法构建
  9. SAP License:SAP系统界面相关调整和设置
  10. win10和ubuntu18双系统时间同步(20190604亲测可行)
  11. 朝鲜黑掉韩国政府版 Word
  12. 记录一次被DDOS攻击,攻击类型:UDPFLOOD
  13. JS 简易控制台插件 [供 博客, 论坛 运行js用]
  14. 北京周末去哪儿 —— 国家博物馆
  15. win10忘记密码_电脑忘记密码没关系,这招教你简单轻松改密码
  16. 可用的交换空间为 0 MB
  17. 测绘大地测量乙级资质新申请条件及办理流程
  18. 小白之-----------shell脚本批量管理服务器
  19. DEJA_VU3D - Cesium功能集 之 090-台风过境实时动画
  20. VC Formal FPV 启动脚本简单模板

热门文章

  1. td 内单选框不可用_材料特殊处理TD、TICN概述
  2. mysql 单实例部署_MySQL 5.5单实例 编译安装
  3. 深度优先(DFS)和广度优先(BFS)
  4. mysql查询表的数据大小
  5. Windows 7合理虚拟内存RAMDISK提升运行性能
  6. 局域网指定 IP 地址后无法上网的问题
  7. bootstrap的一些资源
  8. ORA-12518,TNS:listener could not hand off client connection
  9. java swing原理浅析
  10. BizTalk 2006 简单入门示例程序(附源项目文件下载)