Attention機制【圖像】

1. 什麼是Attention機制?

其實我沒有找到attention的具體定義,但在計算機視覺的相關應用中大概可以分爲兩種:

1)學習權重分佈:輸入數據或特徵圖上的不同部分對應的專注度不同,對此Jason Zhao在知乎回答中概括得很好,大體如下: 
- 這個加權可以是保留所有分量均做加權(即soft attention);也可以是在分佈中以某種採樣策略選取部分分量(即hard attention),此時常用RL來做。 
- 這個加權可以作用在原圖上,也就是《Recurrent Model of Visual Attention》(RAM)和《Multiple Object Recognition with Visual Attention》(DRAM);也可以作用在特徵圖上,如後續的好多文章(例如image caption中的《 Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》)。 
- 這個加權可以作用在空間尺度上,給不同空間區域加權;也可以作用在channel尺度上,給不同通道特徵加權;甚至特徵圖上每個元素加權。 
- 這個加權還可以作用在不同時刻歷史特徵上,如Machine Translation。

2) 任務聚焦:通過將任務分解,設計不同的網絡結構(或分支)專注於不同的子任務,重新分配網絡的學習能力,從而降低原始任務的難度,使網絡更加容易訓練。


2. Attention機制應用在了哪些地方?

針對於1部分中的attention的兩大方式,這裏主要關注其在視覺的相關應用中。

2.1 方式一:學習權重分佈

&1.(精細分類)Jianlong Fu, Heliang Zheng, Tao Mei (Microsoft Research), Look Closer to See Better: Recurrent Attention Convolutional Neural Network for Fine-grained Image Recognition, CVPR2017 (這個文章很有意思)

在關注的每一個目標尺度上,都採用一個分類的網絡和一個產生attention proposal 的網絡(APN)。本文最有趣的就是這個APN。這個APN由兩個全連接層構成,輸出3個參數表示方框的位置,接下來的尺度的分類網絡只在這個新產生的方框圖像中提特徵進行分類。怎麼訓練呢?本文定義了一個叫做rank Loss,用這個loss來訓練APN,並強迫finer的尺度得到的分類結果要比上一個尺度的好,從而使APN更提取出更有利於精細分類的目標局部出來。通過交替迭代訓練,APN將越來越聚焦目標上的細微的有區分性的部分。當然這裏有一個問題,那就是精細尺度只能聚焦到最顯著的部位(如鳥頭),但其他部分(如羽毛、鳥爪)就關注不到了。 
這裏寫圖片描述
這裏寫圖片描述

&2. (圖像分類)Fei Wang, etc. (SenseTime Group Limited). Residual Attention Network for Image Classification,CVPR2017

本文是在分類網絡中,增加了Attention module。這個模塊是由兩支組成,一支是傳統的卷積操作,另一支是兩個下采樣加兩個上採樣的操作,目的是獲取更大的感受野,充當attention map。因爲是分類問題,所以高層信息更加重要,這裏通過attention map提高底層特徵的感受野,突出對分類更有利的特徵。相當於變相地增大的網絡的深度。 
這裏寫圖片描述

&3.(圖像分割)Liang-Chieh Chen,etc. (UCLA) Attention to Scale: Scale-aware Semantic Image Segmentation, CVPPR2016(權重可視化效果有點意思)

通過對輸入圖片的尺度進行放縮,構造多尺度。傳統的方法是使用average-pooling或max-pooling對不同尺度的特徵進行融合,而本文通過構造Attention model(由兩個卷積層構成)從而自動地去學不同尺度的權重,進行融合(效果提升1到2個點吧,不同的數據集不一樣)。從論文中的權重可視化的結果,能發現大尺寸輸入上,對應網絡關注於small-scale objects,而在稍微小一點的尺寸輸入上,網絡就關注於middle-scale,小尺寸輸入則關注background contextual information。可視化效果感覺非常有意思。 
這裏寫圖片描述

&4.(Image Caption看圖說話)Kelvin Xu,etc. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention,ICML2015 
因爲不做NLP,所以這個論文技術細節並沒有看懂。大意是對一個圖像進行描述時,生成不同的單詞時,其重點關注的圖像位置是不同的,可視化效果不錯。 
這裏寫圖片描述

2.2 方式二:任務聚焦/解耦

&1.(Instance Segmentation)Kaiming He, etc. Mask R-CNN(非常好的一篇文章)

Kaiming大神在Mask R-CNN中,將segment branch的損失函數由softmax loss換成了binary sigmoid loss。即是,將分類和分割任務進行解耦,當box branch已經分好類時,segment branch 就不用再關注類別,只需要關注分割,從而使網絡更加容易訓練。具體到訓練中,假設分狗、貓、馬三類,segment branch會得到3個mask,當訓練樣本是狗類,那麼這個類別的loss纔會被反傳,貓類和馬類對應的mask都不用管。也就是說,生成狗mask的那部分網絡連接(卷積核)只需要聚焦於狗類的樣本,然後將屬於狗的像素目標凸顯出來出來,訓練其他類別時不會對這些連接權重進行更新。通過這個任務解耦,分割的結果得到了很大的提升(5%-7%)。Kaiming大神在文中也指出,當只輸出一個mask時,分割結果只是略差,從而進一步說明了將分類和分割解耦的作用。

&2. (圖像分割)Lin etc. Fully Convolutional Network with Task Partitioning for Inshore Ship Detection in Optical Remote Sensing Images

針對靠岸艦船,本文通過任務解耦的方法來處理。因爲高層特徵表達能力強,分類更準,但定位不準;底層低位準,但分類不準。爲了應對這一問題,本文利用一個深層網絡得到一個粗糙的分割結果圖(船頭/船尾、船身、海洋和陸地分別是一類)即Attention Map;利用一個淺層網絡得到船頭/船尾預測圖,位置比較準,但是有很多虛景。訓練中,使用Attention Map對淺層網絡的loss進行引導,只反傳在粗的船頭/船尾位置上的loss,其他地方的loss不反傳。相當於,深層的網絡能得到一個船頭/船尾的大概位置,然後淺層網絡只需要關注這些大概位置,然後預測出精細的位置,圖像中的其他部分(如船身、海洋和陸地)都不關注,從而降低了學習的難度。 
這裏寫圖片描述


3.感想

總的來說,我覺得attention這個概念很有趣,使用attention也可以做出一些有意思的工作。相比於方式一,個人更喜歡方式二任務解耦,因爲其對所解決的任務本身有更深刻的認識。當然上述介紹的論文,主要是關於high-level的任務,還沒看到attention在low-level的任務中的應用(也可能是自己查得不全),當然如何應用,這值得思考。


參考資料

除了上面的一些論文,其他的參考資料: 
知乎問題:目前主流的attention方法都有哪些? 
知乎問題:Attention based model 是什麼,它解決了什麼問題? 
知乎專欄總結:計算機視覺中的注意力機制 
CSDN博客總結:Attention Model(mechanism) 的 套路 
CSDN專欄:從2017年頂會論文看 Attention Model 
CSDN專欄:模型彙總24 - 深度學習中Attention Mechanism詳細介紹:原理、分類及應用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章