首頁  >  文章  >  科技週邊  >  DAMO-YOLO:兼顧速度與精確度的高效目標偵測框架

DAMO-YOLO:兼顧速度與精確度的高效目標偵測框架

WBOY
WBOY轉載
2023-04-28 16:43:061618瀏覽

DAMO-YOLO:兼顧速度與精確度的高效目標偵測框架

一、目標偵測簡介

#目標偵測的定義是在影像/空間中定位出感興趣物體的位置和大小。

一般情況下,輸入影像、影片或點雲,輸出物件的類別和偵測框座標。左下方這張圖片就是一個對影像進行目標偵測的範例。目標偵測應用場景非常多,例如自動駕駛場景中車輛行人偵測,碼頭管理常用泊船偵測。這兩者都是對目標偵測的直接應用。目標偵測同時還是許多 CV 應用的基礎任務,例如工廠用到的侵入偵測,和人臉識別,這些都需要行人偵測和人臉偵測作為基礎才能夠完成偵測任務。可以看出目標偵測在日常中有很多重要的應用,在 CV 落地中的地位也十分重要,因此這是一個競爭十分激烈的領域。

DAMO-YOLO:兼顧速度與精確度的高效目標偵測框架

#目前已經有許多各有特色的目標偵測框架。根據我們在實際使用過程中的經驗積累,我們發現當前檢測框架在實際應用時仍然有以下幾個痛點:

① 模型尺度變化不夠靈活,難以適應不同的算力場景。如 YOLO 系列的偵測框架,一般只提供 3-5 個模型的計算量,從十幾到一百多 Flops 數量級,難以涵蓋不同的算力場景。

② 多尺度偵測能力弱,特別是小物體偵測效能較差,使得模型應用場景十分受限。例如在無人機偵測場景,它們的效果往往都不太理想。

③ 速度/精確度曲線不夠理想,速度和精確度難以同時相容。

針對上述情況,我們設計並開源了 DAMO-YOLO。 DAMO-YOLO 主要著重於工業落地。相較於其他的目標偵測框架有三個明顯的技術優勢:

① 整合了自研NAS 技術,可低成本自訂模型,讓使用者充分發揮晶片算力。

② 結合 Efficient RepGFPN 以及 HeavyNeck 模型設計範式,能夠大幅提升模型的多尺度偵測能力,並擴大模型應用範圍。

③ 提出了全尺度通用的蒸餾技術,能夠對小模型、中模型、大模型無痛地提升精度。

DAMO-YOLO:兼顧速度與精確度的高效目標偵測框架

#下面我們將從 3 個技術優勢的價值進一步分析 DAMO-YOLO。

二、DAMO-YOLO 技術價值

#DAMO-YOLO 實作低成本模型客製化,是基於自研的MAE-NAS 演算法。可以根據延遲或 FLOPS 預算來低成本的客製化模型。它無需模型訓練,也無需真實資料參與,即可給出模型的評估評分,模型搜尋成本低。以 FLOPS 為目標,可充分利用晶片算力。以時延作為預算進行搜索,則非常適用於各種對時延要求嚴格的場景。我們也提供了支援不同硬體延遲場景的資料庫建置方案,方便大家完成使用延遲作為目標進行搜尋。

#

由下图展示了如何用时延进行模型搜索。首先针对目标芯片或目标设备采样,得到所有可能用到的算子的时延,根据该时延数据对模型进行延迟预测。如果预测的模型量级符合预设的目标,模型会进入到后续模型更新和计算分数。最后经过迭代更新,得到符合时延约束的最优模型。

DAMO-YOLO:兼顧速度與精確度的高效目標偵測框架

接下来介绍如何增强模型的多尺度检测能力。DAMO-YOLO 结合提出 Efficient RepGFPN,以及创新性的 HeavyNeck,显著提升了多尺度的检测能力。Efficient RepGFPN 能够高效地完成多尺度特征融合。HeavyNeck 范式,指的是将模型的 FLOPS 大量地分配到特征融合层。如模型 FLOPS 配比表。以 DAMO-YOLO-S 为例,neck 的计算量占到了将近整个模型的一半,这和其他的模型把计算量主要放在 backbone 有显著的差异。

DAMO-YOLO:兼顧速度與精確度的高效目標偵測框架

最后介绍蒸馏模型。蒸馏指将大模型的知识转移到小模型上,在不带来推理负担的情况下,提升小模型的性能。模型蒸馏是一个提高检测模型效率的利器,但是学术界和工业界探索大多局限于大模型,缺乏对小模型的蒸馏方案。DAMO-YOLO 则提供了一套对全尺度模型都通用的蒸馏。此方案不仅能够实现全尺度模型的显著提点,并且鲁棒性高,而且使用动态权重无需调参,一键式脚本即可完成蒸馏。另外此方案对异构蒸馏也是鲁棒的,这对于前文中提到的低成本自定义模型来说意义重大。在 NAS 模型中并不能保证搜索得到的小模型和大模型的结构相似度。如果有一个异构鲁棒的蒸馏就可以保证充分发挥 NAS 和蒸馏的优势。下图中给出了我们在蒸馏上的性能,可以看到无论在 T 模型、S 模型还是 M 模型上,蒸馏后都有稳定提升。

DAMO-YOLO:兼顧速度與精確度的高效目標偵測框架

三、DAMO-YOLO 应用价值

基于上述技术价值,可以转化出多少应用价值呢?下面将介绍 DAMO-YOLO 与当前其它 SOTA 检测框架的对比。

DAMO-YOLO 与当前 SOTA 相比,同精度下模型提速 20%-40%,计算量减少15%-50%,参数减少 6%-50%,全尺度涨点明显,适用范围广。此外,在小物体和大物体上都有明显的提升。

从以上数据对比可以看出,DAMO-YOLO 速度快、Flops 低,适用范围广;并且可以针对算力自定义模型,提高芯片利用效率。

相关模型已经上线 ModelScope,通过三到五行代码的配置就可以进行推理和训练,大家可以体验使用,使用过程中有任何问题或者意见欢迎到评论区留言。

DAMO-YOLO:兼顧速度與精確度的高效目標偵測框架

接下来围绕 DAMO-YOLO 的 3 点技术优势,介绍它背后的原理,帮助大家更好地理解和使用 DAMO-YOLO。

四、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 是較好的模型配比。

DAMO-YOLO:兼顧速度與精確度的高效目標偵測框架

#基於上述核心原理,我們可以用網路的多尺度熵作為效能代理,以淨化演算法作為基本框架進行網路結構搜索,這就構成了完整的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。

DAMO-YOLO:兼顧速度與精確度的高效目標偵測框架

#如何使用 MAE-NAS 進行 backbone 的搜尋?這裡介紹一下我們的 TinyNAS 工具箱,它已經在 ModelScope上線了,透過網頁視覺化設定就可以輕鬆得到想要的模型。同時, MAE-NAS 也已經在 github上開源,有興趣的同學可以以開源程式碼為基礎,更大自由度的搜尋想要的模型。

DAMO-YOLO:兼顧速度與精確度的高效目標偵測框架

#

接下來介紹 DAMO-YOLO 如何提升多尺度偵測能力,它是依賴網路的不同尺度特徵的融合。在以往的檢測網絡中,不同尺度的特徵,深度差異較大。例如大解析度特徵用來偵測小物體,但是它的特徵深度又較淺,這個時候會影響小物體偵測性能。

我們在 ICLR2022 提出的一個工作-GFPN,以相同的優先權同時處理高層語意資訊和低層空間訊息,對多尺度特徵的融合互補非常友善。在 GFPN 的設計中,我們首先引入一個 skip layer,目的是為了讓 GFPN 能夠設計得更深。我們使用了一個 log2n-link 來進行特徵重複使用,減少冗餘。

Queen fusion 是為了增加不同尺度特徵和不同深度特徵的交互融合。 Queen fusion 中每一個節點除了接收它斜上方和斜下方的不同尺度特徵,還接收同一特徵深度上的不同尺度特徵,極大的增加了特徵融合時的信息量,促進了多尺度信息在同一深度上的融合。

DAMO-YOLO:兼顧速度與精確度的高效目標偵測框架

儘管 GFPN 的特徵重複使用和獨特的連接設計帶來了模型精度上的提升。由於我們的 skip layer 和我們的 Queen fusion 帶來了在多尺度特徵節點上的融合的運算,還有上採樣下採樣的運算,極大增加了推理耗時,難以滿足工業界的實施要求。所以其實 GFPN 它是一個 FLOPS 高效,但是延遲低效的結構。針對GFPN 的一些缺陷,我們進行分析,將原因歸結如下:

#① 首先,不同尺度特徵其實是共享通道數的,它存在很多的特徵冗餘,網路配置也不夠靈活。

② 第二,在 Queen feature 中有上取樣和下取樣連接,上取樣和下取樣算子耗時提升顯著。

③ 第三,在節點堆疊的時候,同特徵深度上的串行連接降低了GPU 的平行效率, 並且每次堆疊帶來的串行路徑的成長非常顯著。

針對這些問題,我們進行了對應的最佳化,提出了 Efficient RepGFPN。

DAMO-YOLO:兼顧速度與精確度的高效目標偵測框架

#在最佳化時,主要分為兩類,一類是拓樸結構的最佳化,另一類是融合方式的最佳化。

拓樸結構最佳化方面,Efficient RepGFPN 在不同尺度特徵下使用不同的通道數,從而在輕量級運算量的限制下,能夠靈活地控制高層特徵和低層特徵的表達能力。在 FLOPS 和延遲近似的情況下,靈活的配置能夠得到最好的精度和速度效率。另外,我們也對 queen fusion 中的一個連接進行了效率分析,發現上採樣算子負擔極大,但是精度提升較小,遠低於下採樣算子的收益。於是我們移除了 queen fusion 中的上採樣連接。表格中可以看到,斜下的勾其實是上採樣,往斜上的勾是下採樣,可以對照左側的圖去看,小分辨率逐漸往下變大分辨率,向右下的連接表示的是把小解析度特徵上取樣連接到大解析度上,融合到大解析度特徵上面。最後的結論是,下採樣算子的收益更高,上採樣算子收益非常低,所以我們移除了 Queen feature 中的上採樣連接,來提高整個 GFPN 的效率。

DAMO-YOLO:兼顧速度與精確度的高效目標偵測框架

在融合方式方面,我們也做了一些最佳化。首先固定融合節點的數目,這樣每個模型裡面只做兩次融合,而不會像之前一樣透過不斷地堆疊融合來打造一個更深的GFPN,這樣避免了串行鏈路的不斷增長導致的並行效率降低。另外我們特別設計了 fusion block 來進行特徵融合。 fusion block 中我們引入重參數化機制與多層聚合連接等技術,進一步提升融合效果。

DAMO-YOLO:兼顧速度與精確度的高效目標偵測框架

#除了 Neck 以外,偵測頭 Head 也是偵測模型的一個重要組成部分。它以 Neck 輸出的特徵作為輸入,負責輸出迴歸和分類的結果。我們設計實驗驗證了 Efficient RepGFPN 與 Head 之間的 trade off,發現在嚴格控制模型 latency 的情況下,Efficient RepGFPN 的深度越深越好。於是在網路設計中將計算量主要分配給 Efficient RepGFPN,而 Head 部分只保留一層用來進行分類和回歸任務的線性投影。我們把只有一層分類和回歸一層非線性映射層的 Head,稱為 ZeroHead。而將此計算量主要分配給 Neck 的一個設計模式稱為 HeavyNeck 範式。

最終 DAMO-YOLO 的模型結構如下圖所示。

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 進行總結。 DAMO-YOLO 結合MAE-NAS 技術,能夠進行低成本的模型自定義,充分發揮晶片算力;結合Efficient RepGFPN 以及HeavyNeck 範式,提升了多尺度檢測能力,模型應用範圍廣泛;借助全尺度蒸餾方案,可以進一步提升模型效率。

DAMO-YOLO:兼顧速度與精確度的高效目標偵測框架

DAMO-YOLO 模型已在 ModelScope 上線,並在 github 開源,歡迎大家試用。

五、DAMO-YOLO發展計劃

#DAMO-YOLO 剛發布不久,還有許多需要完善和優化的地方。我們計劃在短期內進行部署工具的完善和 ModelScope 的支援。另外也會基於組內的競賽冠軍方案提供更多的應用範例,例如無人機小目標偵測以及旋轉目標偵測等。也計劃推出更多的範例模型,包括面向端上的 Nano 模型和雲端上的 Large 模型。最後,希望大家保持關注,正面回饋。

#

DAMO-YOLO:兼顧速度與精確度的高效目標偵測框架

##

以上是DAMO-YOLO:兼顧速度與精確度的高效目標偵測框架的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除