技术文章

利用深度学习分析卫星雷达图像

作者 Kelley Dodge and Carl Howell, C-CORE


每年平均有 500 座冰山进入纽芬兰和拉布拉多沿海地区,对航运和海上作业构成了潜在威胁。二十世纪九十年代,一些公司开始使用卫星合成孔径雷达 (SAR) 监测冰川和海上浮冰。SAR 非常适合执行该任务,因为它既能在白天和夜晚拍摄大片海洋的图像,又能克服云、雾和其他不利的气象条件。 

分析 SAR 图像涉及识别图像中的目标(成片的高亮度像素)以及将其分类为冰川或舰船(图 1)。即使是训练有素的专家,也可能需要数小时的时间分析若干帧图像,尤其是在目标难以辨别的情况下。

图 1.在格陵兰岛附近拍摄的 SAR 图像,其中的目标已圈出。

图 1.在格陵兰岛附近拍摄的 SAR 图像,其中的目标已圈出。

我们 C-CORE 的团队与挪威国家石油公司 Equinor 合作开发了一款自动化软件,利用深度学习对 SAR 图像中的目标进行分类。我们当时决定通过举办一次 Kaggle 竞赛,充分利用全球 AI 研究员社区的专业知识。我们研究了竞赛中选出的最佳创意,利用 MATLAB® 中的卷积神经网络 (CNN) 实现了这些创意,然后构建了能够在操作层面使用的软件。

冰川识别难题

SAR 图像的分辨率取决于图像覆盖面积大小:聚焦相对较小区域的图像比覆盖大片海洋的图像具有更高分辨率,因此更容易分类(图 2 和图 3)。实际上,为了从数据集提取尽可能多的有用信息,我们必须处理所有分辨率级别的图像,哪怕图像中的目标只有几个像素宽。

图 2.从多极化信道(标有 HH 和 HV)创建的易于分类的冰川(右上)和舰船(右下)的彩色合成图像。

图 2.从多极化信道(标有 HH 和 HV)创建的易于分类的冰川(右上)和舰船(右下)的彩色合成图像。

图 3.难以分类的冰川(右上)和舰船(右下)的彩色合成图像。

图 3.难以分类的冰川(右上)和舰船(右下)的彩色合成图像。 

在开始使用深度学习之前,我们使用了二次判别分析进行冰川分类,但这涉及图像分割,从背景海洋像素中分离目标像素。图像分割是个挑战,因为海洋情况千差万别,恶劣的情况会造成视觉上的杂乱感,使得难以确定每个目标的轮廓。利用 CNN,不需要从背景中区分目标,因为算法是在完整的 SAR 切片、包含单个目标的固定尺寸图像上训练的。

Kaggle 竞赛

我们的 Kaggle 竞赛给参赛者提出了一个简单的挑战:开发一个算法,需要能自动将 SAR 图像切片中的目标分类为舰船或冰川。为竞赛准备的数据集包括从 Sentinel-1 人造卫星沿拉布拉多和纽芬兰海岸采集的多信道 SAR 数据中提取的 5,000 张图像(图 4)。事实证明,我们的竞赛是 Kaggle 上举办的最受欢迎的基于图像的竞赛,吸引了 3,343 个队伍参赛并提交了超过 47,000 份参赛作品。

图 4.Sentinel-1 人造卫星沿纽芬兰和拉布拉多海岸采集的 SAR 数据。Adblu.“Statoil/C-CORE Iceberg Classifier Challenge:Ship or iceberg, can you decide from space?Kaggle,2017 年 11 月 8 日,https://www.kaggle.com/c/statoil-iceberg-classifier-challenge/discussion/42108/。

图 4.Sentinel-1 人造卫星沿纽芬兰和拉布拉多海岸采集的 SAR 数据。Adblu.“Statoil/C-CORE Iceberg Classifier Challenge: Ship or iceberg, can you decide from space? Kaggle,2017 年 11 月 8 日,https://www.kaggle.com/c/statoil-iceberg-classifier-challenge/discussion/42108/

表现优异的入围作品全都使用了深度学习。他们的模型使用了许多相同的特征和层,包括卷积、ReLU层、最大池化和 softmax 层。另外,最佳入围作品全都使用了集成,将预测准确度从大约 92% 提高到了 97%。

使用 MATLAB 构建深度学习模型

我们使用最佳 Kaggle 入围作品作为起点,借助 MATLAB 和 Deep Learning Toolbox™ 开发了我们自己的深度学习模型。我们从修改 Deep Learning Toolbox 中提供的一个简单分类器开始。几天的时间,我们就搭建起一个运作良好的网络。

为了优化网络性能,我们测试了不同的参数值组合,例如,每一层的节点数目、卷积层中使用的滤波器大小、最大池化层中使用的池大小等,取值各不相同。我们编写了一个自动构建、训练和测试 10,000 个不同 CNN 的 MATLAB 脚本,在合理的限制和约束内随机生成这些参数的值。

我们对结果执行了简单的贪心搜索,以找出七个表现最佳的 CNN,并使用它们创建一个集成。像 Kaggle 竞赛优胜者使用的集成一样,我们的集成提高了大约 5% 的总体准确度。

由于使用 MATLAB,我们从对实现 CNN 分类器知之甚少,到产生一个足以在操作层面使用的解决方案,只用了短短两个星期。

将分类器整合到一个完整系统

目标辨别只是冰川识别多步骤过程的其中一步。该过程还包括陆地掩膜(用来排除由于陆地上物体造成的误检),以及与地理信息系统软件集成(用来生成显示冰川和舰船位置的地图)(图 5)。

图 5.在地图上绘制的冰川位置。

图 5.在地图上绘制的冰川位置。

当雷达卫星合成体使命 (RADARSAT Constellation Mission) 人造卫星今年开始生成数据时,我们将能够访问更多 SAR 图像 — 这些图像对于通过人工目检进行分析简直太多了。将我们在 MATLAB 中开发的这种深度学习算法融入软件系统中,将会使 C-CORE 能够准确、快速、自动地处理此类数据,从而做到最充分地利用数据。

2019 年发布