主动学习
将数据标注过程呈现为学习算法和用户之间的交互。其中,算法负责挑选对训练AI模型价值更高的样本,而用户则标注那些挑选出来的样本
也就是,通过机器学习方法获取到那些比较“难”分类的样本数据,让人工再次确认和审核,然后将人工标注得到的数据再次使用有监督或半监督学习模型进行训练,逐步提升模型的效果,将人工经验融入机器学习的模型中。
以图像分类问题举例,首先,人工挑选并标注一部分图像数据,训练初始模型,然后利用训练的模型预测其余未标注的数据,再通过“主动学习”中的“查询方法”挑选出模型比较难分辨类别的数据,再人为修正这些“难”数据的标签并加入训练集中再次微调(Fine-tuning)训练模型。“查询方法”是主动学习的核心之一,最常见的“查询方法”有基于不确定性的样本查询策略和基于多样性的样本查询策略。
查询方法
- 不确定性采样的查询
- 基于委员会的查询
- 基于模型变化期望的查询
- 基于误差减少的查询
- 基于方差减少的查询
- 基于密度权重的查询
不确定性采样的查询
置信度最低:考虑模型预测概率最大但是可信度较低的样本数据。(0.9,0.1)的置信度大于(0.51,0.49)。
边缘采样:选择模型预测最大和第二大的概率差值最小的样本。二分类问题中,和置信度最低等价。
熵:选择熵最小的。
基于委员会的查询
考虑多个模型的场景,通过多个模型投票的模式,选择出那些较“难”区分的样本数据
总结
主动学习领域中,关键就在于如何选择出合适的标注候选集给人工标注,选择的方法就是查询策略。查询策略可以基于单个机器学习模型,也可以基于多个机器学习模型,在实际使用中可以根据情况来决定。
交互式标注在语义分割中的场景
1, Deep Interactive Object Selection
这是CVPR 2016的一篇文章。该文章提出了一种使用卷积神经网络(CNN)的二维图像交互式分割方法。
工作流程:如下图所示,用户画几个点,绿色的点为前景(目标对象),红色的点为背景(背景),这些点转化为基于前景点的距离图像和基于背景点的距离图像。原图为RGB三个通道的图像,加上这两个距离图像后一共五个通道,将这五个通道的图像作为一个pair(图像, 用户交互),作为全卷积网络(FCN)的输入以得到分割结果。因此在分割过程中,用户只需给几个点就能指导FCN的分割。
由FCN的输出可以得到一个概率图,在概率图的基础上再使用图割(graph cut)进行修正以使分割结果更靠近图像中的边缘。下图是一个分割的例子,其中(a)为输入图像和用户提供的前景点和背景点,(b)是由FCN得到的概率图,(c)是经过graph cut优化后的结果。
该文章使用了FCN预训练的模型,并且在PASCAL VOC 2012图像分割数据集上进行微调。在训练过程中通过对用户交互的模拟来得到前景点和背景点,而不需要真正让用户在训练集上标记出这些点。在测试过程中用户可根据需要,不断增加点的数量,从而的分割结果进行编辑。下图是用户提供1-3个点进行分割的例子。第一行是对概率图取阈值的分割结果,第二行为用graph cut对概率图修正的结果。
2, Interactive medical image segmentation using deep learning with image-specific fine-tuning
这是今年发表在TMI上的一篇文章,该方法也称为BIFSeg,BIFSeg从一个特定的图像中学习一个CNN来实现分割。
解决的问题:
- 过去CNN不能良好推广到数据集中未看到的对象类,且响应时间较慢。
创新点:
- 通过对CNN进行微调来使其更加适应数据。
- 可以分割训练数据中未曾出现的对象。
工作流程:
在训练过程,用户先画一个边界框,边界框以内的区域作为CNN的输入,进行二进制分割训练,这个训练过程可以学习到一些显著性、对比度等特征的知识,可以应用于未曾出现的对象。
测试阶段,再对CNN进行图像微调(涂鸦),使CNN更好地适应特定的测试图像。
那么,训练的过程相当于使BIFSeg学会从一个边界框中去提取物体,测试时通过微调让CNN可以更好地利用特定图像中的信息。
微调过程在更新CNN参数时,使用了一个加权的损失函数,忽略了那些倾向于分割不准确的像素,仅使用具有高度可靠性的用户标注的像素来优化CNN。
如上图,不确定度高的像素点权重为0(黑色),涂鸦为ω(白色),其余为1(灰色)。
通常基于CNN 的分割方法只能处理训练集中出现过的物体,这就限制了这些方法的灵活性。BIFSeg 尝试用CNN来分割训练时没有见过的物体。训练集中包括胎盘和胎儿大脑,测试集中则除了这两种器官外,还包括胎儿的肺部和孕妇的肾脏。
3, DeepIGeoS: A deep interactive geodesic framework for medical image segmentation
DeepIGeoS是发表在TPAMI上的一篇文章,与Deep Interactive Object Selection需要用户一开始就要提供交互点不同的是,DeepIGeoS让用户只需在一个自动分割结果的错误分割区域提供交互,因此可以更加省时和高效。
解决的问题:
- 过去的交互较繁琐,响应的时间较慢。
创新点:
- 所需的用户交互更少,仅需要在错误区域进行少量涂鸦即可修正。
- 响应时间更快。每次用户交互后不再需要对全部模型重新训练,而是采取预训练+模拟用户交互过程。
DeepIGeoS是一个两阶段的框架,使用了两个CNN, 如图所示。阶段1中,这是一个自动分割问题,需要快速推理,第一个CNN(称为P-Net)得到一个自动分割结果,用户检查初始分割,并给出一些交互(点击和短涂鸦)来表示错误分割的区域,阶段2,第二个CNN(R-Net)以原始图像、初始分割和用户交互作为输入,对分割进行细化。
用户做出的修正会被转化为距离图像作为第二个CNN输入的一部分,距离图像是测地线距离(geodesic distance,与欧几里得距离相比,更可以利用图像距离的上下文信息)。
如下图所示,(a)中绿色曲线为初始分割结果,红点为用户对其修正时标记的前景点,青色为用户标记的背景点,(d)和(e)分别是这两种交互所对应的测地线距离图像。使用测地线距离比欧式距离可以更好地反映图像中的边缘和上下文信息。原始图像,初始分割结果,前景交互点的距离图像、背景交互点的距离图像组合在一起,得到一个四个通道的图像,以作为第二个CNN(R-Net)的输入。
训练:
DeepIGeoS在训练过程中是通过对交互点的模拟来训练R-Net的。
先对P-Net进行预训练,然后用P-Net对训练数据的图像进行分割,分割后得到y'与y进行比较来发现错误分割的区域,然后对错误区域进行标记,sample一些点,用于训练R-Net。
下图是在P-Net得到的初始分割结果上模拟的用户交互:
该文章分别在二维胎儿MRI图像和三维脑肿瘤图像上做了实验,结果表明与传统的交互式分割方法例如Graph Cuts, Random Walks, ITK-Snap相比, DeepIGeoS大大降低了对用户交互的需求,并且减少了用户时间,在二维胎盘图像和三维脑肿瘤图像的交互式分割中需要的用户时间分别为约8秒和60秒。
4, Guide Me: Interacting with Deep Networks
上述几篇文章处理的用户交互是用户在图像上给的初始标记或者新增加的标记,而Guide Me这篇文章尝试处理另一种交互方式:根据用户的文字输入来更新图像分割的结果。
该方法的原理图如下,使用的CNN可看做由编码器和解码器两部分组成,头部和尾部之间有一个中间层的特征图,在分割时,用户的交互用来对这个特征图进行更改,从而改变网络的输出结果。(没有修改CNN网络)
特征图更改是通过一些引导参数(guide parameter),包括一些乘法和偏置系数来实现的:
这里 表示特征图的第c个通道,
和
分别是一个乘法系数和一个偏置系数。通过对特征图的每个通道定义两个参数,可以让参数的数量达到最小。但这样忽略了空间信息,因此可以在不同的空间位置也定义这样的参数:
其中 和
分别对应每行和每列的系数。对于高H, 宽W, 通道数C的一个特征图,乘法系数共有H+W+C个,因此总体上guide parameter的数量是较少的。
当用户对一个分割结果添加交互式反馈时,网络的参数并不更新, 而只是更新guide paramerer 的值来得到新的分割结果。那么如何更新guide parameter呢?
文章中提出了两个方法。
- 一个方法是,该分割系统主动问用户某一个区域是否为天空,用户说是或者不是。根据用户的回答把该区域设置为相应的类别,再通过反向传播,求得guide parameter的局部最优值。
- 另一个方法是,用户直接给出文字反馈,例如“天空在该图中不可见”, 通过一个RNN将文字信息转换为embedding,然后线性映射到α、β、γ这几个guide parameter。在训练的时候我们也需要模拟用户输入,以便在测试的时候网络能处理用户给的文字信息。
模拟用户输入的过程如上图所示,将一个初始分割结果与标准比较,可以发现分割错误的区域,再根据这些错误的分割部位生成文字信息作为模拟的用户输入。
该文章在Pascal VOC 2012 数据集上,使用第一种交互,通过系统问用户20个问题,使分割mIOU从62.6%提高到了81.0%。第二种交互方式的实验中,使用的是COCO-stuff数据集,通过交互式修正,分割mIoU从30.5%提高到了36.5%,而DeepLab在该数据集上取得的mIoU为30.8%。
5, PolygonRNN
PolygonRNN是针对二维图像中物体边缘的标注而提出的方法,其流程如下图所示,用户提供一个感兴趣的物体的边界框,该方法通过RNN来预测这个边界框中物体边缘上的一系列顶点,这些顶点所组成的多边形区域作为物体的分割结果。
这些顶点是按照一定顺序预测的,比如顺时针的顺序。假设有T个顶点,先使用一个CNN预测第一个顶点,之后的第t个顶点通过RNN结合第一个顶点和第t-1及第t-2个顶点还有image crop预测的, RNN模型如下图所示(以VGG网络作为特征提取网络):
顶点的预测是作为一个分类任务实现的, 该文章把图像划分为28x28的格子,然后对每个格子属于还是不属于顶点进行分类。在测试图像中,用户可以对第t个顶点的预测结果进行修正,后续的顶点随之重新进行预测,从而得到更新的分割结果。
随着用户编辑的顶点数量的增加,分割结果的精度也变得更好。相比于用户完全手工绘制物体的顶点进行标注,该方法的效率提高了5倍左右。由于顶点图像的分辨率较低(28x28),该方法的分割精度有一定局限性。