陳 芳
(蘇州信息職業(yè)技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系,江蘇 蘇州 215000)
許多計(jì)算機(jī)視覺(jué)問(wèn)題都采用顏色一致性處理作為預(yù)處理步驟,以確保在不同光照條件下記錄的場(chǎng)景中物體的顏色不會(huì)發(fā)生變化[1]。貝葉斯法[2]以反射率和光源的變異性建模為隨機(jī)變量,根據(jù)圖像強(qiáng)度的后驗(yàn)分布估計(jì)光源。文獻(xiàn)[3]訓(xùn)練1個(gè)圖像分類(lèi)器對(duì)室內(nèi)和室外圖像進(jìn)行分類(lèi),并提出了不同的試驗(yàn)框架來(lái)選擇各類(lèi)別的最佳算法。文獻(xiàn)[4]使用圖像的內(nèi)在與低級(jí)別屬性為給定圖像選擇最佳算法。文獻(xiàn)[5]利用威布爾參數(shù)化訓(xùn)練了1種基于混合高斯的最大似然分類(lèi)器,從而為特定圖像選擇出性能最好的顏色一致性方法。文獻(xiàn)[6]采用高水平視覺(jué)信息從1組可能的光源中選擇最佳光源。文獻(xiàn)[7]研究如何自動(dòng)檢測(cè)出具有固有顏色的物體。文獻(xiàn)[8]采用圖像中的表面信息,通過(guò)無(wú)監(jiān)督學(xué)習(xí)的方法解決了訓(xùn)練圖像中每個(gè)訓(xùn)練表面的合適模型的顏色一致性問(wèn)題。
本文采用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)對(duì)圖像進(jìn)行自動(dòng)白平衡調(diào)整,使得場(chǎng)景光源的學(xué)習(xí)和預(yù)測(cè)在局部區(qū)域塊上進(jìn)行。以前的方法通常是在整個(gè)圖像上積累特征,以估計(jì)整體光源的統(tǒng)計(jì)數(shù)據(jù),只有少數(shù)幾種方法顯示了估計(jì)空間變化的光源的能力。相比之下,本文方法可以估計(jì)小塊的光源。試驗(yàn)結(jié)果表明,本文方法在標(biāo)準(zhǔn)的RAW圖像數(shù)據(jù)集上取得了較好的效果。
本文提出的使用深度學(xué)習(xí)進(jìn)行光源估計(jì)的框架為:首先,對(duì)每張彩色圖像進(jìn)行非重疊采樣,以得到一些圖像塊;然后,通過(guò)直方圖拉伸對(duì)每個(gè)圖像塊進(jìn)行對(duì)比度歸一化。本文使用CNN估計(jì)每個(gè)圖像塊的光源,并結(jié)合圖像塊的“整體打分”獲得整張圖像的光源估計(jì)。
為了實(shí)行camera圖像的色彩一致性算法,本文提出了1個(gè)5層網(wǎng)絡(luò)的淺層架構(gòu)。它是1個(gè)32×32×3、32×32×240、4×4×240、40、3結(jié)構(gòu)。網(wǎng)絡(luò)輸入為經(jīng)過(guò)對(duì)比度歸一化的32×32圖像塊。第一層是卷積層,使用240個(gè)卷積核對(duì)輸入進(jìn)行濾波。每個(gè)核的空間大小為1×1×3。步長(zhǎng)為1個(gè)像素。此卷積層首先生成240個(gè)大小為32×32的特征圖,然后使用8×8 大小濾波器和步長(zhǎng)為8個(gè)像素的下采樣層進(jìn)行最大池化操作,得到的結(jié)果是將每個(gè)特征圖削減為4×4 大小的特征圖。隨后,卷積層被重塑為3 840×1(4×4×240)的向量。此后,卷積層全連接1個(gè)40×1大小的向量。最后的輸出層是1個(gè)簡(jiǎn)單的線性回歸,輸出三維光源照度估計(jì)值。
為了在不同的光照條件下具有魯棒性,本文對(duì)所有提取到的圖像塊皆進(jìn)行了對(duì)比度歸一化。在不同的對(duì)比度增強(qiáng)技術(shù)中,本文選擇了全局直方圖拉伸。這是因?yàn)槿种狈綀D拉伸不會(huì)改變3個(gè)顏色通道的相對(duì)貢獻(xiàn)權(quán)重。此外,由于色彩一致性是基于全局開(kāi)展的,神經(jīng)網(wǎng)絡(luò)有更加明確的優(yōu)化方向。這有利于算法的收斂。
卷積層將對(duì)比度歸一化后的圖像塊與240個(gè)濾波器進(jìn)行卷積。每個(gè)濾波器對(duì)應(yīng)生成1個(gè)特征圖。本文在每個(gè)特征圖上應(yīng)用最大池化來(lái)減少濾波器的響應(yīng),使其下降到1個(gè)更低的維數(shù)。與目標(biāo)識(shí)別場(chǎng)景中的下采樣層通常傾向于在較小的鄰域上執(zhí)行不同,即使在場(chǎng)景光源是空間變化的情況下,其也是局部同質(zhì)的,即1個(gè)32×32大小的圖像塊中所有位置都傾向于擁有相同的光源。這也啟發(fā)了本文使用更大的池化核。
與雙曲正切函數(shù)和Sigmoid函數(shù)相比,修正線性單元(rectified linear unit,ReLU)在獲得幾乎相同性能的同時(shí)能使網(wǎng)絡(luò)的訓(xùn)練速度快幾倍。因此,本文在全連接層中使用ReLU。此外,ReLU增加了神經(jīng)網(wǎng)絡(luò)的非線性映射與擬合的能力,使得模型可以更好地學(xué)習(xí)到適合色彩一致性的參數(shù)。更重要的是,相比于前2個(gè)激活函數(shù),ReLU避免了網(wǎng)絡(luò)可能存在的、因梯度消失而導(dǎo)致的神經(jīng)元滅活現(xiàn)象。
除了設(shè)計(jì)并學(xué)習(xí)1個(gè)專(zhuān)門(mén)針對(duì)顏色一致性問(wèn)題的CNN,本文還研究了經(jīng)過(guò)預(yù)訓(xùn)練的CNN是如何處理這些問(wèn)題的。為此,本文使用文獻(xiàn)[9]所描述的AlexNet網(wǎng)絡(luò)輸入227×227 RGB圖像,通過(guò)5個(gè)卷積層和2個(gè)全連接層前向傳播來(lái)得到1個(gè)4 096維的特征向量。本文通過(guò)提取最后1層隱含層的激活值來(lái)獲得特征,將提取的特征作為支持向量回歸 (support vector regression,SVR)[10]的輸入來(lái)估計(jì)每張圖像的光源顏色。在試驗(yàn)結(jié)果中,本文將這種方法稱(chēng)為AlexNet+SVR。
為了測(cè)試算法的性能,本文使用帶有明確顏色標(biāo)準(zhǔn)的RAW圖像數(shù)據(jù)集[2]。該數(shù)據(jù)集是以sRGB格式提供的,但是文獻(xiàn)[3]對(duì)其進(jìn)行了重新處理,以獲得具有更高動(dòng)態(tài)范圍(14 bits)的線性圖像數(shù)據(jù)。該數(shù)據(jù)集是用高質(zhì)量的數(shù)碼單反相機(jī)以RAW格式拍攝的,因此不需要任何顏色校正。該數(shù)據(jù)集是使用佳能5D和佳能1D單反相機(jī)采集的,共包含568幅圖像。每個(gè)場(chǎng)景下皆包含色彩檢驗(yàn)色卡(macheth color checker,MCC)。這樣能準(zhǔn)確估計(jì)每張圖像的實(shí)際光源強(qiáng)度。
一般而言,評(píng)價(jià)圖像增強(qiáng)的性能主要有2種度量指標(biāo),分別為結(jié)構(gòu)相似性(structural similarity,SSIM)與峰值信噪比(peak signal-to-noise ratio,PSNR)。為了與其他方法進(jìn)行對(duì)比,本文選取了反余弦誤差函數(shù):
(1)
式中:α1×3為真實(shí)的光源RGB強(qiáng)度向量分布;β1×3為估計(jì)得到的光源RGB分布。
為了證明算法的有效性,本文與一些其他的算法進(jìn)行了關(guān)于白平衡的對(duì)比。由于數(shù)據(jù)集的每幅圖像只包含1個(gè)MCC,因此只能基于均勻光照的假設(shè)來(lái)比較相互之間全局顏色的一致性性能。對(duì)基于假設(shè)的場(chǎng)景光源糾正法而言,在估計(jì)光源光照時(shí),唯一已知的信息是傳感器對(duì)輸入圖像的響應(yīng)(即RAW圖)。因此,圖像白平衡從這種角度來(lái)看屬于1個(gè)欠定問(wèn)題[1]。此時(shí)需要進(jìn)行進(jìn)一步的假設(shè)。常見(jiàn)的是假設(shè)場(chǎng)景中始終有1個(gè)均勻光源,即p(w,h)=C。其中,C為常數(shù)。基于這項(xiàng)假設(shè),后續(xù)許多方法都能以實(shí)例化式開(kāi)展:
(2)
式中:n為導(dǎo)數(shù)的階數(shù);m為閔可夫斯基范數(shù);Iδ(w,h)=I(w,h)?Gδ(w,h)為圖像經(jīng)過(guò)參數(shù)為δ的高斯濾波之后的結(jié)果;k通常為了歸一化而取值2。
(n,m,δ)的不同取值對(duì)應(yīng)于不同的自動(dòng)白平衡算法。其中,每種算法的提出又基于不同的假設(shè)。例如,(n,m,δ)=(0,1,0)對(duì)應(yīng)于灰度世界算法。此算法假設(shè)圖像中平均下來(lái)的所有點(diǎn)的RGB分量相等,即R=G=B。因此,光源的顏色可根據(jù)圖像顏色通道中的平均顏色與灰度之間的偏移量來(lái)估計(jì)。(n,m,δ)=(0,∞,0)對(duì)應(yīng)于白塊算法。此算法假設(shè)場(chǎng)景中總是有1個(gè)白塊,并且每個(gè)顏色分量通道的最大值是由光源在該白塊上的反射引起的,以此來(lái)估計(jì)光源顏色。(n,m,δ)=(1,0,0)對(duì)應(yīng)于灰邊算法。此算法假設(shè)邊緣的平均色度為灰色,而光源顏色可以通過(guò)估計(jì)圖像顏色通道中邊緣的平均顏色與灰色的偏移量來(lái)求得。色域映射方法假設(shè)對(duì)于給定的光源,人們只能觀察到有限的色域。該方法具有1個(gè)初始階段。在此階段可選擇1個(gè)標(biāo)準(zhǔn)光源,并在該標(biāo)準(zhǔn)光源下可以觀察到盡可能多的圖像表面時(shí)計(jì)算標(biāo)準(zhǔn)色域。該方法給定1幅光源未知的輸入圖像,計(jì)算其色域,并且當(dāng)映射可以被應(yīng)用于輸入圖像的色域時(shí)光照可以被估計(jì),從而得到一個(gè)完全在標(biāo)準(zhǔn)色域內(nèi)的色域,并產(chǎn)生最終的場(chǎng)景。此外,在已知相機(jī)的光譜靈敏度函數(shù)的情況下,利用相關(guān)方法也可得到相應(yīng)的顏色。本文有7個(gè)對(duì)比算法是通過(guò)改變式(2)中的(n,m,δ)變量得到的,并且它們皆為廣泛使用的顏色一致性算法。不同算法的參數(shù)如表1所示。

表1 不同算法的參數(shù)
表1中的放羊算法,對(duì)每幅圖像的光源顏色皆給出相同的估計(jì)[(n,m,δ)=(1,1,1)],從而假設(shè)圖像已經(jīng)達(dá)到了白平衡。此算法從某種角度看也屬于基于假設(shè)的場(chǎng)景光源糾正法。
試驗(yàn)環(huán)境為Python+Pytorch+Cuda+Cudnn+Linux,顯卡為Nvidia Titan RTX,總推理時(shí)間為54 ms/幀。本文使用遷移學(xué)習(xí)的方法。為了快速收斂,本文在參考Alexnet先驗(yàn)信息的情況下通過(guò)消融試驗(yàn)進(jìn)行了網(wǎng)絡(luò)參數(shù)的設(shè)置。試驗(yàn)設(shè)置層數(shù)為5、學(xué)習(xí)率為1×10-3、Batch(數(shù)據(jù)輪次)為32、Epoch(數(shù)據(jù)批次)為30、Dropout率為0.5。
試驗(yàn)在RAW格式的圖像中提取的32×32隨機(jī)色塊上訓(xùn)練CNN。相機(jī)圖像的大小已調(diào)整為max(w,h)=1 200。本文使用3折交叉驗(yàn)證方法訓(xùn)練網(wǎng)絡(luò),即數(shù)據(jù)集中三等分,分別用于訓(xùn)練、驗(yàn)證和測(cè)試。為了進(jìn)行訓(xùn)練,本文為每個(gè)圖像塊皆分配了與其所屬圖像對(duì)應(yīng)的光源真實(shí)標(biāo)簽。在測(cè)試時(shí),通過(guò)合并預(yù)測(cè)得到的每個(gè)圖像塊的光源強(qiáng)度,為每個(gè)圖像生成單個(gè)光源估計(jì)。與在給定數(shù)據(jù)集上使用整個(gè)圖像相比,使用圖像塊作為輸入使得試驗(yàn)擁有大量的訓(xùn)練樣本,能更好地進(jìn)行學(xué)習(xí),同時(shí)也避免了過(guò)擬合。使用的損失函數(shù)為歐幾里得損失函數(shù)。而一旦估計(jì)到了場(chǎng)景光源顏色p,則圖像中的每個(gè)像素可以通過(guò)文獻(xiàn)[11]中的模型進(jìn)行矯正。
不同算法的性能比較如表2所示。

表2 不同算法的性能比較
由表2可知不同算法在RAW圖像集上得到的反余弦誤差的最小值(Min)、第10百分位數(shù)(Prc10-th)、中值(Med)、平均值(Avg)、第90百分位數(shù)(Prc90-th)和最大值(Max)。表2中,序號(hào)1~8為基于假設(shè)的場(chǎng)景光源糾正法,序號(hào)9~12為基于統(tǒng)計(jì)學(xué)習(xí)的算法,序號(hào)14~17為所提方法的不同變體。在數(shù)據(jù)集[9]上預(yù)先訓(xùn)練的深度CNN加上SVR(即序號(hào)13的AlexNet+SVR)已經(jīng)能夠超過(guò)大多數(shù)基于假設(shè)的場(chǎng)景光源糾正法和一些基于統(tǒng)計(jì)學(xué)習(xí)的算法。就中值誤差而言,所提方法優(yōu)于一半以上的其他算法。本文方法(平均池化)和本文方法(中值池化)是通過(guò)在整個(gè)圖像上對(duì)基于圖像塊的光源估計(jì)的方法進(jìn)行池化而獲得的結(jié)果。本文考慮了2種非常簡(jiǎn)單的池化策略,即平均池化和中值池化。就中值誤差而言,這2種算法的表現(xiàn)都優(yōu)于大多數(shù)先進(jìn)的算法,平均池化的最大誤差僅比基于統(tǒng)計(jì)學(xué)習(xí)的最佳算法差0.3%。表2中的最后一行是采用中值池化和反余弦誤差損失并經(jīng)過(guò)微調(diào)的CNN??梢钥吹?它在中值誤差、平均值誤差和最大值誤差均達(dá)到了在對(duì)比方法中的最佳性能。值得注意的是,這些最佳結(jié)果都是在本文算法上同時(shí)達(dá)到的,而之前算法的最優(yōu)解分布于不同的算法當(dāng)中。這進(jìn)一步佐證了本文算法的有效性。試驗(yàn)結(jié)果對(duì)比如圖1所示。

圖1 試驗(yàn)結(jié)果對(duì)比
為了比較本文算法在不同網(wǎng)絡(luò)層數(shù)和不同Batch大小下對(duì)性能的影響,不同網(wǎng)絡(luò)層數(shù)和Batch大小對(duì)中值誤差的影響如表3所示。

表3 不同網(wǎng)絡(luò)層數(shù)和Batch大小對(duì)中值誤差的影響
由表3可知,5層網(wǎng)絡(luò)和Batch大小為32時(shí)誤差最低。這也是本文網(wǎng)絡(luò)選擇參數(shù)的緣由。網(wǎng)絡(luò)收斂情況如圖2所示。

圖2 網(wǎng)絡(luò)收斂情況
訓(xùn)練結(jié)果顯示,隨著Epoch的不斷增加,損失值迅速減少,經(jīng)過(guò)30個(gè)Epoch后,基本可以實(shí)現(xiàn)網(wǎng)絡(luò)的收斂。此時(shí),訓(xùn)練完成。
在不同色溫光源下的傳感器成像不具有類(lèi)似于人眼的白平衡特性,使得圖像顏色跟隨環(huán)境光而改變。因此,本文提出了基于CNN的camera圖像色彩一致性算法,以準(zhǔn)確預(yù)測(cè)環(huán)境光源。所使用的深度主干網(wǎng)絡(luò)由2個(gè)卷積層、1個(gè)池化層和2個(gè)全連接層組成,以圖像塊為輸入,而非之前常用的手工特征。在提出的網(wǎng)絡(luò)架構(gòu)中,本文將特征學(xué)習(xí)和回歸集成到1個(gè)端到端的優(yōu)化過(guò)程中,并使得場(chǎng)景光源的學(xué)習(xí)和預(yù)測(cè)在局部塊區(qū)域上進(jìn)行,可得到1個(gè)更有效的場(chǎng)景光照估計(jì)模型。在不同光源場(chǎng)景下的圖像集上進(jìn)行的初步試驗(yàn)證明了提出的camera圖像色彩一致性算法的有效性。