NeurIPS 2020 | Glance and Focus: 通用、高效的神经网络自适应推理框架
文 | rainforest wang
源 | 知乎
本文主要介紹我們被NeurIPS 2020會議錄用的一篇文章:
Glance and Focus: a Dynamic Approach to Reducing Spatial Redundancy in Image Classi?cation
代碼和預訓練模型已經在Github上面放出:
https://link.zhihu.com/?target=https%3A//github.com/blackfeather-wang/GFNet-Pytorch
這項工作提出了一個通用于絕大多數CNN的自適應推理框架,其效果比較明顯,在同等精度的條件下,將MobileNetV3的平均推理速度加快了30%,將ResNet/DenseNet加速了3倍以上,且在iPhone XS Max上的實際測速和理論結果高度吻合。此外,它的計算開銷可以簡單地動態在線調整,無需額外訓練。
(太長不看版)下面一張圖可以概括我們做的事情:將圖像識別建模為序列決策過程,先將縮略圖輸入神經網絡(Glance),再不斷選擇最關鍵的圖像區域進行處理(Focus,利用強化學習實現),直至網絡產生一個足夠可信的預測結果時停止;對于簡單和困難的樣本分配不同的計算資源,以提升整體效率。
圖1 Glance and Focus Network \(GFNet\) 效果圖
下面,我將詳細介紹這一工作的具體內容。
Introduction
在基于卷積神經網絡(CNN)的圖像任務中,提升網絡效果的一個有效方法是使用高分辨率的輸入,例如,在ImageNet分類[1]任務上,近年來的最新網絡(DenseNet[2], SENet[3], EfficientNet[4])往往需要使用224x224或更大的輸入圖片以取得最佳性能:
| DenseNet-265 | 224x224 | 77.85 % |
| SENet-154 | 320x320 | 82.72 % |
| EfficientNet-B7 | 600x600 | 84.40 % |
然而,這種方式會帶來較大的計算開銷,因為推理CNN所需的計算量(FLOPs)基本與像素數目成正比[5],即與圖形的長、寬成二次關系,如下圖所示:
圖2 CNN計算量與圖片長/寬的關系
在實際應用(例如手機APP、自動駕駛系統、圖片搜索引擎)中,計算量往往正比于能耗或者時間開銷,顯然,無論出于成本因素還是從安全性和用戶體驗的角度考慮,網絡的計算開銷都應當盡可能小。那么,如何在保留高分辨率輸入所帶來的好處的同時,減小其計算開銷呢?
事實上,我們可以借助神經網絡的一個有趣的性質。與人類視覺相似,神經網絡往往可以通過僅僅處理圖像中與任務相關的一小部分區域而得到正確的結果,例如在下圖中,遮擋住屋頂、飛鳥或花朵之外的部分,神經網絡仍然可以得到正確的分類結果[6]:
圖3 部分關鍵信息足以使神經網絡做出可靠的判斷
這便是本文所提出方法的出發點,我們的目標是,對于輸入圖片,自適應地找到其與任務最相關的區域,進而通過使神經網絡只處理這些區域,以盡可能小的計算量得到可信的結果。具體而言,我們采用的方法是,將一張分辨率較高的圖片表征為若干個包含其關鍵部分的“小塊”(Patch),而后僅將這些小塊輸入神經網絡。以下面的示意圖為例,將一張224x224的圖片分解為3個96x96的Patch進行處理所需的計算量僅為原圖的55.2%。
圖4 Glance and Focus Network \(GFNet\) 的基本建模方式
Method
為了實現上述目的,事實上,有兩個顯然的困難:
(a) 任意給定一張輸入圖片,如何判斷其與任務最相關的區域在哪里呢?
(b) 考慮到我們的最終目的是使神經網絡得到正確的預測結果,不同輸入所需的計算量是不一樣的,例如對于下面所示的兩個輸入圖片,神經網絡可能僅需要處理一個patch就能識別出特征非常突出的月亮,但是需要處理更多的patch才能分辨出貓咪的具體品種。
圖5 對于不同輸入,應分配不同大小的計算資源
為了解決這兩個問題,我們設計了一個Glance and Focus的框架,將這一思路建模為了一個序列決策過程,如下圖所示。
圖6 Glance and Focus Network \(GFNet\) 的基本框架
其具體執行流程為:
首先,對于一張任意給定的輸入圖片,由于我們沒有任何關于它的先驗知識,我們直接將其放縮為一個patch的大小,輸入網絡,這一方面產生了一個初步的判斷結果,另一方面也提供了原始輸入圖片的空間分布信息;這一階段稱為掃視(Glance)。
而后,我們再以這些基本的空間分布信息為基礎,逐步從原圖上取得高分辨率的patch,將其不斷輸入網絡,以此逐步更新預測結果和空間分布信息,得到更為準確的判斷,并逐步尋找神經網絡尚未見到過的關鍵區域;這一階段稱為關注(Focus)。
值得注意的是,在上述序列過程的每一步結束之后,我們會將神經網絡的預測自信度(confidence)與一個預先定義的閾值進行比較,一旦confidence超過閾值,我們便視為網絡已經得到了可信的結果,這一過程立即終止。此機制稱為自適應推理(Adaptive Inference)。通過這種機制,我們一方面可以使不同難易度的樣本具有不同的序列長度,從而動態分配計算量、提高整體效率;另一方面可以簡單地通過改變閾值調整網絡的整體計算開銷,而不需要重新訓練網絡,這使得我們的模型可以動態地以最小的計算開銷達到所需的性能,或者實時最大化地利用所有可用的計算資源以提升模型表現。
關于這些閾值的具體整定方法,由于比較繁雜,不在這里贅述,可以參閱我們的paper~
Network Architecture
下面我們具體介紹Glance and Focus Network (GFNet) 的具體結構,如下圖所示
圖7 Glance and Focus Network \(GFNet\) 的網絡結構
GFNet共有四個組件,分別為:
全局編碼器和局部編碼器(Global Encoder and Local Encoder)為兩個CNN,分別用于從放縮后的原圖和局部patch中提取信息,之所以用兩個CNN,是因為我們發現一個CNN很難同時適應縮略圖和局部patch兩種尺度(scale)的輸入。幾乎所有現有的網絡結構均可以作為這兩個編碼器以提升其推理效率(如MobileNet-V3、EfficientNet、RegNet等)。
分類器 (Classifier)為一個循環神經網絡(RNN),輸入為全局池化后的特征向量,用于整合過去所有輸入的信息,以得到目前最優的分類結果。
圖像塊選擇網絡 (Patch Proposal Network)是另一個循環神經網絡(RNN),輸入為全局池化前的特征圖(不做池化是為了避免損失空間信息),用于整合目前為止所有的空間分布信息,并決定下一個patch的位置。值得注意的是由于取得patch的crop操作不可求導,是使用強化學習中的策略梯度方法(policy gradient)訓練的。
Training
為了確保GFNet的四個組件按照我們預期的方式工作,我們提出了一個三階段的訓練策略,在這里簡要概述,更多細節可以參見我們的paper~
首先,我們從GFNet中移除 ,在每一步均以均勻分布隨機選擇patch的位置,以下面所示的損失函數訓練,和,使其達到最佳的分類性能,其中 代表交叉熵損失, 和 分別代表 在第 步的預測結果和原始輸入圖片 對應的標簽, 表示訓練集, 表示序列的最大可能長度。
而后,我們固定第一步得到的,和 ,在網絡中插入一個隨機初始化的 ,以強化學習算法(policy gradient)優化以下形式的折扣獎勵函數。其中 為一個預先定義折扣因子, 為每次選擇patch位置的獎勵(reward),我們將其定義為所選擇的patch所造成的在正確標簽上的confidence的增量,換言之,我們總是希望 選擇目前的網絡沒有處理過的、對產生正確的預測結果最有幫助的patch。
最后,我們固定第二步得到的 ,再以第一步中的損失函數對 , 和 進行最終的微調(Finetune)。
Experiments
在實驗中我們考慮了兩種設置:
budgeted batch classi?cation,測試數據伴隨有一個計算開銷的預算(budget),網絡需要在這個計算預算內進行推理。在此設置下,我們使用前面提到的方法,確定閾值(confidence threshold)并進行自適應推理。
anytime prediction,網絡有可能在任何時候被要求立刻輸出預測結果。在此設置下,我們不使用自適應推理技術,并假設所有測試樣本的序列長度固定。
下圖為我們在不同網絡結構上實現GFNet的實驗結果,其中橫軸為網絡的平均理論計算開銷,縱軸為準確率,(a-e)為budgeted batch classi?cation的結果,(f)為anytime prediction的結果。可以看出,GFNet明顯地提升了包括MobileNetV3、RegNet和EfficientNet在內的最新網絡結構的推理效率,同等精度下,計算開銷減小達30-40%以上,對于ResNet/DenseNet的增幅可達3倍甚至更高;同等計算開銷下,對MobileNetV3提點2%左右,對ResNet/DenseNet達5-10%以上。
圖8 GFNet基于不同CNN的實驗結果(Accuracy v.s. Multiply-Adds)
GFNet的另一個顯著優勢是,由于其沒有更改CNN的具體結構,其可以方便地在移動端或邊緣設備上使用現有的工具部署,且享有和理論結果幾乎等同的實際加速比。下圖為我們在一臺iPhone XS Max(就是我的手機)上基于TensorFlow Lite的測試結果:
圖9 GFNet在一臺iPhone XS Max上的實際測試結果(Accuracy v.s. Latency)
下面是GFNet的一些可視化結果,可以從中看出,對于比較簡單的樣本,GFNet可以僅在Glance階段或Focus階段的第一步以很高的confidence得到正確的結果,對于較為復雜的樣本,則實現了以不斷關注關鍵區域的形式逐步提升confidence。
圖10 GFNet的可視化結果
Conclusion
最后總結一下,其實我本人是非常喜歡這項工作的,因為它非常的自然、通用、有效。一方面它很好的模擬了生物(或者說人)識別一張圖片的過程,人眼對圖像數據的認知事實上也是一個先掃視得出一些直覺信息、再逐漸關注關鍵區域的過程。另一方面GFNet的實際效果也非常顯著,且能在目前最佳的一些模型上進一步提升理論計算效率,并加快實測速度。歡迎大家follow我們的工作~。
@inproceedings{NeurIPS2020_7866,title = {Glance and Focus: a Dynamic Approach to Reducing Spatial Redundancy in Image Classification},author = {Wang, Yulin and Lv, Kangchen and Huang, Rui and Song, Shiji and Yang, Le and Huang, Gao},booktitle = {Advances in Neural Information Processing Systems (NeurIPS)},year = {2020}, }后臺回復關鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
有頂會審稿人、大廠研究員、知乎大V和妹紙
等你來撩哦~
?
[1] http://www.image-net.org/
[2] https://arxiv.org/pdf/2001.02394.pdf
[3] https://arxiv.org/pdf/1709.01507.pdf
[4] https://arxiv.org/pdf/1905.11946.pdf
[5] https://papers.nips.cc/paper/5542-recurrent-models-of-visual-attention.pdf
[6] https://arxiv.org/pdf/1910.08485.pdf
總結
以上是生活随笔為你收集整理的NeurIPS 2020 | Glance and Focus: 通用、高效的神经网络自适应推理框架的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 肝了1W字!文本生成评价指标的进化与推翻
- 下一篇: 推荐一个快速定位深度学习代码bug的炼丹