APP下载
报价宝  ›  科技  › 

OpenMMLab 第二版释出:吸引业界目光的史上最完整的目标检测工具箱

报价宝 来源:baojiabao.com 发布时间:2019-07-11 21:59:00 09月11日更新
报价宝综合消息OpenMMLab 第二版释出:吸引业界目光的史上最完整的目标检测工具箱

关于新版 MMDetection

AI 科技评论按:去年 10 月,香港中文大学-商汤联合实验室在 OpenMMLab 的首版计划中,开放了 MMCV 和 MMDetection(初期版本)。其初衷是为了在计算机视觉的一些重要方向建立统一而开放的程式码库,并不断把新的算法沉淀其中。在过去的半年多时间,这些程式码库已经产生了重要影响,越来越多的 MMLab 以外的研究团队开始把 MMDetection 作为实现新的目标检测算法的基础,并不断将其新算法回馈到 MMDetection 中。

最近,OpenMMLab 第二版正式释出,由多个大学和机构的研究人员联合提出了新一代 Open MMLab Detection,这将有效促进目标检测领域的应用和新方法的研究与发展。

概述本文中,我们介绍了一个目标检测工具箱 MMDetection,它包含了丰富的目标检测和例项分割方法以及相关的元件和模组。这个工具箱由 MMDet 团队主导开发,该团队曾打破了 2018 年 COCO 挑战赛的检测记录并获得冠军。此后,MMDetection 逐渐发展成为一个统一的平台,涵盖了许多主流检测方法和现代模组。它不仅包括训练和推理程式码,而且还为 200 多个网络模型提供了权重引数。我们相信这个工具箱是迄今为止最完整的检测工具箱。

本文介绍了该工具箱的各种特点。此外,我们还对不同的方法、元件及其超引数进行了基准研究。我们希望工具箱和基准能够提供完善、灵活的工具包来复现现有方法并开发自定义的新探测器,从而为日益壮大的研究社群服务。

MMDetection 新功能目标检测和例项分割都是基本的计算机视觉任务。检测流程通常比分类任务更复杂,并且不同的实现环境可能导致截然不同的结果。为了提供高质量的程式码库和统一的基准测试,我们使用 PyTorch 构建了一个目标检测和例项分段程式码库 MMDetection。

MMDetection 有几个主要的特点:

模组化设计。我们将目标检测的网络架构分解为不同的元件,并且可以通过多样化的模组组合来轻松地构建自定义的目标检测架构。

支援多样化的模型架构。该工具箱支援各类主流检测架构,包括单阶段、双阶段和多阶段的检测架构。

计算效率高。所有基础元件和模组都进行了 GPU 实现,训练速度比其他程式码库(包括 Detectron [ https://github.com/facebookresearch/detectron ],maskrcnn-benchmark [ https://github.com/facebookresearch/maskrcnn-benchmark ] 和 SimpleDet 等)更快。

最先进的检测效能。工具箱由 2018 年 COCO 目标检测冠军 MMDet 团队主导开发,并且模型效能还在持续不断地提升。

除了介绍程式码库和基准测试结果外,我们还报告了训练目标检测器的过程和最佳方法。并讨论了关于超引数、体系结构、训练策略的烧蚀实验。我们希望该研究能够有助于未来的研究,并促进不同方法之间的比较。

支援架构MMDetection 包含主流目标检测和例项分割方法的高质量实现。下图中提供了与其他程式码库相比支援的架构和功能的摘要。MMDetection 支援比其他程式码库更多的方法和功能,特别是相比最新的程式码库。

图 1 MMDetection 工具箱支援的检测模型数量上远远超过了其他现有目标检测程式码库

网络架构一、模型表示

虽然不同探测器的模型架构不同,但它们具有共同的元件,可以粗略地概括为以下类:

主干网络(Backbone):其作用是从影象中抽取特征,将影象从画素空间转换到高维的特征空间,例如 VGG 和 ResNet-50 等都是常用的主干网络;

衔接部分(Neck):连线主干网络和头部的结构。它对主干网络生成的原初始特征图执行一些优化或重新配置,例如特征金字塔网络(FPN)就是一种典型的 Neck。

密集连线头(DenseHead):用于在特征图所对映的密集位置上进行操作,包括 AnchorHead 和 AnchorFreeHead,代表性操作有 RPN、Retina、FCOS 等。

RoI 抽取器:从一个或多个特征对映中提取 RoIPooling 类算子特征。从相应级别的特征金字塔中提取 RoI 特征的示例是 SingleRoIExtractor。

RoI 连线头(BBoxHead / MaskHead):将 RoI 特征作为输入并计算出对于的任务结果,包括 bbox 的位置、分类或者分割的预测结果。

通过这些通用模组,我们可以通过简单地建立一些新元件并组装现有元件来进行开发与探索。

图 2 单阶段和两阶段检测器的架构分解图

二、训练流程

我们设计了一个带钩子触发的标准训练流程。该方法不仅可以用于目标检测,还可以用于其他计算机视觉任务,例如影象分类和语义分割。许多工的训练过程可通用类似的工作流程,其中训练和验证流程可以循环的执行,并且验证流程可选。在每个周期,我们都会在模型上执行多次前传和反传操作。

为了使流程更加灵活和个性化,我们定义了一个最小流程单位,其他行为由钩子来触发。为了执行自定义训练流程,我们希望在某些特定步骤之前或之后执行一些自定义操作。我们定义了一些时间点,使用者可以在其中插入任何可执行方法(钩子),在执行的各个时期,都能实现在优先级之后的指定时间点触发插入的钩子。MMDetection 中的典型训练流程如下图所示,验证流程未在图中显示。

图 3 典型训练流程

基准一、实验设定

资料集。MMDetection 支援 VOC 型别和 COCO 型别的资料集。我们采用 MS COCO 2017 作为所有实验的主要基准,因为它更具挑战性,并且使用更广泛。

其它引数。(1) 在不改变宽高比的情况下,将影象调整为最大尺寸 1333×800。(2) 我们使用 8 个 V100 GPU 进行训练,总批量为 16(每个 GPU 2 个影象)和单个 V100 GPU 进行推理。(3) 训练计划与 Detectron 相同。“1x”和“2x”分别表示 12 个时期和 24 个时期,级联模型采用“20e”,表示 20 个时期。

评估指标。我们采用 COCO 资料集的标准评估指标,其中应用了 0.5 到 0.95 的多个 IoU 阈值。区域生成网络(RPN)的结果用召回率(AR)测量,检测结果用 mAP 评估。

二、基准结果

1、主要结果

我们对 COCO 2017 val 的不同方法进行了基准测试,包括 SSD,RetinaNet,Faster RCNN,Mask RCNN,Cascade R-CNN,Hybrid Task Cascade 和 FCOS 。我们使用四种广泛使用的主干网络来评估这些结果,包括 ResNet-50,ResNet-101,ResNet-101-32x4d 和 ResNeXt101-64x4d。

在图中我们展现了这些方法的推理速度和他们的边界框(bbox)与例项分割(mask)AP 值之间的关系。推理时间由单个 Tesla V100 GPU 测试得出。

图 4 不同方法的基准测试结果

2、与其他程式码库的比较

除了 MMDetection 之外,还有其他流行的程式码库,如 Detectron,maskrcnn-benchmark 和 SimpleDet。它们分别建立在 caffe21,PyTorch 和 MXNet 的深层学习架构之上。我们从效能、速度和内存三个方面来对 MMDetection 和 Detectron(@ a6a835f),maskrcnnbenchmark(@ c8eff2c)和 SimpleDet(@ cf4fce4)进行比较。

Mask R-CNN 和 RetinaNet 分别代表两级探测仪和单级探测器。由于这些程式码库也在开发中,因此在其模型仓库中报告的结果可能已过时,并且这些结果是在不同的硬件上所进行的测试。为了公平比较,我们提取最新的程式码并在相同的环境中进行测试,结果显示在下图中。

图 5 不同程式码库在效能、速度和内存的比较

不同架构所得内存以不同方式进行测量。MMDetection 显示所有 GPU 的最大内存,maskrcnn-benchmark 显示 GPU 0 的内存,Detectron 使用 caffe2 API 测量 GPU,SimpleDet 测量 NVIDIA 提供的命令显示的内存。通常,MMDetection 和 maskrcnn-benchmark 的实际内存使用率相似且低于其他内存。

3、不同 GPU 的推理速度

不同的研究人员可能会使用各种 GPU,这里我们展示了常见 GPU 的速度基准,例如 TITAN X,TITAN Xp,TITAN V,GTX 1080 Ti,RTX 2080 Ti 和 V100。我们对每种型别的 GPU 进行了三种模型的评估,并将最终的推理速度展示在下图中。需要注意的是,这些服务器的其他硬件并不完全相同,例如 CPU 和硬盘,但结果可以为速度基准提供基础的参考。

图 6 不同 GPU 的推理速度基准

4、混合精度训练

MMDetection 支援混合精度训练,以减少 GPU 内存并加快训练速度,同时效能几乎保持不变;支援以 apex2 为基础的混合精度训练;SimpleDet 也有不同的实现方式;Detectron 目前还不支援混合精度训练。我们在同一个 V100 节点上测试了三个程式码库,并在下图中展示了 MMDetection 与 maskrcnn-benchmark、SimpleDet 的比较结果。

图 7 混合精度训练测试结果

此外,我们研究了更多模型,以确定混合精度训练的有效性。如下图所示,我们可以了解到更大的批量大小可以节省更多内存。当批量增加到 12 时,FP16 训练的内存减少到 FP32 训练的近一半;并且混合精度训练在应用于 RetinaNet 等更简单的框架时内存效率更高。

图 8 不同模型在 MMDetection 上的混合精度训练结果

5、多节点可扩充套件性

由于 MMDetection 支援多个节点上的分散式训练,因此我们分别在 GPU 不同的节点上测试其可扩充套件性。我们采用 Mask R-CNN 作为基准测试方法,并在另一个 V100 节点上进行实验。接着我们采用不同的节点数量时,基本学习率被调整为线性,实验结果展示在下图中。

图 9 Mask R-CNN 在多个节点上的训练速度

回归损失函式通常我们采用多工损失函式来训练目标检测器,该目标检测器由分类和回归的特征表示。最广泛采用的回归损失函式是 Smooth L1 Loss;但最近也出现了更多的回归损失函式,例如,Bounded IoU Loss,IoU Loss,GIoU Loss,Balanced L1 Loss。L1 Loss 也是衍生的一种损失函式。然而这些损失函式通常以不同的方法和设定实现。

在这里,我们评估同一环境下的所有损失。值得注意的是,最终的测试效能会随着回归损失函式的不同损失权重而变化,因此我们执行粗网格搜寻以找出每个损失的最佳损失权重。下图结果表明,通过简单地增加 Smooth L1 Loss 的损失权重,最终效能可以提高 0.5%。

图 10 不同损失权重下不同回归损失的比较

在没有调整损失重量的情况下,L1 Loss 函式比 Smooth L1 Loss 函式效能高 0.6%,而增加损失权重不会带来进一步的增益。L1 Loss 比 Smooth L1 Loss 具有更大的损耗值,尤其是对于相对准确的边界框,差距更明显。根据分析结果,提高定位精度较好的边界框梯度将有利于定位。L1 Loss 的损失值已经非常大,所以增加损失权重不会带来增益。

对于端到端速度更快的 R-CNN,Balanced L1 Loss 函式的 mAP 值比 L1 Loss 高 0.3%,这与采用预先计算方法的实验结果略有不同。然而,我们发现 Balanced L1 Loss 可以在 IoU balanced 取样或平衡 FPN 的基线上的带来更高的增益。除了 Bounded IoU Loss 函式外,基于 IoU 的损失表现略好于具有最佳损耗权重的基于 L1 的损失。GIoU Loss 比 IoU Loss 高 0.1%,Bounded IoU Loss 与 Smooth L1 Loss 具有相似的效能,但前者需要更大的损失权重值。

归一化由于 GPU 内存有限,训练检测器时用到的资料量通常很小(1 或 2),因此 BN 层通常置为典型设定。配置 BN 层有两个选项:是否更新统计资料 E(x)和 Var(x),以及是否优化仿射权重 γ 和 β。按照 PyTorch 的引数名称,我们将这两个选项分别表示为 eval 和 requires-grad。eval = True 表示不更新统计资料;requires-grad = True 意味着 γ 和 β 在训练期间被优化。除了冻结 BN 层外,还有其他标准化层也可以解决小批量的问题,例如 Synchronized BN(SyncBN)[25] 和 Group Normalization(GN)。

图 11 不同 BN 设定和 LR 时间表的结果

在这里我们研究两个问题:不同的归一化层如何相互比较?在哪里为检测器新增标准化层?

为了回答这两个问题,我们用 ResNet-50-FPN 进行 Mask R-CNN 的三次实验,并分别用 FrozenBN,SyncBN 和 GN 代替主干中的 BN 层,下图中的结果显示出:

(1)如果我们只用相应标准化层替换主干中的 BN 层,FrozenBN,SyncBN 和 GN 也能够实现类似的效能。

(2)将 SyncBN 或 GN 新增到 FPN 和 bbox / mask head 不会带来进一步的好处。

(3)用 4conv1fc 替换 2fc bbox head 以及向 FPN 和 bbox / mask head 新增归一化层可将效能提高约 1.5%。

(4)具有更多卷积层的 bbox head 将展现出更高的效能。

图 12 采用不同归一化层新增在不同元件上的对比

训练资料规模作为典型的惯例,训练影象被调整大小到预定义的比例而不改变纵横比。以前的研究通常更喜欢 1000×600 的规模,现在通常采用 1333×800。

在 MMDetection 中,我们采用 1333×800 作为预设训练资料规模。结果如下图所示,其中 1333×[640:800:32] 表示较长的边缘固定为 1333,较短的边缘是从 {640,672,704,736,768 的池中随机选择的,800},对应“值”模式。设定 1333×[640:800] 表示在 640 和 800 之间随机选择较短边缘,这对应于“范围”模式。

图 13 不同训练资料规模的比较

从结果中我们可以了解到,“范围”模式与具有相同最小和最大尺度的“值”模式执行类似或稍微好一些。通常更宽的范围带来更多改进,特别是对于更大的最大尺度。具体地,就 bbox 和 mask 的 AP 值而言,[640:960] 比 [640:800] 高 0.4%且高 0.5%。但是,较小的最小比例(如 480)将无法获得更好的效能。

其它超引数MMDetection 主要遵循 Detectron 中的超引数设定,以及根据我们所需要进行设定。根据经验,我们发现 Detectron 的一些超引数不是最优的,特别是对于 RPN。在下图中,我们列出了可以进一步提高 RPN 效能的那些超引数。虽然调整可能有利于效能,但在 MMDetection 中我们预设采用与 Detectron 相同的设定,并将此研究留作参考。

图 14 RPNResNet-50 超引数的研究结果

详细结果我们提供了下图中某些方法的详细基准测试结果。

R-50 和 R-50(c)分别表示 pytorch 型别和 caffe 型别的 ResNet-50 主干网络。在瓶颈残差模组中,pytorch 型别的 ResNet 采用了 1x1 步幅,1 卷积层;然后是采用了 3x3 步幅,2 卷积层;而 caffe 型别的 ResNet 采用 1x1 步幅,2 卷积层;然后是 3x3 步幅,1 卷积层。

图 15 COCO val2017 的不同检测方法的结果(APb 和 APm 分别表示 box 和 mask 的 mAP 值)

更多详细设定和元件方面的资讯,请参阅 https://github.com/open-mmlab/mmdetection/blob/master/MODEL_ZOO.md

原文连结

https://arxiv.org/abs/1906.07155

GitHub 地址

https://github.com/open-mmlab/mmdetection

2019 全球人工智能与机器人峰会

2019 年 7 月 12 日至 14 日,由中国计算机学会(CCF)主办、雷锋网和香港中文大学(深圳)联合承办,深圳市人工智能与机器人研究院协办的2019 全球人工智能与机器人峰会(简称 CCF-GAIR 2019)将于深圳正式启幕。

届时,诺贝尔奖得主JamesJ. Heckman、中外院士、世界顶会主席、知名Fellow,多位重磅嘉宾将亲自坐阵,一起探讨人工智能和机器人领域学、产、投等复杂的生存态势。

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 数码相机价格 手机价格 笔记本价格 电视机价格 耳机价格