日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

EfficientDet解读

發(fā)布時間:2024/4/11 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EfficientDet解读 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介

這篇發(fā)表于 CVPR2020 的檢測論文不同于大火的 anchor-free,還是基于 one-stage 的范式做的設(shè)計,是 ICML2019 的 EfficientNet 的拓展,將分類模型引入到了目標(biāo)檢測任務(wù)中。近些年目標(biāo)檢測發(fā)展迅猛,精度提升的同時也使得模型越來越大、算力需求越來越高,這制約了算法的落地。近些年出現(xiàn)了很多高效的目標(biāo)檢測思路,如 one-stage、anchor-free 以及模型壓縮策略,它們基本上都是以犧牲精度為代價獲得效率的。EfficientDet 直指當(dāng)前目標(biāo)檢測的痛點(diǎn):有沒有可能在大量的資源約束前提下,實現(xiàn)高效且高精度的目標(biāo)檢測框架?這就是 EfficientDet 的由來。

  • 論文標(biāo)題

    EfficientDet: Scalable and Efficient Object Detection

  • 論文地址

    http://arxiv.org/abs/1911.09070

  • 論文源碼

    https://github.com/google/automl/tree/master/efficientdet

介紹

之前提到,EfficientDet 是 EfficientNet 的拓展,我們首先來簡單聊一聊 EfficientNet,感興趣的請閱讀原文。在 EfficientNet 中提到了一個很重要的概念 Compound Scaling(符合縮放),這是基于一個公認(rèn)的事實:調(diào)整模型的深度、寬度以及輸入的分辨率在一定范圍內(nèi)會對模型性能有影響,但是過大的深度、寬度和分辨率對性能改善不大還會嚴(yán)重影響模型前向效率,所以 EfficientNet 提出復(fù)合系數(shù)?\phi?統(tǒng)一縮放網(wǎng)絡(luò)的寬度、深度和分辨率,具體如下。

這里的α,β,γ\alpha, \beta, \gammaα,β,γ都是由一個很小范圍的網(wǎng)絡(luò)搜索得到的常量,直觀上來講,?\phi?是一個特定的系數(shù),可以用來控制資源的使用量,α,β,γ\alpha, \beta, \gammaα,β,γ決定了具體是如何分配資源的。值得注意的是,常規(guī)卷積操作的計算量是和d,w2,r2d, w^{2}, r^{2}d,w2,r2成正比的,加倍深度會使得 FLOPS 加倍,但是加倍寬度和分辨率會使得 FLOPS 加 4 倍。由于卷積 ops 經(jīng)常在 CNN 中占據(jù)了大部分計算量,使用等式上式縮放卷積網(wǎng)絡(luò)將會使得整體計算量近似增加(α?β2?γ2)?\left(\alpha \cdot \beta^{2} \cdot \gamma^{2}\right)^{\phi}(α?β2?γ2)?倍。由于 EfficientNet 對任意?\phi?增加了約束α?β2?γ2≈2\alpha \cdot \beta^{2} \cdot \gamma^{2} \approx 2α?β2?γ22,整體的計算量近似增加了2?2^{\phi}2?倍。

對比 EfficientNet 從 B0 到 B7 的提升,不難知道,這種復(fù)合縮放可以較大的提升模型性能,所以 EfficientDet 也將其引入了進(jìn)來。

論文首先分析了目前 OD(object detection,目標(biāo)檢測)的兩個挑戰(zhàn):高效多尺度特征融合模型縮放

多尺度特征融合:FPN 如今被廣泛用于多尺度特征融合,最近 PANet、NAS-FPN 等方法研究了更多跨尺度特征融合的結(jié)構(gòu)。不過,這些方法融合不同尺度特征的方式都是簡單加和,這默認(rèn)了不同尺度特征的貢獻(xiàn)是同等的,然而往往不是這樣的。為了解決這個問題,論文提出了一種簡單但是高效的加權(quán)雙向特征金字塔網(wǎng)絡(luò)(BiFPN),它對不同的輸入特征學(xué)習(xí)權(quán)重。

模型縮放:之前的方法依賴于更大的 backbone 或者更大分辨率的輸入,論文發(fā)現(xiàn)放大特征網(wǎng)絡(luò)和預(yù)測網(wǎng)絡(luò)對精度和速度的考量是很重要的。基于 EfficientNet 的基礎(chǔ),論文為目標(biāo)檢測設(shè)計了一種復(fù)合縮放(Compound Scaling)方法,聯(lián)合調(diào)整 backbone、特征網(wǎng)絡(luò)、預(yù)測網(wǎng)絡(luò)的深度、寬度和分辨率。

和 EfficientNet 一樣,EfficientDet 指的是一系列網(wǎng)絡(luò),如下圖包含 D1 到 D7,速度逐漸變慢,精度逐漸提升。在理解 EfficientDet 兩個核心工作(BiFPNCompound Scaling)之前,可以先看看下圖的 SOTA 方法比較,可以看到 EfficientDet-D7 的效果非常驚人,在 FLOPs 僅為 AmoebaNet+NAS-FPN+AA 的十分之一的前提下,COCO2017 驗證集上的 AP 到達(dá)了 55.1,超越了 SOTA5 個點(diǎn)。而且單尺度訓(xùn)練的 EfficientD7 現(xiàn)在依然霸榜 PaperWithCode 上。

此外,查看官方倉庫提供的模型,其參數(shù)量其實是不大的(當(dāng)然,這不絕對意味著計算量小)。

BiFPN

CVPR2017 的 FPN 指出了不同層之間特征融合的重要性如下圖 a,不過它采用的是自上而下的特征圖融合,融合方式也是很簡單的高層特征加倍后和低層特征相加的方式。此后,下圖 b 所示的 PANet 在 FPN 的基礎(chǔ)上又添加了自下而上的信息流。再后來出現(xiàn)了不少其他的融合方式,直到 NAS-FPN 采用了 NAS 策略搜索最佳 FPN 結(jié)構(gòu),得到的是下圖 c 的版本,不過 NAS-FPN 雖然簡單高效,但是精度和 PANet 還是有所差距的,并且 NAS-FPN 這種結(jié)構(gòu)是很怪異的,難以理解的。所以,EfficientDet 在 PANet 的基礎(chǔ)上進(jìn)行了優(yōu)化如下圖的 d:移除只有一個輸入的節(jié)點(diǎn);同一個 level 的輸入和輸出節(jié)點(diǎn)進(jìn)行連接,類似 skip connection;PANet 這種一次自上而下再自下而上的特征融合可以作為一個單元重復(fù)多次從而獲得更加豐富的特征,不過重復(fù)多少次是速度和精度的權(quán)衡選擇,這在后面的復(fù)合 22 縮放部分講到。

上述是 FPN 特征流動的結(jié)構(gòu),如何數(shù)學(xué)上組合這些特征也是一個重要的方面。此前的方法都是上一層特征 resize 之后和當(dāng)前層特征相加。這種方式存在諸多不合理之處,因為這樣其實默認(rèn)融合的兩層特征是同權(quán)重的,事實上不同尺度的特征對輸出特征的貢獻(xiàn)是不平等的,應(yīng)當(dāng)對每個輸入特征加權(quán),這個權(quán)重需要網(wǎng)絡(luò)自己學(xué)習(xí)。當(dāng)然,學(xué)習(xí)到的權(quán)重需要?dú)w一化到和為 1,采用 softmax 是一個選擇,但是 softmax 指數(shù)運(yùn)算開銷大,所以作者這里簡化為快速標(biāo)準(zhǔn)化融合的方式(Fast normalized fusion),它的計算方法如下,其實就是去掉了 softmax 的指數(shù)運(yùn)算,這種方式在 GPU 上快了很多,精度略微下降,可以接受。

O=∑iwi?+∑jwj?IiO=\sum_{i} \frac{w_{i}}{\epsilon+\sum_{j} w_{j}} \cdot I_{i} O=i??+j?wj?wi???Ii?

Compound Scaling

在看復(fù)合縮放之前,我們先要知道,有了 BiFPN 又有了 EfficientNet 再加上 head 部分,其實網(wǎng)絡(luò)框架已經(jīng)確定了,如下圖所示,左邊是 backbone(EfficientDet),中間是多層 BiFPN,右邊是 prediction head 部分。

結(jié)合 EfficientNet 的聯(lián)合調(diào)整策略,論文提出目標(biāo)檢測的聯(lián)合調(diào)整策略,用復(fù)合系數(shù)?\phi?統(tǒng)一調(diào)整.調(diào)整的內(nèi)容包括 backbone(EfficientNet 版本,B0 到 B6)、neck 部分的 BiFPN(通道數(shù)、layer 數(shù))以及 head 部分(包括層數(shù))還要輸入圖像分辨率。不過,和 EfficientNet 不同,由于參數(shù)太多采用網(wǎng)格搜索計算量很大,論文采用啟發(fā)式的調(diào)整策略。其中 backbone 的選擇系數(shù)控制,BiFPN 的配置用下面第一個式子計算,head 的層數(shù)和輸入分辨率是下面 2、3 式的計算方式。

Wbifpn=64?(1.35?),Dbifpn=3+?W_{b i f p n}=64 \cdot\left(1.35^{\phi}\right), \quad D_{b i f p n}=3+\phi Wbifpn?=64?(1.35?),Dbifpn?=3+?

Dbox=Dclass=3+??/3?D_{b o x}=D_{c l a s s}=3+\lfloor\phi / 3\rfloor Dbox?=Dclass?=3+??/3?

Rinput=512+??128R_{\text {input}}=512+\phi \cdot 128 Rinput?=512+??128

最后得到的 8 種結(jié)構(gòu)的配置表如下圖。

實驗結(jié)果

在簡介里我已經(jīng)提到很多這個檢測框架的過人之處了,這里就簡單看一下在 COCO 驗證集的效果,可以說無論是速度還是精度都是吊打其他 SOTA 方法的,至今依然在 COCO 驗證集榜首的位置。

此外作者也將其拓展到語義分割,潛力也是比較大的。還做了不少消融實驗,感興趣的可以自行查看論文原文。

總結(jié)

本文最大的亮點(diǎn)在于提出了目標(biāo)檢測網(wǎng)絡(luò)聯(lián)合調(diào)整復(fù)雜度的策略,從而刷新了 SOTA 結(jié)果。這個思路來自 EfficientDet,同樣 backbone 的高效也源自該網(wǎng)絡(luò)。文中另一個突出的成果在于設(shè)計了 BiFPN 以及堆疊它,可以看到效果還是很顯著的。此外,除了官方的 TF 實現(xiàn)外,這里也推薦一個目前公認(rèn)最好的 PyTorch 實現(xiàn)(由國內(nèi)大佬完成),Github 地址給出,這也是唯一一個達(dá)到論文效果的 PyTorch 復(fù)現(xiàn)(作者復(fù)現(xiàn)時官方還沒有開源)。

總結(jié)

以上是生活随笔為你收集整理的EfficientDet解读的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。