UniRepLKNet:一种用于音频、视频、点云、时间序列和图像识别的通用感知大核卷积神经网络
论文: https://arxiv.org/abs/2311.15599
模型: https://huggingface.co/DingXiaoH/UniRepLKNet/tree/main
主页:https://invictus717.github.io/UniRepLKNet/
contribution
提出了四条guide line用于设计大核CNN架构模型,用于图像识别,语音、点云、时序任务上,并且均取得了较SOTA的成绩,打破了传统观念上 只有Transformer才能一统多模态的事情。(只有打破人们传统观念,才能更加吸引人眼球)
大核CNN架构设计
RepLKNet [1]里提出了用超大卷积核(从13x13到31x31)来构建现代CNN以及正确使用超大卷积核的几个设计原则。但从架构层面看,RepLKNet只是简单地用了Swin Transformer的整体架构,并没有做什么改动。SLaK将kernel size进一步增大到了51x51,但其简单采用了ConvNeXt的架构。总得来讲,当前大核CNN架构设计要么遵循现有的CNN设计原则,要么遵循现有的Transformer设计原则。
Questions: 单纯的用已有模型架构来指导设计大核CNN架构是否真的充分发挥其优势?
revisit 大核CNN的优势
- 不需要堆叠很多层CNN就可以实现较大的感受野
不堆叠很多层CNN就无法得到更高层次的抽象特征和更强的表征能力,但是堆叠很多大kernel CNN 又会使得感受野太大!最主要的是计算量暴增!
传统CNN设计带来的局限
- 小卷积核必须大量堆叠才能实现大感受野
- 卷积层多了,必然特征更加抽象更加high level,但是更加抽象和high level特征需要到什么程度才能满足任务?
- 普通CNN计算量太大,在计算资源受限的设备上,很难保证其效果
四条大核CNN guideline
- 关于局部结构设计:用一些像SE或bottleneck之类的高效结构来增加深度
- 关于重参数化:用膨胀卷积来捕捉稀疏特征。本文提出了一个子模块叫Dilated Reparam Block,这个模块中除了大核卷积以外,还用了并行的膨胀卷积,而且利用结构重参数化的思想,整个block可以等价转换为一个大核卷积。这是因为小kernel+膨胀卷积等价于大kernel+非膨胀卷积。
- 关于kernel size:根据下游任务及所采用的具体框架来选定kernel size。正如前文所提到的,对语义分割框架UperNet而言,低层feature过早地获得过大的感受野可能会产生负面效果。但这并不意味着大kernel会降低模型的表征能力或最终feature的质量!
- 关于scaling law:对一个已经用了很多大kernel的小模型而言,当增加模型的深度时(例如从Tiny级别模型的18层增加到Base级别的36层),增加的那些block应该用depthwise 3x3,不用再增加大kernel了,感受野已经足够大了,但用3x3这么高效的操作来提高特征抽象层次总是有好处的。
一句话总结:用大kernel来提升感受野,用depthwise、se、bottleneck来提升深度、根据特定任务来定kernel size
如何将大核CNN用于其他模态任务?
由于不同模态的数据形式各不相同,因此需要特别设计模态数据形式,保证其可以用CNN来提取特征!这一点也极大体现了作者的工程能力!
将视频、音频、点云、时序数据给处理成C x H x W的embedding map,正如我们将图像表示成3 x H x W的张量一样。例如:
- 把音频的频谱图(T x F)看成是一幅单通道图像,即C=1, H=T, W=F;
- 将点云进行三视图投影,得到三幅单通道图像,所以C=3, H和W可以随意指定;
- 将视频中的各帧拼接到一起,极为简单地得到一张大图(例如,16帧的3 x 224 x 224视频拼接得到3 x 896 x 896的输入);
- 对时序数据,我们借鉴CorrFormer [3]中的embedding layer将数据转换为隐空间中的张量然后就极为粗暴地直接将其reshape成一幅单通道图像的格式。
实验部分详见论文
反思
- 打破常规认知,这点很重要
- CNN 并不一定比Transformer差,只不过现在GPT式模型风向
- 将其他模态任务数据强行转成CNN 所需要的map格式,是否真的好?术业有专攻这点可能还是对的。
更多推荐
所有评论(0)