模型剪枝详解及pytorch代码实现

在当前的领域,随着需求的复杂程度以及难度,精度的要求越来越高,像实例分割等需求,对比分类模型,我们的模型结构变得越来越大,但同时,我们对实时性要求也越来越高,往往在33ms(大概在33ms处理完一帧才能达到不延迟的实时要求)以内要串联运行好几个模型,这就产生了相互矛盾,因此我们开始寻求高精度,低延迟的模型结构。于是,便出现了很多轻量级模型,比如mobileNet,shuffleNet,ghostNet等等,但往往这些还不足以支撑我们庞大的实时性需求,因此,我们往往还会对模型进行人工修改,比如修改backbone,修改输入分辨率,Filter等等,但这些操作往往会导致模型的精度有所损失,并且工程量较大,凭借常识判断,效率较低,因此,便出现了多种auto模型优化的方法。

(1).模型量化,具体操作可以看我之前关于tensorflow的量化文档,量化分为伪量化及感知性量化,缺点就是实现难度较高,tf2有相关文档及实现接口。

(2).模型剪枝,剪枝实现起来较为简单,也是模型优化常用的方法,如果是冗余过大的模型耗时会缩减到原来的50%,下面会详细讲并分析,最后加上pytorch代码实现。

(3).模型蒸馏,大概原理就是使用

你可能感兴趣的:(付费专栏,人工智能,深度学习,机器学习)