王 彬,高嘉平,司聳濤
(中科芯集成電路有限公司,江蘇無錫 214072)
近年來,深度學(xué)習(xí)在圖像檢測(cè)方面被廣泛應(yīng)用,但現(xiàn)有的圖像檢測(cè)都是對(duì)特定識(shí)別目標(biāo)的各種狀態(tài)圖像進(jìn)行大量的深度學(xué)習(xí)模型訓(xùn)練,該模型通用性不強(qiáng)[1-2],若更換檢測(cè)目標(biāo),需要進(jìn)行新的模型訓(xùn)練,不僅費(fèi)時(shí)費(fèi)力,同時(shí)上述過程需要對(duì)深度學(xué)習(xí)有一定的了解,這也增加了模型的使用門檻[3-5]。因此本研究將深度學(xué)習(xí)在圖像檢測(cè)的過程進(jìn)行簡(jiǎn)化,只需簡(jiǎn)單記錄目標(biāo)狀態(tài)就能使模型微調(diào)成該目標(biāo)的檢測(cè)模型。首先利用深度學(xué)習(xí)對(duì)圖像進(jìn)行分類[6],使用網(wǎng)上圖像分類的數(shù)據(jù)庫對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,再運(yùn)用檢測(cè)目標(biāo)少量的各種狀態(tài)目標(biāo)的數(shù)據(jù)集去微調(diào)生成遷移學(xué)習(xí)模型,模型就可以對(duì)目標(biāo)進(jìn)行檢測(cè)。遷移學(xué)習(xí)模型可以在原有模型的誤差和精確度不變的情況下[7]實(shí)現(xiàn)對(duì)現(xiàn)有目標(biāo)的檢測(cè),同時(shí)目標(biāo)數(shù)據(jù)集微調(diào)生成學(xué)習(xí)遷移模型的過程可通過前期軟件編程完成,簡(jiǎn)化采集數(shù)據(jù)集和訓(xùn)練模型的復(fù)雜程度。
本文運(yùn)用該方法設(shè)計(jì)一個(gè)報(bào)警系統(tǒng),該報(bào)警系統(tǒng)只需要通過相機(jī)采集目標(biāo)各種狀態(tài)的圖像就能對(duì)目標(biāo)進(jìn)行檢測(cè),極大地簡(jiǎn)化了深度學(xué)習(xí)在目標(biāo)檢測(cè)中的應(yīng)用,同時(shí)更換檢測(cè)目標(biāo)也較為方便。系統(tǒng)的硬件部分由相機(jī)、CNN加速芯片和嵌入式系統(tǒng)組成。為了滿足系統(tǒng)在實(shí)際應(yīng)用場(chǎng)景中的穩(wěn)定性和準(zhǔn)確率,本研究先在Imagenet數(shù)據(jù)集訓(xùn)練生成預(yù)訓(xùn)練模型,然后根據(jù)實(shí)際需求制作了新的數(shù)據(jù)集,即通過記錄檢測(cè)目標(biāo)的不同應(yīng)用場(chǎng)景中的各個(gè)狀態(tài)生成數(shù)據(jù)集,然后用生成的數(shù)據(jù)集去微調(diào)已經(jīng)訓(xùn)練過的圖像分類模型,生成新的針對(duì)該目標(biāo)的圖像分類模型。
選擇基于GoogLeNet模型來搭建本次研究的模型。深度學(xué)習(xí)GoogLeNet模型采用的是卷積神經(jīng)網(wǎng)絡(luò)框架Inception v1架構(gòu)[8]。該架構(gòu)的優(yōu)勢(shì)是當(dāng)在計(jì)算復(fù)雜度不高和計(jì)算爆炸不受控制時(shí),可以通過增加每個(gè)階段的單元數(shù)目,增加網(wǎng)絡(luò)的寬度和深度;同時(shí)Inception v1結(jié)構(gòu)也和圖像在進(jìn)行多尺度處理之后,將圖像處理結(jié)果匯總為下一個(gè)階段能同時(shí)提取不同圖像尺寸下的特征過程相類似,其框架結(jié)構(gòu)如圖1所示。它由一個(gè)1×1卷積層、一個(gè)中等大小的3×3卷積層、一個(gè)大型的5×5卷積層、一個(gè)最大池化層構(gòu)成。1×1卷積層能夠提取輸入該層圖像的每一個(gè)細(xì)節(jié)中的信息特征,同時(shí)5×5的卷積層也能夠覆蓋大部分前面圖像的輸入信息,進(jìn)而能提取圖像的信息特征??梢赃M(jìn)行池化操作來減少輸入圖像映射維度的大小,降低過度擬合情況。此外在每一個(gè)卷積層后都添加了一個(gè)修正線性單元(ReLU),其作用是改善網(wǎng)絡(luò)的非線性特征。
圖1 Inception v1結(jié)構(gòu)
基于卷積神經(jīng)網(wǎng)絡(luò)GoogLeNet模型結(jié)構(gòu)建立本次實(shí)驗(yàn)的圖像分類模型并優(yōu)化網(wǎng)絡(luò)模型結(jié)構(gòu),如圖2所示。
圖2 卷積神經(jīng)網(wǎng)絡(luò)的整體結(jié)構(gòu)
在訓(xùn)練模型之前先要確定如下幾個(gè)參數(shù)。
分類器選擇:Softmax分類器是歸一化概率分類。Softmax分類器可以將模型的結(jié)果在(0,1)內(nèi)反映出來,并且所有結(jié)果相加等于1,如式(1)所示。
其中Zj為向量Z的第j個(gè)元素,Pj為向量Z的第j個(gè)元素的Softmax值。
損失函數(shù):用來描述模型的理論值與實(shí)際值的差距程度,一般情況下,損失函數(shù)值越小說明模型的測(cè)試結(jié)果更能反映實(shí)際值。本文的損失函數(shù)選用Softmax loss函數(shù),如式(2)所示。
其中,W為網(wǎng)絡(luò)的權(quán)值矩陣,b為偏移量,y為實(shí)際測(cè)試結(jié)果,pj(z)為分類器輸出結(jié)果。
Dropout正則化:主要用于權(quán)重衰減,這樣可以解決Softmax分類器帶來的參數(shù)冗余的數(shù)值問題,同時(shí)可以使模型泛化性更強(qiáng),加入Dropout正則化的網(wǎng)絡(luò)計(jì)算公式如式(3)~(6)所示。
從公式(3)~(6)中可以看出函數(shù)隨機(jī)生成一個(gè)參數(shù)為0或1的概率向量,然后再乘入權(quán)重參數(shù)中,由于公式里的參數(shù)是隨機(jī)的0或1,所以會(huì)有部分的權(quán)重失效,從而解決過擬合的問題。
優(yōu)化算法:為了節(jié)省計(jì)算資源和計(jì)算時(shí)間,加入隨機(jī)梯度下降法(SGD)[10],該方法用較少的數(shù)據(jù)即可實(shí)現(xiàn)對(duì)訓(xùn)練模型的更新,同時(shí)為了使學(xué)習(xí)速度提升,將引入動(dòng)量參數(shù),如式(7)、(8)所示。
公式(7)、(8)中,vt初始值為0,β一般取值0.9,α為網(wǎng)絡(luò)學(xué)習(xí)率,J(θ)為損失函數(shù)。
根據(jù)設(shè)定的網(wǎng)絡(luò)結(jié)構(gòu)及選用的參數(shù)對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,使用Caffe深度學(xué)習(xí)庫的函數(shù)式模型完成整體網(wǎng)絡(luò)結(jié)構(gòu)的搭建,同時(shí)將α設(shè)置為0.01,選擇SGD來減少計(jì)算資源和計(jì)算時(shí)間。對(duì)數(shù)據(jù)進(jìn)行近10000次迭代訓(xùn)練后,通過對(duì)網(wǎng)絡(luò)參數(shù)的不斷調(diào)整建立了網(wǎng)絡(luò)模型。模型訓(xùn)練后,得到train loss、test loss和accuracy 3個(gè)參數(shù)的隨機(jī)迭代次數(shù)變化曲線,最終得到訓(xùn)練模型整體網(wǎng)絡(luò)性能評(píng)估,如圖3所示。
不難看出,迭代次數(shù)越多,模型的準(zhǔn)確度accuracy越高,trainloss和test loss越低。在迭代5000次左右后準(zhǔn)確度就趨近于1,train loss和test loss也不斷趨近于0。該結(jié)果表明,模型的穩(wěn)健性較好,并且其性能滿足應(yīng)用需求。
為了檢驗(yàn)CNN模型對(duì)檢測(cè)目標(biāo)狀態(tài)圖像分類的遷移學(xué)習(xí)效果,將采用分類的準(zhǔn)確率對(duì)模型進(jìn)行評(píng)估,準(zhǔn)確率(A)由分類準(zhǔn)確目標(biāo)狀態(tài)次數(shù)和測(cè)試目標(biāo)狀態(tài)總次數(shù)之比得出,如式(9)所示。
圖3 訓(xùn)練模型整體網(wǎng)絡(luò)性能評(píng)估
其中,Nacc為分類準(zhǔn)確目標(biāo)狀態(tài)的次數(shù),Nall為測(cè)試目標(biāo)狀態(tài)的總次數(shù)。
將訓(xùn)練好的模型轉(zhuǎn)換后放入CNN加速芯片中,然后對(duì)目標(biāo)各種狀態(tài)進(jìn)行圖像采集,經(jīng)過裁剪旋轉(zhuǎn)等方法后得到檢測(cè)目標(biāo)每個(gè)狀態(tài)1000張圖像。將圖像大小統(tǒng)一處理成224×224×3分辨率的圖像并進(jìn)行狀態(tài)標(biāo)記得到數(shù)據(jù)集,將得到的數(shù)據(jù)集去更新生成新模型后,測(cè)試模型的準(zhǔn)確率。實(shí)驗(yàn)測(cè)試是檢測(cè)小燈亮滅的兩個(gè)不同狀態(tài),經(jīng)處理后得到兩個(gè)狀態(tài)各1000張標(biāo)記好的圖片。然后從兩個(gè)不同狀態(tài)的圖片中隨機(jī)抽取數(shù)量相同的圖片作為數(shù)據(jù)集,最后在200、300、400、500、600、900張圖片數(shù)量的數(shù)據(jù)集下測(cè)試檢測(cè)目標(biāo)狀態(tài)的準(zhǔn)確率。表1顯示該模型在不同數(shù)量數(shù)據(jù)集下測(cè)試目標(biāo)狀態(tài)的準(zhǔn)確率。
從表1數(shù)據(jù)可以看出,隨著檢測(cè)目標(biāo)數(shù)據(jù)集的數(shù)量逐漸增大,該模型檢測(cè)目標(biāo)的準(zhǔn)確率大大改善,同時(shí)數(shù)據(jù)集的數(shù)量達(dá)到900時(shí),模型的準(zhǔn)確率接近99.9%,表明該模型有著較高的準(zhǔn)確度。在制作數(shù)據(jù)集時(shí),本研究已經(jīng)盡可能多地考慮到了使用場(chǎng)景的多樣性和復(fù)雜性,所以只需根據(jù)具體的應(yīng)用場(chǎng)景對(duì)模型進(jìn)行微調(diào)即可。
表1 不同數(shù)量數(shù)據(jù)集的檢測(cè)準(zhǔn)確率
我們?cè)O(shè)計(jì)了一個(gè)基于深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)的圖像檢測(cè)報(bào)警系統(tǒng)。系統(tǒng)整體框架如圖4所示。其中CNN加速芯片采用的是Xilinx公司的XCKU115板卡,嵌入式系統(tǒng)以CKS32F103作為主控芯片。
圖4 嵌入式報(bào)警系統(tǒng)框架
相機(jī)先采集目標(biāo)各個(gè)狀態(tài)的圖像,進(jìn)行標(biāo)記分類后生成數(shù)據(jù)集儲(chǔ)存到嵌入式系統(tǒng)的存儲(chǔ)器中,在嵌入式系統(tǒng)中設(shè)置報(bào)警圖像類型,然后將分類好的數(shù)據(jù)集去微調(diào)已經(jīng)訓(xùn)練好的深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)圖像分類模型,生成新的圖像分類模型;完成系統(tǒng)的初步設(shè)置后就能進(jìn)行檢測(cè)目標(biāo)的實(shí)時(shí)圖像檢測(cè),相機(jī)實(shí)時(shí)檢測(cè)目標(biāo)狀態(tài),把實(shí)時(shí)影像傳輸?shù)叫律傻哪P椭?,完成影像的分類,并把結(jié)果實(shí)時(shí)返回到嵌入式系統(tǒng)中;當(dāng)嵌入式系統(tǒng)讀取到目標(biāo)圖像類型后,對(duì)比設(shè)置報(bào)警圖像類型,如果圖像類型一致,嵌入式系統(tǒng)啟動(dòng)蜂鳴器程序開始報(bào)警。
由于卷積神經(jīng)網(wǎng)絡(luò)模型對(duì)輸入圖片的格式有嚴(yán)格要求,因此需要對(duì)相機(jī)輸入的圖片進(jìn)行預(yù)處理,主要對(duì)圖片的3個(gè)參數(shù)進(jìn)行調(diào)整:IMAGE_DIM、IMAGE_STDDEV和IMAGE_MEAN。見表2。由于本次算法對(duì)預(yù)處理要求較高,故采用python工具包處理。
表2 輸入圖像參數(shù)
嵌入式系統(tǒng)的主要工作是設(shè)置需要報(bào)警的圖像類型,同時(shí)與網(wǎng)絡(luò)模型反饋的圖像類型分別進(jìn)行對(duì)比,當(dāng)二者一致時(shí),它將驅(qū)動(dòng)報(bào)警系統(tǒng)進(jìn)行報(bào)警,驅(qū)動(dòng)流程如圖5所示。為了降低因圖像類型誤判引起錯(cuò)誤報(bào)警的概率,系統(tǒng)做了如下處理:當(dāng)返回的檢測(cè)結(jié)果概率不低于0.7,并且處于報(bào)警圖像類型連續(xù)大于20幀時(shí)才會(huì)啟動(dòng)警報(bào)程序,以減少錯(cuò)誤警報(bào)的概率。
圖5 嵌入式系統(tǒng)報(bào)警流程
本文以LED燈為檢測(cè)目標(biāo),檢測(cè)LED燈的亮滅狀態(tài)。LED燈亮表示報(bào)警狀態(tài)圖像類型1,LED燈熄滅表示正常狀態(tài)圖像類型2。搭建好測(cè)試平臺(tái)后,相機(jī)對(duì)LED燈兩個(gè)狀態(tài)進(jìn)行記錄,記錄完成后生成數(shù)據(jù)集,更新生成圖像分類模型,然后再用相機(jī)去拍攝LED燈,可以看到如圖6所示的畫面,整個(gè)系統(tǒng)一直在實(shí)時(shí)檢測(cè)LED燈狀態(tài)。
從圖6可知,系統(tǒng)實(shí)時(shí)地將每幀圖像的LED燈是亮還是滅的概率呈現(xiàn)于顯示器中,取出現(xiàn)概率最大的狀態(tài)為當(dāng)前LED燈所處狀態(tài),并在每幀圖像上顯示出圖像類型。亮燈時(shí)顯示的是1,滅燈時(shí)顯示為2。然后將顯示的類型及對(duì)應(yīng)的概率發(fā)送到嵌入式系統(tǒng)中,連續(xù)20幀且概率不低于0.7后,若反饋的信號(hào)是類型1,蜂鳴器就開始鳴響。經(jīng)多次試驗(yàn)測(cè)試,本系統(tǒng)能夠?qū)崟r(shí)、準(zhǔn)確地完成對(duì)圖像數(shù)據(jù)的獲取、檢測(cè)、分類和響應(yīng)。
本研究能快速且簡(jiǎn)單地完成對(duì)檢測(cè)目標(biāo)模型的生成和檢測(cè),同時(shí)所設(shè)計(jì)的報(bào)警系統(tǒng)只需較少的檢測(cè)目標(biāo)數(shù)據(jù)就能生成新的模型。最終結(jié)果表明,在簡(jiǎn)單場(chǎng)景下,該系統(tǒng)對(duì)圖像檢測(cè)的準(zhǔn)確度可以達(dá)到99.9%。同時(shí)在更換檢測(cè)目標(biāo)時(shí),只需要簡(jiǎn)單使用相機(jī)記錄檢測(cè)目標(biāo)各個(gè)狀態(tài)圖片,自動(dòng)形成新數(shù)據(jù)集然后生成新的模型,即可實(shí)現(xiàn)對(duì)檢測(cè)目標(biāo)的圖像分類。