「AI不惑境」計算機視覺中注意力機制原理及其模型發展和應用
大家好,這是專欄 《AI不惑境》 的第七篇文章,講述計算機視覺中的注意力(attention)機制。
進入到不惑境界,就是向高手邁進的開始了,在這個境界需要自己獨立思考。如果說學習是一個從模仿,到追隨,到創造的過程,那麼到這個階段,應該躍過了模仿和追隨的階段,進入了創造的階段。從這個境界開始,講述的問題可能不再有答案,更多的是激發大家一起來思考。
作者&編輯 | 言有三
Attention機制在近幾年來在影像,自然語言處理等領域中都取得了重要的突破,被證明有益於提高模型的效能。Attention機制本身也是符合人腦和人眼的感知機制,這次我們主要以計算機視覺領域為例,講述Attention機制的原理,應用以及模型的發展。
1 Attention機制與顯著圖
1.1 何為Attention機制
所謂Attention機制,便是聚焦於區域性資訊的機制,比如影像中的某一個影像區域。隨著任務的變化,注意力區域往往會發生變化。
面對上面這樣的一張圖,如果你只是從整體來看,只看到了很多人頭,但是你拉近一個一個仔細看就了不得了,都是天才科學家。
圖中除了人臉之外的資訊其實都是無用的,也做不了什麼任務, Attention機制便是要找到這些最有用的資訊 ,可以想見最簡單的場景就是從照片中檢測人臉了。
1.2 基於Attention的顯著目標檢測
和注意力機制相伴而生的一個任務便是顯著目標檢測,即salient object detection。它的輸入是一張圖,輸出是一張機率圖,機率越大的地方,代表是影像中重要目標的機率越大,即人眼關注的重點,一個典型的顯著圖如下:
右圖就是左圖的顯著圖,在頭部位置機率最大,另外腿部,尾巴也有較大機率,這就是圖中真正有用的資訊。
顯著目標檢測需要一個資料集,而這樣的資料集的收集便是透過追蹤多個實驗者的眼球在一定時間內的注意力方向進行平均得到,典型的步驟如下:
(1) 讓被測試者觀察圖。
(2) 用eye tracker記錄眼睛的注意力位置。
(3) 對所有測試者的注意力位置使用高斯濾波進行綜合。
(4) 結果以0~1的機率進行記錄。
於是就能得到下面這樣的圖,第二行是眼球追蹤結果,第三行就是顯著目標機率圖。
上面講述的都是空間上的注意力機制,即關注的是不同空間位置,而在CNN結構中,還有不同的特徵通道,因此不同特徵通道也有類似的原理,下面一起講述。
2 Attention模型架構
注意力機制的本質就是定位到感興趣的資訊,抑制無用資訊,結果通常都是以機率圖或者機率特徵向量的形式展示,從原理上來說,主要分為 空間注意力模型,通道注意力模型,空間和通道混合注意力模型三種,這裡不區分soft和hard attention。
2.1 空間注意力模型(spatial attention)
不是影像中所有的區域對任務的貢獻都是同樣重要的,只有任務相關的區域才是需要關心的,比如分類任務的主體,空間注意力模型就是尋找網路中最重要的部位進行處理。
我們在這裡給大家介紹兩個具有代表性的模型,第一個就是Google DeepMind提出的STN網路(Spatial Transformer Network[1])。它透過學習輸入的形變,從而完成適合任務的預處理操作,是一種基於空間的Attention模型,網路結構如下:
這裡的Localization Net用於生成仿射變換系數,輸入是C×H×W維的影像,輸出是一個空間變換系數,它的大小根據要學習的變換型別而定,如果是仿射變換,則是一個6維向量。
這樣的一個網路要完成的效果如下圖:
即定位到目標的位置,然後進行旋轉等操作,使得輸入樣本更加容易學習。這是一種一步調整的解決方案,當然還有很多迭代調整的方案,感興趣可以去有三知識星球星球中閱讀。
相比於Spatial Transformer Networks 一步完成目標的定位和仿射變換調整,Dynamic Capacity Networks[2]則採用了兩個子網路,分別是低效能的子網路(coarse model)和高效能的子網路(fine model)。低效能的子網路(coarse model)用於對全圖進行處理,定位感興趣區域,如下圖中的操作fc。高效能的子網路(fine model)則對感興趣區域進行精細化處理,如下圖的操作ff。兩者共同使用,可以獲得更低的計算代價和更高的精度。
由於在大部分情況下我們感興趣的區域只是影像中的一小部分,因此空間注意力的本質就是定位目標並進行一些變換或者獲取權重。
2.2 通道注意力機制
對於輸入2維影像的CNN來說,一個維度是影像的尺度空間,即長寬,另一個維度就是通道,因此基於通道的Attention也是很常用的機制。
SENet(Sequeeze and Excitation Net)[3]是2017屆ImageNet分類比賽的冠軍網路,本質上是一個基於通道的Attention模型,它透過建模各個特徵通道的重要程度,然後針對不同的任務增強或者抑制不同的通道,原理圖如下。
在正常的卷積操作後分出了一個旁路分支,首先進行Squeeze操作(即圖中Fsq(·)),它將空間維度進行特徵壓縮,即每個二維的特徵圖變成一個實數,相當於具有全域性感受野的池化操作,特徵通道數不變。
然後是Excitation操作(即圖中的Fex(·)),它透過引數w為每個特徵通道生成權重,w被學習用來顯式地建模特徵通道間的相關性。在文章中,使用了一個2層bottleneck結構(先降維再升維)的全連線層+Sigmoid函式來實現。
得到了每一個特徵通道的權重之後,就將該權重應用於原來的每個特徵通道,基於特定的任務,就可以學習到不同通道的重要性。
將其機制應用於若干基準模型,在增加少量計算量的情況下,獲得了更明顯的效能提升。作為一種通用的設計思想,它可以被用於任何現有網路,具有較強的實踐意義。而後SKNet[4]等方法將這樣的通道加權的思想和Inception中的多分支網路結構進行結合,也實現了效能的提升。
通道注意力機制的本質,在於建模了各個特徵之間的重要性,對於不同的任務可以根據輸入進行特徵分配,簡單而有效。
2.3 空間和通道注意力機制的融合
前述的Dynamic Capacity Network是從空間維度進行Attention,SENet是從通道維度進行Attention,自然也可以同時使用空間Attention和通道Attention機制。
CBAM(Convolutional Block Attention Module)[5]是其中的代表性網路,結構如下:
通道方向的Attention建模的是特徵的重要性,結構如下:
同時使用最大pooling和均值pooling演算法,然後經過幾個MLP層獲得變換結果,最後分別應用於兩個通道,使用sigmoid函式得到通道的attention結果。
空間方向的Attention建模的是空間位置的重要性,結構如下:
首先將通道本身進行降維,分別獲取最大池化和均值池化結果,然後拼接成一個特徵圖,再使用一個卷積層進行學習。
這兩種機制,分別學習了通道的重要性和空間的重要性,還可以很容易地嵌入到任何已知的框架中。
除此之外,還有很多的注意力機制相關的研究,比如 殘差注意力機制,多尺度注意力機制,遞迴注意力機制等。
感興趣的同學可以去我們知識星球中閱讀相關的網路結構主題。
3 Attention機制典型應用場景
從原理上來說,注意力機制在所有的計算機視覺任務中都能提升模型效能,但是有兩類場景尤其受益 。
3.1 細粒度分類
關於細粒度分類的基礎內容,可以回顧公眾號的往期文章。
我們知道細粒度分類任務中真正的難題在於如何定位到真正對任務有用的區域性區域,如上示意圖中的鳥的頭部。Attention機制恰巧原理上非常合適,文[1],[6]中都使用了注意力機制,對模型的提升效果很明顯。
3.2 顯著目標檢測/縮圖生成/自動構圖
我們又回到了開頭,沒錯,Attention的本質就是重要/顯著區域定位,所以在目標檢測領域是非常有用的。
上圖展示了幾個顯著目標檢測的結果,可以看出對於有顯著目標的圖,機率圖非常聚焦於目標主體,在網路中新增註意力機制模組,可以進一步提升這一類任務的模型。
除此之外,在影片分析,看圖說話等任務中也比較重要,相關內容將在有三AI知識星球中每日更新。
參考文獻
[1] Jaderberg M, Simonyan K, Zisserman A. Spatial transformer networks[C]//Advances in neural information processing systems. 2015: 2017-2025.
[2] Almahairi A, Ballas N, Cooijmans T, et al. Dynamic capacity networks[C]//International Conference on Machine Learning. 2016: 2549-2558.
[3] Hu J, Shen L, Sun G. Squeeze-and-excitation networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 7132-7141.
[4] Li X, Wang W, Hu X, et al. Selective Kernel Networks[J]. 2019.
[5] Woo S, Park J, Lee J Y, et al. Cbam: Convolutional block attention module[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 3-19.
[6] Fu J, Zheng H, Mei T. Look closer to see better: Recurrent attention convolutional neural network for fine-grained image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 4438-4446.
總結
注意力機制是一個原理簡單而有效的機制,符合人眼的視覺感知原理,在實現上也容易嵌入當前的主流模型架構,是值得采用和學習的技術。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2652415/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 計算機視覺中的注意力機制計算機視覺
- 計算機視覺技術在物聯網中的發展與應用計算機視覺
- 淺談深度學習的技術原理及其在計算機視覺的應用深度學習計算機視覺
- OpenVINO計算機視覺模型加速計算機視覺模型
- 計算機視覺環境配置計算機視覺
- HuggingFace在NLP和計算機視覺中的應用 - Reddit計算機視覺
- RRAM機制、材料及其在神經形態計算中的應用
- 計算機視覺基本原理——RANSAC計算機視覺
- 計算機視覺應用:深度學習的力量和侷限性計算機視覺深度學習
- Roguelike機制的原理和應用
- 注意力機制在圖卷積中的應用卷積
- 計算機視覺與深度學習應用關係計算機視覺深度學習
- 自適應注意力機制在Image Caption中的應用APT
- 未來5-10年計算機視覺發展趨勢計算機視覺
- 深度學習在計算機視覺各項任務中的應用深度學習計算機視覺
- 計算機視覺入門大全:基礎概念、執行原理、應用案例詳解計算機視覺
- 乾貨|如何利用CNN建立計算機視覺模型?CNN計算機視覺模型
- 大廠技術實現 | 影像檢索及其在淘寶的應用 @計算機視覺系列計算機視覺
- 計算機視覺中的深度學習計算機視覺深度學習
- 來了解下計算機視覺的八大應用計算機視覺
- 計算機視覺論文集計算機視覺
- iOS計算機視覺—ARKitiOS計算機視覺
- 計算機視覺隨談計算機視覺
- CV:計算機視覺基礎之影像儲存到計算機的原理daiding計算機視覺AI
- Pytorch計算機視覺實戰(更新中)PyTorch計算機視覺
- AI/機器學習(計算機視覺/NLP)方向面試複習1AI機器學習計算機視覺面試
- 史丹佛—深度學習和計算機視覺深度學習計算機視覺
- http快取機制及其原理HTTP快取
- 計算機視覺—影象特效(3)計算機視覺特效
- 計算電磁學及其在複雜電磁環境數值模擬中的應用和發展趨勢
- 在計算機組成原理中x,計算機組成原理計算機
- 一文讀懂計算機視覺中的深度域適應計算機視覺
- 注意力機制
- 【計算機視覺】視訊格式介紹計算機視覺
- 全球八大科學家談計算機視覺的研發和應用:眼見為實計算機視覺
- IDC:中國計算機視覺行業應用的現狀、挑戰與契機計算機視覺行業
- 計算機視覺發展瓶頸顯現 國內企業如何破局?計算機視覺
- 從試用到使用:計算機視覺產業新一輪發展的起步年計算機視覺產業