作者:Ahzam Ejaz來源:DeepHub IMBA
卷積神經(jīng)網(wǎng)絡(luò)(cnn)是一種神經(jīng)網(wǎng)絡(luò),通常用于圖像分類、目標(biāo)檢測和其他計算機視覺任務(wù)。CNN的關(guān)鍵組件之一是特征圖,它是通過對圖像應(yīng)用卷積濾波器生成的輸入圖像的表示。
理解卷積層
1、卷積操作
卷積的概念是CNN操作的核心。卷積是一種數(shù)學(xué)運算,它把兩個函數(shù)結(jié)合起來產(chǎn)生第三個函數(shù)。在cnn的上下文中,這兩個函數(shù)是輸入圖像和濾波器,而得到的結(jié)果就是特征圖。
2、卷積的層
卷積層包括在輸入圖像上滑動濾波器,并計算濾波器與輸入圖像的相應(yīng)補丁之間的點積。然后將結(jié)果輸出值存儲在特征映射中的相應(yīng)位置。通過應(yīng)用多個過濾器,每個過濾器檢測一個不同的特征,我們可以生成多個特征映射。
3、重要參數(shù)
Stride:Stride 是指卷積濾波器在卷積運算過程中在輸入數(shù)據(jù)上移動的步長。
Padding:Padding是指在應(yīng)用卷積操作之前在輸入圖像或特征映射的邊界周圍添加額外像素。Padding的目的是控制輸出特征圖的大小,保證濾波窗口能夠覆蓋輸入圖像或特征圖的邊緣。如果沒有填充,過濾器窗口將無法覆蓋輸入數(shù)據(jù)的邊緣,導(dǎo)致輸出特征映射的大小減小和信息丟失。有兩種類型的填充“valid”和“same”。kernel/filter:kernel(也稱為filter 或 weight )是一個可學(xué)習(xí)參數(shù)的小矩陣,用于從輸入數(shù)據(jù)中提取特征。在下圖中,輸入圖像的大小為(5,5),過濾器filter 的大小為(3,3),綠色為輸入圖像,黃色區(qū)域為該圖像的過濾器。在輸入圖像上滑動濾波器,計算濾波器與輸入圖像的相應(yīng)像素之間的點積。Padding是valid (也就是沒有填充)。stride值為1。
4、特征圖特征圖是卷積神經(jīng)網(wǎng)絡(luò)(CNN)中卷積層的輸出。它們是二維數(shù)組,包含卷積濾波器從輸入圖像或信號中提取的特征。卷積層中特征圖的數(shù)量對應(yīng)于該層中使用的過濾器的數(shù)量。每個過濾器通過對輸入數(shù)據(jù)應(yīng)用卷積操作來生成單個特征映射。特征圖的大小取決于輸入數(shù)據(jù)的大小,卷積操作中使用的過濾器、填充和步幅的大小。通常,隨著我們深入網(wǎng)絡(luò),特征圖的大小會減小,而特征圖的數(shù)量會增加。特征圖的大小可以用以下公式計算:
Output_Size = (Input_Size - Filter_Size + 2 * Padding) / Stride + 1
這個公式非常重要,因為在計算輸出時肯定會用到,所以一定要記住來自一個卷積層的特征映射作為網(wǎng)絡(luò)中下一層的輸入數(shù)據(jù)。隨著層數(shù)的增加,網(wǎng)絡(luò)能夠?qū)W習(xí)越來越復(fù)雜和抽象的特征。通過結(jié)合來自多層的特征,網(wǎng)絡(luò)可以識別輸入數(shù)據(jù)中的復(fù)雜模式,并做出準(zhǔn)確的預(yù)測。
特征圖可視化
這里我們使用TF作為框架進行演示
## Importing libraries#Imageprocessinglibraryimportcv2#Kerasfromtensorflowimportkeras#InKeras,thelayersmoduleprovidesasetofpre-builtlayerclassesthatcanbeusedtoconstructneuralnetworks.fromkerasimportlayers#Forplotinggraphsandimagesimportmatplotlib.pyplotaspltimportnumpyasnp
使用OpenCV導(dǎo)入一張圖像,并將其大小調(diào)整為224 x 224像素。
img_size=(224,224)file_name="./data/archive/flowers/iris/10802001213_7687db7f0c_c.jpg"img=cv2.imread(file_name) #readingtheimageimg=cv2.resize(img,img_size)
我們添加2個卷積層:
model=keras.Sequential()filters=16model.add(layers.Conv2D(input_shape=(224,224,3),filters=filters,kernel_size=3))model.add(layers.Conv2D(filters=filters,kernel_size=3))
從卷積層中獲取過濾器。
filters, bias = model.layers[0].get_weights()min_filter = filters.min()max_filter = filters.max()filters = (filters - min_filter) / (max_filter - min_filter)p
可視化
figure=plt.figure(figsize=(10,20))filters_count=filters.shape[-1]channels=filters.shape[0]index=1forchannelinrange(channels):forfilterinrange(filters_count): plt.subplot(filters_count, channels, index) plt.imshow(filters[channel, :, :, filter]) plt.xticks([]) plt.yticks([]) index+=1plt.show()
將圖像輸入到模型中得到特征圖
normalized_img=(img-img.min())/(img.max()-img.min())normalized_img=normalized_img.reshape(-1,224,224,3)feature_map=model.predict(normalized_img)
特征圖需要進行歸一化這樣才可以在matplotlib中顯示
feature_map = (feature_map - feature_map.min())/ (feature_map.max() - feature_map.min())
提取特征圖并顯示
total_imgs = feature_map.shape[0]no_features=feature_map.shape[-1]fig=plt.figure(figsize=(10,50))index=1 forimage_noinrange(total_imgs): forfeatureinrange(no_features):#plottingfor16filtersthatproduced16featuremapsplt.subplot(no_features,3,index)plt.imshow(feature_map[image_no,:,:,feature],cmap="gray")plt.xticks([])plt.yticks([])index+=1plt.show()
總結(jié)
通過可視化CNN不同層的特征圖,可以更好地理解網(wǎng)絡(luò)在處理圖像時“看到”的是什么。例如,第一層可能會學(xué)習(xí)簡單的特征,如邊緣和角落,而后面的層可能會學(xué)習(xí)更抽象的特征,如特定物體的存在。通過查看特征圖,我們還可以識別圖像中對網(wǎng)絡(luò)決策過程重要的區(qū)域。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4781瀏覽量
101178 -
cnn
+關(guān)注
關(guān)注
3文章
353瀏覽量
22338
發(fā)布評論請先 登錄
相關(guān)推薦
七款經(jīng)久不衰的數(shù)據(jù)可視化工具!
光學(xué)系統(tǒng)的3D可視化
什么是大屏數(shù)據(jù)可視化?特點有哪些?
如何找到適合的大屏數(shù)據(jù)可視化系統(tǒng)
智慧能源可視化監(jiān)管平臺——助力可視化能源數(shù)據(jù)管理
![智慧能源<b class='flag-5'>可視化</b>監(jiān)管平臺——助力<b class='flag-5'>可視化</b>能源數(shù)據(jù)管理](https://file1.elecfans.com/web3/M00/00/4D/wKgZPGdIGmWAd19uAACECcpQqKU333.png)
智慧樓宇可視化的優(yōu)點
工業(yè)數(shù)據(jù)可視化管理平臺是什么
大屏數(shù)據(jù)可視化 開源
![大屏數(shù)據(jù)<b class='flag-5'>可視化</b> 開源](https://file1.elecfans.com//web2/M00/F4/8D/wKgaomZ9HZ6AWfaTABGvDwzasjk807.png)
如何實現(xiàn)園區(qū)大屏可視化?
![如何實現(xiàn)園區(qū)大屏<b class='flag-5'>可視化</b>?](https://file1.elecfans.com//web2/M00/E8/E5/wKgaomZNsRKAa6QiAA9AnU3ul80648.png)
態(tài)勢數(shù)據(jù)可視化技術(shù)有哪些
智慧大屏是如何實現(xiàn)數(shù)據(jù)可視化的?
![智慧大屏是如何實現(xiàn)數(shù)據(jù)<b class='flag-5'>可視化</b>的?](https://file1.elecfans.com/web2/M00/EB/95/wKgZomZevfiAZTUiAAAYyNC3ogI340.png)
大屏數(shù)據(jù)可視化的作用和意義
數(shù)據(jù)可視化:企業(yè)數(shù)字化建設(shè)效果的呈現(xiàn)
![數(shù)據(jù)<b class='flag-5'>可視化</b>:企業(yè)數(shù)字<b class='flag-5'>化</b>建設(shè)效果的呈現(xiàn)](https://file1.elecfans.com//web2/M00/DF/30/wKgaomYvA1iADIlsAACI2sJklIY54.jpeg)
評論