鄭玉龍 趙明
摘 ? 要:基于自然環(huán)境下的花朵識別已經(jīng)成為了現(xiàn)在園藝植物以及計算機視覺方面的交叉研究熱點。本文的花朵圖像數(shù)據(jù)集是利用手機直接在自然場景中當(dāng)場拍攝的,采集了湖南省植物園內(nèi)26種觀賞花朵的2600幅圖像,其中還包括同一品種不同類別相似度很高的杜鵑,郁金香等花朵。設(shè)計了一種由3個殘差塊組成的20層深度學(xué)習(xí)模型Resnet20,模型的優(yōu)化算法結(jié)合了Adam的高效初始化以及Sgd優(yōu)秀的泛化能力,該優(yōu)化算法主要是根據(jù)每次訓(xùn)練批次以及l(fā)earning rate來進(jìn)行轉(zhuǎn)換調(diào)整,實驗結(jié)果表明比單獨使用Adam算法正確率高4到5個百分點,比單獨使用Sgd算法收斂更快。該模型在Flower26數(shù)據(jù)集上,通過數(shù)據(jù)增強識別率可達(dá)到 96.29%,表明深度學(xué)習(xí)是一種很有前途的應(yīng)用于花朵識別的智能技術(shù)。
關(guān)鍵詞:深度卷積神經(jīng)網(wǎng)絡(luò);殘差網(wǎng)絡(luò);花朵識別;隨機梯度下降
中圖分類號:TP391;S605 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識碼:A
Deep Learning for Flower Identification in Natural Environment
ZHENG Yu-long?覮,ZHAO Ming
(College of Software Engineering,Central South University,Changsha,Hunan 410075,China)
Abstract:Rapid identification of flower plants has become a hot topic in the cross-study of horticultural plants and computer vision. The flower image dataset of this article was photographed directly on the spot using a mobile phone in a natural scene,and 2600 images of 26 ornamental flowers in Changsha Botanical Garden were collected,including azaleas and tulips with similar similarities in different categories. A 20-layer deep learning model Resnet20,consisting of three residual blocks is designed. The model optimization algorithm combines Adam's efficient initialization and Sgd's excellent generalization ability. The optimization algorithm is mainly based on each training batch and learning rate to adjust the conversion,the experimental results show that the correct rate is 4 to 5 percentage points higher than the Adam algorithm alone,and it converges faster than using the Sgd algorithm alone. This model is based on the Flower26 dataset,through the data enhanced recognition rate can reach 96.29%,which shows that deep learning is a promising intelligent technology for flower recognition.
Key words:deep convolutional neural network;residual network(Resnet);flower recognition;stochastic gradient descent(SGD)
花朵識別是園藝學(xué)科以及農(nóng)林等行業(yè)生產(chǎn)經(jīng)營非常重要的工作,像花朵識別這樣類似的植物分類學(xué)是一項對日常生活很有意義的研究課題,這些植物分類學(xué)的分類依據(jù)主要是依據(jù)植物的外形特征,包括花朵、葉子、枝條、樹皮、果實等特征。因此,花朵識別也可以算是植物分類學(xué)的重要的一部分。由于生活條件的改善,人們開始越來越關(guān)注周邊的環(huán)境,對身邊花朵的種類也越來越有興趣,因此花朵識別的需求也日益增多。但花朵種類繁多,同一類花朵也因生長時間、生長環(huán)境還有各種基因變異的影響,導(dǎo)致花朵的形態(tài)各有不同,甚至差異很大,因此花朵識別一直都是人工智能識別領(lǐng)域中很有挑戰(zhàn)性的一項研究。
由于現(xiàn)在硬件條件及數(shù)據(jù)集的改善,復(fù)雜的模型被提出用于花朵的自動識別。隨著智能手機的快速普及和微軟識花[1],形色[2]等移動應(yīng)用的出現(xiàn),已經(jīng)獲得了數(shù)百萬張花朵等植物照片?;谝苿拥幕ǘ渥詣幼R別對于現(xiàn)實世界的社會生態(tài)監(jiān)測是必不可少的。但是這些軟件大都不能識別同一品種不同類別的花朵,而本文Flower26數(shù)據(jù)集包括了幾種相識度很高的同一品種不同類別的杜鵑等來進(jìn)一步提高花朵識別的細(xì)致分類。
目前,人們在花朵識別方面的研究工作已經(jīng)有很多。文獻(xiàn)[3]Nilsback和Zisserman就在2010年提出了一種用視覺詞包來描述顏色、形狀、紋理等特征的方法。在2017年Sun Y,和Liu Y等就在文獻(xiàn)[4]中提出了使用Sgd算法的深度卷積網(wǎng)絡(luò)[5]來進(jìn)行植物識別,文中為防止梯度爆炸和消失采用的是殘差網(wǎng)絡(luò)來進(jìn)行植物識別,并取得了不錯的效果。在文獻(xiàn)[6],Zhang C和 Liu J等人將Harr特征與花圖像的SIFT特征相結(jié)合,用非負(fù)稀疏編碼方法對它們進(jìn)行編碼,并對它們進(jìn)行分類。Hsu T H和Lee C H等在文獻(xiàn)[7]中提出了花朵識別中加入交互操作,就是通過很多復(fù)雜的人工操作來提高系統(tǒng)的識別率。
為了克服數(shù)據(jù)集缺乏自然場景花朵圖像和人工選擇特征的難題,受到圖像識別[8]領(lǐng)域關(guān)于深度學(xué)習(xí)[9]的啟發(fā),通過手機在自然環(huán)境下獲得了Flower26數(shù)據(jù)集。該數(shù)據(jù)集包含長沙省植物園內(nèi)26種觀賞花朵的2600幅圖像,其中還包括同一品種不同類別相似度很高的杜鵑,郁金香等花朵。
1 ? 網(wǎng)絡(luò)架構(gòu)
網(wǎng)絡(luò)架構(gòu)是以Resnet網(wǎng)絡(luò)結(jié)構(gòu)為原型,Resnet通過建立前面層與后面層之間的“短路連接”來減少損失,從而加強訓(xùn)練中梯度的反向傳播,訓(xùn)練出更深層次的卷積神經(jīng)網(wǎng)絡(luò)模型,用以實現(xiàn)更高的準(zhǔn)確度。Resnet[10]架構(gòu)在很大程度上已經(jīng)不再需要去精心設(shè)計特征,而是讓神經(jīng)網(wǎng)絡(luò)[11]自身去學(xué)習(xí)重要的特征。但是針對不同的任務(wù),還是需要用不同的目標(biāo)函數(shù)去保證學(xué)習(xí)方向的正確性。
2.1 ? 基本的殘差網(wǎng)絡(luò)結(jié)構(gòu)
殘差結(jié)構(gòu)單元主要是利用標(biāo)識映射的快捷連接,快捷連接就是跳過一層或多層的連接,一個有快捷連接的前饋神經(jīng)網(wǎng)絡(luò)可以實現(xiàn)原始的底層映射。本文模型首先需要構(gòu)建一個基本的殘差模塊,就是圖1中的Weight layer,這個模塊包括一層卷積層,接著是一層批標(biāo)準(zhǔn)化層,最后是一層激活層??梢钥吹綀D1中下面的那個layer沒有激活層,所以需要在函數(shù)體內(nèi)做一個判斷來實現(xiàn)。批標(biāo)準(zhǔn)化層的作用是對輸出參數(shù)歸一化,這樣可以使網(wǎng)絡(luò)更易訓(xùn)練。模型中的卷積層加入了L2正則化[12],這樣可以保證模型的泛化能力有一定的提高。
圖1表示成公式的話就是,假設(shè)需要的理想輸出定義為H(X),新加的非線性層F(X)就等于H(X)-X,那么最開始的輸出X就變?yōu)榱薋(X)+X。公式表示如下:
殘差模塊就是上述公式中的公式(1),其中的x表示輸入,y表示輸出,F(xiàn)(x,wi)表示要學(xué)習(xí)的殘差輸出。圖1中有兩層網(wǎng)絡(luò),用F = W2 δ(W1 x)表示,其中的δ表示ReLU激活層[13]。而Wx是表示線性的卷積操作,ReLU是非線性的操作。
1.2 ? 總的resnet網(wǎng)絡(luò)結(jié)構(gòu)
構(gòu)建深層神經(jīng)網(wǎng)絡(luò)模型時會遇到瓶頸結(jié)構(gòu)問題,就是當(dāng)網(wǎng)絡(luò)結(jié)構(gòu)層數(shù)[14]很深時,用1x1,3x3,1x1這樣三個卷積層代替兩個3x3卷積層(就是圖1中的兩個Weight layer層),1×1層可以負(fù)責(zé)尺寸的縮減和恢復(fù),其中第一個1x1層是用來降低維度的,第三個1x1層又可以用來增加維度,這樣就可以使3x3的卷積層擁有較小的輸入和輸出維度。這樣可以使用較少的參數(shù)來獲得更多的層抽象。本文的花朵識別模型,搭建的簡要結(jié)構(gòu)如下圖2:
由于花朵數(shù)據(jù)集Flower26的每種花朵是100張圖片,所以ResNet使用一個20層的小號版就足夠使用,還可以減少運行時間??偟哪P徒Y(jié)構(gòu)主要分為五大部分,像圖1中的那種結(jié)構(gòu)稱為一個building block,第一層是輸入層,第2到7層屬于層的疊加,每一個循環(huán)體內(nèi)都是在搭建一個building block,第8到13層中其中的首層strides =2,這樣輸出張量就是16*16*32,而輸入張量是32*32*16,相當(dāng)于對輸入又做了一次卷積操作,使得其shape和正常卷積層的shape保持一致,這樣才可以保證順利執(zhí)行add操作。第14到19層操作類似。
不管是卷積層還是pooling層,圖片經(jīng)過該卷積層或pooling層后的大小計算公式為:s=(sy+2*sp-sc+1)/ss。其中s表示圖片處理后的大小為s*s,加上filter的數(shù)量sf,結(jié)果為s*s*sf,sy代表的是原圖片大小為sy*sy,sp是指padding的數(shù)量,sc就是卷積核的大小是sc*sc,而步長就是ss。
2 ? 網(wǎng)絡(luò)訓(xùn)練
以開源的神經(jīng)網(wǎng)絡(luò)框架Keras為基礎(chǔ),本文實驗中的Keras是基于TensorFlow的,以Resnet網(wǎng)絡(luò)結(jié)構(gòu)為模型。訓(xùn)練花朵識別模型時,為加快訓(xùn)練速度以及防止過擬合,優(yōu)化算法中結(jié)合了Adam和Sgd兩種優(yōu)化算法,殘差模塊中加入了BN層,可以加強模型的泛化能力。
2.1 ? 訓(xùn)練集預(yù)處理
用深度學(xué)習(xí)來識別花朵需要從大量樣本中學(xué)習(xí)花朵特征,若樣本集不具備代表性,很難選擇出的特征。本文以自然環(huán)境下拍攝的花朵數(shù)據(jù)集Flower26作為訓(xùn)練和測試數(shù)據(jù)集。Flower26不同于很多公開的數(shù)據(jù)集,而是自己用手機拍攝的自然環(huán)境下的花朵,數(shù)據(jù)集包含在一個文件夾中,里面的子文件夾為花朵名字,子文件里面是每個類別的花朵照片100張,默認(rèn)設(shè)置前70張花朵圖片為訓(xùn)練集,后面30張花朵圖片為測試集。本次采集的圖像中有很多復(fù)雜背景,還有光照因素等因素會對花朵識別有不同程度的干擾。如下圖3中的花朵背景,包含很多的草和其他不需要識別的花朵,還有右邊的圖片背景較暗,可能會對花朵識別的準(zhǔn)確度識別會產(chǎn)生一定的影響。
Flower26花朵數(shù)據(jù)集包括2600張自然環(huán)境下的花朵照片,對于高大的喬木花朵,圖像是從地面的一個低角度拍攝的。低矮的灌木花朵是從高角度拍攝的。其他觀賞花朵是從水平角度采摘的。所以研究對象的大小可能會有一個數(shù)量級的變化(例如,一些圖像只顯示花朵,而另一些則顯示出整棵植物的距離)考慮到照片數(shù)量問題,可以對數(shù)據(jù)集Flower26先做數(shù)據(jù)增強,比較常見的操作就是旋轉(zhuǎn)圖片,對圖片做部分剪切,改變圖片色差,改變圖片尺寸等,通過這些操作增強訓(xùn)練集的數(shù)據(jù),隨著數(shù)據(jù)集的增大可以更好的提取圖片特征,泛化模型,防止模型的過擬合。數(shù)據(jù)集增強后對其再進(jìn)行訓(xùn)練,可以保證模型能有更好的效果。圖4中的兩張花朵圖片從左至右依次是旋轉(zhuǎn)圖片,部分剪切圖片的主要應(yīng)用,還包括一定的角度旋轉(zhuǎn)和平行移動等操作。
2.2 ? 訓(xùn)練參數(shù)及算法
實驗參數(shù)主要根據(jù)Epoch來調(diào)節(jié)learning rate的大小,然后適時切換 Adam和Sgd算法。保證訓(xùn)練前期擁有Adam的快速初始化以及訓(xùn)練后期擁有Sgd更好的泛化能力。算法偽代碼如下:
上述代碼中的Adam和Sgd是根據(jù)Epoch切換使用,算法的轉(zhuǎn)換過程是根據(jù)Epoch設(shè)置自動完成的,因此它并不會引入更多的超參數(shù)。本文主要通過原有的參數(shù)Epoch來分批設(shè)置學(xué)習(xí)率和切換Adam和Sgd算法,本實驗在前10Epoch用了Adam算法,之后切換為Sgd算法,Adam和Sgd算法的實現(xiàn)方法就是代碼里體現(xiàn)的那樣。發(fā)現(xiàn)實現(xiàn)較SWATS[15]更簡便,依舊比Adam和Sgd算法單獨作用的效果更優(yōu),實驗結(jié)果對比如圖6所示。
3 ? 實驗結(jié)果和分析
實驗環(huán)境主要為:處理器為英特爾 Core i5-6200U @ 2.30 GHz,8 GB內(nèi)存,顯卡是Nvidia GeForce 930 M(4GB),Windows 10 64位操作系統(tǒng)。在這樣實驗環(huán)境配置下,基本可以滿足花朵識別模型的性能要求。
3.1 ? 各個花朵識別率
下表顯示的是26類花朵的各自的識別率,其中包括一些類似的同品種花朵,像滿山紅和映山紅就極其相似。
通過表5各花朵的識別率可以看出同一種類很相似的花朵對識別的正確的影響并不大,比如圖5左側(cè)前四類就屬于同一品種不同類別的花朵,可見模型的可使用性。有些識別率較低的花朵圖片可能是由圖像清晰度或者圖片中對應(yīng)花朵所占的整張圖片環(huán)境下比例過小,從而造成識別出錯,如圖3中背景復(fù)雜圖片的例子,圖片中包含了很多其他的東西,花朵所占比重并不大,測試時花朵的識別率可能會出現(xiàn)偏差。
3.2 ? 結(jié)果對比
對比算法主要是Adam,Sgd以及Adam和Sgd結(jié)合的算法,對比效果圖如下:
由圖可知,三種算法是數(shù)據(jù)未增強時Epoch=50內(nèi)的正確率,數(shù)據(jù)增強后,正確率會提高將近10個百分點,達(dá)到96.29%的識別率。圖中可以看出Adam初始化確實比Sgd快的多,前50Epoch以內(nèi),Adam也始終高于Sgd。由于實驗中Adam和Sgd結(jié)合的算法前10Epoch設(shè)置的是Adam,可以看出,在第5Epoch的時候還是會有相交的地方,后面才慢慢穩(wěn)定領(lǐng)先,主要是由于Sgd的泛化能力優(yōu)于Adam,就是Adam加上Sgd對測試集的預(yù)測能力會高于Adam單獨作用。
4 ? 結(jié) ? 論
Adam和Sgd優(yōu)化程度還可以進(jìn)一步加大,精確度也可以隨著每種花朵數(shù)據(jù)集的增加會有所提高。如果能在一個算法中實現(xiàn)每一Epoch都可以擁有Adam快速初始化和Sgd的泛化優(yōu)點那就更好了。本文數(shù)據(jù)集模型的參數(shù)文檔對學(xué)術(shù)界開放,可在百度網(wǎng)盤鏈接訪問或者下載,訓(xùn)練的參數(shù)文檔鏈接如下:https://pan.baidu.com/s/1AB-AJfnQc9HyZKq8xRcQvw。查看這些模型參數(shù)可以作為其他花朵識別研究進(jìn)行遷移學(xué)習(xí)的初始化工作,加快研究進(jìn)程。在今后的工作中,F(xiàn)lower26數(shù)據(jù)庫將由更多的花朵物種在生命周期的不同階段和更詳細(xì)的注釋中擴(kuò)展。深度學(xué)習(xí)模型也將從分類任務(wù)擴(kuò)展到產(chǎn)量預(yù)測、昆蟲檢測、病害分割等。
參考文獻(xiàn)
[1] ? ?微軟亞洲研究院,中科院.微軟識花[EB/OL].https://www.microsoft.com/en-us/research/pr-oject/flowerreco-cn/,2016.
[2] ? ?杭州大拿科技股份有限公司.形色[EB/OL].http://www.xingseapp.com/,2016.
[3] ? ?NILSBACK M E,ZISSEMAN A. Delving deeper into the whorl of flower segmentation[M]. Butter worth-Heinemann,2010.
[4] ? ?SUN Y,LIU Y,WANG G,et al. Deep learning for plant identification in natural environment.[J]. Computational Intelligence & Neuroscience,2017,2017(4):1—6.
[5] ? ?IOFFE S,ZEGEDY C. Batch normalization: accelerating deep network training by reducing internal covariate shift[J]. arXiv preprint:1502.03167,2015.
[6] ? ?ZHANG C,LIU J,LIANG C,et al. Image classification using Harlike transformation of local features with coding residuals[J]. Signal Processing,2013,93(8):2111—2118.
[7] ? ?HSU T H,LEE C H,CHEN L H. An interactive flower image recognition system[J]. Multimedia Tools & Applications,2011,53(1):53—73.
[8] ? ?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.
[9] ? ?SCHMIDHUBER J. Deep learning in neural networks[M]. Elsevier Science Ltd,2015.
[10] ?HE K,ZHANG X,REN S,et al. Identity mappings in dResidual networks[M]. Computer Vision ECCV 2016. Springer International Publishing,2016:630—645.
[11] ?YOSINKI J,CLUNE J,BENGIO Y,et al. How transferable are features in deep neural networks[J]. Eprint arxiv,2014,27:3320—3328.
[12] ?SMIRNOV E A,TIMOSHENKO D M,ANDRIANOV S N. Comparison of regularization methods for imageNet classification with deep convolutional neural networks [J]. Aasri Procedia,2014,6(1):89—94.
[13] ?HE K,ZHANG X,REN S,et al. Spatial pyramid pooling in deep convolutional networks for visual recognition[J]. IEEE Trans Pattern Anal Mach Intell,2014,37(9):1904—1916.
[14] ?KIM Ji-won,KWON LEE J,MU lEE K. Accurate image super-resolution using very deep convolutional networks[C]//Proceedings of the. IEEE Conference on Computer Vision and Pattern Recognition,2016:1646—654.
[15] ?KESKAR N S,SOCHER R. Improving Generalization Performance by Switching from Adam to SGD[J]. arXiv:1712.07628, 2017.