【深度学习】最先进的图像分类算法:FixEfficientNet-L2
FixEfficientNet 是一種結合了兩種現有技術的技術:來自 Facebook AI 團隊的 FixRes [2]?以及由 Google AI 研究團隊首先提出的EfficientNet [3]。FixRes 是 Fix Resolution 的縮寫形式,它嘗試為用于訓練時間的 RoC(分類區域)或用于測試時間的裁剪保持固定大小。EfficientNet 是 CNN 尺度的復合縮放,可提高準確性和效率。本文旨在解釋這兩種技術及其最新技術。
首先,Facebook AI 研究團隊于 2020 年 4 月 20 日將 FixEfficientNet 與相應的論文一起展示 [1],并連續成為計算機視覺領域的一項任務。它是目前最先進的,在 ImageNet 數據集上有最好的結果,參數為 480M,top-1 準確率為 88.5%,top-5 準確率為 98.7%。
讓我們更深入地研究一下,以更好地了解組合技術。
了解 FixRes
訓練時間
在 Facebook AI 研究團隊提出 FixRes 技術之前,最先進的技術是從圖像中提取一個隨機的像素方塊。這被用作訓練時間的 RoC 。(請注意,使用此技術會人為地增加數據量)。然后調整圖像大小以獲得固定大小(=裁剪)的圖像。然后將其輸入卷積神經網絡 [2]。
RoC = 輸入圖像中的矩形/正方形
crop = 通過雙線性插值重新縮放到特定分辨率的 RoC 像素
訓練時間規模擴大
為了更好地了解 FixRes 的具體功能,讓我們看一下數學。更改輸入圖像中 RoC 的大小會影響給定 CNN 的對象大小的分布。該對象在輸入圖像中的大小為 rxr 。如果 RoC 現在被縮放,它會改變 s 并且對象的大小現在將連續變為 rs x rs 。
對于增強,使用了 PyTorch 的 RandomResizedCrop。輸入圖像的大小為H x W,從中隨機選擇一個 RoC,然后將此 RoC 調整為裁剪大小。
輸入圖像 ( H x W ) 對輸出裁剪的縮放比例可以由以下因素表示:
測試時間
在測試時,RoC 通常位于圖像的中心,這會導致所謂的中心裁剪。兩種裁剪(一種來自訓練時間,另一種來自測試時間)具有相同的大小,但它們來自圖像的不同部分,這通常會導致 CNN 的分布存在偏差?[2]?。
測試時間規模增加。
如前所述,測試增強與訓練時間增強不同。這樣,裁剪就有了大小。
關于輸入圖像是正方形 ( H=W ) 的假設,測試增強的比例因子可以表示為:
有什么發現?
在開發 FixRes 之前,測試和訓練時間的預處理是彼此分開的,從而導致偏差。Facebook AI 團隊不斷嘗試找到一種解決方案,該解決方案同時執行預處理并以某種方式同步,那就是 FixRes?。
如上所述的標準預處理通常會在訓練時擴大 RoC,并在測試時減小 RoC 的大小。
FixRes 技術采用非此即彼的方法。它要么降低訓練時間分辨率并保持測試裁剪的大小,要么增加測試時間分辨率并保持訓練裁剪的大小。目的是檢索相同大小的對象(此處是烏鴉),以減少 CNN 中的尺度不變性 [2]?。如下所示:
這會對數據輸入 CNN 的方式產生兩種影響:
圖像中對象(此處是烏鴉)的大小通過 FixRes Scaling 進行更改。
使用不同的裁剪大小會影響神經元的激活方式和時間。
激活統計數據變化問題
Touvron 等人發現,更大的測試裁剪以及最重要的是對象尺寸的調整可以帶來更好的準確性。然而,這需要在調整對象大小和更改激活統計數據之間進行權衡。
測試表明,激活圖隨著圖像分辨率的變化而變化。K_test = 224 表示映射為 7x7,K_test = 64 表示映射為 2x2,而 K_test = 448 表示映射為 14x14。這表明激活分布在測試時會發生變化,并且這些值超出了分類器范圍 [1]。
為了解決激活統計數據變化的問題,提出了兩種解決方案:
參數適應:參數 Fréchet 分布用于擬合平均池化層。然后通過標量變換將新分布映射到舊分布,并作為激活函數應用。
微調:進行校正的另一種方法是對模型進行微調,微調僅應用于 CNN 的最后一層。
在微調階段,使用標簽平滑[1]。
EfficientNet?架構 [3]
作者預先訓練了幾個模型,其中 EfficientNet-L2 顯示了最佳結果。但什么是 EfficientNet ?
與圖像分類中的大多數算法一樣,高效網絡基于 CNN。CNN 具有三個維度:寬度、深度和分辨率。深度是層數,寬度是通道數(例如,傳統的 RGB 將有 3 個通道),分辨率是圖像的像素。
EfficientNets 引入了復合縮放,它利用了所有三個維度:
寬度縮放——寬度可以通過具有更多通道的圖像來增加,但是準確度增益很快就會下降。
深度縮放——是傳統且最典型的縮放方式。通過增加深度,可以增加神經網絡的層數。但是添加更多層并不總是能提高網絡的性能。大多數情況下它需要更多的時間,但由于梯度消失,性能可能會隨著層數的增加而停滯甚至下降。
分辨率縮放——這意味著增加分辨率,從而增加像素數,例如從 200x200 到 600x600。這種縮放的問題在于精度增益隨著分辨率的提高而消失。在一定程度上,精度可能會增加,但精度增量會減少。
所有三個維度的放大都會導致精度增量減小,并且為了獲得最佳精度結果,必須對所有這三個維度進行平衡縮放。因此提出了復合縮放:
? 指定可用資源,而 alpha、beta 和 gamma 負責分配這些資源。
Touvron?等人[1] ,?“ 使用神經架構搜索來開發新的基準網絡,并對其放大以獲得稱為 EfficientNets 的一系列模型。”?神經架構搜索 (NAS) 優化了觸發器和準確性。
結論
這兩種技術的結合使得目前最好的圖像分類算法遠遠領先于 EfficientNet Noisy Student,它在效率和準確性方面都是當前領先的算法。由于其前五名的準確度為 98.7%,因此仍有改進的可能,但它已經相當準確了。因此,要等到這項技術被一種新技術所取代,還需要等待。
由于本文不包含任何實現,小伙伴們可以使用作者的官方 Github 自行嘗試。
作者 [1] 的預訓練網絡如下所示:
github 存儲庫的屏幕截圖。
參考資料
[1] Touvron, H.、Vedaldi, A.、Douze, M. 和 Jégou, H. (2020b)。修復訓練測試分辨率差異:FixEfficientNet。ArXiv:2003.08237 [Cs]。http://arxiv.org/abs/2003.08237
[2] Touvron, H.、Vedaldi, A.、Douze, M. 和 Jégou, H.(2020a)。修復訓練測試分辨率差異。ArXiv:1906.06423 [Cs]。http://arxiv.org/abs/1906.06423
[3] Tan, M., & Le, QV (2020)。EfficientNet:對卷積神經網絡的模型放縮重新思考。ArXiv:1905.11946 [Cs,Stat]。http://arxiv.org/abs/1905.11946
Github代碼連接:
http :?//github.com/facebookresearch/FixRes。
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載黃海廣老師《機器學習課程》視頻課黃海廣老師《機器學習課程》711頁完整版課件本站qq群955171419,加入微信群請掃碼:
總結
以上是生活随笔為你收集整理的【深度学习】最先进的图像分类算法:FixEfficientNet-L2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习】一文读懂异常检测 LOF 算
- 下一篇: 【深度学习】在PyTorch中使用 LS