问题
卫星图像不仅仅是它的像素——它也是它的位置。通常编码为 GeoTiff,此类图像还将具有地理配准元数据(例如坐标、坐标系和投影变换),定义从基于像素的坐标(即行和列索引)到地球上位置的映射。表面(即纬度和经度)。对于我们为此类图像创建的任何注释也是如此 - 这些注释可能采用带有矢量注释(例如多边形)的 GeoJSON 文件的形式,或者本身就是 GeoTiff。使用正确的工具,我们可以从这些文件中提取正确转换的光栅图像和相应的标签,我们可以愉快地将其输入到我们的计算机视觉模型中;但最终,为了在现实世界中发挥作用,从这些模型中获得的任何见解也必须映射回地理位置。如果我们不知道野火在哪里,那么检测野火有什么用呢?
标准计算机视觉数据集和遥感数据集之间的差异并不止于此。另一个复杂之处是这些图像往往太大而无法直接输入神经网络。
Raster Vision
Raster Vision 知道如何处理地理空间数据,并将为您做到这一点。它将光栅化和矢量化、下载和上传、分析和标准化、切片和剪辑、连接和提取,一般来说,会尽一切努力确保数据以正确的形状到达正确的位置。在幕后,Raster Vision 广泛使用 GDAL、Rasterio、Shapely,当然还有 NumPy 来完成此任务。下图显示了 Raster Vision 的一些非凡的数据处理能力。
Raster Vision 的标签推理功能允许您将矢量注释(左)转换为芯片分类注释(中),而其光栅化功能允许您将它们转换为语义分割掩模(右)。
使用范围裁剪功能,您可以将单个场景分割为空间上不相交的训练集、验证集和测试集。
Raster Vision 还可以训练深度学习模型。它为芯片分类、对象检测和语义分割等计算机视觉任务提供了完全实现的训练管道,开箱即用。模型、损失函数和优化器基于 PyTorch 和 TorchVision,并且具有高度可配置性。最初,Raster Vision 使用 Tensorflow,但我们改用 PyTorch,因为它可以更轻松地实现和调试自定义模型和损失函数。它还通过提供涵盖三种不同计算机视觉任务的单一标准库来简化代码库。
缩小范围,我们可以将 Raster Vision 总结为一个框架,它使开发人员能够快速、可重复地配置贯穿机器学习工作流程核心组件的管道:分析和预处理训练数据、训练模型、创建预测、评估模型以及捆绑模型文件和配置以方便部署。整个光栅视觉管道如下所示:
(更多详细信息,包括安装说明,可以在官方文档中找到。)
基本语义分割示例入门
让我们将光栅视觉应用于语义分割问题。我们将从一个最小的示例开始,然后探索一些更高级的功能。我们将使用ISPRS Potsdam 语义分割数据集,其中包含六个类别:汽车、建筑、低植被、树木、不透水和杂乱。标签以 RGB GeoTIFF 文件形式分发,每个类别具有不同的颜色,如下所示。完整数据集包含 38 个场景,但这里为简单起见,我们仅使用两个场景。