零基礎也能搞懂卷積神經網路原理!超詳細!
相信和作者一樣愛科技對AI興趣濃厚的小伙伴們,一定對卷積神經網路並不陌生, 也一定曾經對如此「高級」的名字困惑良久。作者今天將從零開始走進卷積神經網路的世界~與大家分享!
在深入了解卷積神經網路之前,我們先來看看圖像的原理。
影像原理
影像在電腦中是透過數字(0-255)來表示的,每個數字代表影像中一個像素的亮度或顏色資訊。其中:
- 黑白影像:每個像素只有一個值,這個值在0(黑色)到255(白色)之間變化。
- 彩色影像:每個像素包含三個值,最常見的是RGB(Red-Green-Blue)模型,即紅色、綠色和藍色光以不同強度組合起來產生各種顏色。每個顏色通道都有256級亮度,從0~255,因此每種顏色可以用一個8位的二進制數來表述,例如(255,0,0)表示紅色,(0,255,0)表示綠色,( 0,0,255)表示藍色,其他組合則對應各種顏色。計算機中,彩色影像的資料結構通常是一個三維數組或張量,形狀為(寬度,高度,深度),其中深度就是通道的數量,對於RGB影像來說,深度是3。這意味著,對於每個像素位置,有三個數值分別代表紅綠藍三個通道的亮度。例如,一個100*100像素的RGB影像將佔用100x100x3個位元組的記憶體。
「這裡「8位元的二進制數」怎麼理解呢?」
在RGB顏色模型中,每個顏色通道(紅、綠、藍)可以有256個不同的亮度級別,每個通道表示8位二進位表示,8位二進位數的最大值是11111111,轉換成十進位就是255;最小值是00000000,轉換成十進位就是0。
何為卷積神經網路CNN?
CNN報導了一個在CV中家喻戶曉的一種應用場景。以原始圖片尺寸為10x10為例,如下圖所示,其左半部是像素值較大,是明亮區域;右半部是像素值較小,為深度區域。中間的分界線即是要偵測的邊緣。
「那麼怎麼偵測邊緣呢?」 此時濾波器filter(也叫kernel)出場了,如下圖所示,kernel尺寸為3x3。
濾波器filter滑過輸入圖片,在每個區域處稍做停留,對應元素相乘再相加計算,之後再向其它區域滑動繼續計算,直到滑動至原圖片的最後一個區域為止。這個過程即為「卷積。」
#由上圖可以看出,輸出結果的中間顏色淺,兩邊顏色深,說明原圖的邊界已反應出來。 「因此可以總結出,邊緣偵測就是透過輸入圖片與對應濾波器進行卷積運算得以識別。」
#另外,這裡的滑動還涉及到一個基本概念,「步長stride」,上述範例中,是以stride為1說明,每次滑動一格,共停留了8x8個區域,所以最終輸出結果是8x8矩陣。
「那麼,究竟什麼是卷積神經網路呢?」
經過上面邊緣偵測這一具體的目標偵測場景的分析,我們也就不難理解,CNN(Convolutional neural network)就是透過各種各樣的濾波器filter不斷提取圖片特徵,從局部到整體,進而辨識目標。
而在神經網路中,這些filter中的每個數字,就是參數,可透過大量資料訓練得到(即深度學習的過程)。
CNN中的基本概念
1.卷積(Convolution)
(1) 卷積計算
卷積是數學分析中的一種積分變換的方法,而在影像處理中則採用的是卷積的離散形式。在卷積神經網路CNN中,卷積層的實現方式本質即為數學中定義的互相關計算(cross-correlation)。具體計算過程如下圖所示。
其中:
圖(a):左邊的圖大小是3×3,表示輸入資料是維度為3×3的二維陣列;中間的圖大小是2×2,表示一個維度為2×2的二維數組,也即為「卷積核」。卷積核的左上角與輸入資料的左上角(0,0)對齊,並依序將二者對應位置資料相乘,再相加,即可獲得卷積輸出的第一個結果25。
依序類別推,圖(b)、(c)、(d)分別為卷積輸出的第二、三、四個輸出結果。
(2) 圖片卷積運算
那麼圖片卷積運算,具體是怎麼回事呢?如下圖所示即為彩色影像卷積過程。
對於彩色影像的通道1(Red)、通道2(Green)、通道3(Blue),分別使用Kernel1、Kernel2、Kernel3。每個卷積核在對應的單色影像上滑動,對每個位置上的小塊區域(Kernel大小)內的像素值與卷積核的相應元素進行逐點乘法運算,然後將這些乘積相加得到一個值。再將每個通道所得的數值相加,並加上總體的偏置Bias,即可得到對應特徵圖(feature map)中的一個值。
立體效果如下圖所示:
2.Padding
如上所述邊緣偵測的範例中,可以看到,原圖尺寸是10x10,經過filter之後是8x8。如果再做一次卷積運算就是6x6...這樣的話會有兩個缺點:
- 每次做卷積操作,輸出圖片尺寸縮小
- 角落或邊緣區域的像素點在輸出中採用較少,因此容易丟掉影像邊緣位置的許多資訊。
如下圖中左上角紅色陰影只被一個輸出觸碰到,而中間的像素點(紫色方框標記)會有許多3x3的區域與之重疊。所以,角落或邊緣區域的像素點在輸出中採用較少,容易丟掉影像邊緣位置的許多資訊。
為了解決這個問題,我們通常採用Padding的方法,在卷積操作之前,先給原始圖片邊緣填充一層像素, 例如,將10x10的圖像即可填滿為12x12的大小,卷積之後的圖片尺寸為8x8,和原始圖片一樣大,這樣便使得原圖的邊緣區域像素點也可以多次被採用。
選擇填滿多少像素,通常有兩種選擇:
- Same卷積:即如上所述,填充再卷積之後的圖片大小與原始圖片一致。
- Valid卷積:不進行填充操作,直接卷積。
3.stride
stride的概念在引言中有提到過,表示過濾器filter在原始圖片中水平方向和垂直方向每次滑動的長度,也叫步進長度。
假設s表示stride長度,p表示padding長度,原始圖片尺寸是nxn,過濾器filter尺寸是fxf,則卷積後的圖片尺寸為:
4.池化
池化的本質就是降維。
卷積網路中池化層的作用:降低特徵圖的參數量、提升計算速度、增加感受野,也即為一種降採樣操作。
物件偵測中常用的池化:最大值池化(Max Pooling)與平均值池化(Average Pooling)。
(1) Max pooling
即在濾波器filter滑動區域內取最大值,而無需卷積運算。數字大意味著可能探測到了某些特定的特徵,忽略了其它值,降低了雜訊影響,提高了模型健壯性。 「而且,Max pooling所需的超參數僅為濾波器尺寸f和stride長度s,無需要訓練其它參數,計算量較小。」
(2) Average pooling
即在濾波器filter滑動區域內求平均值。
5.Shape
在處理多維數據,尤其是影像資料時,Tensorflow和Pytorch資料Shape有所區分。
- TensorFlow:(batch_size, height, width, in_channels)
- Pytorch:(batch_size, in_channels, height, width)
#其中:
#- batch_size:批次處理的樣本數。
- in_channels:輸入影像的通道數,對於彩色影像通常是3(紅、綠、藍)。
- height和width分別是影像的高度和寬度。
如上圖:
- #輸入圖片Shape:[height, width, channels],即[8,8, 3],表示一個8x8的影像,有3個通道(R、G、B)。
- 卷積核Shape:[kernel_height, kernel_width, in_channels, out_channels],即[3,3,3,5],表示一個3x3的捲積核,有3個通道(R、G、B ),輸出通道數是5。
- 輸出圖片Shape:[height, width, out_channels],即[6,6,5],表示一個6x6的輸出圖片,有5個通道(R、G、B)。
out_height = (height - kernel_height + 1) / strideout_width = (width - kernel_width + 1) / stride
對於8x8的圖像和3x3的捲積核,輸出尺寸將是 (8 - 3 + 1) / 1 = 6,因此輸出形狀是 [6, 6, 5],表示一個6x6的特徵圖,有5個輸出通道。
卷積核的輸入通道數(in_channels)由輸入影像的通道數決定,例如:一個RGB格式的圖片,其輸入通道數為3。
而輸出矩陣的通道數(out_channels)是由卷積核的輸出通道數決定,即卷積核有多少個不同的濾波器(filter)。在這個例子中,卷積核有5個濾波器,所以輸出有5個通道。
6.激活函數
並不是所有的映射關係都可以用線性關係準確表達。因此需要激活函數表示非線性映射。
激活函數也就是非線性映射。神經網路如果只是由線性運算堆疊,是無法形成複雜的表達空間的,也就很難提取高語義訊息,因此需要加入非線性映射關係。
(1) Sigmoid函數
#Sigmoid函數將特徵壓縮到了(0, 1)區間,0端是抑制狀態,1端是活化狀態,中間部分梯度最大。
(2) Relu函數
修正線性單元(Rectified Linear Unit, ReLU)。通常用於緩解梯度消失現象。
在小於0的部分,值與梯度為0,大於0導數為1,避免了Sigmoid函數中梯度接近於0導致的梯度消失問題。
(3) Softmax函數
#多物件類別較常用的分類器是Softmax函數。
在具體的分類任務中,Softmax函數的輸入往往是多個類別的得分,輸出則是每一個類別對應的機率,所有類別的機率取值都在0~1之間,且和為1。
Softmax函數公式如下:
其中,Vi表示第i個類別的得分,C代表分類的類別總數,輸出Si為第i個類別的機率。
CNN整體結構
卷積神經網路CNN由輸入層、卷積層、Relu、池化層和全連接層、輸出層組成。
如下圖所示是一個卷積網路範例,卷積層是卷積網路的第一層,其後跟著其它卷積層或池化層,最後一層是全連接層。越往後的圖層辨識影像越大的部分,較早的層通常專注於簡單的特徵(例如顏色和邊緣等)。隨著影像資料在CNN中各層中前進,它開始識別物體的較大元素或形狀,直到最終識別出預期的物體。
其中:
- 輸入層:接收原始影像數據,作為網路的輸入。
- 卷積層:由濾波器filters和激活函數構成,屬於CNN的核心層,主要作用是提取樣本特徵。它由輸入資料、filter(或卷積核)和特徵圖組成。若輸入資料是RGB影像,則表示輸入將具有三個維度-高度、寬度和深度。 filter的本質是一個二維權重矩陣,它將在影像的感受野中移動,檢查特徵是否存在。卷積的運算過程如上所述。卷積層一般要設定的超參數包括過濾器filters的數量、步長stride以及Padding的方式(valid or same)以及啟動函數等。
- 池化層:本質即是下採樣(Downsampling),利用影像局部相關性原理,對影像進行子抽樣,在保留有用資訊的前提下減少資料處理量,具有一定的防止模型過擬合作用。
- 全連接層:此層的每一個結點與上一層的所有結點相連,用於將前邊提取到的特徵綜合在一起。通常,全連接層的參數是最多的。
- 輸出層:根據全連接層的資訊得到機率最大的結果。
CNN的優勢
與傳統神經網路相比CNN具有局部連接、權值共享等優點,使其學習的參數量大幅降低,且網路的收斂速度也更快。
- 局部连接:特征图的每个输出值不需要连接到输入图像中的每个像素值,而只需要连接到应用过滤器filter的感受野,因此卷积层通常被称为“部分连接层”,这种特性也即是局部连接。
- 权值共享:当卷积核在图像上移动时,其权值是不变的。即为权值共享。
以上是零基礎也能搞懂卷積神經網路原理!超詳細!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

AI在Composer中主要通過依賴推薦、依賴衝突解決和代碼質量提升來提高開發效率和代碼質量。 1.AI可以根據項目需求推薦合適的依賴包。 2.AI提供智能解決方案來處理依賴衝突。 3.AI審查代碼並提供優化建議,提升代碼質量。通過這些功能,開發者可以更專注於業務邏輯的實現。

在加密貨幣市場中,山寨幣(altcoins)常常被投資者視為潛在的高回報資產。雖然市場上存在許多山寨幣,但並非所有山寨幣都能帶來預期的收益。本文將為零基礎的投資者提供一份詳細的攻略,介紹2025年值得囤積的5種山寨幣,並解釋如何通過這些投資實現穩賺50倍的目標。

幣圈十大加密貨幣交易所排名:1. Binance:全球領先,提供高效交易和多種金融產品。 2. OKX:創新多樣,支持多種交易類型。 3. Huobi:穩定可靠,服務優質。 4. Coinbase:新手友好,界面簡潔。 5. Kraken:專業交易者首選,工具強大。 6. Bitfinex:高效交易,交易對豐富。 7. Bittrex:安全合規,監管合作。 8. Poloniex等等。

在一個經常被實質性故事驅動的市場中,可能會錯過真正的功能。 PiCoin在2025年共識之前,通過其社區的支持和增加的機構興趣,正在獲得動力。在一個經常被實質性故事驅動的市場中,很容易錯過真正的功能。由於社區支持並增加了機構的興趣,PiCoin(PI)在2025年達成共識之前取得了動力,而Cardano(ADA)在移動速度更快時面對新的競爭對手,另一個項目正在提供不同的東西。雖然Web3AI加密貨幣仍處於預售狀態,但它不是通過追逐趨勢而引起的關注,而是通過使用戶訪問量子對沖基金使用的相同類型的工具

以下是2025年全球數字貨幣交易所App的權威綜合排名,基於交易量、安全性、合規性及用戶體驗等多維度數據整理,助您精準把握市場動向:

幣圈十大虛擬幣交易所app:1. Binance,2. OKX,3. Huobi,4. Coinbase,5. Kraken,6. Bitfinex,7. Bybit,8. KuCoin,9. Gemini,10. Bitstamp,這些平台因其交易量、安全性和用戶體驗而備受歡迎。

您想了解如何在WordPress網站上使用cookie嗎? Cookie是在用戶瀏覽器中存儲臨時信息的有用工具。您可以使用此信息通過個性化和行為定位來增強用戶體驗。在本終極指南中,我們將向您展示如何像專業人士一樣設置、獲取和刪除WordPresscookie。注意:這是一個高級教程。它要求您精通HTML、CSS、WordPress網站和PHP。什麼是Cookie? Cookie是用戶訪問網站時創建並存儲在用戶瀏覽

火幣APKV10.50.0下載指南:1、點擊文中直達鏈接;2、選擇正確的下載包;3、填寫註冊信息;4、開始火幣交易流程。
