结合注意力机制的UNet降水短临预报框架
天气预报以数值天气预报为主,它试图准确模拟物理特性的大气层。但数值天气预报的一个缺点是,它缺乏利用最新的气象资料进行短期预报的能力。我们通过使用数据驱动的神经网络方法,结果表明有可能产生准确的降水现报。
为此,我们提出了SmaAt-UNet,一个基于众所周知的UNet的高效卷积神经网络架构,配备了注意力模块和深度可分离卷积。我们利用荷兰的真实降水数据集评估了此方法,结果表明,根据精确度评估,相比于其他模型(原始的UNet框架),我们提出的模型仅使用了四分之一的参数即可达到与其他模型类似的结果。
本文对比分析了UNet
、UNet-CBAM
、UNet-DSC
和SmaAt-UNet
四种模型在降水短临预报方面的性能表现。
SmaAt-UNet框架
CBAM(convolutional block attention modules)是一个卷积块注意力模块,作用于输入图像,按照顺序将注意力机制应用于通道,然后是空间维度。CBAM的结果是一个加权的特征图,考虑了输入图像的通道和空间区域。
DSC(depthwise-separable convolutions)是深度可分离卷积,将传统的卷积运算分割为深度卷积和一个点卷积(a depthwise convolution followed by a pointwise convolution),可以在不明显牺牲性能的情况下减少模型的参数。
SmaAt-UNet的主要特点是两个:一个是在编码部分加入了注意力机制;另一个是将常规的卷积操作替换为深度可分离卷积。
此工作的基准是persistence
,结果表明:persistence
基准结果战胜了其余四个模型,这是因为对于短临预报而言,短时间内是不会发生明显的变化的。因此,很难克服persistence
基准模型。本文主要是利用UNet和注意力机制以及深度可分离卷积在降水短临预报方面的尝试,并没有利用更多的深度学习技术去进一步改善SmaAt-UNet模型的性能。
模型结果对比. Persistence明显优于其他深度学习模型结果.
不同方法的性能评估结果
此工作所使用的代码和数据集都已经公开,对于气象领域想要入门深度学习的工作者而言是非常友好的。通过与作者沟通,文中所使用的降水数据集已经公开,代码和数据集链接如下: SmaAt-UNet code[1]、Precipitation dataset[2]
References
[1]
SmaAt-UNet code: https://github.com/HansBambel/SmaAt-UNet
[2]
Precipitation dataset: https://mega.nz/folder/jEUS2IbL#azPKxidMTrllREZeoxwqPw
- Android网络编程(十一)源码解析Retrofit
- android Material Design详解
- android EventBus详解(三)
- Android绘制优化(一)绘制性能分析
- android EventBus详解(二)
- [置顶] android EventBus详解(一)
- 开源组件photoView学习
- ViewPagerIndicator+viewpager指示器详解
- 实现去哪儿来回机票选择的view
- 解决水平ListView在ScrollView中出现的滑动冲突
- Android逆向分析(2) APK的打包与安装背后的故事
- Activity之间传递大数据问题
- React Native入门(二)Atom+Nuclide安装、配置与调试
- React Native入门(一)环境搭建与Hello World
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法