社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

基于深度学习的直线检测算法

机器学习AI算法工程 • 11 月前 • 121 次点击  

向AI转型的程序员都关注了这个号👇👇👇


直线检测是经典的底层视觉任务,对一些视觉任务,如自动驾驶、场景3D建模、无人机地平线检测等不可或缺。我们熟知的霍夫变换,就是解决直线检测问题的经典算法。然而,传统算法缺乏鲁棒性,只能受限于简单的应用场景。如今在充分的标注数据支持下,基于神经网络的直线检测算法对检测精度和鲁棒性有了很大提升。在数据驱动下,通过神经网络解决底层视觉任务,效果一般会更好。

传统算法

经典的霍夫变换算法,其一般流程是:提取图像边缘,并将边缘点坐标变换到霍夫空间。霍夫空间中每个点都代表一条直线,图像中同一直线上的点在霍夫空间会产生交点。在单位面积的霍夫空间中进行包含的像素点数统计,倘若高于设定阈值的,则认为包含一条直线。霍夫直线检测结果受阈值、霍夫空间分辨率等的影响,同时只能检测边缘直线,无法检测多个像素宽度的"粗直线"。但霍夫变换应用广泛,还可以应用于圆、椭圆等几何形状的检测。

LSD(line segment detection)也是传统的直线检测方法。它是一种“感知聚类”方法,依赖于精心设计的图像特征和检测策略,其精度、算法复杂度等都要好于霍夫直线检测。其主要思想是基于梯度构建每个像素点的特征,来表征这一点可能处于什么方向的直线上。随后对这些特征依据邻近程度、方向相似度等进行聚类,得到可能的直线区域。最后对这些区域进行筛选、后处理等,得到最终的直线检测结果。整个检测过程很复杂,为了得到较好的检测结果,需要精心调节多个算法参数。

LSD算法

上述算法均集成在了opencv中,除此以外opencv还包含了一些其他的传统直线检测算法,具体可以参考这篇博文:opencv直线检测算法汇总

直线检测算法汇总


深度学习算法

神经网络离不开数据支持,直线检测网络的发展离不开wireframe数据集【CVPR 2018】的公布。该数据集包含了多种场景下的5000多张包含线段标注的图像。

wireframe数据集

有了数据集的支持,近些年有不少直线检测顶会论文发表。

Wireframe 【CVPR 18】

wireframe是随数据集提出的直线检测网络。其思路是,一路检测直线的两个端点(junction),一路对直线像素做分割。其中,junction路需要去回归端点的位置(junction center decoders)和端点对应的直线方向、置信度信息(junction branch decoders),而line路则是要判断每个点是否是直线像素。

wireframe架构

对于端点,需要注意其所对应的直线不一定只有一条,(如矩形顶点都对应两条边)。对此,wireframe首先将可能的方向分为K份,每份360/K度,作为一个bin。文章假设在端点每个bin的方向上,只包含一条线段。因此,网络需要预测端点在K个方向上有直线的概率,同时对直线的精确角度进行回归(精确角度为相对bin起点的角度偏移量)。

另一方面,对于直线像素的分割,wireframe采用级联沙漏网络(Stacked Hourglass Networks)作为backbone。级联沙漏网络最初应用于人体姿态检测任务,其名称由来是在网络架构上,不断地将bottom-up,top-down的沙漏型结构子网络级联,从而不断地整合全局和局部信息,有利于对人体关节、四肢、人体位置等各个尺度上的信息进行整合。直线检测任务与人体姿态检测任务在全局、局部信息的利用上是类似的,从直线跨度上看是宏观的,但从直线像素本身的定位来看则是微观的,因此也需要不断整合各个尺度上的信息。

wireframe网络并非端到端的网络,其需要后处理来将分割结果和端点检测结果进行融合,才能得到最终检测结果。之后提到的几篇文章都是端到端的检测网络。

LCNN 【ICCV 19】

LCNN(Line-CNN)是双阶段的检测网络,它可以看成是RCNN从二维到一维上的迁移。(名字和网络架构都可体现)

LCNN网络架构

LCNN首先进行特征提取,采用的backbone也是级联沙漏网络。随后,得到的特征图送入junction header,来预测可能的端点位置。在推理时,对预测的所有端点,两两生成一个line proposal(类比RCNN region proposal),随后通过proposal的两个端点位置,去特征图上采样得到该proposal对应的特征向量(line feature),采样的过程为LoI Pooling(类比RCNN RoI pooling)。最终,将line feature送入全连接层,得到该proposal的分数,从而判定是否为一条直线。

值得注意的是,由于边的数目是远小于所有端点的两两组合数的,因此proposal中会生产大量的负样本,造成正负样本数的严重不平衡,会影响后续网络的训练。因而在训练时,Line Sampler并非生成所有的proposal,而是分别从正负样本中采样数目相等的proposal进行训练。同时,Line Sampler还会保证一些难样本(如一些与正样本有重合部分的负样本)的数目,来增加鲁棒性。

TP-LSD【 ECCV 20】

TP-LSD 是单阶段的直线检测网络。TP表示“Tri-points”,表示其对直线的三点式建模方式,这也是它能做到single stage的原因。

不同的直线建模方式

将直线表示成中点及到两端点的方向和距离,就可以同时去回归中点位置、直线方向、中点到两侧的距离。如此一来,就可以避免预测端点,再对端点两两组合预测分数的过程。

TP-LSD网络架构

从其网络架构看出,它也是先利用通用的特征提取器提取多尺度特征,随后通过不同的解码层,分别进行直线像素语义分割、中点检测,中点到两端点的位移向量预测。直线语义分割作为辅助信息,帮助中点定位,位移向量求解以及最终的融合。一般来说,在detection任务中做segmentation分支,都能提升检测效果。

机器学习算法AI大数据技术

 搜索公众号添加: datanlp

长按图片,识别二维码




阅读过本文的人还看了以下文章:


TensorFlow 2.0深度学习案例实战


基于40万表格数据集TableBank,用MaskRCNN做表格检测


《基于深度学习的自然语言处理》中/英PDF


Deep Learning 中文版初版-周志华团队


【全套视频课】最全的目标检测算法系列讲解,通俗易懂!


《美团机器学习实践》_美团算法团队.pdf


《深度学习入门:基于Python的理论与实现》高清中文PDF+源码


《深度学习:基于Keras的Python实践》PDF和代码


特征提取与图像处理(第二版).pdf


python就业班学习视频,从入门到实战项目


2019最新《PyTorch自然语言处理》英、中文版PDF+源码


《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码


《深度学习之pytorch》pdf+附书源码


PyTorch深度学习快速实战入门《pytorch-handbook》


【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》


《Python数据分析与挖掘实战》PDF+完整源码


汽车行业完整知识图谱项目实战视频(全23课)


李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材


笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!


《神经网络与深度学习》最新2018版中英PDF+源码


将机器学习模型部署为REST API


FashionAI服装属性标签图像识别Top1-5方案分享


重要开源!CNN-RNN-CTC 实现手写汉字识别


yolo3 检测出图像中的不规则汉字


同样是机器学习算法工程师,你的面试为什么过不了?


前海征信大数据算法:风险概率预测


【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类


VGG16迁移学习,实现医学图像识别分类工程项目


特征工程(一)


特征工程(二) :文本数据的展开、过滤和分块


特征工程(三):特征缩放,从词袋到 TF-IDF


特征工程(四): 类别特征


特征工程(五): PCA 降维


特征工程(六): 非线性特征提取和模型堆叠


特征工程(七):图像特征提取和深度学习


如何利用全新的决策树集成级联结构gcForest做特征工程并打分?


Machine Learning Yearning 中文翻译稿


蚂蚁金服2018秋招-算法工程师(共四面)通过


全球AI挑战-场景分类的比赛源码(多模型融合)


斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)


python+flask搭建CNN在线识别手写中文网站


中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程



不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/154798
 
121 次点击