色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

通過深度學習方法為黑白老照片自動上色,帶我們重新憶起那段老時光!

電子工程師 ? 來源:未知 ? 作者:李倩 ? 2018-09-07 10:13 ? 次閱讀

我們知道,深度學習幾乎已經(jīng)應用在每一個領域,但如果我們能夠構建一個基于深度學習的模型,讓它能夠給老照片著色,重現(xiàn)我們童年的舊回憶,這該多么令人激動啊!那么我們要怎么做呢?本文的作者將為大家介紹一個教程,通過深度學習方法為黑白老照片自動上色,帶我們重新憶起那段老時光!

現(xiàn)如今,給照片著色通常是在 PS 中手工完成的。

所以說,如果要給一幅照片著色的話,短時間內(nèi)是不可能完成的。它需要廣泛的研究,要知道,單是一張臉的著色,就需要多達20層粉色、綠色和藍色的色調(diào)才能使照片擁有恰到好處的效果。

現(xiàn)在,我要介紹的這個簡單的神經(jīng)網(wǎng)絡——Inception Resnet V2,已經(jīng)訓練了120萬張圖像,可以幫助我們完成著色的任務。為了能夠實現(xiàn)著色,我們將用 Unsplash 的肖像來訓練這個神經(jīng)網(wǎng)絡。

介紹

在本節(jié)中,我將就如何渲染圖像、數(shù)字顏色的基礎知識以及神經(jīng)網(wǎng)絡的主要邏輯進行概述。

黑白圖像可以用像素網(wǎng)格表示,每個像素都有與其亮度相對應的值。這些值的范圍是0~255,對應的是從黑到白。

彩色圖像是由三層組成:紅色層、綠色層和藍色層。你可以想象一下,在白色背景上將綠葉分成三個通道。直覺上,你可能會認為植物只存在于綠色層中。

但是,如下圖所示,葉子在所有三個通道中都存在。這些層不僅決定了顏色,還決定了亮度。

例如,要得到白色,你需要所有的顏色均勻分布。通過增加等量的紅色和藍色,會使綠色變得更亮。因此,彩色圖像使用三層來對顏色和對比度進行編碼:

和黑白圖像一樣,彩色圖像中的每一層,也有0~255的值。值0表示這個層中沒有顏色。如果像素網(wǎng)格所有顏色通道的值都為0,那么這個圖像像素就是黑色的。

神經(jīng)網(wǎng)絡在輸入值和輸出值之間創(chuàng)建了一種關系。為了能夠更為準確地完成著色任務,網(wǎng)絡需要找到能夠將灰度圖像和彩色圖像聯(lián)系起來的特征。

總的來說就是,我們需要找到能夠將灰度值網(wǎng)格鏈接到三個顏色網(wǎng)格的特征。

f()是神經(jīng)網(wǎng)絡,[B&W]是我們的輸入,[R]、[G]、[B]是我們的輸出

現(xiàn)在,隨著數(shù)據(jù)集的增加,由于我們處理的是高分辨率圖像,因此我們需要更多的計算能力。為此,我個人更喜歡使用 Deep Cognition 的 Deep Learning Studio jupyter notebooks,它為Amazon 的深度學習示例提供了GPU,可用來訓練模型。

如果你不熟悉如何使用Deep Learning Studio,可以看看以下這些資料

Deep Learning made easy with Deep Learning Studio?—?An Introduction

http://u6.gg/eqfdu

Deep Learning made easy with Deep Learning Studio?—?Complete Guide

http://u6.gg/eqffa

A video walkthrough of Deep Cognition

http://u6.gg/eqfh7

python代碼和數(shù)據(jù)集可以從 GitHub 中下載

https://github.com/Rajat2712/Deep-Learning-Studio

環(huán)境設置

Deep Learning Studio 最好的地方之一就是,只需單擊 Deep Learning Studio Cloud,就可以輕松地完成安裝,然后隨時隨地使用它們。

▌1.安裝 Python 環(huán)境

要安裝 Python 環(huán)境,請點擊 DLS 中的 Environments 選項卡。

然后在 Available Environments 單擊你要安裝的環(huán)境。

對于這項任務,我們將安裝以下環(huán)境:

Python3

Tensorflow-gpu-1.6.0

Keras-gpu-2.1.5

▌2.安裝python包

單擊啟動環(huán)境。然后點擊菜單的 Open New Terminal 打開終端。

在終端中鍵入以下命令:

1pipinstallscikit-image

上傳數(shù)據(jù)集

打開文件瀏覽器,并為這個項目創(chuàng)建一個新文件夾。上傳在 Github 存儲庫中可用的數(shù)據(jù)集。

如果需要自定義數(shù)據(jù)集,可以通過在 train 文件夾中上傳高分辨率的彩色圖像和test文件夾中的灰度圖像來創(chuàng)建。

接下來我們開始編碼

▌導入所有的庫

1importkeras 2fromkeras.applications.inception_resnet_v2importInceptionResNetV2 3fromkeras.preprocessingimportimage 4fromkeras.engineimportLayer 5fromkeras.applications.inception_resnet_v2importpreprocess_input 6fromkeras.layersimportConv2D,UpSampling2D,InputLayer,Conv2DTranspose,Input,Reshape,merge,concatenate 7fromkeras.layersimportActivation,Dense,Dropout,Flatten 8fromkeras.layers.normalizationimportBatchNormalization 9fromkeras.callbacksimportTensorBoard10fromkeras.modelsimportSequential,Model11fromkeras.layers.coreimportRepeatVector,Permute12fromkeras.preprocessing.imageimportImageDataGenerator,array_to_img,img_to_array,load_img13fromskimage.colorimportrgb2lab,lab2rgb,rgb2gray,gray2rgb14fromskimage.transformimportresize15fromskimage.ioimportimsave16importnumpyasnp17importos18importrandom19importtensorflowastf

▌從Train文件夾中讀取所有圖像并加載初始權重值

1#Getimages2X=[]3forfilenameinos.listdir('Train/'):4X.append(img_to_array(load_img('Train/'+filename)))5X=np.array(X,dtype=float)6Xtrain=1.0/255*X7#Loadweights8inception=InceptionResNetV2(weights='imagenet',include_top=True)9inception.graph=tf.get_default_graph()

▌在融合層(fusion layer)兩邊分別創(chuàng)建編碼器和解碼器

Inception ResNet v2 是一個在120萬張圖像上訓練的神經(jīng)網(wǎng)絡,也是現(xiàn)今最強大的分類器之一。與編碼器并行,輸入圖像也通過 Inception ResNet v2 來運行。提取分類層并將其與編碼器的輸出合并。

通過將學習從分類轉移到著色網(wǎng)絡上,網(wǎng)絡可以對圖片中的內(nèi)容有所了解。進而使網(wǎng)絡能夠將著色方案與對象表示相匹配。

將encoder_input輸入到我們的編碼器模型中,然后將編碼器模型的輸出與融合層中的 embed_input融合,用融合層的輸出作為解碼器模型的輸入,最后返回最終的輸出decoder_output。

1embed_input=Input(shape=(1000,)) 2#Encoder 3encoder_input=Input(shape=(256,256,1,)) 4encoder_output=Conv2D(64,(3,3),activation='relu',padding='same',strides=2)(encoder_input) 5encoder_output=Conv2D(128,(3,3),activation='relu',padding='same')(encoder_output) 6encoder_output=Conv2D(128,(3,3),activation='relu',padding='same',strides=2)(encoder_output) 7encoder_output=Conv2D(256,(3,3),activation='relu',padding='same')(encoder_output) 8encoder_output=Conv2D(256,(3,3),activation='relu',padding='same',strides=2)(encoder_output) 9encoder_output=Conv2D(512,(3,3),activation='relu',padding='same')(encoder_output)10encoder_output=Conv2D(512,(3,3),activation='relu',padding='same')(encoder_output)11encoder_output=Conv2D(256,(3,3),activation='relu',padding='same')(encoder_output)12#Fusion13fusion_output=RepeatVector(32*32)(embed_input)14fusion_output=Reshape(([32,32,1000]))(fusion_output)15fusion_output=concatenate([encoder_output,fusion_output],axis=3)16fusion_output=Conv2D(256,(1,1),activation='relu',padding='same')(fusion_output)17#Decoder18decoder_output=Conv2D(128,(3,3),activation='relu',padding='same')(fusion_output)19decoder_output=UpSampling2D((2,2))(decoder_output)20decoder_output=Conv2D(64,(3,3),activation='relu',padding='same')(decoder_output)21decoder_output=UpSampling2D((2,2))(decoder_output)22decoder_output=Conv2D(32,(3,3),activation='relu',padding='same')(decoder_output)23decoder_output=Conv2D(16,(3,3),activation='relu',padding='same')(decoder_output)24decoder_output=Conv2D(2,(3,3),activation='tanh',padding='same')(decoder_output)25decoder_output=UpSampling2D((2,2))(decoder_output)26model=Model(inputs=[encoder_input,embed_input],outputs=decoder_output)

現(xiàn)在,我們必須調(diào)整圖像的大小來適應 Inception 模型。然后根據(jù)模型對像素和顏色值使用預處理器進行格式化。在最后一步中,我們通過 Inception 網(wǎng)絡運行它并提取模型的最后一層。

1defcreate_inception_embedding(grayscaled_rgb): 2grayscaled_rgb_resized=[] 3foriingrayscaled_rgb: 4i=resize(i,(299,299,3),mode='constant') 5grayscaled_rgb_resized.append(i) 6grayscaled_rgb_resized=np.array(grayscaled_rgb_resized) 7grayscaled_rgb_resized=preprocess_input(grayscaled_rgb_resized) 8withinception.graph.as_default(): 9embed=inception.predict(grayscaled_rgb_resized)10returnembed

用ImageDataGenertor可以調(diào)整圖像生成器的設置。如此一來得到不會重復的圖像,從而提高了學習率。shear_rangetilts使圖像向左或向右傾斜,其他設置為縮放、旋轉和水平翻轉。

1#Imagetransformer2datagen=ImageDataGenerator(3shear_range=0.2,4zoom_range=0.2,5rotation_range=20,6horizontal_flip=True)7#Generatetrainingdata8batch_size=10

我們使用 Xtrain 文件夾中的圖像,根據(jù)上面的設置生成圖像。然后,為X_batch提取黑色層和白色層,并為兩個顏色層提取兩種顏色。

為創(chuàng)建我們的 batch,我們使用經(jīng)過調(diào)整的圖像。將它們轉換為黑白圖像,并通過 Inception ResNet 模型運行它們。

1defimage_a_b_gen(batch_size):2forbatchindatagen.flow(Xtrain,batch_size=batch_size):3grayscaled_rgb=gray2rgb(rgb2gray(batch))4embed=create_inception_embedding(grayscaled_rgb)5lab_batch=rgb2lab(batch)6X_batch=lab_batch[:,:,:,0]7X_batch=X_batch.reshape(X_batch.shape+(1,))8Y_batch=lab_batch[:,:,:,1:]/1289yield([X_batch,create_inception_embedding(grayscaled_rgb)],Y_batch)

現(xiàn)在,我們將使用 “RMSProp” 優(yōu)化器和均方誤差作為損失函數(shù)來編譯模型。

GPU 越強,得到的圖像就越多。通過現(xiàn)在的設置,你可以使用50~100張圖像。steps_per_epoch是通過將訓練圖像的數(shù)量除以 batch 大小來計算的。

1#Trainmodel2model.compile(optimizer='rmsprop',loss='mse')3model.fit_generator(image_a_b_gen(batch_size),epochs=50,steps_per_epoch=1)

1.0/255 表示我們使用的是 24 位 RGB 顏色空間,這意味著我們?yōu)槊總€顏色通道使用 0 ~ 255 之間的數(shù)字。這將會產(chǎn)生 1670 萬種顏色的組合。

而人類只能感知 200 ~ 1000 萬種顏色,因此,使用再大的顏色空間并沒有多大意義。

與 RGB 顏色空間相比,LAB 顏色空間具有不同的范圍。在 LAB 顏色空間中,顏色光譜 ab 范圍從-128~128。通過將輸出層中的所有值除以 128,將色譜范圍限制在 -1 ~ 1 之間。

將它與神經(jīng)網(wǎng)絡相匹配,神經(jīng)網(wǎng)絡也返回 -1 ~ 1 之間的值。

在使用 rgb2lab 函數(shù)轉換顏色空間之后,我們選擇灰度層:[:,:,0],這是對神經(jīng)網(wǎng)絡的輸入。[:,:,1:]選擇兩個顏色層:綠-紅和藍-黃。

1color_me=[]2forfilenameinos.listdir('Test/'):3color_me.append(img_to_array(load_img('Test/'+filename)))4color_me=np.array(color_me,dtype=float)5gray_me=gray2rgb(rgb2gray(1.0/255*color_me))6color_me_embed=create_inception_embedding(gray_me)7color_me=rgb2lab(1.0/255*color_me)[:,:,:,0]8color_me=color_me+.reshape(color_me.shape+(1,))

神經(jīng)網(wǎng)絡進行訓練后,做出最終的預測,并將其轉化為圖像。

在這里,我們使用一個灰度圖像作為輸入,并通過訓練好的神經(jīng)網(wǎng)絡來運行它。我們?nèi)≡?-1 ~ 1 之間所有的輸出值,然后乘以 128,就得到了 Lab 色譜中正確的顏色。

最后,用 三層 0 填充得到一個黑色的 RGB 畫布。然后從測試圖像中,復制灰度圖層。然后將這兩個顏色層添加到 RGB 畫布上。再將這個像素值數(shù)組轉換為圖片。

1#Testmodel2output=model.predict([color_me,color_me_embed])3output=output*1284#Outputcolorizations5foriinrange(len(output)):6cur=np.zeros((256,256,3))7cur[:,:,0]=color_me[i][:,:,0]8cur[:,:,1:]=output[i]9imsave("result/img_"+str(i)+".png",lab2rgb(cur))

結果

在小型數(shù)據(jù)集上的結果,訓練圖像數(shù) = 10,測試圖像數(shù) = 8;

▌測試數(shù)據(jù):

▌經(jīng)過50個輪數(shù)之后:

▌經(jīng)過100個輪數(shù)之后:

▌經(jīng)過1000個輪數(shù)之后:

▌經(jīng)過2000個輪數(shù)之后:

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 神經(jīng)網(wǎng)絡

    關注

    42

    文章

    4774

    瀏覽量

    100900
  • 圖像
    +關注

    關注

    2

    文章

    1087

    瀏覽量

    40501
  • 深度學習
    +關注

    關注

    73

    文章

    5507

    瀏覽量

    121298

原文標題:用AI給黑白照片上色,復現(xiàn)記憶中的舊時光

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    前面板自動上色

    利用ini文件前面板自動上色
    發(fā)表于 01-07 22:54

    深度學習介紹

    在未來的某個時候,人們必定能夠相對自如地運用人工智能,安全地駕車出行。這個時刻何時到來我無法預見;但我相信,彼時“智能”會顯現(xiàn)出更“切實”的意義。與此同時,通過深度學習方法,人工智能的實際應用能夠在
    發(fā)表于 11-11 07:55

    開源神經(jīng)網(wǎng)絡圖片上色技術解析 解密深度學習自動上色

    如何利用深度神經(jīng)網(wǎng)絡給圖片自動上色,本文介紹了開源神經(jīng)網(wǎng)絡圖片上色技術,解析深度學習自動上色
    發(fā)表于 01-10 13:21 ?1.2w次閱讀

    模型驅動深度學習的標準流程與學習方法解析

    模型驅動的深度學習方法近年來,深度學習在人工智能領域一系列困難問題上取得了突破性成功應用。
    的頭像 發(fā)表于 01-24 11:30 ?4940次閱讀
    模型驅動<b class='flag-5'>深度</b><b class='flag-5'>學習</b>的標準流程與<b class='flag-5'>學習方法</b>解析

    人類無法做到的事AI卻輕易做到了

    他們給遭遇戰(zhàn)火前的沖繩照片重新上色,還原已經(jīng)逝去的美景。 利用 AI 技術可以完成一些人類無法做到的事情,比如給黑白照片重新
    的頭像 發(fā)表于 03-29 16:25 ?3887次閱讀

    深度解析機器學習三類學習方法

    在機器學習(Machine learning)領域。主要有三類不同的學習方法:監(jiān)督學習(Supervised learning)、非監(jiān)督學習(Unsupervised learning
    發(fā)表于 05-07 09:09 ?1.4w次閱讀

    如何通過MEC構造基于深度學習自動駕駛汽車緩存

    本文通過使用部署在多接入邊緣計算(MEC)結構上的深度學習方法自動駕駛汽車提出了基于深度
    的頭像 發(fā)表于 10-10 09:26 ?4551次閱讀

    Xilinx FPGA如何通過深度學習圖像分類加速機器學習

    了解Xilinx FPGA如何通過深度學習圖像分類示例來加速重要數(shù)據(jù)中心工作負載機器學習。該演示可通過Alexnet神經(jīng)網(wǎng)絡模型加速圖像(從ImageNet獲得)分類。它可
    的頭像 發(fā)表于 11-28 06:54 ?3825次閱讀

    AI上色對比人工調(diào)色 結果令人難以置信

    老照片力求還原真實色彩的目的不同,視頻調(diào)色中的黑白上色,會融入更多調(diào)色師的主觀意志和創(chuàng)意想法,除了保留真實感外,還要好看,具有觀賞性,甚至為故事服務。
    的頭像 發(fā)表于 04-29 14:18 ?6178次閱讀

    你想修復你的老照片

    時代在進步,技術在發(fā)展,AI自動修復老照片APP軟件的運用將會越來越智能。
    發(fā)表于 07-26 08:43 ?2731次閱讀

    深度討論集成學習方法,解決AI實踐難題

    集成學習方法是一類先進的機器學習方法,這類方法訓練多個學習器并將它們結合起來解決一個問題,在實踐中獲得了巨大成功,并成為機器學習領域的“常青
    發(fā)表于 08-16 11:40 ?780次閱讀
    <b class='flag-5'>深度</b>討論集成<b class='flag-5'>學習方法</b>,解決AI實踐難題

    汽車背后的故事 通過深度學習提高和發(fā)展車輛感知

    汽車背后的故事 通過深度學習提高和發(fā)展車輛感知
    發(fā)表于 11-01 08:24 ?2次下載
    汽車背后的故事 <b class='flag-5'>通過深度</b><b class='flag-5'>學習</b>提高和發(fā)展車輛感知

    使用深度學習方法對音樂流派進行分類

    電子發(fā)燒友網(wǎng)站提供《使用深度學習方法對音樂流派進行分類.zip》資料免費下載
    發(fā)表于 02-08 10:02 ?1次下載
    使用<b class='flag-5'>深度</b><b class='flag-5'>學習方法</b>對音樂流派進行分類

    深度學習中的無監(jiān)督學習方法綜述

    應用中往往難以實現(xiàn)。因此,無監(jiān)督學習深度學習中扮演著越來越重要的角色。本文旨在綜述深度學習中的無監(jiān)督
    的頭像 發(fā)表于 07-09 10:50 ?828次閱讀

    傳統(tǒng)機器學習方法和應用指導

    用于開發(fā)生物學數(shù)據(jù)的機器學習方法。盡管深度學習(一般指神經(jīng)網(wǎng)絡算法)是一個強大的工具,目前也非常流行,但它的應用領域仍然有限。與深度學習相比
    的頭像 發(fā)表于 12-30 09:16 ?269次閱讀
    傳統(tǒng)機器<b class='flag-5'>學習方法</b>和應用指導
    主站蜘蛛池模板: 玉林天天论坛| 欧美又粗又大AAAA片| 伊人影院亚洲| 欧洲精品一区二区不卡观看| 国产精品一国产精品免费| 26uuu老色哥| 亚洲AV无码久久流水呻蜜桃久色| 免费观看国产视频| 黄色三级网站在线观看| 顶级少妇AAAAABBBBB片| 2019香蕉在线观看直播视频 | 国产成人免费高清在线观看| 97蜜桃网123.com| 亚洲中文无码AV在线观看| 微福利92合集| 秋霞电影网午夜鲁丝片无码| 麻豆E奶女教师国产精品| 激情内射亚洲一区二区三区| 国产ZZJJZZJJ视频全免费| tobu中国日本高清| 99精品欧美一区二区三区美图| 亚洲无码小格式| 亚洲AV成人无码网天堂| 色99久久久久高潮综合影院| 欧美性猛交AAA片| 免费视频网站嗯啊轻点| 久久一er精这里有精品| 九色PORNY蝌蚪视频首页| 国产欧美另类久久久精品免费| 俄罗斯摘花| 成年人免费观看的视频| yellow免费观看在线| 1788福利视频在视频线| 孕妇泬出白浆18P| 一个人看的HD免费高清视频| 亚洲AV无码久久流水呻蜜桃久色| 四虎精品久久| 天堂Av亚洲欧美日韩国产综合| 日韩高清在线亚洲专区| 日韩在线看片中文字幕不卡| 日韩精品亚洲专区在线影院|