當前位置:
首頁 > 新聞 > 基於 Jetson在Aerial 系統內進行深度學習

基於 Jetson在Aerial 系統內進行深度學習

雷鋒網按:本文為 AI 研習社編譯的技術博客,原標題 Deep Learning in Aerial Systems Using Jetson,作者為  Ahmad Kiswani, Amit Aides and Mark Silberstein。

翻譯 | 青翼出沒一笑揚 老王家會霏的魚      校對 | Lamaric       整理 | MY

無人駕駛空中系統(UAS)在過去十年中被廣泛應用,儘管 UAS 最早被應用在軍事上,事實證明,它們在很多其它領域都是有用的,包括農業、地理製圖、航空攝影、搜索和救援等。然而這些系統都需要一個人循環完成遠程控制、場景識別和數據獲取。這不僅增加了操作成本,而且將應用範圍極大程度上限制在了能夠進行遠程控制的應用範圍內。

圖 1:2015 年 AUVSI SUAS 競賽隊伍。地面目標可以在團隊前面看到。照片由 AUVSI Seafarer 分會提供。

我們的工作致力於將深度學習引入無人駕駛系統,主要是通過以下兩點:

針對特定任務優化深度神經網路,比如對象檢測、目標識別、重建、定位等;

針對成本和性能對深度神經網路進行優化。我們通過現有平台的嵌入式圖形處理單元(GPU)來平衡高性能與低功耗,比如英偉達的 Jetson TK1 開發工具和 Jetson TX1。

2016 年我們的技術團隊參加了由國際無人駕駛系統協會(AUVSI)舉辦的無人機系統競賽,並獲得了第 4 名的成績。在這篇文章中,我們將闡述怎樣基於 Jetson 在 Aerial 系統內進行深度學習。

競賽的規則是安全地應用和執行系統工程原理,並開發和操作自主無人駕駛系統(UAS),成功地完成一組特定的任務。

其中的一項任務是對地面目標進行自動檢測,定位和分類(ADLC)。每個地面目標都包含了位置(經緯度)、形狀(圓,三角等)、字母(每個地面目標都被一個居中單詞表示,如圖 1 所示)、字母方向和顏色這幾個特徵。這些地面目標在競賽前都是未知的,並被分散在雜亂無章的任務區域中。無人機需要在任務區域的上空飛行並識別這些目標以及它們的屬性和位置。

在這篇文章中,我們將介紹構建此類系統的一些約束和挑戰,並解釋我們如何在 Jetson TK1 開發人員工具包中使用深度學習來在可變條件下實現人類級別的準確性。

系統描述

我們在 ATHENA 無人機視覺和圖像科學實驗室(VISL)開發我們的系統,這是一個由 20 個學生成立的技術空中系統(TAS)小組。實驗室配備了一台 Sony a-6000 的相機,可以以每秒兩幀的速度產生 24M 像素的彩色圖像。覆蓋任務搜索區域只需要大約 10 分鐘,整個飛行任務時間少於 30 分鐘。這要求系統平均以小於 0.7 秒/張的速度處理 1200 張圖像。

圖 2:ATHENA 空中技術系統團隊在 2016 年競賽中使用的無人機

我們選擇了英偉達 Jetson TK1 工具作為我們的主要圖像處理單元,因為它的 GPU 以輕量和緊湊的方式為卷積神經網路提供了非常高性能且高效的計算。我們能夠優化內存密集型應用程序,以適應 Jetson 的 2GB 內存,並獲得處理圖像所需的數據速率。

我們針對競賽做了以下設計:

設計 ADSL 演算法作為級聯分類器在任務流程的早期階段用來排除掉那些檢測目標之外的圖像。這節省了計算資源同時加快了每幀圖像的平均處理速度。

設計深度學習網路時在正確率和速度之間找到一個平衡點。

多核的並行 CPU 共享演算法(Jetson 有一個 4 核的 ARM CPU)。

使用一台獨立的機載計算機來控制相機並與地面工作站通信。這保證了 Jetson 僅用來處理圖像任務。

從 Jetson 操作系統中去除不必要的模塊(Linux For Tegra:L4T)來釋放內存以支撐較大的神經網路。

演算法描述

我們按照四級管道實現 ADLC 演算法,如圖 3 所示。

使用區域檢測演算法實現目標檢測。

使用一個深度神經網路 DNN1 來實現形狀分類。

字元分割。

使用另外一個深度神經網路 DNN2 來實現字元分類。

圖 3:ADLC 演算法管道 : 藍色方塊由 CPU 處理,綠色方塊由 GPU 處理。

ADLC 演算法的結果被發送到地面基站並且在傳統的 GUI 中顯示給無人機操作者(圖 4)。

圖 4:ADLC 用戶界面顯示演算法的不同階段以及最終的分類。

區域檢測

我們選擇在 CPU 上運行標準 blob 檢測演算法來實現區域檢測。這使得 GPU 可以解脫出來去執行分類任務。blob 檢測演算法能夠檢測圖片中的顯著性區域,而且可以在縮小的圖像上執行來以精度換取速度。使用目標的大小及凸性等標準可以進一步篩選候選者。我們使用OpenCV4Tegra作為演算法的優化方法,並且並行運行四個檢測任務。

使用神經網路進行區域探測是十分可能的,而且有著 Jetson TX1 的更高性能的 GPU,我們希望我們的下一代系統能夠在整個管道中使用端到端的深度學習,甚至對相機拍攝的高解析度圖像進行處理。

形狀分類

從全解析度圖像中裁剪出目標候選,並將其縮小成 32 x 32 像素的碎片,隨後用卷積神經網路(CNN;見圖 5)處理它們。我們精心的的設計了能夠在輕量級計算的同時保持高精度的網路。除了組織者定義的形狀分類外,我們還加入了一個「無目標」的分類來識別誤報。被識別為「無目標」或者被分類到低可信度的部分將會被丟棄。在管道的這個節點上,絕大多數的誤報都被消除了。

我們使用 CAFFE with cuDNN 來進行 DNN 推斷。

圖 5:Blob 檢測和形狀分類階段。

字元分割

在這一步,被分類成確定形狀(圓,正方形等等)的碎片經過預處理生成目標內字元的二進位掩碼。我們假設碎片的背景是相對均勻的,在目標周圍進行嚴格的剪切。我們使用 k 均值聚類法來將碎片中的像素聚為三類:背景、形狀和字元。我們使用前兩個矩對簇進行分析,並將字元類的像素點轉換成目標字元的二進位掩碼。

字元的識別和定向

字元的二進位掩碼被傳遞到字元識別階段。最初我們打算使用Tesseract OCR演算法,但是我們發現這個演算法對圖像的質量太過敏感,對單一字元的精確度非常低。因此最終,我們訓練了一個傳統的神經網路來處理這一步。

除了字母數字類,我們還訓練了網路來對旋轉字元和無目標類進行區分。前一階段的字元的二進位掩碼被饋入到網路中,每旋轉 15°便獨立分成一部分。網路將可信度最高的角度作為正確答案。我們從旋轉角度和相機方向來推斷字元的方向。加入旋轉字元提高了系統的精確性。我們推測到它允許網路在區分字母和非字母時更加靈活。

圖 6: 採用旋轉字元方法確定方向的字元分割和分類階段

神經網路訓練

我們沒有有競賽目標的標準數據集,而且建立一個足夠大的可用於訓練的數據集是非常需要精力的並且需要創造數千個真實目標來覆蓋所有可能的圖形、字元以及顏色的組合。除此之外,可能還需要上百種測試來捕捉目標的圖像,所有我們根據綜合目標訓練了我們的深度神經網路。

我們創造了兩個合成數據集,一個用來訓練圖形神經網路而另一個用來訓練字元神經網路。我們通過從降採樣圖形中隨機裁剪碎片並在隨機位置賦予隨機目標來創造形狀樣品。在賦予目標之前亮度被設為於整塊碎片相匹配,而且加入了泊松雜訊來模擬相機捕獲時的雜訊。目標被混合再來碎片中以避免鋒銳的邊緣。

圖 7: 覆蓋在真實圖像上的合成目標。只有右上角的星星 C 才是真正的目標。

我們通過在全解析度下生成形狀目標,然後用與之前的分割演算法相似的 k 均值聚類的方法提取目標字元創造了字元樣本。採用這個方法合成目標可用使目標不僅在人眼看來很真實,而且他們也模仿了系統捕獲和處理真實圖形的過程。圖 7 顯示了合成目標的樣品。唯一的真實目標是在頂部右側的帶有字母 C 的星星。

以上描述的過程使創建龐大的數據集成為可能。每個數據集包括 500K 個帶標籤的樣本並分類在不同的類別中。字元數據集包含額外的旋轉字元類。而且,為了防止網路對合成目標過擬合,我們在訓練集中增加了在實驗條件下捕獲的以及過去競賽中的真實目標物。

訓練過程

我們將訓練集數據的 80% 用於訓練,10% 用於測試,10% 用於驗證。我們使用 DIGITS 和一個 NVIDIA Titan X (Maxwell)來進行訓練並且在僅僅 28 分鐘的訓練時間內就達到了 98% 的精確度。

我們進一步驗證了在實驗中的圖片以及過去幾年的比賽中的圖片。這些圖片中出現的少量的目標比大量的驗證更有質量。這個設置模仿了真實的競賽場景,有利於比較不同網路的特點。

總結與展望

......


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

ofo否認賣給滴滴;IBM開發區塊鏈平台;Uber自動駕駛卡車項目流產
HTC攜邁凱倫F1車隊,舉辦「邁凱倫影子計劃」VR電競賽 | ChinaJoy 2018

TAG:雷鋒網 |