强化学习在图像分割上的新应用:协同分割

A Novel Image Co-Segmentation Algorithm with Deep Reinforcement Learning

单位:北京理工大学计算机学院北京智能信息技术实验室

作者:Xin Duan, Xiabi Liu, Xiaopeng Gong, Mengqiao Han

论文链接:https://arxiv.org/ftp/arxiv/papers/2204/2204.05951.pdf

1.Abstract

提出了一种基于深度强化学习的图像自动分割算法,现有分割的方法都是基于深度学习的方法,所得到的图像边缘是粗糙的,为了获得更精确的图像分割边缘,我们使用强化学习去解决这个问题,实现更精细的分割。这是首次将深度强化学习应用在图像协同分割上,我们将其定义为马尔可夫决策过程,并使用 Asynchronous advantage actor-critic(A3C)算法去训练网络。这个 RL 协同分割网络是利用一组相关图像来分割出共同和显著的目标,为了实现自动分割,我们的方法取消了用户提示(hints)。我们提出的 Siamese RL co-segmentation 网络 是为了获取协同分割图像之间的 co-attention。我们同时也改进了自注意力机制使其更适应 RL 算法去获得长距离感受域,增大感受域。

2.Method

利用深度学习的方法分割往往在边缘都是比较粗的轮廓,为了解决这个问题,我们使用深度强化学习方法来优化边缘粗糙分割问题。

该方法通过迭代的优化初始的粗糙分割概率图,来得到更准确的分割结果。初始的概率分割图可以通过任何方法得到。本文使用 Lee C, Jang WD, Sim JY, Kim CS (2015) Multiple random walkers and their application to image中的方法。在每个迭代步骤中,模型将上一次迭代输出的分割概率图和和原始图像连接,将他们输入到 Siamese network 中获得联合特征图。 Siamese network 根据联合特征图输出 actions 去调整分割概率图的每一个像素点的概率。actions 代表不同调整的概率值,如 { ± 0.05 , ± 0.1 , ± 0.2 , ± 0.5 } \{\pm0.05, \pm0.1,\pm 0.2,\pm0.5\} {±0.05,±0.1,±0.2,±0.5}

利用强化学习网络的作用调整每个像素位置的像素值以达到预期的图像处理效果的方法是由 Furuta (Furuta R, Inoue N, Yamasaki T. Fully convolutional network with multi-step reinforcement learning for image processing[C]//Proceedings of the AAAI conference on artificial intelligence. 2019, 33(01): 3598-3605. ) 等人首先提出的,并用于图像处理领域,如图像去噪.

在本文的方法中,首先提取初始分割图和原始图像的特征,然后根据联合特征映射来输入到 Deep reinforcement learning Siamese network 中获得概率调整的 action。为了获得一对图像的相关性,我们使用 correlation block 去计算他们的 co-attention,这个为 RL 方法提供了更多的相关信息。 两个图像将受到两个相关的图像环境影响,这个可以被看作是 A3C 算法。(因为 A3C 是异步的 A2C 算法,而在该模型中可以将其看作是异步的)。在本文的算法中,删去了在 RL 算法经常需要用户交互的步骤,它是 auto 的算法。不过为了弥补缺失的用户交互的信息,我们选择使用自注意力模块,并对其进行改进,使其更适合强化学习方法,获取更多的图像信息。将自注意力应用到分割的概率图中是使其对图像的目标区域进行聚焦,以便获得准确的动作和更精细的分割。

2.1 Correlated Reinforcement learning algorithm for co-segmentation

在这里插入图片描述

传统的 A3C 算法是针对相同环境下的对象的,agent 的action、state 和 reward 只受当前状态影响,对于 co-segmentation 问题,我们利用 A3C 算法同时处理两幅相关图像中的目标,并将每幅分割概率图看作一个 RL 环境。由于图像的相关性,相关图像环境的相关特征会影响两个分割概率图中主体的 action、state 和 reward 。因此我们使用的是相关的 A3C 强化学习算法。

为了获得一对图像之间的相关性,我们需要计算他们之间的 co-attention,co-attention 是指我们在一幅图像的编码特征中获得的共同注意力,用来指导另一幅图像中的注意力。

为了获得两对分割概率图和原始图像结合的特征图,我们使用 Siamese encoder 将它们映射到相同的特征空间。对于策略网络和价值网络,我们也采用了 Siamese structure,其中两个策略网络共享权重,两个价值网络共享权重。论文中利用 resnet50 提取原始图像和分割概率图的拼接图的深层特征,分别得到二者的联合特征图。然后使用 correlation block 计算 co-attention。

我们使用分割概率图作为强化学习算法中的状态 state,策略网络根据原始图像和分割概率图的联合特征映射来生成动作,这些动作 action 通过微调概率图的每个像素点的概率来生成新的状态。再将新的状态输入到下一次迭代步骤中。

具体的,对于一对图像 I 1 , I 2 I_1,I_2 I1,I2,首先,他们与他们各自的分割概率图连接,同时概率图也是强化学习的状态 s 1 , s 2 s_1, s_2 s1,s2。我们用 correlation block 去获得他们的一个 co-attention map。 E 1 , E 2 E_1, E_2 E1,E2 各自代表了两个图像的联结特征图( E i = I i + s i , i = 1 , 2 , ′ + ′ E_i=I_i+s_i, i=1, 2, '+' Ei=Ii+si,i=1,2,+代表连接操作)。我们用 Y 1 , Y 2 Y_1, Y_2 Y1,Y2 来分别代表 E 1 E_1 E1 E 2 E_2 E2 的 co-attention 的形式。并且 c 1 , c 2 c_1, c_2 c1,c2 是经过 co-attention 的相关图。步骤可以具体的用公式表示如下:

c 1 = E 1 ⊙ Y 2 c_1=E_1\odot Y_2 c1=E1Y2

c 2 = E 2 ⊙ Y 1 c_2=E_2\odot Y_1 c2=E2Y1

我们使用 c 1 , c 2 c_1, c_2 c1,c2 去连接 E 1 , E 2 E_1, E_2 E1,E2 的信息,去获得新的联结特征图 F 1 , F 2 F_1,F_2 F1,F2 。策略网络就根据 F 1 , F 2 F_1, F_2 F1,F2 输出动作 a 1 , a 2 a_1, a_2 a1,a2 , 然后执行动作获得新的状态 s 1 ′ , s 2 ′ s_1',s_2' s1,s2

因此,我们基于 A3C 的协同分割模型中,agent 对图像 I 1 , I 2 I_1, I_2 I1,I2 的策略函数和值函数分别为:

π ( a 1 ∣ s 1 t , s 2 t ; θ 1 ) , V ( s 1 t , s 2 t ; θ 1 v ) \pi(a_1|s_1^t,s_2^t;\theta_1),V(s_1^t, s_2^t;\theta_{1v}) π(a1s1t,s2t;θ1),V(s1t,s2t;θ1v)

π ( a 2 ∣ s 1 t , s 2 t ; θ 2 ) , V ( s 1 t , s 2 t ; θ 2 v ) \pi(a_2|s_1^t,s_2^t;\theta_2), V(s_1^t, s_2^t;\theta_{2v}) π(a2s1t,s2t;θ2),V(s1t,s2t;θ2v)

算法流程

2.2 Deep Reinforcement Learning Co-Segmentation Siamese Network Structure

在这里插入图片描述

上图是深度强化学习网络的结构图,网络中包括 correlation calculation 部分和 self-attention calculation 部分。 correlation calculation 部分的输入是分割概率图和原始图像的联结,self-attention calculation 部分的输入是原始图像。correlation calculation 部分和 self-attention calculation 部分共享 Siamese 的编码网络,即 correlation calculation 部分和 self-attention calculation 部分的输入都要一次使用 Siamese network 进行特征提取。即每个编码分支获得两个特征映射输出,一个输出的特征是分割概率图和原始图像的联结特征,一个输出特征是原始图像的特征。将这个输出特征分别输入到 correlation calculation 部分和 self-attention calculation 部分,得到两个新的特征,再将这两个特征做一个联结,策略网络和价值函数网络就根据这个联结特征输出动作和值。

2.3 Self-attention mechanism

在这里插入图片描述

受自注意力机制的启发,该网络能够捕捉到原始图像的长距离的相关性,并将其应用到分割图概率图中,在分割概率图中使其特征映射更加注意显著目标,得到更合适的动作和值来调整分割概率。自注意力机制计算每个像素和原始图像上所有其他像素之间的相应,以表示像素之间的相似性。self-attention机制将注意力集中在与自己相似的像素上,忽略低相似度的像素。同时,将其看作 CNN,它也是扩大感受野的 CNN。关于 self-attention 在上图作出了说明。

具体的说,给定原始图像的特征图 E E E 和其联合特征图 P P P,我们计算 E E E 的 self-attention ,并且乘以联合特征图 P P P 。最后获得新的联合特征图 P ′ P' P,计算步骤如下:

f ( E ) = w 1 ( e n ) T w 2 ( e m ) f(E)=w_1(e_n)^Tw_2(e_m) f(E)=w1(en)Tw2(em)

g ( E ) = w 3 ( p ( n ) ) g(E)=w_3(p(n)) g(E)=w3(p(n))

P ′ = w 4 ( σ ( f ( E ) ) g ( E ) ) + P P'=w_4(\sigma(f(E))g(E))+P P=w4(σ(f(E))g(E))+P

其中 w 1 , w 2 , w 3 , w 4 w_1, w_2, w_3, w_4 w1,w2,w3,w4 分别代表 1*1 卷积核的参数。 σ ( ⋅ ) \sigma(\cdot) σ() 代表激活函数,本文是 s o f t m a x softmax softmax e n e_n en 代表 E E E 的计算输出响应位置, e m e_m em 代表 E E E 中所有可能的位置。 f f f 代表获得的 e n e_n en e m e_m em 的相关性, g ( E ) g(E) g(E) 计算特征图 P P P 上有代表性的位置。 P ′ P' P 是我们最后得到的特征图,是要输入到策略和值函数网络中的。

2.4 Fine-tune segmentation probabilities with reinforcement learning

我们仍把每个像素点看作一个智能体, i i i 代表第 i i i 个像素点,其状态 s i s_i si 和动作 a i a_i ai 已经给出介绍,该强化学习算法在时刻 t t t 采用的奖励是 r i t = ( y i − p i t − 1 ) 2 − ( y i − p i t ) 2 r_i^{t}=(y_i-p_{i}^{t-1})^2-(y_i-p_{i}^{t})^2 rit=(yipit1)2(yipit)2,其中 p i t p_{i}^t pit 是概率值, y i y_i yi 是 ground truth,为1或0。

  • 33
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
【资源说明】 基于强化学习的自动化裁剪CIFAR-10分类任务python源码+项目部署说明(提升模型精度+减少计算量).zip 1、该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能。 目前的强化学习工作很多集中在利用外部环境的反馈训练agent,忽略了模型本身就是一种能够获得反馈的环境。本项目的核心思想是:将模型视为环境,构建附生于模型的 agent ,以辅助模型进一步拟合真实样本。 大多数领域的模型都可以采用这种方式来优化,如cv\多模态等。它至少能够以三种方式工作:1.过滤噪音信息,如删减语音或图像特征;2.进一步丰富表征信息,如高效引用外部信息;3.实现记忆、联想、推理等复杂工作,如构建重要信息的记忆池。 这里推出一款早期完成的裁剪机制transformer版本(后面称为APT),实现了一种更高效的训练模式,能够优化模型指标;此外,可以使用动态图丢弃大量的不必要单元,在指标基本不变的情况下,大幅降低计算量。 该项目希望为大家抛砖引玉。 为什么要做自动剪枝 在具体任务中,往往存在大量毫无价值的信息和过渡性信息,有时不但对任务无益,还会成为噪声。比如:表述会存在冗余/无关片段以及过渡性信息;动物图像识别中,有时候背景无益于辨别动物主体,即使是动物部分图像,也仅有小部分是关键的特征。 以transformer为例,在进行self-attention计算时其复杂度与序列长度平方成正比。长度为10,复杂度为100;长度为9,复杂度为81。 利用强化学习构建agent,能够精准且自动化地动态裁剪已丧失意义部分,甚至能将长序列信息压缩到50-100之内(实验中有从500+的序列长度压缩到个位数的示例),以大幅减少计算量。 ***实验中,发现与裁剪agent联合训练的模型比普通方法训练的模型效果要更好。*** 使用说明 环境 ``` torch numpy tqdm tensorboard ml-collections ``` 下载经过预先​​训练的模型(来自Google官方) 本项目使用的型号:ViT-B_16(您也可以选择其它型号进行测试) ``` imagenet21k pre-train wget https://storage.googleapis.com/vit_models/imagenet21k/ViT-B_16.npz ``` 训练与推理 下载好预训练模型就可以跑了。 ``` 训练 python3 train.py --name cifar10-100_500 --dataset cifar100 --model_type ViT-B_16 --pretrained_dir checkpoint/ViT-B_16.npz 推理 python3 infer.py --name cifar10-100_500 --dataset cifar100 --model_type ViT-B_16 --pretrained_dir checkpoint/ViT-B_16.npz ``` CIFAR-10和CIFAR-100会自动下载和培训。如果使用其他数据集,您需要自定义data_utils.py。 在裁剪模式的推理过程中,预期您将看到如下格式的输出 关于裁剪器的模型结构设计,本模型中认为如何衡量一个信息单元是否对模型有意义,建立于其自身的信息及它与任务的相关性上。 因此以信息单元本身及它与CLS单元的交互作为agent的输入信息。
强化学习在图像分类中的应用相对较少,因为强化学习更多地用于探索与环境交互、学习最优决策策略的问题。然而,如果你想使用强化学习来实现图像分类,可以通过以下步骤进行: 1. 定义状态空间:将图像作为状态,并将其表示为强化学习算法可以处理的形式。可以使用特征提取技术(如卷积神经网络)来提取图像的特征。 2. 定义动作空间:在图像分类中,动作空间通常是一个离散的动作集合,代表不同的类别。 3. 定义奖励函数:奖励函数用于评估算法在不同状态下采取不同动作的好坏。在图像分类中,可以使用预定义的准确率或交叉熵损失作为奖励信号。 4. 定义马尔可夫决策过程(Markov Decision Process,MDP):将图像分类问题建模为一个马尔可夫决策过程,其中状态、动作和奖励函数定义如上所述。 5. 选择强化学习算法:根据实际情况选择适当的强化学习算法,如Q-learning、Deep Q-Networks(DQN)或Proximal Policy Optimization(PPO)等。 6. 训练模型:使用强化学习算法进行模型训练,通过与环境交互,优化策略以提高图像分类的准确性。 7. 测试与评估:使用训练好的模型对的图像进行分类,并对分类结果进行评估。 需要注意的是,强化学习在图像分类中面临的挑战包括状态空间的定义、奖励函数的设计和训练时间的消耗等。因此,在实际应用中,传统的监督学习方法(如卷积神经网络)往往更加常用和有效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值