0
本文作者: AI研習(xí)社-譯站 | 2018-08-28 11:34 |
雷鋒網(wǎng)按:本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題 Deep Learning in Aerial Systems Using Jetson,作者為 Ahmad Kiswani, Amit Aides and Mark Silberstein。
翻譯 | 青翼出沒一笑揚 老王家會霏的魚 校對 | Lamaric 整理 | MY
無人駕駛空中系統(tǒng)(UAS)在過去十年中被廣泛應(yīng)用,盡管 UAS 最早被應(yīng)用在軍事上,事實證明,它們在很多其它領(lǐng)域都是有用的,包括農(nóng)業(yè)、地理制圖、航空攝影、搜索和救援等。然而這些系統(tǒng)都需要一個人循環(huán)完成遠(yuǎn)程控制、場景識別和數(shù)據(jù)獲取。這不僅增加了操作成本,而且將應(yīng)用范圍極大程度上限制在了能夠進行遠(yuǎn)程控制的應(yīng)用范圍內(nèi)。
圖 1:2015 年 AUVSI SUAS 競賽隊伍。地面目標(biāo)可以在團隊前面看到。照片由 AUVSI Seafarer 分會提供。
我們的工作致力于將深度學(xué)習(xí)引入無人駕駛系統(tǒng),主要是通過以下兩點:
針對特定任務(wù)優(yōu)化深度神經(jīng)網(wǎng)絡(luò),比如對象檢測、目標(biāo)識別、重建、定位等;
針對成本和性能對深度神經(jīng)網(wǎng)絡(luò)進行優(yōu)化。我們通過現(xiàn)有平臺的嵌入式圖形處理單元(GPU)來平衡高性能與低功耗,比如英偉達(dá)的 Jetson TK1 開發(fā)工具和 Jetson TX1。
2016 年我們的技術(shù)團隊參加了由國際無人駕駛系統(tǒng)協(xié)會(AUVSI)舉辦的無人機系統(tǒng)競賽,并獲得了第 4 名的成績。在這篇文章中,我們將闡述怎樣基于 Jetson 在 Aerial 系統(tǒng)內(nèi)進行深度學(xué)習(xí)。
競賽的規(guī)則是安全地應(yīng)用和執(zhí)行系統(tǒng)工程原理,并開發(fā)和操作自主無人駕駛系統(tǒng)(UAS),成功地完成一組特定的任務(wù)。
其中的一項任務(wù)是對地面目標(biāo)進行自動檢測,定位和分類(ADLC)。每個地面目標(biāo)都包含了位置(經(jīng)緯度)、形狀(圓,三角等)、字母(每個地面目標(biāo)都被一個居中單詞表示,如圖 1 所示)、字母方向和顏色這幾個特征。這些地面目標(biāo)在競賽前都是未知的,并被分散在雜亂無章的任務(wù)區(qū)域中。無人機需要在任務(wù)區(qū)域的上空飛行并識別這些目標(biāo)以及它們的屬性和位置。
在這篇文章中,我們將介紹構(gòu)建此類系統(tǒng)的一些約束和挑戰(zhàn),并解釋我們?nèi)绾卧?Jetson TK1 開發(fā)人員工具包中使用深度學(xué)習(xí)來在可變條件下實現(xiàn)人類級別的準(zhǔn)確性。
系統(tǒng)描述
我們在 ATHENA 無人機視覺和圖像科學(xué)實驗室(VISL)開發(fā)我們的系統(tǒng),這是一個由 20 個學(xué)生成立的技術(shù)空中系統(tǒng)(TAS)小組。實驗室配備了一臺 Sony a-6000 的相機,可以以每秒兩幀的速度產(chǎn)生 24M 像素的彩色圖像。覆蓋任務(wù)搜索區(qū)域只需要大約 10 分鐘,整個飛行任務(wù)時間少于 30 分鐘。這要求系統(tǒng)平均以小于 0.7 秒/張的速度處理 1200 張圖像。
圖 2:ATHENA 空中技術(shù)系統(tǒng)團隊在 2016 年競賽中使用的無人機
我們選擇了英偉達(dá) Jetson TK1 工具作為我們的主要圖像處理單元,因為它的 GPU 以輕量和緊湊的方式為卷積神經(jīng)網(wǎng)絡(luò)提供了非常高性能且高效的計算。我們能夠優(yōu)化內(nèi)存密集型應(yīng)用程序,以適應(yīng) Jetson 的 2GB 內(nèi)存,并獲得處理圖像所需的數(shù)據(jù)速率。
我們針對競賽做了以下設(shè)計:
設(shè)計 ADSL 算法作為級聯(lián)分類器在任務(wù)流程的早期階段用來排除掉那些檢測目標(biāo)之外的圖像。這節(jié)省了計算資源同時加快了每幀圖像的平均處理速度。
設(shè)計深度學(xué)習(xí)網(wǎng)絡(luò)時在正確率和速度之間找到一個平衡點。
多核的并行 CPU 共享算法(Jetson 有一個 4 核的 ARM CPU)。
使用一臺獨立的機載計算機來控制相機并與地面工作站通信。這保證了 Jetson 僅用來處理圖像任務(wù)。
從 Jetson 操作系統(tǒng)中去除不必要的模塊(Linux For Tegra:L4T)來釋放內(nèi)存以支撐較大的神經(jīng)網(wǎng)絡(luò)。
算法描述
我們按照四級管道實現(xiàn) ADLC 算法,如圖 3 所示。
使用區(qū)域檢測算法實現(xiàn)目標(biāo)檢測。
使用一個深度神經(jīng)網(wǎng)絡(luò) DNN1 來實現(xiàn)形狀分類。
字符分割。
使用另外一個深度神經(jīng)網(wǎng)絡(luò) DNN2 來實現(xiàn)字符分類。
圖 3:ADLC 算法管道 : 藍(lán)色方塊由 CPU 處理,綠色方塊由 GPU 處理。
ADLC 算法的結(jié)果被發(fā)送到地面基站并且在傳統(tǒng)的 GUI 中顯示給無人機操作者(圖 4)。
圖 4:ADLC 用戶界面顯示算法的不同階段以及最終的分類。
區(qū)域檢測
我們選擇在 CPU 上運行標(biāo)準(zhǔn) blob 檢測算法來實現(xiàn)區(qū)域檢測。這使得 GPU 可以解脫出來去執(zhí)行分類任務(wù)。blob 檢測算法能夠檢測圖片中的顯著性區(qū)域,而且可以在縮小的圖像上執(zhí)行來以精度換取速度。使用目標(biāo)的大小及凸性等標(biāo)準(zhǔn)可以進一步篩選候選者。我們使用 OpenCV4Tegra 作為算法的優(yōu)化方法,并且并行運行四個檢測任務(wù)。
使用神經(jīng)網(wǎng)絡(luò)進行區(qū)域探測是十分可能的,而且有著 Jetson TX1 的更高性能的 GPU,我們希望我們的下一代系統(tǒng)能夠在整個管道中使用端到端的深度學(xué)習(xí),甚至對相機拍攝的高分辨率圖像進行處理。
形狀分類
從全分辨率圖像中裁剪出目標(biāo)候選,并將其縮小成 32 x 32 像素的碎片,隨后用卷積神經(jīng)網(wǎng)絡(luò)(CNN;見圖 5)處理它們。我們精心的的設(shè)計了能夠在輕量級計算的同時保持高精度的網(wǎng)絡(luò)。除了組織者定義的形狀分類外,我們還加入了一個「無目標(biāo)」的分類來識別誤報。被識別為「無目標(biāo)」或者被分類到低可信度的部分將會被丟棄。在管道的這個節(jié)點上,絕大多數(shù)的誤報都被消除了。
我們使用 CAFFE with cuDNN 來進行 DNN 推斷。
圖 5:Blob 檢測和形狀分類階段。
字符分割
在這一步,被分類成確定形狀(圓,正方形等等)的碎片經(jīng)過預(yù)處理生成目標(biāo)內(nèi)字符的二進制掩碼。我們假設(shè)碎片的背景是相對均勻的,在目標(biāo)周圍進行嚴(yán)格的剪切。我們使用 k 均值聚類法來將碎片中的像素聚為三類:背景、形狀和字符。我們使用前兩個矩對簇進行分析,并將字符類的像素點轉(zhuǎn)換成目標(biāo)字符的二進制掩碼。
字符的識別和定向
字符的二進制掩碼被傳遞到字符識別階段。最初我們打算使用 Tesseract OCR 算法,但是我們發(fā)現(xiàn)這個算法對圖像的質(zhì)量太過敏感,對單一字符的精確度非常低。因此最終,我們訓(xùn)練了一個傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)來處理這一步。
除了字母數(shù)字類,我們還訓(xùn)練了網(wǎng)絡(luò)來對旋轉(zhuǎn)字符和無目標(biāo)類進行區(qū)分。前一階段的字符的二進制掩碼被饋入到網(wǎng)絡(luò)中,每旋轉(zhuǎn) 15°便獨立分成一部分。網(wǎng)絡(luò)將可信度最高的角度作為正確答案。我們從旋轉(zhuǎn)角度和相機方向來推斷字符的方向。加入旋轉(zhuǎn)字符提高了系統(tǒng)的精確性。我們推測到它允許網(wǎng)絡(luò)在區(qū)分字母和非字母時更加靈活。
圖 6: 采用旋轉(zhuǎn)字符方法確定方向的字符分割和分類階段
神經(jīng)網(wǎng)絡(luò)訓(xùn)練
我們沒有有競賽目標(biāo)的標(biāo)準(zhǔn)數(shù)據(jù)集,而且建立一個足夠大的可用于訓(xùn)練的數(shù)據(jù)集是非常需要精力的并且需要創(chuàng)造數(shù)千個真實目標(biāo)來覆蓋所有可能的圖形、字符以及顏色的組合。除此之外,可能還需要上百種測試來捕捉目標(biāo)的圖像,所有我們根據(jù)綜合目標(biāo)訓(xùn)練了我們的深度神經(jīng)網(wǎng)絡(luò)。
我們創(chuàng)造了兩個合成數(shù)據(jù)集,一個用來訓(xùn)練圖形神經(jīng)網(wǎng)絡(luò)而另一個用來訓(xùn)練字符神經(jīng)網(wǎng)絡(luò)。我們通過從降采樣圖形中隨機裁剪碎片并在隨機位置賦予隨機目標(biāo)來創(chuàng)造形狀樣品。在賦予目標(biāo)之前亮度被設(shè)為于整塊碎片相匹配,而且加入了泊松噪聲來模擬相機捕獲時的噪聲。目標(biāo)被混合再來碎片中以避免鋒銳的邊緣。
圖 7: 覆蓋在真實圖像上的合成目標(biāo)。只有右上角的星星 C 才是真正的目標(biāo)。
我們通過在全分辨率下生成形狀目標(biāo),然后用與之前的分割算法相似的 k 均值聚類的方法提取目標(biāo)字符創(chuàng)造了字符樣本。采用這個方法合成目標(biāo)可用使目標(biāo)不僅在人眼看來很真實,而且他們也模仿了系統(tǒng)捕獲和處理真實圖形的過程。圖 7 顯示了合成目標(biāo)的樣品。唯一的真實目標(biāo)是在頂部右側(cè)的帶有字母 C 的星星。
以上描述的過程使創(chuàng)建龐大的數(shù)據(jù)集成為可能。每個數(shù)據(jù)集包括 500K 個帶標(biāo)簽的樣本并分類在不同的類別中。字符數(shù)據(jù)集包含額外的旋轉(zhuǎn)字符類。而且,為了防止網(wǎng)絡(luò)對合成目標(biāo)過擬合,我們在訓(xùn)練集中增加了在實驗條件下捕獲的以及過去競賽中的真實目標(biāo)物。
訓(xùn)練過程
我們將訓(xùn)練集數(shù)據(jù)的 80% 用于訓(xùn)練,10% 用于測試,10% 用于驗證。我們使用 DIGITS 和一個 NVIDIA Titan X (Maxwell)來進行訓(xùn)練并且在僅僅 28 分鐘的訓(xùn)練時間內(nèi)就達(dá)到了 98% 的精確度。
我們進一步驗證了在實驗中的圖片以及過去幾年的比賽中的圖片。這些圖片中出現(xiàn)的少量的目標(biāo)比大量的驗證更有質(zhì)量。這個設(shè)置模仿了真實的競賽場景,有利于比較不同網(wǎng)絡(luò)的特點。
總結(jié)與展望
......
想要繼續(xù)閱讀,請移步至我們的AI研習(xí)社社區(qū):https://club.leiphone.com/page/TextTranslation/679
更多精彩內(nèi)容盡在 AI 研習(xí)社。
不同領(lǐng)域包括計算機視覺,語音語義,區(qū)塊鏈,自動駕駛,數(shù)據(jù)挖掘,智能控制,編程語言等每日更新。
雷鋒網(wǎng)雷鋒網(wǎng)(公眾號:雷鋒網(wǎng))
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。