Convolutional Networks with Oriented 1D Kernels

Convolutional Networks with Oriented 1D Kernels
复制标题

DOI:
10.1109/iccv51070.2023.00572
复制
发表时间:
2023-09
期刊:
2023 IEEE/CVF International Conference on Computer Vision (ICCV)
影响因子:
--
通讯作者:
Alexandre Kirchmeyer;Jia Deng
Alexandre Kirchmeyer;Jia Deng
中科院分区:
其他
文献类型:
--
作者:
Alexandre Kirchmeyer;Jia Deng

文献摘要

相似文献

在计算机视觉中,2D卷积可以说是ConvNet执行的最重要的操作。毫不奇怪,它一直是密集的软件和硬件优化的焦点,并享有高效的实施。在这项工作中,我们提出了一个有趣的问题:我们可以让ConvNet在没有2D卷积的情况下工作吗?令人惊讶的是,我们发现答案是肯定的-我们证明了完全由1D卷积组成的ConvNet可以在ImageNet分类上做得和2D一样好。具体来说,我们发现高性能1D ConvNet的一个关键因素是定向1D内核:1D内核不仅水平或垂直定向,而且还以其他角度定向。我们的实验表明,定向1D卷积不仅可以取代2D卷积,还可以用大内核增强现有架构,从而提高精度,同时增加最小的FLOPs。这项工作的一个关键贡献是高度优化的面向1D内核的定制CUDA实现,专门用于深度卷积设置。我们的基准测试表明,我们的定制CUDA实现几乎完美地实现了1D卷积的理论优势:对于任何角度,它都比原生水平卷积快。代码可在https://github.com/princeton-vl/Oriented1D上获得。
In computer vision, 2D convolution is arguably the most important operation performed by a ConvNet. Unsurprisingly, it has been the focus of intense software and hardware optimization and enjoys highly efficient implementations. In this work, we ask an intriguing question: can we make a ConvNet work without 2D convolutions? Surprisingly, we find that the answer is yes—we show that a ConvNet consisting entirely of 1D convolutions can do just as well as 2D on ImageNet classification. Specifically, we find that one key ingredient to a high-performing 1D ConvNet is oriented 1D kernels: 1D kernels that are oriented not just horizontally or vertically, but also at other angles. Our experiments show that oriented 1D convolutions can not only replace 2D convolutions but also augment existing architectures with large kernels, leading to improved accuracy with minimal FLOPs increase. A key contribution of this work is a highly-optimized custom CUDA implementation of oriented 1D kernels, specialized to the depthwise convolution setting. Our benchmarks demonstrate that our custom CUDA implementation almost perfectly realizes the theoretical advantage of 1D convolution: it is faster than a native horizontal convolution for any arbitrary angle. Code is available at https://github.com/princeton-vl/Oriented1D.