利用深度学习分析卫星雷达图像
作者 Kelley Dodge and Carl Howell, C-CORE
我们 C-CORE 的团队与挪威国家石油公司 Equinor 合作开发了一款自动化软件,利用深度学习对 SAR 图像中的目标进行分类。我们当时决定通过举办一次 Kaggle 竞赛,充分利用全球 AI 研究员社区的专业知识。我们研究了竞赛中选出的最佳创意,利用 MATLAB® 中的卷积神经网络 (CNN) 实现了这些创意,然后构建了能够在操作层面使用的软件。
冰川识别难题
SAR 图像的分辨率取决于图像覆盖面积大小:聚焦相对较小区域的图像比覆盖大片海洋的图像具有更高分辨率,因此更容易分类(图 2 和图 3)。实际上,为了从数据集提取尽可能多的有用信息,我们必须处理所有分辨率级别的图像,哪怕图像中的目标只有几个像素宽。
在开始使用深度学习之前,我们使用了二次判别分析进行冰川分类,但这涉及图像分割,从背景海洋像素中分离目标像素。图像分割是个挑战,因为海洋情况千差万别,恶劣的情况会造成视觉上的杂乱感,使得难以确定每个目标的轮廓。利用 CNN,不需要从背景中区分目标,因为算法是在完整的 SAR 切片、包含单个目标的固定尺寸图像上训练的。
Kaggle 竞赛
我们的 Kaggle 竞赛给参赛者提出了一个简单的挑战:开发一个算法,需要能自动将 SAR 图像切片中的目标分类为舰船或冰川。为竞赛准备的数据集包括从 Sentinel-1 人造卫星沿拉布拉多和纽芬兰海岸采集的多信道 SAR 数据中提取的 5,000 张图像(图 4)。事实证明,我们的竞赛是 Kaggle 上举办的最受欢迎的基于图像的竞赛,吸引了 3,343 个队伍参赛并提交了超过 47,000 份参赛作品。
表现优异的入围作品全都使用了深度学习。他们的模型使用了许多相同的特征和层,包括卷积、ReLU层、最大池化和 softmax 层。另外,最佳入围作品全都使用了集成,将预测准确度从大约 92% 提高到了 97%。
使用 MATLAB 构建深度学习模型
我们使用最佳 Kaggle 入围作品作为起点,借助 MATLAB 和 Deep Learning Toolbox™ 开发了我们自己的深度学习模型。我们从修改 Deep Learning Toolbox 中提供的一个简单分类器开始。几天的时间,我们就搭建起一个运作良好的网络。
为了优化网络性能,我们测试了不同的参数值组合,例如,每一层的节点数目、卷积层中使用的滤波器大小、最大池化层中使用的池大小等,取值各不相同。我们编写了一个自动构建、训练和测试 10,000 个不同 CNN 的 MATLAB 脚本,在合理的限制和约束内随机生成这些参数的值。
我们对结果执行了简单的贪心搜索,以找出七个表现最佳的 CNN,并使用它们创建一个集成。像 Kaggle 竞赛优胜者使用的集成一样,我们的集成提高了大约 5% 的总体准确度。
由于使用 MATLAB,我们从对实现 CNN 分类器知之甚少,到产生一个足以在操作层面使用的解决方案,只用了短短两个星期。
将分类器整合到一个完整系统
目标辨别只是冰川识别多步骤过程的其中一步。该过程还包括陆地掩膜(用来排除由于陆地上物体造成的误检),以及与地理信息系统软件集成(用来生成显示冰川和舰船位置的地图)(图 5)。
当雷达卫星合成体使命 (RADARSAT Constellation Mission) 人造卫星今年开始生成数据时,我们将能够访问更多 SAR 图像 — 这些图像对于通过人工目检进行分析简直太多了。将我们在 MATLAB 中开发的这种深度学习算法融入软件系统中,将会使 C-CORE 能够准确、快速、自动地处理此类数据,从而做到最充分地利用数据。
2019 年发布