©PaperWeekly 原创 · 作者|武广
学校|合肥工业大学硕士生
研究方向|图像生成
图像分割在深度学习的加持下精度性得到不断的提高,主要的分割任务集中在全自动分割的方法下进行,然而一些特定的任务往往是自动分割方法无法实现的。例如仅对感兴趣的目标进行分割,在自动分割结果不够好的情况下通过用户介入矫正,特定医疗图像的目标分割等。
此时,交互式分割则发挥着重要的作用,它可以在自动分割不充分的情况下通过用户提供前景和背景的标记实现更加精细和特定位置的目标分割。本文将对交互式分割近年的发展进行梳理和介绍。
交互式分割简介
交互式分割是用户通过提供目标物体前景和背景信息实现交互式的监督分割。交互式分割往往是建立在自动分割的基础上,对已有的监督信息中增加人为(模拟人为)的标记,实现更加精细的分割。图 1 展示了通过指定前景和背景点实现的交互式分割。其中绿色点为前景标记点,红色点为背景标记点。
▲图1.前景背景点下的交互式分割
交互式分割作为图像分割的一个重要分支也经历了一定的发展。早期的分割和交互式分割是基于高斯混合模型和马尔科夫随机场实现。
通过基于马尔科夫随机场模型的图像分割算法假设待分割图像的像素只与其邻域内的像素相关,与邻域外的像素无关;基于该假设我们能定量计算图像局部的先验结构信息,并根据最大后验概率准则(MAP),有效的利用像素间结构信息分割图像。
依靠能量最小化的分割是定义一个能量函数E,其最小值对应理想的分割。由于前景和背景灰度水平直方图和不透明度是连贯的,并能反映物体实体化的倾向。这样获得一个“吉布斯(Gibbs)”能量的形式。
随着深度学习的发展,以GrabCut算法 [1] 为主,利用图像中的纹理(颜色)信息和边界(反差)信息,只要少量的用户交互(提供前景标记框)操作即可得到比较好的分割结果。
我们知道,近年来的神经网络朝着更大更深的方向发展,图像分割的精度和细节愈发的逼近真实分割结果,本文将通过近年典型的几篇交互式分割文章对该方法进行一定梳理和分析。
交互式分割近年典型方法
2.1 F-BRS
f-BRS: Rethinking Backpropagating Refinement for Interactive Segmentation [2] 是 CVPR 2020 的文章,文章提出了一种新颖的反向传播优化方案(f-BRS),该方案可在网络的中间特征上运行,并且只需要对网络的一小部分进行正向和反向传递。实验结果在准确性和速度方面设定了最高的结果。
f-BRS 的优化过程可以通过以下 demo 进行演示。
可以看到,f-BRS 可以在得到交互式前景和背景的点击下,在进行传播的过程中,不仅可以从输入进行反向传递也可以从相应的特征提取的模块节点下进行反向传播优化网络,这将在推理上可以实现大幅度的速度提升,值得说的是后端优化的节点并没有带来多大分割精度上的损失。
我们看一下模型的实现细节,整个模型结构如图 2 所示。
▲图2.f-BRS模型结构
模型的输入为原图 image 和已经处理好的前景背景的点。如何处理好这些前景和背景的点呢,这就需要通过一个 Distance Maps 去实现,也就是图上画出来的。
说的通俗一点,这个 Distance 就是怎样确定前景点和对应的 mask 上的区域,源码下采用 num_max 作为前景点的最多个数,默认是 10 个。也就是最多在一个区域标记 10 个前景点和 10 个背景点,通过将这些点进行距离映射处理后得到与图像尺寸相当的 channel 为 2 的距离图。
得到 Distance Maps 后,我们的输入就是对应的 Image 的,有人可能又要质疑了,你是怎么确定前景点和背景点的呢?处理前景点和背景点的任务其实是要人通过交互的输入进行的。怎么去程序化呢?也就是让电脑模拟人的输入进行交互呢?
这其实很简单的,就是通过已有的真实图像的 Mask 去确定,Mask 在目标物体位置区域内是 1,否则全为 0。随机选择 1 的位置作为前景点,0 的位置作为背景点,允许重复的情况下选择 10 个前景点和 10 个背景点(坐标(-1,-1) 的情况下表示放弃标点)。
文章在对数据进行增强的时候,利用了 Python 下的 albumentations 包,这是个专门实现数据增强的模块,其中包括 Compose, ShiftScaleRotate, PadIfNeeded, RandomCrop, RGBShift, RandomBrightnessContrast, RandomRotate90, Flip。
对于后续的网络架构,我们以 ResNet34 为例,对网络进行了详细展开