鱼羊萧箫发自凹非寺
量子位报道公众号 QbitAI
现在,AI 对光影的理解越来越深入了。
不仅能自动给二次元萌妹的线稿上色,绘制出合理的光影变化。
反向操作,提取图片中的纹理和光影也不在话下。
大师级作品、或是摄影海报,只需要拿过来「扫描」一下,就能分解出纯色层、阴影层和反射层。
这下,想要调整图片的纹理和光影,再也不用苦恼没有 psd、图层被合并了。
这只全新 AI 的一作,还是那位打造了火遍二次元圈的自动线稿上色 AI Style2Paints 的 Lvmin Zhang 小哥。
论文已经中了 ECCV 2020 Spotlight。
抠掉多余的像素
分解图像最需要解决的问题,就是图像平滑,它能让图像变得更模糊,但与此同时,调节光影、纹理也变得更容易。
而图像平滑的核心问题,可以被理解成估计图像中的像素是否被需要。
图像平滑
换种说法,图像平滑要解决的最大问题,是在图像去噪和外观保留这两者之间,找一个平衡点。
也就是说,与锐化相反,平滑既要最大程度上保留图像的本质,又希望能消除图像的噪音。
下图就是经过平滑处理的一张图像。可以看见,即使平滑处理后的图像变得模糊不清,我们依稀能辨认出这是一片海。
那么,平滑图像究竟有什么用?
看,调节色温方便多了,让图中的天和海从蓝变绿再变紫,看起来都不是问题。
此外,图像平滑也是图像处理中纹理去除、材料处理、重新着色、层提取等操作的基本处理步骤。
那么,如何让一个 AI 实现图像平滑呢?
研究者发现,对图像中物体的部分外观进行「擦除」(手动消除部分噪声),似乎能给图像平滑带来更好的效果。
如果你是一个 PS 大神,那么,选择图像中该擦除的部位肯定不是难事。
然而,AI 它并不会 PS…这就需要人为制定一些「规则」,告诉 AI,哪些像素应该被擦除。
这里又回到了开头提到的,图像平滑的本质:在图像去噪和外观保留二者之间,找寻一个平衡点。
说白了,就是估计图像中哪些像素是需要的,哪些是可以被「擦除」的。
作者将这一步骤称之为擦除外观保留(Erasing Appearance Preservation ,EAP)。
这里就涉及到一个像素选择的算法,作者制作了一个0-1 背包,将它解决了。
0-1 背包问题
这个问题在像素中的场景描述如下:如何选择这个位置的像素值,使图像平滑效果最好?
把这个位置比作一个背包(knapsack),像素值就是填入背包中的选项。而最好的像素值,就是能刚好填满背包的最优解。
如下图,用最快的速度,计算哪些部分的像素是必需保留的,能最大程度上还原图像特征。
但如果让计算机用穷举法列举出算法,效率就会很慢。
0-1 背包问题,旨在用最少的步骤,列出每一步的最优解,并不断与新结果进行对比。
这个算法的核心思想在于,子问题的最优解,同样可以用于解决母问题。
这样,既能保留图像的纹理结构,又能让图像最大程度上模糊化。
归根结底,0-1 背包的思想在于,一个像素值的最优解,同样可以被用于解决像素块最优解的问题。
这个算法,比暴力堆叠算力,穷举像素最优解的方法快多了。
如果用伪代码简单呈现的话,算法的步骤是这样的:
这一算法基于 Matlab 实现。作者表示,由于 Python 的稀疏优化比较捉急,目前没能把 EAP 迁移到 Python 中。
与人类水平相当
研究人员将 L0 和 L1 两种平滑方式的结果,与专业人士的处理结果进行了比较。
结果显示,在擦除位置的选择上,AI 的操作与专家的选择相似,并且平滑结果与专家的处理结果表现相当。
而消融实验的结果显示:
(1)在原来的 L1 平滑中使用极端 lambda (10.0),不使用 EAP,这会导致图像结构被破坏。
(2)重复原 L1 平滑多次(10 次,与 EAP 配置相同),不使用 EAP,这会导致低饱和度和低对比度伪影出现。
(3)在 EAP 方案中,不使用背包权重wp,而是给背包的值设定一个固定的阈值(0.1),所有高于这个阈值的像素都会被视作擦除位置。这会导致图像被压缩成少数几种颜色。
(4)在 EAP 方案中,用常数(1.0)代替所有背包权重wp。这将导致所有不想要的图案仍在最终结果中被保留。
(5)在 EAP 方案中,不使用 knapsak 值vp,而是给背包的权重设定一个固定的阈值(0.1),所有低于这个阈值的像素都会被视作擦除位置。这会导致图像中所有明显的构件都被消除。
(6)在 EAP 方案中,用常数(1.0)代替所有背包值vp。这使得突出的构件得以保留,但原有的结构会被破坏。
(7)本文中提出的解决方案,能够在不造成其他伪影的情况下,使图像充分平滑。
另外,使用 PSNR(峰值信噪比)指标,对几种不同的平滑方法进行对比。结果表明,基于 EAP 的方法 PSNR 值明显高于其他方法,也就是说,实现了更彻底的纹理分解。
应用场景
看到这样的 AI 能力,你想到要在哪些场景中应用它了吗?
作者也举了几个例子。
比如,轻松实现纹理替换。
比如,给图片调光影、调颜色。
就有网友表示:这不就是我一直想要的那种 AI 嘛!
也有网友联想到了火爆二次元圈的那只上色 AI Style2Paints。
鹅妹子嘤,所以这项技术会用到 Style2Paints V5 中吗?
目前,这项研究的代码已经开源,如果感兴趣,就戳进文末链接试一试吧~
传送门
GitHub 地址:
https://github.com/lllyasviel/AppearanceEraser
项目地址:
https://lllyasviel.github.io/AppearanceEraser/