池化技術總結

2021-10-14 16:27:39 字數 3110 閱讀 5811

導言:

池化是乙個幾乎所有做深度學習的人都了解的乙個技術,大家對池化如何進行前向傳播也都了解,池化的作用也了解一二。然而,池化如何回傳梯度呢,池化回傳梯度的原則是什麼呢,最大池化與平均池化的區別是什麼呢,什麼時候選擇最大池化、什麼時候選擇平均池化呢。

主要用的池化操作有平均池化、最大池化、全域性平均池化,全域性自適應池化。此外還有很多,如roi池化、金字塔池化、重疊池化、隨機池化、雙線性池化等。

在本文中將會對這些內容一一總結。

1. 抑制雜訊,降低資訊冗餘。

2. 提公升模型的尺度不變性、旋轉不變性。

3. 降低模型計算量。

4. 防止過擬合。

此外,最大池化作用:保留主要特徵,突出前景,提取特徵的紋理資訊。平均池化作用:保留背景資訊,突出背景。這兩者具體後面會介紹,這裡只介紹它們的作用。

池化回傳梯度的原則是保證傳遞的loss(或者說梯度)總和不變。根據這條原則很容易理解最大池化和平均池化回傳梯度方式的不同。

平均池化的操作是取每個塊( 如2x2 )的平均值,作為下一層的乙個元素值,因此在回傳時,下一層的每一元素的loss(或者說梯度)要除以塊的大小( 如2x2 = 4),再分配到塊的每個元素上,這是因為該loss**於塊的每個元素。

最大池化的操作是取每個塊的最大值作為下一層的乙個元素值,因此下乙個元素的loss只**於這個最大值,因此梯度更新也只更新這個最大值,其他值梯度為0。因此,最大池化需要在前向傳播中記錄最大值所在的位置,即max_id。這也是最大池化與平均池化的區別之一。具體如下圖所示:

根據最大池化的操作,取每個塊中的最大值,而其他元素將不會進入下一層。眾所周知,cnn卷積核可以理解為在提取特徵,對於最大池化取最大值,可以理解為提取特徵圖中響應最強烈的部分進入下一層,而其他特徵進入待定狀態(之所以說待定,是因為當回傳梯度更新一次引數和權重後,最大元素可能就不是在原來的位置取到了)。

一般而言,前景的亮度會高於背景,因此,正如前面提到最大池化具有提取主要特徵、突出前景的作用。但在個別場合,前景暗於背景時,最大池化就不具備突出前景的作用了。

因此,當特徵中只有部分資訊比較有用時,使用最大池化。如網路前面的層,影象存在雜訊和很多無用的背景資訊,常使用最大池化。

同理,平均池化取每個塊的平均值,提取特徵圖中所有特徵的資訊進入下一層。因此當特徵中所有資訊都比較有用時,使用平均池化。如網路最後幾層,最常見的是進入分類部分的全連線層前,常常都使用平均池化。這是因為最後幾層都包含了比較豐富的語義資訊,使用最大池化會丟失很多重要資訊。

首先嘗試一下用幾句話介紹一下空間金字塔池化的背景,空間金字塔池化出自目標檢測的sppnet中,在目標檢測中需要生成很多區域候選框,但這些候選框的大小都不一樣,這些候選框最後都需要進入分類網路對候選框中的目標進行分類,因此需要將候選框所在區域變成乙個固定大小的向量,空間金字塔池化就是解決這麼乙個問題。

下面是具體做法。

對於乙個通道數為c的feature map,一取全域性最大值,得到乙個1xc的張量,二將feature map分割成4塊,在每一塊上進行最大池化,得到乙個4xc的張量,三將feature map分成16塊,在每塊上進行最大池化,得到乙個16xc的張量,將這三個張量拼接起來,得到乙個大小為21xc的張量。對於任意大小的feature map經過這些操作都可以得到固定大小的張量。

roi即region of interest,roi池化是空間金字塔池化的一種特殊形式。

在目標檢測以前的方法中,使用selective search生成候選框,這些候選框是在特徵提取網路前就生成了,但經過特徵提取後該框的邊界不再是乙個整數,例如,對於乙個輸入為800x800的,其中有乙個665x665的框內框中一條狗,經過有五次池化的特徵提取網路後該框的區域變為了(665/32)*(665/32)=20.87*20.87的區域,因此roi經過了第一次量化,對這個邊界進行取整為20,而分類網路的輸入固定大小為7x7。因此將20x20的區域分成7x7塊,由於20/7=2.86也不是整數,因此第二次量化,取2。然後在分塊上進行最大池化生成乙個7x7的大小。具體如上圖所示。

這種方法經過兩次量化得到的roi於原始的roi有了一定的偏差,當候選框比較大時,這個偏差影響不會很大,但候選框本身比較小時,這個偏差相對來說比較大,嚴重影響結果。

本部分引用自部落格:

隨機池化(stochastic pooling):在乙個池化視窗內對feature map的數值進行歸一化得到每個位置的概率值,然後按照此概率值進行隨機取樣選擇,即元素值大的被選中的概率也大。該池化的優點是確保了特徵圖中非最大響應值的神經元也有可能進入下一層被提取,隨機池化具有最大池化的優點,同時由於隨機性它能夠避免過擬合。

此外還有雙線性池化等不是很常用的池化,這裡不作過多介紹。

北京大學施柏鑫:從審稿人視角,談談怎麼寫一篇cvpr**

siamese network總結

計算機視覺專業術語總結(一)構建計算機視覺的知識體系

欠擬合與過擬合技術總結

歸一化方法總結

**創新的常見思路總結

cv方向的高效閱讀英文文獻方法總結

計算機視覺中的小樣本學習綜述   

知識蒸餾的簡要概述

nms總結

損失函式技術總結

注意力機制技術總結

特徵金字塔技術總結

池化技術總結

資料增強方法總結

cnn結構演變總結(一)經典模型

cnn結構演變總結(二)輕量化模型

cnn結構演變總結(三)設計原則

如何看待計算機視覺未來的走向

cnn視覺化技術總結(一)-特徵圖視覺化

cnn視覺化技術總結(二)-卷積核視覺化

cnn視覺化技術總結(三)-類視覺化

cnn視覺化技術總結(四)-視覺化工具與專案

池化技術 執行緒池

執行緒池 任務 等待任務 全域性的任務佇列queue無任務且無銷毀,任務新增函式 等待add的signal 載入任務 add將新建任務指標task賦予queue 執行任務 執行緒池內任一rtn獲取當前佇列的頭 第乙個任務task 執行,並將此任務從佇列中剔除 退出執行緒池內某一rtn 根據實際的程式...

物件池化技術

物件池化技術 物件池化的基本思路是 將用過的物件儲存起來,等下一次需要這種物件的時候,再拿出來重複使用,從而在一定程度上減少頻繁建立物件所造成的開銷。用於充當儲存物件的 容器 的物件,被稱為 物件池 object pool,或簡稱pool 對於沒有狀態的物件 例如string 在重複使用之前,無需進...

常見池化技術

在系統開發過程中,我們經常會用到池化技術來減少系統消耗,提公升系統效能。物件池通過復用物件來減少建立物件 垃圾 的開銷 連線池 資料庫連線池 redis連線池和http連線池等 通過復用tcp連線來減少建立和釋放連線的時間。執行緒池通過復用執行緒提公升效能。簡單來說,池化技術就是通過復用來提公升效能...