卷積層是深度學習、卷積神經網絡、計算機視覺和人工智能中非常重要的一個術語。它用來描述一種通過卷積核在輸入數據上滑動,提取局部特征的神經網絡層。換句話說,卷積層是在回答:模型怎樣從圖像、語音或序列數據中自動發現邊緣、紋理、局部形狀等有用模式。
如果說普通會把所有輸入特征一次性連接起來,那么卷積層更強調“局部觀察”和“參數共享”。它不需要每個像素都和每個神經元完全連接,而是用較小的卷積核在輸入上反復掃描,從局部區域中提取特征。因此,卷積層常用于圖像分類、目標檢測、圖像分割、醫學影像分析、語音處理和時間序列建模,是卷積神經網絡(CNN)的核心組成部分。
一、基本概念:什么是卷積層
卷積層(Convolutional Layer)是神經網絡中用于提取局部特征的一種層結構。
在圖像任務中,輸入通常可以看成一個二維或三維數組。例如,一張灰度圖像可以表示為:
其中:
? H 表示圖像高度
? W 表示圖像寬度
一張彩色圖像通常有三個通道,可以表示為:
其中:
? C 表示通道數。RGB 彩色圖像中,C 通常為 3
卷積層會使用一個小窗口,也就是(Kernel / Filter),在輸入上滑動。每滑動到一個位置,就對該局部區域進行一次加權求和,得到輸出特征圖中的一個值。
可以簡單表示為:
輸入圖像 → 卷積核滑動掃描 → 輸出特征圖
![]()
圖 1:卷積核滑動與特征圖生成過程示意
從通俗角度看,卷積層可以理解為:用一個小型“特征探測器”在圖像上到處尋找某種局部模式。
例如:
? 某個卷積核可能檢測水平邊緣
? 某個卷積核可能檢測垂直邊緣
? 某個卷積核可能檢測紋理變化
? 更深層的卷積核可能檢測眼睛、輪廓、車輪等局部結構
因此,卷積層不是人工手寫規則,而是通過訓練自動學習“應該檢測什么特征”。
二、為什么需要卷積層
卷積層之所以重要,是因為圖像、語音和序列數據中通常存在明顯的局部結構。
以圖像為例,一個像素本身意義有限,真正有意義的往往是附近像素組成的局部模式:
? 邊緣
? 角點
? 紋理
? 色塊
? 局部輪廓
? 物體部件
如果使用普通全連接層處理圖像,就需要把整張圖片展平成一個長向量。這樣會帶來兩個問題。
第一,參數量巨大。
例如,一張 224 × 224 × 3 的彩色圖像,如果直接輸入全連接層,輸入維度就是:
如果下一層有 1000 個神經元,就會產生超過 1.5 億個權重參數,計算和存儲成本都很高。
第二,空間結構容易丟失。
圖像中相鄰像素之間有強關系,展平成向量后,這種二維空間關系不再直觀。
卷積層通過兩個關鍵思想解決這些問題:
? 局部連接
? 參數共享
從通俗角度看:卷積層不試圖一次看完整張圖,而是用小窗口觀察局部,再把這種觀察方式應用到整張圖。
這樣既減少參數量,又保留了圖像的空間結構。這也是卷積神經網絡在圖像任務中長期非常成功的重要原因。
三、卷積層的核心計算過程
卷積層的基本計算可以理解為:
局部區域 × 卷積核權重 → 求和 → 得到一個輸出值
假設輸入圖像中的一個局部區域為:
卷積核為:
那么該位置的卷積輸出可以寫為:
其中:
? x?? 表示輸入局部區域中的像素值或特征值
? w?? 表示卷積核中對應位置的權重
? b 表示偏置
? y 表示該位置的輸出值
從通俗角度看:卷積核把局部區域中的每個值乘上對應權重,再求和,得到這個位置是否具有某種特征的響應強度。
如果該局部區域與卷積核所關注的模式相似,輸出值就可能較大;
如果不相似,輸出值就可能較小。
卷積核會在輸入上不斷滑動,每個位置都做類似計算,最終形成一張新的特征圖(Feature Map)。
可以表示為:
特征圖特征圖中的每個值,表示卷積核在對應位置檢測到某種特征的強弱。
四、卷積核與特征圖
卷積層中最重要的兩個概念是:
? 卷積核
? 特征圖
1、卷積核:特征探測器
(Kernel / Filter)是一組可學習的權重。
例如,一個 3 × 3 卷積核有 9 個權重:
如果輸入有多個通道,例如 RGB 圖像有 3 個通道,那么一個卷積核實際上會覆蓋所有輸入通道,形狀可以理解為:
卷積核的作用是檢測某種局部模式。
從通俗角度看:卷積核就像一個小型模板,它在圖像上尋找和自己相似的局部結構。
訓練前,卷積核通常是隨機初始化的;訓練過程中,模型會通過反向傳播不斷調整卷積核權重,使它們逐漸學會檢測有用特征。
2、特征圖:特征響應結果
特征圖(Feature Map)是卷積核在輸入上滑動計算后得到的輸出。
如果一個卷積核負責檢測“水平邊緣”,那么它生成的特征圖就表示:圖像中哪些位置像水平邊緣,以及響應強度有多大。
如果卷積層有多個卷積核,就會輸出多個特征圖。
例如,一個卷積層有 32 個卷積核,就會輸出 32 張特征圖:
其中:
? H′ 表示輸出特征圖高度
? W′ 表示輸出特征圖寬度
? 32 表示輸出通道數
從通俗角度看:一個卷積核產生一張特征圖,多個卷積核產生多組特征響應。
這些特征圖會作為下一層卷積層的輸入,繼續提取更復雜的特征。
五、步幅、填充與輸出尺寸
卷積層的輸出大小不僅取決于輸入和卷積核,還取決于兩個重要參數:
? 步幅
? 填充
1、步幅:卷積核每次移動多遠
步幅(Stride)表示卷積核每次滑動的距離。
如果 stride = 1,卷積核每次移動 1 個像素;
如果 stride = 2,卷積核每次移動 2 個像素。
從通俗角度看:步幅越大,掃描越稀疏,輸出特征圖越小。
例如:
stride = 2:隔一個位置掃描較大的步幅可以減少計算量,也會降低空間分辨率。
2、填充:在邊緣補像素
填充(Padding)是在輸入邊緣補上一圈或多圈像素,常見補 0。
如果不填充,卷積核無法完整覆蓋圖像邊緣區域,輸出尺寸會變小。
填充的作用包括:
? 保留邊緣信息
? 控制輸出尺寸
? 使輸出高度和寬度不至于過快縮小
從通俗角度看:填充就像給圖像邊緣加一圈空白,讓卷積核也能掃描到邊緣位置。
3、輸出尺寸公式
對于二維卷積,如果輸入大小為 H × W,卷積核大小為 K,填充為 P,步幅為 S,則輸出高度可以寫為:
輸出寬度為:
其中:
? H_out 表示輸出高度
? W_out 表示輸出寬度
? H、W 表示輸入高度和寬度
? K 表示卷積核大小
? P 表示填充大小
? S 表示步幅
? ? ? 表示向下取整
從實踐角度看,步幅和填充決定了特征圖的空間大小,是設計卷積神經網絡時必須關注的參數。
六、局部連接與參數共享
卷積層最核心的設計思想是:
? 局部連接
? 參數共享
![]()
圖 2:卷積層中的局部連接與參數共享
1、局部連接
局部連接表示一個卷積核每次只看輸入中的一個小區域,而不是同時連接全部輸入。
例如,一個 3 × 3 卷積核每次只觀察 3 × 3 的局部區域。
從通俗角度看:卷積層認為局部鄰域中的信息最相關。
這非常適合圖像任務,因為邊緣、紋理、角點等基本視覺模式通常都是局部形成的。
2、參數共享
參數共享表示同一個卷積核會在整張圖像上重復使用。
也就是說,卷積核在不同位置使用的是同一組權重。
從通俗角度看:如果一個卷積核能檢測左上角的邊緣,它也應該能檢測右下角的同類邊緣。
這帶來兩個好處。
第一,大幅減少參數量。
一個 3 × 3 卷積核只有 9 個空間權重,不需要為圖像每個位置單獨學習一套參數。
第二,增強平移等變性。
同一個特征出現在圖像不同位置時,卷積核都可以檢測到它。
需要注意,這里更準確地說是“平移等變性”,不是完全平移不變性。
也就是說,輸入中的特征位置移動,輸出特征圖中的響應位置也會相應移動。
從通俗角度看:卷積層在整張圖上使用同一套特征探測器,因此能在不同位置尋找同一種模式。
七、卷積層如何逐層提取特征
卷積神經網絡通常包含多個卷積層。不同層提取的特征層次不同。
淺層卷積層通常學習低級特征,例如:
? 邊緣
? 角點
? 顏色變化
? 簡單紋理
中間卷積層可能學習更復雜的局部結構,例如:
? 局部形狀
? 重復紋理
? 物體部件
深層卷積層可能學習更高級語義特征,例如:
? 眼睛
? 車輪
? 動物臉部
? 物體整體輪廓
可以概括為:
像素 → 邊緣 → 紋理 → 局部形狀 → 物體部件 → 高級語義
從通俗角度看:卷積層不是一次性理解整張圖,而是通過多層結構,從簡單視覺模式逐步組合出復雜語義。
例如,在識別貓時:
? 第一層可能檢測邊緣和紋理
? 中間層可能檢測耳朵、眼睛、胡須等局部結構
? 深層可能形成“貓臉”或“貓身體”的整體響應
這正是卷積神經網絡在圖像任務中強大的原因。
八、卷積層與全連接層的區別
卷積層經常與全連接層進行比較。
1、連接方式不同
全連接層中,每個輸出神經元都連接所有輸入特征。
可以表示為:
其中 W 通常是一個較大的權重矩陣。
卷積層則只連接局部區域,并且共享參數。
從通俗角度看:
? 全連接層:每個神經元看全部輸入
? 卷積層:每個卷積核看局部區域,并在全圖復用
2、參數量不同
全連接層參數量通常較大,尤其是輸入維度很高時。
卷積層由于使用局部連接和參數共享,參數量通常少得多。
例如,一個 3 × 3 卷積核只有少量參數,但可以應用到整張圖像的所有位置。
3、適用數據不同
全連接層適合一般向量特征,例如表格數據或已經提取好的特征向量。
卷積層更適合具有局部結構的數據,例如:
? 圖像
? 視頻
? 語音頻譜
? 時間序列
? 某些二維或一維信號
從通俗角度看:全連接層擅長綜合全局向量信息,卷積層擅長提取局部模式。
在很多 CNN 中,前面使用卷積層提取特征,后面使用全連接層或全局池化層完成分類。
九、卷積層的優勢、局限與使用注意事項
1、卷積層的主要優勢
卷積層最大的優勢是適合處理局部結構。
它能利用圖像、語音、時間序列中的局部相關性,從局部模式中提取有用特征。
其次,卷積層參數量較少。
由于使用參數共享,同一個卷積核可以在整張輸入上重復使用。
再次,卷積層具有較好的平移等變性。
同一種特征出現在不同位置時,卷積核都可以檢測到它。
此外,卷積層可以逐層學習特征。
淺層學習邊緣紋理,深層學習更復雜的語義結構。
從通俗角度看,卷積層的優勢在于:它用少量可學習模板,在輸入中尋找局部模式,并逐層組合成更高級特征。
2、卷積層的主要局限
卷積層也有局限。
首先,卷積層主要關注局部區域。
如果任務強烈依賴長距離關系,普通卷積可能需要很多層才能捕捉到遠距離依賴。
其次,卷積層的局部性假設并不適合所有數據。
對于沒有明顯空間或局部結構的表格數據,普通卷積層不一定比全連接層更合適。
再次,卷積層對空間結構敏感。
如果輸入排列順序沒有實際意義,使用卷積可能不合理。
此外,卷積層本身并不能完全解決尺度變化、旋轉變化和復雜形變問題。實際模型中常結合池化、數據增強、歸一化和更復雜結構。
3、使用卷積層時需要注意的問題
使用卷積層時,需要注意:
? 卷積核大小會影響局部感受野
? 步幅會影響輸出尺寸和計算量
? 填充會影響邊緣信息和輸出大小
? 輸出通道數決定卷積層能學習多少種特征
? 多層卷積可以擴大有效感受野
? 圖像任務中常配合池化層、歸一化層和激活函數
? 輸入維度順序要符合框架要求,例如 PyTorch 常用 NCHW
其中 NCHW 表示:
批量大小 N × 通道數 C × 高度 H × 寬度 W
從實踐角度看,卷積層不是孤立使用的,而是和 ReLU、BatchNorm、池化、殘差連接等模塊共同構成完整卷積神經網絡。
十、Python 示例
下面給出幾個簡單示例,用來幫助理解卷積層的基本使用。
示例 1:使用 PyTorch 創建二維卷積層
這個例子中:
? in_channels=3 表示輸入有 3 個通道
? out_channels=16 表示輸出 16 個特征圖
? kernel_size=3 表示使用 3 × 3 卷積核
? stride=1 表示每次移動 1 個位置
? padding=1 表示邊緣補 1 圈
由于使用了 padding=1 和 stride=1,輸出高度和寬度仍然是 32 × 32。
輸出形狀為 8 × 16 × 32 × 32,表示:8 張圖像,每張有 16 個輸出特征圖。
示例 2:卷積層輸出尺寸計算
這個例子對應公式:
可以用它快速判斷卷積層輸出特征圖大小。
示例 3:卷積層 + ReLU 組成簡單特征提取模塊
這個例子中:
? 第一層卷積把 3 個輸入通道變成 16 個特征通道
? 第二層卷積把 16 個特征通道變成 32 個特征通道
? ReLU 引入非線性
可以理解為:
原始圖像 → 初級特征 → 更豐富的局部特征
示例 4:構建一個簡單 CNN 分類模型
這個模型中:
? 卷積層負責提取圖像局部特征
? ReLU 負責引入非線性
? 池化層負責降低空間尺寸
? 全連接層負責輸出分類 logits
輸出形狀為 8 × 10,表示 8 個樣本,每個樣本對應 10 個類別的原始分數。
如果用于多分類訓練,通常配合 nn.CrossEntropyLoss()。
小結
卷積層是卷積神經網絡中的核心層結構。它通過卷積核在輸入上滑動掃描,提取局部特征,并生成特征圖。卷積層的關鍵思想是局部連接和參數共享:前者讓模型關注局部模式,后者減少參數量并讓同一特征可以在不同位置被檢測到。對初學者而言,可以把卷積層理解為:用一組可學習的小型特征探測器,在圖像或信號中尋找邊緣、紋理、形狀等局部模式,并逐層組合成更高級的語義特征。
“點贊有美意,贊賞是鼓勵”
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.