卷積神經網路相關計算

卷積神經網路

以往傳統機器視覺演算法需要根據目標任務和先驗知識選擇合適的特徵,即影像的顏色、形狀、紋理等,並且用來提取這些特徵的特徵提取器需要人為構建,不僅構造過程較為繁瑣和困難,而且設計出的提取器通常缺乏泛化能力。
近年來機器學習技術的迅速發展,使得機器視覺技術在影像識別工作中收穫廣泛的應用成果,其中卷積神經網路方法可以根據數據及其類別自行調整網路參數以構建合適的特徵提取器,相對高效便捷構建的特徵提取器的泛化能力更為優異,有效克服了傳統方法的缺陷,刷新了影像相關的任務評測指標。

相關概念

一張RGB圖片的存儲格式對於卷積網路而言,無非是一個張量數據。如一張RGB(三通道)的像素為26x26的圖片,其數據格式為一個3x26x26的張量;
卷積網路的工作重點之一便是把3x26x26的張量轉換為一個特定長度的一維向量,如長為256的一維向量;
不僅如此,卷積網路輸出的一維向量需要較為完美地表徵這張圖片,即該一維向量需要蘊含影像的顏色、形狀、紋理等特徵;
對於得到的一維向量,後續再接入分類模型,基於圖片的一維特徵表示進行分類操作;
卷積神經網路一般由由輸入層、卷積層、激活函數、池化層以及全連接層組成,其中卷積層和池化層在特徵提取中具有重要作用。

相關計算

對於網路中卷積層的輸入輸出數據的規格,可由下式約束:
N=(W-F+2P)/S+1
N:輸出數據的大小
W:輸入數據的大小
F:卷積核的大小
P:填充值的大小
S:步長的大小
需要注意的是,通道的概念也十分重要。在卷積網路中,除了初始輸入的圖片通道數固定(如RGB圖片通道數為3),其餘卷積層的前後通道數可以靈活設定。如一個卷積層的輸入數據為16x27x27(16通道),可以在該卷積層設定輸出的通道為32(具體數值自行確定,類似於超參數)。

例如:
輸入為3x227x227的RGB圖片,令其通過如下卷積層:
torch.nn.Conv2d(in_channels=3,out_channels=96,kernel_size=11,stride=4,padding=0)
則輸出數據大小計算:N=(227-11+2x0)/4+1=55,由於通道數設為96,因而該層最終輸出數據大小為96x55x55
類似地,池化層的輸入輸出關係與上式一樣,對於上面通過卷積層得到的96x55x55的數據,令其通過如下池化層:
torch.nn.MaxPool2d(kernel_size=3, stride=2)
則輸出數據大小計算:N=(55-3+2x0)/2+1=27,由於池化層不改變通道數,因而該層最終輸出數據大小為96x27x27

如上所述,一張3x227x227的RGB圖片數據,經過上面的卷積層與池化層處理後,得到了96x27x27的數據。
一般地,在卷積網路中多次對圖片數據進行卷積與池化,最終可以得到一個一維的長向量。