TShopping

 找回密碼
 註冊
搜索
查看: 866|回復: 0
打印 上一主題 下一主題

[教學] Python CNN計算

[複製鏈接]
跳轉到指定樓層
1#
發表於 2021-3-9 22:35:06 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook
CNN的名詞困擾

CNN於影像傳遞過程中,某些書籍會稱呼the number of channels,可能會視為影像頻道的數量。
  •channelsPILOpenCV內是指色彩的頻道
CNN前半部的捲積層與池化層主要是做特徵的擷取。
這邊不建議稱為channels,可改為featuremaps較為合適。
featuremaps意思是針對image進行特徵的擷取,產生特徵影像。
產生影像的原因
  •保留與上一層影像的關聯性。
  •逐漸減少特徵影像大小。

CNN圖像處理流程

捲積層的尺寸大小



各層圖片大小與特徵數量1.
•輸入的圖片是32 X 32,我們定義幾個圖片參數  
•長寬 W:32
•過濾器的長寬 F:5  Filter 的尺寸,代表我們設定一個5X5的過濾器。
•步伐長度 S:1
•Padding P:0
•1.第一個卷積層(於F為5的情況下)
• 輸出 的圖片大小為 N
• N= ((W − F + 2P )/S)+1
• N=((32-5+0)/1)+1
• N=28
• c=32/5
• c=6.4 特徵數量 取6
• 第一個捲積層為6@28X28
•6代表我們在32X32的圖片上移動6次,每次產生28X28的圖像。

2.
輸入的圖片是32 X 32,我們定義幾個圖片參數  
長寬 W:32
過濾器的長寬 F:3  Filter 的尺寸,代表我們設定一個3X3的過濾器。
步伐長度 S:1
Padding P:0
1.第一個卷積層(於F為3的情況下)
輸出 的圖片大小為 N
N= ((W − F + 2P )/S)+1
N=((32-3+0)/1)+1
N=30  #第一個捲積層的尺寸
c=32/3  
c=10.67 特徵數量 取10
第一個捲積層為10@30X30
10代表我們在32X32的圖片上移動
10次,每次產生30X30的圖像。

CNN圖像處理流程

CNN圖像處理流程-池化層


於捲積層之後就會接著一個池化層。
池化層將會減少圖像的大小,圖像的大小就會剩下一半。
而池化層處理時每一個區域,可以選擇最大值、平均值、最小值等不同的計算方式。
捲積加上池化,將使特徵數量增加,圖像尺寸會變小。
一個捲積加上一個池化。
池化層可挑選出捲積層的重要特徵,這些特徵可產生圖像
若大於filter,那再產生下一層捲積層。
若沒有大於filter,就可進行完全連結層,將特徵轉換為一維。
Q:為何要跟filter比大小呢?
A:
捲積的計算是滑動、相乘後相加的動作。
是filter在圖像上滑動,若圖像小於等於filter,就無法滑動,也就不能進行捲積的動作。
無法進行捲積動作,也就代表這個圖像、這個特徵就可以進行分類的資料。

CNN圖像處理流程-第二個捲積層
資料來源是第一個池化層的6@14X14。
第二個捲積層計算出來的圖像尺寸為10*10
filter移動會產生多少特徵?
filter移動是在input上移動產生ouput,而我們input是14X14。
14/5,一個特徵上filter將移動2.8個output。
input進來是6個特徵,所以總共移動2.8X6個output,16.8,
代表移動產生16個output特徵。
產生16個10X10的特徵圖像。

filter在14*14上面移動,移動2.8個。
input的這6個特徵是有關聯性,我們要跑完所有特徵。所以所有步伐是2.8*6
跑完之後是16.8個特徵,最終的結果只會保留整數部分,所以最終結果是16個特徵。


Q  特徵可以解釋為圖片嗎?
A:
1.CNN的目的就是在原始input圖片上找出分類的重點。
2.很多特徵意味著於原始圖片上找出很多具有分類意義的重點,抑或可說子圖片。
3.特徵數量都是整數值。
4.特徵數量最後再進行分類。


CNN圖像處理流程-第二個池化層



CNN圖像處理流程-完全連接層

特徵圖像尺寸於完全連結層之後就結束,將會成為一維資料。
完全連接層需要規劃多少個?
CNN的處理規則內並未規劃。
因你最後的分類項目多少並沒有限制,而一開始成為一維資料的參數個數也無法規定,所以這邊要規劃多少須由實際操作去做調整。
(Filter長*Filter寬* 輸入特徵數量+1)*輸出特徵數量
上述的+1代表Bias,偏移值或偏差值的計算。





3.第一個完全連結層參數
(Filter長*Filter寬* 輸入特徵數量+1)*輸出特徵數量
(5*5*16+1)*120=48120
4.第二個完全連結層參數
(Filter長*Filter寬* 輸入特徵數量+1)*輸出特徵數量
(1*1*120+1)*84=10164

Q:120與84是怎麼產生的?
A:
完全連接層並未設定計算方式,可依環境做調整。
以這個範例為例,
一開始接收的特徵數量為400,最後的結果為10。
以特徵數量變化而言,規劃1-3個完全連結層處理傳遞的參數值。
第一個完全連結層建議可控制參數數量為40000-50000之間,再逐層遞減。
假設說你的電腦效能很好,亦可多加入完全連結層,第一個完全連結層參數可設定70000-80000之間,再逐層遞減。



 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-4-24 19:40 , Processed in 0.086186 second(s), 25 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表