一文詳解卷積神經網絡中的卷積層和池化層原理 !!

文章目錄

前言

一、卷積核大小(Kernel Size)

1. 卷積核大小的作用

2. 常見的卷積核大小

3. 選擇卷積核大小的原則

二、步長(Stride)

1. Stride的作用

三、填充(Padding)

1. 填充的作用

四、通道數(Channels)

五、池化(Pooling)

1. 池化層的作用

六、卷積層的作用

1. 局部特征的層次化提取過程


前言

卷積神經網絡(Convolutional Neural Network,CNN)是深度學習神經網絡經典形式之一,由于其計算過程中包含卷積運算,因此得名。卷積神經網絡(CNN)通過使用卷積層來提取圖像數據的局部特征,再通過池化層(Pooling Layer)來降低特征的空間維度,最后通過全連接層(Fully Connected Layer)進行分類或回歸任務。CNN已經在圖像識別、目標檢測、圖像生成和許多其他領域取得了顯著的進展,成為了計算機視覺和深度學習研究的重要組成部分。

卷積神經網絡最為關鍵的兩個步驟是執行卷積(Convolution)操作和進行池化(Pooling)處理。卷積用于特征提取,通過卷積核在輸入數據上滑動計算加權和;池化用于特征降維,通過聚合統計池化窗口內的元素來減少數據空間大小。

圖像在計算機中是一堆按順序排列的數字,數值為0到255.0表示最暗,255表示最亮,如下圖的手寫數字圖像。

卷積操作是指將一個可移動的小窗口(稱為數據窗口,如下圖綠色矩形)與圖像進行逐元素相乘然后相加的操作。這個小窗口其實是一組固定的權重,它可以被看作是一個特定的濾波器(filter)或卷積核。這個操作的名稱“卷積”,源自于這種元素級相乘和求和的過程。這一操作是卷積神經網絡名字的來源。

卷積有哪些重要參數?卷積的重要參數主要包括卷積核大小(Kernel Size)步長(Stride)以及填充(Padding),它們共同決定了卷積層的輸出特征圖的尺寸和特性。另外圖像及輸出特征圖通道數也決定卷積神經網絡的模型訓練效果。

  • 卷積核大小(Kernel Size):決定了感受野的大小,即每次卷積操作能夠覆蓋的輸入區域大小。
  • 步長(Stride):決定了卷積核在輸入圖像或特征圖上滑動的距離。步長為1表示每次滑動一個像素,步長大于1則表示每次滑動多個像素。
  • 填充(padding):在輸入圖像或特征圖的邊緣添加額外的零值,以控制輸出特征圖的尺寸。常見的填充方式有“valid”(無填充)和“same”(填充后輸出尺寸與輸入相同)。
  • 通道數(Channels):對于輸入圖像,通道數指的是顏色通道數(如RGB圖像的通道數為3)。對于卷積層,輸出特征圖的通道數由卷積核的數量決定。

一、卷積核大小(Kernel Size)

卷積核的大小是決定卷積層功能的重要參數之一。卷積核的大小通常指的是卷積核的維度,如3x3、5x5等,表示卷積核在輸入數據上滑動的局部區域大小。

如下圖,是一個大小為3x3的卷積核,對輸入矩陣進行卷積操作。

1. 卷積核大小的作用

卷積核的大小決定了網絡能夠獲取的空間維度信息。較大的卷積核可以捕捉更多的輸入信息,從而可能獲得更好的性能,但同時也會增加計算量,并可能使網絡容易過擬合,較小的卷積核雖然計算效率較高,但可能會丟失一些全局信息。

2. 常見的卷積核大小

3x3:這是一個平衡的選擇,可以捕捉一定的空間信息,同時不會使計算量過大。

5x5:更大的卷積核可以捕獲更多的上下文信息,但計算成本也更高。

7x7:這些較大的卷積核可以提供更多的信息,但除非特定任務需要,否則通常較少使用,因為性能提升可能與計算成本不成比例。

3. 選擇卷積核大小的原則

選擇卷積核大小應根據具體任務、輸入數據的尺寸以及計算資源來決定。通常情況下,可以從經驗規則開始,如使用3x3卷積核,然后根據需要調整。較大的任務或復雜的數據集可能需要更大的卷積核來捕獲更多細節。

在使用卷積層時,除了卷積核大小,還需要考慮步長(stride)、填充(padding)等其他參數,這些因素一起決定了卷積層輸出的特征圖的空間維度。合理配置這些參數對于優化網絡性能至關重要。

二、步長(Stride)

滑動卷積核時,我們會先從輸入的左上角開始,每次往左滑動一列或者往下滑動一行逐一計算輸出,我們將每次滑動的行數和列數稱為Stride,即步長,在之前的圖片中,Stride=1;在下圖中,Stride=2。

1. Stride的作用

是成倍縮小尺寸,而這個參數的值就是縮小的具體倍數,比如步幅為2,輸出就是輸入的1/2;步幅為3,輸出就是輸入的1/3,以此類推。

三、填充(Padding)

填充(padding)是指在輸入高和寬的兩側填充元素(通常是0元素)。下圖中我們在原輸入高和寬的兩側分別添加了值為0的元素,使得輸入高和寬從3變成了5,并導致輸出高和寬由2增加到4。

下面的動態圖,很好的展示了填充后,卷積的計算操作過程:

1. 填充的作用

(1)保留邊緣信息

  • 在卷積核滑動過程中,輸入圖像邊緣的像素通常參與計算的次數較少,導致邊緣特征容易被忽略。通過填充(如補零),邊緣像素可以更充分地參與卷積運算,減少邊緣信息丟失;
  • 例如,3x3的卷積核在未填充時,邊緣像素僅參與一次計算,而填充后能多次參與,提升特征提取的完整性。

(2)控制輸出特征圖尺寸

  • 填充允許調整輸出特征圖的空間維度。例如,當希望輸出尺寸與輸入相同時,需通過填充補足因卷積核滑動減少的尺寸。

(3)增強網絡靈活性

  • 填充使網絡設計更靈活:若未填充,隨著網絡加深,特征圖尺寸迅速縮減,限制網絡深度;填充后可通過調整步長和填充數平衡計算與特征保留需求。例如,使用“same填充”可保持各層特征圖尺寸穩定,便于堆疊更多卷積層。

(4)引入平移不變性

  • 填充(尤其是零填充)通過模糊邊緣位置差異,使網絡對目標在圖像中的位置變化更魯棒,從而增強平移不變性。

該動態圖形象地展示了卷積層計算的過程,卷積核大小為3x3,然后對輸入數據進行了填充,其次步長為Stride=2,卷積計算的結果為輸入圖像矩陣乘以對應神經元的權重值w,再加上偏置值b。

四、通道數(Channels)

上面只是針對單通道的圖像,也就是灰度圖,而更普遍的圖像表示方式是RGB顏色模型,即紅、綠、藍三原色的色光以不同的比例相加,以產生多種多樣的色光。RGB顏色模型中,單個矩陣就擴展成了有序排列的三個矩陣,也可以用三維張量去理解。

其中的每個矩陣又叫這個圖片的一個channel(通道),寬、高、深來描述。

那么對一個彩色圖像做卷積,到底做了什么呢?下面這張動圖,很好地展示了圖像卷積計算的過程,原始圖像有RGB三個通道channel1-3,對應有3個卷積核Kernel1-3,每一個通道的圖片與對應的卷積核做乘加運算,每個通道得到的數值再相加,加上總體的偏置Bias得到特征圖(feature map)里面的一個值。

五、池化(Pooling)

講完卷積,就必須要講一下池化,因為通常卷積層和池化層都是配合使用的。池化操作有多種方式,其中最常見的是最大值池化(Max Pooling)平均池化(Average Pooling)。它們分別通過選取局部區域內的最大值和平均值來減少特征圖的尺寸。

最大值池化(Max Pooling):在定義的池化窗口內,選取所有元素中的最大值,并將該最大值作為池化結果輸出到下一層特征圖的對應位置。

平均池化(Average Pooling):在定義的池化窗口(如2x2、3x3等)內,計算所有元素的平均值,并將該平均值作為池化結果輸出到下一層特征圖的對應位置。

下面是以動態圖的形式,展示兩種池化操作的異同。

1. 池化層的作用

(1)降維:池化層通過池化操作降低特征圖的空間維度,減少計算復雜度,同時保留重要的特征信息。

(2)防止過擬合:池化層的降維操作減少了模型參數的數量,有助于防止模型過擬合,提高模型的泛化能力。

(3)位置不變性:池化層通過取局部區域的最大值或平均值,使得模型對特征的位置變化具有一定的不變性。

六、卷積層的作用

卷積層通過可學習的濾波器(卷積核)對輸入數據進行局部感知,捕捉空間關聯性強的特征。例如,低層卷積核可提取邊緣、角點、紋理等基礎特征,而高層通過組合這些基礎特征逐步形成更復雜的抽象特征(如物體形狀、部件等)。這種層次化特征組合能力使CNN無需人工設計特征,而是通過反向傳播自動優化濾波器參數。

手動設計卷積核,提取圖像特征(如,邊緣特征)

下圖是ResNet卷積神經網絡中的卷積層提取的特征圖:

在圖像目標檢測、識別、分類任務中,卷積神經網絡(CNN)通過多層次的局部感知、參數共享和反向傳播機制,逐步從原始像素中學習目標的抽象特征。

1. 局部特征的層次化提取過程

(1)低層基礎特征學習

輸入圖像通過卷積核(如3x3或5x5的濾波器)進行局部掃描,計算像素點與卷積核的加權和,生成特征圖。這些初始卷積核通過反向傳播自動學習,捕捉邊緣、角點、顏色梯度等基礎特征。

(2)中層抽象特征組合

隨著網絡加深,低層特征被組合為更復雜的模式。例如,邊緣組合成紋理,紋理組合成物體部件(如車輪、眼睛)。這些組合通過多層卷積實現,如VGGNet通過堆疊多個3×3卷積層擴大感受野,模擬生物視覺系統的層次化處理。

(3)高層語義特征表達

深層網絡通過非線性激活函數(如ReLU)和跨通道信息融合,提取目標整體的語義特征(如“汽車”“人臉”)。例如,ResNet的殘差塊允許梯度直接傳遞,促進深層網絡學習高階特征。

參考資料:E等于mc平方

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77388.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77388.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77388.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

云+AI雙輪驅動,亞馬遜云科技加速中國企業出海新浪潮

導讀:全球化就是本地化 作者 | 小葳 圖片來源 | 攝圖 近年來,中國企業出海步伐不斷加快,“不出海,就出局”成為很多企業的共識。 據沙利文統計,2024年上半年,超過2000家中國上市企業布局海外市場&#xff…

C語言HashTable基本理解

文章目錄 一、哈希表概念1. 哈希表的基本概念2. 哈希表的核心組件2.1 哈希函數2.2 沖突處理(哈希碰撞) 3.哈希表的三種結構(1) 數組作為哈希表示例: 2. Set(集合)示例:查找數組中的重復元素1. Set 基礎概念…

【緩存與數據庫結合最終方案】偽從技術

實現偽從技術:基于Binlog的Following表變更監聽與緩存更新 技術方案概述 要實現一個專門消費者服務作為Following表的偽從,訂閱binlog并在數據變更時更新緩存,可以采用以下技術方案: 主要組件 MySQL Binlog監聽:使…

《100天精通Python——基礎篇 2025 第3天:變量與數據類型全面解析,掌握Python核心語法》

目錄 一、Python變量的定義和使用二、Python整數類型(int)詳解三、Python小數/浮點數(float)類型詳解四、Python復數類型(complex)詳解---了解五、Python字符串詳解(包含長字符串和原始字符串)5.1 處理字符串中的引號5.2 字符串的…

【前后端分離項目】Vue+Springboot+MySQL

文章目錄 1.安裝 Node.js2.配置 Node.js 環境3.安裝 Node.js 國內鏡像4.創建 Vue 項目5.運行 Vue 項目6.訪問 Vue 項目7.創建 Spring Boot 項目8.運行 Spring Boot 項目9.訪問 Spring Boot 項目10.實現 Vue 與 Spring Boot 聯動11.安裝 axios12.編寫請求13.調用函數請求接口14.…

線性代數(一些別的應該關注的點)

一、矩陣 矩陣運算:線性變換 縮放、平移、旋轉 無所不能的矩陣 - 三維圖形變換_嗶哩嗶哩_bilibili

01Redis快速入門(nosql、安裝redis、客戶端、命令及類型、java客戶端、序列化)

Redis的常見命令和客戶端使用 1.初識Redis Redis是一種鍵值型的NoSql數據庫,這里有兩個關鍵字: 鍵值型 NoSql 其中鍵值型,是指Redis中存儲的數據都是以key、value對的形式存儲,而value的形式多種多樣,可以是字符串…

AI編程:[體驗]從 0 到 1 開發一個項目的初體驗

一、開發信息 開發時間:1.5-2天工具使用: 不熟練,開發本項目前1天,才簡單使用了Cursor的功能 功能復雜度: 開發的功能相對簡單。頁面:2個,登錄頁面,個人中心頁面功能:5個…

LeetCode-392 判斷子序列

給定字符串 s 和 t ,判斷 s 是否為 t 的子序列。 字符串的一個子序列是原始字符串刪除一些(也可以不刪除)字符而不改變剩余字符相對位置形成的新字符串。(例如,"ace"是"abcde"的一個子序列&#…

Linux 系統監控大師:Glances 工具詳解助力自動化

看圖猜詩,你有任何想法都可以在評論區留言哦~ 摘要 Glances 是一款基于 Python 開發的跨平臺系統監控工具,集成了 CPU、內存、磁盤、網絡、進程等核心指標的實時監控能力,并支持命令行、Web界面、客戶端-服務器模式等多種使用場景。其輕量級…

Spring Boot 3.4.5 運行環境需求

📝 Spring Boot 3.4.5 運行環境要求 🌿 1?? 基本需求 ?? JDK版本:最低 Java 17 🔗 https://www.java.com/ 最高兼容至 Java 24 ?? 依賴框架:需搭配 Spring Framework 6.2.6 🔗 https://docs.sprin…

在KEIL里C51和MDK兼容以及添加ARM compiler5 version編譯器

前言 我們想在一個keil里面可以打開32和51的文件,這樣就不需要兩個keil了 還有就是現在的keil,比如我用的是5.41的,就沒有5版本的處理器,所以要安裝 本篇文章我們來詳細講解如何實現上面說的兩個內容 準備的東西 1.ARM5編譯器 …

Flutter 彈窗隊列管理:支持優先級的線程安全通用彈窗隊列系統

在復雜的 Flutter 應用開發中,彈窗管理是一個常見難題。手動管理彈窗的顯示順序和條件判斷不僅繁瑣,還容易出錯。為此,我們實現了一個支持優先級的線程安全通用彈窗隊列管理系統。它能夠自動管理彈窗的顯示順序,支持條件判斷&…

鴻蒙NEXT開發剪貼板工具類(ArkTs)

import { pasteboard } from kit.BasicServicesKit; import { StrUtil } from ./StrUtil;/*** 剪貼板工具類* 需要權限:* ohos.permission.READ_PASTEBOARD // 允許應用讀取剪貼板。* author CSDN-鴻蒙布道師* since 2025/04/25*/ export class PasteboardUtil {…

FastAPI 零基礎入門指南:10 分鐘搭建高性能 API

一、為什么選擇 FastAPI? 想象一下,用 Python 寫 API 可以像搭積木一樣簡單,同時還能擁有媲美 Go 語言的性能,這個框架憑借三大核心優勢迅速風靡全球: 開發效率提升 3 倍:類型注解 自動文檔,…

【算法】BFS-解決FloodFill問題

目錄 FloodFill問題 圖像渲染 島嶼數量 島嶼的最大面積 被圍繞的區域 FloodFill問題 FloodFill就是洪水灌溉的意思,假設有下面的一塊田地,負數代表是凹地,正數代表是凸地,數字的大小表示凹或者凸的程度。現在下一場大雨&…

代碼隨想錄算法訓練營第三十七天|動態規劃part4

1049. 最后一塊石頭的重量 II 題目鏈接: 1049. 最后一塊石頭的重量 II - 力扣(LeetCode) 文章講解: 代碼隨想錄 思路: 理解為把石頭分成兩堆 使得兩堆的差值盡可能小 求這個最小值1 理解為往背包里裝物品 每個物品的…

(八)深入了解AVFoundation-采集:拍照功能的實現

引言 在上一篇文章中,我們初步完成了使用 AVFoundation 采集視頻數據的流程,掌握了 AVCaptureSession 的搭建與視頻流的預覽顯示。 本篇將繼續深入 AVFoundation,聚焦于靜態圖片采集的實現。通過 AVCapturePhotoOutput,我們可以…

git tag使用場景和實踐

背景 每次上線一個迭代,為了區分本次代碼的分支是哪個迭代的commit,可以給分支打上tag,這樣利于追蹤分支所屬迭代,如果devops沒有自動給分支打tag,需要自己來打 操作 1.查看當前tag git tag2.給分支打tag git tag…

從零開始掌握Linux數據流:管道與重定向完全指南

全文目錄 1 知識背景與核心概念1.1 操作系統的輸入輸出模型1.2 Shell 的中間人角色 2 重定向技術深度解析2.1 輸出重定向2.1.1 覆蓋寫2.1.2 追加寫2.1.3 錯誤重定向2.1.4 同時重定向 stdout 和 stderr 2.2 輸入重定向2.2.1 文件作為輸入源2.2.2 Here Document(多行輸…