Casanova A, Pinheiro P O, Rostamzadeh N, et al. Reinforced active learning for image segmentation[J]. arXiv preprint arXiv:2002.06583, 2020.
与以往的需要人工制定的启发式的采样策略不同,这个文章提出了采用强化学习(DQN)的方法进行主动学习策略的选择,通过迭代来优化自身采样策略。
这里样本的选择是基于矩形区域,而不是整个图像。
提出的端到端的方法,通过最大化每个类的iou来更新网络,这也解决了类不平衡的问题。
摘要
基于学习的语义分割方法有两个固有的挑战。首先,获取像素标签既昂贵又耗时。其次,真实的分割数据集是高度不平衡的:一些类别比其他类别丰富得多,使性能偏向于最具代表性的类别。本文中,我们感兴趣的是将人工标记工作集中在更大的数据池的一个小子集上,最大限度地减少这种工作,同时在保留集上最大限度地提高分割模型的性能。提出了一种新的基于深度强化学习(RL)的语义分割主动学习策略。代理学习一种策略,从未标记的数据池中选择要标记的有信息的小的图像区域构成的子集(相对于整个图像)。区域选择决策是由训练的分割模型得到的预测值和不确定性所确定。我们的方法提出了一种新的深度Q-network (DQN)公式的改进,用于主动学习,使其适应语义分割问题的大规模性质。本文在CamVid中测试概念的证明,并在大型数据集Cityscapes中提供结果。
在Cityscapes中,我们的基于深度RL区域的DQN方法需要比我们最具竞争力的基线大约少30%的额外标记数据,就能达到相同的性能。此外,我们发现,与基线相比,我们的方法要求对代表不足的类别添加更多的标签,从而提高它们的性能,并有助于减轻类别的不平衡。
介绍
主动学习方法大致可以分为两类:(i)结合不同人工设计的AL策略的方法;(ii)数据驱动的AL方法,利用模型本身的信息来学习哪些样本对训练一个模型最有帮助。
当前使用强化学习的AL技术专注于每步标记一个样品,直到达到预算。这对于语义分割是非常低效的,因为每一步都涉及更新分割网络和计算奖励。本文中,我们提出了一种端到端学习方法,通过直接最大化我们所关心的性能指标IoU,通过强化学习来学习一种主动学习策略用于语义分割。我们的目标是从数据中学习一种策略,该策略在一组未标记图像上找到信息量最大的区域来进行标注。选择区域,而不是整个图像,允许算法聚焦于图像最相关的部分。
针对语义分割数据集中类不平衡的问题,我们提出的方法可以从源头上缓解问题,就是在数据注释本身。因为我们的方法最大化了每个类的MIoU,所以与基线相比,它间接地学习了对类表示不足的区域要求更多的标签。我们提出并探索了一种批处理模式的主动学习方法,该方法使用一个适应的DQN在每个步骤中有效地选择批次区域进行标签。
目前主动学习的方法都是依赖于手工制作的启发式学习(rely on hand-crafted active learning heuristics.)。然而,从数据中学习标记策略可以让查询代理根据数据特征和类不平衡(可能在数据集之间有所不同)要求标记数据。
主要贡献如下:
我们学习了一个基于强化学习的获取函数,用于基于区域的主动学习进行分割;
我们使用批处理模式DQN来制定我们的主动学习框架,它在每次主动学习迭代中并行地标记多个区域(对于大规模数据集来说,这是一种更有效的策略,兼容标准的迷你批处理梯度下降)。
这里基于batch的,和基于pool的好像还不太一样。
本文在CamVid上证明了理论,并在Ctiyscapes数据集上得到结果,性能优于目前的sota BALD。
相关工作
问题的大规模性质要求我们对行动、状态和奖励使用非常不同的定义。此外,我们需要调整DQN公式,使问题在计算上可行。
据我们所知,我们的工作是第一个将数据驱动的基于RL的方法应用于语义分割的主动学习问题。
方法
我们感兴趣的是从一个大的未标记集中选择少量的区域(从原始数据集中的图像中裁剪),以最大化分割网络f的性能,由θ参数化。这个过程是迭代进行的,直到达到给定的预算B用于标签样本耗尽。在每次迭代t时,由φ参数化的查询网络π从一个大型的未标记的数据集Ut中选择要由oracle标记的区域。这些样本被添加到标记的数据集Lt中,用于训练分割网络f。性能是用标准的语义分割度量,交叉/联合(IoU)来衡量的。
我们将AL问题置于马尔可夫决策过程(MDP)公式中。我们将查询网络π建模为一个强化学习代理,具体来说就是一个深度q网络。这种数据驱动的方法允许模型仅根据先前的人工智能经验学习选择策略。我们的方法与其他方法的不同之处在于,我们处理的任务、状态、行动和奖励的定义,以及我们用来寻找最优策略的强化学习算法。
AL和RL结合用于分割
在本文设置中,使用四种不同的数据分割。
这是整个的流程图。它把未标记数据集先均分成了K个池,K也是每次的采样个数,这样每次的采样过程就可以分成多个子进程并行进行,文中解释可以减少计算量;第一步是给当前采样网络确定一个状态值st,然后再确定一个action pool,就是可以采取的下一步动作集合,第三步就是选取一个动作at,然后选择区域标注,然后训练,这个训练后的结果将作为一个reward反馈给采样网络来进行网络的修正。