题目:End-to-End Wireframe Parsing
1. 文章背景:
2018年的CVPR会议上,来自上海科技大学信息学院的团队提出了《Learning to Parse Wireframes in Images of Man-Made Environments》论文来进行现实场景中图片框线结构的检测分析研究,与此同时,他们贡献出了一个带标注的开源的数据集wireframe。本文正是基于该数据集进行的框线分析问题研究。这篇论文旨在为业界的框线分析任务提供一个baseline和一套合理的评估指标。该文章被ICCV2019录入。
2. 作者相关:
文章作者来自加州大学伯克利分校。
3. 原文链接
-
论文:https://arxiv.org/abs/1905.03246
-
源码:https://github.com/zhou13/lcnn
4. 解决问题:
现有框线分析方法的问题:
-
结构复杂,pipeline中存在多个阶段相互独立,无法进行端到端训练;
-
对于框线结构复杂的图片检测结果差。
5. 改进措施:
提出L-CNN:单一结构的端到端可训练模型
6. 网络架构:
如Fig2所示,整个模型分为4个模块:
-
主干网络(backbone):用于特征提取,将图片作为输入并为后续的模块提供了共享卷积特征图;
-
连接点预测模块(junction proposal module),输出候选连接点;
-
线段采样模块(line sampling module),从连接点预测模块输出的连接点预测出线段;
-
线段校正模块(line verification module),分类出预测的线段。
7. 实验成绩
8. 简评:
模型简洁高效,是当前框线分析领域可利用的比较好的解决方案,就实现效果来说,我在线下使用wireframe训练的模型效果与作者提供的展示基本一致。同时迁移到其他领域的鲁棒性也有一定的保证。但是,该模型对于稍有弯曲的结果检测较差,后续可以通过改进结构进行调整。
译文:
端到端框线分析
摘要
我们提出了一种简单有效的算法来检测图片中的框线。对比先前方法预测中间结果热图,然后用启发式算法提取线段,我们的方法是端到端可训练的并能够直接输出向量化的框线,包含语义信息和几何显著的点和线。为了更好的理解输出结果的质量,我们提出了一个新的针对框线的评估指标,该指标对重叠线数量和不正确的连接线进行了惩罚。我们进行了大量的实验来证明我们的方法比之前的state-of-art模型和线提取算法更加优秀。我们希望我们的简单方法能够成为未来框线分析研究的baseline。
代码链接:https://github.com/zhou13/lcnn
1. Introduction
近来在目标识别研究的进步和大数据集的出现让提取和利用高维几何特征或基于图片的3D全局结构重建都成为了可能。不同于使用局部特征的传统3D重构体系如从动作重构的算法SfM、从视觉重构的算法SLAM,高维几何特征提供了更加精准和鲁棒的场景全局信息。这提起了人们对提取高维结构如线、连接点、位置、平面和空间布局的兴趣。
在所有的高维几何特征中,直线和他们的连接点(也称为框线)是能够被场景3D特征利用的最基础的几何元素。最近,很多像【13】一样的工作通过提供一个开源数据集、一个可学习的框架和一组评估指标来鼓励人们对于框线分析的研究。然而,现有的框线分析体系错综复杂且不能适应复杂场景中复杂连线的情况。本文的目的是提出一种新的、简洁的解决方案来应对以上挑战。
现存的方法把框线分析问题分成两个阶段。首先将输入图片送入卷积网络生成像素级别的连接点和线段热图。然后,使用启发式方法来搜索出热图的位置、向量化线段和线段连接点。这些方法比较直观,并广泛应用于现在的研究中,但是这些方法的向量化方法通常非常复杂并依赖一组启发式算法,有时会导致较差的结果。受到【4,11,8】研究的启发(端到端流程比阶段式的方法更优),我们假设使用端到端训练体系来处理框线分析问题也能提升当前的state-of-art,因此,在这篇文章中我们定位了以下问题:如何为框线的向量化表示学习一个端到端的可训练模型?
最后,我们提出了一个新的网络:L-CNN,一种使用单个统一的神经网络的端到端框线分析模型。网络可以被分为四个部分:
1)backbone:提取图片特征;
2)连接点预测模块;
3)候选线段生成模块;
4)线段校正模块连接。
对于一个RGB输入图片,网络无需利用启发式算法而直接生成向量表示。我们的体系与其他算法完全不同且可以通过反向传播进行端到端的训练,这使得我们可以集中探索state-of-art的网络模型架构来处理该场景问题。
除此之外,现有的框线分析的评估指标都将线段视作一组独立像素的集合,没有将线段连接的正确性考虑在内(4.3节相似描述)。为了评估一个框线结构的正确性,我们提出了一个新的评估指标。新评估指标使用了线段匹配来计算框线向量化后的精度和召回率曲线。我们在wireframe数据集上进行了大量的实验并仔细的研究了消除某个模块的不同系统设计的差异。
2. Related work
Line Detection:线段检测是计算机视觉中被广泛研究的问题。目的是从一张图片中产出向量化的线段表示。传统的方法如【29,31】基于局部边缘特征检测线段。最近【32】结合了深度学习特征和基于【31】提出的线段向量方法。不同于框线表示,传统的线段向量化算法不会提供连接点的信息以及这些连接点与线段的关系。这限制了在场景分析理解中的应用。
Wireframe Parsing:【13】提出了框线分析任务。作者训练两个单独的神经网络来预测一张图片中的连接点和线段热图。然后,使用一个启发式的框线融合算法来将这两个预测结果合并产生最终的向量化输出。尽管这种方法直接切能够产生可解释的结果,但是这种两阶段的过程给端到端训练带来困难。相反,我们的框架基于一个单独的端到端可训练网络,直接生成框线的向量表示结果。
Instance-level Recognition:在这个技术上,我们的方法受到实例分割框架如的Fast R-CNN 【8】 Faster R-CNN 【24】, CornerNet【17】, Extremenet 【34】等的启发。我们的pipeline和LoI pooling都在概念上与RoI pooling相似。两个方法都是先生成一组候选结果然后提取特征进行分类。与【24,8】中候选区域通过滑动窗口的方式生成不同的是,我们的候选区域通过连接高置信度连接点生成。在这个场景中,候选结果生成过程和【17,34】相似,不同的是如何辨别真实线段和假负样本。他们使用了点特征嵌入【17】或几个高置信度点的几何中心【34】,而我们的做法是提取特征然后送入小的神经网络。
3. Methods
3.1 Data Representation
我们对于框线的表示是基于图论中的标注方式。也可以被看作【13】中框线定义的简单版本。W=(V, E)代表一张图片的框线,其中V代表连接点集合的索引,E⊆V×V 是线段的集合,线段用V中的连接点对来表示,对每个i(i∈V),我们使用pi ∈ R2来表示来代表图片空间中的连接点对。
3.2 Overall Network Architecture
Fig2描述了L-CNN的架构,L-CNN包含了四个模块:
1)一个用来进行特征提取的主干网络(3.3节)将一个图片作为输入并为后续的模块提供了共享卷积特征图;
2)连接点预测模块(3.4节),输出候选连接点;
3)线段采样模块(3.5节),从连接点预测模块输出的连接点预测出线段;
4)线段校正模块(3.6节),分类出预测的线段。
L-CNN的输出是连接点的坐标和那些连接点之间的连线矩阵。我们的方法体系完全可以使用随机梯度下降来进行端到端训练。
3.3 Backbone Network
主干网络的作用为后续的模块提供有意义的语义特征。我们选择Stacked Hourglass Networks(SHN)【22】作为我们的主干网络因为它准确高效。输入图片被放缩到正方形。SHN首先通过两个2通道的卷积层来对输入图片进行下采样。然后,使用多个U-Net【25】模块的输出对学习到的特征进行精修。整个网络的损失就是这些模块的损失之和。
3.4 Junction Proposal Module
Junction Prediction:我们使用了一个简单版本的【13】在框线中估计候选连接点的区域。一个W*H的图片首先被划分成Wb*Hb个区域。对于每个区域,网络预测该区域是否存在一个连接点,如果存在,网络继续预测连接点在该区域的相对位置。在数学上,网络输出一个连接点似然概率特征图J和一个偏移特征图O。对每个单元b,有:
其中,b代表单元格b的中心位置,p代表该区域矩阵V的一个顶点的位置。
为了预测J和O,我们设计了一个包含两个1*1卷积层的网络来将特征图转化为J和O。我们将预测J视作一个分类问题并使用平均的二分类交差熵损失作为损失函数。我们使用L2回归来预测偏移量特征图O。随着偏移量O(b)的范围在[-1/2, 1/2) ×[-1/2, 1/2),我们在头网络的输出后面追加一个带-0.5的偏移量的sigmoid激活函数用来归一化输出。O的损失是整个单元格的平均,包含每个输入图片的真实连接点。
Non-Maximum Suppression:在实例级别的识别任务中,NMS算法用来移除多余的预测。我们使用相同的机制来移除正确预测周围的不确定分数图,以此校正预测并得到J'(b):
其中,N(b)代表b附近的8个单元格。这里我们抑制连接点特征图中的非局部极大的像素值。这种NMS算法可以使用一个max-pooling层来实现。连接点前向网络的最终输出是J'中置信度最高的K个连接点位置:。
3.5 Line Sampling Module
给出一个从连接点候选模块得出的包含K个最佳候选连接点的列表,线段采样模块的目的是在训练阶段生成一个线段列表,这样线段校正模块就可以进行线段预测的学习。其中,pj1^和pj2^代表第j个候选线段的端点坐标。在这个任务中,正负样本及其不平衡,我们通过仔细设计采样机制来定位这个问题,下面对该机制进行描述:
Static Line Sampler:对于每张图片,静态线段采样直接从真实标注中提取出Ns+个正样本和Ns-个负样本。我们称之为静态样本因为他们与预测的候选连接点无关。正线段样本全部由真实标签生成,标记为S+,带有真实标注的连接点坐标。负线段样本的总量是O(|V|^2)个,相比正线段样本的O(|E|)个的数量十分巨大。为了缓解这个问题,我们对负线段样本S-进行采样,一组负线段样本的集合可能难以分类,我们使用以下的启发式算法来计算S-:首先我们将所有的真实线段映射到一个64*64的低分辨率二值图上。然后,对于每个可能的由一对儿连接点构成而实际上却不是真实线段的连接,我们定义它的难度分数为该线段的二值图上的平均像素密度。对每张图片,S-被设置为具有最高hard分数的2000个线段。
Dynamic Line Sampler:与静态线段采样器相反的,动态线段采样器使用来自连接点前向模块预测的结果来采样线段。采样器首先将所有的预测连接点匹配到真实连接点上。让mi为与第i个候选连接点的最优匹配的真实连接点。如果pi^和pmi之间的l2距离小于阈值η,我们认为候选连接点pi^完成了匹配。对每个候选线段(pi1^, pi2^) (i1, i2 ∈ {1,2,...,K}, i1 != i2),我们根据如下准则将它放入D+,D-和D*:
如果pi1^和pi2^都被匹配了,且(mi1, mi2) ∈ E,我们添加该条线段到正样本集合D+中;
如果pi1^和pi2^都被匹配了,且(mi1, mi2) ∈ S-,我们添加该线段到hard负向样本集合D-中;
随机样本集合D*包含所有预测出的候选连接点,不管匹配结果是什么。
最后,我们在正样本集合中随机选择ND+条线段,在hard负样本集合中随机选取ND−条线段,在随机选段集合中选取ND*条,将这些合并作为动态线段采样的样本。
一方面,当动态采样器中正确的正样本数量很少时,静态线段采样器有益于训练开始时的冷启动。它也为动态采样器补充了正样本和hard负样本来帮助联合训练过程。在另一个方面,动态线段采样器通过调节线段端点为预测连接点的位置来提升线段检测的性能。
3.6 Line Verificaiton Network
线段修正模块接收到一个候选线段的列表,,同时也接收主干网络中对图片提取到的特征图,并预测是否每个线段是该其场景下的框线。在训练阶段,L由线段采样模块训练得出,在评估阶段,L是每个预测连接点对儿
的集合。
对每个候选线段,我们将两个端点的坐标送入LoI(line of interest)池化层,并返回一个修正长度的特征向量。然后,我们将合并后的特征向量输入到一个由两个全连接层构成的网络并取log值返回。线段的损失函数是sigmoid二元交叉熵损失,loss计算单元是该log值和该线段的真实标签,可以是正样本或负样本。为了保持正负样本之间的损失平衡,修正网络中每张图片的损失是两个互相独立的损失的和,分别是正样本线段和负样本线段的平均。
LoI Pooling:为了检查图片中是否存在线段,我们首先将线段转化为一个特征向量。受到目标检测中RoIPool和RoIALign层的启发【9,8,24,11】,我们提出LoI pooling层来提取线段特征,同时它可以向主干网络反向传播梯度。
每个LoI被定义成它的两个端点的坐标,如。LoI池化层首先使用线形方法计算Np空间中的线段中间点的坐标:
然后,在主干网络的特征图上使用线形方法计算这些Np点的特征值来避免人工量化【4,14,6,11】。结果特征向量就有了一个C×Np的空间扩展,其中C是主干网络输出的特征图的通道维数。在这之后,LoI池化层通过一个一维最大池化层减少特征向量的维数。结果特征向量的形状是C×[Np/s],其中s为最大池化层的滑动步长。该结果向量随后被拍平并成为LoI池化层的输出。
4. Experiments
4.1 Implementation Details
我们使用了SHN【22】作为我们的主干网络。对于一张图片,我们首先将其输入到一个7*7,滑动步长为2的卷积,三个64通道的残差单元,并追加步长为2的最大池化层的网络中。然后将这个中间特征输入到两个SHN模块。在每个模块中,特征图被4个步长为2的残差单元下采样,然后使用最近邻插值上采样。每个残差单元的输入通道和输出通道的维数都是256。J和O的网络头包含3*3的卷积层,以此减少通道数到128,激活函数是Relu,然后接上1*1的卷积层来匹配输出维度。
我们在将特征图送入线段校正模块之前先使用一个1*1的卷积核将特征维度从256减少到128。对于LoIPool层,我们设置Np=32个点,作为一个线段的特征点。结果每个线段输出128*32的特征。在这之后,我们应用一个一维的步长为4的最大池化层来将线段特征的空间维度从32减少到8。然后,线段校正模块将拍平的特征向量送入两个带有Relu的全连接层,其中间层有1024个节点。
所有的实验训都在1080Ti上完成,学习率4e-4,decay设置为1e-4。batch size设置为6来最大化显存利用率。10个epoch进行一次学习率缩减10倍。第16个epoch时我们停止了训练,因为验证loss不再降低了。整个训练时常为8小时,所有的训练图片被放缩为512*512,J、O的单元格为Hb*Wb=128*128。连接点前向传播网络输出的最优连接点个数K=300。对每个线段采样模块,设置NS+=300,Ns-=40,ND+=300,ND-=80,ND*=600。多任务学习的损失权重分别设置为J为8,O为0.25,线段校正模块为1。权重如此调整保证这几个loss的大小在一个数量级上。
4.2 Datasets
所有的实验都是使用wireframe数据集【13】进行的。包含5462个人工构造的室内室外环境图片,我们使用5000个作为训练集,462个作为测试集。wireframe的标注包括连接点V和连接点的连接线段E。
4.3 Evaluation Metric
略
Precision and Recall of Line Heat Maps
Junction mAP
Structural AP
4.4 Ablation Study
在这一节中,我们进行了一些列的消除实验来测试我们提出的端到端线框分析算法。使用本文提出的structural average precision 作为本节的评估指标,实验结果在Tab1中展示。
mi
4.5 Comparision with Other Methods
4.6. Visualization
5. Conclution and Future Work
在本文中,我们提出了一个端到端可训练的神经网络来提取给定图片中的向量化框线。我们相信我们简洁的方法能够成为该领域的可靠baseline。除此之外,我们的方法能够被轻易扩展并创造以端到端学习更加复杂的几何元素如弯曲文本,平面,曲面以及他们的关系。我们也相信这样的几何特征能够提高现有人工场景中获得高维几何特征模型的准确性和健壮性。
References
提交错误、交流学习请联系邮箱:lizhuang009@ke.com 或 lizhuangneu@163.com