姬壯偉
(長治學(xué)院計(jì)算機(jī)系,山西長治 046011)
深度學(xué)習(xí)的深入研究,促進(jìn)了領(lǐng)域的快速發(fā)展,圖像識別是最先使用深度學(xué)習(xí)的領(lǐng)域之一。該領(lǐng)域的快速發(fā)展得益于可以收集龐大的數(shù)據(jù)集,搭建復(fù)雜的深度學(xué)習(xí)模型,以及GPU 計(jì)算能力的飛速提高。
當(dāng)前的圖像識別方法基本上都使用了深度學(xué)習(xí)方法,為了提高深度卷積網(wǎng)絡(luò)的訓(xùn)練效率,我們借鑒當(dāng)今最熱的卷積網(wǎng)絡(luò)參數(shù)少的優(yōu)勢,將圖像識別網(wǎng)絡(luò)中的全連接層都用卷積網(wǎng)絡(luò)來替代。這種做法在不影響正確率的前提下,具有兩個(gè)優(yōu)勢:一是提高了網(wǎng)絡(luò)的靈活性,相比AlexNet[1],擺脫了對輸入圖像分辨率的限制,這是由于在網(wǎng)絡(luò)后端用1*1的卷積替換了全連接層導(dǎo)致的;二是卷積網(wǎng)絡(luò)是用卷積核在提取圖像中的特征,因此可以將每一層卷積結(jié)果的特征圖可視化,進(jìn)一步加深對模型的理解并做出修正。
使用kaggle 貓狗大戰(zhàn)[2]的數(shù)據(jù)集,帶標(biāo)簽數(shù)據(jù)共25 000 張圖像,網(wǎng)絡(luò)結(jié)構(gòu)采用全卷積網(wǎng)絡(luò)結(jié)構(gòu),使用AlexNet 的預(yù)訓(xùn)練模型初始化前5 層卷積網(wǎng)絡(luò)的參數(shù),隨機(jī)初始化后三層卷積網(wǎng)絡(luò),使用交叉熵作為訓(xùn)練的損失函數(shù),用Adam 優(yōu)化器[3]進(jìn)行參數(shù)優(yōu)化。數(shù)據(jù)集在第一部分做詳細(xì)的說明,在第二部分將詳細(xì)說明所使用的卷積網(wǎng)絡(luò)模型細(xì)節(jié),以及對第一層卷積和第二層卷積的可視化展示,第三部分則是對模型進(jìn)行損失值記錄分析,以及測試模型的分類準(zhǔn)確率。第四部分對整篇論文的研究做總結(jié)。
kaggle 貓狗大戰(zhàn)數(shù)據(jù)集分訓(xùn)練集和測試集兩部分,訓(xùn)練集包含25 000 張貓狗圖片,并具有標(biāo)簽,其中貓的數(shù)據(jù)集和狗的數(shù)據(jù)集各占一半,測試集共有12 500張,都不具有標(biāo)簽。使用訓(xùn)練集中的25 000張圖片來做訓(xùn)練、驗(yàn)證和測試,其中訓(xùn)練集占80%,驗(yàn)證集占10%,測試集占10%。
該數(shù)據(jù)集的圖像為三通道彩色圖像,每張圖像分辨率各不相同,因此在進(jìn)行訓(xùn)練和測試時(shí),將圖像做如下預(yù)處理[4],先將圖像短邊縮放至256像素,長邊做等比縮放,再上下左右以及中心將圖像裁剪成5張224 圖像,如圖1 所示,這樣做大大增加了數(shù)據(jù)的數(shù)量,避免過擬合的產(chǎn)生,提高了網(wǎng)絡(luò)的泛化能力。
圖1 圖像預(yù)處理裁剪示意圖
網(wǎng)絡(luò)架構(gòu)是對AlexNet 網(wǎng)絡(luò)的進(jìn)一步優(yōu)化,具體包含八個(gè)卷積層,三個(gè)最大池化層,使用pytorch 進(jìn)行搭建[5]。第一個(gè)卷積層使用96 個(gè)卷積核提取224×224×3 圖像的基本特征,核大小為11×11,步長為4,后接最大池化層,第一層卷積得到的特征圖輸入到第二層,再使用256 個(gè)卷積核提取特征,核大小為5×5,步長為1,后接最大池化層,第3、4、5 卷積層互相連接,中間不插入池化層,3個(gè)卷積層都使用3×3的小卷積核,依次使用384、384、256個(gè)卷積核來形成目標(biāo)特征圖。
網(wǎng)絡(luò)后三個(gè)卷積層是原網(wǎng)絡(luò)全連接層[6]的替代,如圖2 所示,第6 層卷積用了上層輸出同等大的卷積核,大小為6×6,卷積核的個(gè)數(shù)等于原網(wǎng)絡(luò)全連接層的神經(jīng)元個(gè)數(shù)4 096,以保證特征沒有丟失,第7 層和第8 層卷積則是采用1×1 卷積降維,最后輸出圖像為貓狗的預(yù)測值,通過softmax函數(shù)[7]計(jì)算圖像為貓狗的概率值。
圖2 全連接與全卷積對比示意圖
深層網(wǎng)絡(luò)學(xué)習(xí)中,網(wǎng)絡(luò)層數(shù)的堆疊就是對原圖像特征一次次更深的提取,通常網(wǎng)絡(luò)的淺層學(xué)習(xí)到的都是具體、清晰的特征,比如線條、顏色等等,而網(wǎng)絡(luò)的深層學(xué)習(xí)到一般都是抽象、模糊的特征[8],是不能夠理解和識別的。
為了讓卷積核學(xué)習(xí)到的特征更加直觀,利用TensorBoard 可視化工具,將網(wǎng)絡(luò)某些層學(xué)習(xí)到的特征進(jìn)行可視化學(xué)習(xí),其中第一層的可視化特征圖如圖3所示。
圖3 可視化卷積核和特征圖
第一層卷積在224×224×3 的圖像上學(xué)習(xí)到了96個(gè)11×11×3的卷積核,圖中便是網(wǎng)絡(luò)第一層卷積核對應(yīng)所學(xué)習(xí)到的特征圖像,可以看出,學(xué)習(xí)到的特征大致可分為兩類,一類是圖像中線條的方向,一類是顏色的頻率大小。從特征圖像中可看出每個(gè)卷積核都在學(xué)習(xí)不同的特征。由于是第一層卷積,網(wǎng)絡(luò)學(xué)習(xí)到的特征都很簡單,因此兩類特征都是我們能清除認(rèn)識到的,而當(dāng)在網(wǎng)絡(luò)深層時(shí),特征會抽象模糊,根據(jù)深層卷積核的可視化圖像顯示,這些特征過于抽象,我們不好理解到底是個(gè)什么樣的特征,是語義更高階的表達(dá)。
卷積核的特征可視化[9-10],有助于我們直觀理解神經(jīng)網(wǎng)絡(luò)中神經(jīng)元的具體作用,以及分析不同神經(jīng)元對不同特征的敏感程度,提高對網(wǎng)絡(luò)的具體認(rèn)識,幫助我們對網(wǎng)絡(luò)參數(shù)進(jìn)一步調(diào)整。
將全連接層替換為全卷積層大大提高了網(wǎng)絡(luò)的靈活性,并且卷積核的數(shù)量和全連接層神經(jīng)元數(shù)量相等,不會丟失圖像特征影響分類準(zhǔn)確率,主網(wǎng)絡(luò)卷積層在不降低精度的前提下,參數(shù)數(shù)量大幅減少。
據(jù)統(tǒng)計(jì),全卷積網(wǎng)絡(luò)參數(shù)總和為6 000 萬,在前向傳播中,不需要做網(wǎng)絡(luò)轉(zhuǎn)換,網(wǎng)絡(luò)傳播更加流暢。
用貓狗數(shù)據(jù)集對深層遷移網(wǎng)絡(luò)進(jìn)行長時(shí)間訓(xùn)練,為了讓損失值能夠達(dá)到最低,訓(xùn)練中隨著epoch的增加,網(wǎng)絡(luò)學(xué)習(xí)率在慢慢減小,減少深層網(wǎng)絡(luò)損失值的波動程度,具體損失值的變化如圖4所示。
如圖4 顯示,網(wǎng)絡(luò)快速收斂,并記錄了驗(yàn)證集中損失值最小的網(wǎng)絡(luò)參數(shù),最低可達(dá)0.03,在測試集中貓狗圖像的預(yù)測準(zhǔn)確率可達(dá)97.3%,網(wǎng)絡(luò)對貓狗的辨識程度已經(jīng)達(dá)到人類的水平,并且不受輸入圖像中貓狗圖像的占比影響,即使目標(biāo)圖像僅僅占據(jù)一角,也能正確識別。
圖4 損失值變化曲線圖
全卷積網(wǎng)絡(luò)相比全連接有很大的優(yōu)勢,不需要在網(wǎng)絡(luò)中途構(gòu)建從卷積層向全連接層的連接,對輸入圖像分辨率不再做嚴(yán)格要求。在全部使用卷積層的前提下,將損失值降到更低,圖像分類準(zhǔn)確率更高。