本发明属于图像处理技术领域,特别涉及一种基于贝塞尔曲线的任意畸变图像线段检测方法。
背景技术:
线段检测是计算机视觉和机器人领域中最基础的任务之一,它可以帮助到众多的上层视觉任务,例如图像匹配、相机标定、sfm(structurefrommotion)、视觉slam(simultaneouslocalizationandmapping)等等。然而,当前的大多数线段检测方法把线段建模为直线,因此只能检测无失真的直线段,而不能检测因失真而弯曲的线段,特别是鱼眼相机图像和球面相机图像中的失真线段。而现有的失真线段检测方法基本都依赖于相机畸变参数,其中有一类方法是先利用相机畸变参数矫正图像,然后再利用直线段检测方法提取直线段;其他的方法,例如扩展霍夫变换、基于ransac的方法,则是利用相机畸变参数对失真线段建模,这类方法可以直接用于畸变图像。虽然这些方法在某些情况下对失真线段检测有效,但它们的性能都严重依赖于相机畸变参数的精度。此外,很多情况下相机畸变参数是难以获得的。总的来说,任意畸变图像的线段检测问题并未得到有效解决,主要还存在以下三点挑战:(1)针对失真线段,目前还没有一种统一的、不依赖于相机畸变参数的表示方法;(2)基于深度学习的方法在直线段检测中取得了最好的性能表现,但是对于鱼眼相机和球面相机图像,目前并没有公开的线段检测数据可供网络训练;(3)针孔相机、鱼眼相机和球面相机的成像模型有所不同,因此畸变也有所不同。针对任意畸变图像的线段检测方法,目前还未有人实现过。
技术实现要素:
针对任意畸变图像的线段检测任务面临的挑战,本发明提出了基于贝塞尔曲线的线段表示方法,这种表示方法以线段等分点为参数,可以表示任意畸变图像中的线段,包括直线段和失真线段,同时不依赖于相机畸变参数。基于上述线段表示,本发明设计了一个端到端的线段检测网络,同时我们通过合成数据集以及人工标注的方法,构造了2个鱼眼图像数据集和1个球面图像数据集,解决了网络训练缺乏数据集的问题。本发明最终提出了一种针对任意畸变图像的线段检测方法,该方法不依赖于相机畸变参数,其性能表现也远远好于现有的失真线段检测方法。
本发明提供的基于贝塞尔曲线的任意畸变图像线段检测方法包括以下步骤:
步骤1:构建训练数据集;
步骤2:构建线段检测网络;
步骤3:通过包括交叉点预测损失、线段预测损失、分类器损失构建线段检测网络的损失函数,将训练集的数据循环迭代带入线段检测网络,根据构建的线段检测网络的损失函数,利用自适应矩估计优化器进行优化更新网络,得到训练后的线段检测网络;
步骤4:将待检测图像通过双线性插值缩放到网络要求的大小h×w,然后将图像输入到训练后的线段检测网络,得到所有候选线段的置信度分数,通过设定置信度分数阈值,保留置信度分数大于阈值的线段,得到待检测图像中线段检测结果。
作为优选,步骤1所述训练数据集包括:图像集合、标注线段集合、标注交叉点集合;
训练数据集中图像集合记为:
其中。a为数据集中图像的数量,图像的尺寸均为h×w×3;
对于一张图像
训练数据集中标注线段集合记为:
基于贝塞尔曲线的表示方法,具体标注形式为:la,k=(p1,p2,…,pn 1);
训练数据集中交叉点集合记为:
在网络中,对于交叉点的预测,首先将h×w的图像
对于线段的预测,同样将h×w的图像
作为优选,步骤2所述线段检测网络包括:线段特征提取骨干网络、线段提议网络、感兴趣线段头部;
所述线段特征提取骨干网络的输入为图像
所述线段提议网络的输入为特征图fa,输出为候选线段集合
所述感兴趣线段头部的输入为特征图fa和候选线段集合
所述线段特征提取骨干网络采用的是堆叠沙漏网络,包括:卷积层、第一层沙漏模块、第二层沙漏模块;
所述的卷积层、第一层沙漏模块、第二层沙漏模块依次串联级联;
所述线段提议网络包括:交叉点预测模块、线段预测模块、线段交叉点匹配模块、线段采样模块;
所述第二层级联沙漏模块分别与所述交叉点预测模块、线段预测模块连接;
所述交叉点预测模块与所述线段交叉点匹配模块连接;
所述线段预测模块与所述线段交叉点匹配模块连接;
所述线段采样模块在网络训练阶段与所述线段交叉点匹配模块连接,在测试阶段不起作用;
所述交叉点预测模块由第一交叉点解码器、第二交叉点解码器构成;
所述线段预测模块由第一线段解码器、第二线段解码器、第三线段解码器构成;
所述的第一交叉点解码器、第二交叉点解码器、第一线段解码器、第二线段解码器、第三线段解码器均由卷积层构成;
所述感兴趣线段头部包括:贝塞尔对齐模块、全连接层分类器;
所述的贝塞尔对齐模块、全连接层分类器依次串联级联;
所述线段检测网络每个模块的作用如下:
所述线段特征提取骨干网络首先通过卷积层对输入图像
所述线段提议网络的交叉点预测模块利用第一交叉点解码器预测交叉点的置信度图ma,1,其尺寸为hb×wb,表示将输入图像ia划分为hb×wb的网格,每个网格内存在交叉点的置信度(即概率);同时利用第二交叉点解码器预测交叉点的偏移向量图ma,2,其尺寸为hb×wb×2,表示每个网格内如果存在交叉点,交叉点坐标到网格中心坐标的偏移向量。利用交叉点的置信度图ma,1、交叉点的偏移向量图ma,2通过(3)式可以得到预测的交叉点集合
其中k=300,表示将置信度按降序排序后,取置信度最高的前300个交叉点,ik、jk分别为第k个交叉点所在网格的行列下标,[jk 0.5,ik 0.5]表示第k个交叉点所在网格的中心点坐标,ma,2(ik,jk)为第k个交叉点的偏移向量,pa,k为第k个交叉点的坐标;
所述线段提议网络的线段预测模块利用第一线段解码器预测线段中点的置信度图ma,3,其尺寸为hb×wb,利用第二线段解码器预测线段中点的偏移向量图ma,4,其尺寸为hb×wb×2,计算得到预测的线段中点集合
其中k=5000,表示取置信度最高的5000个线段中点;
同时利用第三线段解码器预测线段等分点到中点的偏移向量图ma,5,其尺寸为其尺寸为hb×wb×(n 1)×2,n为贝塞尔曲线的阶数,n 1为等分点的数量,计算得到预测的线段集合
所述线段提议网络的线段交叉点匹配模块用于筛选高质量的候选线段,对于预测的线段集合中的线段
所述线段提议网络的线段采样模块用于在训练阶段采样得到线段的正负样本,来训练所述感兴趣线段头部的全连接层分类器。对于候选线段集合中的一条线段
l=(p1,p2,…,pn 1),l′=(p′1,p′2,…,p′n 1)
所述感兴趣线段头部的贝塞尔对齐模块用于生成固定长度的线段特征向量,在该模块中,对于匹配后的候选线段集合中每条线段即
所述感兴趣线段头部的全连接层分类器根据候选线段集合中候选线段的特征向量对候选线段进行分类,输出每条候选线段为真实线段的置信度分数;
作为优选,步骤3所述线段检测网络的损失函数为:
l=ljunc lline lcls
其中,ljunc为交叉点预测损失,lline为线段预测损失,lcls为分类器损失;
所述交叉点ljunc预测损失包括两个部分,一个是交叉点的置信度图,另一个是交叉点的偏移向量图,置信度图预测采用的是交叉熵损失,偏移向量图预测采用的是smoothl1损失;
所述交叉点预测损失为:
其中,ma,1、ma,2分别为第a张图像预测的置信度图和偏移向量图,
所述线段预测损失:包括预测线段中点的置信度图的损失,预测线段中点的偏移向量图的损失以及预测线段等分点到中点的偏移向量图的损失。其中预测线段中点的置信度图的损失采用的是交叉熵损失,预测线段中点的偏移向量图的损失和预测线段等分点到中点的偏移向量图的损失采用的是smoothl1损失;
其中,
所述分类器损失采用的是交叉熵损失函数,具体定义为:
其中,其中
本发明的原理是:首先利用堆叠沙漏网络作为特征提取骨干网络对输入图像提取多尺度特征,再将特征图输入到线段提议网络,线段提议网络包括交叉点预测模块、线段预测模块和线段-交叉点匹配模块,分别利用交叉点预测模块和线段预测模块提取图像中的交叉点和线段,再利用线段-交叉点匹配模块生成高质量的候选线段,然后通过贝塞尔对齐模块得到每条候选线段的特征向量,最后将特征向量输入到分类器,得到每条候选线段的置信度分数,根据设定的置信度阈值分数,筛选出最终的线段检测结果。
附图说明
图1:为网络架构。
图2:为线段检测流程。
图3:为本发明方法流程。
图4:为不同方法的线段检测结果对比。
具体实施方式
本发明提供了基于贝塞尔曲线的任意畸变图像线段检测方法。为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图对本发明进一步详细说明。
本发明设计的线段检测网络其网络架构如附图1所示,线段检测流程如附图2所示,图3为本发明方法流程图。
下面结合图1至图4,介绍本发明的具体实施方式为:基于贝塞尔曲线的任意畸变图像线段检测方法包括以下步骤:
步骤1:构建训练数据集;
步骤1所述训练数据集包括:图像集合、标注线段集合、标注交叉点集合;
训练数据集中图像集合记为:
其中,a为数据集中图像的数量,图像的尺寸均为h×w×3;
对于一张图像
训练数据集中标注线段集合记为:
基于贝塞尔曲线的表示方法,具体标注形式为:la,k=(p1,p2,…,pn 1);
训练数据集中交叉点集合记为:
在网络中,对于交叉点的预测,首先将h×w的图像
对于线段的预测,同样将h×w的图像
对于针孔相机图像,数据集采用的是公开的wireframedataset数据集,图像数量为a=5462,图像大小为h×w=512×512;
对于鱼眼相机图像,数据集为f-wireframedataset数据集,它是通过对wireframedataset的图像以及标注信息加上随机的鱼眼畸变得到的,图像数量为a=5462,图像大小为h×w=512×512;
对于球面相机图像,数据集为人工标注的sun360数据集,图像数量为a=1068,图像大小为h×w=512×1024;
步骤2:构建线段检测网络;
所述线段检测网络包括:线段特征提取骨干网络、线段提议网络、感兴趣线段头部;
所述线段特征提取骨干网络的输入为图像
所述线段提议网络的输入为特征图fa,输出为候选线段集合
所述感兴趣线段头部的输入为特征图fa和候选线段集合
所述线段特征提取骨干网络采用的是堆叠沙漏网络,包括:卷积层、第一层沙漏模块、第二层沙漏模块;
所述的卷积层、第一层沙漏模块、第二层沙漏模块依次串联级联;
所述线段提议网络包括:交叉点预测模块、线段预测模块、线段交叉点匹配模块、线段采样模块;
所述第二层级联沙漏模块分别与所述交叉点预测模块、线段预测模块连接;
所述交叉点预测模块与所述线段交叉点匹配模块连接;
所述线段预测模块与所述线段交叉点匹配模块连接;
所述线段采样模块在网络训练阶段与所述线段交叉点匹配模块连接,在测试阶段不起作用;
所述交叉点预测模块由第一交叉点解码器、第二交叉点解码器构成;
所述线段预测模块由第一线段解码器、第二线段解码器、第三线段解码器构成;
所述的第一交叉点解码器、第二交叉点解码器、第一线段解码器、第二线段解码器、第三线段解码器均由卷积层构成;
所述感兴趣线段头部包括:贝塞尔对齐模块、全连接层分类器;
所述的贝塞尔对齐模块、全连接层分类器依次串联级联;
所述线段检测网络每个模块的作用如下:
所述线段特征提取骨干网络首先通过卷积层对输入图像
所述线段提议网络的交叉点预测模块利用第一交叉点解码器预测交叉点的置信度图ma,1,其尺寸为hb×wb,表示将输入图像ia划分为hb×wb的网格,每个网格内存在交叉点的置信度(即概率);同时利用第二交叉点解码器预测交叉点的偏移向量图ma,2,其尺寸为hb×wb×2,表示每个网格内如果存在交叉点,交叉点坐标到网格中心坐标的偏移向量。利用交叉点的置信度图ma,1、交叉点的偏移向量图ma,2通过(3)式可以得到预测的交叉点集合
其中k=300,表示将置信度按降序排序后,取置信度最高的前300个交叉点,ik、jk分别为第k个交叉点所在网格的行列下标,[jk 0.5,ik 0.5]表示第k个交叉点所在网格的中心点坐标,ma,2(ik,jk)为第k个交叉点的偏移向量,pa,k为第k个交叉点的坐标;
所述线段提议网络的线段预测模块利用第一线段解码器预测线段中点的置信度图ma,3,其尺寸为hb×wb,利用第二线段解码器预测线段中点的偏移向量图ma,4,其尺寸为hb×wb×2,计算得到预测的线段中点集合
其中k=5000,表示取置信度最高的5000个线段中点;
同时利用第三线段解码器预测线段等分点到中点的偏移向量图ma,5,其尺寸为其尺寸为hb×wb×(n 1)×2,n为贝塞尔曲线的阶数,n 1为等分点的数量,计算得到预测的线段集合
所述线段提议网络的线段交叉点匹配模块用于筛选高质量的候选线段,对于预测的线段集合中的线段
所述线段提议网络的线段采样模块用于在训练阶段采样得到线段的正负样本,来训练所述感兴趣线段头部的全连接层分类器。对于候选线段集合中的一条线段
l=(p1,p2,…,pn 1),l′=(p′1,p′2,…,p′n 1)
所述感兴趣线段头部的贝塞尔对齐模块用于生成固定长度的线段特征向量,在该模块中,对于匹配后的候选线段集合中每条线段即
所述感兴趣线段头部的全连接层分类器根据候选线段集合中候选线段的特征向量对候选线段进行分类,输出每条候选线段为真实线段的置信度分数;
步骤3:通过包括交叉点预测损失、线段预测损失、分类器损失构建线段检测网络的损失函数,将训练集的数据循环迭代带入线段检测网络,根据构建的线段检测网络的损失函数,利用自适应矩估计优化器进行优化更新网络,得到训练后的线段检测网络;
步骤3所述线段检测网络的损失函数为:
l=ljunc lline lcls
其中,ljunc为交叉点预测损失,lline为线段预测损失,lcls为分类器损失;
所述交叉点ljunc预测损失包括两个部分,一个是交叉点的置信度图,另一个是交叉点的偏移向量图,置信度图预测采用的是交叉熵损失,偏移向量图预测采用的是smoothl1损失;
所述交叉点预测损失为:
其中,ma,1、ma,2分别为第a张图像预测的置信度图和偏移向量图,
所述线段预测损失:包括预测线段中点的置信度图的损失,预测线段中点的偏移向量图的损失以及预测线段等分点到中点的偏移向量图的损失。其中预测线段中点的置信度图的损失采用的是交叉熵损失,预测线段中点的偏移向量图的损失和预测线段等分点到中点的偏移向量图的损失采用的是smoothl1损失;
其中,
所述分类器损失采用的是交叉熵损失函数,具体定义为:
其中,其中
步骤4:将待检测图像通过双线性插值缩放到网络要求的大小h×w,然后将图像输入到训练后的线段检测网络,得到所有候选线段的置信度分数,通过设定置信度分数阈值,保留置信度分数大于阈值的线段,得到待检测图像中线段检测结果。
本发明设计的线段检测网络是基于pytorch实现的,可以端到端的训练和测试,给定一张图像作为输入,网络可以直接输出向量化的线段检测结果。
本发明的实验结果如附图4所示,图中(a)~(b)为针孔相机图像,(c)~(d)为鱼眼相机图像,(e)~(g)为球面相机图像,lsd、sht、l-cnn、hawp分别为不同的对比方法,ulsd为本发明提供的方法,groundtruth为线段的真实值,可以看到对于针孔相机图像,本方法与l-cnn、hawp的效果相当,而对于鱼眼相机和球面相机图像,其他方法性能很差,而本方法依然具有很好的效果,说明本方法能够适用于任意畸变的图像。
应当理解的是,本申请书未详细阐述的部分均属于现有技术。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本申请专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本申请权利要求所保护的范围情况下,还可以做出替换或变形,均落入本申请的保护范围之内,本申请的请求保护范围应以所附权利要求为准。
1.一种基于贝塞尔曲线的任意畸变图像线段检测方法,实现方式包括以下步骤:
步骤1:构建训练数据集;
步骤2:构建线段检测网络;
步骤2所述线段检测网络包括:线段特征提取骨干网络、线段提议网络、感兴趣线段头部;
所述线段特征提取骨干网络的输入为图像
所述线段提议网络的输入为特征图fa,输出为候选线段集合
所述感兴趣线段头部的输入为特征图fa和候选线段集合
所述线段特征提取骨干网络采用的是堆叠沙漏网络,包括:卷积层、第一层沙漏模块、第二层沙漏模块;
所述的卷积层、第一层沙漏模块、第二层沙漏模块依次串联级联;
所述线段提议网络包括:交叉点预测模块、线段预测模块、线段交叉点匹配模块、线段采样模块;
所述第二层级联沙漏模块分别与所述交叉点预测模块、线段预测模块连接;
所述交叉点预测模块与所述线段交叉点匹配模块连接;
所述线段预测模块与所述线段交叉点匹配模块连接;
所述线段采样模块在网络训练阶段与所述线段交叉点匹配模块连接,在测试阶段不起作用;
所述交叉点预测模块由第一交叉点解码器、第二交叉点解码器构成;
所述线段预测模块由第一线段解码器、第二线段解码器、第三线段解码器构成;
所述的第一交叉点解码器、第二交叉点解码器、第一线段解码器、第二线段解码器、第三线段解码器均由卷积层构成;
所述感兴趣线段头部包括:贝塞尔对齐模块、全连接层分类器;
所述的贝塞尔对齐模块、全连接层分类器依次串联级联;
所述线段检测网络每个模块的作用如下:
所述线段特征提取骨干网络首先通过卷积层对输入图像
所述线段提议网络的交叉点预测模块利用第一交叉点解码器预测交叉点的置信度图ma,1,其尺寸为hb×wb,表示将输入图像ia划分为hb×wb的网格,每个网格内存在交叉点的置信度(即概率);同时利用第二交叉点解码器预测交叉点的偏移向量图ma,2,其尺寸为hb×wb×2,表示每个网格内如果存在交叉点,交叉点坐标到网格中心坐标的偏移向量;利用交叉点的置信度图ma,1、交叉点的偏移向量图ma,2通过(3)式可以得到预测的交叉点集合
其中k=300,表示将置信度按降序排序后,取置信度最高的前300个交叉点,ik、jk分别为第k个交叉点所在网格的行列下标,[jk 0.5,ik 0.5]表示第k个交叉点所在网格的中心点坐标,ma,2(ik,jk)为第k个交叉点的偏移向量,pa,k为第k个交叉点的坐标;
所述线段提议网络的线段预测模块利用第一线段解码器预测线段中点的置信度图ma,3,其尺寸为hb×wb,利用第二线段解码器预测线段中点的偏移向量图ma,4,其尺寸为hb×wb×2,计算得到预测的线段中点集合
其中k=5000,表示取置信度最高的5000个线段中点;
同时利用第三线段解码器预测线段等分点到中点的偏移向量图ma,5,其尺寸为其尺寸为hb×wb×(n 1)×2,n为贝塞尔曲线的阶数,n 1为等分点的数量,计算得到预测的线段集合
所述线段提议网络的线段交叉点匹配模块用于筛选高质量的候选线段,对于预测的线段集合中的线段
所述线段提议网络的线段采样模块用于在训练阶段采样得到线段的正负样本,来训练所述感兴趣线段头部的全连接层分类器;对于候选线段集合中的一条线段
所述感兴趣线段头部的贝塞尔对齐模块用于生成固定长度的线段特征向量,在该模块中,对于匹配后的候选线段集合中每条线段即
所述感兴趣线段头部的全连接层分类器根据候选线段集合中候选线段的特征向量对候选线段进行分类,输出每条候选线段为真实线段的置信度分数;
步骤3:通过包括交叉点预测损失、线段预测损失、分类器损失构建线段检测网络的损失函数,将训练集的数据循环迭代带入线段检测网络,根据构建的线段检测网络的损失函数,利用自适应矩估计优化器进行优化更新网络,得到训练后的线段检测网络;
步骤4:将待检测图像通过双线性插值缩放到网络要求的大小h×w,然后将图像输入到训练后的线段检测网络,得到所有候选线段的置信度分数,通过设定置信度分数阈值,保留置信度分数大于阈值的线段,得到待检测图像中线段检测结果。
2.根据权利要求1所述的基于贝塞尔曲线的任意畸变图像线段检测方法,其特征在于,
步骤1所述训练数据集包括:图像集合、标注线段集合、标注交叉点集合;
训练数据集中图像集合记为:
其中;a为数据集中图像的数量,图像的尺寸均为h×w×3;
对于一张图像
训练数据集中标注线段集合记为:
基于贝塞尔曲线的表示方法,具体标注形式为:la,k=(p1,p2,…,pn 1);
训练数据集中交叉点集合记为:
在网络中,对于交叉点的预测,首先将h×w的图像
对于线段的预测,同样将h×w的图像
3.根据权利要求1所述的基于贝塞尔曲线的任意畸变图像线段检测方法,其特征在于,
步骤3所述线段检测网络的损失函数为:
l=ljunc lline lcls
其中,ljunc为交叉点预测损失,lline为线段预测损失,lcls为分类器损失;
所述交叉点ljunc预测损失包括两个部分,一个是交叉点的置信度图,另一个是交叉点的偏移向量图,置信度图预测采用的是交叉熵损失,偏移向量图预测采用的是smoothl1损失;
所述交叉点预测损失为:
其中,ma,1、ma,2分别为第a张图像预测的置信度图和偏移向量图,
所述线段预测损失:包括预测线段中点的置信度图的损失,预测线段中点的偏移向量图的损失以及预测线段等分点到中点的偏移向量图的损失;其中预测线段中点的置信度图的损失采用的是交叉熵损失,预测线段中点的偏移向量图的损失和预测线段等分点到中点的偏移向量图的损失采用的是smoothl1损失;
其中,
所述分类器损失采用的是交叉熵损失函数,具体定义为:
其中,其中