作者来自ETHZ Computer Vision实验室,本文设计了ZippyPoint,它是一个用于特征点提取的网络。与ORB的描述子类似,ZippyPoint得到的也是二进制描述子。该特征点可以获得与基于学习的特征匹配以及视觉定位性能,同时速度提升5倍。
作者推文:ZippyPoint也许为移动平台提供一种BRISK、ORB的替代方案
论文:arxiv.org/abs/2203.03610
本文代码即将开源,笔者将持续关注。
摘要
图1. 基于学习的高精度特征点在匹配时速度很慢,而本文提出的ZippyPoint是一种二进制描述子,速度提升非常明显
更复杂、更强大的神经网络模型的设计显著提升了局部特征检测和描述的技术水平。这些技术进步可以归因于更深的网络、通过自我监督改进的训练方法,或引入新的网络结构,例如用于特征匹配的图神经网络。然而,在追求更高性能的过程中,生成轻量级描述符的高效架构几乎没有受到关注。本文的出发点就是设计一种可用于低功耗低算力的移动平台的特征提取网络。本文设计的ZippyPoint使用了二进制描述子归一化层以及混合精度网络,该特征点可以获得与基于学习的特征匹配以及视觉定位性能,同时速度提升5倍。
基本原理
基线网络
KP2D[5] 网络结构: 整体与SuperPoint类似的编解码结构,编码端4个VGG-style块,解码端接了3路(head),分别对应特征点位置,特征点得分以及描述子;除最后一层以外,每一层都接了一个BN层以及Leaky-ReLU
输入:一张图像I in mathbb{R} ^{H times W times 3}
输出:特征点位置 mathbf{p}={[u, v]} in mathbb{R}^{N times 2} , 描述子 mathbf{f} in mathbb{R} ^{N times 256} 以及特征点置信度得分mathbf{s} in mathbb{R} ^N 后续将基于KP2D[5]网络进行优化,得到量化后的二进制描述子。
网络优化/量化
对一个卷积层的量化需要考虑的因素包括:权重精度、特征精度以及是否使用高精度的残差等。当对整个网络进行量化时,多层卷积组合在一起需要考虑的因素将形成一个巨大的参数搜索空间。面对这个问题,穷举策略并不可取。
图2. 将操作划分为macro-block,在(b)中用不同的颜色描述。从第一个上游的蓝色的macro-block,确定最佳量化设置(该配置可以保持网络性能,同时提高网络吞吐量)。然后,穿越到下一个绿色macro-block,并重复这个过程
为缩小搜索空间,本文提出了一种网络层的划分和遍历策略算法,如图2所示。首先,本文将目标网络(即KP2D)的操作划分为宏块(macro-block)。对于每个宏块,定义一个候选量化配置的集合。然后遍历宏块,为每个宏块确定最佳配置。由此可见,这种策略将搜索的复杂性从组合级(每个宏块配置数量的乘积)降低到线性级(每个宏块配置数量的总和)。
具体地,作者将基线网络划分为5个macro-blocks:编码器第一个卷积层,编码器剩余的卷积层,空间缩小层(如池化层),解码器最后一层(即输出层)以及除最后一层剩下的解码器层。
- Macro-Block I (First Encoder Convolution):两种配置,FP以及INT8,作者发现使用INT8可以提升约3FPS,同时可保持性能不下降。作者认为,这是因为输入图像也是用INT8表示的,因此,输入序列的离散化不会造成信息的损失。
- Macro-Block II (Encoder Convolutions):三种配置,INT8, binary (BIN)以及具有高精度残差的二进制(BIN-R)。使用二进制表示可以极大地提到吞吐量,但是性能下降明显;为应对性能下降,本文引入了用于构建高精度残差的INT8表示。
- Macro-Block III (Spatial Reduction):四种配置,average-pooling (Aver.), max-pooling (Max), sub-sampling (Sub.S.)以及一个需要学习的池化操作(INT8表示)。
- Macro-Block IV (Decoder Convolutions):二种配置,INT8以及BIN-R。
- Macro-Block V (Final Decoder Convolutions):二种配置,FP以及INT8。
小结: 若直接将网络第一层与最后一层量化为INT8,则效果下降明显;混合精度网络可以获得精度较高的效果;仅有BIN-R 或INT8的卷积将会使网络陷入次优;对于预测头(head),特征点位置以及得分必须保持是FP,而描述子可以被量化为INT8。
二进制描述子
在描述一幅图像或者图像块时,学习映射(learned mapping)的目的是将一组数据点映射到一个嵌入空间(embedding space)。在这个空间里,相似的数据紧密相连,而不相似的数据则相距甚远。
为了确保稳定的优化,嵌入后的结果一般要归一化,通常使用L2 归一化:mathbf{y} = frac{mathbf{x}}{||mathbf{x}||_2} 但是对于离散的二进制输出上述归一化形式并不可行(不可微),作者在此处设计了一种L2 归一化的一般化形式:
当operatorname{sim}(u)=frac{1}{2}|u-x|_{2}^{2} 以及 constr (u)=|u|_{2}=1 时,上式与L2归一化等价。
本文假设二进制描述子的归一化等价于具有恒定数量的1。作者从多类别分类问题中获得灵感,将二进制描述子归一化视为在n 维超立方体中的描述子在k 维多面体上的投影。这里我翻译成人话就是:一个特征点对应的n 维描述子中1的个数为k (或者说和为k )。
这样就可以定义:
作者重新定义了目标函数为如下形式:
其中H(u) 是二进制交叉熵函数,上式可以变为拉格朗日对偶问题进行求解[1][2],具体过程参见原文。
实验
本文基于TensorFlow实现,使用Larq[3]库用于二进制量化,训练集使用了COCO 2017(同SuperPoint[4])。
表1. 网络层划分和遍历策略的结果。最终的模型用粗体字表示,且性能表现与基线相当,但运行速度快了5倍。绿色箭头强调了下一阶段使用的配置
注:上述比较中CPU使用的是Apple的M1 ARM芯片;作者对原始的KP2D算法进行了细微调整作为baseline,新基线适配基于块的搜索算法,将Leaky-ReLU替换成hard-swish(效果相当,但是更快)。
表2. 不同归一化层与Sigmoid结合时的效果比较,二进制描述子的归一化层效果提升明显
表3. 将本文提出的ZippyPoint与全精度或二进制描述符相比。ZippyPoint的性能与其他全精度方法相当,而运行速度比其余学习方法近5倍。与人工设计的二进制方法相比,ZippyPoint的表现优势相当突出
表4. AachenV1.1 Day-Night 定位精度与特征匹配速度的比较,ZippyPoint始终优于其他所有的二进制方法
图3. 匹配速度比较:当提取点数相同时,ZippyPoint比SuperPoint快了近14倍
结论
本文基于KP2D设计了一整套加速提取与匹配手段,为适配二进制描述子,作者设计了基于二进制的L2归一化等;为降低网络量化搜索空间,作者引入了基于macro-Blocks的混合精度量化算法。最终得到的ZippyPoint可在图像匹配以及视觉定位任务中取得远超人工设计的二进制描述子的性能,并与SuperPoint接近(白天),但是速度快了近14倍。
笔者注意到,本文也存在一些遗留问题,如本文针对KP2D设计的一套量化优化方案是否容易迁移到其它特征点提取网络?网络以macro-blocks划分时引入了较多技巧,每个macro-block的选择是否足够?相对于人工设计的混合量化网络,是否有一种通用的混合量化方式可以更好地得到一个优化后的网络...
参考
[1]. B. Amos, V. Koltun, and J. Z. Kolter, “The limited multi-label projection layer,” arXiv, 2019.
[2]. B. Amos and J. Z. Kolter, “Optnet: Differentiable optimization as a layer in neural networks,” in ICML, 2017.
[3]. L. Geiger et al., “Larq: An open-source library for training binarized neural networks,” Journal of Open Source Software, vol. 5, no. 45, p. 1746, Jan. 2020.
[4]. D. DeTone, T. Malisiewicz, and A. Rabinovich, “Superpoint: Self-supervised interest point detection and description,” in CVPRW, 2018.
[5]. J. Tang, H. Kim, V. Guizilini, S. Pillai, and R. Ambrus, “Neural outlier rejection for self-supervised keypoint learning,” in ICLR, 2020