卷積神經網絡 - 卷積層(具體例子)

為了更一步學習卷積神經網絡之卷積層,本文我們來通過幾個個例子來加深理解。

一、灰度圖像和彩色圖像的關于特征映射的例子

下面我們通過2個例子來形象說明卷積層中“特征映射”的概念,一個針對灰度圖像,一個針對彩色圖像。

例子 1:灰度圖像的特征映射

假設

  • 輸入:一幅 5×5 的灰度圖像,像素值如下
  • 卷積核(濾波器):一個簡單的邊緣檢測核

過程

  1. 卷積核在圖像上以一定步幅滑動(這里采用步長為1),每次取出 3×3 的局部區域。
  2. 對每個局部區域,將該區域的像素與卷積核中對應的權重逐元素相乘,再求和,得到一個輸出值。
  3. 所有輸出值排列成一個新的矩陣,這個矩陣就是該卷積核對輸入圖像生成的“特征映射”。例如,如果在某個區域上存在明顯的水平邊緣,那么這個局部區域經過卷積后會產生較大的正值或負值,從而在特征映射中形成明顯的響應。

直觀理解

  • 這個卷積核專門檢測左右方向上(水平)的亮度差異,能“捕捉”到邊緣信息。
  • 在輸出的特征映射中,響應值較大的位置表示原始圖像中在這些位置出現了該卷積核關注的特征(例如邊緣)。

例子 2:彩色圖像的特征映射

假設

  • 輸入:一張 32×32 的彩色圖像(RGB),其形狀為 32×32×3。這里每個像素有紅、綠、藍三個通道的值。
  • 卷積層:采用一個 3×3 的卷積核,但由于輸入有三個通道,卷積核的尺寸為 3×3×3。例如,我們設計一個檢測邊緣的濾波器,其三個通道的權重可能相同,也可能不同(設計者可以根據任務調整)。假設我們用下面的核來檢測垂直邊緣:

過程

  1. 卷積核同時在三個通道上執行卷積操作。具體來說,對于圖像上某個局部區域,將三個通道分別與對應的 3×3 核進行逐元素乘積求和,然后將三個通道的結果相加,再加上偏置(如果有)并通過激活函數,生成該位置上的輸出值。
  2. 輸出的結果是一個二維的特征圖,其每個值表示該局部區域中是否存在垂直邊緣這一特征。
  3. 如果卷積層有多個卷積核(例如16個),則會產生16個不同的特征映射,每個映射對應一個卷積核提取的不同特征。

直觀理解

  • 跨通道信息整合:卷積核的每個通道參數結合了紅、綠、藍三種顏色信息,幫助網絡同時考慮顏色和形狀特征。
  • 局部特征檢測:與灰度圖像的情況類似,每個卷積核只關注圖像的一小塊區域,并產生該區域的特征響應,這些響應通過不同核的堆疊構成了豐富的特征表示,供后續層進一步抽象和分類。

總結

  • 灰度圖像:輸入只有一個通道,卷積核在每個局部區域產生一個數值(例如邊緣強度),所有這些數值構成一個二維矩陣,即特征映射。
  • 彩色圖像:輸入有RGB三個通道,卷積核尺寸為3×3×3,它會同時處理三個通道信息,并將它們組合成一個響應值,從而得到二維特征圖;多個卷積核可以生成多個特征映射,進一步豐富圖像特征的表達。

這種特征映射的思想是卷積層的核心:通過局部、可重復的運算自動提取輸入數據中具有判別意義的特征,從而為后續的分類或檢測任務提供基礎。

二、卷積層輸出 𝑃 個特征映射的例子

我們可以通過一個具體的二維卷積示例來說明卷積層輸出 PPP 個特征映射時的三維結構表示和過程。下面以一個簡單的灰度圖像為例,假設我們希望通過卷積層輸出 P=2P=2P=2 個特征映射,也就是使用兩個不同的卷積核來提取不同的局部特征。

示例設置

輸入圖像:
我們有一幅 5×5 的灰度圖像 I:

這里每個元素表示一個像素的灰度值。

卷積核:
我們設計兩個 3×3 的卷積核(不考慮翻轉問題,此處直接使用交叉相關運算):

  • 卷積核 K1:

    這個核通常用于檢測圖像中垂直邊緣(例如:當局部區域從左到右有較大變化時,輸出值會較大)。

  • 卷積核 K2:

    這個核用于檢測水平邊緣,即當圖像上方和下方的像素值有明顯差異時會產生較大的響應。

卷積方式:
采用無填充(valid convolution)和步幅為1。由于輸入尺寸為5×5,卷積核尺寸為3×3,輸出尺寸為 (5?3+1)×(5?3+1)=3×3。

計算過程

對于 K1? 得到的特征映射 O1

我們逐個計算 O1(i,j) 的值。

  1. 輸出 (1,1)
    取圖像的子矩陣(行1–3,列1–3):

    卷積計算:

  2. 輸出 (1,2)
    子矩陣(行1–3,列2–4):

    計算:

  3. 輸出 (1,3)
    子矩陣(行1–3,列3–5):

    計算:

  4. 輸出 (2,1)
    子矩陣(行2–4,列1–3):

    計算:

  5. 輸出 (2,2)
    子矩陣(行2–4,列2–4):

    計算:

  6. 輸出 (2,3)
    子矩陣(行2–4,列3–5):

    計算:

  7. 輸出 (3,1)
    子矩陣(行3–5,列1–3):

    計算:

  8. 輸出 (3,2)
    子矩陣(行3–5,列2–4):

    計算:

  9. 輸出 (3,3)
    子矩陣(行3–5,列3–5):

    計算:

所以,卷積核 K1 生成的特征映射 O1 為:

對于 K2? 得到的特征映射 O2

同樣計算,使用卷積核 K2?:

類比K1的算法,同理可以得出,卷積核 K2? 生成的特征映射 O2 為:

3. 輸出的三維結構表示

由于我們有兩個卷積核,最終卷積層的輸出由兩個特征映射組成,可以將它們堆疊在一起形成一個三維張量。假設這兩個特征映射分別為 O1? 和 O2,那么輸出張量形狀為:

3×3×2,

其中前兩個維度表示空間尺寸,第三個維度(通道數)即為特征映射的個數 P=2。

4. 總結

  • 目的:通過卷積層,我們希望利用多個卷積核分別提取輸入圖像中不同類型的局部特征,每個卷積核產生一個特征映射。
  • 例子說明:我們用一個 5×5 灰度圖像和兩個 3×3 卷積核做了具體計算,得到兩個 3×3 的特征映射 O1 和 O2。將它們堆疊后就形成了一個 3×3×2 的輸出張量。
  • 直觀理解:每個特征映射都是卷積核在整個輸入上滑動計算得到的局部響應圖,它們共同構成了卷積層的輸出,提供了豐富的特征信息供后續網絡層進一步處理。

這種示例不僅展示了卷積運算的計算過程,也幫助理解卷積層如何通過多個濾波器輸出多個特征映射,從而捕捉圖像中多樣化的局部模式。

三、卷積層中的切片舉例

在卷積神經網絡中,“切片”通常指的是從輸入張量中按照卷積核大小提取出局部區域(即局部感受野)的操作。換句話說,當卷積核在輸入上滑動時,我們實際上是在“切出”一個個小塊,每個小塊就是一個“切片”,然后用該切片與卷積核做逐元素乘積和求和。

通俗解釋

  • 局部感受野:想象你有一張大照片,而你用一個固定大小的“窗口”在照片上掃描。每次你把窗口移動到照片的某個部分,這個窗口內的區域就是一個“切片”。卷積操作就是在每個切片上進行計算(乘積求和),檢測該區域內是否存在某種特定模式。

  • 多通道情況:如果圖像是彩色的(例如RGB圖像),每個切片不僅包含空間區域的信息,還包含多個通道的數據。假設輸入圖像尺寸為 H×W×C,當你用大小為 k×k 的卷積核時,每個切片實際上是一個 k×k×C 的小塊。卷積核也會有相同的深度,然后對每個切片進行計算。

具體例子

假設有一幅灰度圖像(單通道),尺寸為5×5,如下:

使用一個3×3的卷積核 K:

切片操作示例

  • 當卷積核滑動到圖像左上角時,它覆蓋的子矩陣就是:

    在這一步,計算卷積核與這個切片的元素逐一乘積之和,就得到輸出特征映射中(1,1)的位置上的值。

  • 當卷積核繼續向右移動一格,提取新的切片:

    同樣進行乘積求和,得到輸出特征映射中(1,2)的位置的值。

最終,卷積核在整個圖像上滑動,提取出多個 3×3 的切片,每個切片都參與計算,最終形成一個輸出矩陣(特征映射)。

對于彩色圖像的情況: 假設輸入是一幅彩色圖像,尺寸為 32×32×3,使用一個 3×3 卷積核(實際尺寸為 3×3×3),每次提取的切片是一個包含RGB三個通道的3×3塊。對這個切片,卷積核在每個通道做逐元素乘積求和,再將三個通道的結果加在一起(通常再加上偏置和經過激活函數),生成該位置的輸出值。

總結

“切片”是指卷積過程中,從輸入圖像中按卷積核大小提取局部區域的操作。每個提取出來的小區域都被稱為一個切片,然后與卷積核進行運算得到一個輸出值,這些輸出值排列起來就形成了整個卷積層的特征映射。這一過程保留了輸入的空間結構,同時通過局部運算提取出了有用的特征信息。

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

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

相關文章

xlsx.utils.json_to_sheet函數詳解

xlsx.utils.json_to_sheet 是 xlsx 庫中的一個實用函數,用于將 JSON 數據轉換為 Excel 工作表對象。這個函數非常有用,尤其是在你需要從數據庫或其他數據源獲取數據并將其導出到 Excel 文件時。 函數簽名 XLSX.utils.json_to_sheet(data, opts)data&am…

2025-03-17 學習記錄--C/C++-PTA 習題4-7 最大公約數和最小公倍數

合抱之木,生于毫末;九層之臺,起于累土;千里之行,始于足下。💪🏻 一、題目描述 ?? 習題4-7 最大公約數和最小公倍數 本題要求兩個給定正整數的最大公約數和最小公倍數。 輸入格式: 輸入在一…

【源碼閱讀】多個函數抽象為類(實現各種類型文件轉為PDF)

目錄 一、原始函數二、類三、轉換過程 一、原始函數 最開始就是寫了幾個函數(包括doc、excel、ppt類型的文件)轉換為pdf,需要將這些函數形成一個類。相似的一類函數就可以組成一個實現特定功能的類 import subprocess import pandas as pd i…

VSCode擴展工具Copilot MCP使用教程【MCP】

MCP(Model Context Protocol,模型上下文協議) ,2024年11月底,由 Anthropic 推出的一種開放標準,旨在統一大型語言模型(LLM)與外部數據源和工具之間的通信協議。本文章教你使用VSCode…

【leetcode100】搜索插入位置

1、題目描述 給定一個排序數組和一個目標值,在數組中找到目標值,并返回其索引。如果目標值不存在于數組中,返回它將會被按順序插入的位置。 請必須使用時間復雜度為 O(log n) 的算法。 示例 1: 輸入: nums [1,3,5,6], target 5 輸出: 2…

【小白向】Word|Word怎么給公式標號、調整公式字體和花括號對齊

【小白向】Word|Word怎么給公式標號、調整公式字體和花括號對齊 我的版本:Word 2021 如需快速查看關鍵步驟,請直接閱讀標紅部分。 如果遇到無法調整的情況,可以直接下載我的示例文檔進行參考:花括號和其他的示例公式.…

【算法day15】最接近的三數之和

最接近的三數之和 給你一個長度為 n 的整數數組 nums 和 一個目標值 target。請你從 nums 中選出三個整數,使它們的和與 target 最接近。 這里是引用 返回這三個數的和。 假定每組輸入只存在恰好一個解。 https://leetcode.cn/problems/3sum-closest/submissions/61…

Blender-MCP服務源碼5-BlenderSocket插件安裝

Blender-MCP服務源碼5-BlenderSocket插件安裝 上一篇講述了Blender是基于Socket進行本地和遠程進行通訊,現在嘗試將BlenderSocket插件安裝到Blender中進行功能調試 1-核心知識點 將開發的BlenderSocket插件安裝到Blender中 2-思路整理 1)將SocketServe…

【MySQL數據庫】存儲過程與自定義函數(含: SQL變量、分支語句、循環語句 和 游標、異常處理 等內容)

存儲過程:一組預編譯的SQL語句和流程控制語句,被命名并存儲在數據庫中。存儲過程可以用來封裝復雜的數據庫操作邏輯,并在需要時進行調用。 類似的操作還有:自定義函數、.sql文件導入。 我們先從熟悉的函數開始說起: …

ASP3605抗輻照加固同步降壓調節器——商業航天電源芯片解決方案新選擇

ASP3605企業宇航級型號ASP3605S2U通過SEU≥75 MeVcm/mg與SEL≥75 MeVcm/mg抗輻射測試。其輸入電壓4V至15V,輸出電流5A,支持多相級聯與冗余設計,適用于衛星、航天器電源系統。 面向航天場景的核心功能設計 1. 抗輻射與可靠性保障 單粒子效應…

使用fastapi部署stable diffusion模型

使用vscode運行stable diffusion模型,每次加載模型都需要10分鐘,為算法及prompt調試帶來了極大麻煩。使用jupyter解決自然是一個比較好的方案,但如果jupyter由于種種原因不能使用時,fastapi無疑成為了一個很好的選擇。 參考github…

2025-03-16 學習記錄--C/C++-PTA 習題4-4 特殊a串數列求和

合抱之木,生于毫末;九層之臺,起于累土;千里之行,始于足下。💪🏻 一、題目描述 ?? 習題4-4 特殊a串數列求和 給定兩個均不超過9的正整數a和n,要求編寫程序求aaaaaa?aa?a&#x…

ffmpeg庫視頻硬編碼使用流程

?一、硬件編碼核心流程? ?硬件設備初始化 // 創建CUDA硬件設備上下文? AVBufferRef *hw_device_ctx NULL; av_hwdevice_ctx_create(&hw_device_ctx, AV_HWDEVICE_TYPE_CUDA, NULL, NULL, 0);// 綁定硬件設備到編碼器上下文? codec_ctx->hw_device_ctx av_buffer_…

【設計模式】3W 學習法全面解析 7 大結構型模式:Java 實戰 + 開源框架應用

3W 學習法總結結構型模式(附 Java 代碼實戰及開源框架應用) 結構型模式 主要關注 類與對象的組合,確保不同組件之間能夠高效協作,提高系統的靈活性和可維護性。本文采用 3W 學習法(What、Why、How)&#x…

在大數據開發中ETL是指什么?

hello寶子們...我們是艾斯視覺擅長ui設計和前端數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩! 在數字經濟時代,數據已成為企業最核心的資產。然而,分散在業務系統、日志文件…

前端面試項目拷打

Axios相關 1.在Axios二次封裝時,具體封裝了哪些內容,如何處理請求攔截和響應攔截? axios二次封裝的目的:為了統一處理請求和響應攔截器、錯誤處理、請求超時、請求頭配置等,提高代碼可維護性和復用性。 首先創建axios…

「JavaScript深入」Server-Sent Events (SSE):輕量級實時通信技術

Server-Sent Events(SSE) SSE 的特點1. 單向通信2. 簡單易用,瀏覽器原生支持3. 持久連接4. 純文本傳輸5. 自動重連機制6. 輕量級協議 SSE 的實現服務器端實現(Node.js 示例)1. HTTP 響應頭設置2. 數據推送模式3. 服務器…

藍橋杯2023年第十四屆省賽真題-階乘的和

藍橋杯2023年第十四屆省賽真題-階乘的和 時間限制: 2s 內存限制: 320MB 提交: 3519 解決: 697 題目描述 給定 n 個數 Ai,問能滿足 m! 為∑ni1(Ai!) 的因數的最大的 m 是多少。其中 m! 表示 m 的階乘,即 1 2 3 m。 輸入格式 輸入的第一行包含一個整…

影刀RPA拓展-Python變量類型轉換

1. Python變量類型轉換概述 1.1 類型轉換的必要性 Python作為一種動態類型語言,在編程過程中經常需要進行變量類型轉換。這主要是因為不同數據類型在存儲結構、運算規則和使用場景上存在差異,而在實際開發中,我們常常需要對不同類型的數據進…

Python pyqt+flask做一個簡單實用的自動排班系統

這是一個基于Flask和PyQt的排班系統,可以將Web界面嵌入到桌面應用程序中。 系統界面: 功能特點: - 讀取員工信息和現有排班表 - 自動生成排班表 - 美觀的Web界面 - 獨立的桌面應用程序 整體架構: 系統采用前后端分離的架構…