【51CTO.com原创稿件】
看了就懂!
什么是语义分割技术?
近年来,随着深度学习技术的快速发展,计算机视觉领域中的许多使用传统方法难以解决的任务都取得了巨大的突破。特别是在图像语义分割领域,深度学习技术的作用表现尤为突出。图像语义分割作为计算机视觉中一项基础且具有挑战性的任务,其目标是将对应的语义标签分配给图像中的每个像素,其结果是将给定图像划分为若干视觉上有意义或感兴趣的区域,以利于后续的图像分析和视觉理解。
下图是在 Cityscapes 数据集上的图像原图和其对应的 ground truth。可以看到,图像分割任务要求对原图的每一个像素进行逐像素预测其类别。由于需要逐像素预测该物体所属类别,这对深度学习模型提出了巨大的挑战,比如部分目标尺寸较小、难以识别,部分目标大部分被遮挡,导致其辨识度降低等。
尽管存在着上述各种各样的困难,语义分割技术仍因其巨大的不可替代的价值,成为自动驾驶技术栈中不可或缺的一部分。自动驾驶技术中的许多地方都需要使用到语义分割技术。比如车道线识别中,毫末智行的感知算法工程师们就使用了语义分割技术来识别车道线的位置和轮廓。如下图所示,使用语义分割得到的车道线,相较于其他方法,有更加清晰的边缘,准确率和召回率也高很多。
车道线语义分割的结果展示
左边是分割后的结果,右边是原图
红色的区域就是分割算法分割出来的车道线的位置
三类“流量小生”
常见的语义分割网络
从 FCN 算法、UNet 算法,到适用于自动驾驶任务的 STDC 算法,接下来为大家详细的介绍分割技术中最热门的的三类“流量”担当。
2.1 FCN 算法
(Fully Convolutional Networks for Semantic Segmentation)
2012年,AlexNet 以超越第二名(特征点匹配法+SVM)10个点的精度宣告深度学习时代的来临。随后人们开始尝试使用类似 AlexNet 的方法进行图像语义分割,但是由于 AlexNet 是对图像整体进行分类的,无法做到像素级的分类。而究竟怎么做到对图像中的每一个像素都进行分类预测,在那个时候仍然是一个世界难题。在当时,无数的科研人员尝试将图片分为若干个 Patch 后送入网络中学习,希望网络能够对 Patch 进行分类,但最终效果都不理想。直到2015年,Jonathan Long 发表了《Fully Convolutional Networks for Semantic Segmentation》。至此,图像语义分割的天空迎来了第一缕阳光。
FCN 算法的主要流程如下图所示,主要原理是让图片经过不同的卷积层和池化层,从而提取到图片的特征。每一层卷积就像一个放大镜一样去遍历图片的每一个像素,每遍历一个位置,放大镜就会输出对应位置的物体类别。举个简单的例子,用一个3x3的卷积核和图片做卷积,就可以简单的理解为用一个放大镜去遍历图片的每一个位置,放大镜每次看一个位置后,就输出对应位置的类别。
FCN 算法是图像分割技术中里程碑式的一站,但是正如其他行业的里程碑一样,FCN 只是起点。其仍然有一定的缺点。具体包括以下两点:
- FCN 算法的结果仍然不够精细;
- FCN 只是逐像素预测,而没有考虑像素间的关系。
2.2 UNet 算法
(UNet++: A Nested U-Net Architecture for Medical Image Segmentation)
2015 年,在 FCN 的基础之上,Olaf Ronneberge 等人提出了一种被称为 U-Net 的 U 型网络架构,该算法在医学图像分割、遥感分割等分割任务中获得了广泛应用。该网络的特征在于,编码器由一系列的卷积和最大汇合层构成,解码端由镜像对称的卷积层和转置卷积序列组成。由于分割网络结构中不同的卷积层对特征的抽象层次不同,为了产生高质量的分割结果,因此 U-Net 结构使用跳层连接将编码端的特征图镜像堆叠到解码端对应层级,如图所示。
U-Net 的结构特点为:编码器能够提取深层的图像语义信息,解码器通过跳层连接机制来连接位置信息丰富的浅层特征图和语义特征信息丰富的深层特征图,然后进行逐层上采样。这种逐层上采样和特征融合的方式有利于将深层的语义信息往浅层传递,同时跳层连接促进了网络收敛。
U-Net 算法是语义分割技术中的第二个里程碑式的算法。后续的许多算法都是基于 U-Net 算法进行改进。其优点是精度很高,但是其速度较慢,难以满足自动驾驶的要求。
2.3 适用于自动驾驶任务的 STDC 算法
(Rethinking BiSeNet For Real-time Semantic Segmentation)
U-Net 算法虽然具有精度高的特点,但是其速度并不能满足自动驾驶的要求。为了解决速度不够的问题,STDC 算法应运而生。
STDC 算法的基本原理如下图所示。
STDC 算法采用了类似 FCN 算法的结构,其去掉了 U-Net 算法复杂的 decoder 结构。但同时在网络下采样的过程中,利用 ARM 模块不断的去融合来自不同层的特征图的信息,因此也避免了 FCN 算法只考虑单个像素关系的缺点。可以说,STDC 算法很好的做到了速度与精度的平衡,其可以满足自动驾驶系统实时性的要求。
更接地气?
语义分割的未来
虽然语义分割技术已经取得了许多的进展,但其距离实用仍然或多或少存在一定的差距。我们认为,语义分割技术在未来的发展趋势主要包括以下几点:
- 更加清晰的边缘分割结果。目前各大主流语义分割技术对边缘的分割都存在分割不够清晰的问题,这对实际应用会造成很大影响。
- 与频率域相结合。一个更加鲁棒的表示会极大提高模型的表现,多项研究发现,把图像从空间域转换到频率域的表达会提高分割模型的表现同时降低模型的复杂度。
- 使用 Transformer。Transformer 技术最近在计算机视觉的各项任务中一枝独秀,在分割领域中更是如此。这主要得益于 transformer 的 self-attention 模块可以兼顾全局感受野和局部感受野的信息,这对于分割任务而言是及其重要的。可以预见,Transformer 模型将带领语义分割领域迈上新的台阶。
本期的干货分享就到这里啦。关于语义分割技术对自动驾驶技术,大家都“拿捏”了吗?下期我们会继续为大家带来更厉害的自动驾驶知识,卷起来!
【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】