本文介绍发表在 ICCV 2023 上的图像上色论文 "DDColor: Towards Photo-Realistic Image Colorization via Dual Decoders"
论文 & 代码
论文链接:https://arxiv.org/abs/2212.11613
ModelScope应用:https://www.modelscope.cn/models/damo/cv_ddcolor_image-colorization/summary
开源代码:https://github.com/piddnad/DDColor
背景介绍
图像上色(Image Colorization)是一项经典的计算机视觉任务,在许多现实世界的应用中具有巨大的潜力,例如老照片修复、电影重制和艺术创作等。给定一个灰度图像,图像上色旨在恢复其缺失的两个颜色通道,这个问题具有多模态不确定性,因为一个物体可能有多个似是而非的颜色。因此,图像上色一直是一个具有挑战性的问题。
图 1 上色方法视觉比较
随着深度学习的兴起,自动着色引起了很多关注,其目标是根据复杂的图像语义(形状,纹理和上下文)自动生成合适的颜色。一些早期的方法例如 CIC [1](ECCV 2016)、InstColor [2](CVPR 2020)、DeOldify [3] 等试图使用卷积神经网络(CNN)来预测每像素的颜色分布,但由于缺乏对图像语义学的全面理解,经常会产生不正确或不饱和的着色结果(图 1 CNN-based)。为了结合语义信息,GCP [4](ICCV 2021)、BigColor [5](ECCV 2022)等方法利用预训练的对抗生成网络(GAN)的丰富表示作为上色的生成先验,然而,由于表示空间有限,偶尔会生成令人不快的伪影(图 1 GAN Priors)。
近年来,Transformer 在自然语言处理(NLP)方面取得巨大成功,并被扩展到许多计算机视觉任务中。近期,一些方法也在图像上色中引入了 Transformer。虽然取得了有希望的结果,但这些方法要么训练几个独立的子网,导致错误累积(图 1 ColTran [6](ICLR 2021));要么只对单尺度图像特征图执行颜色注意操作,在处理复杂的图像上下文时导致可见的颜色溢出(图1 CT2 [7](ECCV 2022) 和 ColorFormer [8](ECCV 2022))。此外,这些方法往往依赖于预先制作的数据集级经验分布先验,例如 CT2 中的颜色掩码和 ColorFormer 中的语义-颜色映射,增加了手工构建成本。
为了解决这些问题,本文提出了一种叫做 DDColor 的新上色方法,旨在实现语义合理和视觉生动的着色。DDColor 利用编码器-解码器(Encoder-Decoder)结构,其中编码器提取图像特征,解码器恢复空间分辨率。与以前依靠额外网络或手动计算先验来优化颜色似然的方法不同,该方法提出了一个基于 Query Transformer 的颜色解码器(Color decoder),以端到端的方式学习语义感知的颜色查询。此外,通过使用多尺度图像特征指导学习颜色查询,减轻了颜色出血并改善了复杂上下文和小对象的着色。论文还提出了一种新的色彩损失来提高生成结果的颜色丰富性。最后,DDColor 在包括 ImageNet、COCO-Stufff 等多个数据集上实现了 SOTA 结果。
方法和结果
方法总览
DDColor 的整体结构如下图所示:
图 2 DDColor 网络结构
给定一个单通道灰度输入图像,网络采用编码器-解码器框架预测两个缺失的颜色通道。
对于编码器,使用一个现成的图像骨干网络(Backbone)从灰度图像中提取高级语义信息。骨干网络输出 4 个不同尺度的中间特征图,前三个特征图通过快捷连接馈送到像素解码器,最后一个作为像素解码器的输入。
解码器部分由一个像素解码器(Pixel decoder)和一个颜色解码器(Color decoder)组成。像素解码器使用一系列堆叠的上采样层来恢复图像特征的空间分辨率。颜色解码器通过利用不同尺度的多个图像特征来逐步细化颜色查询。最后,两个解码器产生的图像和颜色特征被融合以生成颜色输出。
颜色解码器
现有的基于 Transformer 的上色方法大多依赖预先计算的先验,构建过程繁琐,且限制了各种场景中的适用性。为了减少对手动设计先验的依赖,DDColor 提出了一种新颖的基于查询的颜色解码器。颜色解码器由多个块组成,每个块接收视觉特征和颜色查询作为输入。
颜色解码器块(Color decoder block, CDB)
颜色解码器块是基于 Transformer 解码器设计的,如图2(b)所示。为了学习一组基于视觉语义信息的自适应颜色查询,创建了可学习的颜色嵌入记忆来存储颜色表示的序列:
这些颜色嵌入在训练阶段初始化为零,并在第一个CDB中用作颜色查询。首先通过交叉注意力层建立语义表示和颜色嵌入之间的相关性:
其中其中l为层索引,Z_l∈R^(K×C)是指第l层的K个C维颜色嵌入。Ql=f_Q(Z_(l−1))∈R^(K×C)。K_l、V_l∈R^(H_l×W_l×C)分别是经过f_K(·)和f_V(·)变换的图像特征,H_l和W_l是图像特征的空间分辨率。f_Q、f_K和f_V是线性变换。
通过上述交叉注意力操作,图像特征丰富了颜色嵌入表示。然后利用标准变压器层来转换颜色嵌入,如下所示:
其中MSA(·)表示多头自注意,MLP(·)表示前馈网络,LN(·)表示层归一化操作。
颜色解码器通过使用多个堆叠的快,对视觉特征进行颜色查询,进而学习到学习语义感知的颜色表示。
多尺度视觉特征
现有基于 TransFormer 的上色方法通常在单尺度图像特征图上执行颜色注意力操作,未能充分捕获低级语义线索,因此在处理复杂上下文时可能导致颜色出血。相比之下,多尺度特征已在许多计算机视觉任务中得到广泛探索,如目标检测和实例分割。类似的,这些特征也可以帮助提高上色的性能。
为了平衡计算复杂度和表示能力,选择了三种不同尺度的图像特征。具体来说,颜色解码器使用像素解码器生成的下采样率为1/16、1/8和1/4的中间视觉特征,因此可表示为:
在颜色解码器中使用多尺度特征可以对颜色查询与视觉嵌入之间的关系进行建模,使得颜色嵌入对语义信息更加敏感,进一步能够更准确地识别语义边界,减少颜色出血。
颜色损失
基于色彩分数(Colorfulness Score)提出一个色彩损失,鼓励模型生成更丰富多彩和视觉上令人愉悦的图像。
其中σ和μ分别表示颜色平面中像素云的均方差和平均值,超参直接取自色彩分数计算公式。
实验
与 SOTA 算法对比
定量比较
图 3 定量比较
在 ImageNet 数据集上,DDColor 实现了最低的 FID,表明了高质量的生成结果。特别是,当模型大小类似时,DDColor 仍然优于以前的最先进的方法。DDColor 还在没有微调的情况下实现了 COCO-Stuff 和 ADE20K 数据集上最低的 FID,证明了其泛化能力。
CF 得分(Colorfulness Score)可以反映生成图像的鲜艳程度。一些方法的 CF 更高,然而,高 CF 并不总是意味着良好的视觉质量(参见视觉比较图的第6列)。因此,ΔCF 进一步计算了生成图像和真实图像之间的 CF 差异。DDColor 在所有数据集上实现了最低的ΔCF,表明实现更自然和逼真的结果。
视觉比较
图 4 视觉比较
第一列为输入,最后一列为真实图像。需要注意的是,真实图像仅供参考,由于上色问题的多模态不确定性,评估标准不应是与真实图像的颜色相似度。
如图所示,DeOldify 倾向于产生灰色和不饱和的图像。ColTran 由于错误累积导致明显的不自然着色结果,例如蜥蜴(第1行)和蔬菜(第5行)。基于 GAN 先验的方法如 BigColor,在阴影(第 2 行和第 5 行)和车辆(第 3 行)上产生了令人不快的红色伪影。CT2 和 ColorFormer 在具有复杂图像语义学的场景中会产生不正确的着色结果(第 2 行的人),也可以观察到可见的颜色溢出效应(第 3 行的车辆、第 4 行的草莓和第 5 行的蔬菜)。
相反,本文提出的方法(Ours)为复杂场景(如第 1 行的蜥蜴和树叶或第 2 行健身房里的人)生成了语义合理和视觉上令人愉悦的着色结果,并成功地捕捉到图片中物体的细节,如车辆(第 3 行)和草莓(第 4 行)。有趣的是,它还为物体产生了多种颜色,如辣椒(第 5 行)。文章将此归因于色彩损失,这鼓励模型产生更生动、更多彩的结果。
用户研究
图 5 用户研究
与其他方法相比,提出的方法受到更广泛用户的青睐。
消融实验
图 6 消融实验表格
图 7 关键组件消融实验
使用颜色解码器可以实现更自然和语义上更合理的视觉结果,而引入色彩损失有助于提高最终结果的色彩性。
图 8 视觉特征尺度消融实验
多尺度特征帮助模型捕捉到更准确的语义边界识别特征,缓解了颜色溢出效应。
真实历史老照片结果
从上到下分别为输入黑白图片、人类专家结果、DDColor 结果
图 9 真实历史老照片结果
总结
DDColor 是一种新的端到端图像上色算法。其主要贡献在于双解码器的设计:颜色解编码器通过利用基于查询的转换器来学习语义感知的颜色查询;像素解码器产生多尺度视觉特征来优化颜色查询。DDColor 算法在性能和生成逼真和语义一致的着色的能力上都超越了以前的方法。
模型传送门
📣DDColor 算法目前已经上线 ModelScope 平台,欢迎下载体验,构建你自己的上色应用!
ModelScope:https://www.modelscope.cn/models/damo/cv_ddcolor_image-colorization/summary
Github:https://github.com/piddnad/DDColor
同时,ModelScope 上也上线了许多视觉增强算法,可以点击画质增强专题页进一步了解。
更多有趣的上色应用:
参考文献
[1] Richard Zhang, Phillip Isola, and Alexei A Efros. Colorful image colorization. In European conference on computer vision, pages 649–666. Springer, 2016.
[2] Jheng-Wei Su, Hung-Kuo Chu, and Jia-Bin Huang. Instance-aware image colorization. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 7968–7977, 2020.
[3] Jason Antic. jantic/deoldify: A deep learning based project for colorizing and restoring old images (and video!). https://github.com/jantic/DeOldify, 2019.
[4] Yanze Wu, Xintao Wang, Yu Li, Honglun Zhang, Xun Zhao, and Ying Shan. Towards vivid and diverse image colorization with generative color prior. In Proceedings of the IEEE/CVF International Conference on Computer Vision, 2021.
[5] Kim Geonung, Kang Kyoungkook, Kim Seongtae, Lee Hwayoon, Kim Sehoon, Kim Jonghyun, Baek Seung-Hwan, and Cho Sunghyun. Bigcolor: Colorization using a genera- tive color prior for natural images. In European Conference on Computer Vision (ECCV), 2022.
[6] Manoj Kumar, Dirk Weissenborn, and Nal Kalchbrenner. Colorization transformer. In International Conference on Learning Representations, 2021.
[7] Shuchen Weng, Jimeng Sun, Yu Li, Si Li, and Boxin Shi. Ct2: Colorization transformer via color tokens. In European Conference on Computer Vision (ECCV), 2022.
[8] Ji Xiaozhong, Boyuan Jiang, Luo Donghao, Tao Guangpin, Chu Wenqing, Xie Zhifeng, Wang Chengjie, and Tai Ying. Colorformer: Image colorization via color memory assisted hybrid-attention transformer. In European Conference on Computer Vision (ECCV), 2022.