如何修剪 Detectron2 模型?

How to prune a Detectron2 model?

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

但问题是,为了提高准确率,我在model zoo中使用了the largest model

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

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

我需要让它更小更快以便部署。

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

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

我发现全局修剪是最简单的一种。

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

正如我所说,我使用了 Faster R-CNN X-101 模型。我把它写成“model_final.pth”。它使用 Base RCNN FPN.yaml 并且它的元架构是“GeneralizedRCNN”。

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

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

我要离开我用来训练模型的 cfg.yaml 并使用 "dump" method in Detectron2 config class just in case. Here's the Drive link.

保存它

非常感谢您。

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

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

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

如果您希望在移动设备上进行部署 platforms/edge。可以试试最近发布的D2go软件系统

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

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