一、簡介
vgg19是一種深度卷積神經網絡,由牛津大學的Visual Geometry Group開發。它是vgg16模型的擴展,具有更深的網絡層數。vgg19模型在圖像分類、物體檢測和語義分割等領域都有應用。
二、模型結構
vgg19模型共有19層,由卷積層、池化層和全連接層構成。下面是vgg19模型的結構:
Layer (type) Output Shape Param #
================================================================
input_1 (InputLayer) (None, 224, 224, 3) 0
________________________________________________________________
block1_conv1 (Conv2D) (None, 224, 224, 64) 1792
________________________________________________________________
block1_conv2 (Conv2D) (None, 224, 224, 64) 36928
________________________________________________________________
block1_pool (MaxPooli (None, 112, 112, 64) 0
________________________________________________________________
block2_conv1 (Conv2D) (None, 112, 112, 128 73856
________________________________________________________________
block2_conv2 (Conv2D) (None, 112, 112, 128 147584
________________________________________________________________
block2_pool (MaxPooli (None, 56, 56, 128) 0
________________________________________________________________
block3_conv1 (Conv2D) (None, 56, 56, 256) 295168
________________________________________________________________
block3_conv2 (Conv2D) (None, 56, 56, 256) 590080
________________________________________________________________
block3_conv3 (Conv2D) (None, 56, 56, 256) 590080
________________________________________________________________
block3_conv4 (Conv2D) (None, 56, 56, 256) 590080
________________________________________________________________
block3_pool (MaxPooli (None, 28, 28, 256) 0
________________________________________________________________
block4_conv1 (Conv2D) (None, 28, 28, 512) 1180160
________________________________________________________________
block4_conv2 (Conv2D) (None, 28, 28, 512) 2359808
________________________________________________________________
block4_conv3 (Conv2D) (None, 28, 28, 512) 2359808
________________________________________________________________
block4_conv4 (Conv2D) (None, 28, 28, 512) 2359808
________________________________________________________________
block4_pool (MaxPooli (None, 14, 14, 512) 0
________________________________________________________________
block5_conv1 (Conv2D) (None, 14, 14, 512) 2359808
________________________________________________________________
block5_conv2 (Conv2D) (None, 14, 14, 512) 2359808
________________________________________________________________
block5_conv3 (Conv2D) (None, 14, 14, 512) 2359808
________________________________________________________________
block5_conv4 (Conv2D) (None, 14, 14, 512) 2359808
________________________________________________________________
block5_pool (MaxPooli (None, 7, 7, 512) 0
________________________________________________________________
flatten (Flatten) (None, 25088) 0
________________________________________________________________
fc1 (Dense) (None, 4096) 102764544
________________________________________________________________
fc2 (Dense) (None, 4096) 16781312
________________________________________________________________
predictions (Dense) (None, 1000) 4097000
================================================================
Total params: 139,574,984
Trainable params: 139,574,984
Non-trainable params: 0
________________________________________________________________
三、特點
1. 採用小卷積核
vgg19模型使用了小的3×3卷積核,較大的空間感受野由疊加這些小卷積核得到,這種方式比使用較大的卷積核更有效。在vgg19模型中,每個卷積層都使用了兩個3×3的卷積核,因此每層都有兩次卷積操作。
2. 使用多層卷積和池化
vgg19模型共有5個卷積塊,每個卷積塊中都包含多層卷積層和一個池化層,這些層可以大大增強模型的表達能力,提高分類精度。
3. 預處理方式是固定的
在訓練vgg19模型時,需要將每個圖像的像素值進行歸一化處理。採用的處理方式是將每個像素減去ImageNet數據集的均值,然後除以標準差。
四、代碼實現
下面是使用vgg19模型進行圖像分類的代碼實現:
from tensorflow.keras.applications.vgg19 import VGG19
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.vgg19 import preprocess_input, decode_predictions
import numpy as np
model = VGG19(weights="imagenet")
img_path = "test_img.jpg"
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
preds = model.predict(x)
print('Predicted:', decode_predictions(preds, top=3)[0])
以上代碼首先導入VGG19模型和必要的庫,然後加載測試圖像,將圖像輸入到VGG19模型進行預測,並輸出預測結果。
原創文章,作者:PAUHZ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/349391.html