










摘要:動漫手稿上色費時耗力,不斷嘗試才能確定滿意的色彩,一直是動漫行業線稿上色面臨的主要問題.文中研究了GAN和Pix2Pix網絡模型,采用U-Net結構,優化了基于Pix2Pix算法對灰度動漫手稿進行著色.首先,對灰度手稿數據集進行預處理,使數據集泛化能力增強;其次,對于G網絡模型采用8層對稱式的U-Net網絡,并優化了激活函數,使得G網絡模型可以生成更好的訓練圖像;最后,對于D網絡,加入條件y,與G網絡不斷迭代構建Pix2Pix模型,對數據集anime-faces進行裁剪、歸一、填充、色彩通道轉換等處理方法,利用深度學習網絡模型為灰度動漫手稿自動上色,解決底層信息不變,抑制顏色溢出問題.
關鍵詞:灰度圖像;GAN;Pix2Pix;深度學習
中圖分類號:TP391 文獻標志碼:A
Research and Implementation
of Animation Manuscript Coloring Based on Pix2Pix Algorithm
XU Cheng-jun1, CHEN Huai-yuan2
(1. School of Digital Media, Lanzhou University of Arts and Science, Lanzhou 730030, China;
2. School of Electronic and Information Engineering, Lanzhou Jiaotong University, Lanzhou 730070, China)
Abstract:Aiming at the time-consuming and labor-intensive coloring of animation manuscripts, it has been a major problem for the animation industry to continuously try to determine the satisfactory color. In this paper, GAN and Pix2Pix network models are studied, U-Net structure is adopted, and the gray animation manuscript is colored based on Pix2Pix algorithm. Firstly, the grayscale manuscript data set is preprocessed to enhance the generalization ability of the data set; secondly, for the G network model, the 8-layer symmetric U-Net network is adopted, and the activation function is optimized, so that the G network model can generate better training images; finally, for the D network, the condition y is added, and the Pix2Pix model is iteratively constructed with the G network. The data set anime-faces are cropped, normalized, filled, and color channel converted. The deep learning network model is used to automatically color the grayscale animation manuscript to solve the problem that the underlying information is unchanged and the color overflow is suppressed.
Key words:gray image; GAN; Pix2Pix; deep learning
“動漫”(Animation amp; Comic)即動畫、漫畫的集合,是一種深受大眾喜歡的藝術和娛樂方式[1].動漫場景是基于現實場景或人工繪圖形成線稿,再經過上色,最終成為動漫電影的畫面.2019年,廣東工業大學梁培俊[2]分別提出基于條件生成對抗網絡漫畫手繪圖隨機上色方法和改進的基于條件生成對抗網絡交互式上色方法,解決了顏色可控和顏色溢出的問題.2021年,西南交通大學熊發慶[3]研究了基于輕量級神經網絡與弱語義分割研究灰度圖像著色問題,設計了具有全局特征的著色模型和弱語義分割的著色模型,并且構造一種新的損失函數.2022年,浙江大學阮翊婷[4]提出了一種基于位置注意力的對抗著色方法,提高模型捕獲全局信息的能力,并減少低層冗余信息量,解決顏色混雜、邊緣溢出等問題;同時提出一種基于通道注意力的對抗著色方法,減輕了計算量,在獲得全局上下文信息時關注到圖像的通道特征.然而,動漫電影畫面是由不同靜止的畫面按照一定速度,由幀與幀體現出動態運動的場景,這意味著一部動漫電影需要多位設計師繪制眾多幅線稿來實現,整個制作過程耗時耗力.如何將黑白手繪圖的圖像用快速并且較好效果自動完成上色,即漫畫手繪圖自動上色,是目前研究者需要探討并解決的熱點問題.
在動漫制作領域,線稿上色分為兩種:一種是利用圖像風格遷移的方式對線稿進行填充;另外一種是基于深度學習進行線稿上色.線稿上色不僅耗費設計師大量的精力,還需要不斷嘗試直至確定出滿意的色彩,這項工作一直是動漫行業線稿上色的一大難題.在基于深度學習進行線稿上色時,GAN網絡模型雖然也能實現圖像上色問題,但模型無法準確控制新樣本的類型,而且需要的數據集規模較大.為此,采用Pix2Pix網絡結構實現小規模線稿上色[5],該方法具有較好的著色效果與泛化效果.
1 網絡模型
1.1 GAN網絡
伊恩·古德費洛等[6]提出GAN網絡(Generative Adversarial Networks,GAN),是一個基于復雜環境自學習模型的新框架,它主要通過研究對抗過程估計的方法生成模型,也是當前最具前景的一種深度學習方法.這種框架訓練出來的數據可以建立新的模型,使得產生的數據更具效益.
此框架由生成器網絡和判斷器網絡兩部分組成.生成器網絡試圖生成來自某種概率分布的數據;判斷器網絡決定輸入是來自生成網絡還是來自真正的訓練集.其運行原理為:在圖像生成中,若生成器網絡產生的圖像質量不高,則判斷器網絡就會向生成器網絡發送一個負反饋,此時生成器網絡按照判斷器網絡反饋對自身參數進行優化,以便再次生成的圖片質量不斷提升;判斷器網絡通過自身不斷自循環優化參數,提升自己模型和提高構造圖片的質量.具體內容為:
(1)生成器網絡G(Generator).它負責接受一個噪聲Ζ,通過噪聲Ζ生成圖片并記為G(z);
(2)判別器網絡D(Discriminator).主要目的就是檢查輸入圖片的真實性,輸入x代表一張圖片,D(x)代表真實度,若輸出值為1,則表示圖片真實度為100%;若輸出值為0,則表示圖片真實度為0%.
在訓練模型時,G的目標是生成真實的圖片使得D(x)的值盡可能接近1,D的目標是盡可能使G生成的圖片和真實圖片區分出來,由此,G和D就構建了一個動態的對抗網路,即GAN網絡.
我們訓練模型中的圖像假設是x,圖像數據的分布函數為Pdata(x),假設噪聲值為z,它的分布函數為Pz(z),在狀態最佳情況下,G(z)和Pdata(x)的分布區域接近.
根據訓練需求,我們將交叉熵損失[7]模型進行了改造,此時改造之后GAN網絡模型的損失函數為:
V(D,G)希望生成的圖片“越真實”,也就是D(G(z))盡可能大,這時V(D,G)將會變小.D的能力越強,D(G(z))應該盡可能小,這時V(D,G)將會變大.
1.2 Pix2Pix網絡模型
GAN網絡模型在實際研究中也產生了新樣本,這種訓練具有不穩定性,在生成圖像中會出現噪聲和顏色錯位等信息,且無法控制新樣本的類型,因為這些樣本是根據輸入的噪聲數據z隨機生成的,在GAN基礎上,我們需要加入一個條件y,使得產生的樣本容易進行人為干預.因此,Pix2Pix網絡模型可以解決輸入和輸出相近圖片的特征結構,這是一種基于訓練條件產生的對抗網絡(CGAN)圖像翻譯的網絡模型.
Pix2Pix網絡實際就是生成器和判別器兩種網絡,也是基于生成式對抗網絡框架的一種.Pix2Pix網絡的判別器延續了U-Net網絡結構,類似解編碼器,編碼器卷積層有8層,解碼器反卷積有7層.Pix2Pix訓練原理如圖1所示,G生成網絡只有一個輸入接口,輸入條件y,y可以是某張圖片(imgA),輸出端為imgB的圖片,通過訓練將實現imgA轉換成imgB的圖像效果.判別器網絡D輸入為x和y,其中x是實際圖片imgB,利用這個思路實現imgA和imgB成對訓練,判斷G生成的imgB是否利用判別器產生為真,訓練結束就可以正確判別G生成的圖片imgB的真實性.
G網絡是U-Net不斷創新衍生的全卷積神經網絡,高分辨率由淺到深解決圖像像素點定位.像素點分類由較深的層來解決,輸入和輸出沒有全連接層,其中kernel_size=4.G網絡生成器結構如圖2所示[8].
Pix2Pix網絡的編碼和解碼與U-Net網絡有區別,U-Net網絡是通過跳過技術進行連接,也就是說反卷積層的輸入來自上一層卷積層輸出的數據,采用不同的值不斷將特征值進行參數代換,讓訓練圖像保留更多的優勢特征值.
ReLU作為激活函數,x小于0時,ReLU的導數為0;x大于0時,ReLU的導數為1.這個特性讓學習信息保持恒定向前傳輸,有效解決梯度消失和梯度爆炸問題,使模型計算更方便,加快網絡訓練,函數表達式為:
在下采樣時激活函數采用ReLU,函數曲線如圖3所示.
在上采樣中,前7層激活函數更換為ReLU,相較于原算法的激活函數,此激活函數在一定程度上保留了負值,使得模型精度可以提高.訓練最后為了更好解決梯度消失問題采用softsign函數,其曲線結構如圖4所示.其取值最大為1,softsign作為激活函數也會存在梯度消失的問題.
對GAN網絡而言,加上條件y后損失函數為:
對于image-to-image來說,G的輸入和輸出之間共享了許多信息,因此加入L1-loss為:
最終損失函數為
2 數據集預處理
實例中訓練集用Train表示,測試集用Val表示,能夠實現邊訓練、邊查看訓練的實驗結果.評價模型結果的測試集用Test表示,實際操作中,只要存在訓練集(Train)就可以實驗,Val不是核心甚至可以將它的比例設置很小,Test也可以不評價模型訓練,通常要保留一些數值用來檢測訓練集,本文推薦比例是8∶1∶1.
2.1 數據集選取
本文采用的數據集是anime-faces[9]數據集,選取過程為:
def Preprocess(path): #對路徑內所有圖片遍歷,刪除不符合大小的圖片.
imgPaths=get_img_path(path) #獲取圖片路徑
for imgPath in tqdm(imgPaths):
imgTest = cv2.imread(imgPath, cv2.IMREAD_COLOR) #讀取圖片
try:
if imgTest==None:
os.remove(imgPath)
except:
if imgTest.shape[0]lt;64: #查看圖片大小
os.remove(imgPath)
2.2 數據增強
數據增強的目的是從現有的數據中進行旋轉、平移、錯切變換角度、隨機縮放等變換,產生更多的訓練數據.最后要對訓練的數據進行歸納、統一圖片大小,并將圖片通道轉換為Lab通道,將圖片組合并把圖片格式轉換為png.具體實現過程為:
test_sjgen = ImageDataGenerator(fill_mode=‘nearest’,rescale=1/254,rotation_range=41,height_shift_range=0.3, width_shift_range=0.3 ,shear_range=0.3,zoom_range=0.21)
test_gen= test_sjgen.flow_from_directory(test_dir,target_size=(160,160),batch_size=batch_size,class_mode=‘binary’)
通過提取動漫手稿特征:
feat_batch = conv_base.predict(inputs_batch)
feat[i*batch_size:(i+1)batch_size] = feat_batch
labs[ibatch_size:(i+1)batch_size] = labs_batch
定義訓練模型:
mdl = models.Sequential()
mdl.add(conv_base)
mdl.add(layers.Dense(256, input_dim = 4,4,512 ,activation=‘relu’))
mdl.add(layers.Dropout(0.5))
mdl.add(layers.Dense(1,activation=‘sigmoid’))
conv_base.testable = False #凍結模型的層,防止原參數被改動
mdl.compile(optimizer=optimizers.RMSprop(lr=np.exp(-5)),loss=‘binary_crossentropy’,metrics=[‘acc’])
history = mdl.fit(test_feat,test_labs,epochs=30,batch_size=20,validation_data=(validation_features,validation_labels))
2.3 數據分割
對圖片先進行排序,后轉換,再擴展到Train、Test、Val中,具體實現過程為:
def detect(filename,cade_fl1 = \"../animeface.xml\"):
if not os.path.isfile(cade_fl1):
raise RuntimeError(\"%s: not found\" % cade_fl1)
cascade = cv2.CascadeClassifier(cade_fl1)
imge1 = cv2.imread(filename, cv2.IMREAD_COLOR)
gray = cv2.cvtColor(imge1, cv2.COLOR_BGR2GRAY)
gray = cv2.equalizeHist(gray)
faces = cascade.detectMultiScale(gray,scaleFactor = 1.1,minNeighbors = 5,minSize = (24,24)) # 檢測數據設置
3 實驗及結果分析
3.1 實驗數據及環境
使用上述處理過的數據集進行實驗,所有實驗都在兩臺計算機上完成.計算機1和2配置均采用紅旗Linux(64位)操作系統、英特爾i5-1035 1.00 GHz、1.19 GHz CPU、16.00 GB內存、英偉達 MX230顯卡,安裝Python 3.6.8、Tensor Flow1.4.0運行環境.
3.2 實驗流程
首先進行數據預處理,對數據集進行裁剪、歸一、填充、色彩通道轉換;然后將數據集進行分割,分割為Train、Test、Val,將處理好的數據按照其數據特性對數據集進行針對性訓練.對數據集Train部分通過G網絡訓練得到訓練圖片,然后通過D網絡進行對比,循環迭代,將得到的結果帶入損失函數中進行計算,得出的精度用于Pix2Pix模型,直接采用網絡上公開的模型進行實驗.結合文中數據集預處理過程,具體步驟如下:
(1)利用雙邊濾波器方法將RGB圖像轉換為卡通圖像,降低圖片的色彩,讓圖片平滑區域的邊框保持清楚,在雙邊濾波器[10]中通過num_bilateral=7參數設置.在cv2.bilateralFilter函數中主要設置像素鄰域的直徑、濾波器的標準偏差和坐標空間3個變量實現顏色空間的閾值;
(2)將彩色圖像轉換成灰色圖像,采用中值濾波器降低圖像噪點.OpenCV提供邊緣檢測的方法有多種,自適應閾值處理的優點是將檢測的圖像細分成多個小領域,突出每個小領域的最佳特征,這些特征獨立于原圖的屬性,中值濾波器通過圖像細分功能將原彩色圖像轉變為灰度圖,再利用中值模糊原理降低灰度圖像中的噪聲;
(3)對(2)產生的灰度圖像使用自適應閾值原理勾畫出灰度圖像的輪廓.利用cv2.ADAPTIVE_THRESH_MEAN_C算法,設置blockSize=9對通過自適應閾值勾畫出來的輪廓進行圖像再次降噪處理,這樣確保閾值像素鄰域在9*9范圍內平均值減少C=2;
(4)將(1)的彩色原圖和(3)勾畫出的輪廓進行疊加,產生一個新的彩色圖像.也就是將需要處理的彩色原圖要與圖像邊緣掩碼進行疊加產生一個全新的卡通圖像.通過(3)產生的卡通圖像有時在視覺效果上不盡人意,日常處理中我們借助Photoshop來進行細微優化.
3.3 結果分析
通過上述實驗步驟,借助anime-faces數據集進行測試,應用G網絡模型構建訓練過程,在U-Net網絡模型基礎上,將經典的4層對稱網絡結構改為8層對稱網絡結構,驗證了Pix2Pix算法對黑白動漫手稿著色平均一張耗時約0.81 s,滿足底層信息不變和著色合理的要求.具體訓練的動漫手稿上色結果如圖5所示.
激活函數也進行相應調整,以便能保存更多的傳入的噪聲數據Z,解決顏色溢出問題,使訓練圖片更符合我們的需求.
漫畫手稿與灰度圖像著色不同,沒有強度和紋理特征之分,僅采用輪廓就可以進行網絡判斷著色,從訓練損失變化看,實驗迭代了120次,損失雖然有所下降,但總體不影響生成器模型產生的著色圖與真實彩色圖像.
4 結語
文中研究了GAN和Pix2Pix網絡模型,采用了U-Net結構,優化了基于Pix2Pix算法對灰度動漫手稿進行著色,分別對灰度動漫手稿和動漫上色問題進行了研究.以anime-faces數據集為例,根據灰度動漫手稿的特點,通過顏色上色進行訓練,再經過GAN和Pix2Pix網絡模型等算法對動漫手稿圖像確定具體上色的位置,將訓練的數據集輸送給Pix2Pix網絡的生成器和判別器進行反復訓練,直到兩類訓練基本平衡就可以計算出手稿上色的生成器.實驗結果與CGAN網絡生成圖像進行對比,驗證了Pix2Pix網絡對動漫手稿上色的實際效果優勢,實驗結果表明本文動漫手稿上色方法可行.
參考文獻:
[1] 動漫_百度百科[EB/OL].(2017-05-10)[2022-09-20].https://baike.baidu.com/item/%E5%8A%A8%E6%BC%AB/123835?fr=aladdin.
[2] 梁培俊.基于深度神經網絡的漫畫手繪圖上色方法研究[D].廣州:廣東工業大學,2019.
[3] 熊發慶.基于輕量級神經網絡的圖像自動著色與動漫人臉生成研究[D].成都:西南交通大學,2021.
[4] 阮翊婷.基于生成對抗網絡的交互式線稿著色方法研究.[D].杭州:浙江大學,2022.
[5] 張媛媛,張紅英.基于pix2pix網絡結構的單曝光HDR圖像生成方法[J].計算機工程與應用,2022,58(16):242-248.
[6] 馬悅.基于pix2pix模型的單幅圖像去霧算法[J].電子設計工程,2021(2):62-70.
[7] GUO LIANG,SONG GUANFENG,WU HONGSHENG.Complex-valued pix2pix-deep neural network for nonlinear electromagnetic inverse scattering[J].Electronics,2021(6):1537-1543.
[8] ZHANG J,GONG Q,ZHANG H, et al.A novel Pix2Pix enabled traveling wave-based fault location method[J].Sensors,2021,21(5):1633-1641.
[9] KRIZHEVSKY A,SUTSKEVER I,HINTON G E.ImageNet classification with deep convolutional neural networks[J].Communications of the ACM,2017,60(6):84-90.
[10] 照片卡通化[EB/OL].(2018-2-8)[2022-05-15].http://blog-csdn-net-s.vpn.luas.edu.cn:8118/u0107
85091/article/details/79372626.
[責任編輯:李 嵐]