作者丨paopaoslam

标题: Line as a Visual Sentence: Context-aware Line Descriptor for Visual Localization 作者: Sungho Yoon and Ayoung Kim 

机构: KAIST 

链接: https://arxiv.org/abs/2109.04753 

视频: https://youtu.be/Ej4onCkA9pc 

代码: https://github.com/yosungho/LineTR 

编译: zhuhu 

审核: 靳军

摘要

与特征点用作图像匹配相比较, 线特征在解决机器人学和计算机视觉中的视觉几何问题提供了更多的约束. 虽然最近基于卷及神经网络(CNN)的描述符在视角变化或者动态环境中效果很好.但是我们认为CNN结构将可变长的线特征抽象为固定维描述符,这存在天生缺陷. 在本文中,我们有效的提出了Line-Transformers,用来处理可变长的线特征. 受到自然语言处理(NLP)的启发,在神经网络中可以很好的理解和抽象句子,我们将线段视为包含点(词)的句子.通过动态关注直线上可描述的点,我们的描述符在可变长度的直线上表现出色.我们还提出了将实现的几何属性共享给领域的直线签名网络.作为组描述符,网络通过理解线条的相对几何来增强线条描述符.最后,我们提出了一种点-线定位中的线描述符和匹配算法(PL-Loc).同时证明了使用我们的线特征可以改善特征点的视觉定位.我们验证了所提出的单应估计和视觉定位的方法.

主要工作与贡献

  1. 我们提出了一种新颖的线分割描述符,使用transformer的框架将线分割表示为句子,点表示为词.利用NLP作为线描述符,我们能够处理可变长度的线特征.
  2. 所提出的线描述符通过关注线段中有意义的点来理解线分割,有效地将各种长度的线抽象为固定大小的描述符.
  3. 我们提出的线签名网络能够在领域内共享线特征的属性(比如:位置,长度,角度和描述子).作为一组线描述符来工作,这些线描述符能够学习到他们领域的几何属性.

算法流程

所提出的Line-Transformers旨在构建位于线段上的给定点的线描述符.整体框架如下

线特征作为视觉描述:用于视觉定位的上下文感知线特征描述符_邻接矩阵

Line Transformers

1.Line Tokenizer(线标记): 在NLP中,单词标记化(word tokenization)是用于将句子分割成称为标记(token)的较小单词的过程。这些tokens是作为模型输入的最小单位.特殊的标记也可以用来实现不同的任务. 比如说分类标记[CLS]是将聚合序列表示为分类任务, 离析器(separator)[SEP]是用来找出两个句子的不同.通过将含义相似的单词分配到相似的向量空间,这些标记被转换成向量表示。使用向量表示标记的方法叫做词语嵌入,并且NLP模型利用他们去有效理解自然语言.在本文中,我们将点-线分割的关系当作是自然语言中的词和句子的关系. 如图3所示,线标记旨在生成点标记和他们对应的词语嵌入,以用来描述线分割.当从图片中检测出线分割后,均匀地在线分割上选择多个点p.点p的位置包含了图像的坐标和特征点的置信度..然后根据可区分度的级别确定点间间隔(v). 当点间间隔小,模型能够得到更多信息来描述线,但是也会需要更大的算力和内存.当线的长度为l,则点的数目是.与[CLS]标记在BERT中的那样,我们提出了特殊的线标记[LINE],用来聚集上下文中点标记的信息.线标记是一系列点标记的前置.

线特征作为视觉描述:用于视觉定位的上下文感知线特征描述符_邻接矩阵_02

我们将每个点标记使用点嵌入的向量表示. 其中D是描述符的维数. 这是通过将每个点标记与每个像素处的描述符向量编码的密集描述符图中匹配的向量相关联来实现的.嵌入的特殊标记[LINE],表示线描述符的初始状态,并且其权值是在训练过程中被学习的. 最后,利用多层感知器对每个点的位置进行位置嵌入,得到位置嵌入.

2.Transformer: 得到了标记的嵌入,我们使用tranformers对线描述符进行了建模.Transformer编码器由两个子层组成:多头注意力机制(MSA)层和MLP层.而每个子层都具有剩余连接和层归一化(LN). 我们将transformer堆叠L次,如公式(1)所示.标记嵌入用作编码器输入.的第一个位置是线嵌入,用上标0表示,然后在最后一层处,线标记包含了线的上下文.

线特征作为视觉描述:用于视觉定位的上下文感知线特征描述符_3d_03

线签名网络(Line Signature Networks)

受到图神经网络中线签名和消息传递机制的启发,所提出的深度线签名网络旨在利用图关注网络GAT将线签名消息与每条线段共享.线签名一开始提出是作为一组线描述符存在的.它将相邻线段聚类为一组,并通过一系列角度和长度比确定相对位置,由于线条特征需要定义相邻线段的聚类范围和预定义的线条属性.因此我们提出了一种图关注网络,该网络可以隐式分配相邻线段,并传递包括位置在内的描述信息.

线特征作为视觉描述:用于视觉定位的上下文感知线特征描述符_3d_04

我们首先将中点(x,y), 角度,和长度等线特征属性提供给MLP来嵌入属性.然后,我们将其添加到描述符中,并且通过(2)中的消息传递网络来共享每个线分割的消息.操作符表示连结, m表示在一个图像中的线描述符的数量.同时将消息传递层堆叠M次,最后,我们在中对线描述符进行归一化,之后将他们输入到另一个MLP中.

Sublines to Keylines

对于transformers来说,输入的标记有最大尺寸()的限制.超过transformers的限制文本长度,那些较长的序列会在NLP中被截断. 与这种被截断的机制不同的是,我们利用关键线和子线的概念来处理长线段. 将原始的线分割成为keyline,当keyline的长度大于最大长度(), 我们将其分开为多个子线(sublines).在此基础上,通过键线与子线之间的关系,建立邻接矩阵。邻接矩阵中的值是1除以子行的数量.如图4(b)所示. 然后,子线的距离矩阵可以转换为keylines()的距离矩阵:

线特征作为视觉描述:用于视觉定位的上下文感知线特征描述符_邻接矩阵_05

其中两个图像的邻接矩阵是。子线的距离矩阵包括来自两幅图像的描述符之间的距离,该距离可以由匹配器(如最近邻)来计算.

线特征作为视觉描述:用于视觉定位的上下文感知线特征描述符_3d_06

和几何平均类似,Sublines to Keylines 通过邻接矩阵与距离矩阵的矩阵相乘,求出多条子线相对于一条keyline的平均距离.比如,在image1中的keylines和image2中的子线的距离可以用来表示.

损失函数(Loss Function)

我们使用一个具有半硬负抽样策略的三重损失函数. 三重损失函数的基本思想是使锚(Anchor)描述符和其匹配(positive)描述符之间的距离更近,并且同时利用不匹配(negative)描述符来进一步扩大距离.在线分割匹配阶段,一个图像中的一条线能够被另一张图片的超过两条线匹配到,这也意味着单一的锚(anchor)线特征能够有多个正匹配的线.在我们的算法中,我们选择重叠最多的线作为positive的点,整体的损失函数可以由如下表示:

线特征作为视觉描述:用于视觉定位的上下文感知线特征描述符_3d_07

其中将半硬负样本选择为远离正的硬负样本.我们观察到,半负抽样有助于稳定地收敛损失值.边距值提供了增加负距离的能力,我们将其设置为1.

实现细节

文中使用Line Segment Detector(LSD)实现对线特征的检测,因为它对各种环境都具有很强的泛化能力.我们选择SuperPoint作为我们前端的描述符地图,因为其对于尺寸为的图片的原始描述符地图尺寸为,我们设置8作为线中的点间隔.我们将子线中的点标记数目限制在大于2和小于21之间.一个线描述符,键值,查询,和在MSA(Multiple Self-Attentation)中的值与SuperPoint中有一样的维数. MSA有四个头值,在Line transformers和线签名网络中有L=12并且M=7层.我们的网络有14M个参数,在NVIDIA GTX 2080Ti GPU上平均速度可达到20ms,其中一个图片中有256个行描述符.它是使用ADAM优化器在Pytorch中实现的,学习率为0.001.

实验结果

我们从单应估计和视觉定位性能两个方面对我们的线描述子进行了评估。对于两个测试场景,我们将建议的方法与SuperPoint、手工创建的线描述符LBD、基于学习的线描述符LLD、WLD和SOLD2进行了比较。我们通过自己的行匹配器为LBD、LLD和WLD以及SOLD2使用最近邻(NN)匹配器。我们将SuperPoint作为基于点的匹配的参考。我们在每个数据集使用了最多512个点和1024个点。对于直线,我们提取了256条较长顺序的直线段。线特征作为视觉描述:用于视觉定位的上下文感知线特征描述符_3d_08

线特征作为视觉描述:用于视觉定位的上下文感知线特征描述符_邻接矩阵_09线特征作为视觉描述:用于视觉定位的上下文感知线特征描述符_邻接矩阵_10线特征作为视觉描述:用于视觉定位的上下文感知线特征描述符_3d_11线特征作为视觉描述:用于视觉定位的上下文感知线特征描述符_3d_12线特征作为视觉描述:用于视觉定位的上下文感知线特征描述符_邻接矩阵_13线特征作为视觉描述:用于视觉定位的上下文感知线特征描述符_描述符_14

结论

受处理不同长度句子和段落的NLP任务的启发,提出了一种利用注意机制有效地处理可变行长的新的行描述符。我们同时提出了一种PL-Loc的流程来同时利用关键点和关键线(keylines)用于视觉定位.我们的实验表明我们的线描述符在单应估计和视觉定位数据集中实现了SOTA的效果.

本文仅做学术分享,如有侵权,请联系删文。


线特征作为视觉描述:用于视觉定位的上下文感知线特征描述符_3d_15