【问题标题】:How to prune a Detectron2 model?如何修剪 Detectron2 模型?
【发布时间】:2020-12-20 12:44:36
【问题描述】:

我是一名学习计算机视觉数月的老师。当我能够使用 Detectron2 的 Faster R-CNN 模型训练我的第一个对象检测模型时,我感到非常兴奋。它就像一个魅力!超级酷!

但问题是,为了提高准确率,我在模型动物园中使用了the largest model

现在我想将其部署为人们可以用来减轻工作的东西。但是,这个模型太大了,需要大约 10 秒才能在我的 CPU(Intel i7-8750h)上推断出单个图像。

因此,即使在普通的云服务器上也很难部署这种模型。我需要使用非常昂贵的 GPU 服务器或最新型号的 CPU 服务器,而且我不确定我是否可以补偿几个月的服务器费用。

我需要让它更小更快地进行部署。

所以,昨天我发现有修剪模型之类的东西!!我很兴奋(由于我不是计算机或数据科学家,请不要怪我(((:)

我看了official pruning documentation of PyTorch,但我真的很难理解。

我发现全局修剪是最容易做到的。

但问题是,我不知道应该写什么参数来修剪。

就像我说的,我使用了 Faster R-CNN X-101 模型。我将其命名为“model_final.pth”。它使用Base RCNN FPN.yaml,它的元架构是“GeneralizedRCNN”。

这似乎是一个简单的配置。但就像我说的,因为这不是我的领域,所以对于像我这样的人来说很难。

如果你能一步一步地帮助我,我会非常高兴。

我将留下我用来训练模型的 cfg.yaml,并在 Detectron2 配置类中使用 "dump" 方法保存它以防万一。这是Drive link.

非常感谢您。

【问题讨论】:

    标签: computer-vision pytorch web-deployment object-detection faster-rcnn


    【解决方案1】:

    所以我猜,您正在尝试优化推理时间并达到令人满意的准确度。如果不了解您的对象类型、训练大小、图像大小的详细信息,将很难提供建议。但是,正如您所知,ML 项目开发是一个迭代过程,您可以查看以下页面并检查推理和准确性。

    https://github.com/facebookresearch/detectron2/blob/master/MODEL_ZOO.md#coco-object-detection-baselines

    我建议,您尝试 R50-FPN 主干,看看您的准确性如何。然后,您将更好地了解下一步该做什么。

    【讨论】:

    • 谢谢,我已经训练了 R50-FPN x3 模型,它的准确性几乎相同,而且速度更快。我可能会使用这个模型。
    • 此外,大型模型更多地用于研究目的,而不是部署。 github.com/facebookresearch/detectron2/issues/…
    • 您还可以使用大型模型进行数据蒸馏 - arxiv.org/abs/1712.04440
    • 如果你需要进一步加速,那么你可以使用更浅的主干,比如 Resnet34。
    【解决方案2】:

    如果您希望在移动平台/边缘部署上进行部署。您可以尝试最近发布的 D2go 软件系统。

    它是一个由 PyTorch 和 Detectron2 提供支持的深度学习工具包。拥有用于移动设备的最先进的高效骨干网络。端到端模型训练、量化和部署管道。轻松导出为 TorchScript 格式以进行部署。

    https://github.com/facebookresearch/d2go/

    【讨论】:

      猜你喜欢
      • 2022-10-09
      • 2021-05-08
      • 1970-01-01
      • 2022-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-02
      • 2022-06-23
      相关资源
      最近更新 更多