Python----卷積神經網絡(卷積為什么能識別圖像)

一、卷積的概念

????????卷積是一種數學運算,通常用于信號處理和圖像分析。在卷積神經網絡中,卷積操作用于提取輸入數據(如圖像)中的特征。通過將輸入數據與卷積核(濾波器)進行卷積運算,CNN能夠識別圖像中的邊緣、紋理和其他重要特征。

二、卷積核的概念

????????卷積核(或稱為濾波器)是一個小矩陣,通常比輸入數據的尺寸小。卷積核在輸入圖像上滑動(即進行卷積運算),計算在其覆蓋區域內的加權和,從而生成特征圖(feature map)。卷積核的參數通常是可以學習的,訓練過程中會自動調整以優化模型的性能。

????????卷積核其實是一個小矩陣,在定義時需要考慮以下幾方面的內容:

????????????????卷積核的個數:卷積核的個數決定了其輸出特征矩陣的通道數。

????????????????卷積核的值:卷積核的值是自定義的,根據想要提取的特征來進行設置的,后續 進行更新,就像全連接中的 一樣,只是乘積運算變成卷積運算。

????????????????卷積核的大小:常見的卷積核有1x1、3x3、5x5等,注意一般都是奇數x奇數。

三、卷積的過程

卷積過程包括以下幾個步驟:

  1. 選擇卷積核:定義一個大小為?K×K?的卷積核。

  2. 滑動卷積核:將卷積核從輸入圖像的左上角開始,向右和向下滑動,逐步覆蓋整個圖像。

  3. 計算加權和:在卷積核覆蓋的區域,按元素相乘并求和,生成輸出特征圖的相應位置的值。

  4. 重復:繼續移動卷積核,直到覆蓋完所有位置。

????????卷積的過程是將卷積核在圖像上進行滑動計算,每次滑動到一個新的位置時,卷積核 和圖像進行點對點的計算, 并將其求和得到一個新的值,然后將這個新的值加入到特征圖中,最終得到一個新的 特征圖。

????????第一次卷積就是從輸入特征矩陣的左上角開始,通過點對點的計算,就是1x0、 0x0、0x1、0x0等計算,并將其乘積的結果加起來,得到一個新的值1,這就完成第 一次卷積操作。?

????????接著卷積核就會在輸入特征矩陣上不斷的滑動卷積,先向右,到最右邊之后,就會向 下移動一格,然后從最左邊開始向右滑動。也就是說,卷積過程秉持著先左后右、先 上后下的移動規律進行卷積,直到右下角位置為止。?

????????可以通過不斷調整卷積核的大小、卷積核的值和卷積操作的步長,可以提取出不同尺 度和位置的特征。?

????????可以看到,用一條右上到左下的卷積核去和輸入特征做卷積,得到的結果 中,從右上到左下的值變的比其它地方的大。

????????根據分類算法中Softmax和交叉熵的理解,當一個地方的值變大之后,這個值會使得 整個概率分布更加偏向于這個地方, 也就是說,這個地方的概率會變得更高。

????????因此,從Softmax和交叉熵的角度來看,這 個位置的值變大是一個好的預測結果。 在交叉熵損失函數中,它衡量了模型輸出的概率分布與實際標簽的分布之間的差異。

????????具體來說,當某一類別的概率較大而實際標簽對應的類別為1時,交叉熵損失較小; 反之,如果概率較小而實際標簽對應的類別為1時,交叉熵損失較大。

????????因此,通過提高某一特定特征區域的值,模型更加關注這一特征,有助于提高對應類 別的概率得分,從而改善模型的性能。

四、步長

????????步長(stride)是指卷積核在輸入數據上滑動的步幅。步長的大小影響輸出特征圖的尺寸。步長為1時,卷積核每次移動一個像素;步長為2時,卷積核每次移動兩個像素。步長的選擇對卷積層的計算量和特征圖大小有直接影響。

五、Padding

????????Padding(填充值)是指在輸入數據的邊緣添加額外的像素,以控制輸出特征圖的大小。Padding 可以幫助在卷積過程保持空間信息,尤其是當卷積核在輸入邊緣時。通常使用填充(Padding)操作來增加圖像的大小,以便在應用卷積操作時保持輸出 特征圖的大小與輸入特征圖相同或更接近。常用的 Padding 類型包括“VALID”和“SAME”。

5.1、VALID

????????VALID Padding(有效填充)意味著在進行卷積運算時,不在輸入圖像的邊緣添加任何填充值。結果是輸出特征圖的尺寸會小于輸入圖像的尺寸,因為卷積核無法覆蓋到所有輸入數據的邊緣。

5.2、SAME

????????SAME Padding(相同填充)意味著在進行卷積運算時,向輸入圖像的邊緣添加填充值,以確保輸出特征圖的尺寸與輸入圖像相同(在步長為1的情況下)。這樣可以保持特征圖的空間結構,同時又允許卷積核充分利用輸入數據。

六、?卷積核為什么總是選擇奇數大小

????????在深度學習中,卷積核的大小一般選擇奇數是為了方便處理和避免引入不必要的對稱性。

????????當卷積核的大小是奇數時,它具有唯一的一個中心像素,這個中心像素點可以作為滑 動的默認參考點,即錨點。 這使得在進行卷積操作時,卷積核可以在輸入圖像的每個像素周圍均勻地取樣。這樣 的好處是,在進行卷積操作時,可以保持對稱地處理圖像的每個位置,從而避免引入 額外的偏差和不對稱性。

????????相反,如果卷積核的大小是偶數,那么在某些位置上,中心 像素會落在兩個相鄰的像素之間,這可能導致對稱性問題。

????????此外,選擇奇數大小的卷積核還有一個重要的優點是,在進行空間卷積時,可以確保 卷積核有一個明確的中心像素,這有助于處理圖像的邊緣和邊界像素,避免模糊和信 息損失。 當然,并不是所有情況下都必須選擇奇數大小的卷積核。

????????在某些特定情況下,偶數大 小的卷積核也可以使用,并且在某些特定任務中可能表現得更好。但是在大多數情況 下,奇數大小的卷積核是一種常見且推薦的選擇,因為它可以簡化卷積操作,并有助 于保持圖像處理的對稱性和一致性。

七、設計思路

import tensorflow as tf  # 輸入特征張量  
# [batch_size, input_height, input_width, in_channels]  
# 這里創建了一個形狀為 (1, 5, 5, 1) 的輸入張量,代表一個批次,大小為5x5的圖像,1個通道  
input = tf.constant([[  [[1], [0], [0], [0], [1]],  [[0], [1], [0], [1], [0]],  [[0], [0], [1], [0], [0]],  [[0], [1], [0], [1], [0]],  [[1], [0], [0], [0], [1]]  
]], dtype=tf.float32)  # 卷積核張量  
# [kernel_height, kernel_width, in_channels, out_channels]  
# 這里創建了一個形狀為 (3, 3, 1, 1) 的卷積核,代表3x3的濾波器,1個輸入通道,1個輸出通道  
wc1 = tf.constant([[  [[0]], [[0]], [[1]]],  [[[0]], [[1]], [[0]]],  [[[1]], [[0]], [[0]]]  
], dtype=tf.float32)  # 創建卷積層  
# 使用 tf.nn.conv2d 進行卷積操作,strides=[1, 1, 1, 1] 表示在每個維度上移動1步,padding='SAME' 填充使輸出與輸入相同大小  
conv_layer1 = tf.nn.conv2d(input, wc1, strides=[1, 1, 1, 1], padding='SAME')  # 將卷積的輸出轉為 NumPy 數組  
output1 = conv_layer1.numpy()  # 獲取卷積層輸出特征圖的形狀  
batch_size = output1.shape[0]  # 批次大小  
height = output1.shape[1]       # 高度  
width = output1.shape[2]        # 寬度  
channels = output1.shape[3]     # 通道數  # 打印卷積后特征圖的形狀和值  
print(f"卷積后的特征大小: [batch_size={batch_size}, height={height}, width={width}, channels={channels}]")  
print("輸出特征圖:", output1.reshape(height, width))  # 以 (height, width) 的形狀打印輸出特征圖  

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

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

相關文章

linux FTP服務器搭建

FTP服務器搭建 系統環境:ubuntu 搭建方式:win系統下通過ssh連接ubuntu,搭建FTP服務 一、ssh連接 ssh -p 端口 用戶名IP ssh -p 22 ubuntu192.168.1.109 密碼:ubuntu123456 二、安裝配置FTP服務器 1、安裝 sudo apt install v…

語音合成之十韻律之美:TTS如何模擬語音的節奏和語調

韻律之美:TTS如何模擬語音的節奏和語調 1. 引言:韻律在語音合成中的重要性1.1 追求自然的TTS:超越可懂度1.2 定義韻律:語音的音樂1.3 韻律為何重要:傳遞意義、情感與自然度 2. TTS韻律建模的基礎技術2.1 利用文本&…

基于強化學習的用于非剛性圖像配準的引導式超聲采集|文獻速遞-深度學習醫療AI最新文獻

Title 題目 Guided ultrasound acquisition for nonrigid image registration usingreinforcement learning 基于強化學習的用于非剛性圖像配準的引導式超聲采集 01 文獻速遞介紹 超聲成像通常用于引導手術和其他醫療程序,在這些過程中,臨床醫生會持…

數據庫中DDL、DML、DCL的區別是什么?

數據庫中DDL、DML、DCL的區別是什么? 在數據庫的使用過程中,SQL(結構化查詢語言)常常被用來執行不同的操作,主要分為三類:DDL(數據定義語言)、DML(數據操縱語言&#xf…

海量聊天消息處理:ShardingJDBC分庫分表、ClickHouse冷熱數據分離、ES復合查詢方案、Flink實時計算與SpringCloud集成

海量聊天消息處理:ShardingJDBC分庫分表、ClickHouse冷熱數據分離、ES復合查詢方案、Flink實時計算與SpringCloud集成 一、背景介紹 每天有2000萬條聊天消息,一年下來幾千萬億海量數據。為應對這種規模的數據存儲和處理需求,本文將從以下幾…

Vim 中替換字符或文本

在 Vim 中替換字符或文本可以使用 替換命令(substitute),其基本語法為: :[range]s/old/new/[flags]1. 基本替換 命令說明:s/foo/bar/替換當前行的第一個 foo 為 bar:s/foo/bar/g替換當前行的 所有 foo 為 bar:%s/foo/bar/g替換 …

當傳統美術館遇上數字革命:觀眾體驗將迎來哪些顛覆性變革?

當數字科技與藝術創作深度交織,美術館與藝術機構正經歷前所未有的顛覆性浪潮。這是否宣告傳統展覽空間已正式跨入數字媒介主導的新紀元?投影映射與虛擬現實技術不斷突破物理限制,畫布與雕塑的邊界在光影與代碼中逐漸消融。這場革命不僅重構了…

內容/社區APP增長:用Deeplink讓用戶分享的內容“一鍵直達”

對于內容平臺和互動社區APP而言,優質內容的自發傳播是用戶增長和活躍度提升的核心驅動力之一。用戶發現一篇深度好文、一個精彩視頻或是一個引人入勝的討論帖,自然而然地想要分享給好友。然而,這個看似簡單的分享動作,卻往往在觸達…

Uniapp:vite.config.js全局配置

目錄 一、基本概述二、配置自動引入插件一、基本概述 vite.config.js 是一個可選的配置文件,如果項目的根目錄中存在這個文件,那么它會被自動加載,一般用于配置 vite 的編譯選項 二、配置自動引入插件 在項目命令行終端中執行如下代碼 npm install unplugin-auto-import…

JavaScript 與 Java 學習筆記

一、JavaScript 簡介 1. 定義 瀏覽器腳本語言:主要用于實現網頁交互功能(鼠標點擊、鍵盤輸入響應等) 服務器端擴展:通過 Node.js 運行時環境可進行后端開發 2. 核心特點 動態性:可實時修改 DOM 結構(增…

Shell腳本-隨機數實戰案例

在Shell腳本編程中,生成隨機數是一項非常實用的技能。無論是用于模擬、測試、游戲開發還是安全相關的應用(如生成密碼),能夠靈活地生成隨機數都是非常有用的。本文將通過幾個實際的應用案例來展示如何在Shell腳本中使用隨機數解決…

面試算法高頻08-動態規劃-03

練習題 題目描述 你是一個專業的小偷,計劃偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。 給定一個代表每…

基于 EFISH-SBC-RK3588 的無人機多光譜/紅外熱成像邊緣計算方案

一、硬件架構設計? ?核心算力平臺(EFISH-SBC-RK3588)? ?處理器性能?:搭載 8 核 ARM 架構(4Cortex-A762.4GHz 4Cortex-A551.8GHz),集成 6 TOPS NPU 與 Mali-G610 GPU,支持多光譜圖像實時融…

Python小酷庫系列:pyNest,把FastAPI程序寫出Spring的味道

pyNest,把FastAPI程序寫出Spring的風格 快速入門1、安裝pyNest2、創建項目3、編寫app_module.py4、編寫app_service.py5、編寫app_controller.py6、編寫main.py7、啟動程序 核心概念1、Modules2、Controllers3、Providers4、ORM Provider NestJS是風靡于Node.js圈的…

HTML 詳解:從基礎結構到語義標簽

目錄 一、HTML 是什么&#xff1f;二、HTML 的基本結構? 簡要說明&#xff1a; 三、常見 HTML 標簽講解3.1 標題標簽 <h1> ~ <h6>3.2 段落和換行3.3 超鏈接3.4 圖像插入3.5 列表無序列表&#xff1a;有序列表&#xff1a; 3.6 表格結構 四、HTML 語義化標簽詳解五…

用Python做有趣的AI項目 6:AI音樂生成器(LSTM Melody Generator)

&#x1f3b5; 項目名稱&#xff1a;AI音樂生成器&#xff08;LSTM Melody Generator&#xff09; &#x1f9e0; 項目簡介 這個項目的目標是&#xff1a;用 AI 來自動生成簡單的旋律&#xff08;MIDI格式&#xff09;&#xff0c;類似于基礎的鋼琴曲、背景音樂片段。 我們使…

【運維】利用任務計劃程序定時重啟 nssm 服務 | Windows 服務每日定時維護實踐

&#x1f680; 利用任務計劃程序定時重啟 nssm 服務 | Windows 服務每日定時維護實踐 一、前言 在 Windows 系統中&#xff0c;nssm&#xff08;Non-Sucking Service Manager&#xff09; 是一個非常好用的工具&#xff0c;可以將任意可執行程序注冊為系統服務。很多運維場景…

MATLAB小試牛刀系列(1)

問題描述 某機床廠生產甲、乙兩種機床&#xff0c;每臺機床銷售后的利潤分別為 4 千元與 3 千元。生產甲機床需用 A、B 機器加工&#xff0c;加工時間分別為每臺 2h 和每臺 1h&#xff1b;生產乙機床需用 A、B、C 三種機器加工&#xff0c;加工時間均為每臺 1h。若每天可用于加…

云原生周刊:Kubernetes v1.33 正式發布

開源項目推薦 Robusta Robusta 是一個開源的 K8s 可觀測性與自動化平臺&#xff0c;旨在增強 Prometheus 告警的智能化處理能力。它通過規則和 AI 技術對告警進行豐富化處理&#xff0c;自動附加相關的 Pod 日志、圖表和可能的修復建議&#xff0c;支持智能分組、自動修復和高…

React速通筆記

相關視頻&#xff1a; 黑馬程序員前端React18入門到實戰視頻教程&#xff0c;從reacthooks核心基礎到企業級項目開發實戰&#xff08;B站評論、極客園項目等&#xff09;及大廠面試全通關_嗶哩嗶哩_bilibili 一、React介紹 React由Meta公司開發&#xff0c;是一個用于 構建W…