任 磊,劉國慶,王麗華,黃澤宇,陳美燕
(1.中國電子科技集團公司第二十研究所,陜西 西安 710068;2.西北大學 信息科學與技術學院,陜西 西安 710127)
智能手機、無人機、可穿戴攝像頭和自動駕駛汽車等擁有高清攝像頭的移動設備,極大地改變了人們的生活方式。移動計算可以處理視頻流數(shù)據(jù),為用戶提供多種服務。例如,無人機可以監(jiān)控交通量,識別特定區(qū)域的道路標志;自動駕駛汽車可以分析車載攝像頭傳輸?shù)牧饕曨l,識別物體、行人、其他車輛和交通燈。此外,用戶也可以佩戴增強現(xiàn)實頭盔與現(xiàn)實世界進行互動。這些智能服務一般都是通過分析和計算連續(xù)的視頻信息提供的。在過去幾年里,基于深度學習的方法在各種計算機視覺任務中表現(xiàn)出了其優(yōu)勢,這得益于CNN可以提取圖像或流媒體視頻數(shù)據(jù)幀。
與云計算相比,在移動設備上處理深度學習有天然優(yōu)勢。整個工作流程不用將數(shù)據(jù)上傳到云,可以在離線運行的同時避免云計算過程中數(shù)據(jù)傳輸與異地存儲帶來的隱私風險。雖然深度學習模型具有卓越的性能,但是CNN中的卷積層需要消耗大量的計算量和能量資源,給設備帶來了嚴峻的挑戰(zhàn)。AlexNet[1]、VGG[2]、GoogleNet[3]、ResNet[4]都 是 ILSVRC 的優(yōu)秀算法模型,其中,AlexNet的Top5錯誤率為16.4%,但它擁有6 000萬個參數(shù),如果用float 32存儲這些參數(shù),它將占用移動設備上228 MB的內(nèi)存,與此同時,AlexNet卷積層的FLOPS為663 MB,約占整個模型FLOPS的92%。顯然,AlexNet并不適合資源有限的移動設備。VGG也是一個經(jīng)典的分類模型,Top5錯誤率達到7.3%,在準確率上有較大的提高,其參數(shù)是AlexNet的3倍。不論考慮計算量還是內(nèi)存開銷,在移動設備上部署深度學習模型都是一個更為嚴峻的挑戰(zhàn)。GoogleNet和ResNet也必須要面對這個問題。為了解決這個問題,研究人員使用一種主流技術,即壓縮預先訓練的深度學習模型。這種策略能夠有效地對神經(jīng)網(wǎng)絡模型進行修剪,但都是以犧牲精度為代價的。
本文把分類任務分為兩個階段:第一階段定義為粗粒度聚類過程,這個階段最主要的作用是減少解空間(神經(jīng)網(wǎng)絡模型需要識別數(shù)據(jù)集中包含的類數(shù))。在此之后,可以將數(shù)據(jù)聚類為幾個彼此不相關的小數(shù)據(jù)集,但在同一聚類中的圖像比在不同聚類中的圖像具有更強的相似性;第二階段是分類過程,在這一階段設計了幾個自定義的輕量級分類器,分別識別圖像的特定類。
要完成這項工作,將面臨兩大挑戰(zhàn):一是需要得出一個粗粒度的聚類方法,用來劃分數(shù)據(jù)集的解空間;二是現(xiàn)有的聚類模型都是為了對圖像進行聚類,使圖像盡可能接近標簽,目的是訓練一個模型來推斷某一類的圖像信息。為了解決第一個問題,本文提出了一種粗粒度聚類方法,對圖像特征進行粗聚類,將圖像分為不同的簇。此外,由于移動設備的計算成本和能耗有限,需要一個標準來衡量模型是否可以在移動設備上實現(xiàn),因此本文提出了一種能量預測模型來解決第二個挑戰(zhàn)。
本文系統(tǒng)的優(yōu)勢和主要工作如下:
(1)本文創(chuàng)新性地利用聚類和分類完成分類任務,使用幾個輕量級的神經(jīng)網(wǎng)絡代替單一的龐大模型,使其在每次推理時消耗更少的資源。
(2)本文提出了一種能量預測方法,通過探索能量與計算量的關系,得到一個轉(zhuǎn)換因子,根據(jù)這個因子和模型的復雜性預測模型的能耗。
(3)對于解空間的劃分,本文模型在兩個階段都可以利用輕量級神經(jīng)網(wǎng)絡達到一定的精度,并且花費較少的能量和時間進行推斷。
現(xiàn)有的聚類方法[5-6]大多利用或改進傳統(tǒng)的機器學習技術聚類數(shù)據(jù),如K-means[6],這類機器學習聚類方法在cifa-100[7]、ILSVRC2012 1k[8]等各種數(shù)據(jù)集上準確率較低,因為它們依賴于SIFT[9]、SURF[10]等特征提取算法,無法提高圖像的表示效果。文獻[11-12]利用深度神經(jīng)網(wǎng)絡逐步提取更有效的特征表示。深度聚類通過利用K-means對數(shù)據(jù)特征進行聚類,然后使用聚類標簽作為偽標簽訓練ConvNet,獲得了較好的精度[11]。DAC通過將圖像聚類任務轉(zhuǎn)化為二值兩兩分類問題對數(shù)據(jù)進行聚類,分析對圖像是否屬于同一個聚類[12]。這些基于深度學習的聚類方法在一定程度上提高了聚類精度,雖然性能仍然不盡如人意,但是這些方法為粗粒度聚類提供了有價值的設計思路。
圖像分類是計算機視覺領域的一個熱門課題,有很多優(yōu)秀的研究成果,具體見文獻[1-4]。這些成果為后來的研究提供了許多極好的思路,但是這些模型非常龐大,難以在移動設備上實現(xiàn),文獻[13-14]致力于將普通模型壓縮成合適的模型。其中,文獻[13]提出了一種利用f×1和1×f濾波器的線性組合代替f×f濾波器實現(xiàn)低秩近似的壓縮方法。這些框架確實能在移動設備上運行,但它們中的大多數(shù)通過犧牲模型的準確性來削減模型大小。與這類工作相比,一些神經(jīng)網(wǎng)絡設計方法直接設計輕量化模型,見文獻[15-18]。文獻[16]提出了包含擠壓層和擴展層的火災模塊,以減小模型參數(shù),文獻[17]采用組卷積和通道shuffle兩種操作減少參數(shù)。本文提出了一種考慮解決方案空間和能量消耗的高效深度學習框架,使基于卷積網(wǎng)絡的模型可在資源感知型移動設備上執(zhí)行。
本節(jié)主要介紹了系統(tǒng)設計模型,闡述了使用粗粒度聚類的必要性,以及所使用的聚類方法,通過自定義的神經(jīng)網(wǎng)絡框架對解空間劃分產(chǎn)生的每個聚類數(shù)據(jù)進行分類。
將解空間定義為一個完整數(shù)據(jù)集需要識別特定數(shù)量的類。一般來說,隨著樣本數(shù)據(jù)量的增加,數(shù)據(jù)集的解空間也隨之增大。目前在圖像或視頻幀分類方面有很多研究成果能夠表現(xiàn)出良好的圖像分析性能。但是,這些基于神經(jīng)網(wǎng)絡的模型通常情況下參數(shù)較多,結(jié)構極其復雜,不適合移動設備。盡管壓縮模型可以減少模型在計算和內(nèi)存上的消耗,但對于資源有限的移動設備來說,仍然存在不可忽視的問題。此外,由于壓縮方法可能會對一些可以產(chǎn)生良好特征的導入濾波器進行刪減,壓縮后的模型通常不能達到與原始模型相同的性能?,F(xiàn)實世界的對象是不可估計的,單一的數(shù)據(jù)集不能代表現(xiàn)實世界的數(shù)據(jù)和數(shù)據(jù)分布。當不斷向原始數(shù)據(jù)集中添加新的圖像,使解空間變得更大時,傳統(tǒng)的單一神經(jīng)網(wǎng)絡設計方法會使模型變得更加復雜和繁瑣,甚至難以設計。針對這種情況,本文提出了一種新的分類模型,將分類任務分為兩步,即大規(guī)模解空間劃分和自定義神經(jīng)網(wǎng)絡框架設計。
首先將一個大的數(shù)據(jù)集劃分成若干個小的數(shù)據(jù)集,以減小解空間的規(guī)模,該過程如圖1所示。為了劃分數(shù)據(jù)集,一種簡單的方法是將整個數(shù)據(jù)集中的圖像隨機分布到K(K<N,N是一個數(shù)據(jù)集中的類數(shù))個小數(shù)據(jù)集中。理想情況下,希望小數(shù)據(jù)集具有弱相關性,甚至彼此無關,但每個小數(shù)據(jù)集中的數(shù)據(jù)具有強相關性。針對這一思想,聚類是實現(xiàn)這一目標的合理方法,然而,傳統(tǒng)的機器學習技術由于精度較低,已經(jīng)不能適應當前的要求。因此,本文利用基于CNN的模型劃分數(shù)據(jù)集來減少解空間,并將該聚類模型定義為粗粒度聚類模型,該模型的體系結(jié)構見表1所列,在此過程中需要識別的聚類數(shù)目比傳統(tǒng)基于CNN的聚類模型要少,所以聚類模型就會變成輕量級,本文也采取了一些技術來提高模型的性能,使模型易于在移動設備上實現(xiàn),接下來將詳細介紹基于CNN的粗粒度聚類方法。
表1 粗粒度聚類網(wǎng)絡結(jié)構
圖1 解空間劃分
(1)卷積層
卷積層是卷積網(wǎng)絡中計算密集型的一層,它涉及大量的卷積計算,因此,為ConvNet選擇合適的濾波器是很有意義的。在粗粒度聚類的神經(jīng)網(wǎng)絡設計中,只使用了3×3的核,因為3×3的核相比1×1的核具有更大的接受域。在神經(jīng)網(wǎng)絡設計中沒有使用5×5或7×7濾波器,是希望減少參數(shù)并獲得同等的性能。值得一提的是,兩個連續(xù)的3×3濾波器可以分析有25個像素信息的特征圖,相當于一個5×5濾波器,這使得神經(jīng)網(wǎng)絡的學習能力與其他實現(xiàn)5×5濾波器的算法相當甚至更強。
(2)限制層
本文期望用神經(jīng)網(wǎng)絡的輸出來完成粗粒度聚類。為了獲得更好的特征表示,避免損失函數(shù)中存在ln 0等無意義的解,對ConvNet生成的輸出進行限制,使其保持一定的間隔,這有利于訓練ConvNet。具體來說,在神經(jīng)網(wǎng)絡模型的最后一層之后實現(xiàn)了限制,將每個元素限制為(0,1)。該過程的表述如下:
式中:Lin,Lout分別為限制層的輸入和輸出;K表示粗粒度聚類后簇數(shù)的超參數(shù)。
式(1)限制了神經(jīng)網(wǎng)絡輸出的所有元素,式(2)限制輸出為一個單位向量。這個過程只是對神經(jīng)網(wǎng)絡的輸出進行線性變換,使其學習效率更高。在實現(xiàn)限制層后,對限制層生成的輸出進行聚類,將聚類標簽作為偽標簽,以分類方式訓練模型。
(3)聚類步驟
受深度聚類[11]的啟發(fā),認為選擇什么樣的方法對特征輸出聚類并不重要,只需要一種聚類模式就可以給出聚類圖像所屬的標準。因此,本文選擇K-means聚類方法完成這一步。當?shù)玫骄垲悩撕灂r,將聚類標簽轉(zhuǎn)換為一個熱向量,使得數(shù)據(jù)集中的每幅圖像與熱標簽相關;可以使輸出的限制和聚類標簽擁有相同的維度,其中,k與限制層中表示聚類數(shù)的K相同。
(4)損失函數(shù)
在這一部分中,分布p(x),q(x)分別表示樣本圖像的偽標簽和神經(jīng)網(wǎng)絡模型的輸出,兩者中的x都是特征信息。使用Kullback-Leibler(KL)散度度量特征表示與偽標簽之間的差異。注意KL散度是對兩個不同分布p(x)和q(x)的非對稱度量。由式(5)可知,右邊第一項為p(x)的熵,在優(yōu)化過程中為常數(shù),因此,只關注后一項,它被定義為交叉熵,傳播損失來更新神經(jīng)網(wǎng)絡的權值。通過解決以下問題計算損失:
(5)粗粒度聚類標簽推理
對于映像,它必須屬于某個集群。理想情況下,圖像特征可以是標準的one-hot向量的一種形式,值為1的指標是圖像所屬的聚類。基于這一觀點,分析了神經(jīng)網(wǎng)絡模型對聚類圖像的輸出。訓練后,基于卷積神經(jīng)網(wǎng)絡的聚類模型可以從圖像中提取有效的特征,通過分析神經(jīng)網(wǎng)絡的輸出對數(shù)據(jù)進行分類是可取的,該過程可制定如下:
式中:li為k維張量,是圖像i的卷積神經(jīng)網(wǎng)絡的輸出;f(*)為映射函數(shù);ω為模型的權值;ci是圖像i的聚類標號,由張量的最大值產(chǎn)生。理想情況下,一幅圖像的特征li是一個熱點向量,1表示該圖像屬于這個簇,0表示該圖像不屬于這個簇。然而,在現(xiàn)實中很難通過訓練模型得到全局最優(yōu)解,因此,取CNN產(chǎn)生的高級表示的最大響應。
這部分詳細介紹了自定義神經(jīng)網(wǎng)絡框架的設計。設計K分類器分別對粗粒度聚類過程生成的K個數(shù)據(jù)集進行分類,從聚類步驟中得到一個有意義的結(jié)論,即聚類的大小不同。因此,本文提出一種自定義的神經(jīng)網(wǎng)絡設計策略,使模型能夠有效地在目標設備上運行,接下來,介紹了神經(jīng)網(wǎng)絡設計中的能量預測模型和其他細節(jié)。
在手機上實現(xiàn)深度學習模型最重要的問題是能耗和計算。執(zhí)行一次推理所產(chǎn)生的能量決定了手機的工作時間。對于深度學習模型,能耗主要來自兩個方面:占用的CPU資源;RAM與ROM之間的數(shù)據(jù)交換。這兩個方面都受到模型處理圖像產(chǎn)生的計算量的影響。為了確保模型能夠在移動設備上有效地執(zhí)行,本文提出了一個能量預測模型,該模型可以預測神經(jīng)網(wǎng)絡在處理圖像過程中因為計算而產(chǎn)生的能量消耗,預測能耗的方法可表述如下:
式中:O代表神經(jīng)網(wǎng)絡的計算;Cin,Cout分別是第j個卷積層的輸入通道和輸出通道;hj-1,ωj-1是輸入要素圖的大??;K是內(nèi)核的大?。籖i代表與特定計算有關的能耗;α是能量開銷和計算量的轉(zhuǎn)換因子,每個分類器都有自己的轉(zhuǎn)換因子。
由于解空間的減小,可以利用輕權重神經(jīng)網(wǎng)絡對圖像進行識別。因此,在分類器設計中,廣泛采用與聚類方法相同的神經(jīng)網(wǎng)絡設計策略。確切地說,只是在卷積層中使用3×3個過濾器來分析圖像信息,在最后的卷積層之后加入LRN(Local Response,歸一化),使特征分布變得穩(wěn)定。值得注意的是,在最終的完全連接層之后添加softmax層,使用的損失函數(shù)是交叉熵,采用小批量梯度下降優(yōu)化函數(shù)解決了隨機梯度下降過程中損失不穩(wěn)定的問題。
在本節(jié)中用提出的系統(tǒng)對圖像進行分類,并在CIFAR-10、CIFAR-100、ILSVRC2012 1k三個流行的數(shù)據(jù)集上評估其性能。
兩個CIFAR數(shù)據(jù)集包含50 000張訓練圖像和10 000張像素為32×32的測試圖像。CIFAR-10包含10個類別,而CIFAR-100有100個更為細粒度的類別,也可以分為20個粗粒度的類別。ILSVRC2012 1k數(shù)據(jù)集有1 000個類別,共120萬張訓練圖像和50 000張像素為96×96的測試圖像(調(diào)整ILSVRC2012的圖像大小以方便處理)。
因為把原始數(shù)據(jù)集分為若干個不同的簇,所以就會導致每個簇中的圖像大幅度減少。因此,應用了一些數(shù)據(jù)增強技術來擴展數(shù)據(jù)集:首先對圖像零填充4個像素,然后隨機裁剪它們以生成大小為32×32的圖像;再人為地在圖像中產(chǎn)生一些噪點;Z分數(shù)歸一化用于提高原始數(shù)據(jù)的質(zhì)量,在此步驟中,通過通道均值減去圖像的像素數(shù)據(jù),然后除以標準差。該過程可通過式(10)表示。這些主流的數(shù)據(jù)增強技術能夠擴展原始數(shù)據(jù)集并增強神經(jīng)網(wǎng)絡的推理能力。
在第一階段將圖像分為幾個簇。在此階段中不需要使用標簽訓練模型,但是需要標簽測試模型的性能。因此,采用一種簡單的方法標注圖像的粗粒度標簽。注意,CIFAR-100數(shù)據(jù)集為每個圖像標注了粗粒度標簽,以表示它的超類,例如,時鐘、電視、鍵盤都是家用電器,因此,在此階段中不會對CIFAR-100做任何處理。在訓練提出的模型之前,首先分析了100張圖像的潛在關系,然后對原始數(shù)據(jù)集進行粗粒度標記,最后為數(shù)據(jù)集添加粗粒度列表。
在對聚類性能評估的初步研究中,引入了NMI度量兩個不同的賦值X,Y之間共享的信息。NMI公式如下:
式中:I(*)為X,Y的互信息;H(*)表示熵。具體來說,如果NMI的值越小,則兩個賦值的相關性越獨立。
(1)聚類和粗粒度標簽之間的關聯(lián)
在神經(jīng)網(wǎng)絡訓練之后,通過報告NMI的演變顯示聚類與人工或自然粗粒度標簽之間的動態(tài)關聯(lián)。該度量的目標是度量模型的性能,以預測圖像的粗粒度簇級信息。當對一個神經(jīng)網(wǎng)絡模型進行訓練時,模型會逐漸更新權重,使推理更加有效。在圖2中,分別展示了CIFAR-10、CIFAR-100和ILSVRC2012 1k數(shù)據(jù)集在訓練過程中聚類和粗粒度標簽的趨勢??梢园l(fā)現(xiàn),這三條曲線都持續(xù)上升,即粗粒度簇與標簽之間的依賴性不斷增加,這說明本文模型可以逐漸產(chǎn)生有效的特征信息來提高聚類性能。
圖2 聚類和粗粒度標簽的趨勢
(2)相鄰訓練階段簇間的關聯(lián)
這一部分簡要分析了聚類模型在訓練階段的穩(wěn)定性。在訓練過程中,該模型根據(jù)圖像的特征信息對圖像進行聚類。然而,由于圖像分配的變化情況未知,因此無法斷言聚類的穩(wěn)定性。因此,本文分析了簇在相鄰時間(t-1和t)的分布。在圖3中報告了相鄰訓練時段的NMI,以表示模型的內(nèi)部變化。圖中顯示,NMI不斷增加,即訓練過程中重新分配的圖像數(shù)量變少,此度量表示本文模型可以有效地對圖像進行聚類,使圖像分布穩(wěn)定。
圖3 相鄰訓練時段的NMI變化
(3)粗粒度聚類性能
本文創(chuàng)新性地探索使用粗粒度聚類來劃分原始數(shù)據(jù)集的解空間,因此沒有將聚類性能與其他旨在預測特定類的工作進行比較。為了將本文模型與其他已有的工作進行比較,對本文模型進行了擴展,使其能夠預測圖像的某類信息。表2中展示了模型在兩個方面的性能,即NMI和精度。首先,基于深度學習方法(如DAC)的性能優(yōu)于傳統(tǒng)機器學習方法(如K-means),因此可以得到特征信息比聚類方法更重要的結(jié)論;其次,與其他工作相比,本文擴展模型表現(xiàn)出不錯的性能,因為本文只設計了一個簡單的基于深度學習的方法來劃分數(shù)據(jù)集的解空間,因此,粗粒度聚類方法在這些聚類方法中能夠表現(xiàn)出最好的性能。
表2 不同聚類方法在三個數(shù)據(jù)集上的聚類性能對比
本文主要從分類精度和能耗兩個方面來評估系統(tǒng)性能。前者驗證了模型推理的有效性,后者保證了模型在目標設備上的良好性能。可以用式(8)獲得近似的能耗,然后通過對預測能量和能量存儲量的分析,判斷模型是否適用于移動設備。圖4給出了本文系統(tǒng)和其他主流模型在2個數(shù)據(jù)集上的性能(數(shù)據(jù)取自其他論文)。本文系統(tǒng)達到了與其他移動服務模型相當?shù)木?,這表明本文系統(tǒng)能夠滿足用戶的需求。在評估了系統(tǒng)的準確性之后,使用能量預測模型評估該模型是否能夠有效地在手機上運行。在表3中,本文展示了在ILSVRC2012 1k上訓練的幾個模型的能耗和一些其他特征。計算量和權重參數(shù)會對內(nèi)存、CPU和GPU造成巨大的壓力,所以計算量和參數(shù)在一定程度上可以代表能耗。通過與其他模型的比較,發(fā)現(xiàn)本文模型計算量比其他模型要少,在無人機上推理一次僅消耗264 mA。因此,本文模型可以滿足目前大多數(shù)移動設備的需求。
圖4 準確性比較
表3 能量消耗和其他特征的比較
本文提出了一種新的神經(jīng)網(wǎng)絡,通過引入劃分解空間和分類數(shù)據(jù)兩個階段對數(shù)據(jù)進行分類。前者利用粗粒度聚類方法,允許將數(shù)據(jù)分布到多個聚類中,后者由上一步產(chǎn)生的具有相同聚類數(shù)的一系列分類器對每個聚類進行精確分類。這個過程的優(yōu)點是:可以在兩個步驟中減輕神經(jīng)網(wǎng)絡模型的壓力,例如,在聚類步驟中只需要找到一個大致的聚類模式,使神經(jīng)網(wǎng)絡不要過于龐大,而在推理步驟中只需要將一個輕量級的模型調(diào)用到內(nèi)存中,它可能是單個模型所占大小的一小部分,這個過程的結(jié)果使得模型消耗更少的能量,有利于在各種手機上實現(xiàn)該模型。與現(xiàn)有的單一神經(jīng)網(wǎng)絡設計方法相比,本文系統(tǒng)在解空間發(fā)生變化時是等價穩(wěn)定的,因為在第一階段劃分解空間時,本文模型將數(shù)據(jù)分布到一個簇中,例如,利用多個數(shù)據(jù)集代替原來的數(shù)據(jù)集減輕數(shù)據(jù)集的壓力,通過增加解空間產(chǎn)生神經(jīng)網(wǎng)絡。大量實驗結(jié)果表明,本文模型在CIFAR-10、CIFAR-100和ILSVRC2012 1k的數(shù)據(jù)集上具有良好的性能,并且能耗較低,可以在手機上進行有效的處理。