高君宇, 賈潤達,*, 郎 督, 李 康
(1.東北大學信息科學與工程學院,遼寧 沈陽 110819;2.礦冶科技集團有限公司,北京 100160)
泡沫浮選用于微細粒礦物質的分離提取,是應用于金屬、化工和煤炭等工業(yè)領域的原料分離技術[1-2]。目前,在礦物分選過程中,浮選操作的調整主要依賴人工對浮選泡沫表面特征的判斷,自動化水平較低,且易造成礦物資源、浮選藥劑和人力資源的浪費[3-5]。近年來,計算機視覺(Computer Vision, CV)技術迅速發(fā)展,使用計算機分析浮選泡沫圖像對資源的節(jié)約、效率的提高以及自動化水平的提升具有重要的意義[6-9]。在利用CV技術進行學習時,往往需要大量的離散數據來完成模型的訓練,因此在工業(yè)現(xiàn)場需要保存大量的高分辨率浮選泡沫圖像。為了降低工控機存儲與傳輸數據的負擔,可利用JPEG算法壓縮泡沫圖像以獲得小格式的文件[10-12]。但壓縮后的圖像難以高質量的呈現(xiàn)浮選泡沫圖像的全部特征,為后續(xù)圖像處理帶來困難[13]。因此,提出利用JPEG算法對工業(yè)現(xiàn)場的高分辨率浮選泡沫圖像進行壓縮處理以獲得低分辨率的圖像,減少工業(yè)應用中保存大量浮選泡沫圖像所需的存儲空間;在此基礎之上,利用生成對抗網絡(Generative Adversarial Networks, GAN)重建受損的低分辨率圖像,恢復低分辨率圖像的色差、細節(jié)、輪廓以及失真區(qū)域,重新得到高分辨率的浮選泡沫圖像。
泡沫浮選法是一種利用礦物顆粒表面物理化學性質差異,實現(xiàn)不同礦物有效分離的選礦方法,而浮選泡沫表面的特征可反映浮選過程的運行狀態(tài)。針對在工業(yè)現(xiàn)場難以儲存大量高分辨率浮選泡沫圖像的問題,利用JPEG算法對圖像進行壓縮以減少所需的圖像儲存空間。
泡沫浮選法是一種常用的礦物分離技術,其分離流程包括礦物破碎、礦物懸浮液制備、攪拌混合、氣泡吸附、溶液收集和廢料處理六部分[14]。以浮選柱為例,礦漿、藥劑從浮選柱頂端給入,利用尾礦的排出量控制礦物浮選。柱體頂部負責收集浮選精礦,尾礦則由尾礦口排出。空氣由導氣管吸入,被破碎為氣泡,形成氣液固三相體系。浮力和離心力使氣泡與礦漿發(fā)生碰撞,氣泡在上升過程中不斷礦化,實現(xiàn)礦物的浮選。
利用人工經驗和大量數據樣本,可以提取浮選泡沫圖像特征,實現(xiàn)浮選過程運行狀態(tài)的評價以及優(yōu)化操作。但是有損壓縮的圖像會損失大量信息,在壓縮程度較大的情況下圖像失真、模糊等問題尤為嚴重,需要一種有效的方法對壓縮后的圖像進行重建,復原其原有的信息。
使用JPEG算法對圖像進行壓縮時,首先要進行YCrCb彩色空間到RGB彩色空間的轉換,如式(1)—(3)所示:
Y=0.299R+0.587G+0.144B-128
(1)
Cr=0.500R-0.4187G-0.0813B
(2)
Cb=-0.1687R-0.3133G+0.500B
(3)
然后,將信源圖像劃分為8×8的像素塊,并由這些像素塊構成最小編碼單位(Minimum Coded Unit,MCU)的像塊集合。在空間轉換后,采用圖像子采樣方法對圖像進行采樣。對經過顏色空間轉換后得到的三個8×8的矩陣做二維DCT轉換分解為直流分量和交流分量,其轉換公式如式(4)所示:
F(u,v)=alpha(u)·alpha(v)·
(4)
其中u,v=1,2,...,7,且
(5)
對DCT變換后的數據量化來增加零系數的數目,降低精度來減少數據量。在JPEG算法中,對64個DCT變換系數,除以對應的量化步長,四舍五入取整,系數的排列方式采用Z字排列方式。最后,對系數進行基于統(tǒng)計特性的熵編碼,由于直流分量和交流分量的性質不同,需要對其采用不同的編碼方式,對直流參數采用插值脈沖編碼,而對交流參數采用哈夫曼編碼[15]。
針對壓縮后的低分辨率浮選泡沫圖像難以真實反應原始圖像細節(jié)特征等問題,提出利用GAN對壓縮后的低分辨率圖像進行重建,還原大部分的丟失細節(jié)特征,得到高分辨率的重建圖像,以滿足浮選泡沫圖像分析的需求。
算法的訓練階段流程如圖1所示。將低分辨率的圖像輸入生成器(Generator),訓練GAN。生成器生成的數據交由判別器(Discriminator)和真實數據比較,并試圖使生成的數據欺騙判別器,判別器對生成器生成的數據給出精確的判斷,并返回生成數據為真的概率。當判別器無法判定生成器生成的數據是否為真或假時,訓練完畢,此時生成器生成的數據和真實數據具有相同的特征,在此過程中生成器和判別器不斷使用極大極小算法調整參數[16]。在測試階段中,將未經訓練的低分辨率圖像,輸入到經過訓練后的生成器中,得到重建的高分辨率圖像。
圖1 訓練階段流程圖
2.2.1 生成式網絡模型結構
生成式網絡采用如圖2所示的RRDBNet模型。該模型主干由3個RRDB密集殘差塊構成,每個RRDB殘差塊包括5個卷積層和LReLU作為激活函數。LReLU函數表達式為:
(6)
其中,x為卷積運算后的輸出值,γ通常為很小的常數。該激活函數在輸入大于“0”時,梯度恒為“1”,當輸入小于“0”時,存在微小的梯度,計算簡單,提高了算法的效率,同時避免了神經元“死亡”。
密集連接的卷積層可以提取豐富的局部特征,RRDB模塊借助多層連接,跳躍結構和密連結構使每一層都具有殘差結構,同時0~1之間的殘差結構系數β可以穩(wěn)定模型,既可以防止梯度消失,又使每一層都融合了其他層的特征,豐富了特征層級,便于更好的提取特征。RRDB模塊去掉了BN層來防止因歸一化時訓練和測試兩個過程中均值和方差差別太大造成的偽影,提高了網絡的泛化能力。
2.2.2 判別網絡模型結構
判別式模型采用圖3所示的VGG19卷積神經網絡,其包含16個卷積層與3個全連接層,中間為池化層,最后為Softmax層。VGG19采用3×3的卷積核進行卷積運算來更多的提取圖像特征[17]。
圖2 RRDBNet網絡結構
圖3 VGG19網絡結構
卷積層輸入輸出關系如式(7)所示:
yconv=δ(Mat·W+b)
(7)
其中,yconv是輸出結果,δ(·)是激活函數,Mat為灰度圖矩陣,W是卷積核,b是偏置值。激活函數采用ReLU函數,其表達式為:
f(x)=max(0,x)
(8)
池化層采用步長為2,池化框尺寸為2×2的最大池化(Maxpooling)方法對圖像特征做進一步的提取。表達式為:
fpool=max(xm,n,xm+1,n,xm,n+1.xm+1,n+1)
(9)
其中,0≤m≤M,0≤n≤N,M和N分別為圖像二維向量的長與寬。
Softmax層作為數據分類的分類器,其訓練集為k個標記過的樣本:
T={(x(1),y(1)),(x(2),y(2)),…,(x(k),y(k))}
(10)
式(10)中,y(i)是分類標簽,x(i)是樣本集合。對于每個樣本,第k類標簽的概率是:
(11)
2.2.3 模型損失函數的計算
算法中,損失函數包括L1損失,感知損失和對抗損失。重建圖像和原始圖像之間的L1距離取平均值作為L1損失,其公式如式(12)所示:
(12)
式(12)中,r為原始圖像和低分辨率圖像水平(或垂直)分辨率之比,W為低分辨率圖像的水平分辨率,H為低分辨率圖像的垂直分辨率。L1損失不會過度懲罰誤差項,且隨誤差線性增長,避免了梯度爆炸的產生,有助于增強邊緣等低頻特征的視覺效果,具有較好的魯棒性。
感知損失為重構圖像和原始圖像在深層次的細節(jié)上的差異,用于對數據的高頻成分進行還原[18],其公式如式(13)所示:
(13)
式(13)中,?i(IHR)和?i(ISR)為原始圖像和低分辨率圖像的特征,n為特征的個數。
對抗損失為GAN的損失,其表達式為:
Ladv=Ex~Pdata(x)[logD(x)]+
Ez~Pnoise(z)[log(1-D(G(z)))]
(14)
式(14)中,E(x)表示分布函數的期望值,Pdata(x)代表真實樣本的分布,Pnoise(z)是定義在低維的噪聲分布,D(x)為判別器的返回值,G(z)為生成器的返回值。
總損失函數為:
Ltotal=λ1·L1+λper·Lper+λadv·Ladv
(15)
式(15)中λ1,λper,和λadv分別設置為0.0001,1和0.05。
初始的訓練數據為某金礦選廠浮選圖像,分辨率為1024×896。低分辨率圖像由高分辨率圖像將長寬縮放1/2,并采用質量為15%的JPEG壓縮得到。訓練集共有1791條數據,測試集共有461條數據。實驗環(huán)境配置為Linux18.04操作系統(tǒng),PaddlePaddle 2.1.2深度學習框架,使用Python和MATLAB作為編程語言,CUDA版本為CUDA10.1,GPU型號為Tesla V100 32GB,訓練過程中,學習率設置為0.0001,模型批訓練次數的大小為16,迭代次數為80000。
圖4為低分辨率圖像、原始圖像以及重建圖像。左圖為通過下采樣降低浮選泡沫圖像的分辨率,然后使用JPEG算法對圖像進行壓縮后的圖像,相比于原始圖像,其僅有15KB,但產生了失真,且顏色發(fā)生了改變。右圖中重建后的圖像和原圖像基本一致。
圖4 實驗圖像對比(從左至右分別為:低分辨率圖像,原始圖像,重建圖像)
圖5 實驗圖像對比(局部放大)(從左至右分別為:低分辨率圖像,原始圖像和重建圖像)
將圖像局部放大進行分析,圖5為局部放大后的低分辨率圖像、原始圖像以及重建圖像。相比于原始圖像,低分辨率的圖像明顯比較模糊,出現(xiàn)了失真,色差發(fā)生異常變化,而經過重建后的圖像對大氣泡、密集小氣泡以及混合氣泡的特征進行了還原,恢復了細節(jié)和輪廓,整體圖像與原始圖像基本一致,沒有明顯的失真區(qū)域,色差恢復正常。
通過采用先壓縮后還原的方法對浮選泡沫圖像進行處理,可以使用較小的存儲空間存儲較多的圖像。使用GAN對壓縮受損的低分辨率圖像進行還原,可以恢復圖像的邊緣、色差、輪廓等細節(jié)特征,能夠滿足工業(yè)中利用浮選泡沫圖像進行過程建模與優(yōu)化的需求。
針對浮選工業(yè)現(xiàn)場浮選泡沫圖像儲存所需存儲空間大、對工控機要求高等問題,提出將采集的浮選泡沫圖像進行有損壓縮得到低分辨率圖像進行儲存,再使用超分辨率重建技術對低分辨率圖像進行還原。該方法首先使用JPEG算法壓縮圖像,然后利用壓縮后的低分辨率的圖像和原始圖像訓練GAN,使生成器學習到原始圖像的特征,從而在應用階段將低分辨率圖像重建為高分辨率圖像。仿真結果標明,所提出的方法在1張/min的浮選圖像存儲頻率下,空間7GB左右的存儲空間即可存儲一年的浮選圖像數據,所需存儲空間僅為原始圖像的1/80,保留了原圖像的特征信息,能夠滿足后續(xù)泡沫圖像分析的需求。