vanishing point detection in autopilot

本文探讨了在自动驾驶领域中,如何利用深度学习技术进行消失点检测。介绍了多种基于CNN的算法,包括VPGNet、D-VPnet等,以及结合车道线检测的多任务模型,强调了消失点检测在理解车辆状态和道路信息中的重要性。同时,提到了数据生成和几何先验知识在训练模型中的作用,以提高检测的准确性。
部署运行你感兴趣的模型镜像

1. 概述

消失点一种直观的解释是图像中的平行线的交点,也就如下图中路面边界绘制的直线在图像中的交点。
在这里插入图片描述
这样的点在自动驾驶场景下可以为解析车辆状态提供一些信息,比如较为常规的运用便是用于车辆的pitch角度。在传统方法中会通过如霍夫算子检测图片中的直线,并以直线的方程计算对应的交点。这类方法对场景的要求较为严苛,导致在实际中会引入其它的trick来适应多变的使用场景。基于数据驱动的深度学习方法也可对该问题提供一些解决方法,在这篇文章中将会介绍一些使用深度学习方法实现消失点检测的方法。

2. 基于深度学的消失点检测方案

2.1 Vanishing point detection with convolutional neural networks

这篇文章提出了一种基于分类的消失点检测算法和一个消失点检测数据集,下图展示该数据集的图片示例与数据分布:
在这里插入图片描述
该消失点检测算法按照CNN特征维度大小对图像进行网格表示,若消失点落在了某个网格中,那么该网格的分类类别就是正了。自然带来的问题就是消失点检测比较粗糙,不够精细化。

2.2 VPGNet: Vanishing Point Guided Network for Lane and Road Marking Detection and Recognition

参考代码:VPGNet

在一般驾驶场景下消失点往往是车辆行驶方向车道线的交点,那么在一些较差环境下消失点的确立能帮助如车道线检测等任务,这一定程度上符合人的直观感受。对此在现有网络基础上添加一个消失点检测头。其网络结构如下:
在这里插入图片描述
而对于消失点的建模,文中对比了heatmap和分割形式的建模两者的性能比较:
在这里插入图片描述
可以从右图中看到基于分割的方法是好于基于heatmap的,在图中存在明确消失点的时候以消失点为交点将图像划分为4个格子,并用4个通道去预测对应格子的分割结果。而在如遮挡场景下,消失点不是那么明确就用在第5个通道预测去表示这样的情况。

2.3 Vanishing Point Detection with Direct and Transposed Fast Hough Transform inside the neural network

深度学习的方法存在数据适应性的问题,为了减轻数据变化对消失点检测带来的影响,将图像中的集合信息融合进入网络中,便是一个不错的想法。对此这篇文中中引入FHT和Transposed HT到网络中用于增强网络特征表达,使得消失点检测更加鲁棒。其网络结构见下表:
在这里插入图片描述

2.4 Unstructured Road Vanishing Point Detection Using the Convolutional Neural Network and Heatmap Regression

参考代码:URVP

前面提到的一些消失点检测算法均不能输出精确消失点位置,且消失点的预测是需要全图上下文信息的。其网络结构见下图所示:
在这里插入图片描述
对此文章提出一种heatmap和消失点准确预测的结构,消失点的heatmap用于从上下文中确定消失点的位置,同时heatmap特征会用于加强后续的特征图表达。对于消失点的准确预测,文章借鉴了yolo的方式,首先预测该特征网格是不是消失点所在位置,同时预测以该网格为基准的offset。
V P x = f ( x ) + c x VP_x=f(x)+c_x VPx=f(x)+cx
V P y = f ( y ) + c y VP_y=f(y)+c_y VPy=f(y)+cy

2.6 D-VPnet: A Network for Real-time Dominant Vanishing Point Detection in Natural Scenes

这篇文章的方法参考YOLO中目标框的回归机制,预测平行线上点的位置(会将实际场景中的平行线进行切分作为GT),之后通过这些平行线的点去解析出消失点。此外,文章还引入多尺度预测的方式,提升预测的准确性。其网络结构见下图所示:
在这里插入图片描述
其预测出来的平行线点结果可视化如下图所示:
在这里插入图片描述

2.7 Heatmap-based Vanishing Point boosts Lane Detection

自动驾驶场景下消失点与车道线之间其实是存在一定的联系的,对此可以将车道线检测和消失点预测结合起来构成多任务模型。下图展示的便是这篇文章使用分割特征优化消失点heatmap预测特征图表达。
在这里插入图片描述
其实对于上述提到的lane segment和vp detection在实际操作中是存在一定的排列组合的,如下图:
在这里插入图片描述
这些不同的网络排列组合的性能比较:
在这里插入图片描述

2.8 End-to-End Monocular Vanishing Point Detection Exploiting Lane Annotations

对于消失点检测的训练数据,之前的一些方法是通过人工标注的形式获取。在这篇文中提出一种基于车道线标注生成消失点的方案,也就是寻找车道线的交点,如下图所示:
在这里插入图片描述
对于车道线交点不聚集的情况,这些是不能用于消失点数据生成的,如下图的最后一列:
在这里插入图片描述

2.9 Deep vanishing point detection: Geometric priors make dataset variations vanish

参考代码:VanishingPoint_HoughTransform_GaussianSphere

这篇文章借用CNN网络去提取图像特征,通过霍夫变换将图中直线上映射到对应空间上,之后这些组成直线的点会被映射到高斯球面上,这些直线在球面上的交点也就是消失点了,对应下图中3个域的变化。
在这里插入图片描述
文章的网络结构见下图所示:
在这里插入图片描述

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.9

TensorFlow-v2.9

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

### 什么是计算机视觉中的消失 在计算机视觉中,消失是指一组平行线在二维图像平面上交汇的[^2]。这种现象源于透视投影原理,在三维空间中相互平行的直线会在二维图像平面中汇聚到同一个。例如,建筑物的边缘、铁路轨道或桌椅家具的边框都可以形成这样的平行线集合。 消失通常被用来估计相机的姿态参数(内部和外部方向),并帮助改进几何结构的理解。此外,它还可以应用于场景重建、增强现实以及自动驾驶等领域。 --- ### 如何检测图像中的消失 #### 方法概述 检测消失的核心在于寻找图像中具有相同消失的一组平行线。以下是几种常见的方法: 1. **基于霍夫变换的方法** 霍夫变换是一种常用的工具,可以用于检测图像中的直线。通过对这些直线的方向进行聚类分析,能够找出共享同一消失的直线簇。 2. **利用特征匹配与几何约束** 提取图像中的显著特征(如角)并通过描述符(如SIFT、SURF等)建立对应关系。随后,根据对应的几何约束条件计算可能存在的消失位置[^3]。 3. **深度学习驱动的方式** 借助卷积神经网络(CNN),可以直接训练模型预测输入图片内的多个消失坐标。这种方法无需显式的手工设计特征工程过程,而是依赖于大量标注好的数据集完成端到端的学习任务[^4]。 #### 示例代码 下面展示了一个简单的Python脚本,演示如何使用OpenCV库结合霍夫变换来初步估算单幅图像上的某个消失的位置。 ```python import cv2 import numpy as np def detect_vanishing_point(image_path): img = cv2.imread(image_path) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) edges = cv2.Canny(gray, 50, 150, apertureSize=3) lines = cv2.HoughLinesP(edges, rho=1, theta=np.pi/180, threshold=100, minLineLength=100, maxLineGap=10) vanishing_points = [] if lines is not None: for line in lines: x1, y1, x2, y2 = line[0] # Compute the intersection point of all detected lines. m = (y2 - y1) / (x2 - x1 + 1e-6) # Slope calculation with numerical stability b = y1 - m * x1 # Intercept vanishing_points.append((m,b)) return vanishing_points result = detect_vanishing_point('example.jpg') print(result) ``` 此段程序仅作为概念验证用途;实际项目开发时需考虑更多细节优化问题,比如鲁棒性提升措施或者多视图联合求解策略等等。 --- ### 应用实例 消失的应用非常广泛,具体如下: - 自动驾驶车辆路径规划:通过识别道路边界及其延伸趋势判断前方可行驶区域; - 场景理解与建模:辅助构建精确的城市环境三维地图; - 数字摄影后期处理:矫正倾斜视角拍摄的照片恢复正交比例效果。 ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值