视觉场景理解的像素级语义分割不仅需要准确,而且要高效,以便在实时应用中找到任何用途。现有的算法虽然精度很高,但并没有注重对神经网络参数的有效利用。因此,它们在参数和操作数量方面非常庞大;因此也慢。在本文中,我们提出了一种新的深度神经网络结构,它可以在不显著增加参数数量的情况下学习。我们的网络仅使用1150万个参数和21.2 GFLOPs来处理分辨率为3 × 640 × 360的图像。它在CamVid上提供最先进的性能,并在cityscape数据集上提供可比较的结果。对于不同的图像分辨率,我们还将NVIDIA GPU和嵌入式系统设备上的网络处理时间与现有的最先进的架构进行了比较。
现有的语义分割技术大多采用编码器-解码器对作为其网络体系结构的核心。在这里,编码器将信息编码到特征空间,解码器将这些信息映射到空间分类中进行分割。
尽管语义分割针对的是需要实时操作的应用,但讽刺的是,目前大多数深度网络都需要非常大的处理时间。YOLO、Fast RCNN、SSD等网络关注的是实时对象检测,但在语义分割的情况下,这方面的工作很少甚至没有。
在我们的工作中,我们尝试在不影响网络处理时间的情况下获得精确的实例级预测。一般情况下,编码器由于池化而丢失空间信息,或者采用池化索引或全卷积来恢复跨步卷积。我们假设并在随后的文章中证明,如果不采用上述技术;绕过空间信息,直接从编码器到相应的解码器提高了精度,并显著减少了处理时间。这样,在每一级编码器上丢失的信息都被保留了下来,并且在重新学习这些丢失的信息时不会浪费额外的参数和操作。
语义分割涉及到对图像的每一个像素进行标记,因此保留空间信息就变得非常重要。用于场景解析的神经网络结构可以细分为编码器网络和解码器网络,它们基本上分别是判别网络和生成网络。
LinkNet的架构如图 1 所示。
图 1 所示的网络的左半部分是编码器,而右半部分是解码器。
编码器从一个初始块开始,该初始块对输入图像进行卷积,其核大小为7×7,步长为2。该块还在一个跨步为2的3 × 3的区域内执行空间最大池化。编码器的后一部分由残差块组成,表示为编码器块(i)。图 2 详细显示了这些编码器块中的层。
类似地,图 3 提供了解码器块的层详细信息。表 1 包含了关于每个块中使用的特征图的信息。
LinkNet 使用 ResNet18 作为它的编码器。我们在我们的解码器中使用完全卷积技术,每个 \(conv(k × k)(im, om)\) 和 \(full-conv(k × k)(im, om)\) 操作至少有三个参数。其中 \((k × k)\) 表示 \((kernel−size)\) ,\((im, om)\) 表示 \((inputmap, outputmap)\) 。
与用于分割的现有神经网络架构不同,我们的新颖之处在于我们将每个编码器与解码器连接起来。通过在编码器中执行多次下采样操作,会丢失一些空间信息。仅使用编码器的下采样输出很难恢复丢失的信息。通过池化索引将编码器与解码器连接起来,这些索引不是可训练的参数。其他方法直接使用其编码器的输出并将其馈送到解码器以执行分割。
每个编码器层的输入也被绕过到其相应解码器的输出。通过这样做,我们旨在恢复解码器及其上采样操作可以使用的丢失空间信息。此外,由于解码器在每一层都共享编码器学习的知识,因此解码器可以使用更少的参数。与现有的最先进的分割网络相比,这会产生一个整体更高效的网络,从而实现实时操作。
我们将LinkNet与现有架构在两个不同的指标上进行比较: