岳 杰 蘭勝杰 江柏霖
(河北建筑工程學院,河北 張家口 075300)
近年深度學習在圖像識別和圖像分類管理以及圖像處理技術(shù)方面風靡一時,神經(jīng)網(wǎng)絡的使用遠遠大于傳統(tǒng)算法,而使用深度學習神經(jīng)網(wǎng)絡對黑白和灰度圖像以及老照片的色彩恢復也成為熱點研究之一.目前手工上色黑白圖像需要花費很大的時間和人力成本,并且上色的效率和上色的效果不是很高,然而借用神經(jīng)網(wǎng)絡上色可以對黑白和灰度圖像以及老照片進行批量處理著色,在節(jié)約時間人力成本的同時也提高了黑白圖像的可塑性以及上色后的視覺沖擊力.本文的實驗技術(shù)基于14年提出的GAN模型[1]對黑白和灰度圖像進行著色處理,該模型主要包括發(fā)生器G(Generator)和鑒別器D(Discriminator)兩個主要部分,其中G的常見結(jié)構(gòu)也看作一種特殊的卷積操作,即轉(zhuǎn)置卷積,生成器的目的是用來拿到圖像的特征分布內(nèi)容,生成圖像,通過可學習方式使特征圖增大.D的結(jié)構(gòu)是卷積神經(jīng)網(wǎng)絡,變相可以當作一個二分類器,區(qū)分輸出圖像的真假,損失數(shù)值.在輸出端給出判別概率.該模型的核心就是這兩部分主體互相對抗、互相優(yōu)化然后互相再對抗[2],G產(chǎn)生圖像欺騙判別器D,而判別器去對該圖像進行判斷真假,如果判斷成功則G優(yōu)化,以此迭代互相優(yōu)化,達到動態(tài)平衡,直到整個模型可以輸出與原始數(shù)據(jù)相差不多的圖像.
本文根據(jù)GAN的網(wǎng)絡特點優(yōu)化超參數(shù)、網(wǎng)絡結(jié)構(gòu)以及激活函數(shù)等,將彩色圖片數(shù)據(jù)集進行像素歸一化調(diào)整,并產(chǎn)生對應灰度數(shù)據(jù)圖像,將模型預訓練操作,在訓練學習的同時對測試圖像進行著色處理.
生成對抗網(wǎng)絡由兩個神經(jīng)網(wǎng)絡互相博弈互相優(yōu)化的過程[3],將隨機噪聲和圖像輸入生成器模型生成對應圖像,然后將生成的圖像和原始圖像一起輸入判別器模型進行判斷,輸出一個真實概率,標準GAN結(jié)構(gòu)圖1如下所示:
圖1 標準GAN結(jié)構(gòu)圖
兩個主要板塊在互相博弈互相欺騙并互相優(yōu)化的過程中整個模型會趨于平衡和穩(wěn)定[4],函數(shù)表達式如下(1):
min maxV(D,G)=Ex-Pdata(x)[log D(x)]+Ex-Pz(z)[log(1-D(G(z)))]
(1)
我們在訓練的過程中發(fā)現(xiàn)生成對抗網(wǎng)絡GAN的訓練穩(wěn)定性很低,原始GAN模型的這兩個G和D只要能滿足可以擬合產(chǎn)生和辨別的函數(shù)便能用來當作整個模型的兩大板塊,但是本文選擇擅長用來擬合判別函數(shù)的神經(jīng)網(wǎng)絡分別作為G和D,但是常常D太強,G太弱,我們需要分別對D和G訓練,必要的時候可以把D學到的特征直接傳給G,變成一種新的目標函數(shù).
該網(wǎng)絡主要包含兩大部分,生成器G的模型和判別器D的模型共同組成了這個網(wǎng)絡架構(gòu),大多數(shù)圖像上色技術(shù)依舊還是會融入一種編碼器/解碼器的網(wǎng)絡結(jié)構(gòu)[5],這個網(wǎng)絡結(jié)構(gòu)的好處在于原始數(shù)據(jù)和結(jié)果數(shù)據(jù)可以一起分配圖像的像素數(shù)據(jù)和位置數(shù)據(jù),并可以完全經(jīng)過整個網(wǎng)絡,該網(wǎng)絡結(jié)構(gòu)將原圖像的信息壓縮提取精髓再通過解碼器來解壓圖像信息,然后進行對比測出誤差反向傳遞,編碼器網(wǎng)絡結(jié)構(gòu)示例如圖2所示,通過壓縮原有信息提取最小特征集合并放入提前訓練好的神經(jīng)網(wǎng)絡,編碼器起到了給特征屬性降維的作用.
圖2 編碼器網(wǎng)絡
解碼器Decoder在訓練時將最小特征集合解壓成重構(gòu)的原始信息,相當于一個解壓器,與GAN中的生成器類似,結(jié)構(gòu)示例如圖3所示:
圖3 解碼器網(wǎng)絡
本文生成器G的模型采用了基于FCN(Fully Convolutional Networks)的語義分割網(wǎng)絡結(jié)構(gòu)U-net[6],如圖4所示,該網(wǎng)絡結(jié)構(gòu)包含上采樣和下采樣,上采樣通過下采樣的信息匯合輸入信息還原圖像精度,在我們對整個網(wǎng)絡的編碼過程中會對每一個塊分別進行編碼,而每一個塊編碼使用的方法結(jié)構(gòu)是卷積層到Batch Normalization層再到帶泄露修正線性單元激活函數(shù)層,用來解決在訓練過程中梯度爆炸和訓練速度過慢情況的發(fā)生.而在解碼部分我們也分別對每一塊進行解碼,采用的方法結(jié)構(gòu)是反卷積層到Batch Normalization層最后激活函數(shù)層可以采用Dropout激活函數(shù)或者是修正線性單元激活函數(shù).但是有區(qū)別的是最開始三個塊采用的是Dropout激活函數(shù)層,在這后面的塊區(qū)都采用了修正線性單元激活函數(shù).與此同時,每個編碼區(qū)域的塊輸出都指向了和它本身的解碼區(qū)域的塊連接,這個網(wǎng)絡結(jié)構(gòu)在圖像的細節(jié)處理方面能有一定的提升.
圖4 U-net網(wǎng)絡結(jié)構(gòu)
針對D,我們將判別器換成了全卷積網(wǎng)絡,也被稱為patchGAN.把判別器D的圖像區(qū)域分割成一小批一小批來處理,把整個圖片分割成n2個批次,然后再反復操作,再對每個區(qū)域操作以上步驟.將判別器換成了全卷積網(wǎng)絡,其中每一塊包括了Conv層、Batch Normalization層、修正線性單元激活函數(shù)層.本文輸入圖像數(shù)據(jù)集都是256*256像素圖像,我們將它們分為每70*70作為一個塊進行的.這個方法可以使實驗結(jié)果效果更加明顯,判別器D的模型如圖5所示:
圖5 判別器D模型
本文的模型訓練過程中計算的需求量比傳統(tǒng)的模型同比增加,使用CPU來實驗訓練時間為33小時,相對于CPU而言,使用圖形處理單元GPU訓練會很大程度的縮短時間提高效率.實驗平臺為Windows10 64位操作系統(tǒng),GPU使用NVIDIA GTX2060,16G內(nèi)存進行訓練,所使用的框架為Pytorch 2.6,所需要的Python庫有numpy、scipy、Pytorch、scikit-image、Pillow、opencv-python.
本文訓練所使用的數(shù)據(jù)集主要是漫畫圖像,該數(shù)據(jù)集使用網(wǎng)絡爬蟲從漫畫素材網(wǎng)站seeprettyface上抓取了28059張圖像,使用resize_all_imgs.py對所有圖片批量修改到256*256像素尺寸,部分原始圖像如圖6:
圖6 部分原始圖像
再使用grey_imgs.py對該數(shù)據(jù)集生成對應黑白和灰度圖像數(shù)據(jù),效果如圖7所示:
圖7 生成黑白效果圖
本文實驗所使用損失函數(shù)為GAN原始損失函數(shù),學習率為0.0001且保持固定,衰減權(quán)重為0.0001,更新權(quán)重0.1,每次迭代次數(shù)10000次,epoch設置為400次,并采用SGD法,針對GAN容易崩潰的情況,本文實驗應用修正線性單元作為激活函數(shù),求解器類型為ADAM,動量參數(shù)設置為0.5,λ為100.
我們采用提前訓練完成的網(wǎng)絡模型對測試數(shù)據(jù)集的28059張黑白和灰度圖像進行著色處理,CPU訓練耗費時長30多小時,GPU耗費10多個小時,本次訓練效果雖沒有達到預期圖像結(jié)果值,但是較傳統(tǒng)方法有了很大改變,相較于傳統(tǒng)圖像上色算法,本文算法優(yōu)勢在于訓練參數(shù)增加導致圖像細節(jié)上色方面處理更優(yōu),在圖像邊緣區(qū)域上色均勻,邊界連接處色彩區(qū)分明顯.同時,上色效果相較于傳統(tǒng)GAN模型上色產(chǎn)生的噪點要少,尤其對于大背景的圖片上色效果不錯.如圖8為訓練好的模型對測試數(shù)據(jù)集上色效果圖,左圖為灰度圖片,右邊為上色效果圖.
圖8 訓練效果圖
但是由于本實驗模型是基于傳統(tǒng)GAN模型優(yōu)化而來,生成對抗網(wǎng)絡極易崩潰,由此在訓練測試過程中可能呈現(xiàn)出部分過擬合狀況,導致著色效果不佳,生成部分失敗圖片,如圖9所示:
圖9 失敗案例
本文的實驗優(yōu)化并改進了一種基于生成對抗網(wǎng)絡的黑白和灰度圖像著色技術(shù),在常規(guī)GAN模型基礎(chǔ)上修改優(yōu)化參數(shù)提高圖像上色速率和視覺效果.在訓練好的模型上,黑白和灰度圖像可以批量著色,模型簡單,沒有太復雜的預處理過程,在超參選擇上略優(yōu)于傳統(tǒng)GAN上色方法,效果略優(yōu),但是這個方法大體基于傳統(tǒng)GAN結(jié)構(gòu)設計,訓練不穩(wěn)定,極易崩潰,所以可以修改生成對抗網(wǎng)絡中的生成器G與判別器D,需要針對D和G分別加入LSR用來防止過擬合現(xiàn)象的出現(xiàn),增強泛化能力.本文采用U型結(jié)構(gòu)生成器G來保留邊緣信息,構(gòu)建兩者映射關(guān)系來進行交互訓練.可以發(fā)現(xiàn),在整個訓練的進程中,由于GAN的生成器太過脆弱,圖像邊緣信息不易保存,網(wǎng)絡架構(gòu)不穩(wěn)定,優(yōu)化超參改變生成器和判別器模型,防止過擬合現(xiàn)象的出現(xiàn)尤其重要,但是本實驗方法上色效果優(yōu)于傳統(tǒng)GAN模型架構(gòu),給受眾群里的視覺沖擊力不錯,處理細節(jié)良好,因為本次實驗技術(shù)的訓練數(shù)據(jù)集無一不是低分辨率,在這個技術(shù)之后還要使用高分辨彩色圖像對應的黑白圖像數(shù)據(jù)集來完成更加高效的優(yōu)化.