張雪晴
(長江大學(xué)電子信息學(xué)院 湖北省荊州市 434023)
人工分類的時間和速度有很大的不確定性和不穩(wěn)定性,若圖像種類和數(shù)量都很多的情況下,采取人工分類的方法耗費(fèi)人力和時間,不如利用計算機(jī)的處理速度和穩(wěn)定性來代替人工人類。圖像分類技術(shù)是計算機(jī)視覺任務(wù)的基礎(chǔ)。與深度學(xué)習(xí)相結(jié)合的圖像分類技術(shù),要經(jīng)過圖像預(yù)處理、特征提取和分類這三步驟。首先用三種方法中的一種或幾種對圖像做一些預(yù)處理;然后根據(jù)三類特征用相應(yīng)的算法進(jìn)行提??;經(jīng)過一系列的特征向量的變化,最后在分類時分二分類或多分類,輸出一個值。
(1)圖像的預(yù)處理在有很重要的地位,因?yàn)閳D像的質(zhì)量會影響了后面模型的需完成的任務(wù),例如分類、識別或者分割等技術(shù)的實(shí)現(xiàn)。預(yù)處理主要包括是三個部分:
1.灰度化,在RGB 圖像轉(zhuǎn)為灰度化的圖像時對應(yīng)的值叫做灰度值,還可以叫強(qiáng)度值或亮度值,灰度值取值區(qū)間為[0,255],而在其的顏色空間之中,R、G、B 都為零時,是黑色;都為100 時。是灰色,而為255 時是白色,在這種R、G、B 的值都相等的時候,圖像是在黑白灰三種顏色中過渡?;叶然椒ㄒ话銜茫鹤畲笾捣?、平均值法、加權(quán)平均法等。
2.幾何變換也叫圖像的空間變換,它對圖像進(jìn)行平移、鏡像或轉(zhuǎn)置等處理,使得在樣本不足的情況下,用這種方法增加樣本,來增加圖像分類模型訓(xùn)練后的正確性,減少誤差。然后用圖像插值方法。線性插值方法主要分為兩種:線性插值:最近鄰插值、雙線性插值、雙三次插值。和非線性插值:分為兩類——基于小波系數(shù)、基于邊緣信息(分為顯示方法、隱式方法,其中隱式方法包括:NEDI、LMMSE、SAI、CGI)。
3.增強(qiáng)圖像:可以增強(qiáng)圖像的觀感。通過增加一些,圖像中包含的有用或重要的信息,但它同時可能在這個過程存在失真情況。比如在一張圖像中,對圖像中存在的一些特殊事物或特殊動物和人,進(jìn)行強(qiáng)調(diào)或擴(kuò)大這些不同物體和動物之間的特征差別;將原本有些模糊的圖像變清晰等的調(diào)整,去豐富圖像中的某些蘊(yùn)含的信息量;也可以將圖像識別的效果增強(qiáng),或?qū)D像進(jìn)行一些特殊分析。圖像增強(qiáng)主要是在頻域和空間域這兩種域上對圖像進(jìn)行處理。在頻域上處理時,一般是采用低通、高通或同等濾波方式;在空間域上的處理,分為兩大類:一個是點(diǎn)運(yùn)算,對圖像單個像素點(diǎn)鄰域處理,比如灰度變換、直方圖修正、偽彩色增強(qiáng)等技術(shù);另一個是模板處理,對圖像的像素領(lǐng)域處理,比如圖像平滑、圖像銳化等技術(shù)。
(2)從圖像中提取的特征蘊(yùn)含著一些信息,在通過分類器的時候,這些信息作為分類器進(jìn)行分類的基礎(chǔ),而這些信息的種類或質(zhì)量,都可能使該網(wǎng)絡(luò)的分類任務(wù)準(zhǔn)確性和分類任務(wù)的效率有變化。圖像特征大概分為視覺特征、統(tǒng)計特征和變換系數(shù)特征兩種。
1.視覺特征:包括圖像中的各種顏色和物體或動物之類的輪廓、花朵之類的外表紋理還有各種物體的形狀等特征。
2.統(tǒng)計特征:利用統(tǒng)計方法獲得統(tǒng)計信息特征,例如圖像的矩陣、峰值、方差和灰度直方圖等特征。
3.變換系數(shù)特征:利用數(shù)學(xué)的一些數(shù)字變換方法獲得的特征。比如用小波變換、傅里葉變換等方法獲得的特征。
提取不同特征時的算法不同。例如,canny 或sobel 算子提取的輪廓邊緣特征;PCA 主成分分析算法提取的主要成分信息特征。只有在更加深入地研究過關(guān)于圖像特征的一些理論后,提取特征的算法將發(fā)展成將多個特征融合與多種提取方法結(jié)合的方式。
(3)二分類算法:二分類的圖像分類問題是一類常見的問題,這種分類的在分類器的標(biāo)簽取值只有兩種,而且算法中只需要一個預(yù)測的標(biāo)簽。即每個樣本的類別可能性只有兩個(0 或1)。此時的分類算法就像在畫一條線,這條線將數(shù)據(jù)劃分為兩個類別。常見的二分類算法有:Logistic、SVM、KNN 等。
Logistics 算法:對于維度是m+1 特征是x 樣本的二分類問題,有負(fù)類記作0,正類記作1.則對類別y 如式:y=f(x),y∈{0,1},找到一個h(x),使0 ≤h(x)≤1,其中θ 是待優(yōu)化的參數(shù),在對未知類別的樣本x分類時,h(x)指樣本是正類的概率。即:
(5)模型評估
首先,在分類過程中會出現(xiàn)四種分類情況,如表1 所示。
表1:分類情況
假設(shè),A 和B 兩類,任務(wù)是分出A 類,那么A 類就是正類。表1 中,TP:被模型預(yù)測為A 的A 類樣本;FP:被模型預(yù)測為A 的B 類樣本;FN:被模型預(yù)測為B 的A 類樣本;TN:被模型預(yù)測為B 的B 類樣本。
簡單的卷積神經(jīng)網(wǎng)絡(luò)如圖1 所示,由輸入層、卷積層、池化層、全連接層和輸出層五種構(gòu)成的網(wǎng)絡(luò),下面介紹了層結(jié)構(gòu)的每個部分:
圖1:簡單卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖
(1)輸入層:輸入原始數(shù)據(jù)。在圖像分類任務(wù)中,將圖像像素值作為模型的輸入。
(2)卷積層:提取輸入層的輸出數(shù)據(jù)的特征圖。如圖1 所示,每個卷積層都會提取若干特征圖,特征圖的神經(jīng)元都都與前層中的相鄰神經(jīng)元相互連接。前層相鄰的神經(jīng)元區(qū)域就是該層特征圖的感受域,將經(jīng)過卷積運(yùn)算的特征圖通過激活函數(shù)激活。在每層的卷積層進(jìn)行卷積運(yùn)算時,運(yùn)用不同的卷積核會獲得新的特征圖,并且這些卷積核會進(jìn)行權(quán)值共享。而這些激活函數(shù)的作用就是讓卷積神經(jīng)網(wǎng)絡(luò)擁有非線性的特征。常用的激活函數(shù)有sigmoid,tanh 和ReLU。
(3)池化層:也叫做下采樣層,輸入是卷積層的輸出,一般的池化層都在兩個卷積層之間。池化有兩種形式,一種是最大池化(max-pooling),選擇固定的區(qū)域內(nèi)的最大數(shù)來表示該固定區(qū)域;另一種是平均池化(mean-pooling),選擇固定的區(qū)域內(nèi)的平均數(shù)來表示該固定區(qū)域。
(4)激活層:常用的激活函數(shù)有sigmoid。
(5)全連接層:卷積神經(jīng)網(wǎng)絡(luò)在一些卷積層和池化層后,通常情況會跟著一個或多個全連接層。全連接層和前面一層的每個神經(jīng)元相連,然后在全連接層中,將前面的一層的輸出向量轉(zhuǎn)化成一個列向量。
(6)輸出層:在該網(wǎng)絡(luò)模型中的全連接層的最后一層,一般是接著一個輸出層。在分類任務(wù)上,輸出層會用softmax 回歸。例如多分類問題的處理用的是softmax 回歸,類標(biāo)簽的取值是兩個以上的數(shù)值就是多分類問題。
當(dāng)樣本足夠的時候,該網(wǎng)絡(luò)的訓(xùn)練分兩個階段:前向傳播和后向傳播。
(1)前向傳播,第一步:選擇數(shù)據(jù)集,分好訓(xùn)練集和測試集(有時會有驗(yàn)證集)。第二步:隨機(jī)初始化網(wǎng)絡(luò)中的權(quán)重和偏置項還有樣本誤差值,手動設(shè)定初始的學(xué)習(xí)速率。該網(wǎng)絡(luò)中學(xué)習(xí)率能夠左右權(quán)值的調(diào)整過程中上浮或下降的程度。當(dāng)比如學(xué)習(xí)率過大的時候,有可能錯過權(quán)值調(diào)整過程中的最優(yōu)值;反之,則可能使得網(wǎng)絡(luò)只獲得局部最優(yōu)。手動設(shè)置初始化學(xué)習(xí)率的時候,研究人員要有很強(qiáng)的經(jīng)驗(yàn),所以一般情況是傾向于選取較小的學(xué)習(xí)率來保證系統(tǒng)的穩(wěn)定性,但對于要完成的不同任務(wù)需要的設(shè)定會不一樣,該取值范圍一般在區(qū)間[0.1,0.8]。第三步:將訓(xùn)練集的樣本的數(shù)據(jù)向量輸入到網(wǎng)絡(luò),該向量從輸入層到輸出層經(jīng)過每層的處理不停地變換。該網(wǎng)絡(luò)中的么層的權(quán)值不同,當(dāng)該向量經(jīng)過一層時,都與當(dāng)成的權(quán)值矩陣進(jìn)行點(diǎn)乘運(yùn)算,然后與偏置項相加,輸出變化后的向量矩陣,通過網(wǎng)絡(luò)的每層都重復(fù)運(yùn)算操作,一直到最后的輸出;
(2)后向傳播,第一步:用極小化誤差的方法,根據(jù)樣本的實(shí)際輸出值和預(yù)測輸出值進(jìn)行誤差閾值的計算,然后將該誤差值一層層的反向傳播,根據(jù)誤差值來調(diào)整每層的參數(shù)。第二步:將調(diào)整后總的誤差值和誤差域值相比較,若前者大于后者,那么網(wǎng)絡(luò)沒有達(dá)成任務(wù)目標(biāo),接下來返回到前向傳播的第三步。反之,則可以接著進(jìn)行下一步。第三步:訓(xùn)練學(xué)習(xí)任務(wù)完成,得到訓(xùn)練好的一個卷積神經(jīng)網(wǎng)絡(luò)并保存該網(wǎng)絡(luò)的參數(shù)。
CNN圖像分類流程圖如圖2所示:首先讀取已知圖像(訓(xùn)練集)和標(biāo)簽信息,對已知圖像和標(biāo)簽數(shù)據(jù)進(jìn)行預(yù)處理,將圖像剪裁相同尺寸;然后提取特征圖,數(shù)層卷積池化層來進(jìn)行對特征圖的處理;接下來就是訓(xùn)練學(xué)習(xí)至目標(biāo)模型并保存。對未知圖像(測試集)也進(jìn)行前兩步的相同處理,然后根據(jù)目標(biāo)模型內(nèi)保存的參數(shù)進(jìn)行對比,再通過分類器分出多個類別。
圖2:圖像分類流程
總的圖像數(shù)據(jù)集共6600 張圖,其中訓(xùn)練集,驗(yàn)證集和測試集比例是7:1:2。訓(xùn)練集和驗(yàn)證集的損失率和準(zhǔn)確率如圖3,橫坐標(biāo)表示epoch 迭代次數(shù),縱坐標(biāo)表示概率。綠色線loss 顯示的是訓(xùn)練集的損失率變化,從圖3-4 中可以看出訓(xùn)練集的損失一直下降到0.2 左右;紅色的線acc 顯示的是訓(xùn)練集的正確率變化,從圖3-4 中可看到正確率逐步上升至0.9 上一點(diǎn);藍(lán)色的線val_loss 顯示的是驗(yàn)證集的損失率變化,可看出驗(yàn)證集的損失率下降到0.4 后就沒有再下降了,下降緩慢;橙色的線val_acc 顯示的是驗(yàn)證集的正確率,從圖中可看出驗(yàn)證集的正確率接近但不到0.9。
圖3:準(zhǔn)確率和損失率
測試集的各類別召回率,f1-score 和準(zhǔn)確率如圖4 所示,出錯概率較大的類別3,4,6 和10,但總體的準(zhǔn)確率維持在90%??吹綀D像集,結(jié)合測試集分類結(jié)果的召回率,f1-score可知類間差別較大,圖像較復(fù)雜(一張圖上同時有人和狗如類別3 里的圖像或同時有街道,汽車圖類別10 里的圖像)會比圖像簡單(只有人臉如類別8 或者向日葵如類別5 等)的出錯概率大,就像類別10 是馬路的圖,因?yàn)槔锩鏁熊囎踊蚍孔涌赡軙蛔R別到類別1 汽車。而這幾個類別的召回率和f1-score 值都不高,則說明正確判斷的樣本數(shù)不多,但是圖像集中不是所有的類別里面只有一個突出的物體或者動物,那么混起來分類只有簡單圖像的分類準(zhǔn)確度是很高的,而復(fù)雜圖像或圖像里蘊(yùn)含信息多的時候,分類的結(jié)果就不夠好了。
圖4:召回率,f1-score
本文主要介紹的是基于卷積神經(jīng)網(wǎng)絡(luò)的圖像分類研究。首先介紹了圖像分類在當(dāng)今社所研究的必要性,其次介紹圖像分類之前的預(yù)處理操作,以及分類圖像所涉及的算法。本文主要選取的圖像分類算法為卷積神經(jīng)網(wǎng)絡(luò)算法,詳細(xì)介紹其原理,并設(shè)計基于CNN 的圖像分類實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明CNN 在圖像分類中能夠起到很好的識別作用,準(zhǔn)確分類出圖像的類別。但是CNN 與其他的神經(jīng)網(wǎng)絡(luò)類似,實(shí)驗(yàn)結(jié)果需要龐大的數(shù)據(jù)支撐,并且實(shí)驗(yàn)結(jié)果具有不穩(wěn)定性。因此本文下一步研究內(nèi)容是嘗試其他的分類算法,與CNN 算法進(jìn)行對比,設(shè)計出一種較為穩(wěn)定的識別模型;或者進(jìn)行多標(biāo)簽分類,能夠提高復(fù)雜圖像的類別分類的正確性。