摘 要:Caffe是目前廣泛應(yīng)用于計(jì)算機(jī)視覺處理的深度學(xué)習(xí)框架之一,支持卷積神經(jīng)網(wǎng)絡(luò)的模型訓(xùn)練與預(yù)測。本文利用caffe支持的AlexNet卷積神經(jīng)網(wǎng)絡(luò)分別基于加載與不加載基礎(chǔ)模型兩種模式對(duì)五類動(dòng)物圖片進(jìn)行分類學(xué)習(xí)與訓(xùn)練,發(fā)現(xiàn)加載基礎(chǔ)模型的網(wǎng)絡(luò)模型收斂耗時(shí)僅2.77 s,測試集準(zhǔn)確率接近100%,實(shí)用測試準(zhǔn)確率達(dá)到99%,且訓(xùn)練與測試損失曲線高度重合,但另一模式的網(wǎng)絡(luò)模型收斂耗時(shí)多達(dá)68.89 s,測試集準(zhǔn)確率僅為95%,實(shí)用測試準(zhǔn)確率僅94%,且訓(xùn)練與測試損失曲線存在嚴(yán)重分化。圖像分類不僅可以對(duì)不同物類的圖像進(jìn)行準(zhǔn)確分類,同樣可以對(duì)不同屬性、狀態(tài)或特性的圖像進(jìn)行準(zhǔn)確分類。
關(guān)鍵詞:Caffe;AlexNet網(wǎng)絡(luò);基礎(chǔ)模型;圖像分類
中圖分類號(hào):TP391.4
文獻(xiàn)標(biāo)識(shí)碼: A
Caffe[1-3]是由伯克利視覺和學(xué)習(xí)中心的賈揚(yáng)清博士在2013年基于C++/CUDA/Python開發(fā)實(shí)現(xiàn)且開源的前饋卷積神經(jīng)網(wǎng)絡(luò)框架,其核心語言是C++,支持命令行、Python和Matlab接口,既可以在CPU上運(yùn)行也可以在GPU上運(yùn)行。Caffe的使用比較簡單,代碼易于擴(kuò)展,運(yùn)行速度快,同時(shí)支持GPU加速,在處理海量數(shù)據(jù)時(shí)速度很快;Caffe主要支持卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)[5-6],主要用于計(jì)算機(jī)視覺處理,包括圖像分類[7-8]、視覺目標(biāo)檢測[9]、無人駕駛、機(jī)器人導(dǎo)航、人臉識(shí)別等;Caffe不支持循環(huán)神經(jīng)網(wǎng)絡(luò)RNN [10]、長短期記憶網(wǎng)絡(luò)LSTM [11]等網(wǎng)絡(luò)架構(gòu),因此無法處理自然語言處理[12]、手寫識(shí)別、時(shí)間序列預(yù)測等。
傳統(tǒng)的動(dòng)物圖像分類方法,低端方法就是人工分選,較高端的方法則是使用低級(jí)的視覺特征,如顏色、形狀、紋理等作為圖像分類特征,同時(shí)結(jié)合分類器,如SVM[13]、Adaboost等實(shí)現(xiàn)動(dòng)物圖片分選,這些方法不僅存在效率低、耗時(shí)長等問題(尤其前者),同時(shí)存在可靠性、準(zhǔn)確性較低等問題。因此,本文基于caffe框架下的卷積分類網(wǎng)絡(luò)AlexNet[19-21]對(duì)動(dòng)物圖片數(shù)據(jù)的低級(jí)與高級(jí)特征進(jìn)行學(xué)習(xí),并通過端到端分類檢測得到由輸入直接到輸出的分類結(jié)果,旨在利用深度學(xué)習(xí)的方法解決傳統(tǒng)動(dòng)物圖像分類方法效率低、準(zhǔn)確率不高等問題,為動(dòng)物圖片分類,包括其它圖像分類提供更智能、更可靠、更高效的方法。
1"Caffe圖像分類
1.1"Caffe框架
Caffe主要由Blobs、Layers、Nets和solver等組成,其中Blobs是Caffe的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),主要用于數(shù)據(jù)存儲(chǔ)、交互和處理,且通過Blobs制定統(tǒng)一的數(shù)據(jù)內(nèi)存接口。Blobs可以存儲(chǔ)的數(shù)據(jù)類型很多,只要是caffe網(wǎng)絡(luò)中傳遞的數(shù)據(jù),包括前向傳播的數(shù)據(jù)、反向傳播的梯度、模型參數(shù)、網(wǎng)絡(luò)損失等都可以存儲(chǔ)。Blobs本質(zhì)是一個(gè)N維向量,一個(gè)blob就是一個(gè)內(nèi)存連續(xù)分布的N維數(shù)組,針對(duì)圖片其就是一個(gè)4維數(shù)組,每一維分別代表圖片數(shù)、通道數(shù)、圖片寬和高。Blobs不僅僅用作圖像計(jì)算,也可以用作非圖像計(jì)算,只需根據(jù)數(shù)據(jù)相應(yīng)調(diào)整Blobs的維數(shù)即可。
Layers是Caffe模型和計(jì)算的基本單元,是神經(jīng)網(wǎng)絡(luò)的核心,主要負(fù)責(zé)數(shù)據(jù)處理與運(yùn)算并輸出計(jì)算結(jié)果。Caffe設(shè)計(jì)實(shí)現(xiàn)了許多Layer,包括卷積、池化、全連接層等,利用這些Layer可以實(shí)現(xiàn)絕大部分的卷積神經(jīng)網(wǎng)絡(luò)。在Caffe中,網(wǎng)絡(luò)的結(jié)構(gòu)是從下往上的,每個(gè)層layer接收底部連接層layer的blobs數(shù)據(jù),然后通過前向傳播過程更新頂部連接層layer的blobs數(shù)據(jù),如圖1所示。當(dāng)然也可以接收頂部連接層的blobs梯度,然后通過反向計(jì)算過程更新底部連接層的blobs梯度。每一層layer都包含setup(初始化設(shè)置)、forward(前向傳播)、backward(反向傳播)3種重要的運(yùn)算,其中Setup用于網(wǎng)絡(luò)初始化及參數(shù)設(shè)置; Forward從底部連接層接收數(shù)據(jù),然后計(jì)算并向頂部連接層輸出數(shù)據(jù)和loss;Backward利用反向傳播算法進(jìn)行反向梯度的計(jì)算,然后利用梯度來調(diào)整各單元權(quán)重和相關(guān)參數(shù)。
Nets是一系列l(wèi)ayers的連接與集合,并定義了輸入、輸出和隱藏層,且對(duì)于不同的學(xué)習(xí)任務(wù),應(yīng)選擇不同的代價(jià)函數(shù)作為輸出。Nets通過Blob將各個(gè)層Layer以有向、無環(huán)(有環(huán)無法反向傳播)的形式組織在一起,以完成前向和反向傳播計(jì)算;Nets的概念圖如圖2所示,其中l(wèi)abel為ground truth真實(shí)值,ip為預(yù)測值,兩者輸入到loss(SOFTMAX_LOSS)里就可以計(jì)算真實(shí)值和預(yù)測值的誤差。
Solve是Caffe的核心,它協(xié)調(diào)著整個(gè)模型的運(yùn)作,主要用于模型訓(xùn)練與優(yōu)化。Solver定義了針對(duì)Net網(wǎng)絡(luò)模型的優(yōu)化方法,記錄網(wǎng)絡(luò)的訓(xùn)練過程,保存網(wǎng)絡(luò)模型參數(shù),中斷并恢復(fù)網(wǎng)絡(luò)的訓(xùn)練過程。在深度學(xué)習(xí)中,損失函數(shù)往往是非凸的,沒有解析解,因而需要通過優(yōu)化方法來求解,而solver則定義了這種迭代優(yōu)化算法,其通過交替調(diào)用前向(forward)和后向(backward)算法來更新參數(shù),以實(shí)現(xiàn)loss最小化。目前,Caffe提供了SGD、AdaDelta、
AdaGrad等六種優(yōu)化算法來求解最優(yōu)參數(shù),在solver配置文件中,通過設(shè)置type類型來選擇,但一般默認(rèn)選擇SGD。
1.2"圖像分類網(wǎng)絡(luò)
圖像分類[7-8,17-18]是對(duì)圖像整體的語義內(nèi)容進(jìn)行類別判定,其在海量圖片分類和特定類別的圖片分類中具有重要意義。文獻(xiàn)[14]利用卷積神經(jīng)網(wǎng)絡(luò)AlexNet實(shí)現(xiàn)了基于圖像內(nèi)容(包括巴士、擺鐘、菠蘿等20類)的圖像檢索,其解決了傳統(tǒng)技術(shù)方法存在的語義鴻溝問題,具有令人滿意的檢索效果;文獻(xiàn)[15]基于神經(jīng)網(wǎng)絡(luò)AlexNet的分類識(shí)別算法,對(duì)驗(yàn)證碼圖片進(jìn)行分類識(shí)別,取得了較好的識(shí)別效果;文獻(xiàn)[16]基于改進(jìn)的AlexNet模型實(shí)現(xiàn)了示功圖的高準(zhǔn)確性識(shí)別,提高了模型的收斂速度,很好地達(dá)到了實(shí)際應(yīng)用要求。
AlexNet網(wǎng)絡(luò)[19-21]是 KrizhevskyA等在 2012年提出并在當(dāng)年的ILSVRC 比賽中獲得冠軍的卷積神經(jīng)網(wǎng)絡(luò),其網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示分為 8 層,包含5 個(gè)卷積層和3 個(gè)全連接層,其中第一、二、五層卷積層后跟有池化層(最大池化),第三、四卷積層后未跟有池化層;每一個(gè)卷積層都包含了激勵(lì)函數(shù)RELU和局部區(qū)域歸一化LRN。后三層全連接層將二維特征圖轉(zhuǎn)變?yōu)橐痪S列向量,其中為了防止過擬合,第六、七全連接層后均跟有一個(gè) Dropout層。第六、七全連接層仍使用ReLU函數(shù)作為激活函數(shù),但第八層全連接層作為分類層沒有激活函數(shù)。本文則利用AlexNet卷積神經(jīng)網(wǎng)絡(luò)對(duì)動(dòng)物圖片進(jìn)行分類識(shí)別,探討AlexNet圖像分類網(wǎng)絡(luò)在動(dòng)物圖片分類識(shí)別中的應(yīng)用效果和識(shí)別性能。
2"數(shù)據(jù)處理與訓(xùn)練
實(shí)驗(yàn)數(shù)據(jù)集采用網(wǎng)絡(luò)媒介上下載的動(dòng)物圖片,一共包括500張。數(shù)據(jù)集圖片共分為5類,包括大象、恐龍、馬、老虎、牛,標(biāo)簽分別為0、1、2、3、4;每一類圖片均為100張,且每一類圖片都隨機(jī)抽取80張作為網(wǎng)絡(luò)的訓(xùn)練集,余下20張圖片作為測試集,因此網(wǎng)絡(luò)訓(xùn)練集共包括400張圖片,測試集包括100張圖片,訓(xùn)練集與測試集分別單獨(dú)存放在不同文件夾內(nèi),同時(shí)分別利用程序腳本將訓(xùn)練集與測試集的每張圖片組合成“圖片路徑+標(biāo)簽”的形式存入不同文本文件中以供模型讀取。
利用AlexNet網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)訓(xùn)練時(shí),網(wǎng)絡(luò)參數(shù)設(shè)置主要包括批尺寸(batch_size)、學(xué)習(xí)率(learning_rate)、動(dòng)量常數(shù)(momentum)和權(quán)值衰減系數(shù)(decay)等,具體參數(shù)取值見表1,其中批尺寸指每次迭代訓(xùn)練時(shí)神經(jīng)網(wǎng)絡(luò)處理圖片的數(shù)量,其值越大,網(wǎng)絡(luò)收斂速度越快,訓(xùn)練時(shí)間越短,但內(nèi)存占用越大,需要根據(jù)計(jì)算機(jī)配置具體設(shè)定;學(xué)習(xí)率對(duì)網(wǎng)絡(luò)模型的收斂起到關(guān)鍵作用,取值過大會(huì)導(dǎo)致?lián)p失函數(shù)跳過極小點(diǎn),太小則導(dǎo)致網(wǎng)絡(luò)收斂速度過慢;動(dòng)量常數(shù)旨在提高網(wǎng)絡(luò)收斂速率;權(quán)值衰減系數(shù)旨在調(diào)節(jié)模型復(fù)雜度對(duì)損失函數(shù)的影響。
3"分類結(jié)果與分析
實(shí)驗(yàn)分別以加載和不加載基礎(chǔ)模型兩種模式進(jìn)行訓(xùn)練,它們的模型性能比較見表2,其中基礎(chǔ)模型為AlexNet網(wǎng)絡(luò)1 000分類的訓(xùn)練模型。從表2可以發(fā)現(xiàn),當(dāng)加載基礎(chǔ)模型時(shí)網(wǎng)絡(luò)收斂速度更快,測試集準(zhǔn)確率更高,當(dāng)?shù)?xùn)練10次后,訓(xùn)練網(wǎng)絡(luò)就已經(jīng)開始收斂,收斂時(shí)間只有2.77 s,測試集準(zhǔn)確率也達(dá)到了100%。而不加載基礎(chǔ)模型的網(wǎng)絡(luò),收斂速度相比之下就要慢了很多,測試集準(zhǔn)確率也只有95%,當(dāng)?shù)?xùn)練250次后訓(xùn)練網(wǎng)絡(luò)才開始收斂,收斂時(shí)間也達(dá)到了68.89 s,收斂迭代次數(shù)和收斂時(shí)間都將近是前者的25倍。
圖4為加載和不加載基礎(chǔ)模型兩種模式下的網(wǎng)絡(luò)模型損失曲線,從圖4(a)可以發(fā)現(xiàn),對(duì)于加載基礎(chǔ)模型的網(wǎng)絡(luò),訓(xùn)練損失與測試損失曲線在迭代10次后就迅速趨于0,且兩者在10次迭代后的損失值一直都小于0.01,兩類損失曲線高度重合;但從圖4(b)可以發(fā)現(xiàn),對(duì)于未加載基礎(chǔ)模型的網(wǎng)絡(luò),訓(xùn)練損失曲線在迭代250次后才開始趨于0,且測試損失曲線在迭代250次后不降反升,與訓(xùn)練損失曲線垂直間距逐漸變大,出現(xiàn)較為嚴(yán)重的分化問題。
圖5為加載和不加載基礎(chǔ)模型兩種模式下的網(wǎng)絡(luò)模型測試集準(zhǔn)確率曲線,從圖中可以發(fā)現(xiàn),對(duì)于加載基礎(chǔ)模型的網(wǎng)絡(luò),測試集準(zhǔn)確率曲線在迭代10次后就迅速趨于1,且在10次迭代后的測試集準(zhǔn)確率一直穩(wěn)定保持100%不變;但對(duì)于未加載基礎(chǔ)模型的網(wǎng)絡(luò),測試集準(zhǔn)確率在迭代250次后才開始趨于0.95,此后隨著迭代次數(shù)的增加測試集準(zhǔn)確率始終徘徊在95%左右,與100%有一定差距。
表3為兩種模式下的網(wǎng)絡(luò)模型分別對(duì)100張圖片的實(shí)用測試結(jié)果,從表中可以發(fā)現(xiàn),對(duì)于加載基礎(chǔ)模型的網(wǎng)絡(luò),僅100次迭代訓(xùn)練得到的模型就可以實(shí)現(xiàn)準(zhǔn)確分類99張圖片,測試準(zhǔn)確率達(dá)到99%,非常接近100%,其它高于100次迭代訓(xùn)練得到的模型則同樣達(dá)到了至少99%的測試準(zhǔn)確率;但對(duì)于未加載基礎(chǔ)模型的網(wǎng)絡(luò),100次迭代訓(xùn)練得到的模型僅準(zhǔn)確分類85張圖片,測試準(zhǔn)確率僅有85%,較前者有較大差距;當(dāng)?shù)?xùn)練次數(shù)達(dá)到200次時(shí),得到的模型可以準(zhǔn)確分類94張圖片,測試準(zhǔn)確率達(dá)到94%,但較前者99%的測試準(zhǔn)確率仍有不小的差距,此后隨著迭代訓(xùn)練次數(shù)的增加,得到模型的測試準(zhǔn)確率始終徘徊在94%左右。
通過上述實(shí)驗(yàn)發(fā)現(xiàn),當(dāng)訓(xùn)練數(shù)據(jù)量較小或訓(xùn)練數(shù)據(jù)與現(xiàn)有基礎(chǔ)模型的數(shù)據(jù)較相似時(shí),加載基礎(chǔ)模型進(jìn)行模型訓(xùn)練可以獲得更快的收斂速度,更高的測試準(zhǔn)確率和更低的訓(xùn)練與測試損失,且兩類損失曲線基本重合,不存在兩類曲線分化的問題。而且加載基礎(chǔ)模型的網(wǎng)絡(luò)模型在實(shí)際分類應(yīng)用中具有更滿意的識(shí)別分類效果,滿足圖像分類應(yīng)用的可靠性、實(shí)用性需求。
4"結(jié)論
(1)本文基于加載和不加載基礎(chǔ)模型兩種模式,分別利用AlexNet網(wǎng)絡(luò)對(duì)五類動(dòng)物圖片(共500張)進(jìn)行類別學(xué)習(xí)與訓(xùn)練,并比較了兩類模式下的收斂速度、訓(xùn)練與測試損失、測試集準(zhǔn)確率等模型性能,發(fā)現(xiàn)加載基礎(chǔ)模型的網(wǎng)絡(luò)模型具有更快的收斂速度和更高的測試集準(zhǔn)確率,且在實(shí)際應(yīng)用中具有更好的分類效果,對(duì)于訓(xùn)練數(shù)據(jù)集較小的分類任務(wù)尤其適用。
(2)圖像分類具有非常廣泛的實(shí)際應(yīng)用,但是不論哪種分類應(yīng)用,優(yōu)良的分類效果勢必建立在合理的網(wǎng)絡(luò)設(shè)計(jì)、充足的數(shù)據(jù)數(shù)量、達(dá)標(biāo)的數(shù)據(jù)質(zhì)量等基礎(chǔ)之上。
參考文獻(xiàn):
[1]JIA Y Q, SHELHAMER E, DONAHUE J, et al. Caffe: convolutional architecture for fast feature embedding [J]. Computer Science, 2014, 2: 675-678.
[2]MAKOTO I, TETSUYA O, LEONARD B. A vegetable category recognition system: a comparison study for caffe and Chainer DNN frameworks [J]. Soft Computing, 2019, 23(9): 3129-3136.
[3]IKEDA M, SAKAI Y, ODA T, et al. Performance evaluation of a vegetable recognition system using caffe and chainer[J]. CISIS, 2017, 611: 24-30.
[4]LECUN Y, BENGIO Y, HINTON G. Deep learning[J]. Nature, 2015, 521: 436-444.
[5]SHI W W, GONG Y H, TAO X Y, et al. Improving CNN performance accuracies with min ̄max objective[J]. IEEE Transactions on Neural Networks amp; Learning Systems, 2018, 29(7): 2872-2885.
[6]ZHANG X B, CHEN F C, HUANG R Y. A combination of RNN and CNN for attention ̄based relation classification[J]. Procedia Computer Science. 2018, 131: 911-917.
[7]HUANG K Q, REN W Q, TAN T N. A review on image object classification and detection[J]. Chinese Journal of Computers, 2014, 37(6): 1225-1240.
[8]CHEN R, CAO Y F, SUN H. Multi ̄class image classification with active learning and semi ̄supervised learning[J]. Acta Automatica Sinica, 2011, 37(8): 954-962.
[9]尹宏鵬, 陳波, 柴毅, 等. 基于視覺的目標(biāo)檢測與跟蹤綜述[J]. 自動(dòng)化學(xué)報(bào), 2016, 42(10): 1466-1489.
[10]GRAVES A. Generating sequences with recurrent neural networks[J]. Eprint Arxiv, 2013, 157(6): 1158-1174.
[11]ERHAN D, BENGIO Y, COURVILLE A, et al. Why does unsupervised pre ̄training help deep learning[J]. Journal of Machine Learning research, 2010, 11(3): 625-660.
[12]COLLOBERT R, WESTON J, KARLEN M, et al. Natural language processing (almost) from scratch[J]. Journal of Machine Learning Research, 2011, 12( 1): 2493-2537.
[13]SHEN L X, WANG H, XU L D, et al . Identity management based on PCA and SVM [J]. Information Systems Frontiers, 2016, 18(4): 711-716.
[14]基于深度學(xué)習(xí)的圖像檢索系統(tǒng)[M].北京:國防工業(yè)出版社,1981.
[15]基于深度卷積神經(jīng)網(wǎng)絡(luò)AlexNet的驗(yàn)證碼識(shí)別研究[M].北京:國防工業(yè)出版社,1981.
[16]改進(jìn)的AlexNet模型及在油井示功圖分類中的應(yīng)用[M].北京:國防工業(yè)出版社,1981.
[17]許少尉, 陳思宇. 基于深度學(xué)習(xí)的圖像分類方法[J]. 電子技術(shù)應(yīng)用, 2018, 44(6): 116-119.
[18]ZHAO Z Q, XU S T, LIU D. A review of image set classification[J]. NEUROCOMPUTING, 2019, 335: 251-260.
[19]GONZALEZ R C, WOODS R E. Digital image processing third edition[M]. 北京: 電子工業(yè)出版社, 2017.
[20]WAJAHAT N, SAGHEER A, ALI T, et al. Classification of breast cancer histology images using AlexNet [J]. Image Analysis and Recognition, 2018, 10882: 869-876.
[21]CUI W C, GUO X P, SHAO H, et al. Offline chinese signature verification based on AlexNet[J]. Advanced Hybrid Information Processing, 2018, 219: 33-37.
(責(zé)任編輯:于慧梅)
Animal Image Classification Based on AlexNet Network
ZHOU Deliang*
(Bei Jing zhongdianyida technology Co., Ltd, Beijing 100190, China)
Abstract:
Caffe is one of the deep learning frameworks widely used in computer vision processing, which supports convolutional neural network model training and prediction. In this paper, AlexNet network supported by Caffe is used to classify and train five kinds of animal pictures based on loading and unloading basic models. It is found that the convergence time of network model with loading basic models is only 2.77 seconds, and the accuracy of test set is close to 100%, and the practical test accuracy is 99%, and the training and test loss curves are highly coincident. However, the convergence time of network model with unloading basic models is as high as 68.89 seconds, and the accuracy of test set is only 95%, and the practical test accuracy is only 94%, and the loss curve of training and testing is seriously differentiated. Image classification can not only accurately classify the images of different objects, but also accurately classify the images of different attributes, states or characteristics.
Key words:
caffe; AlexNet; basic models; image classification