【计算机视觉】图像着色(Image Colorization)
(Sometimes technology enhances art. Sometimes it vandalizes art. --- 有时技术会增强艺术,有时它破坏了艺术。)
着色黑白电影是一个可以追溯到1902年的古老想法。几十年来,许多电影创作者反对将黑白电影着色的想法,并将其视为对艺术的破坏。 今天它被接受为艺术形式的增强。该技术本身已经从艰苦的手工着色转变为如今的自动化技术。 在美国,Legend Films使用其自动化技术为旧的经典影片着色。 在印度,电影Mughal-e-Azam,一个1960年发行的重磅炸弹在2004年被重新制作。几代人聚集在一起,看到它的彩色版本,从而使得这部电影第二次受到轰动!这一切都源于人工智能和深度学习技术的快速发展,众所周知,在计算机视觉领域,深度学习就像继承了某些上帝的功能,无所不能,令人叹为观止。本文将介绍如何利用深度学习将灰度图像转换为彩色图像!
简介
在图像着色任务中,我们的目标是在给定灰度输入图像的情况下生成彩色图像。这个问题是具有一定的挑战性,因为它是多模式的——单个灰度图像可能对应许多合理的彩色图像。因此,传统模型通常依赖于重要的用户输入以及输入的灰度图像内容。
最近,深层神经网络在自动图像着色方面取得了显着的成功——从灰度到彩色,无需额外的人工输入。这种成功的部分原因在于深层神经网络能够捕捉和使用语义信息(即图像的实际内容),尽管目前还不能够确定这些类型的模型表现如此出色的原因,因为深度学习类似于黑匣子,暂时无法弄清算法是如何自动学习,后续会朝着可解释性研究方向发展。
在解释模型之前,首先以更精确地方式阐述我们所面临的问题。
问题
我们的目的是要从灰度图像中推断出每个像素(亮度、饱和度和色调)具有3个值的全色图像,对于灰度图而言,每个像素仅具有1个值(仅亮度)。为简单起见,我们只能处理大小为256 x 256的图像,所以我们的输入图像大小为256 x 256 x 1(亮度通道),输出的图像大小为256 x 256 x 2(另两个通道)。
正如人们通常所做的那样,我们不是用RGB格式的图像进行处理,而是使用LAB色彩空间(亮度,A和B)。该色彩空间包含与RGB完全相同的信息,但它将使我们能够更容易地将亮度通道与其他两个(我们称之为A和B)分开。
参考:
Image Colorization with Convolutional Neural Networks(附Pytorch代码)
Convolutional Neural Network based Image Colorization using OpenCV
【计算机视觉】图像着色(Image Colorization)的更多相关文章
- 给手绘图着色(添加颜色或色彩):CVPR2020论文点评
给手绘图着色(添加颜色或色彩):CVPR2020论文点评 Learning to Shade Hand-drawn Sketches 论文链接:https://arxiv.org/pdf/2002.1 ...
- 可跨平台C++开源图形图像框架:openFrameworks
博客参考:https://www.hahack.com/codes/openframeworks-intro/#%E4%BB%80%E4%B9%88%E6%98%AF-openframeworks 和 ...
- Generative Adversarial Nets[pix2pix]
本文来自<Image-to-Image Translation with Conditional Adversarial Networks>,是Phillip Isola与朱俊彦等人的作品 ...
- Python爬取CSDN博客文章
0 url :http://blog.csdn.net/youyou1543724847/article/details/52818339Redis一点基础的东西目录 1.基础底层数据结构 2.win ...
- Unsupervised Image-to-Image Translation Networks
Abstract: 无监督图像到图像的翻译目的是学习不同域图像的一个联合分布,通过使用来自单独域图像的边缘分布.给定一个边缘分布,可以得到很多种联合分布.如果不加入额外的假设条件的话,从边缘分布无法推 ...
- 科普 | 生成对抗网络(GAN)的发展史
来源:https://en.wikipedia.org/wiki/Edmond_de_Belamy 五年前,Generative Adversarial Networks(GANs)在深度学习领域掀起 ...
- Paddle预训练模型应用工具PaddleHub
Paddle预训练模型应用工具PaddleHub 本文主要介绍如何使用飞桨预训练模型管理工具PaddleHub,快速体验模型以及实现迁移学习.建议使用GPU环境运行相关程序,可以在启动环境时,如下图所 ...
- ApacheCN 深度学习译文集 2020.9
协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心如何实现目标.--<原则>,生活原则 2.3.c 在线阅读 ApacheCN 面试求职交流群 72418 ...
- OpenGL Shader in OpenCASCADE
OpenGL Shader in OpenCASCADE eryar@163.com Abstract. As implementation of one of the strategic steps ...
随机推荐
- NGINX状态模块的使用
nginx状态模块可以用来查看当前nginx服务器的并发量和总的请求数 启用nginx的状态模块 状态模块需要在编译安装的时候启用. 1.下载nginx源码包 2.安装nginx并启用模块 3.修改n ...
- 大数据之路week07--day07 (修改mysql默认编码)
在Sqoop导入或者导出,我们在查看mysql的时候会出现中文乱码大部分乱码会是?这样的问号,那么该怎么处理呢? 1.打开my.cnf文件 vim /etc/my.cnf 2.找到对应需要修改的地方 ...
- C++中的类所占内存空间总结(转)
类所占内存的大小是由成员变量(静态变量除外)决定的,成员函数(这是笼统的说,后面会细说)是不计算在内的. 摘抄部分: 成员函数还是以一般的函数一样的存在.a.fun()是通过fun(a.this)来调 ...
- C++ vector,list,deque区别(转)
在写C++程序的时候会发现STL是一个不错的东西,减少了代码量,使代码的复用率大大提高,减轻了程序猿的负担.还有一个就是容器,你会发现要是自己写一个链表.队列,或者是数组的时候,既要花时间还要操心 ...
- Dubbo源码分析:ThreadPool
定义了通过URL对象作为参数获取Executor对象的getExecutor方法.所有实现ThreadPool接口的类都是基于ThreadPoolExecuotr对象来实现的. 类图
- C# 基础回顾: volatile 关键字
有些人可能从来没看到过这个关键字,这也难怪,因为这个关键字并不常用.那这个关键字到底有什么用呢? 我在网上搜索这个关键字的时候,发现很多朋友都有一个错误的认识 ------ 认为这个关键字可以防止并发 ...
- [ARIA] Add aria-expanded to add semantic value and styling
In this lesson, we will be going over the attribute aria-expanded. Instead of using a class like .op ...
- 开源项目 02 HttpLib
using JumpKick.HttpLib; using Newtonsoft.Json; using System; using System.Collections.Generic; using ...
- AGC028 E - High Elements
AGC028 E - High Elements 有一个排列\(p\),你要分成两个子序列\(A,B\),满足\(A,B\)的LIS长度相等.设\(S\)是一个\(01\)序列,\(S_i=0\)当且 ...
- Generating a Random Sample from discrete probability distribution
If is a discrete random variable taking on values , then we can write . Implementation of this formu ...