如何修剪Detectron2模型?

问题描述

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

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

现在,我想将其部署为人们可以用来减轻工作负担的工具。但是,该模型是如此之大,以至于需要10秒钟才能推断出我的cpu上的单个图像Intel i7-8750h。

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

我需要使其更小,更快地进行部署。

所以,昨天我发现有些东西像修剪模型!我非常激动(因为我不是计算机或数据科学家,所以不要怪我((((:)

我读过official pruning documentation of PyTorch,但我很难理解。

我发现最简单的方法是进行全局修剪。

enter image description here

但是问题是,我不知道应该向修剪中写入哪些参数。

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

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

如果您能逐步帮助我,我会很高兴。

我离开了我用来训练模型的cfg.yaml,并用"dump"方法将其保存在Detectron2 config类中,以防万一。这是Drive link.

非常感谢您。

解决方法

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

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...