Attention U-Net簡介及其在Keras中實現示例

2020-12-11 不靠譜的貓

1.什麼是注意力(Attention)?

在圖像分割中,注意力是一種只突出訓練中相關激活的方法。這減少了浪費在無關激活上的計算資源,為網絡提供了更好的泛化能力。本質上,網絡可以「關注」圖像的某些部分。

a)Hard Attention

Attention有兩種形式,Hard和soft。Hard attention的工作原理是通過裁剪圖像或迭代區域建議來突出顯示相關區域。由於Hard attention一次只能選擇一個圖像的一個區域,它是不可微的,需要強化學習來訓練。

由於它是不可微分的,這意味著對於圖像中的給定區域,網絡可以「attention」或不可以「attention」)。因此,無法進行標準的反向傳播,因此需要蒙特卡洛採樣來計算各個反向傳播階段的準確度。考慮到準確性取決於採樣的完成情況,因此需要使用諸如強化學習等其他技術來使模型有效。

b)Soft Attention

Soft attention通過給圖像的不同部分加權來實現。高相關性區域乘以較大的權重,而低相關性區域標記為較小的權重。隨著神經網絡模型的訓練,對高權重區域的關注越來越多。與hard attention不同,這些權重可以應用於圖像中的許多塊。

處理句子中的不同單詞時,如果在圖像上Soft attention權重的可視化,較亮的區域權重較高。

由於Soft attention的確定性,它仍然是可微的,可以用標準的反向傳播進行訓練。在對神經網絡模型進行訓練時,也對權重進行了訓練,以便神經網絡模型能夠更好地確定需要注意哪些部分。

Hard Attention:

一次只關注一個區域不可微且需要強化學習Soft Attention:

權重被放置在圖像的不同塊上以確定相關性可微,可以通過反向傳播進行訓練2.為什麼在U-Net中需要attention?

要理解為什麼注意力在U-Net中是有益的,我們需要查看所使用的skip connections。

灰色箭頭表示U-Net中使用的long skip connections

在擴展路徑的上採樣過程中,重建的空間信息是不精確的。為了解決這個問題,U-Net使用skip connections將來自下採樣路徑的空間信息與來自上採樣路徑的空間信息結合起來。然而,這帶來了許多冗餘的底層特徵提取,因為在初始層中特徵表示很差。

在skip connections中實現的Softattention將有效地抑制不相關區域中的激活,從而減少冗餘特徵的數量。

3.如何實現注意力?

Oktay等人介紹的attention gates ,使用了附加的soft attention。

a)attention gates分解

上:Attention gate (AG) 示意圖。下:在每個skip connection處如何實現AG。

注意門接受兩個輸入,向量x 和g。向量g是從網絡的下一層取的。考慮到向量來自於更深的網絡,它具有較小的維數和較好的特徵表示。在上面的示例圖中,向量x的大小為64x64x64(filters x height x width),向量g為32x32x32。向量x經過strided卷積,其大小變為64x32x32,向量g經過1x1卷積,其大小變為64x32x32。將兩個向量逐個元素相加。此過程導致對齊的權重變大,而未對齊的權重相對變小。合成的向量經過ReLU激活層和1x1卷積,從而將維數壓縮到1x32x32。這個向量經過一個sigmoid層,該層在範圍[0,1]之間縮放向量,產生Attention係數(權重),其中係數接近1表示更相關的特徵。使用三線性插值將Attention係數向上採樣到x向量的原始維度(64x64)。Attention係數按元素順序與原始x向量相乘,根據相關性縮放向量。然後在skip connection中正常傳遞。Oktay等人還提出了一種基於網格的門控機制,該機制從上採樣路徑而不是下採樣路徑(最低層除外)獲取g向量,因為該向量已經被先前的Attention gate調節為來自多個維度的空間信息。

在3、6、10和150 epochs中可視化Attention係數,其中紅色突出顯示較高的Attention係數。(Oktay et. al, 2018)

隨著訓練的進行,網絡學會將注意力集中在需要的區域。Attention gate的可微性使得它可以在反向傳播時得到訓練,這意味著Attention係數可以更好地突出相關區域。

b)在Keras中實現

4.分析

CT-150數據集的結果(Oktay et al. 2018

Oktay等人得到的結果表明,Attention U-Net在總體Dice 係數得分上比普通U-Net有較大的優勢。Attention U-Net具有更多參數(但並不明顯多),推理時間也僅略長。

總之,attention gates是一種簡單的方法,可以在大量數據集中改進U-Net,並且不會在計算成本上帶來大量開銷。

相關焦點

  • MXNet開放支持Keras,高效實現CNN與RNN的分布式訓練
    安裝 Keras-MXNet在 DLAMI 上的 MXnet Conda 環境中安裝 Keras-MXnet 及其依賴項。它已經包含 Keras 1.0 版,因此你需要先卸載此版本。versions Keras-MXNet$ pip uninstall keras-mxnet# Install Keras-MXNet v2.1.6 $ pip install keras-mxnetKeras-MXnet 及其依賴項現已安裝在 DLAMI 上的 MXnet Conda 環境中。
  • TensorFlow(Keras)中的正則化技術及其實現(附代碼)
    現在,我們對正則化有了一些基本的了解(可以隨意探索這兩種方法的數學方法)和一些示例,讓我們看看它們是如何實現的。實施正則化第一步是導入用於實現或支持神經網絡實現的工具和庫。更具體地說,它包括60,000個訓練示例和10,000個測試示例,它們都是尺寸為28 x 28的灰度圖像,分為十類。數據集的準備工作包括通過將每個像素值除以255.0來歸一化訓練圖像和測試圖像。這會將像素值置於0到1的範圍內。在此階段,還將創建數據集的驗證部分。在訓練期間利用該組數據集來評估網絡在各種迭代中的性能。
  • MXNet 宣布支持 Keras 2,可更加方便快捷地實現 CNN 及 RNN 分布式...
    雷鋒網 AI 研習社按,近期,AWS 表示 MXNet 支持 Keras 2,開發者可以使用 Keras-MXNet 更加方便快捷地實現 CNN 及 RNN 分布式訓練。AI 研習社將 AWS 官方博文編譯如下。
  • Keras實例:PointNet點雲分類
    【導讀】點雲的分類,檢測和分割是計算機視覺中的核心問題。本示例實現了點雲深度學習論文PointNet。
  • ...宣布支持 Keras 2,可更加方便快捷地實現 CNN 及 RNN 分布式訓練
    2.安裝 Keras-MXNet將 Keras-MXnet 及其依賴項安裝在您 DLAMI 上的 MXNet Conda 環境中。 由於它已經有Keras 1.0,所以你需要首先卸載它。pip install h5py# Uninstall older versions Keras-MXNet$ pip uninstall keras-mxnet# Install Keras-MXNet v2.1.6 $ pip install keras-mxnet
  • Attention 掃盲:注意力機制及其 PyTorch 應用實現
    換句話說,句子中任意單詞對生成某個目標單詞P_yi來說影響力都是相同的,也就是注意力均等。很顯然這不符合直覺。直覺應該:我翻譯哪個部分,哪個部分就應該把注意力集中於我的翻譯的原文,翻譯到第一個詞,就應該多關注原文中的第一個詞是什麼意思。
  • 教程 | 一招教你使用 tf.keras 和 eager execution 解決複雜問題
    tf.keras 是一個高級 API,用於定義具有類似樂高積木的模型。我使用模型子類化(Model subclassing)實現了這些示例,它允許我們通過子類化 tf.keras 模型和定義自己的前向傳播來建立完全可定製的模型。當啟用 eager execution 時,模型子類化特別有用,因為前向傳播可以被命令式地編寫。
  • 深度學習中的多任務學習(Multi-task-learning)——keras實現
    而本次的代碼實現採用的是隱層參數硬共享,也就是兩個任務共享網絡淺層的參數。多任務學習keras實現這裡筆者簡單的介紹一下如何通過keras簡單的搭建一個多任務學習網絡。這裡筆者的目標任務是一個10分類的關係分類任務,對關係分類任務不是很了解的同學可以移步到筆者之前的文章中去了解一下,而我將訓練文本中兩個存在關係的實體(entity)標了出來,在模型中加了一個命名體識別(NER)任務構成了多任務學習模型。
  • 深度學習第51講:自編碼器(AutoEncoder)及其keras實現
    從本講開始,筆者將花一些時間和大家一起學習深度學習中的無監督模型。
  • Keras R語言接口正式發布,同時公開20個完整示例
    雷鋒網 AI科技評論消息,Keras R語言接口正式發布,並同時公開20個完整示例。關於keras的介紹Keras是一個高層神經網絡API,為支持快速實驗而生,目前主要功能如下:支持相同的代碼無縫跑在CPU或GPU上對用戶友好,易於快速prototype深度學習模型支持計算機視覺中的卷積網絡、序列處理中的循環網絡,也支持兩種網絡的任意組合支持任意網絡架構:多段輸入或多段輸出模型、層共享、模型共享等。
  • Keras vs PyTorch vs Caffe:CNN實現對比
    在本文中,我們將構建相同的深度學習框架,即在Keras、PyTorch和Caffe中對同一數據集進行卷積神經網絡圖像分類,並對所有這些方法的實現進行比較。最後,我們將看到PyTorch構建的CNN模型如何優於內置Keras和Caffe的同行。本文涉及的主題在Keras、PyTorch和Caffe實現CNN模型。
  • 【推薦算法】AttentionFM模型原理和實踐
    針對以上情況,attention機制被引入推薦系統中,attention機制相當於一個加權平均,attention的值就是其中權重,用來描述不同特徵之間交互的重要性。從比較宏觀的角度理解,AFM就是通過一個attention net生成一個關於特徵交叉項的權重,然後將FM原來的二次項直接累加,變成加權累加。
  • 【深度學習】Keras vs PyTorch vs Caffe:CNN實現對比
    在本文中,我們將構建相同的深度學習框架,即在Keras、PyTorch和Caffe中對同一數據集進行卷積神經網絡圖像分類,並對所有這些方法的實現進行比較。最後,我們將看到PyTorch構建的CNN模型如何優於內置Keras和Caffe的同行。本文涉及的主題在Keras、PyTorch和Caffe實現CNN模型。
  • 易用的新深度學習框架Keras簡介及使用
    數盟DSM數據科學聚會@上海,大牛與你談數據談人生,報名點擊底部閱讀原文作者:wphh轉自:wepon的博客wp之前我一直在使用Theano,前面五篇Deeplearning相關的文章也是學習Theano的一些筆記,當時已經覺得Theano用起來略顯麻煩,有時想實現一個新的結構
  • 機器翻譯的Attention機制
    __init__() self.batch_sz = batch_sz self.dec_units = dec_units self.embedding = tf.keras.layers.Embedding(vocab_size, embedding_dim) self.gru = tf.keras.layers.GRU(self.dec_units,
  • 利用Keras中的權重約束減少深度神經網絡中的過擬合
    約束是按層指定的,但是在層中應用和強制執行每個節點。使用約束通常涉及在圖層上為輸入權重設置kernel_constraint參數,並為偏差權重設置bias_constraint。通常,權重約束不用於偏差權重。一組不同的向量規範可以用作約束,作為keras.constraints模塊中的類提供。
  • 一文搞懂NLP中的Attention機制(附詳細代碼講解)
    例如visual question answering 任務中,作者認為對於圖片進行attention重要,但是對於問題文本進行attention也同樣重要,所以作者採用了聯合學習的方式,運用attention使得模型能夠同時捕獲重要的題幹信息以及對應的圖片信息。
  • 深度學習 | Keras 簡介
    它的開發重點是實現快速實驗。能夠以最小的延遲從理念到結果是進行良好研究的關鍵。接下來我們將要講的神經網絡原理與梯度求解,Keras都已經對它們有了很好的封裝,在後續的學習中,大家只要學會怎麼去構建網絡結構就沒有什麼問題了,其餘的問題都由神經網絡框架替我們去解決。
  • 用Keras+TensorFlow,實現ImageNet數據集日常對象的識別
    這些比賽大大地推動了在計算機視覺研究中的多項發明和創新,其中很多都是免費開源的。博客DeepLearningSandbox作者GregChu打算通過一篇文章,教你用Keras和TensorFlow,實現對ImageNet數據集中日常物體的識別。量子位翻譯了這篇文章:你想識別什麼?看看ILSVRC競賽中包含的物體對象。
  • Keras官方出調參工具了,然而Francois說先別急著用
    Keras Tuner GitHub 地址:https://github.com/keras-team/keras-tuner早在上個月舉辦的谷歌 I/O 大會上,谷歌即展示了 Keras Tuner 的功能。Keras 作者 Franois Chollet 也發推介紹了該工具。