版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于機(jī)器學(xué)習(xí)的花卉識別系統(tǒng)設(shè)計(jì)摘要中國是花卉種植大國,種類資源豐富,栽培歷史悠久,花卉相關(guān)從業(yè)人員眾多。其中,花卉分類是植物學(xué)研究領(lǐng)域和花卉業(yè)生產(chǎn)中極其重要的基礎(chǔ)性工作,從而花卉分類學(xué)是一項(xiàng)具有長遠(yuǎn)意義的基礎(chǔ)性研究,但是其分類過程需花費(fèi)大量的人力、物力和財(cái)力。隨著手機(jī)設(shè)備等成像技術(shù)的發(fā)展,人們對花卉圖像進(jìn)行收集、認(rèn)識和區(qū)分,奠定了花卉智能分類識別的基礎(chǔ)。卷積神經(jīng)網(wǎng)絡(luò)特別是善于在復(fù)雜數(shù)據(jù)結(jié)構(gòu)中提取有用特征。正是這種豐富的特征表達(dá)能力使得卷積神經(jīng)網(wǎng)絡(luò)在圖象識別與分類、目標(biāo)檢測與定位、人機(jī)對局、無人駕駛等范圍應(yīng)用廣泛。本文基于機(jī)器學(xué)習(xí),利用卷積神經(jīng)網(wǎng)絡(luò)自動(dòng)學(xué)習(xí)的特點(diǎn),使用Sequential來搭建CNN,搭建了用于識別花卉的CNN模型和輕量級卷積神經(jīng)網(wǎng)絡(luò)MobileNet模型,通過訓(xùn)練數(shù)據(jù)的學(xué)習(xí),針對收集的五類花卉的圖像,共四千多張圖片進(jìn)行圖像處理和特征提取,使得模型能夠?qū)W習(xí)不同種類花卉的特征,其驗(yàn)證集達(dá)到80%以上的準(zhǔn)確率,進(jìn)而識別花卉種類,有效地解決花卉識別分類這一問題。關(guān)鍵詞:機(jī)器學(xué)習(xí),卷積神經(jīng)網(wǎng)絡(luò),TensorFlow,圖像識別,花卉識別目錄TOC\o"1-4"\h\z\u第1章緒論 11.1研究背景及意義 11.2國內(nèi)外研究現(xiàn)狀 11.3論文組織結(jié)構(gòu) 2第2章機(jī)器學(xué)習(xí)概述 32.1機(jī)器學(xué)習(xí)理論 32.2卷積神經(jīng)網(wǎng)絡(luò) 32.2.1卷積神經(jīng)網(wǎng)絡(luò)概述 32.2.2卷積層 52.2.3全連接層 52.2.4池化層 62.3本章小結(jié) 6第3章TensorFlow實(shí)驗(yàn)平臺的搭建 73.1TensorFlow工作原理 73.1.1核心組件 73.1.2低階API 83.1.3高階API 93.2TensorFlow框架環(huán)境配置 93.3本章小結(jié) 10第4章基于機(jī)器學(xué)習(xí)的花卉識別的設(shè)計(jì) 114.1數(shù)據(jù)處理 114.1.1數(shù)據(jù)讀取 114.1.2數(shù)據(jù)劃分 124.2配置網(wǎng)絡(luò) 124.3構(gòu)建模型 134.1.1CNN模型 134.1.2MobileNet模型 144.4模型評估 164.5模型預(yù)測 184.6本章小結(jié) 22第5章總結(jié)與展望 245.1總結(jié) 245.2展望 24參考文獻(xiàn) 27第1章緒論研究背景與意義如今,隨著人工智能的快速發(fā)展,機(jī)器學(xué)習(xí)結(jié)合識別圖像技術(shù)已廣泛應(yīng)用到日常生活的各個(gè)方面,比如檢測物體、識別圖像以及跟蹤定位等。圖像識別就是指利用計(jì)算機(jī)提取圖像的某些特性進(jìn)行理解和分析,以識別各種不同模式的目標(biāo)和對象的技術(shù)。近年來,由于圖像識別技術(shù)的快速發(fā)展,不少領(lǐng)域都開始嘗試使用圖像識別技術(shù),借助計(jì)算機(jī)高速的計(jì)算能力來解決一些日常生活中比較困難、繁瑣和危險(xiǎn)的問題,減少人們的工作量。在花卉農(nóng)業(yè)領(lǐng)域,常常需要對一些花卉品種進(jìn)行分類識別處理,但需要在專業(yè)技術(shù)人員的指導(dǎo)下才能順利進(jìn)行分類工作,大量人力、物力、財(cái)力資源被耗費(fèi),而且效率很低,極大的限制了花卉農(nóng)業(yè)的發(fā)展。因此本文研究基于機(jī)器學(xué)習(xí)的花卉識別,利用卷積神經(jīng)網(wǎng)絡(luò)的特征,使用Sequential來搭建CNN,搭建了用于識別花卉的CNN模型和輕量級卷積神經(jīng)網(wǎng)絡(luò)MobileNet模型,通過對大量數(shù)據(jù)進(jìn)行訓(xùn)練和學(xué)習(xí),進(jìn)行圖像處理和特征提取,使得模型能夠?qū)W習(xí)不同種類花卉之間的特征,進(jìn)而識別花卉,有效地解決識別花卉這一難題。國內(nèi)外研究現(xiàn)狀近年來,機(jī)器學(xué)習(xí)和計(jì)算機(jī)視覺技術(shù)得到了快速的發(fā)展,圖像識別應(yīng)用在日常生活中變得到處可見,比如小區(qū)門口的車牌號識別,支付軟件中的人臉識別等。因?yàn)榛ɑ茏R別具有較高的應(yīng)用價(jià)值和實(shí)際意義,所以吸引了國內(nèi)外很多科研工作者投身研究。國外很多高校很早就已經(jīng)開始了對花卉識別的研究和實(shí)驗(yàn),柯逍[1]和李紹滋等研究者提出一種以RGB為基礎(chǔ)的圖像分割的方法,利用多個(gè)特征相互融合的方法進(jìn)行圖像檢索,識別花卉圖像。牛津大學(xué)的Nilsback[2]和Zisserman等人為了便于對花卉圖像的研究,搜集整理了花卉圖像數(shù)據(jù)集OxfordFlower17和OxfordFlower102。如今,這兩個(gè)花卉圖像數(shù)據(jù)集已被廣泛地應(yīng)用在了花卉圖像處理的研究中。每年的ICCV(國際計(jì)算機(jī)視覺大會(huì))、CVPR(EEE國際計(jì)算機(jī)視覺與模式識別會(huì)議)、ECCV(歐洲計(jì)算機(jī)視覺國際會(huì)議)等著名國際性學(xué)術(shù)會(huì)議上,都會(huì)有一些關(guān)于圖像分割、物體識別的研究成果出現(xiàn)。而國內(nèi)花卉識別的相關(guān)研究相對國外起步較晚,雖然研究的時(shí)間短,但是也取得了很大的突破。如中科院旗下的植物研究所使用收集到的260萬多幅大數(shù)據(jù)量的圖片和弱監(jiān)督學(xué)習(xí)方法,開發(fā)的拍照識花可以識別上千種花卉,并且有很高的準(zhǔn)確度。國內(nèi)外現(xiàn)有的廣泛應(yīng)用的花卉識別技術(shù)大多都是通過聚類、超像素等方式來進(jìn)行花卉圖像的分割,通過提取花卉圖像的表層特征如顏色形狀信息來識別分類,這種方法雖然簡單,但是效果卻不盡如人意。最近幾年,得益于機(jī)器學(xué)習(xí)快速發(fā)展,取得了不錯(cuò)的成績。使用卷積神經(jīng)網(wǎng)絡(luò)模型提取花卉圖像更能代表圖象特征來識別分類,識別效果比傳統(tǒng)特征方法更好,穩(wěn)定性更高。論文組織結(jié)構(gòu)本文分為五個(gè)部分。第1章為緒論,主要介紹了花卉分類的背景知識和國內(nèi)外研究現(xiàn)狀,以及花卉識別的意義。第2章為基礎(chǔ)理論,主要介紹了機(jī)器學(xué)習(xí)大概念以及機(jī)器學(xué)習(xí)的算法卷積神經(jīng)網(wǎng)絡(luò)(CNN)概述以及基本網(wǎng)絡(luò)結(jié)構(gòu)。第3章為TensorFlow實(shí)驗(yàn)平臺的搭建,簡要介紹了實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的TensorFlow框架以及工作原理。第4章為基于機(jī)器學(xué)習(xí)的花卉識別,用的是機(jī)器學(xué)習(xí)的算法卷積神經(jīng)網(wǎng)絡(luò)CNN,本章首先對數(shù)據(jù)進(jìn)行讀取劃分,然后使用的Sequential來搭建CNN,搭建了用于識別花卉的CNN模型和輕量級卷積神經(jīng)網(wǎng)絡(luò)MobileNet模型,對其進(jìn)行訓(xùn)練和調(diào)用發(fā)現(xiàn)MobileNet模型更好。選擇MobileNet模型測試準(zhǔn)確率。用設(shè)計(jì)好的UI界面選擇一張圖片上傳然后點(diǎn)擊開始預(yù)測就會(huì)用訓(xùn)練好的模型進(jìn)行預(yù)測,把預(yù)測結(jié)果輸出在界面上。第5章為總結(jié)與展望本章主要總結(jié)了基于卷積神經(jīng)網(wǎng)絡(luò)的花卉識別的工作,并對花卉識別進(jìn)行了展望。第2章機(jī)器學(xué)習(xí)概述2.1機(jī)器學(xué)習(xí)理論機(jī)器學(xué)習(xí)是人工智能核心,是使計(jì)算機(jī)具有智能的根本途徑。機(jī)器學(xué)習(xí)是從有限的觀測數(shù)據(jù)中學(xué)習(xí)出具有一般規(guī)律,并可以將總結(jié)出來的規(guī)律推廣應(yīng)用到?jīng)]有觀測模本上。機(jī)器學(xué)習(xí)可以粗略的分為三個(gè)要素:模型、學(xué)習(xí)準(zhǔn)則、優(yōu)化算法。大部分的機(jī)器學(xué)習(xí)都可以看做這三個(gè)基本要素的不同組合。相同的模型也可以有不同的學(xué)習(xí)算法。機(jī)器學(xué)習(xí)包括有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí),分類屬于有監(jiān)督學(xué)習(xí)。我們可以把一個(gè)標(biāo)記好特征以及標(biāo)簽的東西看做一個(gè)樣本。一組樣本構(gòu)成的集合成為數(shù)據(jù)集(DataSet),一般把數(shù)據(jù)集分為兩部分:訓(xùn)練集和測試集。訓(xùn)練集(TrainingSet)中的樣本是來訓(xùn)練模型的,也叫訓(xùn)練樣本(TrainingSample),而測試集中的樣本是用來檢驗(yàn)?zāi)P秃脡牡囊步袦y試樣本(TestSample)。機(jī)器學(xué)習(xí)算法中包含了神經(jīng)網(wǎng)絡(luò)、線性回歸、KNN、SVM和聚類在內(nèi)的多種算法,這些算法相當(dāng)于一般普通算法的升級版。2.2卷積神經(jīng)網(wǎng)絡(luò)2.21卷積神經(jīng)網(wǎng)絡(luò)概述卷積神經(jīng)網(wǎng)絡(luò)是用在計(jì)算機(jī)視覺,這是人工智能的一個(gè)分支,計(jì)算機(jī)視覺就是在告訴你們計(jì)算機(jī)如何理解圖像,比如現(xiàn)在的人臉識別自動(dòng)駕駛包括美圖秀秀還有抖音尬舞機(jī)都是用的計(jì)算機(jī)視覺來開發(fā)的。卷積神經(jīng)網(wǎng)絡(luò)不光可以來處理圖像還可以來處理音頻,文本這種消息只要數(shù)據(jù)可以變成圖像格式都可以來處理。卷積神經(jīng)網(wǎng)絡(luò)(ConvolutionalNeuralNetwork,CNN或ConvNet)是一種具有局部連接、權(quán)重共享等特性的深層前饋神經(jīng)網(wǎng)絡(luò)。目前的卷積神經(jīng)網(wǎng)絡(luò)一般是由卷積層、匯聚層和全連接層交叉疊加而成的前饋神經(jīng)網(wǎng)絡(luò)。卷積神經(jīng)網(wǎng)絡(luò)有三個(gè)結(jié)構(gòu)上的特征:局部連接、權(quán)重共享以及匯聚。這些特征使得卷積神經(jīng)網(wǎng)絡(luò)擁有一定程度上的平移、縮笑和旋轉(zhuǎn)不變性。和前饋神經(jīng)網(wǎng)絡(luò)相比,卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)更少。卷積神經(jīng)網(wǎng)絡(luò)與其他神經(jīng)網(wǎng)絡(luò)模型最大的區(qū)別是卷積神經(jīng)網(wǎng)絡(luò)在神經(jīng)網(wǎng)絡(luò)的輸入層前面連接了卷積層,這樣卷積層就變成了卷積神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)輸入層。卷積神經(jīng)網(wǎng)絡(luò)的基本網(wǎng)絡(luò)結(jié)構(gòu)可以分為四個(gè)部分:輸入層,卷積層,全連接層和輸出層。下面介紹各個(gè)網(wǎng)絡(luò)部分:輸入層:卷積輸入層可以直接作用于原始輸入數(shù)據(jù),對于輸入是圖像來說輸入數(shù)據(jù)是圖像的像素值。卷積層:卷積神經(jīng)網(wǎng)絡(luò)的卷積層,也叫做特征提取層,包括二個(gè)部分。第一部分是真正的卷積層,主要作用是提取輸入數(shù)據(jù)特征。每一個(gè)不同的卷積核提取輸入數(shù)據(jù)的特征都不相同,卷積層的卷積核數(shù)量越多,就能提取越多輸入數(shù)據(jù)的特征。第二部分是pooling層,也叫下采樣層,主要目的是在保留有用信息的基礎(chǔ)上減少數(shù)據(jù)處理量,加快訓(xùn)練網(wǎng)絡(luò)的速度。通常情況下,卷積神經(jīng)網(wǎng)絡(luò)至少包含二層卷積層(這里把真正的卷積層和下采樣層統(tǒng)稱為卷積層),即卷積層,pooling層,卷積層,pooling層。卷積層數(shù)越多,在前一層卷積層基礎(chǔ)上能夠提取更加抽象的特征。全連接層:可以包含多個(gè)全連接層,實(shí)際上就是多層感知機(jī)的隱含層部分通常情況下后面層的神經(jīng)節(jié)點(diǎn)都和前一層的每一個(gè)神經(jīng)節(jié)點(diǎn)連接,同一層的神經(jīng)元節(jié)點(diǎn)之間是沒有連接的。每一層的神經(jīng)元節(jié)點(diǎn)分別通過連接線上的權(quán)值進(jìn)行前向傳播,加權(quán)組合得到下一層神經(jīng)元節(jié)點(diǎn)的輸入。采用softmax全連接,得到的激活值即卷積神經(jīng)網(wǎng)絡(luò)提取到的圖片特征。輸出層:輸出層神經(jīng)節(jié)點(diǎn)的數(shù)目是根據(jù)具體應(yīng)用任務(wù)來設(shè)定的。如果是分類任務(wù),卷積神經(jīng)網(wǎng)絡(luò)輸出層通常是一個(gè)分類器。卷積神經(jīng)網(wǎng)絡(luò)(CNN)目前已經(jīng)普遍應(yīng)用在計(jì)算機(jī)視覺領(lǐng)域,并且已經(jīng)取得了不錯(cuò)的效果。目前的CNN研究總結(jié)來看分為兩個(gè)方向:一是對訓(xùn)練好的復(fù)雜模型進(jìn)行壓縮得到小模型;二是直接設(shè)計(jì)小模型并進(jìn)行訓(xùn)練。MobileNet屬于后者是Google在2017年提出的一種小巧而高效的CNN模型。2.22卷積層卷積層主要負(fù)責(zé)將神經(jīng)網(wǎng)絡(luò)中的每一部分經(jīng)過更加深入的研究,從而抽象出更高層次的特征。在傳統(tǒng)神經(jīng)網(wǎng)絡(luò)中每個(gè)神經(jīng)元都要與圖片上每個(gè)像素相連接,這樣的話就會(huì)造成權(quán)重的數(shù)量巨大造成網(wǎng)絡(luò)難以訓(xùn)練。而在含有卷積層的的神經(jīng)網(wǎng)絡(luò)中每個(gè)神經(jīng)元的權(quán)重個(gè)數(shù)都時(shí)卷積核的大小,這樣就相當(dāng)于沒有神經(jīng)元只與對應(yīng)圖片部分的像素相連接。這樣就減少了權(quán)重的數(shù)量。同時(shí)我們可以設(shè)置卷積操作的步長。卷積層會(huì)對輸入的數(shù)據(jù)進(jìn)行特征提取,然后會(huì)對數(shù)據(jù)中隱含的關(guān)聯(lián)性進(jìn)行抽象,從而抽象出更高層次的特征,這樣的作用在花卉識別中可以得到很好的利用,對于卷積層而言,有兩個(gè)優(yōu)點(diǎn),一個(gè)是局部連接,局部連接就是每一個(gè)神經(jīng)元都要與需要識別的花卉圖片的像素點(diǎn)進(jìn)行連接,這樣的話,如果每一個(gè)3×3的卷積核只與圖像的3×3區(qū)域進(jìn)行連接的話,最終的結(jié)果就是900萬個(gè)鏈接,這樣我們可以根據(jù)卷積層的這個(gè)有點(diǎn)來分析花卉的局部特征。卷積層的另一個(gè)優(yōu)點(diǎn)是權(quán)值共享,如果像以上所說的,訓(xùn)練一個(gè)3×3的卷積核,提取圖像中的某一個(gè)特征,這樣它在圖片的其他區(qū)域甚至其他地方都有這個(gè)能力,這樣的話可以提取的特征也就越多2.23全連接層池化層和激活函數(shù)層等操作是將原始數(shù)據(jù)映射到隱層特征空間的話,全連接層則起全連接層在整個(gè)卷積神經(jīng)網(wǎng)絡(luò)中起到“分類器”的作用。如果說卷積層、池到將學(xué)到的“分布式特征表示”映射到樣本標(biāo)記空間的作用。
當(dāng)來到了全連接層之后,可以理解為一個(gè)簡單的多分類神經(jīng)網(wǎng)絡(luò)(如:BP神經(jīng)網(wǎng)絡(luò)),通過softmax函數(shù)得到最終的輸出。整個(gè)模型訓(xùn)練完畢。兩層之間所有神經(jīng)元都有權(quán)重連接,通常全連接層在卷積神經(jīng)網(wǎng)絡(luò)尾部。也就是跟傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)神經(jīng)元的連接方式是一樣的。通俗講你是一只小蜜蜂,你的任務(wù)是找花蜜。你的視野還比較窄,只能看到很小一片區(qū)域。當(dāng)你找到朵花的花蜜之后,你不知道你找到的是不是全部的花蜜,所以你們?nèi)康男∶鄯溟_了個(gè)會(huì),把所有采到的花蜜都拿出來分享了。全連接層就是這個(gè)花蜜大會(huì)~全連接層的組成如下:圖2.1二層全連接層結(jié)構(gòu)2.24池化層池化層夾在連續(xù)的卷積層中間,用于壓縮數(shù)據(jù)和參數(shù)的量,縮小矩陣的尺寸,減小過擬合。簡而言之,如果輸入是圖像的話,那么池化層的最主要作用就是壓縮圖像。池化層具體操作與卷積層的操作基本相同,只不過池化層的卷積核為只取對應(yīng)位置的最大值(最大池化)、平均值(平均池化),使用最大值操作的池化層并且不經(jīng)過反向傳播的修改加快計(jì)算的速度也可以防止過擬合是使用池化層的優(yōu)點(diǎn)。2.3本章小結(jié)本章主要介紹了機(jī)器學(xué)習(xí)相關(guān)的理論還有卷積神經(jīng)網(wǎng)絡(luò)概述還有卷積神經(jīng)網(wǎng)絡(luò)的基本網(wǎng)絡(luò)結(jié)構(gòu)輸入層,卷積層,全連接層和輸出層。第3章TensorFlow實(shí)驗(yàn)平臺的搭建3.1TensorFlow工作原理TensorFlow是一個(gè)使用數(shù)據(jù)流圖(dataflowgraphs),用于數(shù)值計(jì)算的開源軟件庫。3.11核心組件核心組件(coreruntime)包括:分發(fā)中心(distributedmaster)、執(zhí)行器(dataflowexecutor/workerservice)、內(nèi)核應(yīng)用(kernelimplementation)和最底端的設(shè)備層(devicelayer)/網(wǎng)絡(luò)層(networkinglayer)。圖3.1TensorFlow的代碼結(jié)構(gòu)分發(fā)中心從輸入的數(shù)據(jù)流圖中裁取子圖(subgraph),把子圖劃分為操作片段并啟動(dòng)執(zhí)行器。分發(fā)中心處置數(shù)據(jù)流圖的時(shí)候會(huì)進(jìn)行優(yōu)化,比如公共子表達(dá)式消去(commonsubexpressionelimination)、常量折疊(constantfolding)等等。執(zhí)行器負(fù)責(zé)圖操作在進(jìn)程和設(shè)備中的運(yùn)行、收發(fā)其它執(zhí)行器的結(jié)果。分布式TensorFlow擁有參數(shù)器(parameterserver)來匯總和更新其它執(zhí)行器返給他的模型參數(shù)。負(fù)責(zé)比較單一的圖操作,包括數(shù)學(xué)計(jì)算、數(shù)組操作、控制流和狀態(tài)管理操作的是內(nèi)核應(yīng)用。單進(jìn)程版本的TensorFlow沒有分發(fā)中心和執(zhí)行器,而是使用特殊的會(huì)話應(yīng)用(Sessionimplementation)來聯(lián)系本地裝備。3.12低階api張量(tf.Tensor)在TensorFlow程序中,所有的數(shù)據(jù)都是通過張量的形式來表示的。張量是TensorFlow的核心數(shù)據(jù)單位,本質(zhì)上張量是一個(gè)任意維度的數(shù)組??捎玫膹埩款愋桶ǔ?shù)、變量、張量占位符和稀疏張量。張量的屬性值主要有三個(gè):名字(name)、維度(shape)和類型(type)。變量(tf.Variable)是能夠通過操作改變所取值的特殊張量。必須先進(jìn)行初始化后變量才可使用,低階API中定義的變量必須明確初始化,高階API例如Keras會(huì)自動(dòng)對變量進(jìn)行初始化。用戶也可以自行定義變量集合。數(shù)據(jù)流圖是用于定義計(jì)算結(jié)構(gòu)的。在TensorFlow中,數(shù)據(jù)流圖本質(zhì)上是一組鏈接在一起的函數(shù),每個(gè)函數(shù)都會(huì)將其輸出傳遞給0個(gè)、1個(gè)或多個(gè)位于這個(gè)級聯(lián)鏈上的其他函數(shù)。Z1(0)ZZ1(0)Z0(0)Z1(1)ZZ1(1)Z0(1)Z0Z0(2)圖3.2依賴?yán)右话愕?,像Z0(0)與Z1(0)這種直接連接,稱為直接依賴,而像Z0(0)與Z0(2)這種稱為間接依賴。即Z0(1)直接依賴于Z0(0)和Z1(0),而Z0(2)間接依賴依賴于Z0(0)與Z1(0)。TensorFlow在數(shù)據(jù)流編程下運(yùn)行,具體地,使用數(shù)據(jù)流圖(tf.Graph)表示計(jì)算指令間的依賴關(guān)系,隨后依據(jù)圖創(chuàng)建會(huì)話(tf.Session)并運(yùn)行圖的各個(gè)部分。tf.Graph包含了圖結(jié)構(gòu)與圖集合兩類相關(guān)信息,其中圖結(jié)構(gòu)包含圖的節(jié)點(diǎn)(tf.Operation)和邊緣(張量)對象,表示各個(gè)操作組合在一起的方式,類似于匯編代碼但是但不詳細(xì)規(guī)定它們的使用方式;構(gòu)建數(shù)據(jù)流圖的時(shí)候會(huì)將節(jié)點(diǎn)和邊緣對象加入圖中不會(huì)觸發(fā)計(jì)算按鈕,圖像構(gòu)建完成后會(huì)將計(jì)算部分分流給會(huì)話實(shí)現(xiàn)計(jì)算這一步。會(huì)話擁有物理資源,tf.Session.run是運(yùn)行節(jié)點(diǎn)對象和評估張量的主要方式。3.13高階apiKerasKeras是一個(gè)支持TensorFlow、Thenao和Microsoft-CNTK的第三方高階神經(jīng)網(wǎng)絡(luò)API。Keras以TensorFlow的PythonAPI為基礎(chǔ)提供了神經(jīng)網(wǎng)絡(luò)、尤其是深度網(wǎng)絡(luò)的構(gòu)筑模塊,并將神經(jīng)網(wǎng)絡(luò)開發(fā)、訓(xùn)練、測試的各項(xiàng)操作進(jìn)行封裝以提升可擴(kuò)展性和簡化使用難度。在TensorFlow下可以直接導(dǎo)出Keras模塊使用。使用TensorFlow.keras可以運(yùn)行所有兼容Keras的代碼并且不會(huì)損失速度。3.2TensorFlow框架環(huán)境配置TensorFlow可以運(yùn)行在多個(gè)平臺,包括Linux平臺、Windows平臺、MacOs平臺,其精簡版TensorFlowLite甚至可以運(yùn)行在移動(dòng)設(shè)備平臺。本文的神經(jīng)神經(jīng)網(wǎng)絡(luò)訓(xùn)練框架運(yùn)行在windows系統(tǒng)上。在開發(fā)環(huán)境配置工具上可以通用。安裝TensorFlow的方法很多。TensorFlow框架以Python語言開發(fā)為主,所以需要安裝Python環(huán)境。Python是高效的解釋型腳本語言,大多的科學(xué)計(jì)算和數(shù)學(xué)模型仿真都以Python為開發(fā)語言。Python在科學(xué)計(jì)算上有相當(dāng)多的拓展包可供使用,如numpy等。為了更加方便地管理Python運(yùn)行環(huán)境,可以使用Anaconda來進(jìn)行相關(guān)管理。Anaconda是功能豐富,擴(kuò)展包完備的Python環(huán)境管理工具,可以在一個(gè)設(shè)備上建立多個(gè)獨(dú)立的Python運(yùn)行環(huán)境,并且切換簡單,從而滿足開發(fā)環(huán)境不同需求。3.3本章小結(jié)成功搭建了TensorFlow實(shí)驗(yàn)平臺,簡要介紹了實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的TensorFlow框架以及工作原理。第4章基于機(jī)器學(xué)習(xí)的花卉識別4.1數(shù)據(jù)處理4.11數(shù)據(jù)讀取數(shù)據(jù)的來源是kaggle的一個(gè)花卉分類競賽,這個(gè)數(shù)據(jù)集包含四千三百二十六朵花卉包含五種花卉雛菊七百六十九張,蒲公英一千零五十五張,玫瑰七百八十四張,向日葵七百三十四張,郁金香九百八十四張。讀取數(shù)據(jù)集繪制柱形圖運(yùn)行結(jié)果如圖4.1所示圖4.1各種花卉數(shù)量的柱形圖4.12數(shù)據(jù)劃分由于本文用到的花卉數(shù)據(jù)集還沒有定義標(biāo)準(zhǔn)分割的形式,首先將利用subsplit函數(shù)將數(shù)據(jù)集分割為三部分,用于訓(xùn)練的占80%,用于驗(yàn)證的0、用于測試占20%。讀取源數(shù)據(jù)集的文件夾,生成劃分好的文件夾,分為trian、val、test三個(gè)文件夾進(jìn)行按照訓(xùn)練:驗(yàn)證:測試=8:0:2比例劃分,進(jìn)行數(shù)據(jù)圖片的復(fù)制。該部分用到了分類遍歷將數(shù)據(jù)集中的花卉切分到訓(xùn)練集和測試集中。圖4.2劃分結(jié)果4.2配置網(wǎng)絡(luò)Keras快速構(gòu)建神經(jīng)網(wǎng)絡(luò)模型Keras中主要有三類模型:Sequentialmodel,Functionalmodel,Subclassmodel圖4.3模型分類SequenctialAPI:順序模型是從頭到尾的線性不分叉的結(jié)構(gòu)。使用方法:單個(gè)輸入、輸出構(gòu)建簡單模型。FunctionAPI:是構(gòu)建Keras模型最流行的方法。它允許多個(gè)輸入、多個(gè)輸出、分支和層共享。Subclassmodel:模型子類化是為需要完全控制模型、層和訓(xùn)練過程的高級開發(fā)人員設(shè)計(jì)的。需要?jiǎng)?chuàng)建一個(gè)定義模型的自定義類,而且可能不需要它來執(zhí)行日常任務(wù)。但是,如果你是一個(gè)有實(shí)驗(yàn)需求的研究人員,那么模型子類化可能是最好的選擇,因?yàn)樗鼤?huì)給你所有你需要的靈活性。4.3構(gòu)建模型4.31CNN模型圖4.4圖形識別的CNN模型如圖4.4所示,可以看出最左邊的船的圖像就是輸入層,計(jì)算機(jī)理解為輸入若干個(gè)矩陣,這點(diǎn)和DNN基本相同。接著是卷積層(ConvolutionLayer),這個(gè)是CNN特有的,我們后面專門來講。卷積層的激活函數(shù)使用的是ReLU。在卷積層后面是池化層(Poolinglayer),這個(gè)也是CNN特有的,池化層是沒有激活函數(shù)的。卷積層+池化層的組合可以在隱藏層出現(xiàn)很多次,圖4.4中出現(xiàn)兩次。而實(shí)際上這個(gè)出現(xiàn)的次數(shù)是根據(jù)模型本身的需要來的。當(dāng)然也可以靈活使用卷積層+卷積層,或者卷積層+卷積層+池化層的組合,這些組合在構(gòu)建模型的時(shí)候沒有限制要求。但是最常見的CNN都是若干卷積層+池化層的組合,如圖4.4的CNN結(jié)構(gòu)。在若干卷積層+池化層后面是全連接層(FullyConnectedLayer,簡稱FC),在輸出層是使用了Softmax激活函數(shù)來做圖像識別的分類。3.32MobileNet模型表4-1MobileNet網(wǎng)絡(luò)結(jié)構(gòu)Type/StrideFilterShapeInputSizeConv/s23×3×3×32224×224×3Convdw/s13×3×32dw112×112×32Conv/s11×1×32×64112×112×32Convdw/s23×3×64dw112×112×64Conv/s11×1×64×12856×56×64Convdw/s13×3×128dw56×56×128Conv/s21×1×128×12856×56×128Convdw/s23×3×128dw56×56×128Conv/s11×1×128×25628×28×128Convdw/s13×3×256dw28×28×256Conv/s11×1×256×25628×28×256Convdw/s23×3×256dw28×28×256Conv/s11×1×256×51214×14×256Convdw/s1Conv/s13×3×512dw1×1×512×51214×14×51214×14×512Conv/s23×3×512dw14×14×512Conv/s11×1×1024×10247×7×512Convdw/s23×3×1024dw7×7×1024Conv/s11×1×1024×10247×7×1024AvgPoll/s1Pool7×77×7×1024FC/s11024×10001×1×1024Softmax/s1Classifier1×1×1000表4-2.MobileNet網(wǎng)絡(luò)的計(jì)算與參數(shù)分布TypeMult-AddsParametersConv1×194.86%74.59%Convdw1×13.06%1.06%Conv3×31.19%0.02%FullyConnected0.18%24.33%MobileNet是一個(gè)輕量化的神經(jīng)網(wǎng)絡(luò)模型,所謂的輕量化就是可以在一般的家用pc和手機(jī)上運(yùn)行起來的模型。MobileNet核心是采用了可分解的depthwiseseparableconvolution,MobileNet不僅可以降低使用模型的計(jì)算復(fù)雜度,而且可以大大降低使用模型的大小。用.summary()函數(shù)可以顯示出完整的使用模型架構(gòu)。本文是用了兩個(gè)模型CNN模型和MobileNet模型進(jìn)行對比學(xué)習(xí),CNN模型架構(gòu)如圖4.6所示MobileNet模型架構(gòu)如圖4.7所示,圖4.6CNN模型架構(gòu)圖4.7MobileNet模型架構(gòu)4.4模型評估圖4.8花卉列表實(shí)現(xiàn)花卉識別系統(tǒng)中的數(shù)據(jù)集包含四千三百二十六朵花卉包含五種花卉雛菊七百六十九張,如圖4.8所示蒲公英一千零五十五張,玫瑰七百八十四張,向日葵七百三十四張,郁金香九百八十四張。因?yàn)榍懊鏇]有劃分驗(yàn)證集,未提供驗(yàn)證集這種情況,validation_split用于按一定比例從訓(xùn)練集中取出一部分作為驗(yàn)證集。當(dāng)卷積神經(jīng)網(wǎng)絡(luò)網(wǎng)絡(luò)構(gòu)建完成后,就可以開始進(jìn)行訓(xùn)練了。卷積神經(jīng)網(wǎng)絡(luò)CNN模型經(jīng)過訓(xùn)練,花費(fèi)的時(shí)長為24分鐘左右經(jīng)過五次的迭代,最后訓(xùn)練集損失trainloss為0.2854,訓(xùn)練集精確度為0.9239,驗(yàn)證集損失為0.5475,驗(yàn)證集精確度為0.671875。五次迭代的訓(xùn)練和驗(yàn)證精度/損失的學(xué)習(xí)曲線如圖4.9所示;經(jīng)過10次的迭代的話,最后訓(xùn)練集損失trainloss為0.2014,訓(xùn)練集精確度為0.9700,驗(yàn)證集損失為0.4098,驗(yàn)證集精確度為0.8877。十次迭代的訓(xùn)練和驗(yàn)證精度/損失的學(xué)習(xí)曲線如圖4.10所示根據(jù)圖4.9圖4.10開始訓(xùn)練模型后,訓(xùn)練集和驗(yàn)證集的評估指標(biāo)隨著訓(xùn)練epoch的變化,對比CNN模型中的五次迭代精度略高于十次迭代,損失低于十次迭代的,采用CNN模型五次迭代的準(zhǔn)確率更好一點(diǎn)。圖4.9CNN模型迭代五次訓(xùn)練和驗(yàn)證精度/損失的學(xué)習(xí)曲線圖4.10CNN模型迭代十次訓(xùn)練和驗(yàn)證精度/損失的學(xué)習(xí)曲線MobileNet模型經(jīng)過訓(xùn)練,花費(fèi)的時(shí)長也為24分鐘左右經(jīng)過十次的迭代,最后訓(xùn)練集損失為0.0455,訓(xùn)練集精確度為0.9912,驗(yàn)證集損失為0.4098,驗(yàn)證集精確度為0.8877。十次迭代的訓(xùn)練和驗(yàn)證精度/損失的學(xué)習(xí)曲線如圖4.12所示;經(jīng)過五次迭代,最后訓(xùn)練集損失為0.1231,訓(xùn)練集精確度為0.9687,驗(yàn)證集損失為0.3590,驗(yàn)證集精確度為0.8796。五次迭代的訓(xùn)練和驗(yàn)證精度/損失的學(xué)習(xí)曲線如圖4.11所示;經(jīng)過十次迭代,最后訓(xùn)練集損失為0.0222,訓(xùn)練集精確度為0.9969,驗(yàn)證集損失為0.4747,驗(yàn)證集精確度為0.8808。十五次迭代的訓(xùn)練和驗(yàn)證精度/損失的學(xué)習(xí)曲線如圖4.13所示;根據(jù)圖4.11、圖4.12、圖4.13開始訓(xùn)練模型后,訓(xùn)練集和驗(yàn)證集的評估指標(biāo)隨著訓(xùn)練epoch的變化對比MobileNet模型十次迭代的結(jié)果優(yōu)于五次迭代十次迭代的。圖4.11MobileNet模型迭代五次訓(xùn)練和驗(yàn)證精度/損失的學(xué)習(xí)曲線圖4.12MobileNet模型迭代十次的訓(xùn)練和驗(yàn)證精度/損失的學(xué)習(xí)曲線圖4.13MobileNet模型迭代十五次的訓(xùn)練和驗(yàn)證精度/損失的學(xué)習(xí)曲線開始訓(xùn)練模型后,訓(xùn)練集和驗(yàn)證集的評估指標(biāo)隨著訓(xùn)練epoch的變化。從圖中可以看到,驗(yàn)證集的精度高略低于訓(xùn)練集的精度。使用測試集來評估模型可以進(jìn)一步驗(yàn)證模型的泛化能力。根據(jù)兩個(gè)模型輸出訓(xùn)練和驗(yàn)證精度/損失的學(xué)習(xí)曲線比對MobileNet模型的精度更高一些損失率低。所以測試我進(jìn)行測試MobileNet模型的識別的準(zhǔn)確率。論文里設(shè)計(jì)的MobileNet模型在訓(xùn)練環(huán)節(jié)對于花卉的識別分類的驗(yàn)證集準(zhǔn)確率大概在88%左右。圖4.14MobileNet模型測試結(jié)果4.5模型預(yù)測通過界面設(shè)計(jì)顯示出來。界面設(shè)計(jì)能夠使花卉識別的結(jié)果直觀的表達(dá)出來,訓(xùn)練效果可以清晰的通過花卉識別的主頁面得到測試與驗(yàn)證,所以界面設(shè)計(jì)是花卉識別必不可少的一部分。本文設(shè)計(jì)的花卉識別系統(tǒng)的主界面比較簡單。該花卉識別界面,點(diǎn)擊加載測試樣本界面將訪問電腦的文件,從本文用到的數(shù)據(jù)集中選取任意花卉照片再點(diǎn)擊識別花卉。輸出界面的主要作用在于反饋?zhàn)R別出來的花卉信息給到用戶,將花卉照片輸入到后臺后,經(jīng)過模型的測試,從而將獲取的花卉信息顯示到前端,如圖4.14-4.18所示。在識別過程中測試了一百種張花卉圖像,只有十一張花卉識別錯(cuò)誤。說明本次設(shè)計(jì)的最終結(jié)果較為成功,能夠?qū)崿F(xiàn)預(yù)期的目標(biāo),實(shí)現(xiàn)花卉的分類識別。圖4.15UI界面圖4.13加載測試樣本后圖4.14蒲公英測試結(jié)果圖4.15雛菊測試結(jié)果圖4.16郁金香測試結(jié)果圖4.17向日葵測試結(jié)果圖4.18玫瑰測試結(jié)果圖4.19將向日葵識別成雛菊圖4.20把蒲公英識別成雛菊4.6本章小結(jié)本章主要基于機(jī)器學(xué)習(xí)的花卉識別課題進(jìn)行了研究測試,用的是機(jī)器學(xué)習(xí)的算法卷積神經(jīng)網(wǎng)絡(luò)CNN,本章首先對數(shù)據(jù)進(jìn)行讀取劃分,然后使用的Sequential來搭建CNN,搭建了用于識別花卉的CNN模型和輕量級卷積神經(jīng)網(wǎng)絡(luò)MobileNet模型,對其進(jìn)行訓(xùn)練和調(diào)用發(fā)現(xiàn)MobileNet模型更好。選擇MobileNet模型測試準(zhǔn)確率。用設(shè)計(jì)好的UI界面選擇一張圖片上傳然后點(diǎn)擊開始預(yù)測就會(huì)用訓(xùn)練好的模型進(jìn)行預(yù)測,把預(yù)測結(jié)果輸出在界面上能夠比較準(zhǔn)確地識別出圖片屬于五種花卉中的哪一種,花卉識別的結(jié)果是準(zhǔn)確的。說明本次設(shè)計(jì)的最終結(jié)果較為成功,能夠?qū)崿F(xiàn)預(yù)期的目標(biāo),實(shí)現(xiàn)花卉的分類識別。第5章總結(jié)與展望5.1總結(jié)花卉識別是利用圖像處理技術(shù)對花卉進(jìn)行分割與分類處理的過程?;ɑ茏R別在農(nóng)業(yè)生產(chǎn)中具有較重要的意義,它能夠減輕花卉從業(yè)人員的工作壓力工作負(fù)擔(dān),提高花卉識別效率。自從卷積神經(jīng)網(wǎng)絡(luò)被提出以來,機(jī)器學(xué)習(xí)在圖像識別與分類、目標(biāo)檢測與定位等方面發(fā)展突飛猛進(jìn),甚至在人機(jī)對局方面發(fā)揮了重要作用。標(biāo)準(zhǔn)的卷積神經(jīng)網(wǎng)絡(luò)是一種特殊的前饋神經(jīng)網(wǎng)絡(luò)模型,通常具有比較深的結(jié)構(gòu),一般由輸入層、卷積層、池化層、全連接層以及輸出層組成。(1)簡要介紹了花卉識別在國內(nèi)外各個(gè)領(lǐng)域的研究進(jìn)展及應(yīng)用成果,研究的背景和意義,國內(nèi)外現(xiàn)狀還有本文的論文結(jié)構(gòu)。(2)分析了機(jī)器學(xué)習(xí)核心基礎(chǔ)知識和研究了卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),為后面的研究提供理論基礎(chǔ)。(3)詳細(xì)描述了TensorFlow框架的基本原理,成功完成TensorFlow實(shí)驗(yàn)開發(fā)環(huán)境的搭建,為后面的研究提供工程基礎(chǔ)。(4)成功實(shí)現(xiàn)了基于TensorFlow的卷積神經(jīng)網(wǎng)絡(luò)模型,通過對比CNN模型和MobileNet模型精度/損失的學(xué)習(xí)曲線,選擇了合適的迭代次數(shù),最后選用了MoblieNet模型在flower數(shù)據(jù)集上迭代十次解決花卉識別問題,測試準(zhǔn)確率,實(shí)現(xiàn)花卉識別的目標(biāo)。5.2展望本文在基于深度學(xué)習(xí)的花卉圖像分類識別方面做了相關(guān)工作,面對花卉圖像分類識別存在的一些分類難題,結(jié)合機(jī)器學(xué)習(xí)的知識,提出了其中的一些相關(guān)算法,組成模型去解決相關(guān)分類難點(diǎn),但是模型和算法也都可以進(jìn)一步改善,實(shí)現(xiàn)更加準(zhǔn)確的花卉分類識別。由于花卉存在類間相似性和類內(nèi)差異性,其分類具有較大挑戰(zhàn)性,這就更加需要關(guān)注花卉部分微小的差異,從而就需要一個(gè)數(shù)量更大,涵蓋更廣的帶標(biāo)注的花卉圖像數(shù)據(jù)集,來進(jìn)一步提高花卉圖像數(shù)據(jù)集的分類精度。參考文獻(xiàn)柯遙,陳小芬,李紹滋.基于多特征融合的花丼圖像檢索[J].計(jì)算機(jī)科學(xué),2010,37(11):282-286.M.E.Nilsback,A.Zisserman.Avisualvocabularyforflowerclassification[C].ComputerVi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年數(shù)據(jù)庫管理MySQL實(shí)操題集
- 2026年食物成分與健康食品營養(yǎng)學(xué)基礎(chǔ)試題集
- 2026年設(shè)計(jì)創(chuàng)新實(shí)操題設(shè)計(jì)作品鑒賞設(shè)計(jì)能力培養(yǎng)測試
- 2026年金融領(lǐng)域網(wǎng)絡(luò)攻擊溯源技術(shù)實(shí)操試題
- 疫情防控兩案九制度
- 2026年廚師職業(yè)資格考試烹飪技術(shù)與食材搭配
- 現(xiàn)場質(zhì)量責(zé)任制度
- 2026福建新高考:英語必考知識點(diǎn)總結(jié)
- (2025年)澤州縣中央遴選真題參考答案
- 2025年江西公務(wù)員申論真題附答案
- 2026福建閩投永安抽水蓄能有限公司招聘6人備考題庫(含答案詳解)
- 2026年龍華消防巡查員考試題庫附答案
- 2025年山東省濟(jì)南市中考英語真題卷含答案解析
- 2024年陜西藝術(shù)職業(yè)學(xué)院輔導(dǎo)員考試筆試題庫附答案
- 2025-2030中國銅箔市場產(chǎn)銷規(guī)模分析與未來發(fā)展戰(zhàn)略規(guī)劃研究報(bào)告
- 施工網(wǎng)格化管理方案
- 2026年醫(yī)院衛(wèi)生院家庭醫(yī)生簽約服務(wù)工作實(shí)施方案
- 2026年九字對聯(lián)帶橫批(400副)
- 低空經(jīng)濟(jì)應(yīng)用場景:創(chuàng)新與挑戰(zhàn)
- 電氣故障排查與處理技巧
- 2025醫(yī)療器械安全和性能基本原則清單
評論
0/150
提交評論