从RepVgg到MobileOne,含mobileone的代码

重参数化的思想本质上就是利用线性模型的可加性。在工业界就在conv和bn层融合上有所应用。最近几年一直有re-parameter的工作。RepVGG是一个比较好的应用。

VGG是直筒式模型,因为没有skip connnection,导致训练更深层的vgg会出现模型的退化。但如resnet等,skip connnect为端上设备增加了运行耗时,在数据的存取上有不小的消耗。
因此RepVGG,将重参数的思想融合进来,在训练时,为vgg引入了skip connection,在测试时将skip connection和主分支融合,得到一个convbnrelu block,进而变成直筒式模型。
但不同于resnet,RepVgg为了保证线性模型可加的原则,在两个relu之间,使用残差分支。因为在非线性层之间的任何线性层,都可以进行合并。
从RepVgg到MobileOne,含mobileone的代码_第1张图片

关于如何融合,可以在参考链接中查看,写的非常详细

而MobileOne则是在RepVGG的基础上,意识到直筒式模型可以为端上模型带来不错的提速。因此决定将RepVgg改造为轻量级模型,将深度分离卷积,使用一些精心设计的训练策略,使得直筒式模型在轻量型模型上,比肩mobilenet等知名轻量化模型,而且在运行速度上更胜一筹
从RepVgg到MobileOne,含mobileone的代码_第2张图片

我复现了mobileone的s0版本,得到了和论文效果相差无几的效果,有兴趣可以在我的github查看
MobileOne code

参考

深度解读repvgg

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