版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
緒論1.1研究的背景和意義在字典里,垃圾被定義成無用的東西,但在實際生活中,大部分垃圾還是可以被回收利用的。隨著科技的進(jìn)步,人們開始學(xué)會利用垃圾,把被丟棄的垃圾變成可以使用的資源。現(xiàn)如今大部分垃圾已經(jīng)可以回收再利用。古時候,人們習(xí)慣于填埋和焚燒垃圾。但那時因為人口特別少,科技十分落后,沒什么垃圾產(chǎn)出,所以生態(tài)保護(hù)的較好,沒什么污染。隨著世界科技迅速的發(fā)展,人類產(chǎn)出的垃圾量飛速上漲,錯誤的垃圾處理方式使生態(tài)環(huán)境收到嚴(yán)重的破壞,也使人們逐漸意識到垃圾分類的重要性。垃圾如何正確處理成為了人們關(guān)注的問題,各國對垃圾分類的要求也漸漸嚴(yán)格起來。很多人不知道的是,垃圾也是可以再回收來重新利用的,但是把垃圾雜亂的放置在一起不僅不可以利用,還會污染環(huán)境,只有把垃圾正確的分類,才能被充分的回收利用。中國在垃圾處理這方面在世界上一直處于落后地位,做的沒有很多發(fā)達(dá)國家好。在發(fā)達(dá)國家中,人們對垃圾處置方法的第一選擇就是回收利用,而不是堆放壓縮掩埋?,F(xiàn)如今各國都在大力推廣垃圾分類,其中德國遙遙領(lǐng)先于其他國家,遠(yuǎn)超韓國、美國等國家,韓國和美國的垃圾利用率分別為25%與32%。[1]很多國家在孩子小的時候就會普及垃圾分類的好處,普及率遠(yuǎn)超一些不重視的國家,讓國民從小就對垃圾分類有根深蒂固的意識,甚至一些國家通過立法來約束公民執(zhí)行。我國民眾大多缺乏垃圾分類意識,垃圾大都是雜亂堆放在一起。在調(diào)查中發(fā)現(xiàn),我國每年產(chǎn)生的垃圾數(shù)量高于處理量,也就是說每年都有一定數(shù)量的垃圾沒有被及時回收清理,導(dǎo)致這一現(xiàn)象的主要原因是人們排放垃圾時亂丟亂放,沒有進(jìn)行垃圾分類,大大加深了垃圾處理的難度??梢钥闯?,合理地分類垃圾在回收垃圾中非常的重要,特別是提高大家的垃圾分類主觀意識,但目前我國大部分公民對垃圾分類的意識還是很模糊,往往不知道如何分類,哪種垃圾屬于哪一類,在處理識別垃圾過程中,計算機(jī)視覺技術(shù)可以發(fā)揮重要的作用。為了幫助人們更準(zhǔn)確便捷的進(jìn)行垃圾分類,可以用深度學(xué)習(xí)處理圖像識別分類的方法來進(jìn)行垃圾分類,使人們更準(zhǔn)確便捷的進(jìn)行垃圾分類,緩解我國垃圾處理的壓力。1.2研究現(xiàn)狀在深度學(xué)習(xí)得到發(fā)展之前,人們通常用機(jī)器學(xué)習(xí)方法來進(jìn)行圖像識別,人們必須靠著圖像識別的經(jīng)驗來手動的提取圖片特征值,然后再將特征值輸入進(jìn)待執(zhí)行的算法,最后得出結(jié)果。這一方法存在明顯的缺點,就是需要人為的經(jīng)驗來操作,人的出錯在所難免,如果提取特征不是最合適的,那么最后得出的分類結(jié)果就會不理想。深度學(xué)習(xí)的發(fā)展解決了這一問題,只需要將圖像直接輸入神經(jīng)網(wǎng)絡(luò),訓(xùn)練網(wǎng)絡(luò)中的權(quán)值以及偏置即可。美國一知名大學(xué)教授和其團(tuán)隊構(gòu)建了垃圾分類數(shù)據(jù)集TrashNetDataset[2],總共2527張圖片,包含硬紙板、玻璃、金屬、紙張、廢棄材料和塑料六個類別。該團(tuán)隊用SVM的方法在此數(shù)據(jù)集上取得了62%的準(zhǔn)確率。之后也有很多專家在此數(shù)據(jù)集上繼續(xù)做著實驗,正確率也在逐漸增加。StephennL.Rabano等人將輕量級神經(jīng)網(wǎng)絡(luò)MobileNet[3]用到這一數(shù)據(jù)集上,取得了更高的準(zhǔn)確率,還開發(fā)了一個垃圾分類的手機(jī)端軟件;RahmiArdaAral等人使用DenseNet121[4]和DenseNet169網(wǎng)絡(luò),將準(zhǔn)確率提升至95%的平均準(zhǔn)確率;之后,UmutOzkaya等對比了多種分類提取特征的網(wǎng)絡(luò)與分類器的搭配,發(fā)現(xiàn)GoogleNet[5]搭配SVM分類器是效果最好的,準(zhǔn)確率達(dá)到了97.86%,截至目前所有在TrashNetDataset數(shù)據(jù)集上的研究中,這是準(zhǔn)確率最高的一次實驗。現(xiàn)有的研究存在著很多問題,比如數(shù)據(jù)集太少,類別和圖片都不夠,類比和中國垃圾分類區(qū)別很大,圖片背景不夠復(fù)雜化,難以應(yīng)對現(xiàn)實中復(fù)雜的環(huán)境,正確率低下。而華為公司在2019年9月舉辦的垃圾分類大賽公開的數(shù)據(jù)集總數(shù)達(dá)到了14683張,包含4個大類40小類,符合中國的垃圾分類標(biāo)準(zhǔn)。有一隊伍以ResNet101[6]作為預(yù)訓(xùn)練模型做遷移訓(xùn)練以及很多方法最后取得冠軍,正確率達(dá)到了96.96%。1.3本文章節(jié)安排本設(shè)計的課題為基于卷積神經(jīng)網(wǎng)絡(luò)的垃圾分類設(shè)計與實現(xiàn),目標(biāo)是開發(fā)出一個單獨的垃圾圖像識別系統(tǒng)。經(jīng)過幾個模型的對比,本文最終采用ResNet50作為與訓(xùn)練模型進(jìn)行遷移學(xué)習(xí),本文的主要結(jié)構(gòu)如下:第一章敘述了本設(shè)計的研究背景和意義,垃圾分類領(lǐng)域的研究現(xiàn)狀,以及一些目前存在的為解決問題,還有本設(shè)計的章節(jié)安排。第二章敘述了一些關(guān)于深度學(xué)習(xí)的基礎(chǔ)理論知識,包括圖像分類中的VGG,ResNet網(wǎng)絡(luò)。第三章對系統(tǒng)的實現(xiàn)進(jìn)行了分析,首先描述了數(shù)據(jù)集來源以及種類和數(shù)量,然后描述了系統(tǒng)的整個實現(xiàn)流程,詳細(xì)的說明了數(shù)據(jù)如何處理和模型的選擇。第四章介紹了系統(tǒng)的實現(xiàn)所需要的重要部分的代碼,呈現(xiàn)了系統(tǒng)的圖形用戶界面,描述了使用方法。2深度學(xué)習(xí)相關(guān)理論2.1卷積神經(jīng)網(wǎng)絡(luò)(CNN)在卷積神經(jīng)網(wǎng)絡(luò)發(fā)現(xiàn)前,多層神經(jīng)網(wǎng)絡(luò)只有輸入層、隱含層和輸出層。[7]隱藏層的數(shù)量取決于需要,并沒有明確的理論推導(dǎo)來解釋多少層是合適的。卷積神經(jīng)網(wǎng)絡(luò)CNN比普通的深度學(xué)習(xí)多了特征學(xué)習(xí)。具體操作是在原全連接層的基礎(chǔ)上增加卷積層和池化層。卷積神經(jīng)網(wǎng)絡(luò)的出現(xiàn)加深了神經(jīng)網(wǎng)絡(luò)的層次。典型的CNN結(jié)構(gòu)如圖2-1所示。圖2-1CNN結(jié)構(gòu)示意圖2.1.1卷積層卷積層通過平移圖像來提取特征。卷積層的一個重要因素是濾波器[7]大小。如果輸入值是[32*32*3],每個過濾器的大小為5x5,那么CNN層中的每個過濾器都會對輸入量中的[5*5*3]區(qū)域有一個權(quán)重,總共553=75個權(quán)重。輸入圖像的三個深度分別用濾波器的三個深度計算。需要注意的是,沿深度軸[8]的連接度必須為3,因為這是輸入值的深度,請記住這只是一個過濾器。如果設(shè)置輸入容量為[16*16*20]。然后,使用3X3的樣本接收場[9]大小,CNN中的每個神經(jīng)元現(xiàn)在總共有3320=180個連接到輸入層。卷積操作示意圖如2-2所示。圖2-2卷積操作示意圖2.1.1池化層
池化層(pooling)主要的作用是下采樣[10],具體的步驟是減少參數(shù)數(shù)量來預(yù)防過擬合,而為了減少參數(shù)數(shù)量,一般會去掉一些相對來說不重要的樣本,因為原始數(shù)據(jù)量不變,參數(shù)減少,池化就可以達(dá)到預(yù)防過擬合的目的。池化操作示意圖如圖2-3所示。圖2-3池化操作示意圖2.1.3激活函數(shù)激活函數(shù)[11]在人工神經(jīng)網(wǎng)絡(luò)模型中非常復(fù)雜、非線性的函數(shù)學(xué)習(xí)和理解中起著重要的作用。他們給我們的網(wǎng)絡(luò)引入了非線性。激活函數(shù)運行在人工神經(jīng)網(wǎng)絡(luò)的神經(jīng)元上,將神經(jīng)元的輸入映射到輸出。激活的作用是將權(quán)重結(jié)果轉(zhuǎn)化為分類結(jié)果。2.1.4全連接全連接層一般在卷積層池化層之后,位于卷積神經(jīng)網(wǎng)絡(luò)的最后,當(dāng)卷積層池化層將圖片的特征提取處理后,將數(shù)據(jù)平攤成一段向量,在全連接層進(jìn)行分類。全連接層采用特征空間到樣本標(biāo)簽空間映射[12]的方法。2.2圖像分類模型2.2.1VGGNet模型VGGNet是由牛津大學(xué)和谷歌的研究人員開發(fā)出的一種新的卷積神經(jīng)網(wǎng)絡(luò),第一次亮相就在ILSVRC2014[13]類別中獲得了第二名的好成績。該模型發(fā)現(xiàn)了卷積神經(jīng)網(wǎng)絡(luò)的深度與性能之間存在的關(guān)系,模型最高達(dá)到了19層。VGGNet證明了增加網(wǎng)絡(luò)深度會影響到網(wǎng)絡(luò)的性能,可以發(fā)現(xiàn)的是,VGGNet網(wǎng)絡(luò)性能良好,相對于其他網(wǎng)絡(luò)正確率明顯提高,同時易改動層數(shù),另外用來做遷移學(xué)習(xí)效果也非常的好。2.2.2ResNet模型伴隨著神經(jīng)網(wǎng)絡(luò)的發(fā)展,深度學(xué)習(xí)通過降級訓(xùn)練集的精度來處理梯度的消失,后來原微軟研究院4名中國籍研究院提出了Resnet深度殘差網(wǎng)絡(luò)[14],Resnet模型高達(dá)152層之多,并在2015年的ILSVRC比賽中取得了冠軍。其性能等各個方面均優(yōu)于傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)。Resnet優(yōu)化了特征集的提取,可以有效的加快模型訓(xùn)練的速度?;赗esNet優(yōu)秀的性能,本設(shè)計選擇ResNet作為圖像識別的特征提取網(wǎng)絡(luò)。殘差模塊示意圖如圖2-4所示。圖2-4殘差模塊2.4本章小結(jié)本章敘述了卷積神經(jīng)網(wǎng)絡(luò)的一些基礎(chǔ)知識,以及圖像分類模型概況,為后面實現(xiàn)垃圾分類模型準(zhǔn)備了理論基礎(chǔ)。3系統(tǒng)分析3.1數(shù)據(jù)來源本設(shè)計通過調(diào)研發(fā)現(xiàn),目前網(wǎng)上暫時還有權(quán)威的公開垃圾數(shù)據(jù)集可以直接使用,找到的TrashNetDataset垃圾數(shù)據(jù)集,因為數(shù)據(jù)集過少,模型訓(xùn)練量不夠,類別又和我國垃圾分類標(biāo)準(zhǔn)不同,故放棄使用。國內(nèi)的華為垃圾分類大賽公開數(shù)據(jù)集共14683張圖片,分為4個大類40個小類,符合我國垃圾分類標(biāo)準(zhǔn),數(shù)據(jù)集也足夠龐大,最終決定用此數(shù)據(jù)集作為本設(shè)計的數(shù)據(jù)來源3.1.1華為垃圾分類數(shù)據(jù)集介紹2019年華為舉辦了垃圾分類大賽并公開了垃圾數(shù)據(jù)集。[7]該數(shù)據(jù)集采用了深圳市發(fā)布的垃圾分類標(biāo)準(zhǔn),共分為4個大類,40個小類,共有14802張圖片。其中其他垃圾包括類別0(一次性快餐盒)242張、類別1(污損塑料)370張、類別2(煙蒂)279張、類別3(牙簽)85張、類別4(破碎花盆及碟碗)387張、類別5(竹筷)289張;廚余垃圾包括類別6(剩飯剩菜)395張、類別7(大骨頭)362張、類別8(水果果皮)380張、類別9(水果果肉)389張、類別10(茶葉渣)387張、類別11(菜葉菜根)736張、類別12(蛋殼)331張、類別13(魚骨)409張;可回收物包括類別14(充電寶)357張、類別15(包)419張、類別16(化妝品瓶)352張、類別17(塑料玩具)308張、類別18(塑料碗盆)363張、類別19(塑料衣架)312張、類別20(快遞紙袋)226張、類別21(插頭電線)657張、類別22(舊衣服)375張、類別23(易拉罐)309張、類別24(枕頭)318張、類別25(毛絨玩具)550張、類別26(洗發(fā)水瓶)351張、類別27(玻璃杯)536張、類別28(皮鞋)382張、類別29(砧板)416張、類別30(紙板箱)321張、類別31(調(diào)料瓶)446張、類別32(酒瓶)280張、類別33(金屬食品罐)322張、類別34(鍋)395張、類別35(食用油桶)351張、類別36(飲料瓶)271張;有害垃圾包括類別37(干電池)316張、類別38(軟膏)391張、類別39(過期藥物)437張。圖3-1不同類別數(shù)據(jù)分布本設(shè)計將數(shù)據(jù)集按照不同類別進(jìn)行分組,保存在相應(yīng)的文件夾當(dāng)中,每個文件夾下包含圖片和對應(yīng)的txt文檔標(biāo)簽,如圖3-2所示。圖3-2文件夾分類顯示3.1.2數(shù)據(jù)擴(kuò)充為了防止出現(xiàn)過擬合現(xiàn)象,需要對數(shù)據(jù)集進(jìn)行增強(qiáng),以此來提高模型的泛化能力,實現(xiàn)更準(zhǔn)確的識別功能。本設(shè)計主要通過對數(shù)據(jù)集的內(nèi)部增強(qiáng)[15]來提高模型的泛化能力,如翻轉(zhuǎn)、縮放、隨機(jī)覆蓋等,生成新的特征,以此來得到擴(kuò)充數(shù)據(jù)的效果。3.2算法來源3.2.1數(shù)據(jù)處理本設(shè)計主要使用tensflow和Keras框架來實現(xiàn),使用Keras進(jìn)行數(shù)據(jù)預(yù)處理,Keras_preprocessing預(yù)處理提供了一個ImageDataGenerator[16]類,通過這個類來實現(xiàn)圖像處理。圖像生成模塊,為每個模型提供一個批量大小的樣本數(shù)據(jù),同時還可以在每個批量中增強(qiáng)批量大小的樣本數(shù)據(jù)。如隨機(jī)縮放、旋轉(zhuǎn)、翻轉(zhuǎn)等。3.2.2模型選擇采用遷移學(xué)習(xí)的方式導(dǎo)入預(yù)訓(xùn)練模型,凍結(jié)特征提取層,進(jìn)行微調(diào)訓(xùn)練,選取了Inceptionv3、ResNet50、ResNet101、VGG16四種模型進(jìn)行對比實驗,選取結(jié)果較好的模型進(jìn)行調(diào)優(yōu)。在訓(xùn)練中對四個模型都運行了12個epoch,識別結(jié)果如表3-1所示。表3-1各模型訓(xùn)練結(jié)果模型迭代周期準(zhǔn)確率(%)ResNet101Inceptionv3VGG16ResNet501212121288.6884.1584.3692.23由上表可以看出,ResNet50準(zhǔn)確率明顯高于其他三個模型??梢钥闯鰵埐罹W(wǎng)絡(luò)的性能更好。因此,本設(shè)計選取ResNet50作為預(yù)訓(xùn)練模型進(jìn)行遷移學(xué)習(xí),凍結(jié)特征提取層,進(jìn)行微調(diào)訓(xùn)練。訓(xùn)練12個epoch的準(zhǔn)確率如圖3-3所示。圖3-3模型準(zhǔn)確率3.3本章小結(jié)第三章對系統(tǒng)的實現(xiàn)進(jìn)行了分析,首先描述了數(shù)據(jù)集來源以及種類和數(shù)量,然后描述了系統(tǒng)的整個實現(xiàn)流程,詳細(xì)的說明了數(shù)據(jù)如何處理和模型的選擇。為后面具體實現(xiàn)系統(tǒng)確定了框架。4系統(tǒng)設(shè)計與實現(xiàn)4.1數(shù)據(jù)預(yù)處理4.1.1設(shè)置數(shù)據(jù)類別本設(shè)計采用的數(shù)據(jù)集共設(shè)40個類別。"0":"其他垃圾/一次性快餐盒","1":"其他垃圾/污損塑料","2":"其他垃圾/煙蒂","3":"其他垃圾/牙簽","4":"其他垃圾/破碎花盆及碟碗","5":"其他垃圾/竹筷","6":"廚余垃圾/剩飯剩菜","7":"廚余垃圾/大骨頭","8":"廚余垃圾/水果果皮","9":"廚余垃圾/水果果肉","10":"廚余垃圾/茶葉渣","11":"廚余垃圾/菜葉菜根","12":"廚余垃圾/蛋殼","13":"廚余垃圾/魚骨","14":"可回收物/充電寶","15":"可回收物/包","16":"可回收物/化妝品瓶","17":"可回收物/塑料玩具","18":"可回收物/塑料碗盆","19":"可回收物/塑料衣架","20":"可回收物/快遞紙袋","21":"可回收物/插頭電線","22":"可回收物/舊衣服","23":"可回收物/易拉罐","24":"可回收物/枕頭","25":"可回收物/毛絨玩具","26":"可回收物/洗發(fā)水瓶","27":"可回收物/玻璃杯","28":"可回收物/皮鞋","29":"可回收物/砧板","30":"可回收物/紙板箱","31":"可回收物/調(diào)料瓶","32":"可回收物/酒瓶","33":"可回收物/金屬食品罐","34":"可回收物/鍋","35":"可回收物/食用油桶","36":"可回收物/飲料瓶","37":"有害垃圾/干電池","38":"有害垃圾/軟膏","39":"有害垃圾/過期藥物"4.1.2劃分訓(xùn)練集和測試集加載訓(xùn)練文件到模型標(biāo)簽,數(shù)據(jù)集共14802張圖片,按訓(xùn)練集和測試集20:3的比例劃分,即分別為12871張圖片和1931張圖片。隨機(jī)抽取圖片概率為0。主要代碼如下:defdata_flow(train_data_dir,batch_size,num_classes,input_size):label_files=glob(os.path.join(train_data_dir,'*.txt'))random.shuffle(label_files)label=int(line_split[1])img_paths.append(os.path.join(train_data_dir,img_name))labels.append(label)labels=np_utils.to_categorical(labels,num_classes)train_X,validation_X,train_Y,validation_Y=\train_test_split(img_paths,labels,stratify=labels,test_size=0.15,random_state=0)print('totalsamples:%d,trainingsamples:%d,validationsamples:%d'%(len(img_paths),len(train_img_paths),len(validation_img_paths)))4.1.3獲取圖片信息調(diào)整圖片到256*256大小,減少運算量,轉(zhuǎn)換圖片為RGB格式,創(chuàng)建一個12行每行2列的隨機(jī)數(shù)二維列表,隨機(jī)數(shù)的范圍為0到32的整數(shù)。defpreprocess_img(img_path,img_size):try:img=Image.open(img_path)img=img.resize((256,256))img=img.convert('RGB')img=np.array(img)imgs=[]for_inrange(10):i=random.randint(0,32)j=random.randint(0,32)imgg=img[i:i+224,j:j+224]imgg=preprocess_input(imgg)imgs.append(imgg)returnimgsexceptExceptionase:print('發(fā)生了異常data_process:',e)return04.2加載數(shù)據(jù)4.2.1增強(qiáng)數(shù)據(jù)為了提高模型的準(zhǔn)確率,選擇增強(qiáng)數(shù)據(jù)集,每個類別擴(kuò)充一倍。設(shè)置圖片隨機(jī)轉(zhuǎn)動,圖片寬度和高度隨數(shù)據(jù)提升時圖片偏移幅度,逆時針方向的剪切變換角度,隨機(jī)縮放幅度為,隨機(jī)水平翻轉(zhuǎn),隨機(jī)豎直翻轉(zhuǎn);截取函數(shù),遮擋部分不能超過圖片的一半。defincrease_img(img_path,class_num,save_path,amplify_ratio=1):train_datagen=ImageDataGenerator(Loop=30,W=0.2,H=0.2,SH=0.2,ZM=0.2,HZ=True,VT=True,FI='nearest')def__init__(self,n_holes,length):self.n_holes=n_holesself.length=lengthdef__call__(self,img):h=img.shape[0]w=img.shape[1]c=img.shape[2]mask=np.ones((h,w,c),np.float32)forninrange(self.n_holes):y=np.random.randint(h)x=np.random.randint(w)y1=np.clip(y-self.length//2,0,h)y2=np.clip(y+self.length//2,0,h)x1=np.clip(x-self.length//2,0,w)x2=np.clip(x+self.length//2,0,w)mask[y1:y2,x1:x2,:]=加載并預(yù)處理數(shù)據(jù)定義基本數(shù)據(jù)流生成器,調(diào)用先前定義的處理數(shù)據(jù)庫包,并在每次迭代中返回一個批,BaseSequence可以直接用于fit_generator的generator參數(shù),fit_generator將BaseSequence重新封裝為一個多進(jìn)程數(shù)據(jù)流生成器[17],保證同一樣本在多進(jìn)程下的一個歷元中不會被重復(fù)調(diào)用。classBaseSequence(Sequence):def__init__(self,img_paths,labels,batch_size,img_size,is_train):self.is_train=is_trainifself.is_train:train_datagen=ImageDataGenerator()self.train_datagen=train_datagendef__len__(self):h,wid=pic.shape[:2]cx=(size-wid)//2cy=(size-h)//2background[cy:cy+h,cx:cx+wid]=picreturnbackgrounddefpre(self,pic):img=Image.open(img_path)img=img.resize((256,256))img=img.convert('RGB')img=np.array(img)img=img[16:16+224,16:16+224]returnimgdefcutout_img(self,img):cut_out=Cutout(n_holes=1,length=40)img=cut_out(img)returnimg4.3構(gòu)造模型4.3.1定制網(wǎng)絡(luò)本設(shè)計是基于ResNet50的遷移學(xué)習(xí),在實際模型中,只是用了ResNet50的5個stage,最后添加的全連接層需要自己制作。網(wǎng)絡(luò)的結(jié)構(gòu)圖如圖4-1所示。圖4-1模型示意圖用keras框架定制ResNet后面的全連接層,先引入初始化ResNet50模型,由于有預(yù)權(quán)重,前部分凍結(jié),后面進(jìn)行遷移學(xué)習(xí)。然后添加平均池化層[18]。添加Dropout層防止過擬合,提升模型的泛化能力。Regularizers正則化層[19],正則化器允許在優(yōu)化過程中對層的參數(shù)或?qū)拥募せ钋闆r進(jìn)行懲罰對損失函數(shù)進(jìn)行最小化的同時,也需要讓對參數(shù)正則化懲罰項,使用l2范數(shù)。插入BatchNormalization,即批量標(biāo)準(zhǔn)化,使得模型正則化,進(jìn)而使得模型在訓(xùn)練期間更加地穩(wěn)定。還可以使模型在訓(xùn)練期間能夠抵抗梯度消失現(xiàn)象,可以減少訓(xùn)練時間并能夠獲得更好的性能defoutput(model,count):last=model.outputlast=GlobalAveragePooling2D()(last)last=Dropout(0.2)(last)last=Dense(256,activation='relu')(last)last=Dropout(0.5)(last)last=Dense(count,activation='softmax')(last)model=Model(inputs=input,outputs=last)returnmodeldefmodel_fn(FLAGS):#K.set_learning_phase(0)base_model=ResNet50(weights="imagenet",include_top=False,pooling=None,input_shape=(FLAGS.input_size,FLAGS.input_size,3),classes=FLAGS.num_classes)forlayerinbase_model.layers:layer.trainable=Falsemodel=add_new_last_layer(base_model,FLAGS.num_classes)pile(optimizer="adam",loss='categorical_crossentropy',metrics=['accuracy'])returnmodel4.3.2遷移學(xué)習(xí)本設(shè)計的訓(xùn)練是遷移學(xué)習(xí)的過程,使用已有的ResNet50權(quán)重,因為5個stage已經(jīng)訓(xùn)練好,卷積層已經(jīng)能夠提取特征值,我們只需要訓(xùn)練后面的全連接層,4個epoch后再對比后面的層進(jìn)行訓(xùn)練微調(diào),獲得更高的準(zhǔn)確率,由于訓(xùn)練時間過長,所以只設(shè)置兩次迭代,每次迭代是初始值的2倍即8個epoch。deftrain_model(mark):X_train,X_val=data(mark.data,mark.batch_size,mark.count,mark.input_countmodel=model(mark)pre=model.fit_generator(X_train,epochs=mark.count*2,verbose=1,data_val=X_val,shuffle=True)defsetup_to_finetune(FLAGS,model,layer_number=149):#K.set_learning_phase(0)#K.set_learning_phase(1)#Adam=adam(lr=FLAGS.learning_rate,clipnorm=0.001)Adam=adam(lr=FLAGS.learning_rate,decay=0.0005)pile(optimizer=Adam,loss='categorical_crossentropy',metrics=['accuracy'])4.4模型訓(xùn)練用tensflow框架[20]設(shè)置全局配置文件,定義了數(shù)據(jù)集路徑,設(shè)垃圾分類數(shù)目為40類,模型輸入圖片大小為224,圖片批處理大小為16,學(xué)習(xí)率為0.0001,步長epoch為4,共兩次迭代,第二次迭代epoch為8。數(shù)據(jù)集共14802張圖片,訓(xùn)練集12871張圖片,測試集1931張圖片,模型共運行25個小時,兩次迭代分別是4個epoch和8個epoch,最后得出模型在測試集上損失率為0.6576,準(zhǔn)確率為0.9623。在驗證集上損失率為0.7721,正確率為0.9264。pre=model.fit_generator(X_train,epochs=mark.count*2,verbose=1,data_val=X_val,shuffle=True)4.5模型預(yù)測把訓(xùn)練好的模型best.h5放到指定的文件夾下用于預(yù)測圖片,判斷圖片來源是網(wǎng)絡(luò)圖片還是本地圖片,對圖片進(jìn)行識別,同時增加了代碼的健壯性,補充異常報告。defpre(model,img):model.load('model.h5')pred=[]foriinrange(num):pred=model.predict(test_x)pred_y=np.argmax(pred,axis=0)returnload_dict[str(pred_label)]4.6Gui界面圖形使用界面使用PyQt5制作。具體代碼如下。classMyMainWindow(QMainWindow,Ui_MainWindow):def__init__(self,parent=None):super(MyMainWindow,self).__init__(parent)self.setupUi(self)self.label.setScaledContents(True)self.pushButton_2.clicked.connect(self.predict_image)self.pushButton.clicked.connect(self.button_open_img_click)self.pushButton_3.clicked.connect(self.close)defpredict_image(self):res=prediction_result_from_img(model,self.pic_path)self.lineEdit.setText(res)defbutton_open_img_click(self):self.pic_path,_=QFileDialog.getOpenFileName(self,'選擇圖片',r'C','Imagefiles(*.jpg*.gif*.png)')ifself.pic_path:self.label.setPixmap(QtGui.QPixmap(self.pic_path))else:QMessageBox.warning(self,'提示','沒有選中任何東西!',QMessageBox.Ok)4.6.1系統(tǒng)界面本系統(tǒng)共分為本地圖片、打開攝像頭、攝像頭拍照、分類四個模塊。圖形用戶界面如圖4-2所示。圖4-2圖形用戶界面4.6.2系統(tǒng)功能用戶可選擇打開本地圖片,在本地文件夾中選取待識別圖片上傳,再點擊分類按鈕開始識別。操作示意圖如圖4-3、圖4-4所示。圖4-3選擇本地圖片圖4-4垃圾識別界面如果沒有選中圖片,系統(tǒng)會彈出提示窗口,如圖4-5所示。圖4-5系統(tǒng)提示窗口用戶也可點擊攝像頭拍照按鈕,直接拍照識別。如圖4-6所示4-6拍照識別4.7本章小結(jié)第四章介紹了系統(tǒng)的實現(xiàn)所需要的重要部分的代碼,呈現(xiàn)了系統(tǒng)的圖形用戶界面,描述了使用方法。5總結(jié)隨著垃圾分類問題逐漸成為國際社會關(guān)注的問題,深度學(xué)習(xí)的不斷發(fā)展和完善,本設(shè)計提出了基于卷積神
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB 35208-2025液化石油氣瓶過流切斷閥
- 2026年施工流程優(yōu)化合同
- 2026年星際公司法務(wù)咨詢合同
- 2024年北京大興區(qū)高一(下)期末物理試題和答案
- 2026年廠房租賃合同
- 幼兒園安全隱患專項整治檢查表
- 2025年連平縣上坪鎮(zhèn)人民政府公開招聘應(yīng)急救援中隊?wèi)?yīng)急隊員備考題庫及參考答案詳解1套
- 違規(guī)吃喝專項整治個人自查報告
- 2024年陜西陜煤澄合礦業(yè)有限公司招聘考試真題
- 2025年沭陽輔警招聘真題及答案
- 2026湖北恩施州建始縣教育局所屬事業(yè)單位專項招聘高中教師28人備考筆試試題及答案解析
- 心肺康復(fù)課件
- 2025中原農(nóng)業(yè)保險股份有限公司招聘67人筆試參考題庫附帶答案詳解(3卷)
- 骶部炎性竇道的護(hù)理
- 多元催化體系下羊毛脂轉(zhuǎn)酯化制備膽固醇的工藝解析與效能探究
- 2026福建春季高考語文總復(fù)習(xí):名篇名句默寫(知識梳理+考點)原卷版
- 鄭州市2025屆高中畢業(yè)年級第一次質(zhì)量預(yù)測數(shù)學(xué)試題及答案解析
- 學(xué)霸養(yǎng)成之第一性原理-2025-2026學(xué)年高二上學(xué)期學(xué)習(xí)方法指導(dǎo)班會
- 投資策略分析報告:波動趨勢量化剝離策略
- 2025國家外匯管理局中央外匯業(yè)務(wù)中心社會在職人員招聘3人考試筆試備考題庫及答案解析
- 景德鎮(zhèn)市中醫(yī)院護(hù)理疑難病例討論組織與管理試題
評論
0/150
提交評論