《零基礎入門AI:深度學習中的視覺處理(卷積神經網絡(CNN)進階)》

一、卷積知識擴展

1. 二維卷積

單通道版本

對于單通道輸入圖像 III (尺寸 H×WH \times WH×W) 和卷積核 KKK (尺寸 F×FF \times FF×F),輸出特征圖 OOO 的計算公式為:

O(i,j)=∑m=0F?1∑n=0F?1I(i+m,j+n)?K(m,n)O(i,j) = \sum_{m=0}^{F-1} \sum_{n=0}^{F-1} I(i+m, j+n) \cdot K(m, n)O(i,j)=m=0F?1?n=0F?1?I(i+m,j+n)?K(m,n)

計算過程示例

在這里插入圖片描述

多通道版本

對于多通道輸入 III (尺寸 H×W×CinH \times W \times C_{in}H×W×Cin?) 和卷積核 KKK (尺寸 F×F×CinF \times F \times C_{in}F×F×Cin?),輸出特征圖的計算公式為:

O(i,j)=∑c=0Cin?1∑m=0F?1∑n=0F?1Ic(i+m,j+n)?Kc(m,n)+bO(i,j) = \sum_{c=0}^{C_{in}-1} \sum_{m=0}^{F-1} \sum_{n=0}^{F-1} I_c(i+m, j+n) \cdot K_c(m, n) + bO(i,j)=c=0Cin??1?m=0F?1?n=0F?1?Ic?(i+m,j+n)?Kc?(m,n)+b

其中 bbb 是偏置項,每個輸出通道有獨立的偏置。

在這里插入圖片描述

在這里插入圖片描述

2. 三維卷積

三維卷積用于處理時空數據(如視頻、3D醫學影像):

  • 輸入維度:深度 × 高度 × 寬度 × 通道 (D×H×W×C)
  • 卷積核維度:時間/深度 × 高度 × 寬度 × 輸入通道 × 輸出通道 (T×F×F×C_in×C_out)
  • 輸出計算:
    O(d,i,j)=∑t=0T?1∑c=0Cin?1∑m=0F?1∑n=0F?1Ic(d+t,i+m,j+n)?Kc,t(m,n)O(d,i,j) = \sum_{t=0}^{T-1} \sum_{c=0}^{C_{in}-1} \sum_{m=0}^{F-1} \sum_{n=0}^{F-1} I_c(d+t, i+m, j+n) \cdot K_{c,t}(m, n)O(d,i,j)=t=0T?1?c=0Cin??1?m=0F?1?n=0F?1?Ic?(d+t,i+m,j+n)?Kc,t?(m,n)

在這里插入圖片描述

應用場景

  • 視頻動作識別
  • 3D醫學圖像分割
  • 氣象數據分析

3. 反卷積(轉置卷積)

反卷積用于上采樣操作,常見于圖像分割和生成模型:

計算過程

  1. 在輸入特征圖元素間插入零填充
  2. 應用標準卷積操作

在這里插入圖片描述

數學表示
輸入 XXX (尺寸 Hin×WinH_{in} \times W_{in}Hin?×Win?),輸出 YYY (尺寸 Hout×WoutH_{out} \times W_{out}Hout?×Wout?):
KaTeX parse error: Expected 'EOF', got '_' at position 57: … + \text{kernel_?size} - 2 \time…

底層計算
通過矩陣轉置實現:

  • 標準卷積:Y=WXY = WXY=WX
  • 反卷積:X=WTYX = W^TYX=WTY

在這里插入圖片描述

4. 膨脹卷積(空洞卷積)

膨脹卷積通過間隔采樣擴大感受野:

  • 膨脹率 rrr:采樣間隔
  • 實際感受野:F′=F+(F?1)(r?1)F' = F + (F-1)(r-1)F=F+(F?1)(r?1)

在這里插入圖片描述

計算公式
O(i,j)=∑m=0F?1∑n=0F?1I(i+r?m,j+r?n)?K(m,n)O(i,j) = \sum_{m=0}^{F-1} \sum_{n=0}^{F-1} I(i + r \cdot m, j + r \cdot n) \cdot K(m, n)O(i,j)=m=0F?1?n=0F?1?I(i+r?m,j+r?n)?K(m,n)

優勢

  • 不增加參數量的情況下擴大感受野
  • 保持特征圖分辨率
  • 適用于語義分割(如DeepLab)

5. 可分離卷積

空間可分離卷積

將大卷積核分解為小核乘積:
K3x3=K3x1×K1x3K_{3x3} = K_{3x1} \times K_{1x3}K3x3?=K3x1?×K1x3?

原始3x3核:     分解后:
[a,b,c]         [a]   [x,y,z]
[d,e,f]   =>    [d] × [x,y,z]
[g,h,i]         [g]

優勢:參數量從9減少到6(3+3)

圖示:

在這里插入圖片描述

深度可分離卷積

分為兩步:

  1. 深度卷積:單通道卷積
    • 輸入:H×W×CinH \times W \times C_{in}H×W×Cin?
    • 輸出:H×W×CinH \times W \times C_{in}H×W×Cin?
  2. 逐點卷積:1×1卷積
    • 輸入:H×W×CinH \times W \times C_{in}H×W×Cin?
    • 輸出:H×W×CoutH \times W \times C_{out}H×W×Cout?

參數量對比

  • 標準卷積:F×F×Cin×CoutF \times F \times C_{in} \times C_{out}F×F×Cin?×Cout?
  • 深度可分離:(F×F×Cin)+(1×1×Cin×Cout)(F \times F \times C_{in}) + (1 \times 1 \times C_{in} \times C_{out})(F×F×Cin?)+(1×1×Cin?×Cout?)

效率提升:MobileNet中可減少8-9倍計算量

圖1:輸入圖的每一個通道,我們都使用了對應的卷積核進行卷積。 通道數量 = 卷積核個數,每個卷積核只有一個通道

在這里插入圖片描述

圖2:完成卷積后,對輸出內容進行1x1的卷積

在這里插入圖片描述

6. 分組卷積

將輸入通道分為 GGG 組,每組獨立卷積:

  • 標準卷積:所有輸入通道→所有輸出通道
  • 分組卷積:組內輸入通道→組內輸出通道

在這里插入圖片描述

數學表達
Og(i,j)=∑c∈groupg∑m∑nIc(i+m,j+n)?Kg,c(m,n)O_g(i,j) = \sum_{c \in \text{group}_g} \sum_{m} \sum_{n} I_c(i+m,j+n) \cdot K_{g,c}(m,n)Og?(i,j)=cgroupg??m?n?Ic?(i+m,j+n)?Kg,c?(m,n)

優勢

  • 減少參數量和計算量
  • 促進特征多樣性學習
  • ResNeXt、ShuffleNet基礎

7. 混洗分組卷積

在分組卷積后添加通道混洗操作:

  1. 分組卷積
  2. 重組通道:將不同組的特征混合

在這里插入圖片描述

實現步驟

輸入
分組卷積
通道混洗
輸出

作用:增強組間信息交流,提升特征融合能力

8. 扁平卷積

使用1×1卷積核進行通道變換:

  • 數學運算:O(i,j,c)=∑k=0Cin?1I(i,j,k)?W(c,k)O(i,j,c) = \sum_{k=0}^{C_{in}-1} I(i,j,k) \cdot W(c,k)O(i,j,c)=k=0Cin??1?I(i,j,k)?W(c,k)
  • 作用:
    • 降維/升維
    • 跨通道信息融合
    • 保持空間分辨率

在這里插入圖片描述

二、感受野

1. 感受野的概念

感受野指卷積網絡中單個神經元對應輸入圖像的區域大小。它反映了神經元能"看到"的原始輸入范圍。

計算示例

層1: 3x3卷積 → 感受野=3x3
層2: 3x3卷積 → 感受野=5x5 (考慮重疊)
層3: 3x3卷積 → 感受野=7x7

在這里插入圖片描述

2. 感受野的作用

特征抽象層次
網絡深度感受野大小特征抽象級別
淺層小 (3-7像素)邊緣、紋理
中層中 (15-40像素)形狀、部件
深層大 (>100像素)物體、場景
設計注意點
  1. 輸入尺寸匹配:最終層感受野應大于目標物體
  2. 架構優化:通過膨脹卷積高效擴大感受野
  3. 多尺度融合:組合不同感受野的特征(如FPN)

計算公式
RFl=RFl?1+(kl?1)×∏i=1l?1siRF_{l} = RF_{l-1} + (k_l - 1) \times \prod_{i=1}^{l-1} s_iRFl?=RFl?1?+(kl??1)×i=1l?1?si?
其中:

  • RFlRF_lRFl?:第 lll 層的感受野
  • klk_lkl?:第 lll 層卷積核大小
  • sis_isi?:第 iii 層步長

三、卷積神經網絡案例:CIFAR-10分類

1. 模型結構設計

輸入 32x32x3
卷積64, 3x3
ReLU
最大池化 2x2
卷積128, 3x3
ReLU
最大池化 2x2
卷積256, 3x3
ReLU
全局平均池化
全連接10
Softmax

2. 網絡模型定義

import torch.nn as nnclass CNN(nn.Module):def __init__(self):super(CNN, self).__init__()self.conv1 = nn.Conv2d(3, 64, 3, padding=1)self.pool = nn.MaxPool2d(2, 2)self.conv2 = nn.Conv2d(64, 128, 3, padding=1)self.conv3 = nn.Conv2d(128, 256, 3, padding=1)self.gap = nn.AdaptiveAvgPool2d(1)  # 全局平均池化self.fc = nn.Linear(256, 10)def forward(self, x):x = self.pool(F.relu(self.conv1(x)))x = self.pool(F.relu(self.conv2(x)))x = F.relu(self.conv3(x))x = self.gap(x)x = x.view(-1, 256)x = self.fc(x)return x

3. 核心模塊解析

模塊作用數學原理
卷積層特征提取y=W?x+by = W \ast x + by=W?x+b
ReLU引入非線性f(x)=max?(0,x)f(x) = \max(0,x)f(x)=max(0,x)
最大池化降維y=max?(xi:i+k,j:j+k)y = \max(x_{i:i+k,j:j+k})y=max(xi:i+k,j:j+k?)
全局平均池化空間信息聚合yc=1H×W∑i∑jxc,i,jy_c = \frac{1}{H \times W} \sum_i \sum_j x_{c,i,j}yc?=H×W1?i?j?xc,i,j?
Softmax分類概率輸出pc=ezc∑kezkp_c = \frac{e^{z_c}}{\sum_{k} e^{z_k}}pc?=k?ezk?ezc??

4. CIFAR-10數據集

  • 10類物體(飛機、汽車、鳥等)

  • 50,000訓練圖像 + 10,000測試圖像

  • 分辨率32×32 RGB

  • 數據加載:

    transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
    ])trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
    

5. 數據增強策略

train_transform = transforms.Compose([transforms.RandomHorizontalFlip(),  # 隨機水平翻轉transforms.RandomRotation(15),      # 隨機旋轉(-15°~15°)transforms.ColorJitter(             # 顏色調整brightness=0.2, contrast=0.2, saturation=0.2),transforms.RandomResizedCrop(32, scale=(0.8, 1.0)),  # 隨機縮放裁剪transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])

6. 模型訓練與保存

model = CNN().cuda()
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)for epoch in range(50):for inputs, labels in train_loader:inputs, labels = inputs.cuda(), labels.cuda()# 前向傳播outputs = model(inputs)loss = criterion(outputs, labels)# 反向傳播optimizer.zero_grad()loss.backward()optimizer.step()# 每10輪保存一次if epoch % 10 == 0:torch.save(model.state_dict(), f'model_epoch_{epoch}.pth')

7. 模型驗證流程

model.load_state_dict(torch.load('best_model.pth'))
model.eval()  # 切換到評估模式correct = 0
total = 0with torch.no_grad():for images, labels in test_loader:images, labels = images.cuda(), labels.cuda()outputs = model(images)_, predicted = torch.max(outputs.data, 1)total += labels.size(0)correct += (predicted == labels).sum().item()print(f'準確率: {100 * correct / total}%')

8. 實時訓練可視化

使用TensorBoard記錄:

from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter()for epoch in range(epochs):# ...訓練循環...writer.add_scalar('Loss/train', loss.item(), epoch)writer.add_scalar('Accuracy/train', acc, epoch)# 可視化卷積核if epoch % 5 == 0:for name, param in model.named_parameters():if 'conv' in name and 'weight' in name:writer.add_histogram(name, param, epoch)writer.add_images(f'{name}_kernels', param.data[:8].unsqueeze(1), epoch)

關鍵概念總結

卷積類型對比

卷積類型參數量計算量適用場景
標準卷積通用模型
深度可分離極低極低移動端模型
膨脹卷積不變不變語義分割
分組卷積減少減少高效模型
反卷積生成模型

感受野計算表

核大小步長感受野
Conv1313
Pool1224
Conv2318
Pool22212
Conv33120

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

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

相關文章

pyecharts可視化圖表-pie:從入門到精通(進階篇)

歡迎來到pyecharts餅圖系列教程的進階篇!在上一篇基礎教程中,我們學習了餅圖的基本概念和簡單實現。在本文中,我們將深入探索pyecharts中餅圖的六種高級用法和自定義選項,包括環形餅圖、富文本標簽餅圖、滾動圖例餅圖、環形圖、嵌…

【JAVA 核心編程】面向對象高級:類變量與方法 抽象類與接口

一、類變量與類方法(靜態變量) 1)類變量 class Child{private String name;//定義一個變量count,是一個類變量(靜態變量)static靜態//該變量最大的特點就是會被Child 類的所有對象訪問public static int co…

【Java基礎面試題】數據類型

Java面試高頻總結:基本數據類型深度解析 📊 八種基本數據類型詳解數據類型關鍵字字節數位數默認值取值范圍核心特性字節型byte180-128 ~ 127最小整數類型短整型short2160-32,768 ~ 32,767較少使用整型int4320-2 ~ 2-1 (約21億)最常用整數類型長整型long8…

攻防世界—unseping(反序列化)

一.審題<?php highlight_file(__FILE__);class ease{private $method;private $args;function __construct($method, $args) {$this->method $method;$this->args $args;}function __destruct(){if (in_array($this->method, array("ping"))) {call_u…

AI熱點周報(8.10~8.16):AI界“冰火兩重天“,GPT-5陷入熱議,DeepSeek R2模型訓練受阻?

名人說&#xff1a;博觀而約取&#xff0c;厚積而薄發。——蘇軾《稼說送張琥》 創作者&#xff1a;Code_流蘇(CSDN)&#xff08;一個喜歡古詩詞和編程的Coder&#x1f60a;&#xff09; 目錄3分鐘速覽版&#xff1a;一張表看懂本周AI大事一、GPT-5&#xff1a;期待越高&#x…

Python_vue3_django旅拍在線婚紗攝影網站的設計與實現016023190_源碼LW_講解安裝

目錄前言-本系統介紹已開發項目效果實現截圖開發技術詳細介紹論文設計框架系統測試核心代碼參考示例總結源碼獲取詳細視頻演示或者查看其他版本&#xff1a;文章底部獲取博主聯系方式&#xff01;前言-本系統介紹 利用Python語言、MySQL數據庫&#xff0c;Django框架&#xff0…

Python爬蟲-爬取政務網站的文檔正文內容和附件數據

前言 本文是該專欄的第67篇,后面會持續分享python爬蟲干貨知識,記得關注。 本文,筆者以某政務網站為例子。基于Python爬蟲采集某政務網站的文檔正文內容和其關聯的附件數據。 具體的實現思路以及完整實現代碼邏輯,筆者將在正文進行詳細介紹。廢話不多說,跟著筆者直接往下…

Python:如何在Pycharm中顯示geemap地圖?

01 說明 或許在舊版本的python和jupyter中并不能成功. 作為參考&#xff0c;這里給出實驗成功的版本&#xff1a;名稱版本通道geemap0.36.1conda-forgejupyter1.1.1conda-forgepycharm2024.1.4 (Professional Edition)nullpython3.11.13conda-forge此外&#xff0c;由于顯示底圖…

力扣3:無重復字符的最長子串

力扣3:無重復字符的最長子串題目思路代碼題目 給定一個字符串 s &#xff0c;請你找出其中不含有重復字符的 最長 子串 的長度。 思路 這道題的思路其實是很簡單的&#xff0c;最后我們需要得到子串的長度所以我們可以定義兩個變量即子串的左邊界和右邊界這樣有了左右邊界就…

Git登錄配置的詳細方法

Git登錄綁定主要涉及配置用戶信息和設置身份驗證。以下是詳細的配置方法&#xff1a; 1. 配置基本用戶信息 # 全局配置用戶名和郵箱 git config --global user.name "你的用戶名" git config --global user.email "你的郵箱example.com"# 或者為單個倉庫配…

測試工程師的AI轉型指南:從工具使用到測試策略重構

測試工程師的AI轉型指南&#xff1a;從工具使用到測試策略重構 測試工程師正站在職業轉型的十字路口。當GitHub Copilot能自動生成測試用例&#xff0c;AI性能工具能預測系統瓶頸&#xff0c;傳統“手動執行用例、人工分析結果”的工作模式正被顛覆。某互聯網公司測試團隊的調研…

3D打印——給開發板做外殼

3D打印——給開發板做外殼前言一、建立開發板3D模型根據開發板尺寸繪制草圖繪制PCB草圖&#xff08;手動&#xff09;繪制PCB草圖&#xff08;導入&#xff09;拉伸PCB板下載零件3D模型裝配零件二、建立外殼3D模型盒子蓋子&#xff08;卡扣&#xff09;最終效果三、問題記錄前言…

Spring AI架構分析

Spring AISpring AI開發框架提供對接應用與AI模型的集成開發能力&#xff0c;讓開發者更加容易地開發智能體以及其他生成式人工智能的應用&#xff1a;模型&#xff08;Model&#xff09;AI模型是算法與數據的集合&#xff0c;用于處理信息以及生成信息&#xff0c;主要AI模型的…

Javar如何用RabbitMQ訂單超時處理

RabbitMQ 訂單超時處理方案 使用 RabbitMQ 的 TTL 死信隊列&#xff08;DLX&#xff09; RabbitMQ 的 TTL&#xff08;Time-To-Live&#xff09; 和 死信隊列&#xff08;Dead Letter Exchange&#xff09; 是處理訂單超時的常見方案。核心思路是設置消息的過期時間&#xff0…

記錄一下 StarRocks 點查的 Profile Metrics

背景 Starrocks 3.5 補充兩個點查的 profile 一個是沒有開啟點查的情況&#xff0c;也就是SET enable_short_circuit false; 一個是開啟點查的情況&#xff0c;也就是SET enable_short_circuit true; 其中建表語句如下&#xff1a; CREATE TABLE ac_account (id bigint(20) …

react echarts圖表監聽窗口變化window.addEventListener(‘resize’)與ResizeObserver()

發生問題場景 系統頁面使用tabs標簽頁,當有多個組件&#xff0c;有使用eCharts圖表的頁面時&#xff0c;其中的一個頁面或其他頁面使用了F11的頁面全屏&#xff0c;關閉全屏后圖表會收縮起來(注:固定eCharts的width、height 的參數值是無影響&#xff0c;按照固定參數大小展示)…

Leaflet賦能:WebGIS視角下的省域區縣天氣可視化實戰攻略

目錄 前言 一、空間數據基礎 1、省域空間檢索 2、區縣天氣信息檢索 二、天氣數據簡介 1、省域天氣數據獲取 2、區縣名稱不一致 三、SpringBoot后臺實現 1、Java后臺天氣數據查詢 2、控制層實現 四、WebGIS前端實現 1、氣溫顏色及圖例初始化 2、氣溫數據展示實現 五…

《SeeClick: Harnessing GUI Grounding for Advanced Visual GUI Agents》論文精讀筆記

前言 論文鏈接&#xff1a;[2401.10935] SeeClick: Harnessing GUI Grounding for Advanced Visual GUI Agents SeeClick是一種只依賴截圖就能執行自動化任務的方法。 在這篇論文中&#xff0c;還提出了ScreenSpot數據集&#xff0c;涵蓋移動端、桌面和Web環境的真實benchma…

校園綜合數據分析可視化大屏 -Vue純前端靜態頁面項目

最近一直在學習用vue來制作 一些 大屏報表的網站&#xff0c;今天就來分享一個我最近做的一個 關于校園綜合數據分析可視化大屏的網站。 使用的技術是vue2 element-uiVue2&#xff1a;Element-UI&#xff1a;ECharts&#xff1a;Node版本 16.20 安裝依賴&#xff1a;n…

【adb端口5555】烽火hg680-gy_烽火hg680-gc安卓9線刷燒錄包 解決用一段時間就提示升級的問題

烽火hg680-gy_烽火hg680-gc安卓9線刷燒錄包 解決提示升級的問題本固件可用于那些adb打不開或無法用U盤成功刷機的盒子&#xff1b;本固件需要準備一個TTL線哦&#xff1b;CH340型號的 可以網上自購&#xff1b;TTL鏈接點 參考下圖&#xff1a;其他也沒有特別需要說明了的&#…