博客專欄

EEPW首頁 > 博客 > 用于自動駕駛的實時 YUV 多任務 CNN

用于自動駕駛的實時 YUV 多任務 CNN

發(fā)布人:AI科技大本營 時間:2022-01-16 來源:工程師 發(fā)布文章

作者 | AI 修煉之路

來源 | AI 修煉之路

摘要

本文提出了一種針對低功耗車用SoC優(yōu)化的多任務卷積神經(jīng)網(wǎng)絡(CNN)結構。我們介紹了一個基于統(tǒng)一架構的網(wǎng)絡,其中編碼器由檢測和分割兩個任務共享。該網(wǎng)絡以25FPS運行,分辨率為1280×800。簡要討論了直接利用原生YUV圖像、優(yōu)化圖層和要素圖、應用量化等優(yōu)化網(wǎng)絡結構的方法。

在我們的設計中,我們也關注內(nèi)存帶寬,因為卷積是數(shù)據(jù)密集型的,而大多數(shù)SOC都有帶寬瓶頸。然后,我們展示了我們提出的用于專用CNN加速器的網(wǎng)絡的效率,給出了從硬件執(zhí)行和相應的運行時間獲得的檢測和分割任務的關鍵性能指標(KPI)。

1. Introduction

目前先進駕駛輔助系統(tǒng)(ADAS)領域的改進將證實,深度學習對于提出基于攝像機傳感器的有效解決方案至關重要。目前,卷積神經(jīng)網(wǎng)絡(CNNs)成功地處理了各種視覺感知任務,包括語義分割、包圍盒目標檢測或深度估計。

然而,這些成功的應用大多需要很高的計算能力,這在當前的嵌入式系統(tǒng)中是不現(xiàn)實的。本文提出了一種新的用于目標檢測和語義分割的實時多任務網(wǎng)絡。與最近的解決方案相比,我們的論文提出了兩個主要的改進。首先,我們提出了一個由YUV4:2:0圖像饋送的多任務網(wǎng)絡。其次,我們提出了一個全面設計的網(wǎng)絡,以考慮到有效的嵌入式集成的所有關鍵因素。

1.jpg

2. Background

幾年來,CNN的架構一直致力于單一任務,如分類任務[6]、[13]、[5]、檢測任務[10]、[8])、語義分割任務[16]、[7]、[2]或視覺SLAM[9]。最近一年,我們觀察到了專門為處理幾項任務而設計的新CNN架構的出現(xiàn)。

在這些新方法中,2016年,Teichmann[15]提出了一個統(tǒng)一的編****架構,它可以同時執(zhí)行三個任務(分類、檢測、分割)。2018年,[14]發(fā)表了一篇基于Multinet的論文,在低功耗嵌入式系統(tǒng)上實現(xiàn)了30fps。除了這些論文外,其他幾篇論文[4]、[1]證實了使用多任務學習(MTL)方法的好處,特別是在考慮「計算效率」或確保網(wǎng)絡的「最佳泛化」和「準確性」方面。

我們的工作是受到這些論文的啟發(fā),但我們建議建立一個更加輕量的網(wǎng)絡,通過直接輸入YUV4:2:0圖像來降低帶寬,并在低功耗SoC上進行了實驗。

2013年,Sermanet和LeCun[12]提出將YUV圖像空間用于行人檢測應用。我們的網(wǎng)絡的輸入層序列直接來自于他們的工作,除了我們提出了調(diào)整內(nèi)核維數(shù)(5×5和3×3而不是7×7和5×5)和其他一些細節(jié)來滿足SoC約束之外。

2.jpg

3. Network architecture optimization

「輸入數(shù)據(jù)形狀優(yōu)化」

為了滿足所選SoC提供的特定數(shù)據(jù)格式,必須修改網(wǎng)絡輸入層。事實上,所選的SoC針對其在前置攝像頭中的應用進行了優(yōu)化。在我們的例子中,使用的相機是魚眼相機。這種類型的相機比固定式相機提供了更寬的視野,這對汽車應用很有用。

圖像信號處理器(ISP)在視頻流水線開始時提供的圖像格式不是BGR格式,而是YUV格式。這種格式在嵌入式系統(tǒng)中比較常見,但在深度學習領域并不經(jīng)常使用這種格式。為我們的應用程序選擇的YUV格式是YUV4:2:0格式。與普通的BGR圖像相比,對攝像機捕獲的信息進行編碼的三個通道的分辨率不同。表示色度分量的通道U和V是表示亮度的通道Y的一半分辨率。這意味著通道U或V中的一個像素對對應于Y通道中的2x2像素塊的色度信息進行編碼。

圖3中顯示的兩個選項在CNN IP上的成本完全相同。然而,YUV4:2:0選項有兩個主要優(yōu)勢:內(nèi)存帶寬減少2倍,并且不需要額外的轉換(YUV4:2:0到BGR)模塊。

3.jpg

讓我們假設一個1280×800的8位輸入圖像。對于bgr選項,提供給網(wǎng)絡的內(nèi)存流量大約是3MB,對于YUV4:2:0選項,大約是1.5MB。YUV4:2:0選項的另一個優(yōu)點是不需要額外的模塊進行YUV4:2:0到BGR的轉換。使用bgr選項,這將是強制性的,才能提供一些有效的東西作為CNN的輸入。

「Encoder stage : V2N9Slim」

在最常見的統(tǒng)一編****架構中,最昂貴的部分通常是編碼器部分?;赩GG[13]或ResNet[5]的網(wǎng)絡編碼器基本上是我們在最近的論文中能找到的最常見的編碼器。不幸的是,這些編碼器既寬又深,實際上并不是低功耗嵌入式系統(tǒng)的理想候選者。為了滿足嵌入式系統(tǒng)的要求,采用了一種新的光編碼器V2N9Slim。

V2N9Slim 是一個9層編碼器(9個卷積層或池層),編碼器體系結構如圖4所示?!笇τ诙嗳蝿諏嶒?,使用ImageNet數(shù)據(jù)集對編碼器部分進行分類任務的預訓練」。

4.jpg

V2N9超輕量架構是RESNET和VGG架構的混合體。實際上,我們的網(wǎng)絡的分層順序主要是受RESNET的普通網(wǎng)絡的啟發(fā),我們的網(wǎng)絡沒有采用符合VGG架構的捷徑連接。不使用快捷連接的動機來自以前的實驗,作者證明,「在淺層網(wǎng)絡中,捷徑連接并不能顯著提高精度」,我們的9層編碼器就是這種情況。此外,快捷連接對于嵌入式系統(tǒng)來說也是昂貴的,因為它們涉及額外的計算以及增加的存儲器占用和存儲器傳輸。

「Decoders」

我們提出的解決方案的****是用于檢測部分的「YoloV2****」和用于分割部分的基于「FCN的****」。Y oloV2****包括在編碼器的末尾增加一個卷積層,以重塑編碼器特征映射到邊界框預測。然后,在ARM處理器上執(zhí)行額外的后處理,以將YoloV2****的輸出轉換為邊界框坐標和置信度?;贔CN的****是一個具有5個轉置卷積層級的****。這些層中的每一層都按因子2(即FCN2)對輸入進行向上采樣(使用5×5核),以檢索原始輸入圖像分辨率。FCN2****完全運行在SoC上的專用CNN IP上。

「Quantization steps」

我們提出的優(yōu)化架構已經(jīng)使用基于KERAS的浮點精度框架進行了訓練。為了在16位定點精度上執(zhí)行以浮點精度訓練的網(wǎng)絡,需要量化步驟以在專用硬件上運行網(wǎng)絡。為了盡可能地減少這一階段的飽和度等問題,所有卷積層之后都有一個批次歸一化層,以獲得具有單位方差的特征地圖分布。由于浮點范圍受批歸一化的限制,它還使得浮點數(shù)到16位數(shù)的編碼更加準確。

4. Results

我們在我們的私人魚眼相機數(shù)據(jù)集上進行了一系列實驗。此數(shù)據(jù)集的大小為5000個帶注釋的幀。圖像分辨率為1280×800。針對語義分割和檢測任務對幀進行注釋。對于語義分割,幀上的每個像素被注釋為屬于以下4個類別之一:[背景、道路、車道、路緣]。對于檢測類,幀中的對象被標注在兩個類之間:[行人、汽車]。

評估了兩種類型的網(wǎng)絡:

5.png

在表1中,總結了這兩種網(wǎng)絡的性能。我們可以觀察到,兩個網(wǎng)絡在分割任務和檢測任務上的KPI非常接近。我們提出的網(wǎng)絡能夠達到與Multinet參考網(wǎng)絡相同的精度水平,甚至更好。然而,我們提出的網(wǎng)絡比參考網(wǎng)絡快65%,這證明了本部分中提出的優(yōu)化階段的效率。

5. Conclusion

本文針對自動駕駛應用,提出了一種優(yōu)化的多任務網(wǎng)絡。首先,我們簡要介紹了我們的低功耗SoC,并提出了使用多任務方法的必要性。然后,我們描述了所提出的網(wǎng)絡以及為實現(xiàn)嵌入約束所做的優(yōu)化。最后,我們分享了在我們自己的魚眼數(shù)據(jù)集和低功耗SoC上的實驗結果。

我們可以合理地認為,本文提出了三個主要貢獻:一個專用于YUV4:2:0圖像空間的輸入數(shù)據(jù)層,一個面向低功耗SoC的CNN核心的網(wǎng)絡,以及一個高度精簡的網(wǎng)絡,其精度接近于原始的Multinet網(wǎng)絡,但速度要快得多。研討會的演示提案是一個很好的機會,可以突出這些貢獻,并現(xiàn)場展示我們網(wǎng)絡的效率。

*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。



關鍵詞: 自動駕駛

相關推薦

技術專區(qū)

關閉