无人驾驶实战-第三课(静态环境感知与分割算法)

无人驾驶中的感知包括感知外界和感知自身。

感知外界:用于感知外在环境,包括静态目标(车道线/路面/交通标识)和动态目标(运动物体(车/人/...)的运动状态(位置/朝向/速度/...))。

感知自身:感知自身的运动状态(位置/朝向/速度/...),涉及到的传感器包括:GPS IMU HDmap SLAM(单目/双目/RGBD/激光雷达/超声波雷达 包含VIO)

四大图像任务:

分类

分割(像素分类) 

检测(框分类) 

跟踪(使用物体的一切信息进行时序关联)   

无人车感知的框架图

无人驾驶实战-第三课(静态环境感知与分割算法)_第1张图片

Canny边缘检测

基本原理:检测亮度的急剧变化(大梯度 比如从白色到黑色)在给定阈值下定义为边

预处理:

    转换灰度图 

    降噪:噪声容易导致误检,用 5*5 的高斯滤波器(正太分布核)对图像做卷积(平滑图像) [Canny自带] 

    求亮度梯度:在平滑的图像上用 Sobel/Roberts/Prewitt 核沿 x 轴和 y 轴检测边缘是水平/垂直/对角线 

    非极大值抑制:细化边缘。检查每个像素值在先前计算的梯度方向上是否为局部最大值

霍夫变换找寻直线

笛卡尔坐标系

霍夫空间

变量与参数互换

变量(x,y)参数(m,b) y=mx+b

变量(m,b) 参数(x,y) b=-xm+y

直线y=mx+b

直线y=mx+b

点(m,b)

点x,y

多条经过该点的直线y=m_i*x+b_i

一条直线,斜率为-x,截距为y。经过(m_i,b_i)

霍夫空间与笛卡尔空间的关系。

图形分割的类型:

普通分割

    将属于不同物体的像素区域分开即可 

    如前景与背景分割,狗的区域与猫的区域与背景分割开 

语义分割 

    在普通分割的基础上,还要分类出每一块区域的语义(类别) 

实例分割 

    在语义分割的基础上,还要进一步区分同种物体的不同个体

无人驾驶实战-第三课(静态环境感知与分割算法)_第2张图片

深度学习语义分割算法的思路:

从深度学习引入这个任务到现在,一个通用的框架已经大概确定

前端:使用全卷积网络进行特征提取 

    下采样+上采样:Convlution + Deconvlution/Resize

    多尺度特征融合:特征逐点相加/特征拼接 

    获得像素级别的segement map:对每一个像素点进行判断类别 

后端:后端使用CRF(条件随机场)/ MRF(马尔科夫随机场)优化前端的输出得到优化后的分割图

典型的图像分割算法罗列

无人驾驶实战-第三课(静态环境感知与分割算法)_第3张图片

FCN:

深度学习在语义分割上的开山之作。

主要贡献: 1.提出全卷积网络;2.使用反卷积层(Deconvolution)做上采样;3. Skip Layer

无人驾驶实战-第三课(静态环境感知与分割算法)_第4张图片

U-Net

首先进行Conv+Pooling下采样,然后Deconv反卷积进行上采样,crop之前的低层feature map进行融合,然后再次上采样。重复这个过程,直到获得输出388x388x2的feature map,最后经过softmax获得output segment map。与FCN逐点相加不同,U-Net采用将特征在channel维度拼接在一起,形成更“厚”的特征。

无人驾驶实战-第三课(静态环境感知与分割算法)_第5张图片

SegNet/DeconvNet

更好的上采样模式:采用类似自编码器的对称结构,先编码再解码。

无人驾驶实战-第三课(静态环境感知与分割算法)_第6张图片

无人驾驶实战-第三课(静态环境感知与分割算法)_第7张图片

DeepLab:

Deeplab将pooling的stride改为1再加上 1 padding。这样池化后的图片尺寸并未减小,并且依然保留了池化整合特征的特性。但是,因为池化层变了,后面的卷积的感受野也对应的改变了,这样也不能进行fine-tune。所以Deeplab提出了一种新的带孔的卷积(Dilated/Atrous Convolution)能够保证这样的池化后的感受野不变,从而可以fine tune,同时也能保证输出的结果更加精细

无人驾驶实战-第三课(静态环境感知与分割算法)_第8张图片无人驾驶实战-第三课(静态环境感知与分割算法)_第9张图片

PSPNet

Pyramid Scene Parsing Network核心贡献是Global Pyramid Pooling(全局金字塔池化)。它将特征图缩放到几个不同的尺寸,上采用后与之前特征进行融合。使得特征具有更好地全局和多尺度信息,对区分不同类别有帮助(不仅是语义分割,金字塔多尺度特征对于各类视觉问题都挺有用的)

无人驾驶实战-第三课(静态环境感知与分割算法)_第10张图片

Mask R-CNN

在检测的基础上,新增一个分支输出mask. 语义分割(单像素多分类)=框检测(box,多分类)+框内的普通分割(二分类mask)  符合人眼直觉先整块粗分再细化形状。

无人驾驶实战-第三课(静态环境感知与分割算法)_第11张图片无人驾驶实战-第三课(静态环境感知与分割算法)_第12张图片

车道线检测的专用网络LaneNet

一般将图像透视变换到鸟橄图,可以进一步优化车道线,固定的透视变换矩阵遇到上下坡就不行了,因此作者提出用CNN学习透视变换输入RGB图像+分割结果 -> H-Network -> 输出透视变换参数

无人驾驶实战-第三课(静态环境感知与分割算法)_第13张图片

车道分割。

实例分割检测车道线

    语义分割:分割出所有车道线。

    二分类问题 生成像素embedding:。生成每个像素的n维嵌入,使得同一车道的嵌入距离近,不同车道的嵌入距离远 

    聚类出具体是那条车道线:利用分割分支的二值分割图做掩码在Pixel embedding图像上得到所有车道像素的n维度嵌入,将车道像素的嵌入(蓝点)聚类得到所属车道类别。

     先粗分再细分回顾之前 语义分割=检测+普通分割

无人驾驶实战-第三课(静态环境感知与分割算法)_第14张图片

你可能感兴趣的:(人工智能,计算机视觉,图像处理)