DAC2019低功耗目標檢測系統設計挑戰賽:GPU、FPGA雙冠軍方案解讀
機器之心發布
作者:張曉帆
2019 年 6 月 5 日,由電子自動化設計頂級會議 DAC 主辦的第二屆「低功耗目標檢測系統設計挑戰賽」於拉斯維加斯落下帷幕(機器之心曾於去年報道了第一屆比賽)。本屆比賽旨在為終端設備設計高精度且高能效的物體檢測系統,共吸引了來自全球多個知名研究機構共 110 支隊伍參加(其中 GPU 組 52 支,FPGA 組 58 支),競爭非常激烈。來自美國伊利諾伊大學(UIUC)的團隊脫穎而出,包攬了 GPU 組和 FPGA 組雙冠軍。
本次比賽內容傳承了上屆精髓,包含極具挑戰性的軟硬體協同設計任務:參賽隊伍需要設計高精度演算法完成小物體檢測、被遮蔽物體檢測、相似目標區分等任務,也需要充分考慮演算法被部署在目標平台後的檢測速度及功耗等硬體因素。本次比賽由 Nvidia、Xilinx 和 DJI 贊助,參賽者可選擇 Nvidia TX2 GPU 或 Xilinx Ultra96 FPGA 作為目標平台,使用 DJI 提供的由無人機採集的圖片作訓練數據。機器之心邀請了榮獲雙冠軍的 UIUC 博士生張曉帆對比賽獲獎設計作深度解讀。
在本屆比賽,UIUC 的 C3SR AI 研究中心聯合了 IBM、Inspirit IoT, Inc(英睿物聯網)和新加坡 ADSC 的研究人員組成兩支隊伍(iSmart3-SkyNet 和 iSmart3),共同參與了 GPU 組和 FPGA 組競賽。在兩個組別中,我們均採用了自主設計的 DNN 模型 SkyNet。得益於全新設計的精簡網路結構,我們在兩項賽事都獲得了冠軍。本次參賽人員包括了:
- iSmart3-SkyNet (GPU): Xiaofan Zhang*, Haoming Lu*, Jiachen Li, Cong Hao, Yuchen Fan, Yuhong Li, Sitao Huang, Bowen Cheng, Yunchao Wei, Thomas Huang, Jinjun Xiong, Honghui Shi, Wen-mei Hwu, and Deming Chen.
- iSmart3 (FPGA): Cong Hao*, Xiaofan Zhang*, Yuhong Li, Yao Chen, Xingheng Liu, Sitao Huang, Kyle Rupnow, Jinjun Xiong, Wen-mei Hwu, and Deming Chen.
(* equal contributors)
圖 1: DAC 2019 大會正、副主席為 UIUC 團隊頒發低功耗目標檢測系統設計挑戰賽冠軍獎狀(左起為大會主席 Robert Aitken、博後研究員郝聰、博士生張曉帆、 陳德銘教授、C3SR AI 研究中心主任熊瑾珺及胡文美教授和大會副主席李卓)
主流做法?還是另闢蹊徑?
我們在研究去年比賽 GPU 及 FPGA 組前 3 名的獲獎設計後發現,他們都採用了自頂向下的 DNN 設計思路(圖 2):即首先選取符合任務需求的原始 DNN 模型(如經常出現在物體檢測比賽中的 YOLO 和 SSD 網路模型),然後進行演算法與硬體層面的優化,壓縮 DNN 並讓其部署在硬體資源稀缺的終端設備中。
圖 2: 被廣泛採用的自頂向下 DNN 設計流程,可通過網路壓縮及軟硬體層面優化,把 DNN 部署至資源受限的終端設備
我們還總結了去年獲獎設計所採用的原始 DNN 模型及優化方案(表 1)。所有 GPU 獲獎隊伍均選取 YOLO 作為其原始網路模型,而他們所獲得的最終結果也非常接近(檢測精度 IoU 接近 0.7,在 TX2 GPU 上的吞吐率約為 25 FPS)。而在 FPGA 方面,由於可用硬體資源更加稀缺,參賽隊伍採用的壓縮策略也更為激進,出現大量網路剪枝和超低比特量化方案(如 BNN),但在 IoU 和 FPS 這兩種性能指標上仍不及同年的 GPU 設計。
表 1: 2018 年低功耗目標檢測系統設計挑戰賽前 3 名設計方案分析。所有設計均採用自頂向下的 DNN 設計方法,選取已有網路(predefined DNN)進行模型壓縮(Compression)以適應目標硬體平台。這些設計採用的方法有 1input resizing、2 網路剪枝、3 低精度數據量化和 4TensorRT。
我們嘗試進一步提高檢測精度與吞吐率,如在相同的 GPU 上突破 0.7 IoU 或大幅提高 FPS。鑒於 YOLO 已被多支隊伍使用,我們選取了另一個熱門的檢測網路 SSD 作為原始網路,並分別使用 VGG16 和 MobileNet 為主幹網路作物體檢測。遺憾的是,這兩個版本的 SSD 網路只能取得 0.70 和 0.66 的 IoU,而吞吐率在桌面型 GPU(1080Ti)上也僅能達到 15 和 24 FPS。要繼續使用自頂向下的 DNN 設計方案,我們還需做大量網路壓縮及優化工作,才有機會把設計部署在 TX2 GPU 或 Ultra96 FPGA 上。至此,我們發現在使用自頂向下的設計思路時,將無可避免地遇到兩個困難,嚴重阻礙了在終端設備上部署高精度、高吞吐率的 DNN。這兩個困難包括了:
- 不同的 DNN 壓縮方案可提升 DNN 部署時的硬體性能,但提升性能的同時,容易引起極大的推理精度差異
- 根據已知任務,難以簡單通過原始 DNN 確定推理精度範圍
對於第一點,其根本原因是不同的 DNN 參數設置對推理精度和部署後的硬體性能有著不同的敏感度。我們在今年 ICML 的研討會論文中提及的幾個例子就反映了這個問題(見圖 3)[1]。第一個例子如圖 3 左圖所示,我們對 AlexNet 的權值參數與特徵圖作量化壓縮並畫出了網路推理精度的下降趨勢。在這個例子中,原有未壓縮的網路均採用 32 比特浮點表示(Float32);而壓縮後的網路將由 5 位數字標識(如 8-8218),對應著不同網路層所使用的量化比特位寬:第一位數字表示特徵圖使用的量化比特位寬,第二、三位數字表示首層卷積和剩餘卷積層權值參數採用的量化位寬,而最後兩位數字表示前兩層全連接層和最後一層全連接層權值參數採用的量化位寬。儘管採用相近的網路壓縮比,壓縮特徵圖會比壓縮權值參數帶來更多的推理精度損失。第二個例子如圖 3 右圖所示:在 DNN 設計上引入了一個不影響推理精度的細微改變(如輸入縮放因子從 0.9 修改至 0.88),就可節省大量硬體資源,從而能換來可觀的硬體性能提升。上述例子都說明了 DNN 不同的參數設置對推理精度和部署後硬體性能有著不同的敏感度。要避免敏感度不同而帶來的設計困難,我們在使用自頂向下的 DNN 設計方案時,就必須首先深入理解 DNN 的不同配置在軟、硬體層面可能會造成的影響。
而第二點對使用自頂向下方案造成的困擾是:我們很難針對某一特定應用挑選出所謂「最合適」的原始 DNN,並由此推斷 DNN 在壓縮、優化並部署後的推理精度範圍。想要找到合適的原始 DNN,網路設計者難免要做大量調研工作並在目標數據集上評估多種 DNN。並且,初期表現最好的原始 DNN 在經歷多次壓縮後,其推理精度也無法保證一定高於由其他 DNN 壓縮而成的網路。
鑒於上述提及的困難,我們認為通過自頂向下設計的 DNN 在部署到相同硬體平台時,將難以大幅度領先去年的獲獎模型。為此,我們決定另闢蹊徑,探索全新的 DNN 設計方案。
圖 3: 左圖:對 AlexNet 的權值參數(parameter)和特徵圖(feature map)作不同比特位寬量化時,相似的壓縮比例會引起巨大的推理精度差異(壓縮後的網路模型均在 ImageNet 上充分訓練);右圖:對指定 DNN 的特徵圖採用 12~16 比特位寬量化以及輸入縮放時對應的片上存儲器資源開銷。在部署該 DNN 到 FPGA 時,把縮放因子從 0.90 降低至 0.88 就能大幅度節省硬體資源,但網路推理精度幾乎不變 [1]。
新思路:自底相上的 DNN 設計方案
圖 4: 我們提出了一種自底向上的 DNN 設計方案,並使用此方案設計了參賽模型 SkyNet。該方案不需要依賴任何原始 DNN,只需 3 步即可生成目標 DNN:1)選擇 Bundle,2)搜索網路結構,3)手動增加網路特性。
我們最終採用的是一種自底向上的 DNN 設計方案,目的是生成一種能充分理解硬體資源限制且能被高效部署在終端設備的 DNN 模型(圖 4)。此方法的第一步是生成並選出最合適的 DNN 基本搭建單元,「Bundle」。通過枚舉 DNN 里常用模塊(如不同的卷積層、池化層和激活函數),我們組合成多個擁有不同特性的 Bundle(如不同的計算延時、硬體資源開銷和推理精度特性)。隨後,我們依據已知的硬體資源開始評估每一個 Bundle 的硬體性能,篩選掉對硬體資源需求過高的 Bundle。為了獲取 Bundle 在目標數據集的推理精度信息,我們分別堆疊每一款 Bundle,搭建其對應的簡易 DNN 並在目標數據集上作短時間訓練。這些 Bundle 中硬體性能達標且精度表現最好的會被選中,並被輸出至下一步的網路結構搜索。
在自底向上設計方案的第二步,我們會進行網路結構搜索,以生成符合延時目標、資源消耗合理且推理精度高的 DNN。由於方案的第一步已經進行了部分的搜索任務(Bundle 篩選),第二步的搜索任務將不會過於複雜。為了進一步加速網路結構搜索過程,我們還收窄了生成網路的設計空間,只保留三個設計變數。它們分別是 Bundle 堆疊的層數、降採樣次數及插入位置和通道數擴展因子。較小的設計空間有利於加快搜索演算法的收斂並可以生成結構更加規整的 DNN。這種結構規整的 DNN 也更易於在硬體資源稀缺的終端設備上部署並高效運行。而在方案的最後一步,我們為生成的 DNN 加入額外特性以更好地適應目標任務。更詳細的自底向上設計方案介紹及網路結構搜索演算法介紹可參考論文 [2] 和 [3]。
圖 5: SkyNet 網路結構
圖 6: 特徵圖重排列方案
輕量化檢測網路 SkyNet
依照自底向上的設計方案,我們設計出 SkyNet 作為參賽模型(圖 5)。在設計過程中,被選中的 Bundle 包含了 DW-CONV3x3,CONV1x1,BN 和 ReLU6 這 4 個主要元素。在網路搜索演算法堆疊 Bundle 並生成初始 DNN 後,我們對初始網路作了細微的修改,增加了一條用於傳送特徵圖的旁路(bypass,圖 5 的橙色連線)。設置旁路的原因在於,我們發現數據集里有 91% 的被測物與輸入圖片大小之比少於 9%,有 31% 的被測物與輸入圖片大小之比少於 1%(如圖 7 例子)[2]。也就是說,這項比賽任務屬於小物體檢測任務。所以,我們添加了用於傳送淺層特徵圖到深層卷積的旁路(把第三個 Bundle 的輸出直接輸入至最後一個 Bundle),減少小物體特徵在經過池化層後丟失的機會。由於旁路跨越了池化層,旁路傳輸的特徵圖與原輸入特徵圖尺寸並不相同。我們採用特徵圖重排列(reordering,圖 6)去解決這個問題:重新排列經過旁路的特徵圖,減少其寬和高的同時增加其通道數,並混合不同通道的特徵。對比使用池化層,重排列的優勢是能在匹配旁路與原輸入特徵圖尺寸的同時,不丟失特徵數據。
圖 7: 比賽需要檢測的小物體實例
SkyNet 終端部署結果
在本次比賽中,我們的 GPU(iSmart3-SkyNet)和 FPGA(iSmart3)設計均使用 SkyNet 作為主幹網路,並使用精簡過的 YOLO 後端(移除物體分類輸出,僅保留 2 個 anchors)作 Bounding box 回歸計算。在數據類型的選擇上,得益於精簡的網路設計,我們在 GPU 的部署上無需再做優化並直接使用 32 比特浮點數據作網路推理。而在 FPGA 上,我們使用 9 比特和 11 比特的定點數據類型來表示特徵圖和網路權值參數。更多有關 FPGA 上部署的設計細節可參閱我們在 DAC 2019 上發表的論文 [3]。經組委會測試,我們設計的物體檢測精度(IoU)為 0.731(GPU)和 0.716(FPGA),吞吐率為 67.33 FPS(GPU)和 25.05 FPS(FPGA)。
作為對比,我們歸納了最近兩屆比賽結果並在圖 8 列出 GPU 及 FPGA 前三名獲獎設計的推理精度與吞吐率。在使用相同硬體設備(TX2 GPU)的前提下,iSmart3-SkyNet 提交的設計相比其餘 GPU 參賽隊伍,有著大幅度吞吐率提升(比第二名提高 2.3 倍)。我們在精度及最終總得分上也超越其他對手。而在 FPGA 方面,由於本屆比賽更換了硬體平台(從 Pynq-Z1 更換成資源更豐富的 Ultra96),獲獎設計都比往屆取得更好的推理精度和吞吐率。iSmart3 提交的 FPGA 設計在精度上大幅度超越 FPGA 組的第二名設計(提高了 10.5% IoU),在吞吐率方面也達到了實時處理要求。值得一提的是,我們的設計部署在 Ultra96 FPGA 時(峰值運算性能不及 TX2 GPU 四分之一),獲得的精度和吞吐率依然非常接近本屆 GPU 組亞冠與季軍設計。更詳細的對比可參閱表 2 和 3。
圖 8: 近兩年 DAC 低功耗目標檢測系統設計挑戰賽結果對比(IoU vs. FPS)
表 2: 近兩屆比賽 GPU 前三名設計及在 TX2 上部署性能對比
表 3: 近兩屆比賽 FPGA 前三名設計及在 Pynq-Z1 (2018 年) 和 Ultra96(2019 年)上部署性能對比
相關論文整理
為了參與本次比賽,我們先後準備了三篇論文,分別敘述了自底向上 DNN 設計方法的創作動機 [1],SkyNet 的設計思路 [2] 和用於終端設備的 FPGA/DNN 協同設計策略 [3]。其中,論文 [1] 獲得了本年 ICML ODML-CDNNR 研討會的最佳海報論文獎,論文 [3] 被電子設計自動化頂會 IEEE/ACM Design Automation Conference 全文收錄並被機器之心報道 [4]。
[1] Xiaofan Zhang, Cong Hao, Yuhong Li, Yao Chen, Jinjun Xiong, Wen-mei Hwu, Deming Chen. A Bi-Directional Co-Design Approach to Enable Deep Learning on IoT Devices, ICML Workshop on ODML-CDNNR, Long Beach, CA, June 2019.
https://arxiv.org/abs/1905.08369
[2] Xiaofan Zhang, Yuhong Li, Cong Hao, Kyle Rupnow, Jinjun Xiong, Wen-mei Hwu, Deming Chen. SkyNet: A Champion Model for DAC-SDC on Low Power Object Detection, arXiv preprint: 1906.10327, June. 2019.
https://arxiv.org/abs/1906.10327
[3] Cong Hao*, Xiaofan Zhang*, Yuhong Li, Sitao Huang, Jinjun Xiong, Kyle Rupnow, Wen-mei Hwu, Deming Chen, FPGA/DNN Co-Design: An Efficient Design Methodology for IoT Intelligence on the Edge, IEEE/ACM Design Automation Conference (DAC), Las Vegas, NV, June 2019. (*equal contributors)
https://arxiv.org/abs/1904.04421
[4]《UIUC 聯合 IBM、Inspirit IoT 推出最新 DNN/FPGA 協同設計方案,助力物聯網終端設備 AI 應用》機器之心.
若需獲取更多相關資料,可登陸作者個人主頁:https://zhangxf218.wixsite.com/mysite
※關於大片人物特效少不了的人體姿態估計,這裡有一份綜述文章
※為損失函數定個框架,碼隆CVPR 2019提出圖像檢索新範式
TAG:機器之心 |