通過深度學習技術,物聯(lián)網(IoT)設備能夠得以解析非結構化的多媒體數據,智能地響應用戶和環(huán)境事件,但是卻伴隨著苛刻的性能和功耗要求。本文作者探討了兩種方式以便將深度學習和低功耗的物聯(lián)網設備成功整合。
近年來,越來越多的物聯(lián)網產品出現(xiàn)在市場上,它們采集周圍的環(huán)境數據,并使用傳統(tǒng)的機器學習技術理解這些數據。一個例子是Google的Nest恒溫器,采用結構化的方式記錄溫度數據,并通過算法來掌握用戶的溫度偏好和時間表。然而,其對于非結構化的多媒體數據,例如音頻信號和視覺圖像則顯得無能為力。
新興的物聯(lián)網設備采用了更加復雜的深度學習技術,通過神經網絡來探索其所處環(huán)境。例如,Amazon Echo可以理解人的語音指令,通過語音識別,將音頻信號轉換成單詞串,然后使用這些單詞來搜索相關信息。最近,微軟的Windows物聯(lián)網團隊發(fā)布了一個基于面部識別的安全系統(tǒng),利用到了深度學習技術,當識別到用戶面部時能夠自動解開門鎖。
物聯(lián)網設備上的深度學習應用通常具有苛刻的實時性要求。例如,基于物體識別的安全攝像機為了能及時響應房屋內出現(xiàn)的陌生人,通常需要小于500毫秒的檢測延遲來捕獲和處理目標事件。消費級的物聯(lián)網設備通常采用云服務來提供某種智能,然而其所依賴的優(yōu)質互聯(lián)網連接,僅僅在部分范圍內可用,并且往往需要較高的成本,這對設備能否滿足實時性要求提出了挑戰(zhàn)。與之相比,直接在物聯(lián)網設備上實現(xiàn)深度學習或許是一個更好的選擇,這樣就可以免受連接質量的影響。
然而,直接在嵌入式設備上實現(xiàn)深度學習是困難的。事實上,低功耗是移動物聯(lián)網設備的主要特征,而這通常意味著計算能力受限,內存容量較小。在軟件方面,為了減少內存占用,應用程序通常直接運行在裸機上,或者在包含極少量第三方庫的輕量級操作系統(tǒng)上。而與之相反,深度學習意味著高性能計算,并伴隨著高功耗。此外,現(xiàn)有的深度學習庫通常需要調用許多第三方庫,而這些庫很難遷移到物聯(lián)網設備。
在深度學習任務中,最廣泛使用的神經網絡是卷積神經網絡(CNNs),它能夠將非結構化的圖像數據轉換成結構化的對象標簽數據。一般來說,CNNs的工作流程如下:首先,卷積層掃描輸入圖像以生成特征向量;第二步,激活層確定在圖像推理過程中哪些特征向量應該被激活使用;第三步,使用池化層降低特征向量的大??;最后,使用全連接層將池化層的所有輸出和輸出層相連。
在本文中,我們將討論如何使用CNN推理機在物聯(lián)網設備上實現(xiàn)深度學習。
將服務遷移到云端
對于低功耗的物聯(lián)網設備,問題在于是否存在一個可靠的解決方案,能夠將深度學習部署在云端,同時滿足功耗和性能的要求。為了回答這個問題,我們在一塊Nvidia Jetson TX1設備上實現(xiàn)了基于CNN的物體推理,并將其性能、功耗與將這些服務遷移到云端后的情況進行對比。
為了確定將服務遷移到云端后,是否可以降低功耗并滿足對物體識別任務的實時性要求,我們將圖像發(fā)送到云端,然后等待云端將結果返回。研究表明,對于物體識別任務,本地執(zhí)行的功耗為7 W,而遷移到云端后功耗降低為2W。這說明將服務遷移到云端確實是降低功耗的有效途徑。
然而,遷移到云端會導致至少2秒的延遲,甚至可能高達5秒,這不能滿足我們500ms的實時性要求。此外,延遲的劇烈抖動使得服務非常不可靠(作為對比,我們在美國和中國分別運行這些實驗進行觀察)。通過這些實驗我們得出結論,在當前的網絡環(huán)境下,將實時性深度學習任務遷移到云端是一個尚未可行的解決方案。
移植深度學習平臺到嵌入式設備
相比遷移到云端的不切實際,一個選擇是將現(xiàn)有的深度學習平臺移植到物聯(lián)網設備。為此,我們選擇移植由Google開發(fā)并開源的深度學習平臺TesnsorFlow來建立具有物體推理能力的物聯(lián)網設備Zuluko——PercepTIn的裸機ARM片上系統(tǒng)。Zuluko由四個運行在1 GHz的ARM v7內核和512 MB RAM組成,峰值功耗約為3W。根據我們的研究,在基于ARM-Linux的片上系統(tǒng)上,TensorFlow能夠提供最佳性能,這也是我們選擇它的原因。