深度學習零基礎入門(3)-圖像與神經網絡

好久不見~我又回來了

這一節我們來講一講圖像在計算機中的本質,以及全連接神經網絡的缺陷,進而引出卷積神經網絡


一、圖像在計算機中的本質

不知道你有沒有學過數據結構,在講這一部分的時候對數組進行了擴展,講到了廣義表和壓縮矩陣,其中壓縮矩陣用來壓縮圖像信息進行傳遞。

在計算機中,圖像本質上是一個數字矩陣。每個像素點對應一個數值,表示顏色或亮度信息。
具體來說:

  • 對于灰度圖像,它是一個二維矩陣 I∈RH×WI \in \mathbb{R}^{H \times W}IRH×W,其中 HHH 是高度(行數),WWW 是寬度(列數),每個元素 I(i,j)I(i,j)I(i,j) 表示像素在位置 (i,j)(i,j)(i,j) 的灰度值(范圍通常為 000255255255)。

  • 例如下面這兩張圖

  • 在這里插入圖片描述 在這里插入圖片描述

  • 對于彩色圖像(如 RGB 格式),它是一個三維張量 I∈RH×W×CI \in \mathbb{R}^{H \times W \times C}IRH×W×C,其中 CCC 是通道數(通常 C=3C=3C=3,對應紅、綠、藍三個通道)。每個元素 I(i,j,k)I(i,j,k)I(i,j,k) 表示位置 (i,j)(i,j)(i,j) 在通道 kkk 的顏色強度。

例如,一個 32×3232 \times 3232×32 的 RGB 圖像可表示為:
I=[[I11R,I11G,I11B]?[I1WR,I1WG,I1WB]???[IH1R,IH1G,IH1B]?[IHWR,IHWG,IHWB]] I = \begin{bmatrix} [I_{11}^R, I_{11}^G, I_{11}^B] & \cdots & [I_{1W}^R, I_{1W}^G, I_{1W}^B] \\ \vdots & \ddots & \vdots \\ [I_{H1}^R, I_{H1}^G, I_{H1}^B] & \cdots & [I_{HW}^R, I_{HW}^G, I_{HW}^B] \end{bmatrix} I=?[I11R?,I11G?,I11B?]?[IH1R?,IH1G?,IH1B?]?????[I1WR?,I1WG?,I1WB?]?[IHWR?,IHWG?,IHWB?]??
這種表示方式便于計算機處理,但圖像數據通常維度很高(尤其是彩色圖片,如 1000×10001000 \times 10001000×1000 像素的圖像有 10610^6106 個元素),這給數據存儲和神經網絡處理帶來了挑戰。

二、壓縮矩陣

針對復雜的彩色圖片,圖像壓縮是必要的
原始圖像矩陣通常包含大量冗余數據(如相鄰像素相似),導致文件大小過大,不利于存儲或傳輸。壓縮的目標是減少數據量,同時保持視覺質量。
壓縮分為兩類:

  • 無損壓縮:保留所有原始數據,如PNG格式,使用矩陣操作(如游程編碼)。
  • 有損壓縮:犧牲少量細節以換取更高壓縮率,如JPEG格式,基于矩陣變換(如離散余弦變換)

壓縮過程直接操作圖像矩陣:
變換編碼:將圖像矩陣轉換為頻域表示,減少空間冗余。例如,在JPEG壓縮中,圖像被分成8×8塊,每個塊通過離散余弦變換(DCT)轉換為系數矩陣。DCT公式為: F(u,v)=2NC(u)C(v)∑i=0N?1∑j=0N?1f(i,j)cos?((2i+1)uπ2N)cos?((2j+1)vπ2N) F(u,v) = \frac{2}{N} C(u) C(v) \sum_{i=0}^{N-1} \sum_{j=0}^{N-1} f(i,j) \cos\left(\frac{(2i+1)u\pi}{2N}\right) \cos\left(\frac{(2j+1)v\pi}{2N}\right) F(u,v)=N2?C(u)C(v)i=0N?1?j=0N?1?f(i,j)cos(2N(2i+1)uπ?)cos(2N(2j+1)vπ?) 其中N=8N=8N=8f(i,j)f(i,j)f(i,j)是原始像素矩陣元素,F(u,v)F(u,v)F(u,v)是變換后的系數矩陣元素。
量化:壓縮矩陣通過量化表(另一個矩陣)縮放DCT系數,丟棄高頻細節(人眼不敏感部分),實現數據壓縮。量化公式為: Q(u,v)=round(F(u,v)Qtable(u,v)) Q(u,v) = \text{round}\left(\frac{F(u,v)}{Q_{\text{table}}(u,v)}\right) Q(u,v)=round(Qtable?(u,v)F(u,v)?) 其中QtableQ_{\text{table}}Qtable?是預定義的量化矩陣。
編碼:量化后的矩陣通過熵編碼(如Huffman編碼)進一步壓縮為二進制流。
關系總結:圖像矩陣是壓縮的起點,壓縮算法生成新的“壓縮矩陣”(如DCT系數矩陣),最終輸出為壓縮文件。解壓時,逆過程重建近似原矩陣。
當然這一部分要求線代基礎知識,看不懂沒有關系,了解即可

三、全連接神經網絡的缺陷

全連接神經網絡(FCNN)在處理圖像時存在嚴重缺陷,主要源于其結構:

  • 參數爆炸問題:在 FCNN 中,每個輸入節點(像素)都連接到隱藏層所有節點。設輸入大小為 nnn(如圖像展平為向量 x∈Rnx \in \mathbb{R}^nxRn),隱藏層大小為 mmm,則權重矩陣 W∈Rm×nW \in \mathbb{R}^{m \times n}WRm×n 的參數數量為 m×nm \times nm×n。對于 H×WH \times WH×W 的圖像,n=H×Wn = H \times Wn=H×W(灰度)或 n=H×W×Cn = H \times W \times Cn=H×W×C(彩色)。例如,1000×10001000 \times 10001000×1000 的 RGB 圖像輸入,n≈3×106n \approx 3 \times 10^6n3×106,若隱藏層 m=1000m=1000m=1000,參數量高達 3×1093 \times 10^93×109,導致訓練困難、內存不足。
  • 計算效率低下:前向傳播的計算復雜度為 O(m×n)O(m \times n)O(m×n),在圖像任務中計算量巨大,難以實時處理。
  • 缺乏局部性:FCNN 忽略圖像的空間結構。每個像素獨立處理,無法有效捕捉局部特征(如邊緣、紋理),因為相鄰像素在計算中不共享權重。
  • 過擬合風險高:高參數量使模型容易過擬合小數據集,泛化能力差。
  • 無平移不變性:圖像中物體位置變化(如貓在左或右)會導致輸出劇烈變化,因為權重與絕對位置綁定。

這些缺陷使 FCNN 不適合圖像任務,需要更高效的架構。

四、卷積神經網絡

為解決 FCNN 的缺陷,卷積神經網絡(CNN)被引入。它利用圖像的空間局部性和平移不變性:

  • 卷積層:使用卷積核(filter)在圖像上滑動,計算局部區域的內積。設輸入圖像 X∈RH×W×CX \in \mathbb{R}^{H \times W \times C}XRH×W×C,卷積核 K∈RFh×Fw×C×DK \in \mathbb{R}^{F_h \times F_w \times C \times D}KRFh?×Fw?×C×DFh,FwF_h, F_wFh?,Fw? 為核大小,DDD 為輸出通道數),輸出特征圖 YYY 的元素為:
    Y(i,j,d)=∑m=0Fh?1∑n=0Fw?1∑c=0C?1K(m,n,c,d)?X(i+m,j+n,c) Y(i,j,d) = \sum_{m=0}^{F_h-1} \sum_{n=0}^{F_w-1} \sum_{c=0}^{C-1} K(m,n,c,d) \cdot X(i+m,j+n,c) Y(i,j,d)=m=0Fh??1?n=0Fw??1?c=0C?1?K(m,n,c,d)?X(i+m,j+n,c)
    這實現了權重共享和稀疏連接,大幅減少參數(如 3×33 \times 33×3 核僅需 9×C×D9 \times C \times D9×C×D 參數)。
  • 優勢
    • 參數高效:卷積核在整張圖像共享權重,避免參數爆炸。
    • 局部特征提取:捕捉邊緣、角點等局部模式。
    • 平移不變性:物體位置變化不影響特征檢測。
    • 層次結構:通過多層卷積和池化,逐步抽象特征(從低級紋理到高級語義)。

CNN 的典型結構包括卷積層、激活函數(如 ReLU)、池化層和全連接層。以下是一個簡單 CNN 的 PyTorch 實現示例:

import torch
import torch.nn as nnclass SimpleCNN(nn.Module):def __init__(self, num_classes=10):super(SimpleCNN, self).__init__()# 卷積層: 輸入通道3 (RGB), 輸出通道16, 核大小3x3self.conv1 = nn.Conv2d(3, 16, kernel_size=3, stride=1, padding=1)# 池化層: 2x2 最大池化self.pool = nn.MaxPool2d(kernel_size=2, stride=2)# 全連接層: 輸入尺寸基于圖像大小 (假設輸入32x32)self.fc = nn.Linear(16 * 16 * 16, num_classes)  # 池化后尺寸減半: 32/2=16def forward(self, x):x = self.pool(torch.relu(self.conv1(x)))  # 卷積 + ReLU + 池化x = x.view(x.size(0), -1)  # 展平x = self.fc(x)return x# 示例用法
model = SimpleCNN()
input_image = torch.randn(1, 3, 32, 32)  # 批大小1, 通道3, 高度32, 寬度32
output = model(input_image)
print(output.shape)  # 輸出: torch.Size([1, 10])

此代碼展示了 CNN 如何高效處理圖像:卷積層提取特征,池化層降維,全連接層分類。CNN 已成為計算機視覺的基石,廣泛應用于圖像識別、目標檢測等任務。


總結一下:圖像在計算機中是矩陣方式進行存儲的,而CNN卷積神經網絡能夠高效處理圖像,下一節我們來詳細分析CNN的整體架構

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

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

相關文章

http性能測試命令ab

在 Linux系統中, ab( ApacheBench)是一個用于 測試HTTP服務器性能的 工具。它是 Apache HTTP服務器項目的 一部分,專門設計用來模擬 多個用戶對 服務器發起 并發請求,從而 評估服務器的 負載能力和 響應時間其中&#…

從0開始學習R語言--Day50--ROC曲線

對于已經擬合好的生存模型,我們一般會直接用ROC去評判一下整體的水平,因為很多時候閾值都是我們人為根據實際情況去設定的,這種微調的細節都是在整體模型的擬合程度確定下來后再做的工作。ROC曲線可以提供給我們模型對于二分類變量的區分能力…

從Hyperliquid到AILiquid:一場從極致性能到策略智能的迭代

在Hyperliquid以極致性能引爆鏈上衍生品交易熱潮之后,DeFi市場正迎來新一輪的范式轉變。作為AI原生的下一代交易平臺,AILiquid正式上線并引發市場廣泛關注。該平臺不僅保留了高頻低延遲的交易體驗,更通過AI撮合引擎與鏈上風險控制系統&#x…

磁懸浮軸承轉子不平衡質量控制:陷波濾波器深度解析

在磁懸浮軸承高速旋轉的世界里,不平衡質量如同一個無形的幽靈,引發危險的同步振動,而陷波濾波器,正是精準捕獲并消除這個幽靈的“電磁獵手”。本文將深入剖析其核心原理與實戰設計。引言:同步振動的致命誘惑磁懸浮軸承…

Oracle 數據庫常見等待事件參數詳解

在 Oracle 數據庫的性能診斷與優化中,等待事件是重要的分析依據,而理解等待事件的參數則是深入排查問題的基礎。本文將結合 Oracle 官方文檔,對數據庫中常見的等待事件參數進行詳細解析,幫助數據庫管理員和開發人員更好地解讀等待…

STM32中的CAN總線詳解:從原理到實戰

前言:為什么CAN總線是嵌入式通信的"硬通貨"? 在嵌入式通信領域,CAN(Controller Area Network)總線憑借其高可靠性、實時性和多節點通信能力,成為汽車電子、工業控制、智能設備等領域的"標配…

【鴻蒙HarmonyOS】鴻蒙app開發入門到實戰教程(二):封裝自定義可復用組件

組件的可復用性,對我們開發的app質量影響很大,看看鴻蒙中如何封裝這種組件 實現效果代碼實現 局部封裝 Builder titleBuilder(title:string 默認標題) {// Builder裝飾此函數,使其能以鏈式調用的方式配置并構建Text組件Row(){Text(title).fo…

Volo-HTTP 0.4.0發布:正式支持 HTTP/2,客戶端易用性大幅提升!

🤖 VOLO簡介 Volo 是由字節跳動服務框架團隊開源的一款高性能、易用的 Rust RPC 框架。 Volo 框架自身開銷極低,并提供了命令行工具與靈活的中間件設計,讓開發者可以輕松上手,享受 Rust 帶來的開發樂趣。 本文介紹自 Volo-HTTP 0…

HTTP相關知識

文章目錄一、基礎特性與規范二、頁面元素與布局三、交互與表單四、網絡通信基礎流程(以瀏覽器訪問網頁為例)五、配套技術與工具六、知識關聯圖(簡化版)一、基礎特性與規范 技術定位:HTML 是前端技術棧的核心標記語言&…

機器人-組成結構

目錄 一、發展歷程 二、軟件硬件算法深讀耦合 感知 - 決策 - 執行 1.機械系統: 2.驅動系統: 3.感知系統: 4.控制系統: 5.決策/智能系統: 6.電源系統: 7.總結 一、發展歷程 國際標準化組織(ISO)對…

pycharm結構查看器

v表示整個文件中定義的變量,c是類灰色部分是繼承的父類的,明亮的是定義的,其中m表示定義的函數,f表示

AdsPower 功能詳解 | 應用中心使用指南:插件統一管理更高效、更安全!

當你使用 AdsPower 管理多個瀏覽器環境時,插件的統一配置就變得尤為重要。而「應用中心」正是幫助你集中管理瀏覽器插件的功能入口,搭配瀏覽器環境使用,可以讓賬號操作更便捷、團隊協作更高效。這篇教程將帶你快速上手 AdsPower 應用中心的核…

回歸預測 | MATLAB實現DBO-BP蜣螂算法優化BP神經網絡多輸入單輸出回歸預測

回歸預測 | MATLAB實現DBO-BP蜣螂算法優化BP神經網絡多輸入單輸出回歸預測 目錄 回歸預測 | MATLAB實現DBO-BP蜣螂算法優化BP神經網絡多輸入單輸出回歸預測 預測效果 基本介紹 主要功能 邏輯關聯與算法流程 1. 數據準備 2. DBO優化BP參數 3. BP神經網絡構建 4. 預測與評估 運行…

Lsposed/Xposed

1.環境 1.1 xposed: 安卓8以下使用 下載并安裝xposed installer,模擬器需勾選設置-共享磁盤。 若提示未激活,需要下載sdk sdk下載地址 放置目錄 /sdcard/Android/data/de.robv.android.xposed.installer/cache/downloads/framework/文件權限設置 777 …

3D工業相機是什么?如何選擇和使用它?

工業自動化越來越深入,3D成像技術(3D工業相機)在工業生產中越來越重要。這篇文章就來說說3D工業相機的技術原理、具體能應用在哪以及怎么選3D相機,給大家做個參考。一、 技術定義與核心特點3D工業相機,簡單說就是一種特…

有哪些好用的原型設計軟件?墨刀、Axure等測評對比

下面是幾款常用原型設計軟件的簡介和對比,重點對墨刀和Axure進行了測評分析,幫助你根據需求做出選擇。💡常見原型設計軟件一覽工具名稱適合人群平臺支持是否協作是否支持交互墨刀(MockingBot)產品經理/團隊協作Web、Wi…

二叉樹思想草稿

二叉樹解體兩種思路 是否可以通過遍歷一遍二叉樹得到答案? 用一個traverse函數配合外部變量實現遍歷的思維模式 是否可以定義一個遞歸函數,通過子樹的答案推導出原問題的答案? 遞歸三部曲: 函數定義,參數,返…

如何區分Bug是前端問題還是后端問題?

在軟件測試中,精準定位Bug的歸屬(前端 or 后端)是高效協作的關鍵。以下是系統化的排查方法,結合技術細節和實戰技巧: 1. 核心判斷邏輯 「數據 vs 展示」二分法: 后端問題:數據本身錯誤(API返回錯誤數據/邏輯錯誤/數據庫問題) 前端問題:數據正確但展示異常(UI渲染錯…

深入解析操作系統中的文件控制塊(FCB):從原理到現代實現演進

一、FCB的核心概念與基礎結構文件控制塊(File Control Block, FCB)是操作系統管理文件的核心元數據結構,充當文件系統與物理存儲間的橋梁。FCB本質上是文件在內存中的映射,包含文件的所有管理信息。傳統FCB通常占據32-44字節空間&…

python原生處理properties文件

這個工具類使用 Python 的 configparser 模塊操作 .properties 文件,核心是將 .properties 格式適配為 configparser 支持的 .ini 格式。 核心代碼解釋 1. 類初始化與配置解析 class Properties:def __init__(self, file_path: str, encoding: str utf-8):self.fil…