1. 程式人生 > >關於影象卷積與caffe中卷積實現

關於影象卷積與caffe中卷積實現

影象卷積及Caffe中的卷積實現

  原創內容,轉載請註明出處。 
  本文簡單介紹了影象卷積相關的知識以及Caffe中的卷積實現方法,寫作過程中參考了很多很讚的資料,有興趣的讀者可以從【參考資料】檢視。 
  博文中的錯誤和不足之處還望各位讀者指正。

什麼是卷積?

  專業不是信工方面,也沒學過訊號與系統這門課。所以我也就不給出很專業的卷積定義和公式表達,引用一個例子給以直觀的解釋。

這就是說,某一時刻的輸出是之前很多次輸入乘以各自的衰減係數之後的疊加而形成某一點的輸出,然後再把不同時刻的輸出點放在一起,形成一個函式,這就是卷積

  對此,我的理解是,卷積就是一個訊號作用在另一個訊號的響應過程。卷積怎麼計算,就是加權疊加

影象卷積

  上面我們引用一個例子簡單介紹了卷積,那對於一副影象,我們怎麼計算它的卷積呢?對於一副影象,卷積有什麼意義呢? 
   
  我們首先回答第二個問題,和剛才那個例子類似,影象卷積即是一個卷積核(圖1)作用在影象上得到的響應。顯然,卷積核不同,得到的響應自然不同,故我們可以更換不同的卷積核實現對於影象不同的操作。 
一個卷積核 
圖1,一個卷積核,核說白了就是一個固定大小的數值陣列。該陣列帶有一個 錨點 ,一般位於陣列中央。圖片來自OpenCV.

  接著,我們回答第一個問題。這裡我引用OpenCV教程上的表達,並根據圖2的動畫效果加深理解。

計算影象的某個特定位置的卷積值: 
1. 將核的錨點放在該特定位置的畫素上,同時,核內的其他值與該畫素鄰域的各畫素重合; 
2. 將核內各值與相應畫素值相乘,並將乘積相加; 
3. 將所得結果放到與錨點對應的畫素上; 
4. 對影象所有畫素重複上述過程

Caffe中的卷積

  Caffe是一個流行的深度學習框架。而我們用Caffe進行影象分類分類等眾多操作時,是怎麼計算卷積的呢? 
  各位可以參看Caffe的作者賈揚清在知乎上的回答,我這裡貼出賈揚清的這張圖(圖3)。 
Caffe中計算卷積 
圖3,Caffe中卷積的計算過程,其中C是通道數,Cout是輸出的特徵對映個數也就是卷積核(過濾器)個數 
   
  這裡以32*32的RGB影象為例,6個5*5的卷積核為例,先將這副32*32(最外層做zero padding)的RGB影象在每個通道上按照5*5的大小轉化為行向量(1行25列),最後成為(32*32)行(3*25)列的矩陣。同時,將6個卷積核按通道轉化成6行(3*25)列的矩陣,再將兩個矩陣點乘即卷積核矩陣點乘影象矩陣的轉置,得到6

(32*32)的矩陣,即6個特徵對映,每個對映為(32*32),如果不做zero padding則是6*(28*28)。

對於影象卷積及Caffe中的卷積操作就簡單介紹到這裡。

相關推薦

關於影象caffe實現

影象卷積及Caffe中的卷積實現   原創內容,轉載請註明出處。    本文簡單介紹了影象卷積相關的知識以及Caffe中的卷積實現方法,寫作過程中參考了很多很讚的資料,有興趣的讀者可以從【參考資料】檢視。    博文中的錯誤和不足之處還望各位讀者指正。 什麼是卷積?

TensorFlowcaffe層feature map大小計算

剛剛接觸Tensorflow,由於是做影象處理,因此接觸比較多的還是卷及神經網路,其中會涉及到在經過卷積層或者pooling層之後,影象Feature map的大小計算,之前一直以為是與caffe相同的,後來查閱了資料發現並不相同,將計算公式貼在這裡,以便查閱: caffe中: TF中:

Caffe運算的原理實現

caffe中卷積運算設計的很巧妙,今天就來討論一下caffe中卷積運算的原理,最後會給出一個自己的實現版本,便於初學者理解。 Caffe中卷積運算的原理 俗話說,一圖勝千言,首先先給出原理示意圖,為了方便理解,這裡以二維核為例 滑動視窗在影象中

Caffe層的實現

作者:xg123321123 宣告:版權所有,轉載請聯絡作者並註明出處 1 簡述 使用im2col分別將featrue maps和filter轉換成矩陣; 呼叫GEMM(GEneralized Matrix Multiplication)對兩矩陣

caffe計算詳解

      卷積是卷積神經網路的重要組成部分,消耗整個網路中大量計算資源,理解卷積計算過程,對優化網路結構和簡化網路模型非常重要。        正常卷積的實現如下圖所示:         非常重

多維一維的統一性(運算篇)

​所謂卷積,其實是一種數學運算。但是在我們的學習生涯中,往往它都是披上了一層外衣,使得我們經常知其然不知其所以然。比如在訊號系統中,他是以一維卷積的形式出現描述系統脈衝響應。又比如在影象處理中,他是以二維卷積的形式出現,可以對影象進行模糊處理。乍一看,兩個形式風馬牛不相及,但其實他們的本質都是統一的。可見

神經網路的OpenCL實現

卷積神經網路中卷積的OpenCL實現  ============================================================== 目錄 1、卷積 4、總結  ================================

JDK7JDK8HashMap的實現

技術 span after 一個 關聯 一個數 nod value osc JDK7中的HashMap HashMap底層維護一個數組,數組中的每一項都是一個Entry transient Entry<K,V>[] table; 我們向 HashMap 中所放置

Caffeim2col的實現解析

方便 src 一個 urn input out 完全 row pad 這裏,我是將Caffe中im2col的解析過程直接拉了出來,使用C++進行了輸出,方便理解。代碼如下: 1 #include<iostream> 2 3 using names

hashmap技術概覽擴容在Java7Java8的不同實現

hashmap技術概覽: 由陣列 + 連結串列的方式實現,當hash衝突的時候,會將新put值放到連結串列開頭。 初始化時會初始化容量(capacity)、載入因子(loadfactor)、閾值(threshold),其中threshold = capaci

JDK7JDK8ConcurrentHashMap的實現

參考:http://www.jianshu.com/p/e694f1e868ec ConcurrentHashMap 在多執行緒環境下,使用HashMap進行put操作時存在丟失資料的情況,為了避免這種bug的隱患,強烈建議使用ConcurrentHashMap代替HashMap,為了對Co

JDK7JDK8HashMap的實現比較

原文出處: Hosee JDK7中的HashMap HashMap底層維護一個數組,陣列中的每一項都是一個Entry 1 transient Entry<K,V>[] table; 我們向 HashMa

CaffeLMDB介面實現多標籤資料準備及訓練

有不少部落格講Caffe多標籤輸入的問題,但總覺得講的不夠透徹,在實踐角度上沒有給出詳細的指導,所以本文力求能給出詳細的實踐過程和說明。 Caffe多標籤輸入常用的的方法有以下幾種: 1. 修改Caffe原始碼使其支援多標籤輸入,參考CSDN部落格《

AQSJUC的鎖實現原理

摘要 提到JAVA加鎖,我們通常會想到synchronized關鍵字或者是Java Concurrent Util(後面簡稱JCU)包下面的Lock,今天就來扒一扒Lock是如何實現的,比如我們可以先提出一些問題:當我們通例項化一個ReentrantLock並且呼叫它的lo

JDK7 JDK8 HashMap 的實現

JDK7中的HashMap HashMap底層維護一個數組,陣列中的每一項都是一個Entry transient Entry<K,V>[] table; 我們向 HashMap 中所放置的物件實際上是儲存在該陣列當中; 而Map中的key,

影象處理模板

1.使用模板處理影象相關概念:         模板:矩陣方塊,其數學含義是一種卷積運算。   卷積運算:可看作是加權求和的過程,使用到的影象區域中的每個畫素分別與卷積核(權矩陣)的每個元素對應相乘,所有乘積之和作為區域中心畫素的新值。    卷積核:卷積時使用到的權,用一個矩陣表示,該矩陣與使用的

影象處理的validsame

#valid卷積 在full卷積的卷積過程中,會遇到$K_{flip}$靠近I的邊界(K矩陣與I矩陣),就會有部分延申到I之外,這時候忽略邊界,只考慮I*完全*覆蓋$K_{flip}$內的值情況,這個的過程就是valid卷積。一個高為H1,寬為W1的矩陣I與高為H2,寬為W2的矩陣K,在H1大於等於H2,W1

影象處理--濾波器的聯絡

卷積與濾波器的聯絡(??)   吳恩達解釋瞭如何實現卷積運算元(convolution operator),並展示了它如何在影象中檢測邊緣。他還介紹了其他濾波器,例如Sobel 濾波器,它賦予邊緣中心畫素更大權重。   根據吳恩達的解釋,濾波器的權重不應該人工設計,而應該使用爬山演算法(

2013-2018神經網路十個最重要的概念創新

本文作者Professor ho,原文載於其知乎主頁 一、卷積只能在同一組進行嗎?– Group convolution  Group convolution 分組卷積,最早在AlexNet中出現,由於當時的硬體資源有限,訓練AlexNet時卷積操作不能全部放在同一個GPU處理,因此作

由淺入深:CNN轉置層的關系

更多 deep 每次 展開 大禮包 位移 入門 ssg 得出 歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐幹貨哦~ 本文由forrestlin發表於雲+社區專欄 導語:轉置卷積層(Transpose Convolution Layer)又稱反卷積層或分數卷積層,在