检测航空影像中的街道和人行道表面(神经网络)

人工智能 神经网络 机器学习 深度学习 图像识别 模式识别
2021-11-04 18:43:46

我想在非常详细(0.075m/pix)的 USGS 高分辨率正射影像中检测街道和人行道表面,这基本上意味着具有两个类别的图像分割。有问题的地方是类似于这个的住宅区我将从 USGS 下载 GeoTIFF 中未压缩的原始图像进行检测。

我读到神经网络在图像分割中表现得非常好,我想尝试一下。我白天是一名开发人员,所以我可以编码,但我是神经网络的初学者,只知道关于架构、加权和反向传播等的基本原理。是否可以直接进入我的任务,或者我需要从更简单的事情开始?如果可以节省时间,我宁愿直接加入。

我浏览了几篇处理类似事情的论文,它们看起来很复杂。有一些简单的方法可以让我开始吗?我的意思是神经网络中的一个开源项目,它处理类似于我的任务的图像分割,我可以利用它吗?

我看到需要先训练神经网络,我准备先进行手动分割以获得训练数据。但是,我不知道神经网络设计/架构,如何设计层,我需要多少层等。我还想利用网络将学习一些关于如何建造街道和人行道的基础知识 -它们是(不确定我的术语是否正确)“线性结构”,通常长几米,甚至可能不会在图像中结束,而且人行道通常沿着街道延伸,街道有十字路口等。

1个回答

是的,实际上神经网络 (NN) 在分割方面非常有效,在我看来,您的问题与神经网络的能力非常匹配。

我认为最好在使用之前真正了解 NN 是什么。首先,让我们从架构开始。NN 有 3 个区域,输入层、隐藏层和输出层。输入层取决于数据集中的特征数量。隐藏层,你可以有多个不同宽度的层(每层的节点数)。输出层取决于数据集中的类数。

一个简单的示例是将 NN 应用于 MNIST 数据集。这是一个包含 0-9 之间的手写数字的数据集。假设这些图像中的每一个都是 16*16=256 像素。因此,您将需要 256 个输入节点。您将需要 10 个输出节点,每个输出节点一个。隐藏层可以以您可以创造性想象的任何方式设置。然而,有一些方法可以优化您的隐藏层,以在不花费太多计算能力的情况下获得最佳性能。

这始终是 NN 的工作方式。NN 的美妙之处在于您只需编写一次代码,它就可以学习任何功能。你需要做的就是改变你的架构,但强调的原则总是一样的。

在您的情况下,您想要进行细分。这通常使用您要分类的像素周围的窗口来完成。流行的选择是 3*3 或 5*5 像素。您考虑的窗口的选择将决定输入层中的节点数。然后你想将它们分类为两个类之一,因此你需要 2 个输出节点。您也可以只使用 1,但我不推荐它,如果您愿意,我可以扩展它。

NN 的一个警告是您将需要相当多的训练数据。因此,准备好手动对大量像素进行分类。

如何知道隐藏层有多少层?如何知道隐藏层每层有多少个节点?

一般来说,对于像您尝试学习的简单操作,您不需要多层。一个隐藏层应该足够了,最多 2 个。但是,你如何确定你应该使用的节点数量?您需要使用一些模型验证技术来执行此操作。一种方法是通过网格搜索和交叉验证。使用多个节点训练和重新训练您的模型,然后比较它们的性能以确定最佳节点数。为了获得好的结果,这确实需要一个大数据集。

经验法则:NN 的 1 个隐藏层!如果您不需要它们,请不要被拖入深度模型。