三步教你搭建给黑白照片上色的神经网络 !(附代码)

2019-08-14 20:04   编辑:admin   人气: 次   评论(

  你不会真的信有快速减肥的方法吧!!!!!!!本回答由网友推荐已赞过已踩过你对这个回答的评价是?评论收起

  知道合伙人互联网行家采纳数:2748获赞数:125896年从业经验,主要服务于企业,为企业提供SEO优化,竞价推广,品牌运营等互联网相关工作。向TA提问展开全部一种方法是在Chrome设置里面设置为其他主页;

  【单选题】【完整版本可在 xuanxiu365.com 查看】《百年孤独》描写了布恩迪亚家族()代人的传奇故事。

  展开全部呵呵,不用设置。它早就在你的浏览器主页里了已赞过已踩过你对这个回答的评价是?评论收起

  深度学习云平台FloydHub最近在官方博客上发了一篇通过搭建神经网络,来给黑白照片上色的教程,在Twitter和Reddit论坛上都广受好评。

  FloydHub是个YC孵化的创业公司,号称要做深度学习领域的Heroku。它在GPU系统上预装了TensorFlow和很多其他的机器学习工具,用户可以按时长租用,训练自己的机器学习模型。免费版支持1个项目、每月20小时GPU时长、10G存储空间,用上色项目练个手足够了。

  第一部分介绍核心逻辑。我们将用40行代码来构建一个简单的神经网络,叫做“Alpha”版本着色机器人。这个代码里没有太多技巧,但是有助于熟悉语法。

  下一步是创建一个具备泛化能力的神经网络,叫做“Beta”版本,它能够对以前没见过的图像进行着色。

  最后,将神经网络与分类器相结合,得到最终版本。Inception Resnet V2是训练120万张图像后得到的神经网络,我们使用了该模型。为了使着色效果更加吸引人,我们使用了来自素材网站Unsplash的人像集,来训练这个神经网络。

  在本节中,我将概述如何渲染图像、数字颜色的基础知识以及神经网络的主要逻辑。

  黑白图像可以在像素网格中表示。每个像素有对应于其亮度的值,取值范围为0 - 255,从黑色到白色。

  彩色图像可以分为三层,分别是红色层、绿色层和蓝色层。直观上,你可能会认为植物只存在于绿色层,但事实可能与你的直觉相反。想象一下,将白色背景上的绿叶分成三个图层。

  如下图所示,叶子在三个图层中都存在。这些层不仅可以确定颜色,还确定了亮度。

  例如,为了得到白色这个颜色,你需要将所有颜色均匀分布。添加等量红色和蓝色后,绿色会变得更亮。因此,彩色图像使用三个通道来编码颜色和对比度:

  就像黑白图像一样,彩色图像中每个图层值的范围也是0 – 255,值为0意味着该图层中没有颜色。如果在所有颜色图层中该值都为0,则该图像像素为黑色。

  神经网络能建立输入和输出之间的关系。更准确地说,着色任务就是让网络找到连接灰度图像与彩色图像的特征。

  我们从简单版本开始,建立一个能给女性脸部着色的神经网络。这样,当添加新特征时,你可以熟悉已有模型的核心语法。

  只需要40行代码,就能实现下图所示的转换。中间图像是用神经网络完成的,右边图像是原始的彩色照片。这个网络使用了相同图像做训练和测试,在beta版本中还会再讲这一点。

  首先,使用一种能改变颜色通道的算法,从RGB到Lab。其中,L表示亮度,a和b分别表示颜色光谱,绿-红和蓝-黄。

  如下所示,Lab编码的图像具有一个灰度层,并将三个颜色层压成两层,这意味着在最终预测中可以使用原始灰度图像。此外,我们只需预测两个通道。

  科学研究表明,人类眼睛中有94%细胞确定着亮度,只有6%细胞是用来感受颜色的。如上图所示,灰度图像比彩色层更加清晰。这是我们在最终预测中保留灰度图像的另一个原因。

  最终预测应该是这样的:向网络输入灰度层(L),然后预测Lab中的两个颜色层ab。要创建最终输出的彩色图像,我们需要把输入的灰度(L)图像和输出的a、b层加在一起,创建一个Lab图像。

  我们使用卷积过滤器将一层变成两层,可以把它们看作3D眼镜中的蓝色和红色滤镜。每个过滤器确定能从图片中看到的内容,可以突出或移除某些东西,来从图片中提取信息。这个网络可以从过滤器中创建新图像,也可以组合多个过滤器形成新图像。

  卷积神经网络能自动调整每个滤波器,以达到预期结果。我们将从堆叠数百个滤波器开始,然后将它们缩小成两层,即a层和b层。

  如果你刚接触FloydHub,请看这个2分钟安装教程(),以及手把手教学指南(),然后就可以开始在GPU云上训练深度学习模型了。

  FloydHub Web控制台将在浏览器中打开,系统会提示你创建一个名为colornet的FloydHub新项目。完成后,返回终端并执行相同的初始化命令。

  如果能使用GPU,你还可以将GPU (—gpu)添加到命令中,这样运行速度能提高50倍。

  开始时把epoch设置为1,逐渐增加到10、100、5500、1000和3000。epoch值表示神经网络从图像中学习的次数。在训练神经网络的过程中,你可以在主文件夹中找到这个图像img_result.png。

  与其他视觉网络不同,它的主要区别在于像素位置的重要性。在着色网络中,图像的分辨率或比例在整个网络中保持不变。而在其他网络中,越靠近最后一层,图像变得越扭曲。

  分类网络中的最大池化层增加了信息密度,但也可能导致图像失真。它只对信息进行估值,而未考虑到图像布局。在着色网络中,我们将步幅改为2,每次运算使宽度和高度减半。这样,不但增加了信息密度,也不会使图像扭曲。

  两者差异在于上采样层和图像比例保持方面。而分类网络只关心最终的分类正确率,因此随着网络深入,它会不断减小图像的分辨率和质量。

  但是,着色网络的图像比例保持不变。这是通过添加空白填充来实现的,否则每个卷积层将削减图像,实现代码为:padding =’same’。

  这个for循环首先计算了目录中的所有文件名,然后遍历图像目录,并将图像转换为像素数组,最后将其组合成一个大型矢量。

  在ImageDataGenerator中,我们还修改了图像生成器的参数。这样,图像永远不会相同,以改善学习效果。参数shear_range是指图像向左或向右的倾斜程度,其他参数不需要加以说明。

  我们使用了文件夹Xtrain中的图像,根据之前设置来生成图像。然后我们提取X_batch中的黑白层和两个颜色层的两种颜色。

  拥有越高性能的GPU,则可以设置越大的batch_size值。根据现有硬件,我们设置了每批次输入50-100张图像。参数steps_per_epoch是通过把训练图像的数量除以批次大小得出的。例如,有100张图像且批次大小为50,则steps_per_epoch值为2。参数epoch决定网络中所有图像的训练次数。在Tesla K80 GPU上,大约需要11小时才能完成对1万张图像的21次训练。

  先进行多次小批次实验,再尝试大批次实验。即使经过20-30次实验,我仍然发现很多错误。程序能运行并不意味着它能工作。神经网络中的问题通常比传统编程遇到的Bug更为麻烦。

  多样化的数据集会使着色效果呈现棕色。如果数据集中图像比较相似,不需要设计很复杂的架构,就可以得到一个良好效果,但是其泛化能力十分糟糕。

  重视图像形状的统一性。每张图像的分辨率必须是准确的,且在整个网络中保持成比例。开始时,所使用的图像分辨率为300,将它减半三次后分别得到150、75和35.5。因此,就丢失了半个像素,这导致了很多问题,后来才意识到应该使用4、8、16、32、64、256等这种能被2整除的数。

  创建数据集。请禁用.DS_Store文件,不然会产生很多麻烦;大胆创新,最后我用Chrome控制台脚本和扩展程序来下载文件;备份原始文件并构建清理脚本。

  最终版本的着色神经网络有四个组成部分。我们将之前的网络拆分成编码器和解码器,在这两者之间还添加了一个融合层。关于分类网络的基本教程,可参考:。

  Inception resnet v2是目前最强大的分类器之一,使用了120万张图像来训练该网络。我们提取了它的分类层,并将其与编码器的输出进行合并。因此,输入数据传给编码器的同时,也并行传输到resnet v2网络的分类层中。更多信息,请参考原论文:。

  这个网络通过将分类器的学习效果迁移到着色网络上,可更好理解图片中的内容。因此,这样使得网络能够把目标表征与着色方案相匹配。

  大多数图像的着色效果不好,但是由于验证集中有2500张图像,我设法找到了一些良好的着色图像。在更多图像上进行训练可以获得更为稳定的结果,但是大部分都呈现棕色色调。这两个链接贴出了运行试验的完整列表,包括验证图像() ()。

  首先,要下载inception resnet v2网络并加载权重。由于要并行使用两个模型,因此必须指定当前要使用哪个模型。这个可通过Keras的后端Tensorflow来完成。

  批处理方法中使用了调整后的图像,把它们变成黑白图像,并在inception resnet模型上运行。

  首先,要调整图像分辨率以适应inception模型;然后根据模型,使用预处理程序来规范化像素和颜色值;最后,在inception网络上运行并提取模型最后一层的权重。

  再讲下生成器。对于每个批次,我们按照下列格式生成20张图像,在Tesla K80 GPU上大约要运行一个小时。基于该模型,每批次最多可输入50张图像,且不产生内存溢出。

  encoder_input会输入到编码器模型中;接着,编码器模型的输出会与融合层中的embed_input相融合;然后,这个融合输出会作为解码器模型的输入;最终,解码器模型会输出预测结果decode_output。

  在融合层中,首先将1000类输出层乘以1024(即32×32),这样就从inception模型的最后一层得到了1024行数据;接着,把2D重构成3D得到一个具有1000个类别对象的32x32网格;然后,将它与编码器模型的输出相连;最后,应用一个带有254个1X1内核的卷积网络,得到了融合层的最终输出。

  1.不要逃避难懂的术语。我花了三天时间去搜索在Keras该如何实现“融合层”。因为这听起来很复杂,我不想面对这个问题,而是试图找到现成代码。

  2.多在网上请教他人。在Keras论坛中,我提出的问题没人回答,同时Stack Overflow删除了我的提问。但是,通过分解成小问题去请教他人,这迫使我进一步理解问题,并更快解决问题。

  3.多发邮件请教。虽然论坛可能没人回应,人们关心你能否直接与他们联系。在Skype上与你不认识的研究人员一起探讨问题,这听起来很有趣。

  4.在解决“融合层”问题之前,我决定构建出所有组件。以下是分解融合层的几个实验()。

  5.我以为某些代码能够起作用,但是在犹豫是否要运行。虽然我知道核心逻辑是行得通的,但我不认为它会奏效。经过一阵纠结,我还是选择运行。运行完模型的第一行代码后,就开始报错;四天后,一共产生几百个报错,我也做了数千个Google搜索,模型依旧停留在“Epoch 1/22”。

  图像着色是一个极其有趣的问题。这既是一个科学问题,也是一个艺术问题。我写下这篇文章,希望你能从中有所启发,以加快在图像着色方面的研究。以下是一些建议:

  4.在RGB颜色空间中构建一个放大器。构建一个与着色网络类似的模型,将深色调的着色图像作为输入,它能微调颜色以输出合适的着色图像;

  6.应用一个分类神经网络作为损失函数。网络中错误分类的图片有一个相应误差,探究每个像素对该误差的贡献度。

  7.应用到视频中。不要太担心着色效果,而是要关注如何使图像切换保持协调。你也可以通过平铺多张小图像来处理大型图像。

  当然,你也可以尝试用我贴在FloydHub上的三种着色神经网络,来给你的黑白图像着色。

  1.对于Alpha版本,只需将你的图片分辨率调成400x400像素,把名称改为woman.jpg,并替换原有文件。

  2.对于Beta版本和最终版本,在你运行FloydHub命令之前,要将你的图片放入Test文件夹。当Notebook运行时,你也可以通过命令行直接上传到Test文件夹。要注意,这些图像的分辨率必须是256x256像素。此外,你也可以上传彩色测试图像集,因为这个网络会自动把它们转换为黑白图像。

  为保证发文质量、树立口碑,数据派现设立“错别字基金”,鼓励读者积极纠错。

  若您在阅读文章过程中发现任何错误,请在文末留言,或到后台反馈,经小编确认后,数据派将向检举读者发8.8元红包。

  同一位读者指出同一篇文章多处错误,奖金不变。不同读者指出同一处错误,奖励第一位读者。

  使用神经网络对图片进行风格化渲染是计算机视觉领域的热门应用之一。本文将向你介绍一种简单而有效的黑白图片上色方法,仅需 100 行代码,你也可以搭建自己的神经网络,几秒钟内让计算机自动完成手动工作需要几...博文来自:机器之心

  刚开始接触深度学习、卷积神经网络的时候非常懵逼,不知道从何入手,我觉得应该有一个进阶的过程,也就是说,理应有一些基本概念作为奠基石,让你有底气去完全理解一个庞大的卷积神经网络:本文思路:一、我认为学习...博文来自:Errors_In_Life的博客

  AI学会“脑补”:神经网络超逼线完胜PS!新方法实现完美“脑补”在分享照片之前,你可能会想进行一些修改,例如擦除分散注意力的场景元素,调整图像中的物体位置以获得更好的组合效果,或者把被...

  视觉效果一直是计算机视觉研究的一个重要领域,如风格迁移等已经是各大顶会的重要栏目。    本篇文章主要用于探索黑白照片着色的功能。    如何给黑白照片上色,如对早先的照片进行更好的渲染,可以便得宝贵...

  1.实现图着色算法2.基本思路  颜色数不合法,直接不满足;当颜色数合法,对于每一个方案,判断图中每一条边是否满足要求即可。3.代码实现#includelt;bits/stdc++.h&am...

  正文共3894个字,8张图,预计阅读时间11分钟。Alpha版本不能很好地给未经训练的图像着色。接下来,我们将在Beta版本中做到这一点——将上面的将神经网络泛化。以下是使用Beta版本对测试图像着色...

  怎样给黑白图片上色以前由于技术的限制,只有黑白照片,想给其加入一些颜色,这时我们可以使用PS的曲线功能。原图:打开PS,选择...

  网上有很多使用PS给黑白老照片上色的教程,下图是P上颜色的爱因斯坦:于是,有大牛使用深度学习制作了一个自动给黑白图像上色的模型,非常非常的牛叉。colornet AutomaticColorizati...

  TensorFlow图像数据预处理及可视化绿萝1235个月前注:文章转自《慢慢学TensorFlow》微信公众号图像是人们喜闻乐见的一种信息形式,“百闻不如一见”,有时一张图能胜千言万语。图像处理是利...

  图着色算法详解图着色算法简介    图的m-着色判定问题——给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色,是否有一种着色法使G中任意相邻的2个顶点着不同颜色?  ...

  正文共5042个字,11张图,预计阅读时间13分钟。如今,上色都是人手工用Photoshop做的,一张图片要花好几个月才能完成,需要进行大量调查研究,光是其中的一张脸就需要多达20层图层。但是,基于深...

  深度学习增强了视觉和语言处理等“认知”任务,连谷歌都转向了基于神经网络的语言翻译,如此火爆的原因或许是它不需要掌握各个领域的特定知识就能取得想要的结果。当然,海量GPUs并行计算硬件加上设计良好的框架...

  昆士兰大学的博士毕业典礼,每年两次,七月和十二月各有一次。作为世界级名校,昆士兰大学的留学生众多。对于来自天南海北的留学生们来说,把人凑齐并不容易。所以校方很贴心地在年中和年末各组织一次毕业典礼,为的...

  微信公众号关键字全网搜索最新排名【机器学习算法】:排名第一【机器学习】:排名第一【Python】:排名第三【算法】:排名第四目录:AlphaZero-GomokuOpenPoseFaceRecogni...

  摘要: 导读深度学习是近来数据科学中研究和讨论最多的话题。得益于深度学习的发展,数据科学在近期得到了重大突破,深度学习也因此得到了很多关注。据预测,在不久的将来,更多的深度学习应用程序会影响人们的生活...

  最近在看deeplearning的相关知识,从下载了一份代码,需要配置以下环境:安装步骤如下:0、python最好是2.6以上的,版本低的,记得升级一下。1、安装se...

  Floydhub安装与登录先在floydhub的官网上进行注册,注册完之后就会跳出一个指导教程啦,这里我们一步一步跟着做就行。这里是要求我们安装floyd-cli,只需要键入两个命令。第一条命令旁边有...

  AI技术年度盛会即将开启!11月8-9日,来自Google、Amazon、微软、Facebook、LinkedIn、阿里巴巴、百度、腾讯、美团、京东、小米、字节跳动、滴滴、商汤、旷视、思必驰、第四范式...

  来自伯克利大学和麻省理工学院的三名研究者RichardZhang、PhillipIsola、AlexeiA.Efros日前给出了深度学习在另一个特定领域的研究进展,开发了一套可以通过深度学习自动学会帮...

  weixin_33727510的博客日本早稻田大学的研究人员,使用AI给

  对于怀旧的记忆来说,黑白照片确实在过去和现在之间形成了一定的隔阂。当你翻开黑白相册,很容易遗忘我们与那个时代的联系,历史转瞬即逝。由石川博士领导的早稻田大学研究小组,利用人工智能和深度学习技术,创建了...

  机械鸡Let there be Color!: 让世界充满颜色:端到端图片自动着色协同算法

  本文主要内容包括:(1)介绍神经网络基本原理,(2)AForge.NET实现前向神经网络的方法,(3)Matlab实现前向神经网络的方法。第0节、引例       本文以Fisher的Iris数据集...

  前言人类能够观察到的光的波长范围是有限的,并且人类视觉有一个特点,只能分辨出二十几种灰度,也就是说即使采集到的灰度图像分辨率超级高,有上百个灰度级,但是很遗憾,人们只能看出二十几个,也就是说信息损失了...

  #第一篇博客文档#公司的机器还没有来Floydhub是一个简单易用的深度学习云平台,支持jupyternotebook,香港管家婆玄机彩图,非常的简单好用。而且有免费的20小时,之后每小时GPU大约0.6美元,CPU相对...

  人们在训练庞大而复杂的深度神经网络时,经常会出现难以理解的运算。而人类是有“视觉青睐”的,也就是说,人们通常对图片带来的信息更善于理解。为了迎合这一特性,也为了更方便理解、调试与优化程序,Tensor...

  Matlab实现给黑白图片上色今天翻到了爸妈年轻时候的老照片,突然有一中想法如果如何给这些图片上色,使其成为彩色照片;黑白照片上色功能在其他一些专门的图片处理软件就可以简单实现的,比如:Photosh...

  本文转载于博客园《利用opencv作透明重叠人群密度热度图》感谢原文作者的分享在作热度图的时候我们经常需要将热度图调整透明度后叠加在原图上达到更好的展示效果。比如检测人气密度的热度图:(来自sense...

  floydhub,深度学习入门者的福音,无需绑卡即有100h免费体验时间

  前些天在逛知乎的时候发现了一个好东西,一个非常好用的深度学习云平台——Floyd。它是一个非常便捷的深度学习云计算平台,虽然我前面已经搭建过了GPU版本的tensorflow,但是在速度上还是比不上在...

  Floyd是一个可以免费使用的GPU平台,虽然有时候很慢,但是对于我们新手已经足够了。下面直接讲如何安装。首先Floyd的网址:Floydhub首页,注册这些不谈。然后在自己电脑调出命令行窗口,输入如...

  先贴上效果图,让前面两张图片具有梵高的星空之夜风格。其中原始的图片为下面两张图片。上面所展示的图片中,直观的理解是把梵高中的图片的这种风格揉到前面两张图片当中。但是,这种图片风格生成的并不是简单得让图...

  实验当中总要可视化自己的数据,比方说标签是33类,你要可视化,单纯的灰度值拉伸不明显,如果是11类那会明显很多,但是类别越多,边界线越模糊,所以最好还是上彩色图像。但是上色程序里面的颜色值又不能随机化...

  乱七八糟的笔记OpenCV+Tensorflow 人工智能图像处理(二十五)—— 颜色映射

  这篇论文是加里福利亚大学RichardZhang发表在ECCV2016上的文章,论文的工作是灰度图的自动着色,这里博主想要重点关注一下论文对颜色分布预测的工作,所以把一篇这么老的论文翻出来重新看。...

  • 最热文章