当前位置:   article > 正文

【达摩院OpenVI】老片图像上色,一键开源体验_ddcolor

ddcolor

  团队模型、论文、博文、直播合集,点击此处浏览

一、背景        

        图像上色(Image Colorization)顾名思义,是指对黑白图像添加色彩,使其变成彩色图像。更具体的说,我们常见的彩色图像通常是三通道图像,而黑白图像只有一个灰度通道,因此,图像上色旨在利用单一灰度通道恢复图像的两个彩色通道。随着摄影技术的演进,彩色照片在现在已经非常普及,但仍然有大量历史黑白照片遗留。图像上色可以对这些宝贵的旧时代遗产进行修复,令老照片重获新生。
        我们使用真实历史黑白老照片作为输入,经过上色模型处理,最终可以得到观感惊艳的彩色照片!

原图来自:1945.“Abandoned boy holding a stuffed toy animal.”


二、方法 

        早期图像上色通常依赖手工或基于参考图的方法,随着深度学习的普及,越来越多工作使用卷积神经网络完成图像上色任务。
        发表在 ECCV 2016 的 CIC 模型将上色视为一个分类问题,使用一个纯卷积神经网络进行上色,从此揭开了卷积神经网络在上色领域应用的序幕。

图片来自CIC
图片来自CIC


        后来,为了提高上色结果的语义贴合度和色彩鲜艳度,有一些方法使用 UNet 或 GAN 网络完成上色。ChromaGAN 使用一个编码器-解码器网络完成图像重建,并将 GAN 损失引入上色过程。ToVivid 模型通过利用预训练 GAN 的丰富生成先验,实现生成合理和丰富多彩的结果。

图片来自ChromaGAN
图片来自Tovivid


        近两年,随着 Transformer 模型在视觉领域大放异彩,众多基于视觉 Transformer 的上色模型逐一涌现,这些模型充分利用了 Transformer 的强大建模能力和全局注意力优势,因而实现了更加惊艳的上色效果。Google 提出的 ColTran 模型使用三个独立的子网络分别实现粗上色、颜色上采样和空间上采样。ColorFormer 则创新的提出 GLH-Transformer 来更好的提取图像特征,并结合 Color Memory 辅助完成彩色解码。

图片来自ColTran
图片来自ColorFormer

        接下来,本文针对一个最近基于 Transformer 的上色模型 DDColor 进行展开介绍,带读者了解上色领域的前沿技术。DDColor 模型的整体结构如下:


可以看到,DDColor 模型包括一个图像编码器和两个解码器,分别是图像解码器和颜色解码器。图像解码器完成视觉特征的上采样过程,而颜色解码器基于一个 Transformer 进行颜色查询的解码。
具体而言,颜色解码器使用多尺度的视觉特征帮助颜色嵌入的学习,因此学习到强语义相关的颜色嵌入。

图片来自颜色解码器


同时,论文还提出一个色度损失,帮助提升生成结果的色彩鲜艳度。


        模型使用 ImageNet 数据集进行训练,ImageNet数据集是一个大型计算机视觉数据集,包合 1400 多万张图片。ImageNet 数据集一直是评估图像上色算法性能的基准。DDColor 利用 ImageNet 训练集训练而成。


三、体验

1. 运行依赖安装
方式一:如果有本地或云服务器计算资源,可以在本地进行环境安装,以更灵活的方式体验算法模型。

方式二:如果觉得本地安装较为复杂,也可以在线运行 ModelScope 平台提供的 Notebook。Notebook 中预先安装了官方镜像,因此无需再进行手动环境安装,更加方便快捷。(打开链接:ModelScope 魔搭社区,点击右上角“快速体验”)

2. 图像准备
准备一张黑白图像或者彩色图像(输入一张彩色图像,也可以进行重上色),图像可以在本地或网络上,记录下图像的地址,例如我们选取这张奥黛丽赫本的经典黑白照片:
https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/audrey_hepburn.jpg


3. 调用 pipeline 进行图像上色

  1. import cv2
  2. from modelscope.outputs import OutputKeys
  3. from modelscope.pipelines import pipeline
  4. from modelscope.utils.constant import Tasks
  5. img_colorization = pipeline(Tasks.image_colorization,
  6. model='damo/cv_ddcolor_image-colorization')
  7. img_path = 'https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/audrey_hepburn.jpg'
  8. result = img_colorization(img_path)
  9. cv2.imwrite('result.png', result[OutputKeys.OUTPUT_IMG])

这样,我们就获得了一张上色后的彩色图像(result.png),效果还不错!声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】

推荐阅读
相关标签