導讀 本文将分享速度與精度相容的高效目标檢測架構 DAMO-YOLO。
分享内容包括 5個部分:
1. 目标檢測簡介
2. 目标檢測現狀
3. DAMO-YOLO 技術價值
4. DAMO-YOLO 應用價值
5. DAMO-YOLO 原理簡介
分享嘉賓|許賢哲 阿裡巴巴 算法工程師
編輯整理|張少華 信雅達科技
出品社群|DataFun
01
目标檢測簡介
目标檢測的定義是在圖像/空間中定位出感興趣物體的位置和大小。
一般情況下,輸入圖像、視訊或者點雲,輸出物體的類别和檢測框坐标。左下方這張圖檔就是一個對圖像進行目标檢測的示例。目标檢測應用場景非常多,比如自動駕駛場景中車輛行人檢測,碼頭管理中常用泊船檢測。這兩者都是對目标檢測的直接應用。目标檢測同時還是很多 CV 應用的基礎任務,比如工廠用到的侵入檢測,和人臉識别,這些都需要行人檢測和人臉檢測作為基礎才能夠完成檢測任務。可以看出目标檢測在日常中有很多重要的應用,在 CV 落地中的地位也十分重要,是以這是一個競争十分激烈的領域。
目前已經有很多各有特色的目标檢測架構。根據我們在實際使用過程中的經驗積累,我們發現目前檢測架構在實際應用時仍然有以下幾個痛點:
① 模型尺度變化不夠靈活,難以适應不同的算力場景。如 YOLO 系列的檢測架構,一般隻提供 3-5 個模型的計算量,從十幾到一百多 Flops 數量級,難以覆寫不同的算力場景。
② 多尺度檢測能力弱,特别是小物體檢測性能較差,這使得模型應用場景十分受限。比如在無人機檢測場景,它們的效果往往都不太理想。
③ 速度/精度曲線不夠理想,速度和精度難以同時相容。
針對上述情況,我們設計并開源了 DAMO-YOLO。DAMO-YOLO 主要着眼于工業落地。相比于其他的目标檢測架構具有三個明顯的技術優勢:
① 整合了自研 NAS 技術,可低成本自定義模型,讓使用者充分發揮晶片算力。
② 結合 Efficient RepGFPN 以及 HeavyNeck 模型設計範式,能夠很大程度上提高模型的多尺度檢測能力,擴大模型應用範圍。
③ 提出了全尺度通用的蒸餾技術,能夠對小模型、中模型、大模型無痛地提升精度。
下面我們将從 3 個技術優勢的價值進一步分析 DAMO-YOLO。
--
02
DAMO-YOLO 技術價值
DAMO-YOLO 實作低成本模型定制化,是基于自研的 MAE-NAS 算法。可以根據延遲或者 FLOPS 預算來低成本的定制化模型。它無需模型訓練,也無需真實資料參與,即可給出模型的評估打分,模型搜尋成本低。以 FLOPS 為目标,可以充分利用晶片算力。以時延作為預算進行搜尋,則非常适用于各種對時延要求嚴格的場景。我們還提供了支援不同硬體延遲場景的資料庫建構方案,友善大家完成使用延遲作為目标進行搜尋。
由下圖展示了如何用時延進行模型搜尋。首先針對目标晶片或目标裝置采樣,得到所有可能用到的算子的時延,根據該時延資料對模型進行延遲預測。如果預測的模型量級符合預設的目标,模型會進入到後續模型更新和計算分數。最後經過疊代更新,得到符合時延限制的最優模型。
接下來介紹如何增強模型的多尺度檢測能力。DAMO-YOLO 結合提出 Efficient RepGFPN,以及創新性的 HeavyNeck,顯著提升了多尺度的檢測能力。Efficient RepGFPN 能夠高效地完成多尺度特征融合。HeavyNeck 範式,指的是将模型的 FLOPS 大量地配置設定到特征融合層。如模型 FLOPS 配比表。以 DAMO-YOLO-S 為例,neck 的計算量占到了将近整個模型的一半,這和其他的模型把計算量主要放在 backbone 有顯著的差異。
最後介紹蒸餾模型。蒸餾指将大模型的知識轉移到小模型上,在不帶來推理負擔的情況下,提升小模型的性能。模型蒸餾是一個提高檢測模型效率的利器,但是學術界和工業界探索大多局限于大模型,缺乏對小模型的蒸餾方案。DAMO-YOLO 則提供了一套對全尺度模型都通用的蒸餾。此方案不僅能夠實作全尺度模型的顯著提點,并且魯棒性高,而且使用動态權重無需調參,一鍵式腳本即可完成蒸餾。另外此方案對異構蒸餾也是魯棒的,這對于前文中提到的低成本自定義模型來說意義重大。在 NAS 模型中并不能保證搜尋得到的小模型和大模型的結構相似度。如果有一個異構魯棒的蒸餾就可以保證充分發揮 NAS 和蒸餾的優勢。下圖中給出了我們在蒸餾上的性能,可以看到無論在 T 模型、S 模型還是 M 模型上,蒸餾後都有穩定提升。
--
03
DAMO-YOLO 應用價值
基于上述技術價值,可以轉化出多少應用價值呢?下面将介紹 DAMO-YOLO 與目前其它 SOTA 檢測架構的對比。
DAMO-YOLO 與目前 SOTA 相比,同精度下模型提速 20%-40%,計算量減少15%-50%,參數減少 6%-50%,全尺度漲點明顯,适用範圍廣。此外,在小物體和大物體上都有明顯的提升。
從以上資料對比可以看出,DAMO-YOLO 速度快、Flops 低,适用範圍廣;并且可以針對算力自定義模型,提高晶片利用效率。
相關模型已經上線 ModelScope,通過三到五行代碼的配置就可以進行推理和訓練,大家可以體驗使用,使用過程中有任何問題或者意見歡迎到評論區留言。
接下來圍繞 DAMO-YOLO 的 3 點技術優勢,介紹它背後的原理,幫助大家更好地了解和使用 DAMO-YOLO。
--
04
DAMO-YOLO 原理簡介
首先介紹低成本模型定制化能力的關鍵技術 MAE-NAS。它的基本思想是把一個深度網絡看作是一個有連續狀态空間的資訊系統,并找到能夠最大化資訊系統的熵。
網絡模組化思路如下:将網絡 F 的拓撲結構抽象為圖 G=(V,E),其中頂點 V 表示特征,邊 E 表示各種算子。在此基礎上,可以用 h(v) 和 h(e) 來分别表示頂點和邊中的值,就可以産生這樣的一個集合 S,定義了網絡的連續狀态空間,而集合 S 的熵可以代表網絡或者資訊系統 F 的總資訊量。其中頂點的資訊量衡量了網絡的表達能力,而邊中的資訊量也是邊的熵,衡量了網絡的複雜度。對于 DAMO-YOLO 目标檢測任務來說,我們主要關注的是網絡的表達能力能夠最大化。在實際的應用中隻關注網絡特征的熵。根據高斯分布微分熵,以及高斯熵上界定理,我們使用特征圖的方差來近似網絡特征熵的上界。
在實際操作中,我們首先用标準的高斯分布對網絡 backbone 的權重進行初始化,同時用一個标準的高斯噪聲圖檔作為輸入。在高斯噪聲送入網絡前向傳遞後,可以得到若幹個特征。然後計算每個尺度特征的單尺度熵,即方差,随後通過權重得到多尺度熵。在權重過程中,用先驗系數來平衡不同尺度特征表達能力,此參數一般會被設定為[0,0,1,1,6]。為什麼會設定這樣,原因如下:因為在檢測模型中,一般特征都是分五個stage,即五種不同的分辨率,從 1/2 到 1/32。為了保持高效的特征利用,我們隻利用後面 3 個 stage。是以其實前兩個 stage 不參與到模型的 prediction 中,是以是 0 和 0。另外三個我們經過廣泛的實驗,發現 1,1,6 是一個較好的模型配比。
基于上述核心原理,我們可以用網絡的多尺度熵作為性能代理,以淨化算法作為基本架構進行網絡結構搜尋,這就構成了完整的 MAE-NAS。NAS 有非常多的優勢。首先它支援多種推理 budget 的限制,可以用 FLOPS,參數量,latency 還有網絡層數進行一個模型搜尋。其次,它還支援非常多的細粒度網絡結構的變異。因為這裡用進化算法去進行網絡搜尋,是以如果支援的網絡結構的變異體越多,搜尋時自定義化程度和靈活程度都會更高。另外,為了友善使用者自定義搜尋過程,我們提供了官方的教程。最後,也是最重要的一點,MAE-NAS 是 zero-short,即它的搜尋不需要任何實際的資料參與,不需要任何的實際模型訓練。它在 CPU 上進行幾十分鐘的搜尋,就可以産出在目前的限制條件下的一個最優網絡結果。
在 DAMO-YOLO 中,我們使用 MAE-NAS 以不同時延作為搜尋目标搜尋 T/S/M 模型的骨幹網絡;對搜尋出的骨幹網絡基礎結構進行包裝,小模型使用 ResStyle,大模型使用 CSPStyle。
從下表中可以看出 CSP-Darknet 是一個使用 CSP 結構的人工設計的網絡,在 YOLO v 5 /V6 中也取得了一些廣泛的應用。我們使用 MAE-NAS 産生一個基礎結構,再用 CSP 包裝之後,發現模型在速度和精度上都有明顯的提升。另外在小模型上大家可以看到 MAE-ResNet 形式,精度會更高。在大模型上使用 CPS 結構會有一個比較明顯的優勢,可以達到 48.7。
如何使用 MAE-NAS 進行 backbone 的搜尋?這裡介紹一下我們的 TinyNAS 工具箱,它已經在 ModelScope上線了,通過網頁可視化配置就可以輕松得到想要的模型。同時, MAE-NAS 也已經在 github上開源,有興趣的同學可以以開源代碼為基礎,更大自由度的搜尋想要的模型。
接下來介紹 DAMO-YOLO 如何提升多尺度檢測能力,它是依賴于網絡的不同尺度特征的融合。在以往的檢測網絡中,不同尺度的特征,深度差異較大。比如大分辨率特征用來檢測小物體,但是它的特征深度又較淺,這個時候會影響小物體檢測性能。
我們在 ICLR2022 提出的一個工作——GFPN,以相同的優先級同時處理高層語義資訊和低層空間資訊,對多尺度特征的融合互補非常友好。在 GFPN 的設計中,我們首先引入一個 skip layer,目的是為了使得 GFPN 能夠設計得更深。我們使用了一個 log2n-link 來進行特征複用,減少備援。
Queen fusion 是為了增加不同尺度特征和不同深度特征的互動融合。Queen fusion 中每一個節點除了接收它斜上方和斜下方的不同尺度特征,還接收同一特征深度上的不同尺度特征,極大的增加了特征融合時的資訊量,促進了多尺度資訊在同一深度上的融合。
盡管 GFPN 的特征複用和獨特的連接配接設計帶來了模型精度上的提升。由于我們的 skip layer 和我們的 Queen fusion 帶來了在多尺度特征節點上的融合的運算,還有上采樣下采樣的運算,極大增加了推理耗時,難以滿足工業界的實施要求。是以其實 GFPN 它是一個 FLOPS 高效,但是延遲低效的結構。針對 GFPN 的一些缺陷,我們進行分析,将原因歸結如下:
① 首先,不同尺度特征其實是共享通道數的,它存在很多的特征備援,網絡配置也不夠靈活。
② 第二,在 Queen feature 中有上采樣和下采樣連接配接,上采樣和下采樣算子耗時提升顯著。
③ 第三,在節點堆疊的時候,同特征深度上的串行連接配接降低了 GPU 的并行效率, 并且每次堆疊帶來的串行路徑的增長非常顯著。
針對這些問題,我們進行了相應的優化,提出了 Efficient RepGFPN。
在優化時,主要分為兩類,一類是拓撲結構的優化,另一類是融合方式的優化。
拓撲結構優化方面,Efficient RepGFPN 在不同尺度特征下使用不同的通道數,進而在輕量級計算量的限制下,能夠靈活地控制高層特征和低層特征的表達能力。在 FLOPS 和延遲近似的情況下,靈活的配置能夠得到最好的精度和速度效率。另外,我們還對 queen fusion 中的一個連接配接進行了效率分析,發現上采樣算子負擔極大,但是精度提升較小,遠遠低于下采樣算子的收益。于是我們移除了 queen fusion 中的上采樣連接配接。表格中可以看到,斜下的勾其實是上采樣,往斜上的勾是下采樣,可以對照左側的圖去看,小分辨率逐漸往下變大分辨率,向右下的連接配接表示的是把小分辨率特征上采樣連接配接到大分辨率上,融合到大分辨率特征上面。最後的結論就是,下采樣算子的收益更高,上采樣算子收益非常低,是以我們移除了 Queen feature 中的上采樣連接配接,來提高整個 GFPN 的效率。
在融合方式方面,我們也進行了一些優化。首先固定融合節點的數目,這樣每個模型裡面隻做兩次融合,而不會像之前一樣通過不斷地堆疊融合來打造一個更深的 GFPN,這樣避免了串行鍊路的不斷增長導緻的并行效率降低。另外我們專門設計了 fusion block 來進行特征融合。fusion block 中我們引入重參數化機制和多層聚合連接配接等技術,進一步提升融合效果。
除了 Neck 以外,檢測頭 Head 也是檢測模型的一個重要組成部分。它以 Neck 輸出的特征作為輸入,負責輸出回歸和分類的結果。我們設計實驗驗證了 Efficient RepGFPN 與 Head 之間的 trade off,發現在嚴格控制模型 latency 的情況下,Efficient RepGFPN 的深度越深越好。于是在網絡設計中将計算量主要配置設定給 Efficient RepGFPN,而 Head 部分隻保留一層用來進行分類和回歸任務的線性投影。我們把隻有一層分類和回歸一層非線性映射層的 Head,稱為 ZeroHead。而将這種計算量主要配置設定給 Neck 的一個設計模式稱為 HeavyNeck 範式。
最終 DAMO-YOLO 的模型結構如下圖所示。
以上就是模型設計中的一些思考。最後來介紹一下蒸餾方案。
DAMO-YOLO 中取 Efficient RepGFPN 的輸出特征進行蒸餾。student 特征會先經過alignmodule,把它的通道數向 teacher 對齊。為了去除模型本身的偏置,student 和 teacher 的特征會經過無偏的 BN 進行歸一化,再進行蒸餾 loss 計算。在蒸餾時,我們觀察到過大的 loss 會阻礙 student 本身分類分支的收斂。于是我們選擇使用一個随着訓練不斷衰減的動态權重。從實驗結果中看,動态均蒸餾權重對于 T/S/M 模型都是魯棒的。
DAMO-YOLO 的蒸餾鍊條是,L 蒸餾 M,M 蒸餾 S。其中值得一提的是 M 蒸餾 S 時,M 使用的是 CSP 包裝,而 S 使用的是 Res 包裝,從結構上講 M 和 S 是異構的。但是在使用 DAMO-YOLO 的蒸餾方案,M 蒸餾 S,蒸餾後也能有 1.2 個點的提升,表明我們的蒸餾方案對異構也是魯棒的。是以總結來說,DAMO-YOLO 的蒸餾方案調參 free ,支援全系列模型,并且異構魯棒。
最後我們再對 DAMO-YOLO 進行一下總結。DAMO-YOLO 結合 MAE-NAS 技術,能夠進行低成本的模型自定義,充分發揮晶片算力;結合 Efficient RepGFPN 以及 HeavyNeck 範式,提升了多尺度檢測能力,模型應用範圍廣泛;借助全尺度蒸餾方案,可以進一步提升模型效率。
DAMO-YOLO 模型已在 ModelScope 上線,并在 github 開源,歡迎大家試用。
--
05
DAMO-YOLO發展計劃
DAMO-YOLO 剛釋出不久,還有許多需要完善和優化的地方。我們計劃在短期内進行部署工具的完善和 ModelScope 的支援。另外還會基于組内的競賽冠軍方案提供更多的應用範例,比如無人機小目标檢測以及旋轉目标檢測等。還計劃推出更多的範例模型,包括面向端上的 Nano 模型和雲上的 Large 模型。最後,希望大家保持關注,積極回報。
今天的分享就到這裡,謝謝大家。
▌2023資料智能創新與實踐大會
- 4大體系,專業解構資料智能
- 16個主題論壇,覆寫當下熱點與趨勢
- 70+演講,兼具創新與最佳實踐
- 1000+專業觀衆,内行人的技術盛會
第四屆DataFunCon資料智能創新與實踐大會将于⏰ 7月21-22日在北京召開,會議主題為新基建·新征程,聚焦資料智能四大體系:資料架構、資料效能、算法創新、智能應用。在這裡,你将領略到資料智能技術實踐最前沿的景觀。
歡迎大家點選下方連結擷取大會門票~
DataFunCon2023(北京站):資料智能創新與實踐大會 �-�百格活動