国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

全卷積神經(jīng)網(wǎng)絡(luò)仿真與遷移學(xué)習(xí)

2019-10-08 06:43付鵬飛許斌
軟件 2019年5期
關(guān)鍵詞:支持向量機主成分分析人臉識別

付鵬飛 許斌

摘 ?要: 人們捕獲視圖,從視圖中提取特征并理解含義。同理,駕駛員也通過視覺實現(xiàn)對街景的判斷。我們期待, 有一天機器能夠通過自主計算完成同樣的工作。得益于計算機的強大處理能力,基于CNNs(Convolutional Neural Networks, 卷積神經(jīng)網(wǎng)絡(luò))的深度學(xué)習(xí)算法能夠很好地完成目標識別等計算機視覺任務(wù)。但在實際工業(yè)應(yīng)用中,資源往往受限,較大的網(wǎng)絡(luò)不利于嵌入式移植。通常一個完備的CNN網(wǎng)絡(luò)包含卷積層、池化層和全連接層[1],本文參考文章[2]中的方法,舍去池化層和全連接層,使用卷積層代替,并對幾種網(wǎng)絡(luò)進行了仿真實驗及結(jié)果分析,尋找在受限平臺使用CNN網(wǎng)絡(luò)的方法。

關(guān)鍵詞: 人臉識別;直方圖均衡化;主成分分析;支持向量機

中圖分類號: TP391. 41 ? ?文獻標識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.05.042

本文著錄格式:付鵬飛,許斌,等. 全卷積神經(jīng)網(wǎng)絡(luò)仿真與遷移學(xué)習(xí)[J]. 軟件,2019,40(5):216221

【Abstract】: As we know, vision is very important for human to understand the world. Similarly, drivers also use vision to anlysis street scene. What we had being expecting is that one day machine can do the same work by itself through computer vision. Thanks to the powerful processing ability of the computer, the deep learning algorithm based on CNNs (Convolutional Neural Networks) can accomplish computer vision tasks well such as object detection. However, in most industrial environment, resources are limited, and larger networks are not easy to embedded transplantation .Now, the architectures of main CNNs used for machine vision include convolution layers and pooling layers alternately and ended with several fully-connected layers [1]. In fact, we can use convolution layers to replace pooling layers, as described in paper [2]。

【Key words】: CNN; Computer vision; Transfer lEARNING; Driving assistance

0 ?引言

隨著現(xiàn)代社會的不斷發(fā)展,汽車已成為了人們最主要的交通工具,傳統(tǒng)的駕駛行為在處理很多突發(fā)情況時,完全依賴于駕駛?cè)藛T在面對突發(fā)情況時的心理素質(zhì)及駕駛經(jīng)驗,非常容易出現(xiàn)危險的情形。而且長時間遠距離的駕駛,會造成駕駛員疲勞,注意力不集中,從而導(dǎo)致交通事故頻發(fā)。主流的汽車制造商已普遍采取了被動安全的策略,來降低事故對行人的傷害。

但是這種被動的保護措施還遠遠不夠,如果能通過技術(shù)手段,主動的輔助駕駛員采取措施,減少甚至避免人員的傷亡,這將會是一項非常具有價值和意義的工作。汽車要能夠輔助人類駕駛,首先就要求汽車能夠感知到外部的環(huán)境,理解環(huán)境的構(gòu)成類型并準確定位。目前主要使用雷達和光學(xué)攝像頭等傳感設(shè)備作為傳感器,通過算法來實現(xiàn)對外部環(huán)境的感知。目前的基于CNN的神經(jīng)網(wǎng)絡(luò),具有較大的參數(shù)量,訓(xùn)練過程中要消耗大量的時間,而且在實際的移植的過程時對移植系統(tǒng)的資源要求高,制約了CNN網(wǎng)絡(luò)向較小的平臺或或資源受限的平臺擴展。

汽車上很多智能部件以工控機、嵌入式環(huán)境為主,屬于資源受限平臺。盡管具有多層和復(fù)雜結(jié)構(gòu)的CNN網(wǎng)絡(luò)具有很好的檢測精度,但是在這樣龐大的網(wǎng)絡(luò)在有限資源的平臺上往往效果不佳。論文[2]提出了以全卷積網(wǎng)絡(luò)的模型,簡化經(jīng)典的CNN網(wǎng)絡(luò)模型,也能夠達到較高的準確率。本文使用論文[2]過實際修改、編寫、仿真分析A、B、C三種網(wǎng)絡(luò)結(jié)構(gòu),研究CNN網(wǎng)絡(luò)簡化的可能方法,研究大型的神經(jīng)網(wǎng)絡(luò)向受限平臺遷移的可能性。

1 ?相關(guān)工作

卷積神經(jīng)網(wǎng)絡(luò)可以簡化認為是多個卷積模塊的不斷循環(huán)運算并輸出特征圖[1]的過程,通常來說卷積模塊包含卷積運算、整流、池化三個部分。通過卷積運算把結(jié)果傳導(dǎo)至下一層,并且多次重復(fù)這樣的操作,如圖1所示。在整個計算過程中,圖片的大小逐步減少,卷積核的個數(shù)不斷增多,輸出尺寸較小而通道較多(較深)的特征向量圖,最后通過Softmax函數(shù)輸出數(shù)以確定目標屬于某一個物體分類的概率值。目前CNN有四個主流的模型AlexNet[3]、VGGNet[4]、GoogleNet[5]、ResNet[6]模型。盡管不同結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),在卷積核大小的選取,卷積核的組合方式,以及向前傳播的連接方法會有不同。但總體來看其主要的結(jié)構(gòu)還是如圖1所示,通過卷積模塊數(shù)量的堆疊而把網(wǎng)絡(luò)推向更深,通過更深的網(wǎng)絡(luò)學(xué)習(xí)出特征圖。更深網(wǎng)絡(luò)意味著具有更多的參數(shù),需要占用更多的資源,越不利于向受限平臺的移植。

參考文獻[2]中提出了一種基于全卷積網(wǎng)絡(luò)結(jié)構(gòu)的方法,去掉了池化層、全連接層,相比VGGNet,GoogleNet,ResNet采用了較少的深度,以實現(xiàn)模型的精簡。這種思路非常有利于在受限平臺下的嵌入式移植,有利于在特定工作環(huán)境下的高效運行。參考文獻[2]方法包含表1-6中所示的A,B,C,Model Stride-CNN-C,ConvPool-CNN-C network,All-CNN-C一共6種模型。本論文通過python編程實現(xiàn)了參考論文中所描述的方法,在數(shù)據(jù)集CIFAR-10上訓(xùn)練它們,并在數(shù)據(jù)集CIFAR-10上進行測試,完成圖像分類。隨后嘗試了基于CIFAR-10數(shù)據(jù)集訓(xùn)練的全卷積網(wǎng)絡(luò)模型的遷移學(xué)習(xí),把學(xué)習(xí)到的模型應(yīng)用于CIFAR-100數(shù)據(jù)集的小子集class1和class2,分析結(jié)果,以嘗試在受限平臺下基于CNN算法的輕量化、專門化研究。

2 ?實驗操作

仿真所使用的系統(tǒng)環(huán)境Intel Xeon E5-2665@ 2.4 GHz x 32 CPU,64 GB內(nèi)存,256 GB SSD,1個Nvidiz TITAN Xp GPU獨立顯卡和Ubuntu 16.04 64 bit操作系統(tǒng)。使用pyton3.6.6版本安裝了Anaconda 3-5.2,pip 10.0.1,pytorch 0.4.1.post2,CUDA 9.0.176系統(tǒng)。在上述環(huán)境中完成了以下工作:

1)參考論文中提到的方法,通過python編寫的實現(xiàn)代碼[7-8],包含A,B,C,Stride-CNN-C,ConvPool-CNN-C network,All-CNN-C一共6種模型

2)在CIFAR-10數(shù)據(jù)集上訓(xùn)練模型A

3)在CIFAR-10數(shù)據(jù)集上訓(xùn)練模型B

4)在CIFAR-10數(shù)據(jù)集上訓(xùn)練模型C

5)在CIFAR-10數(shù)據(jù)集上訓(xùn)練模型Strided- CNN-C

6)在CIFAR-10數(shù)據(jù)集上訓(xùn)練模ConvPool- CNN-C

7)在CIFAR-10數(shù)據(jù)集上訓(xùn)練模型All-CNN-C

8)在CIFAR-10數(shù)據(jù)集上訓(xùn)練模型All-CNN-C

9)在CIFAR-10數(shù)據(jù)集上訓(xùn)練模型All-CNN-C

10)在CIFAR-10子數(shù)據(jù)集1上使用遷移學(xué)習(xí)訓(xùn)練All-CNN-C,固定前面層的參數(shù)只訓(xùn)練全連接層參數(shù)

11)在CIFAR-10子數(shù)據(jù)集2上使用遷移學(xué)習(xí)訓(xùn)練All-CNN-C,固定前面層的參數(shù)只訓(xùn)練全連接層參數(shù)

12)在CIFAR-10子數(shù)據(jù)集1上使用遷移學(xué)習(xí)訓(xùn)練All-CNN-C,訓(xùn)練全部層參數(shù)

13)在CIFAR-10子數(shù)據(jù)集2上使用遷移學(xué)習(xí)訓(xùn)練All-CNN-C,訓(xùn)練全部層參數(shù)

3 ?模型結(jié)構(gòu)

模型A是一個包含8個中間層的結(jié)構(gòu)(除去輸入層和輸出層),采用了5*5和3*3的卷積核,采用了3*3的最大值池化操作,采用了邊界填充方法,通道數(shù)由輸入的RGB的3通道,加深至96,192通道,最后減少至10通道輸出,A模型的特點是層數(shù)較少,保留了最大池化層,移除了全連接層用全局池化來代替。模型B和模型A較為類似,比模型A多了兩層1*1卷積運算,達到了10個中間層,保留了最大池化層,移除了全連接層用全局池化來代替。模型C和模型B較為類似,層數(shù)和結(jié)構(gòu)一致,只是卷積核大小的選擇,以及填充的數(shù)量上有變化。模型Strided-CNN-C在模型C的基礎(chǔ)上移除了最大池化層,微調(diào)了滑動步長,保持10個中間層。 模型ConvPool-CNN-C在模型C的基礎(chǔ)上增加了兩個3*3的卷積層,整個模型變得更深達到了12個中間層。模型 All-CNN-C是在模型C的基礎(chǔ)上去除了最大池化層,微調(diào)了滑動步長,保持有10個中間層。模型 All-CNN-C形式很簡潔,沒有池化層和全連接層,整個模型是一個全卷積網(wǎng)絡(luò)構(gòu)架。6個模型全部采用了dropout的正則化方法,減少過擬合。

兩個遷移學(xué)習(xí)的模型是使用的All-CNN-C的模型(全連接層訓(xùn)練feature extractor和全部參數(shù)訓(xùn)練fine tuning)。所有的模型都是使用的線性整流激活函數(shù)(ReLU),用于文獻[2]中提到的在每一卷積層之后進行非線性計算。Kaiming法向函數(shù)用于初始化每一個卷積層的參數(shù)。Dropout技術(shù)用于對模型的正則化,對輸入圖片用20% dropping 概率,在池化層后面或者被卷積所替代的池化層后面采用50%的dropping概率。2個1*1卷積層用于代替常用的全連接層,最后一個卷積層直接用全局平局池化(global average pooling)輸出至每一個softmax函數(shù)用于分類。

文中的6個模型相比VGGNet[4]、GoogleNet[5]、ResNet[6]幾個主流模型,其特點在于層數(shù)較少,卷積核大小相對固定,也沒有復(fù)雜的跳層連接,舍去了池化層和全連接層。整體結(jié)構(gòu)相對簡潔,是一個由全卷積網(wǎng)絡(luò)構(gòu)成的結(jié)構(gòu)。其中有一個新穎點是在最開始的輸入層也采用20%dropout正則化方法,減少過擬合。這樣的模型結(jié)構(gòu)利于理解,訓(xùn)練時間也較端,單個模型在幾個小時之內(nèi)就可以訓(xùn)練完成。

4 ?超參數(shù)設(shè)置及權(quán)重初始化

本文訓(xùn)練模型時是采用的是隨機梯度下降(SGD)的方法優(yōu)化模型,設(shè)置了0.9的動量,每一個batch的大小是32個樣本圖片,損失函數(shù)使用的是Softmax函數(shù)。模型A、B、C、Strided-CNN-C、ConvPool-CNN-C、All-CNN-C的權(quán)重衰減率為0.001,初始學(xué)習(xí)率為0.001,一共迭代350輪,分別在[200, 250, 300]輪時以0.1的比率減小學(xué)習(xí)率。數(shù)據(jù)集CIFAR-10包含50000張訓(xùn)練樣本圖片,10000張測試樣本圖片,共計60000張圖片,10種分類,每種分類包含6000張圖片,圖片為32*32的彩色圖片。本文在使用數(shù)據(jù)集CIFAR-10訓(xùn)練模型時,將50000個訓(xùn)練樣本拆分成了兩部分,其中49000張樣本圖片用于訓(xùn)練, 余下的1000張樣本圖片用于驗證,10000張測試樣本圖片用于測試。數(shù)據(jù)集CIFAR-100也包含50000張訓(xùn)練樣本圖片和10000張測試樣本圖片,但該數(shù)據(jù)集有100種分類,每種分類包含600張圖片,圖片也是32*32的彩色圖片,在本實驗中使用CIFAR-100數(shù)據(jù)集主要是為了進行遷移學(xué)習(xí)訓(xùn)練,選用了其中的2個子數(shù)據(jù)集,分別為class1和class2,每個子數(shù)據(jù)集中包含5000張訓(xùn)練樣本圖片和1000張測試樣本圖片,且每個子數(shù)據(jù)集只包含10種分類。本實驗將5000個訓(xùn)練樣本分成了兩部分,其中4900個樣本用于訓(xùn)練, 余下的100個樣本用于驗證,1000個測試樣本還是用于測試。更多的細節(jié)可以參看表7。

驗證是在訓(xùn)練過程中進行的,如果在驗證時發(fā)現(xiàn)預(yù)測準確率不高,則需要調(diào)整初始學(xué)習(xí)率、權(quán)重衰減率等參數(shù),比如在驗證時發(fā)現(xiàn)準確率提高得很慢,可以嘗試減小或增大初始學(xué)習(xí)率,學(xué)習(xí)率較大時,會導(dǎo)致在優(yōu)化權(quán)重及偏重等參數(shù)時,參數(shù)的改變較大,這樣就可能會出現(xiàn)躍過全局或局部最優(yōu)點,從而比較難于收斂;如果學(xué)習(xí)率較小時,會導(dǎo)致在優(yōu)化權(quán)重及偏重等參數(shù)時,參數(shù)的改變較小,這樣可能會出現(xiàn)訓(xùn)練得比較慢,需要較長時間才會收斂到較好的全局最優(yōu)點或局部最優(yōu)點。另外在加載數(shù)據(jù)集時,也需要對數(shù)據(jù)利用訓(xùn)練集數(shù)據(jù)的均值和方差進行正則化處理,以使數(shù)據(jù)盡量圍繞中心分布,避免出現(xiàn)狹長的山谷狀分布,如果出現(xiàn)這種山谷狀分布,以某個設(shè)定的學(xué)習(xí)率訓(xùn)練模型時,會導(dǎo)致在窄的方向上很容易躍過全局或局部最優(yōu)點,而在狹長的方向上卻要很久才能達到全局或局部最優(yōu)點,從而使整個訓(xùn)練過程收斂得很慢,甚至很難達到預(yù)期效果。測試是在整個訓(xùn)練都完成后才進行的,用于檢驗?zāi)P陀?xùn)練的效果。

在CIFAR-100數(shù)據(jù)集的數(shù)據(jù)集1和數(shù)據(jù)集2子集上實現(xiàn)和訓(xùn)練了兩種遷移學(xué)習(xí)模型。每個子集有5000個訓(xùn)練樣本和1000個測試樣本。訓(xùn)練樣本被分成兩部分,一部分是前4900個樣本用于訓(xùn)練,另一部分是剩下的100個樣本用于驗證。兩種轉(zhuǎn)移學(xué)習(xí)模型都是基于All-CNN-C模型,并且使用訓(xùn)練完成的All-CNN-C模型的參數(shù),來幫助在新的數(shù)據(jù)集上訓(xùn)練。第一個使用已經(jīng)訓(xùn)練好的All-CNN-C模型作為特征提取器。它凍結(jié)了前8個卷積層,并在CIFAR-100數(shù)據(jù)集的兩個子集上重新訓(xùn)練了最后一個卷積層。第二個使用已經(jīng)訓(xùn)練好的模型All-CNN- C作為fine tuning。它使用已經(jīng)訓(xùn)練好的參數(shù)作為初始參數(shù),使用CIFAR-100數(shù)據(jù)集子集進行新的訓(xùn)練并重新計算出全部的參數(shù)。由于數(shù)據(jù)集CIFAR-100的子集class1和class2也具有與CIFAR-10相同的10個類,這意味著兩個轉(zhuǎn)移學(xué)習(xí)模型可以與全CNN-C共享相同的網(wǎng)絡(luò)結(jié)構(gòu),并且不再需要修改最后的卷積層。

5 ?實驗分析

從表8可以看出,精簡之后的全卷積網(wǎng)絡(luò)(前面6個模型),依然達到了較高的檢測精度,從CIFAR-100數(shù)據(jù)集的檢測結(jié)果顯示完全不比一些復(fù)雜的結(jié)構(gòu)差太多。至2014年由VGG開始提出的觀點,CNN網(wǎng)絡(luò)越深對檢測結(jié)果越有利,在避免梯度消失的情況下,整個深度學(xué)習(xí)的研究方向是朝著更深網(wǎng)絡(luò)結(jié)構(gòu)前進。誠然隨著網(wǎng)絡(luò)加深,檢測的結(jié)果也隨之提升,但是龐大網(wǎng)絡(luò)需要耗費大量的計算資源,訓(xùn)練時間和檢測速度回會變慢,這對于嵌入式的移植往往是不利的。采用論文[2]的方法,發(fā)現(xiàn)一些精簡的模型也能帶來不錯的效果,為嵌入式移植提供了另外一種思路。雖然筆者實際仿真后的結(jié)論和論文[2]中的結(jié)論有一些微小的差距,其檢測精度比參考論文中的結(jié)論稍微低一點,但總體很接近,詳情可以參看表8。有可能筆者還需要在超參數(shù)選擇、初始權(quán)重設(shè)置等方面需要多做嘗試和優(yōu)化。 All-CNN-C基于CIFAR-100子數(shù)據(jù)1和子數(shù)據(jù)集2的檢測結(jié)果優(yōu)于論文[2]中的結(jié)果??紤]到CIFAR-100中子數(shù)據(jù)集1和子數(shù)據(jù)集2相比論文中的全部CIFAR-100數(shù)據(jù)要小得多,所以不太適合直接進行比較。

All-CNN-C模型在數(shù)據(jù)集CIFAR-100的子數(shù)據(jù)集1和子數(shù)據(jù)集2上進行遷移學(xué)習(xí)訓(xùn)練時,使用了在數(shù)據(jù)集CIFAR-10上訓(xùn)練好的All-CNN-C模型參數(shù)來初始化新的All-CNN-C模型,然后用這個初始化好的新All-CNN-C模型分別訓(xùn)練了兩個遷移學(xué)習(xí)模型,第一個是特征提取器(feature extractor),即固定住除最后一個分類層外的其它卷積層,只用新數(shù)據(jù)集訓(xùn)練最后的分類層,第二個是使用新數(shù)據(jù)集調(diào)校(fine tuning)所有層的參數(shù),實驗結(jié)果表面,第二個調(diào)校模型的準確率明顯優(yōu)于第一個特征提取模型??梢妼τ谔赜袘?yīng)用環(huán)境下,使用當(dāng)前環(huán)境特有的數(shù)據(jù)采用fine tuning類型的遷移學(xué)習(xí)的方法進行訓(xùn)練,能夠更好的提升當(dāng)前特定環(huán)境下檢測的準確性。這十分有利于通用模型向?qū)S泄I(yè)領(lǐng)域應(yīng)用擴展,在通用模型基礎(chǔ)上使用 fine tuning遷移學(xué)習(xí),以實現(xiàn)通用模型向某一領(lǐng)域的更好的擴展,提升某一個特定環(huán)境下檢測的準確率。

6 ?結(jié)論

雖然全卷積網(wǎng)絡(luò)結(jié)構(gòu)非常簡單,但是從實驗結(jié)果來看依然表現(xiàn)得不錯,在CIFAR-100數(shù)據(jù)集上達到了很好的精度。池化和全連接也許并不是CNN網(wǎng)絡(luò)中最必須的結(jié)構(gòu)。由此看來CNN未來的發(fā)展的趨勢有可能在保證精度的情況下模型變得更加簡單,以便于在不同環(huán)境下的應(yīng)用。通過遷移學(xué)習(xí)的方法能夠避免從零開始訓(xùn)練模型,共享一些權(quán)重參數(shù),也能夠訓(xùn)練特定環(huán)境下的數(shù)據(jù)以提升在這個環(huán)境下的檢測的準確性。在受限平臺如單片機、工控機,不通網(wǎng)絡(luò)環(huán)境或者緊急情況需要依賴本地資源計算的場景,非常適用精簡模型。更精簡、更具有針對性樣本資料訓(xùn)練,也許能夠帶領(lǐng)CNN網(wǎng)絡(luò)進入更廣闊的工程應(yīng)用領(lǐng)域。

參考文獻

[1] Murphy J. An Overview of Convolutional Neural Network Architectures for Deep Learning [J]. 2016.

[2] Springenberg J T, Dosovitskiy A, Brox T, et al. Striving for simplicity: The all convolutional net [J]. arXiv preprint arXiv:1412.6806, 2014.

[3] Krizhevsky A, Sutskever I, Hinton G E. Imagenet classi-fication with deep convolutional neural networks[C]//Adv-ances in neural information processing systems. 2012: 1097- 1105.

[4] Simonyan K, Zisserman A. Very deep convolutional net-works for large-scale image recognition [J]. ArXiv preprint arXiv: 1409.1556, 2014.

[5] Szegedy C, Liu W, Jia Y, et al. Going deeper with convo-lutions[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 1-9.

[6] He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.

[7] https://pytorch.org/docs/stable/

[8] https://github.com/pytorch/vision/blob/master/torchvision/datasets/cifar.py

猜你喜歡
支持向量機主成分分析人臉識別
人臉識別 等
揭開人臉識別的神秘面紗
主成分分析法在大學(xué)英語寫作評價中的應(yīng)用
江蘇省客源市場影響因素研究
SPSS在環(huán)境地球化學(xué)中的應(yīng)用
基于支持向量機的金融數(shù)據(jù)分析研究
基于類獨立核稀疏表示的魯棒人臉識別
基于K-L變換和平均近鄰法的人臉識別
宿迁市| 新化县| 会泽县| 柞水县| 红原县| 赣州市| 腾冲县| 普陀区| 灌阳县| SHOW| 溧阳市| 玉林市| 隆林| 专栏| 拜泉县| 内江市| 塔城市| 南阳市| 湘乡市| 昌宁县| 陇南市| 南投县| 陵川县| 元氏县| 吴忠市| 阳山县| 天门市| 慈溪市| 屏东县| 田阳县| 长乐市| 乐都县| 无棣县| 太仓市| 格尔木市| 石家庄市| 新泰市| 桂平市| 安乡县| 濮阳县| 衡阳县|