用于自動(dòng)駕駛的實(shí)時(shí) YUV 多任務(wù) CNN
作者 | AI 修煉之路
來(lái)源 | AI 修煉之路
摘要
本文提出了一種針對低功耗車(chē)用SoC優(yōu)化的多任務(wù)卷積神經(jīng)網(wǎng)絡(luò )(CNN)結構。我們介紹了一個(gè)基于統一架構的網(wǎng)絡(luò ),其中編碼器由檢測和分割兩個(gè)任務(wù)共享。該網(wǎng)絡(luò )以25FPS運行,分辨率為1280×800。簡(jiǎn)要討論了直接利用原生YUV圖像、優(yōu)化圖層和要素圖、應用量化等優(yōu)化網(wǎng)絡(luò )結構的方法。
在我們的設計中,我們也關(guān)注內存帶寬,因為卷積是數據密集型的,而大多數SOC都有帶寬瓶頸。然后,我們展示了我們提出的用于專(zhuān)用CNN加速器的網(wǎng)絡(luò )的效率,給出了從硬件執行和相應的運行時(shí)間獲得的檢測和分割任務(wù)的關(guān)鍵性能指標(KPI)。
1. Introduction
目前先進(jìn)駕駛輔助系統(ADAS)領(lǐng)域的改進(jìn)將證實(shí),深度學(xué)習對于提出基于攝像機傳感器的有效解決方案至關(guān)重要。目前,卷積神經(jīng)網(wǎng)絡(luò )(CNNs)成功地處理了各種視覺(jué)感知任務(wù),包括語(yǔ)義分割、包圍盒目標檢測或深度估計。
然而,這些成功的應用大多需要很高的計算能力,這在當前的嵌入式系統中是不現實(shí)的。本文提出了一種新的用于目標檢測和語(yǔ)義分割的實(shí)時(shí)多任務(wù)網(wǎng)絡(luò )。與最近的解決方案相比,我們的論文提出了兩個(gè)主要的改進(jìn)。首先,我們提出了一個(gè)由YUV4:2:0圖像饋送的多任務(wù)網(wǎng)絡(luò )。其次,我們提出了一個(gè)全面設計的網(wǎng)絡(luò ),以考慮到有效的嵌入式集成的所有關(guān)鍵因素。
2. Background
幾年來(lái),CNN的架構一直致力于單一任務(wù),如分類(lèi)任務(wù)[6]、[13]、[5]、檢測任務(wù)[10]、[8])、語(yǔ)義分割任務(wù)[16]、[7]、[2]或視覺(jué)SLAM[9]。最近一年,我們觀(guān)察到了專(zhuān)門(mén)為處理幾項任務(wù)而設計的新CNN架構的出現。
在這些新方法中,2016年,Teichmann[15]提出了一個(gè)統一的編****架構,它可以同時(shí)執行三個(gè)任務(wù)(分類(lèi)、檢測、分割)。2018年,[14]發(fā)表了一篇基于Multinet的論文,在低功耗嵌入式系統上實(shí)現了30fps。除了這些論文外,其他幾篇論文[4]、[1]證實(shí)了使用多任務(wù)學(xué)習(MTL)方法的好處,特別是在考慮「計算效率」或確保網(wǎng)絡(luò )的「最佳泛化」和「準確性」方面。
我們的工作是受到這些論文的啟發(fā),但我們建議建立一個(gè)更加輕量的網(wǎng)絡(luò ),通過(guò)直接輸入YUV4:2:0圖像來(lái)降低帶寬,并在低功耗SoC上進(jìn)行了實(shí)驗。
2013年,Sermanet和LeCun[12]提出將YUV圖像空間用于行人檢測應用。我們的網(wǎng)絡(luò )的輸入層序列直接來(lái)自于他們的工作,除了我們提出了調整內核維數(5×5和3×3而不是7×7和5×5)和其他一些細節來(lái)滿(mǎn)足SoC約束之外。
3. Network architecture optimization
「輸入數據形狀優(yōu)化」
為了滿(mǎn)足所選SoC提供的特定數據格式,必須修改網(wǎng)絡(luò )輸入層。事實(shí)上,所選的SoC針對其在前置攝像頭中的應用進(jìn)行了優(yōu)化。在我們的例子中,使用的相機是魚(yú)眼相機。這種類(lèi)型的相機比固定式相機提供了更寬的視野,這對汽車(chē)應用很有用。
圖像信號處理器(ISP)在視頻流水線(xiàn)開(kāi)始時(shí)提供的圖像格式不是BGR格式,而是YUV格式。這種格式在嵌入式系統中比較常見(jiàn),但在深度學(xué)習領(lǐng)域并不經(jīng)常使用這種格式。為我們的應用程序選擇的YUV格式是YUV4:2:0格式。與普通的BGR圖像相比,對攝像機捕獲的信息進(jìn)行編碼的三個(gè)通道的分辨率不同。表示色度分量的通道U和V是表示亮度的通道Y的一半分辨率。這意味著(zhù)通道U或V中的一個(gè)像素對對應于Y通道中的2x2像素塊的色度信息進(jìn)行編碼。
圖3中顯示的兩個(gè)選項在CNN IP上的成本完全相同。然而,YUV4:2:0選項有兩個(gè)主要優(yōu)勢:內存帶寬減少2倍,并且不需要額外的轉換(YUV4:2:0到BGR)模塊。
讓我們假設一個(gè)1280×800的8位輸入圖像。對于bgr選項,提供給網(wǎng)絡(luò )的內存流量大約是3MB,對于YUV4:2:0選項,大約是1.5MB。YUV4:2:0選項的另一個(gè)優(yōu)點(diǎn)是不需要額外的模塊進(jìn)行YUV4:2:0到BGR的轉換。使用bgr選項,這將是強制性的,才能提供一些有效的東西作為CNN的輸入。
「Encoder stage : V2N9Slim」
在最常見(jiàn)的統一編****架構中,最昂貴的部分通常是編碼器部分?;赩GG[13]或ResNet[5]的網(wǎng)絡(luò )編碼器基本上是我們在最近的論文中能找到的最常見(jiàn)的編碼器。不幸的是,這些編碼器既寬又深,實(shí)際上并不是低功耗嵌入式系統的理想候選者。為了滿(mǎn)足嵌入式系統的要求,采用了一種新的光編碼器V2N9Slim。
V2N9Slim 是一個(gè)9層編碼器(9個(gè)卷積層或池層),編碼器體系結構如圖4所示?!笇τ诙嗳蝿?wù)實(shí)驗,使用ImageNet數據集對編碼器部分進(jìn)行分類(lèi)任務(wù)的預訓練」。
V2N9超輕量架構是RESNET和VGG架構的混合體。實(shí)際上,我們的網(wǎng)絡(luò )的分層順序主要是受RESNET的普通網(wǎng)絡(luò )的啟發(fā),我們的網(wǎng)絡(luò )沒(méi)有采用符合VGG架構的捷徑連接。不使用快捷連接的動(dòng)機來(lái)自以前的實(shí)驗,作者證明,「在淺層網(wǎng)絡(luò )中,捷徑連接并不能顯著(zhù)提高精度」,我們的9層編碼器就是這種情況。此外,快捷連接對于嵌入式系統來(lái)說(shuō)也是昂貴的,因為它們涉及額外的計算以及增加的存儲器占用和存儲器傳輸。
「Decoders」
我們提出的解決方案的****是用于檢測部分的「YoloV2****」和用于分割部分的基于「FCN的****」。Y oloV2****包括在編碼器的末尾增加一個(gè)卷積層,以重塑編碼器特征映射到邊界框預測。然后,在A(yíng)RM處理器上執行額外的后處理,以將YoloV2****的輸出轉換為邊界框坐標和置信度?;贔CN的****是一個(gè)具有5個(gè)轉置卷積層級的****。這些層中的每一層都按因子2(即FCN2)對輸入進(jìn)行向上采樣(使用5×5核),以檢索原始輸入圖像分辨率。FCN2****完全運行在SoC上的專(zhuān)用CNN IP上。
「Quantization steps」
我們提出的優(yōu)化架構已經(jīng)使用基于KERAS的浮點(diǎn)精度框架進(jìn)行了訓練。為了在16位定點(diǎn)精度上執行以浮點(diǎn)精度訓練的網(wǎng)絡(luò ),需要量化步驟以在專(zhuān)用硬件上運行網(wǎng)絡(luò )。為了盡可能地減少這一階段的飽和度等問(wèn)題,所有卷積層之后都有一個(gè)批次歸一化層,以獲得具有單位方差的特征地圖分布。由于浮點(diǎn)范圍受批歸一化的限制,它還使得浮點(diǎn)數到16位數的編碼更加準確。
4. Results
我們在我們的私人魚(yú)眼相機數據集上進(jìn)行了一系列實(shí)驗。此數據集的大小為5000個(gè)帶注釋的幀。圖像分辨率為1280×800。針對語(yǔ)義分割和檢測任務(wù)對幀進(jìn)行注釋。對于語(yǔ)義分割,幀上的每個(gè)像素被注釋為屬于以下4個(gè)類(lèi)別之一:[背景、道路、車(chē)道、路緣]。對于檢測類(lèi),幀中的對象被標注在兩個(gè)類(lèi)之間:[行人、汽車(chē)]。
評估了兩種類(lèi)型的網(wǎng)絡(luò ):
在表1中,總結了這兩種網(wǎng)絡(luò )的性能。我們可以觀(guān)察到,兩個(gè)網(wǎng)絡(luò )在分割任務(wù)和檢測任務(wù)上的KPI非常接近。我們提出的網(wǎng)絡(luò )能夠達到與Multinet參考網(wǎng)絡(luò )相同的精度水平,甚至更好。然而,我們提出的網(wǎng)絡(luò )比參考網(wǎng)絡(luò )快65%,這證明了本部分中提出的優(yōu)化階段的效率。
5. Conclusion
本文針對自動(dòng)駕駛應用,提出了一種優(yōu)化的多任務(wù)網(wǎng)絡(luò )。首先,我們簡(jiǎn)要介紹了我們的低功耗SoC,并提出了使用多任務(wù)方法的必要性。然后,我們描述了所提出的網(wǎng)絡(luò )以及為實(shí)現嵌入約束所做的優(yōu)化。最后,我們分享了在我們自己的魚(yú)眼數據集和低功耗SoC上的實(shí)驗結果。
我們可以合理地認為,本文提出了三個(gè)主要貢獻:一個(gè)專(zhuān)用于YUV4:2:0圖像空間的輸入數據層,一個(gè)面向低功耗SoC的CNN核心的網(wǎng)絡(luò ),以及一個(gè)高度精簡(jiǎn)的網(wǎng)絡(luò ),其精度接近于原始的Multinet網(wǎng)絡(luò ),但速度要快得多。研討會(huì )的演示提案是一個(gè)很好的機會(huì ),可以突出這些貢獻,并現場(chǎng)展示我們網(wǎng)絡(luò )的效率。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。