pytorch 27 科学炼丹(训练)方式之——无痛涨点(模型重参数化,ACNet、RepVGG、DBBNet)

博主这里的无痛涨点是指,在训练时增加一定的flop,可能会降低收敛速度,但是在测试时保持flop不变增强模型的精度。flop不变(模型参数量不变),性能增加,这不就白捡的性能么。那这是如何做到的呢?

该操作通过利用特定卷积结构的可合并性,设计出新的block结构,在训练时block是一个多支路结构(flop增加),在测试是block的参数进行重构变成单个支路(flop不变)。其主要工作,就是设计出可以合并为单个conv的block结构。在训练时,使用block复杂结构提取更为丰富的图像特征;在测试时,将复杂的block结构转变为单一的conv结构。因此实现了,涨点不涨flop。

我们可以使用ACNet、RepVGG、DBBNet项目中的Block设计替换自己的Conv3x3模块,从而实现无痛涨点。可以参考博主的上一篇文章,可以实现不改源码,轻松替换特定模块。pytorch 26 科学炼丹(训练)方式之——魔改网络(给模型做外科手术,实现module的删除、修改与添加,forward流程的修改)_万里鹏程转瞬至的博客-CSDN博客

接下来博主按照论文的发表时间顺序进行解读。

1、ACNet

源自大佬Xiaohan D

猜你喜欢

转载自blog.csdn.net/a486259/article/details/124866552
27