- 这是2023年PR这个期刊的论文
- 主要思想是,利用一系列预定义好的操作序列来进行增强,然后利用强化学习来学习增强序列的预测。所以训练阶段有两个交替进行的阶段,一个是蒙特卡洛树搜索阶段,第二个是训练深度强化学习的阶段。而测试的时候则可以有两种方式,一种是用蒙特卡洛树搜索的方式去找到一个好的序列,但这太慢了;另一种是利用训练好的强化学习直接预测,这个快但找到的序列没有稍微比蒙特卡洛树搜给出的结果差一点(其实看你的强化学习模型训练得如何,如果训练得特别好可能就一模一样了吧)。
- 这样的好处在于,一是使得模型是完全可解释的而非一个黑盒模型;二是模型同时预测了一个从暗图到增强结果的路径,也就因此同时获得了其逆过程,即我们同时探究到了退化过程。
- 这些可选的操作是由expert在平时使用的软件中挑选出来的一些操作。
- 有监督训练,需要使得操作序列增强的结果和expert编辑的结果一致
- 网络的预测是两个部分,一个是对最佳策略概率的估计 π ( x , a ) \pi(x,a) π(x,a),一个是对平均奖励的估计 v ( x ) v(x) v(x)
- MTCS的一次迭代分为四个阶段:selection、expansion、evaluation和backup(计算奖励)阶段。其中select阶段的选择策略是置信度上界的最大化。置信度上界的计算公式如下:
- 公式中, x x x是迄今为止的路径,也可以认为是当前的增强结果, r r r是之前的搜索中通过 x x x的迭代得到的奖励的平均值,所以通过 x x x的奖励期望本来应该就是第一项,也就是之前通过 x x x的奖励的平均值,但第二项是为了进一步探索, c c c是平衡冒险和奖励的权重。 π \pi π是网络的预测值,表示父节点为 x p x_p xp时,采取 a a a策略得到最佳奖励的概率, N N N表示在之前的搜索中经过某个节点的次数,这里的分数的作用是,当 x x x在之前的搜索中的探索次数比较少时,则增加这一比重。
- 从根节点(某一张原始的黑暗图像)开始,搜索树开始搜索和生长,直到两种情况之一发生时停止,一是到达最大深度,此时搜索失败,最终奖励值为0;二是选择stop策略到达stop节点,最终奖励值则按以下公式计算:
- 对于不同的图像,表示为不同的根节点,因此对于每张图像都是重新开始搜索,重新从根节点开始生成树;而对同一张图像会搜索多次,搜索的时候,根节点的策略先是按策略搜索,但搜索到一定次数时,会设为如下值以鼓励网络沿着某条越来越确定的路径进行搜索:
- 当蒙特卡洛搜索树完成数次搜索后,相当于为网络产生了一个训练集,可以在这个训练集上训练网络。对于网络预测的
π
\pi
π和
v
v
v,损失函数如下:
- 第一项是使得网络预测正确的期望奖励,第二项是使得网络预测正确的最佳策略。通过多次生成和训练,可以使得网络能够预测最佳的操作序列。
- 网络用的是resnet-18,把最后一层改成两个head,一个softmax预测最佳策略概率分布 π \pi π,一个预测期望奖励 v v v
- 可选的操作有以下几种:
-
brightness adjustment:像素值增加一个固定亮度delta:
-
contrast adjustment:在均值附近乘以一个beta以调整对比度,其中beta要么是2要么是0.8:
-
gamma correction:gamma校正,要么是0.6要么是1.1:
-
saturation adjustment:先转到HSV彩色空间如何对饱和度分量S乘以一个0.5或者2以调整饱和度,然后转回RGB彩色空间
-
hue rotation:转到HSV彩色空间然后把H分量旋转-18度或者+18度,然后转回去
-
以上的五个操作是通用的操作,然后在LOL数据集上还应用了以下的几个操作:
-
gray world:类似白平衡操作,把各个通道的都乘以各自的一个factor使得各个通道的均值归一化到图像的均值
-
max RGB: 和上面差不多,但是激进点,直接各个通道除以各个通道的最大值使得各个通道的最大值为1,即满足最亮的点为白色
-
中值滤波,3x3
-
高斯滤波
-
锐化滤波:
-
边缘增强滤波:
-
细节滤波:
-
平滑滤波:
-
最后是特殊的stop操作,即结束操作序列
-
- 每次generation选择100张图片,每张进行1w次MTCS迭代来对每张照片生成树。树的最大深度设为10。每张照片生成的树中会采样10个节点,因此genenration后的optimization阶段对网络训练时有1k个训练样本。每次optimization阶段用ADAMW优化器进行160次迭代。
- 就结果而已,这个方法从原理上就避免了引入伪影,虽然慢但是总体上视觉效果和指标效果都还不错。