Abstract

对局部图像特征做高效率匹配是许多计算机应用的基础任务。但是对于算力有限的设备(如手机或无人机)来说,顶尖的匹配算法会大打折扣。本文介绍了 BEBLID,一个高效的二元图像描述子。它改进了之前的实数描述子—BELID,匹配更加高效、准确。作者使用了 AdaBoost 和改进后的 weak-learner 训练方式,输出更好的局部描述信息。此外,强迫所有的 weak learners 拥有与 strong learner 组合相同的权重,对描述子做二元化,在未标注数据集上训练,解决匹配和提取任务中不对称的问题。在本文实验中,BEBLID 取得了与 SIFT 相近的准确率,效率要高于 ORB,是目前业内最快的算法。

1. Introduction

当出现较强的外观变化时(比如光照变化或几何变换),可用局部图像表征来做匹配。它们是计算机视觉任务中的一个基础组成,包括3D重建、SLAM、图像检索、跟踪、识别或姿态估计。局部特征是目前最流行的图像表征方法,因为局部特征是有差异的,可在不同视角下保持不变性,对局部遮挡鲁棒性强、高效率,排除了信息少的图像区域。

为了输出一个局部图像表征,我们必须检测出一组显著的图像结构,给出每个的描述信息。不少高效的检测器能用于各种低层级结构的检测,如角点、区域、线条,可用实数或二进制描述子来表示,二进制是最快的提取与匹配方法。本文作者解决了高效二进制特征描述任务。

尽管 SIFT 描述子已经提出了近20年了,它仍被认为是一个黄金标准技术。但是从最近提出的 HPatches 基准,可以看到仍然有很大的改进空间。基于深度模型的描述器在各任务上都提升了 mAP,但需要巨大的计算资源。这就使其在硬件和电量有限的设备上使用很困难,比如手机、无人机、机器人等。人们对此进行了大量研究,提出了许多局部特征检测器和描述器,使它们可以在资源有限的设备上运行,达到实时性,但准确率要明显低于 SIFT。

最近作者提出了一个高效率的实数描述器 — BELID。该特征使用完整的图像来高效计算两个方形图像区域的平均灰度值差异。在 BELID 中,作者使用 BoostedSSC 算法来选择一组特征,然后结合起来产生一个很强的描述信息。BELID 的执行时间接近目前最快的方法 ORB,准确率接近于 SIFT。在图块验证方面,它的准确性高于 SIFT;而在 HPatches 基准的图像匹配和图块检索任务上,要差于 SIFT。这里作者使用了 AdaBoost 来改进 BELID 的特征选取过程,对描述内容做二值化。

本文中,作者介绍了 BEBLID(Boosted Efficient Binary Local Image Descriptor),一个非常高效率的二值局部图像描述器。作者使用了 AdaBoost 和不均衡的数据集来训练该描述器,解决其严重的不对称图像匹配问题。为了二值化该描述器,我们最小化一个新的相似度损失,所有的 weak learners 共享一般权重。在实验中,BEBLID 在准确率和速度上都领先于 ORB 和 LATCH,这俩是目前非深度学习领域中顶尖的二值描述器。

2. Related Works

SIFT 是目前最知名的的特征检测和描述算法。因为它在许多视觉任务上都表现不错,应用很广。但是在某些场景中,它需要使用 GPU 来实现实时性。

人们后来提出的其它的描述器来改进 SIFT,如 SURF、BRIEF、BRISK、ORB、FREAK、BOLD。二值方法能输出一个二值化的描述子,在内存占用和匹配速度上都非常高效率。最快的二值化方法(BRIEF、BRISK、ORB、FREAK、BOLD)根据像素对的比较来使用特征。它们速度快的关键就是,比较次数是有限的。在比较 512 对随机的像素值之前,BRIEF 使用固定(9×9)(9\times 9)(9×9)的平滑卷积核。BRISK 使用了一个圆环模式,通过高斯方法对像素做平滑,像素点距离中心点越远,方差就越大。FREAK 也有一个圆环模式,与 BRISK 相似,通过重叠高斯来选择无关联的像素对。ORB 描述器是 BRIEF 的扩展,它考虑了局部特征的不同朝向信息。通过一个固定的子窗口大小,对整幅图像做平滑。它使用了一个贪心算法,将选中的像素对设为不相关。BOLD 使用了与 ORB 相似的对间比较,计算方式类似 ORB,选择一组能降低图块内距离的比较结果。该方法的问题是,它们为了速度牺牲了准确性,表现远差于 SIFT。

基于监督学习算法的描述器能进一步提升性能。DAISY 学习池化区域,以及如何进行降维。Simonyan 等人利用凸优化来预测超参数,而BinBoost和BELID使用Boosting。LATCH 描述器比较了三个选中区域的灰度值,在图块验证问题上是不相关、可判别的。

深度学习使描述器端到端的监督学习成为可能。基于CNN的方法会用裁剪图块中的像素对或三元组来训练。一些方法用了 Siamese 网络、L2 损失和负样本难例挖掘。另一些方法则关于平均精度来优化损失,或优化一个三元组损失,在训练过程中聚焦到负样本上。L2Net 是最流行的 CNN 描述器结构,也在 Hardnet 和 DOAP 中有用。TFeat 以一种高效的方式使用三元组,出于速度考虑,只训练了一个很浅的网络。这些方法在 HPatches 基准上的准确度表现都显著领先于SIFT。但是,它们的计算成本太高了。TFeat 是深度学习描述器中最快的一个方法,它使用了一块 GPU,却要比 CPU 上跑的 ORB 慢了4倍。L2Net 更大,在 GPU 上的运行速度要比 CPU 上的 ORB 慢15倍。

本文提出了 BEBLID,一个使用了 Boosting 方法的二值描述器,选择局部图像区域中最具判别力的像素(见图1)。类似于最快的二值化方法,该特征也是基于灰度值的差异。但在BELID中,作者计算的是一个格子内的平均灰度值差异。格子的大小是一个尺度参数,提升判别力。BEBLID 和 BinBoost 相似,使用 Boosting 机制来找寻最佳特征。但是,BinBoost 输出的描述信息中,每一个bit都是梯度特征的组合,这要比对间比较的计算更多。在实验中,从速度和精度两个方面,作者证明了像素值对比较要比 BinBoost 量化梯度特征更优。


图1. 在 Liberty Patch 数据集上训练的,BELID 和 BEBLID 像素点采样对(左)和空间权重热力图(右)的可视化。这两种方法学到的点对分布都不错,中心区域要更加重要一些。

3. Boosted Efficient Binary Local Image Descriptor

本章节,作者提出了二值图像描述器,BEBLID。至此,作者首先介绍一个基于AdaBoost的实数描述器。在 weak learner (WL)选取策略中使用 AdaBoost 使我们可以在不均衡数据上训练。当所有的 WL共享权重时,可进一步简化为一个二值描述器。这两类描述器的效率高,关键在于它们使用了一个高效的 WL,基于阈值的对间比较。

3.1 Real valued Boosted Efficient Local Image Descriptor

{(xi,yi,li)}i=1N\{(\mathbf{x}_i, \mathbf{y}_i, l_i)\}_{i=1}^N{(xi​,yi​,li​)}i=1N​是训练集,由图块对组成 xi,yi∈X\mathbf{x}_i, \mathbf{y}_i \in \mathcal{X}xi​,yi​∈X,标签是li∈{−1,1}l_i \in \{-1, 1\}li​∈{−1,1}。其中li=1l_i = 1li​=1表示这两个图块都属于同一显著图像结构,li=−1l_i=-1li​=−1表示它们是不同的。我们使用 AdaBoost 来最小化损失:

LBELID=∑i=1Nexp⁡(−γli∑k=1Kαkhk(xi)hk(yi)⏟gs(xi,yi))(1)\mathcal{L}_{BELID} = \sum_{i=1}^N \exp \left( -\gamma l_i \underbrace{\sum_{k=1}^K \alpha_k h_k (\mathcal{x}_i) h_k (\mathcal{y}_i)}_{g_s(\mathcal{x}_i, \mathcal{y}_i)} \right) \tag{1}LBELID​=i=1∑N​exp⎝⎜⎜⎜⎜⎛​−γli​gs​(xi​,yi​)k=1∑K​αk​hk​(xi​)hk​(yi​)​​⎠⎟⎟⎟⎟⎞​(1)

γ\gammaγ是收缩率或学习率参数,hk(z)≡hk(z;f,T)h_k(\mathbf{z}) \equiv h_k(\mathbf{z};f,T)hk​(z)≡hk​(z;f,T)对应ensemble gsg_sgs​中,第k个与权重αk\alpha_kαk​结合的 WL。WL 需要一个特征提取函数:f:X→Rf:\mathcal{X}\rightarrow \mathbb{R}f:X→R 和一个阈值 TTT。给定fff和TTT,通过阈值为TTT的函数f(x)f(\mathbf{x})f(x) 来定义 WL:

hk(x;f,T)={+1iff(x)≤T−1iff(x)>T(2)h_k(\mathbf{x};f,T)=\left\{ \begin{aligned} +1 & \quad \text{if} & f(\mathbf{x})\leq T \\ -1 & \quad \text{if} & f(\mathbf{x})> T \end{aligned} \right. \tag{2} hk​(x;f,T)={+1−1​ifif​f(x)≤Tf(x)>T​(2)

等式1的损失可以看作为一个由gsg_sgs​给定的相似度学习函数,h(x)\mathbf{h(x)}h(x)是对图像块x\mathbf{x}x的 KKK 个 WL 响应的向量。该图块的描述子为:

D(x)=A12h(x)=[α1⋅h1(x),...,αK⋅hK(x)]T(3)\mathbf{D(x)=A^{\frac{1}{2}} h(x)} = [\sqrt{\alpha_1}\cdot h_1(\mathbf{x}), ..., \sqrt{\alpha_K} \cdot h_K(\mathbf{x})]^T \tag{3}D(x)=A21​h(x)=[α1​​⋅h1​(x),...,αK​​⋅hK​(x)]T(3)

其中A=diag(α1,...,αk)\mathbf{A}=\text{diag}(\alpha_1, ..., \alpha_k)A=diag(α1​,...,αk​),αi\alpha_iαi​是 AdaBoost 对于第i个 WL hi(x)h_i(\mathbf{x})hi​(x)的权重。我们将该描述子表示为 BELID-U-ADA,这与BELID不同,BELID 学习一个完整的矩阵A\mathbf{A}A,对 WLs 的关系建模。

3.2 Thresholded Average Box weak learner

BEBLID 效率的关键在于选择一个f(x)f(\mathbf{x})f(x),其判别力和计算速度都不错。特征提取函数 f(x)f(\mathbf{x})f(x)的定义如下:

f(x;p1,p2,s)=1s2(∑q∈R(p1,s)I(q)−∑r∈R(p2,s))(4)f(\mathbf{x;p_1,p_2},s) = \frac{1}{s^2}\left( \sum_{\mathbf{q}\in R(\mathbf{p_1},s)} I(\mathbf{q}) - \sum_{\mathbf{r}\in R(\mathbf{p_2},s)} \right) \tag{4}f(x;p1​,p2​,s)=s21​⎝⎛​q∈R(p1​,s)∑​I(q)−r∈R(p2​,s)∑​⎠⎞​(4)

其中I(t)I(t)I(t)是像素点t的灰度值,R(p,s)R(\mathbf{p},s)R(p,s)是中心位于p\mathbf{p}p的方形边框,大小是sss。因此,fff计算R(p1,s)R(\mathbf{p_1},s)R(p1​,s)和R(p2,s)R(\mathbf{p_2},s)R(p2​,s)像素点的平均灰度值的差异。图2的红色和蓝色框分别表示R(p1,s)R(\mathbf{p_1},s)R(p1​,s)和R(p2,s)R(\mathbf{p_2},s)R(p2​,s)。


图2. BEBLID 描述器提取流程。为了描述图像块,BEBLID 高效地计算红框和蓝框中的像素平均灰度值。对于每对红-蓝框,它减去平均值。然后,对f(x)f(x)f(x)应用阈值,得到h(x)h(x)h(x)和二值描述符D(x)=h(x)≥0.D(x)=h(x)\geq 0.D(x)=h(x)≥0.

每次 AdaBoost 迭代时,作者通过下面的评价手段找到最佳的 WL:1) 像素对(p1,p2)(p_1,p_2)(p1​,p2​)的一个固定数 NpN_pNp​,2) 所有大小是sss的方形区域,3) 所有的阈值 TTT。受 BoostedSSC 启发,作者针对给定的 WL 设计了一个高效算法来选择最佳的离散阈值。该算法将每对图块f(x;p1,p2,s)f(\mathbf{x;p_1,p_2},s)f(x;p1​,p2​,s)的响应作为输入,找到能最小化加权分类损失的阈值。算法的复杂度是O(Plog⁡P)(P=2N)O(P\log P)(P=2N)O(PlogP)(P=2N),使我们可以最快的速度搜索所有可能的阈值。

为了加速fff的计算,我们使用了SSS,输入图像的全部。当SSS有了,方形边框的灰度和就有了,只需4次内存读取和3次算数计算。为了让该描述子与欧式变换无关,作者用局部结构来对结果做缩放。

3.3 Binary descriptor learning

为了得到一个二值描述,作者优化下面的损失函数:

LBEBLID=∑i=1Nexp⁡(−γli∑k=1Khk(x)hk(y))(5)\mathcal{L}_{BEBLID} = \sum_{i=1}^N \exp \left( -\gamma l_i \sum_{k=1}^K h_k(\mathbf{x})h_k(\mathbf{y}) \right) \tag{5}LBEBLID​=i=1∑N​exp(−γli​k=1∑K​hk​(x)hk​(y))(5)

其中γ\gammaγ是 WL 的权重。在实际操作中,它是一个收缩参数,控制训练的速度。如果算法无法找到一个比盲猜更好的 WL,我们就会停止训练,γ\gammaγ决定了选中的 WL 的个数。

最终,为了让输出为{0,1}\{0,1\}{0,1},作者将-1转化为了0, +1+1+1转化为了1(如图2)。新的二值描述器叫做 BEBLID。

这就是 Boosting 机制,所有 WL 对最终决策提供相同的贡献。该机制背后的想法如下。对于 AdaBoost 的最小化过程,每个 WL 的贡献程度都用 αk\alpha_kαk​ 加权。在解决二值图块分类的问题时,这个常数依赖于第kkk个 WL。但是,我们对于描述器解决其它的图像问题也很感兴趣。对于其它一些任务来说,如图像匹配和图像检索,如果一个描述器中所有的 WL 都具备相同的权重,表现会更好。在实验中,作者证明这个想法是对的。

3.4 BELID, BELID-U and BELID-U-ADA

在以前的工作中,通过最小化等式1,作者使用了 BoostedSSC 来计算 BELID-U 描述器。如3.1节所说,本文作者通过 AdaBoost 来优化它,得到 BELID-U-ADA。

通过建模 WL 之间的关系,预测矩阵A\mathbf{A}A,提升其相似度。FP-Boost 预测一个对称的A\mathbf{A}A,利用随机梯度下降法来最小化:

LFP=∑i=1Nexp⁡(−lih(x)TAh(y))(6)\mathcal{L}_{FP} = \sum_{i=1}^N \exp (-l_i \mathbf{h(x)}^T \mathbf{Ah(y)}) \tag{6}LFP​=i=1∑N​exp(−li​h(x)TAh(y))(6)

BELID 将一张图像块x\mathbf{x}x表示为D(x)=BTh(x)\mathbf{D(x)=B}^T\mathbf{h(x)}D(x)=BTh(x),其中B=[b1,...,bD],b∈RK\mathbf{B=[b}_1,...,\mathbf{b}_D],\mathbf{b}\in \mathbb{R}^KB=[b1​,...,bD​],b∈RK是矩阵A\mathbf{A}A中最大的DDD个特征值对应的特征向量,它是用FP-Boost预测的。

BEBLID Boosted Efficient Binary Local Image Descriptor 论文学习相关推荐

  1. 论文学习笔记(1):Efficient L0 resampling of point sets

    论文学习笔记(1):Efficient L0 resampling of point sets 本文出自2019年"Computer Aided Geometric Design" ...

  2. 「ArXiv2020」【Efficient Transformers: A Survey】论文笔记(更新中)

    「ArXiv2020」[Efficient Transformers: A Survey]论文笔记 Abstract 1. Introduction 2. Background on Transfor ...

  3. 【论文学习】:ICCV 2017-Detect-and-Track: Efficient Pose Estimation in Videos

    项目配置链接:https://blog.csdn.net/m0_37644085/article/details/84338463 ps:不仔细学习RCNN系列→FCN→Mask RCNN是不太可能读 ...

  4. Exploring the Connection Between Binary andSpiking Neural Networks论文解读

    Exploring the Connection Between Binary andSpiking Neural Networks论文解读 前言 总说 提出B-SNN(论文中为Ⅲ) 实验和结果(论文 ...

  5. 论文学习报告_201106

    论文学习报告_201106 Introduction 框架 论文整理 i. Computation Offloading Considering Fronthaul and Backhaul in S ...

  6. 【论文学习笔记】《An Overview of Voice Conversion and Its Challenges》

    <An Overview of Voice Conversion and Its Challenges: From Statistical Modeling to Deep Learning&g ...

  7. 【论文学习】ASVspoof 2015 the First Automatic Speaker Verification Spoofing and Countermeasures Challenge

    <ASVspoof 2015: the First Automatic Speaker Verification Spoofing and Countermeasures Challenge&g ...

  8. High Performance Visual Tracking with Siamese Region Proposal Network 论文学习

    文章目录 论文阅读总结 Translation Abstract 1 Introduction 2 Related Works 2.1 Trackers based on Siamese networ ...

  9. ## 论文学习—用一个可接受的的剪枝策略来加速动态时间规整聚类的算法

    论文学习-用一个可接受的的剪枝策略来加速动态时间规整聚类的算法 "Accelerating Dynamic Time Warping Clustering with a Novel Admi ...

最新文章

  1. Bert代码详解(二)重点
  2. 关于字符串的分割问题
  3. R语言与数据分析(1) 数据分析流程、数据挖掘、数据可视化
  4. MySQL测试环境遇到 mmap(xxx bytes) failed; errno 12解决方法
  5. 地铁里运用计算机视觉的场景,人工智能技术在地铁运营场景应用研究报告(26页)...
  6. Spring的IOC底层实现
  7. 「深圳云栖大会」大数据时代以及人工智能推动下的阿里云异构计算
  8. VMWare的The network bridge on device VMnet0 is not running故障解决
  9. C语言,利用函数调用统计输出素数并统计素数和
  10. [转载] python中@property装饰器
  11. 利用fidder发送request
  12. 完美解决 fatal: unable to access ‘https://github.com/.../.git‘: Could not resolve host: github.com
  13. DedeCms网站防挂马注意点
  14. 各个浏览器url带参限制
  15. Windows下Perl环境安装和使用
  16. python+tkinter+threading制作多线程简易音乐播放器(自动播放,上一曲,下一曲,播放,暂停,实时显示歌曲名并能自动切换歌曲的功能)
  17. 机器学习、深度学习、数据挖掘各种资源整理
  18. 机器学习-周志华-课后习题答案-决策树
  19. python学习(二十一)
  20. 利用Python画随机水墨图

热门文章

  1. arcgis 点查询
  2. 华为OD机试 - 能力组队(C 语言解题)【独家】
  3. 联发科4G全网通MT6735通讯模块方案,MT6735核心板资料
  4. caioj 1069 动态规划入门(二维一边推2:顺序对齐)(最长公共子序列拓展总结)
  5. php invoker,SECURITY INVOKER存储过程权限提升漏洞_MySQL
  6. 回归模型拟合效果的判断(二)
  7. java使用jna修改桌面_java – 使用JNA链接到自定义dll
  8. 科技巨头的语音生意经
  9. java.sql.SQLException: Io 异常: Invalid Packet Lenght
  10. 阿里云 数据盘挂载及卸载