▌计算机视觉基本任务
相关资料整理好了在文末,记得领取哦!
图像分割(image segmentation)是计算机视觉中非常重要的研究和应用方向,根据某些规则将图片中的像素分成不同的部分、打上不同标签。
▌1. 语义分割
计算机视觉的核心任务是分割,它将整个图像分成一个个像素组,然后对其进行标记和分类。特别地,语义分割试图在语义上理解图像中每个像素的角色(比如,识别它是汽车、摩托车还是其他的类别)。如上图所示,除了识别人、道路、汽车、树木等之外,我们还必须确定每个物体的边界。因此,与分类不同,我们需要用模型对密集的像素进行预测。
与其他计算机视觉任务一样,卷积神经网络在分割任务上取得了巨大成功。最流行的原始方法之一是通过滑动窗口进行块分类,利用每个像素周围的图像块,对每个像素分别进行分类。但是其计算效率非常低,因为我们不能在重叠块之间重用共享特征。
解决方案就是加州大学伯克利分校提出的全卷积网络( FCN ),它提出了端到端的卷积神经网络体系结构,在没有任何全连接层的情况下进行密集预测。
这种方法允许针对任何尺寸的图像生成分割映射,并且比块分类算法快得多,几乎后续所有的语义分割算法都采用了这种范式。
但是,这也仍然存在一个问题:在原始图像分辨率上进行卷积运算非常昂贵。为了解决这个问题, FCN 在网络内部使用了下采样和上采样:下采样层被称为条纹卷积( striped convolution );而上采样层被称为反卷积( transposed convolution )。
尽管采用了上采样和下采样层,但由于池化期间的信息丢失, FCN 会生成比较粗糙的分割映射。SegNet 是一种比 FCN (使用最大池化和编码解码框架)更高效的内存架构。在 SegNet 解码技术中,从更高分辨率的特征映射中引入了 shortcut/skip connections ,以改善上采样和下采样后的粗糙分割映射。
目前的语义分割研究都依赖于完全卷积网络,如空洞卷积 ( Dilated Convolutions ),DeepLab 和 RefineNet 。
▌2. 实例分割
除了语义分割之外,实例分割将不同类型的实例进行分类,比如用 5 种不同颜色来标记 5 辆汽车。分类任务通常来说就是识别出包含单个对象的图像是什么,但在分割实例时,我们需要执行更复杂的任务。我们会看到多个重叠物体和不同背景的复杂景象,我们不仅需要将这些不同的对象进行分类,而且还要确定对象的边界、差异和彼此之间的关系!
到目前为止,我们已经看到了如何以多种有趣的方式使用卷积神经网络的特征,通过边界框有效定位图像中的不同对象。我们可以将这种技术进行扩展吗?也就是说,对每个对象的精确像素进行定位,而不仅仅是用边界框进行定位?Facebook AI 则使用了 Mask R-CNN 架构对实例分割问题进行了探索。
就像 Fast R-CNN 和 Faster R-CNN 一样, Mask R-CNN 的底层是鉴于 Faster R-CNN 在物体检测方面效果很好,我们是否可以将其扩展到像素级分割?
Mask R-CNN 通过向 Faster R-CNN 添加一个分支来进行像素级分割,该分支输出一个二进制掩码,该掩码表示给定像素是否为目标对象的一部分:该分支是基于卷积神经网络特征映射的全卷积网络。将给定的卷积神经网络特征映射作为输入,输出为一个矩阵,其中像素属于该对象的所有位置用 1 表示,其他位置则用 0 表示,这就是二进制掩码。
另外,当在原始 Faster R-CNN 架构上运行且没有做任何修改时,感兴趣池化区域( RoIPool ) 选择的特征映射区域或原始图像的区域稍微错开。由于图像分割具有像素级特性,这与边界框不同,自然会导致结果不准确。Mas R-CNN 通过调整 RoIPool 来解决这个问题,使用感兴趣区域对齐( Roialign )方法使其变的更精确。本质上, RoIlign 使用双线性插值来避免舍入误差,这会导致检测和分割不准确。
一旦生成这些掩码, Mask R-CNN 将 RoIAlign 与来自 Faster R-CNN 的分类和边界框相结合,以便进行精确的分割:
▌3. 全景分割(panoptic segmentation)
语义分割和实例分割的结合,即要对所有目标都检测出来,又要区分出同个类别中的不同实例。对比上图、下图,实例分割只对图像中的目标(如上图中的人)进行检测和按像素分割,区分不同实例(使用不同颜色),而全景分割是对图中的所有物体包括背景都要进行检测和分割,区分不同实例(使用不同颜色)。
深度学习图像处理+CV计算机视觉学习资料一份,内含:两大Pytorch、TensorFlow实战框架视频、图像识别、OpenCV、计算机视觉、深度学习与神经网络等视频、代码、PPT以及深度学习书籍
加小姐姐微信领取资料包哦!
▌结语
图像分割是计算机视觉中的基本任务,在语义分割中我们需要将视觉输入分为不同的语义可解释类别,「语义的可解释性」即分类类别在真实世界中是有意义的。实例分割是在像素级识别对象轮廓的任务。与类似的计算机视觉任务相比,这是最困难的视觉任务之一。