关键点
本篇文章的工作主要是提出了一种卷积神经网络:在训练的过程中使用多分枝的结构,在推理的时候啊变成了3x3卷积加上relu激活函数的plain结构。为了解决这种权重融合的问题,作者提出了一种叫做struc-tural re-parameterization technique的技术,所以又叫REP VGG,paper中说比resnet50块83%,比resnet101快101%。所以本篇文章的工作最np的地方就是这个权重融合的这个想法了。
一、介绍
直接放个原图。
如图所示, B就是训练的网络结构,C就是推理的网络结构。
可以看到训练的网络就是一个2倍的下采样链接了3个重复的结构。这个结构是由(3x3,1x1,idengty)三个分支构成的,这个网络的设计可以看到resnet的影子, 推理又变成了4个3x3 ps:描述了一下,感觉自己写了句废话。。。。
为什么要这么干呢,作者说了几个好处吧:
1.兼具速度和精准度 :
- 我理解巧妙的运用多分支模型准确率高但是速度慢, 单分支模型速度快但是准确率神马的有点差
- 主要体现在模型参数,和分支统计意义的组合上吧
2.好设计芯片QAQ:
- 应该是3x3+relu 这种结构cuda底层会有一些优化。我没做过实验,但是看了知乎上一个老哥说3x3大概是1X1的计算时间的2倍??
二、方法论
就是那个weight融合的过程:上面那个是训练,下面的那个是推理。
**对于多通道卷积和1x1 的卷积可以升降维度的uu还有点迷糊的可以移步另一篇blog,因为我也迷糊来着。
**
一维卷积,二维卷积,三维卷积,1乘1卷积的作用
咳咳,就是那个输入是2channals 的图片,卷积核不就得是2channel的吗,输出是2channel的,那卷积核的个数不就得是2 channel的吗,于是乎卷积核就是2x2xWxH这样子
训练过程3x3卷积对应就是2x2x3x3, 1x1的卷积就是2x2x1x1, identity那个就上都没有投影自己
推理的过程就是3x3卷积不变,1x1的卷积变成4个1x1的放中间padding了一圈0,硬凑成4个3x3了,identity那个反应了半天,不就是[10; 01]咩。。。。四周同样padding 0
三、实验总结
作者啊提出了不同的宽度和深度的repvgg:
挂一个paper上面的imagenet 分类实验吧:
之后打算做cub200细粒度分类来着,(可爱的鸟鸟是不是,妈妈的乖宝贝bushi)看看好不好使,搁这挖个坑吧。
总结
融合这个想法很不错, 扬长避短吗就是,还有线性代数得好好看看。
刚学有点菜,看的贼慢也有地方不对,或者关键点没说清楚可能。
看到这的希望大家都能不卷还能有钱