该仓库收录于PytorchNetHub
-
本仓库仅提取网络定义部分,用以分析。
-
应用广泛
- yolov6、yolov7等:设计结构重参数化的网络进行训练,推理时转化为等价的简单结构,加速推理。
- MNN线性超参数化工具:设计小模型 --> 训练线性过参数化大模型 --> 转换等价小模型推理
问题 | 问题1:resnet等多分支结构,造成内存消耗,推理速度下降。 问题2:depthwise等复杂操作,造成内存消耗,硬件支持差。 |
创新点 | RepVGG是VGG结构,快速、省内存、灵活 解决问题1:推理时无分支 解决问题2:仅包含3x3conv+ReLU的VGG style结构,无复杂操作 |
具体实现 | 解耦训练和推理的网络结构。 训练:多分支提升性能 推理:结构重参数化,转为等价的VGG style结构。 |
核心方法get_equivalent_kernel_bias
-
融合BN
conv layer + BN layer
-->conv layer
-
其余分支转为3x3卷积
1x1conv -> 3x3conv
bn->3x3conv
-
三个分支合并
conv(x, W1) + conv(x, W2) + conv(x, W3) = conv(x, W1+W2+W3))