简介
核卷积和小核卷积
在ConvNet中,我们不断添加 3 × 3 { 3 \times 3 } 3×3或者 5 × 5 { 5 \times 5 } 5×5的小核卷积,:
- 提升感受野范围,神经元可以接收到更广泛的信息,从而能够捕捉到更大范围内的特征;
- 提高空间模式的抽象层次,小核卷积层通常能够捕捉到较为局部和低级的特征,如边缘和纹理。而通过增加卷积层,网络能够学习到更高层次的抽象特征;
- 增强模型的表示能力,更深的网络通常能够捕捉到更复杂的数据结构,提高其在各种任务上的表示能力。
但是,作者有自己想法:
- 增加卷积核的大小比堆叠更多层更有效地扩大感受野,通过少量的大核卷积层来构建足够大的感受野,节省计算资源用于其他更有效的结构;
- 通过其他结构来提高网络的表示能力和抽象层次,而不是仅仅依赖于增加网络的深度;
关于网络设计
作者针对上面的问题,提出了4条设计网络的指导方针:
- 使用高效的结构增加深度:推荐使用如SE Blocks(Squeeze-and-Excitation Blocks)这样的结构来增加网络的深度,图中的(D)就是;
- 使用“DilatedReparamBlock”重新参数化:提出了一种名为DilatedReparamBlock的结构,我个人理解,这就是把一个超大核心的卷积核,分解成一个个小的空洞卷积,在图中找到对应模块,我们可以发现大核kernel_size会对应不同的小核kernel_sizes列表和dilateds列表,由他们组合卷积的参数列表;
- 根据下游任务决定卷积核大小:建议根据具体任务的需求来选择合适的卷积核大小,并通常只在网络的中间层和高层使用大型卷积核;
- 在增加模型深度时添加3×3卷积:在扩展模型深度时,建议添加3×3的卷积层而不是更多的大型卷积核。
代码结构图
讲代码就太无聊了,直接把UniRepLKNetBackbone的结构图放出来吧,对着代码,就能明白了
下面是结合代码和网络模型的导图,仔细看,我很细的
由于版面限制,只能上传普通清晰度的结构图,高清大图请点这里