計算機視覺中的注意力機制

2021-02-15 騰訊技術工程


引言:在機器翻譯(Machine Translation)或者自然語言處理(Natural Language Processing)領域,以前都是使用數理統計的方法來進行分析和處理。近些年來,隨著 AlphaGo 的興起,除了在遊戲AI領域,深度學習在計算機視覺領域,機器翻譯和自然語言處理領域也有著巨大的用武之地。在 2014 年,隨著深度學習的進一步發展,seq2seq 的訓練模式和翻譯模式已經開始進入人們的視野。除此之外,在端到端的訓練方法中,除了需要海量的業務數據之外,在網絡結構中加入一些重要的模塊也是非常必要的。在此情形下,基於循環神經網咯(Recurrent Neural Network)的注意力機制(Attention Mechanism)進入了人們的視野。除了之前提到的機器翻譯和自然語言處理領域之外,計算機視覺中的注意力機制也是十分有趣的,本文將會簡要介紹一下計算機視覺領域中的注意力方法。在此事先聲明一下,筆者並不是從事這幾個領域的,可能在撰寫文章的過程中會有些理解不到位的地方,請各位讀者指出其中的不足。

注意力機制

顧名思義,注意力機制是本質上是為了模仿人類觀察物品的方式。通常來說,人們在看一張圖片的時候,除了從整體把握一幅圖片之外,也會更加關注圖片的某個局部信息,例如局部桌子的位置,商品的種類等等。在翻譯領域,每次人們翻譯一段話的時候,通常都是從句子入手,但是在閱讀整個句子的時候,肯定就需要關注詞語本身的信息,以及詞語前後關係的信息和上下文的信息。在自然語言處理方向,如果要進行情感分類的話,在某個句子裡面,肯定會涉及到表達情感的詞語,包括但不限於「高興」,「沮喪」,「開心」等關鍵詞。而這些句子裡面的其他詞語,則是上下文的關係,並不是它們沒有用,而是它們所起的作用沒有那些表達情感的關鍵詞大。

在以上描述下,注意力機制其實包含兩個部分:

注意力機制需要決定整段輸入的哪個部分需要更加關注;

從關鍵的部分進行特徵提取,得到重要的信息。

通常來說,在機器翻譯或者自然語言處理領域,人們閱讀和理解一句話或者一段話其實是有著一定的先後順序的,並且按照語言學的語法規則來進行閱讀理解。在圖片分類領域,人們看一幅圖也是按照先整體再局部,或者先局部再整體來看的。再看局部的時候,尤其是手寫的手機號,門牌號等信息,都是有先後順序的。為了模擬人腦的思維方式和理解模式,循環神經網絡(RNN)在處理這種具有明顯先後順序的問題上有著獨特的優勢,因此,Attention 機制通常都會應用在循環神經網絡上面。

雖然,按照上面的描述,機器翻譯,自然語言處理,計算機視覺領域的注意力機制差不多,但是其實仔細推敲起來,這三者的注意力機制是有明顯區別的。

在機器翻譯領域,翻譯人員需要把已有的一句話翻譯成另外一種語言的一句話。例如把一句話從英文翻譯到中文,把中文翻譯到法語。在這種情況下,輸入語言和輸出語言的詞語之間的先後順序其實是相對固定的,是具有一定的語法規則的;

在視頻分類或者情感識別領域,視頻的先後順序是由時間戳和相應的片段組成的,輸入的就是一段視頻裡面的關鍵片段,也就是一系列具有先後順序的圖片的組合。NLP 中的情感識別問題也是一樣的,語言本身就具有先後順序的特點;

圖像識別,物體檢測領域與前面兩個有本質的不同。因為物體檢測其實是在一幅圖裡面挖掘出必要的物體結構或者位置信息,在這種情況下,它的輸入就是一幅圖片,並沒有非常明顯的先後順序,而且從人腦的角度來看,由於個體的差異性,很難找到一個通用的觀察圖片的方法。由於每個人都有著自己觀察的先後順序,因此很難統一成一個整體。

在這種情況下,機器翻譯和自然語言處理領域使用基於 RNN 的 Attention 機制就變得相對自然,而計算機視覺領域領域則需要必要的改造才能夠使用 Attention 機制。

基於 RNN 的注意力機制

通常來說,RNN 等深度神經網絡可以進行端到端的訓練和預測,在機器翻譯領域和或者文本識別領域有著獨特的優勢。對於端到端的 RNN 來說,有一個更簡潔的名字叫做 sequence to sequence,簡寫就是 seq2seq。顧名思義,輸入層是一句話,輸出層是另外一句話,中間層包括編碼和解碼兩個步驟。

而基於 RNN 的注意力機制指的是,對於 seq2seq 的諸多問題,在輸入層和輸出層之間,也就是詞語(Items)與詞語之間,存在著某種隱含的聯繫。例如:「中國」 -> 「China」,「Excellent」 -> 「優秀的」。在這種情況下,每次進行機器翻譯的時候,模型需要了解當前更加關注某個詞語或者某幾個詞語,只有這樣才能夠在整句話中進行必要的提煉。在這些初步的思考下,基於 RNN 的 Attention 機制就是:

建立一個編碼(Encoder)和解碼(Decoder)的非線性模型,神經網絡的參數足夠多,能夠存儲足夠的信息;

除了關注句子的整體信息之外,每次翻譯下一個詞語的時候,需要對不同的詞語賦予不同的權重,在這種情況下,再解碼的時候,就可以同時考慮到整體的信息和局部的信息。

注意力機制的種類

從初步的調研情況來看,注意力機制有兩種方法,一種是基於強化學習(Reinforcement Learning)來做的,另外一種是基於梯度下降(Gradient Decent)來做的。強化學習的機制是通過收益函數(Reward)來激勵,讓模型更加關注到某個局部的細節。梯度下降法是通過目標函數以及相應的優化函數來做的。無論是 NLP 還是 CV 領域,都可以考慮這些方法來添加注意力機制。

計算機視覺領域的 Attention 部分論文整理

下面將會簡單的介紹幾篇近期閱讀的計算機視覺領域的關於注意力機制的文章。

Look Closer to See Better:Recurrent Attention Convolutional Neural Network for Fine-grained Image Recognition

在圖像識別領域,通常都會遇到給圖片中的鳥類進行分類,包括種類的識別,屬性的識別等內容。為了區分不同的鳥,除了從整體來對圖片把握之外,更加關注的是一個局部的信息,也就是鳥的樣子,包括頭部,身體,腳,顏色等內容。至於周邊信息,例如花花草草之類的,則顯得沒有那麼重要,它們只能作為一些參照物。因為不同的鳥類會停留在樹木上,草地上,關注樹木和草地的信息對鳥類的識別並不能夠起到至關重要的作用。所以,在圖像識別領域引入注意力機制就是一個非常關鍵的技術,讓深度學習模型更加關注某個局部的信息。

在這篇文章裡面,作者們提出了一個基於 CNN 的注意力機制,叫做 recurrent attention convolutional neural network(RA-CNN),該模型遞歸地分析局部信息,從局部的信息中提取必要的特徵。同時,在 RA-CNN 中的子網絡(sub-network)中存在分類結構,也就是說從不同區域的圖片裡面,都能夠得到一個對鳥類種類劃分的概率。除此之外,還引入了 attention 機制,讓整個網絡結構不僅關注整體信息,還關注局部信息,也就是所謂的 Attention Proposal Sub-Network(APN)。這個 APN 結構是從整個圖片(full-image)出發,迭代式地生成子區域,並且對這些子區域進行必要的預測,並將子區域所得到的預測結果進行必要的整合,從而得到整張圖片的分類預測概率。

RA-CNN 的特點是進行一個端到端的優化,並不需要提前標註 box,區域等信息就能夠進行鳥類的識別和圖像種類的劃分。在數據集上面,該論文不僅在鳥類數據集(CUB Birds)上面進行了實驗,也在狗類識別(Stanford Dogs)和車輛識別(Stanford Cars)上進行了實驗,並且都取得了不錯的效果。

從深度學習的網絡結構來看,RA-CNN 的輸入時是整幅圖片(Full Image),輸出的時候就是分類的概率。而提取圖片特徵的方法通常來說都是使用卷積神經網絡(CNN)的結構,然後把 Attention 機制加入到整個網絡結構中。從下圖來看,一開始,整幅圖片從上方輸入,然後判斷出一個分類概率;然後中間層輸出一個坐標值和尺寸大小,其中坐標值表示的是子圖的中心點,尺寸大小表示子圖的尺寸。在這種基礎上,下一幅子圖就是從坐標值和尺寸大小得到的圖片,第二個網絡就是在這種基礎上構建的;再迭代持續放大圖片,從而不停地聚焦在圖片中的某些關鍵位置。不同尺寸的圖片都能夠輸出不同的分類概率,再將其分類概率進行必要的融合,最終的到對整幅圖片的鳥類識別概率。

因此,在整篇論文中,有幾個關鍵點需要注意:

分類概率的計算,也就是最終的 loss 函數的設計;

從上一幅圖片到下一幅圖片的坐標值和尺寸大小。

只要獲得了這些指標,就可以把整個 RA-CNN 網絡搭建起來。

RA-CNN 的實驗效果如下:

Multiple Granularity Descriptors for Fine-grained Categorization

這篇文中同樣做了鳥類的分類工作,與 RA-CNN 不同之處在於它使用了層次的結構,因為鳥類的區分是按照一定的層次關係來進行的,粗糙來看,有科 -> 屬 -> 種三個層次結構。

因此,在設計網絡結構的過程中,需要有並行的網絡結構,分別對應科,屬,種三個層次。從前往後的順序是檢測網絡(Detection Network),區域發現(Region Discovery),描述網絡(Description Network)。並行的結構是 Family-grained CNN + Family-grained Descriptor,Genus-grained CNN + Genus-grained Descriptor,Species-grained CNN + Species-grained Descriptor。而在區域發現的地方,作者使用了 energy 的思想,讓神經網絡分別聚焦在圖片中的不同部分,最終的到鳥類的預測結果。

Recurrent Models of Visual Attention

在計算機視覺中引入注意力機制,DeepMind 的這篇文章 recurrent models of visual attention 發表於 2014 年。在這篇文章中,作者使用了基於強化學習方法的注意力機制,並且使用收益函數來進行模型的訓練。從網絡結構來看,不僅從整體來觀察圖片,也從局部來提取必要的信息。

整體來看,其網絡結構是 RNN,上一個階段得到的信息和坐標會被傳遞到下一個階段。這個網絡只在最後一步進行分類的概率判斷,這是與 RA-CNN 不同之處。這是為了模擬人類看物品的方式,人類並非會一直把注意力放在整張圖片上,而是按照某種潛在的順序對圖像進行掃描。Recurrent Models of Visual Attention 本質上是把圖片按照某種時間序列的形式進行輸入,一次處理原始圖片的一部分信息,並且在處理信息的過程中,需要根據過去的信息和任務選擇下一個合適的位置進行處理。這樣就可以不需要進行事先的位置標記和物品定位了。

Multiple Object Recognition with Visual Attention


在門牌識別裡面,該網絡是按照從左到右的順序來進行圖片掃描的,這與人類識別物品的方式極其相似。除了門牌識別之外,該論文也對手寫字體進行了識別,同樣取得了不錯的效果。

實驗效果如下:

本篇 文章初步介紹了計算機視覺中的 Attention 機制,除了這些方法之外,應該還有一些更巧妙的方法,希望各位讀者多多指教。

Look Closer to See Better:Recurrent Attention Convolutional Neural Network for Fine-grained Image Recognition,CVPR,2017.

Recurrent Models of Visual Attention,NIPS,2014

GitHub 代碼:Recurrent-Attention-CNN,github.com/Jianlong-Fu/

Multiple Granularity Descriptors for Fine-grained Categorization,ICCV,2015

Multiple Object Recognition with Visual Attention,ICRL,2015

Understanding LSTM Networks,Colah's Blog,2015,colah.github.io/posts/2

Survey on the attention based RNN model and its applications in computer vision,2016

相關焦點

  • 綜述|計算機視覺中的注意力機制
    設為星標,第一時間獲取更多乾貨連結:https://zhuanlan.zhihu.com/p/146130215之前在看DETR這篇論文中的self_attention,然後結合之前實驗室組會經常提起的注意力機制,所以本周時間對注意力機制進行了相關的梳理,以及相關的源碼閱讀了解其實現的機制。
  • 視覺注意力機制 | 視覺注意力機制用於分類:SENet、CBAM、SKNet
    點擊上方「AI算法修煉營」,選擇加星標或「置頂」標題以下,全是乾貨前面的話上次文章中,我們主要關注了視覺應用中的Self-attention機制及其應用——Non-local網絡模塊,從最開始的了解什麼是視覺注意力機制到對自注意力機制的細節把握,再到Non-local模塊的學習。
  • 直播預告 | ICCV Oral:語義分割中的自注意力機制和低秩重建
    雷鋒網AI研習社按:本周五(10月25日)晚8:00點,「大講堂」第128講邀請到了北京大學計算機應用技術碩士李夏來分享,本場主題為「語義分割中的自注意力機制和低秩重建」上一期我們主要聚焦通用醫學影像三維預訓練模型「Models Genesis」,這次我們來講講語義分割,本次分享依舊對AI研習社成員免費開放。
  • 計算機視覺系列案例 | 基於注意力機制的編碼器-解碼器結構的圖像描述生成
    引入注意力機制,解碼器能夠在逐字生成語句時,把注意力集中於圖像中與當前詞最相關的部分。下圖展示了該網絡結構的主要思想:注意力機制返回加權的特徵向量。利用加權的特徵向量,與上一個預測的單詞,結合起來預測下一個單詞,解碼器能夠生成更加準確的語句。下圖展示了該機制的結構:
  • 筆記 | 注意力機制之Residual Attetion Network
    0 前言計算機視覺中的注意力機制的基本思想是讓模型學會專注,把注意力集中在重要的信息上而忽視不重要的信息。舉個簡單的例子,對於圖像分類任務,有隻狗在廣闊無垠的沙漠裡漫步,模型能識別出有隻狗,那假如狗是在茂密的森林裡散步呢,模型有可能識別不出來,這是為什麼呢?
  • Attention 掃盲:注意力機制及其 PyTorch 應用實現
    點上方藍字計算機視覺聯盟獲取更多乾貨地址:https://www.zhihu.com/people
  • 一文解讀NLP中的注意力機制
    ,因此對注意力機制的學習、掌握與應用顯得十分重要。本文便對注意力機製做了較為全面的綜述。近些年來,注意力機制一直頻繁的出現在目之所及的文獻或者博文中,可見在NLP中算得上是個相當流行的概念,事實也證明其在NLP領域散發出不小得作用。這幾年的頂會paper就能看出這一點。
  • 微軟亞研:對深度神經網絡中空間注意力機制的經驗性研究
    空間注意力(Spatial Attention)機制最近在深度神經網絡中取得了很大的成功和廣泛的應用,但是對空間注意力機制本身的理解和分析匱乏。(Spatial Attention)機制最近在深度神經網絡中取得了很大的成功和廣泛的應用,但是對空間注意力機制本身的理解和分析匱乏。
  • 簡單有效的注意力機制
    在日常生活中,我們通過視覺、聽覺、觸覺等方式接收大量的感覺輸入。但是我們的人腦可以在這些外界的信息轟炸中還能有條不紊地工作,是因為人腦可以有意或無意地從這些大量輸入信息中選擇小部分的有用信息來重點處理,並忽略其他信息。這種能力就叫做注意力。
  • 深度學習中的注意力機制(一)
    作者 | 蘑菇先生來源 | NewBeeNLP頭圖 | CSDN下載自視覺中國目前深度學習中熱點之一就是注意力機制(Attention Mechanisms)。衡量了在計算下一個decoder隱狀態 和預測 過程中,相對於前一個decoder隱狀態 ,不同 的重要性程度。這一「Decoder中的」注意力機制使得只需要關注源句子部分的信息,而不是像此前工作中非要將源句子「所有的信息」都編碼成固定長度的上下文向量來用。
  • 計算機視覺「奧斯卡」CVPR 2020公布收錄論文
    近日,計算機視覺領域「奧斯卡」CVPR 2020官方公布論文收錄結果,伴隨投稿數量激增,接收率開始經歷了一個持續下降的過程。今年,在6656篇有效投稿中,共有1470篇論文被接收,接收率為22%左右,相較去年25%的入選率,同比下降3%。
  • 再見卷積神經網絡,使用Transformers創建計算機視覺模型
    在幕後,為了計算這些更新的嵌入,轉換器使用了自注意力機制,這是一種高效的技術,可以並行更新輸入文本中每個單詞的嵌入。自注意力機制從從輸入文本中嵌入單詞(W)開始,我們需要以某種方式找到一種方法來測量同一文本中每隔一個單詞嵌入(Wn)的重要性(相對於W的重要性)並合併其信息 創建更新的嵌入(W')。
  • 將注意力機制引入RNN,解決5大應用領域的序列預測問題
    在這篇博客中,我們將發現可以在循環神經網絡中採用注意力機制(attention mechanism)來克服這種局限性。讀完這篇博客,你會知道:編碼器-解碼器結構和固定長度內部表徵的局限性讓網絡學會針對輸出序列的每一項去注意輸入序列中對應位置的注意力機制帶有注意力機制的循環神經網絡在文本翻譯、語音識別等 5 個領域中的應用。
  • AlphaGo 早已擊敗圍棋冠軍,計算機視覺還是 3 歲的「智力」
    但是現在,AlphaGo 已經擊敗圍棋冠軍,IBM Watson 也在 Jeopardy 中擊敗人類競賽者,而大多數計算機視覺軟體最多只能完成 3 歲兒童的任務……理論與實踐不斷證明,人類視覺神經非常複雜,計算機視覺實現並非易事。計算機視覺研究從上世紀 50 年代興起之後,也歷經了狂歡、冷靜,又重新燃起希望的階段。
  • 注意力機制(Attention Mechanism)在自然語言處理中的應用
    基於注意力(attention)機制的神經網絡成為了最近神經網絡研究的一個熱點,本人最近也學習了一些基於attention機制的神經網絡在自然語言處理(NLP)領域的論文,現在來對attention在NLP中的應用進行一個總結,和大家一起分享。
  • 視覺記憶篇:注意力訓練
    視覺記憶的重點在於對眼晴的使用上,視覺信息最終能否被大腦記憶和回憶,主要還在於視覺信息能否清晰明確地烙印在潛意識中。視覺信息的來源是用眼睛看見的東西,因此,想要讓視覺信息最終形成深刻的記憶,就必須努力訓練自己的眼睛,讓眼晴看到的東西更清晰、明確,能在腦海中留下更深刻的印象。
  • 計算機視覺八大任務全概述:PaddlePaddle工程師詳解熱門視覺模型
    上篇計算機視覺(Computer Vision)是研究如何使機器「看」的科學,更進一步的說,是使用攝像機機和電腦代替人眼對目標進行識別、跟蹤和測量等的機器視覺,並通過電腦處理成為更適合人眼觀察或傳送給儀器檢測的圖像。形象地說,就是給計算機安裝上眼睛(攝像機)和大腦(算法),讓計算機像人一樣去看、去感知環境。
  • 代碼詳解:從頭開始學習注意力機制!
    相反,人類將注意力集中於局部視覺空間,以便在需要的時間和場合獲取信息並對不同時段的信息進行合併,構建內在場景表現,指導日後的注意力分配及決策過程。《視覺注意循環模型》,2014本文將探討如何實施注意力,以及在實施過程如何脫離更大的模型。這是因為在現實模型中實施注意力時,很多時的重點在於管理數據與控制不同的向量,而非注意力本身。
  • 全球計算機視覺頂會CVPR 2020論文出爐:騰訊優圖17篇論文入選
    全球計算機視覺頂級會議CVPR2020 (IEEE Conference on Computer Vision and Pattern Recognition,即IEEE國際計算機視覺與模式識別會議) 即將於2020年6月14日-19日在美國西雅圖召開。本屆大會總共錄取來自全球論文1470篇,騰訊優圖實驗室入選17篇。
  • 基於注意力機制改進U-Net的醫學圖像分割算法
    但是U-Net網絡在下採樣的過程中卷積、池化都是局部算子,要獲取全局信息就需要深度編碼器,這樣會引入大量的訓練參數,並且丟失更多圖像的空間信息。而在上採樣過程中使用反卷積、反池化很難進行空間信息的恢復。