编者按:语义分割(Semantic Segmentation)是计算机视觉中的一个重要领域,它可以将图像中的每一个像素划分到不同类别的集合中。近年来,语义分割在自动驾驶、医疗图像识别等领域发展迅速、应用广泛。
本文中,百分点感知智能实验室介绍了语义分割的技术原理及应用场景,并分享了百分点科技基于语义分割技术在水域监控中的应用和具体落地流程。
水域监控是为了定期监控水域、滩地、堤坝等区域情况,检查是否有堤坝缺失或水域变化异常情况的发生。水域图像会定时定点拍摄,为了实现辅助监控任务需要将传回的图像分割,并将图像中的不同类型区域区分并标明。水域监控图像示例
具体来说,任务需要识别目标图像中河流、滩地、心滩、草地、连坝、丁坝、防备石、树林、天空等区域。局部图像示例
上图简单列出了几种需要识别的类型:河流、河流两岸的堤坝、用于加固大坝的防备石,以及河流与堤坝旁的滩地。所需分割类型较多且有些较为相似,画面中的元素较多,背景复杂;
拍摄高度较高,一些目标像素较小且不同类型目标大小差异巨大;
相机拍摄距离的不同会造成同一物体在图像中存在很大差距,占幅不同;
部分区域相邻的像素对应的图像信息太过相似;
图像中不同类别或实例的像素存在不均衡的问题;
拍摄条件造成的影响,如光照过曝或过暗、抖动造成的模糊等。
在技术路线上,百分点科技使用了基于语义分割的地理信息提取系统来实现既定任务。地理信息提取系统可以通过训练神经网络让机器输入卫星遥感影像,自动识别道路、河流、庄稼和建筑物等,并且对图像中每个像素进行标注。基于地理信息提取系统的语义分割,百分点科技开发了一套水域分割系统,可定期监控水域,滩地,堤坝等区域情况,并将图像划分为河流、滩地、心滩、草地、连坝、丁坝、防备石、树林、天空等,辅助研究人员观测水域情况。那么语义分割具体是指什么、又为什么要选择语义分割技术来实现呢?我们知道图像是像素的集合,语义分割是对图像中属于某个类别的每个像素进行分类的过程,因此可以将其视为每个像素的分类问题。语义分割示例
语义分割同实例分割(InstanceSegmentation )、全景分割(Panorama Segmentation)共同组成了图像分割(Image Segmentation)。当前人类对用计算机视觉解决的最重要问题就是图像分类(Image Classification)、目标检测(Object Detection)和图像分割,按难度递增。在传统的图像分类任务中,人们只对获取图像中存在的所有对象的标签感兴趣。在目标检测中,百分点科技尝试在边界框的帮助下了解图像中存在的所有目标以及目标所在的位置。图像分割通过尝试准确找出图像中对象的确切边界,将其提升到一个新的水平。识别图像中存在的内容,即图像所属类别,通常结果为一个带有概率的分类结果,一般取概率最高的类别为图像分类结果。图像分类示例,输出为类别标签及概率
目标检测将物体的分类和定位合二为一,识别图像中存在的内容和检测其位置,如下图:目标检测示例,输出为类别标签及回轨框
将图像中的每个像素打上类别标签,如下图,把图像分为人(红色)、车(深蓝色)、天空(浅蓝色)、马路(深褐色)等。语义分割示例,输出为根据所属类别区分为不同颜色的掩码(mask)
目标检测和语义分割的结合,在图像中将目标检测出来,然后对每个像素打上标签,如下图,实例分割与语义分割的不同是它只将检测出的目标像素打上标签不需要将全部像素打上标签,并且语义分割不区分属于同类别的不同实例(人统一为红色,车同一为深蓝色),实例分割需要区分同类别的不同实例,为每个目标打上id标签(使用不同颜色区分不同的人和车)。实例分割示例,输出为回轨框和根据所属实例id区分为不同颜色的掩码
语义分割和实例分割的结合,既要将图像中的每个像素打上类别标签,又要区分出相同类别中的不同实例,如下图:全景分割示例,输出为根据所属类别和实例id区分为不同颜色的掩码
从上面图例中可以看出,需要划分出水域图像中不同类别的区域及大小(如河流、滩地、大坝区域),能够完成此任务的技术路线就是使用语义分割或实例分割,因为只有它们能够将水域图像中的每一个像素分割确定为不同类型,从而确定图像中每种类型区域的大小和位置,同时该任务又不需要区分每个类型的实例,因此最适合方案的就是使用语义分割。下面就为大家介绍一下语义分割的原理。2. 语义分割原理
语义分割是为完全理解场景铺平道路的高级任务之一。越来越多的应用程序从图像中提取、推断信息和知识,这一事实凸显了场景理解作为核心计算机视觉问题的重要性。其中一些应用包括自动驾驶、人机交互、虚拟现实等。近年来,随着深度学习(Deep Learning,DL)的普及,许多语义分割问题正在使用深度学习架构来解决,最常见的是卷积神经网络(Convolutional Neural Networks,CNN),它超越了其他方法在准确性和效率方面有很大的进步。百分点科技同样也使用了当前较为先进的基于深度学习的语义分割技术,其中最重要的一个核心就是卷积神经网络。3. 语义分割网络结构
基于深度学习的语义分割基本架构由编码器和解码器组成,编码器通过滤波器(filter)从图像中提取特征,解码器负责生成最终输出,它通常是一个包含对象轮廓的分割掩码。大多数架构都有这种架构或其变体。卷积编码器-解码器的可视化表示
解码器的一个核心创新就是使用了全卷积网络(Fully Convolutional Network,FCN)来替代CNN中的全连接层(Fully Connected Layers,FC)。CNN 由卷积层、池化层和非线性激活函数组成。在大多数情况下,CNN 在末尾有一个全连接层,以便进行类标签预测。具有全连接层的 CNN示例
但在语义分割方面,通常不需要最后的全连接层,因为目标不是预测图像的类标签。在语义分割中,目标是在使用特征将图像分成多个片段之前提取特征。然而,卷积网络的问题在于,最大池化层图像在通过网络时会减小,为了有效地将图像分成多个片段,需要使用插值技术对其进行上采样,这是使用反卷积层实现的。具有上采样和反卷积层的 CNN示例
因为信息在最后的卷积层(即1 X 1卷积网络)丢失了,所以解码器产生的输出是粗糙的,这使得网络很难通过使用这些少量信息进行上采样。为了解决这个上采样问题,使用基于全卷积网络的两种架构:FCN-16 和 FCN-8。在FCN-16中,来自前一个池化层的信息与最终特征图一起用于生成分割图。FCN-8 试图通过包含更多先前池化层的信息来使其变得更好。与传统用CNN进行图像分割的方法相比,FCN有两大明显的优点:一是可以接受任意大小的输入图像,而不用要求所有的训练图像和测试图像具有同样的尺寸;二是更加高效,因为避免了由于使用像素块而带来的重复存储和计算卷积的问题。同时FCN的缺点也比较明显:一是得到的结果还是不够精细,进行8倍上采样虽然比32倍的效果好了很多,但是上采样的结果还是比较模糊和平滑,对图像中的细节不敏感;二是对各个像素进行分类,没有充分考虑像素与像素之间的关系,忽略了在通常的基于像素分类的分割方法中使用的空间规整(spatial regularization)步骤,缺乏空间一致性。为了避免FCN的这些缺点,后来又衍生出了许多语义分割网络,如U-Net、SegNet、PSPNet、DeepLab等。4. 模型训练
模型训练的过程可以简单分为数据清洗、数据标注、数据预处理、模型训练和模型调优等。首先,将清洗好的数据按照不同分类进行像素级别的标注,如下图所示:标注文件示例,为了方便观看调节了对比度,实际标注时将对应目标像素标注为0,1,2,3等对应的数值,如河流标记为0,心滩标记为1
标注完成之后进行数据预处理,如图像切割、数据平衡、数据增强等。图像切割在原始图像较大时运用较多,可将一张非常大的图切割成若干张小图进行训练防止很多图像细节的缺失,也可进行随机切割增加图像的多样性。数据平衡是当训练集中存在某些类别的样本数量远大于另一些类别时对数据样本量进行平衡,最简单的方法有过采样或欠采样等。数据增强包含了很多方法,如翻转、旋转、拉伸、模糊、加噪声、亮度调节等,增加数据多样性,增强模型泛化能力。训练模型时基于全卷积网络(FCN)框架使用了金字塔池化,也就是进行了多尺度特征融合,这是因为由于在深层网络中,高层特征包含了更多的语义和较少的位置信息。这也使得模型除了具备基于深度学习的语义分割具备的优势外又结合多尺度特征,可以提高性能适应不同大小的目标。模型网络示例
模型训练完成后还需根据测试结果进行调优,除了优化损失函数、学习率、优化器、dropout等超参数外还使用了迁移学习、模型剪裁等方法。语义分割结果示例
随着语义分割的发展,基于语义分割的落地应用也越来越多,其中比较典型的有无人驾驶、医疗影像分析、地理信息提取系统等,百分点科技开发的水域分割系统就属于地理信息提取系统,下面将展开介绍一下。无人车驾驶:语义分割也是无人车驾驶的核心算法技术,车载摄像头,或者激光雷达探查到图像后输入到神经网络中,后台计算机可以自动将图像分割归类,以避让行人和车辆等障碍。街景语义分割示例
医疗影像分析:随着人工智能的崛起,将神经网络与医疗诊断结合也成为研究热点,智能医疗研究逐渐成熟。在智能医疗领域,语义分割可用于医学图像分析等。本文介绍了使用语义分割技术对水域图像进行分割,实现水域监控。语义分割可以将图像中的每一个像素分类,从而更好地理解图像中的场景信息,并从中推断出相关的知识或语义,这使得语义分割在自动驾驶、医疗影像分析、增强现实等方向的发展迅速。此外,语义分割也让大家进一步了解了计算机视觉、深度学习中的一些原理和应用。百分点科技一直关注和研究图像分割技术领域,目前,百分点科技应用图像分割技术在土地治理、安防监控等多个领域已经有项目应用落地,今后我们也将更加深入地在图像分割领域进行研究。
[1]Lécun Y, Bottou L, Bengio Y, et al. Gradient-basedlearning applied to document recognition[J]. Proceedings of the IEEE, 1998.[2]Alex Krizhevsky,Ilya Sutskever,Geoffrey E.Hinton,University of Toronto.ImageNet Classification with Deep ConvolutionalNeural Networks.NIPS 2012.[3]K. He, X. Zhang, S. Ren, and J. Sun. Deep residuallearningfor image recognition. In CVPR, 2016.[4]D. Bolya, C. Zhou, F. Xiao, and Y. J. Lee, “Yolact:Real-time instance segmentation,” in The IEEE International Conference onComputerVision (ICCV), October 2019.[5]I. Goodfellow, J. Pouget-Abadie, M. Mirza, B. Xu,D.Warde-Farley, S. Ozair, A. Courville, and Y. Bengio. Generative AdversarialNetworks. In NIPS, 2014.[6]Tero Karras,Samuli Laine,Timo Aila,NVIDIA,AStyle-Based Generator Architecture for Generative Adversarial Networks,InCVPR,2019.[7]https://github.com/deepinsight/insightface[8]https://github.com/facebookresearch/detectron2[9]https://venturebeat.com/2021/11/22/nvidias-latest-ai-tech-translates-text-into-landscape-images/