DeepLab2:用于深度标记的TensorFlow库(2021)

2022-07-30 09:43:07 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

[paper]DeepLab2: A TensorFlow Library for Deep Labeling [code]DeepLab2: A TensorFLow Library for Deep Labeling DeepLab2 是一个用于深度标注的 TensorFlow 库,旨在为密集像素标注任务提供统一的、最先进的 TensorFlow 代码库,包括但不限于语义分割、实例分割、全景分割、深度估计,甚至 视频全景分割。

深度标记是指通过深度神经网络为图像中的每个像素分配预测值来解决计算机视觉问题。只要感兴趣的问题可以用这种方式表述,DeepLab2 就应该达到目的。此外,此代码库包括我们最近的和最先进的深度标签研究模型。我们希望您会发现它对您的项目有用。

摘要

DeepLab2 是一个用于深度标记的 TensorFlow 库,旨在为计算机视觉中的一般密集像素预测问题提供最先进且易于使用的 TensorFlow 代码库。DeepLab2 包括我们最近开发的所有带有预训练检查点的 DeepLab 模型变体以及模型训练和评估代码,允许社区复制和进一步改进最先进的系统。为了展示 DeepLab2 的有效性,我们采用 AxialSWideRNet 作为网络主干的 Panoptic-DeepLab 在 Cityscaspes 验证集上实现了 68.0% PQ 或 83.5% mIoU,仅使用单尺度推理和 ImageNet-1K 预训练检查点。我们希望公开共享我们的库可以促进未来对密集像素标记任务的研究,并设想该技术的新应用。代码在 https://github.com/googleresearch/deeplab2 上公开提供。

介绍

深度标记是指通过使用深度神经网络为图像或视频中的每个像素分配预测值(即标记每个像素)来解决某些计算机视觉问题 [38, 44, 6]。典型的密集预测问题包括但不限于语义分割 [26, 37, 19],实例分割 [23, 42],全景分割 [36, 48],深度估计 [47, 21],视频全景分割 [34] , 70] 和深度感知视频全景分割 [55]。超越我们在 2018 年之前的开源库1(只能使用前几个 DeepLab 模型变体 [6、7、8、11] 处理图像语义分割),我们引入了 DeepLab2,这是一个用于深度标记的现代 TensorFlow 库 [1], 旨在为一般密集像素标记任务提供统一且易于使用的 TensorFlow 代码库。在 TensorFlow2 中重新实现,此版本包括我们最近开发的所有 DeepLab 模型变体 [13、67、66、70、55]、模型训练和评估代码以及几个预训练的检查点,允许社区重现并进一步改进此先进系统。我们希望开源 DeepLab2 将促进未来对密集像素标记任务的研究,并期待采用该技术的新突破和新应用。在以下部分中,我们详细介绍了一些流行的密集预测任务以及 DeepLab2 库中提供的最先进模型。

密集像素标记任务

几个计算机视觉问题可以表述为密集像素标记。在本节中,我们简要介绍一些密集像素标记任务的典型示例。

  • 图像语义分割 比用于场景理解的图像级分类 [56] 更进一步,以像素级精度识别图像中的对象,需要对象的精确轮廓。它通常被表述为逐像素分类 [44, 6],其中每个像素都由编码其语义类别的预测值标记。
  • 图像实例分割 在图像中以像素级精度识别和定位对象实例。现有模型 [17, 41, 24, 43, 4] 大多基于自上而下的方法(即,边界框检测然后分割)并将问题表述为掩码检测(比边界框检测更进一步,以便于实例级理解)。相反,我们的系统从自下而上的角度处理实例分割,在分割预测之上检测(或更准确地说,分组)实例。因此,我们的系统通过编码语义类和实例身份的预测值标记每个“事物”像素(并且“东西”像素被忽略)。请注意,与其他基于提案的模型不同,我们的模型生成不重叠的实例掩码。
  • 图像全景分割 统一语义分割和实例分割。该任务不允许重叠实例掩码,并需要使用编码语义类和实例身份的预测值标记每个像素(包括“事物”和“东西”像素)。我们想强调的是,我们的整个系统,包括训练和评估管道,使用全景标签格式(即全景标签 = 语义标签 × 标签除数 实例 id),因此不会(在训练模式期间)或生成 (在推理模式期间)任何重叠的掩码 [12]。这与大多数现有的现代全景分割模型 [35, 72, 40, 52, 39, 45, 69, 54] 非常不同,后者使用重叠实例掩码进行训练。
  • 单目深度估计试图通过用估计的深度值标记每个像素来理解场景的 3D 几何形状。
  • 视频全景分割将图像全景分割扩展到视频域,其中在整个视频序列中强制执行时间一致的实例标识。
  • 深度感知视频全景分割通过解决深度估计、全景分割和像素级跟踪的联合任务,提供深入的场景理解。视频中的每个像素都标有语义类、时间一致的实例身份和估计的深度值。

模型花园

在此,我们简要介绍我们开发的 DeepLab2 库中包含的 DeepLab 模型变体。

  • DeepLab 其中多孔卷积 [6](也称为带孔卷积或扩张卷积 2 )被大量用于语义分割(参见以前的几项工作 [28、22、50、59],它们以不同的方式有效地使用了多孔卷积)。具体来说,DeepLabv1 [6] 采用多孔卷积来明确控制由卷积神经网络主干 [59、60、25、14、53] 计算的特征分辨率。此外,多孔卷积使我们能够在不增加参数数量的情况下有效地扩大模型的视野。因此,后续 DeepLab 模型 [7, 8, 11] 中提出的 ASPP 模块(Atrous Spatial Pyramid Pooling)通过采用具有多个采样率的并行多孔卷积有效地聚合了多尺度信息。
  • Panoptic-DeepLab 用于全景分割的简单、快速且强大的自下而上(即无提议)基线。Panoptic-DeepLab 分别采用特定于语义和实例分割的 dualASPP 和双解码器结构。语义分割分支与 DeepLab 相同,而实例分割分支与类别无关,涉及简单的实例中心回归 [33, 51, 62, 49, 73]。尽管很简单,但 Panoptic-DeepLab 在多个全景分割基准上产生了最先进的性能。
  • Axial-DeepLab建立在提议的 Axial-ResNet [67] 骨干之上,该骨干有效地捕获具有精确位置信息的远程上下文。Axial-ResNet 通过将空间卷积替换为轴向注意力层 [27, 32],依次应用于高度和宽度轴,从而在主干的所有层中实现巨大甚至全局的感受野。此外,还提出了一种位置敏感的自注意公式,以在巨大的感受野中保留上下文位置。因此,Axial-DeepLab 采用提议的 Axial-ResNet 作为 Panoptic-DeepLab 框架 [13] 中的主干,在多个全景分割基准上优于最先进的卷积对应物。
  • MaX-DeepLab第一个完全端到端的全景分割系统。MaX-DeepLab 使用掩码转换器直接预测一组分割掩码及其相应的语义类,消除了对以前手工设计的模块(例如框锚 [24]、事物合并启发式 [35] 或模块 [72] 的需求])。掩码转换器使用建议的 PQ 式损失函数进行训练,并采用双路径架构,使 AxialResNet 能够读取和写入全局内存,从而允许任何 Axial-ResNet 层与转换器之间的高效通信(特征信息交换)。MaX-DeepLab 在 COCO [42] 上实现了最先进的全景分割结果,优于基于提案和无提案的方法。
  • Motion-DeepLab视频全景分割任务的统一模型,需要对每个像素进行分割和跟踪。它建立在 Panoptic-DeepLab 之上,并使用一个额外的分支将每个像素回归到前一帧的中心位置。网络输入不是使用单个 RGB 图像作为输入,而是包含两个连续的帧,即当前帧和前一帧,以及前一帧的中心热图 [76]。输出用于为整个视频序列中的所有实例分配一致的轨道 ID。
  • ViP-DeepLab联合处理单目深度估计和视频全景分割的统一模型。它通过添加深度预测头来执行单目深度估计和下一帧实例分支以生成具有时间一致的视频实例 ID 的全景预测,从而扩展了 Panoptic-DeepLab [13]。ViP-DeepLab 在多个基准测试中实现了最先进的性能,包括 KITTI 单目深度估计 [21, 63]、KITTI 多目标跟踪和分割 [21, 65] 以及 Cityscapes 视频全景分割 [15, 34] 。

支持的网络骨干网

在本节中,我们将简要介绍 DeepLab2 库支持的网络主干。

  • MobileNetv3为移动设备设计的轻量级主干 [30, 57],因此可以用作快速设备上模型比较的基准。
  • ResNet以及一些现代修改(例如, Inception stem [61]、随机丢弃路径 [31])。 该主干可用作一般基线。
  • SWideRNet它在宽度(通道数)和深度(层数)上扩展了 Wide ResNets [74, 71, 5]。 这可用于强模型比较。
  • Axial-ResNetAxial-SWideRNet它在最后几个阶段用轴向注意力 [27, 32, 67] 块替换了 ResNet [25] 和 SWideRNet [9] 残差块。这种混合 CNN-Transformer(更准确地说,只有自注意力模块作为 Transformer 编码器)架构可用作基于自注意力模型比较的基线。除了默认的轴向注意块,我们还支持全局或非局部注意 [64, 68] 块。
  • MaX-DeepLab它以双路径方式将转换器块 [64] 与 Axial-ResNets [67] 相结合,允许任何 Axial-ResNet 层和转换器之间进行有效通信。当关闭变压器路径时,该主干也可以用于 Panoptic-DeepLab 框架 [13]。

为了简要强调 DeepLab2 的有效性,我们的 Panoptic-DeepLab 采用 Axial-SWideRNet 作为网络主干,在 Cityscapes 验证集上实现了 68.0% PQ 或 83.5% mIoU,具有单尺度推理和 ImageNet-1K 预训练检查点。对于更详细的结果,我们将读者推荐给提供的模型动物园。

最后,我们想强调的是,我们已经以一种通用的方式实现了 Axial-Block,它不仅包含基于 Transformer 的块(即,axis-attention [67]、global-attention [64]、双路径 Transformer ]) 以及卷积残差块(即基本块、瓶颈块 [25]、宽残差块 [9],每个都有或没有可切换 Atrous 卷积 [54])。我们的设计允许用户轻松开发新颖的神经网络,这些网络有效地结合了卷积 [38]、注意力 [2] 和变换器 [64](即自注意力和交叉注意力)操作。

训练期间的数据增强

除了用于密集预测任务的典型数据增强(即随机缩放、左右翻转和随机裁剪)之外,我们还支持:

  • AutoAugment [16] 发现的随机颜色抖动。在 [9] 中,我们分别在 COCO 和 Cityscapes 数据集上应用了 1.0 和 0.2 级的增强策略。

结论

我们开源 DeepLab2,其中包含我们所有最近的研究成果,希望它能促进未来对密集预测任务的研究。代码库仍在积极开发中,非常欢迎社区对代码库的任何贡献。最后,重申一下,代码和模型动物园可以在 https://github.com/google-research/deeplab2 中找到。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/129360.html原文链接:https://javaforall.cn

0 人点赞