最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

keras實現(xiàn)VGG16方式(預測一張圖片)

 更新時間:2020年07月07日 10:22:21   作者:程序員孫大圣  
這篇文章主要介紹了keras實現(xiàn)VGG16方式(預測一張圖片),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

我就廢話不多說了,大家還是直接看代碼吧~

from keras.applications.vgg16 import VGG16#直接導入已經(jīng)訓練好的VGG16網(wǎng)絡(luò)
from keras.preprocessing.image import load_img#load_image作用是載入圖片
from keras.preprocessing.image import img_to_array
from keras.applications.vgg16 import preprocess_input
from keras.applications.vgg16 import decode_predictions
 
model = VGG16()
image = load_img('D:\\photo\\dog.jpg',target_size=(224,224))#參數(shù)target_size用于設(shè)置目標的大小,如此一來無論載入的原圖像大小如何,都會被標準化成統(tǒng)一的大小,這樣做是為了向神經(jīng)網(wǎng)絡(luò)中方便地輸入數(shù)據(jù)所需的。
image = img_to_array(image)#函數(shù)img_to_array會把圖像中的像素數(shù)據(jù)轉(zhuǎn)化成NumPy中的array,這樣數(shù)據(jù)才可以被Keras所使用。
#神經(jīng)網(wǎng)絡(luò)接收一張或多張圖像作為輸入,也就是說,輸入的array需要有4個維度: samples, rows, columns, and channels。由于我們僅有一個 sample(即一張image),我們需要對這個array進行reshape操作。
image = image.reshape((1,image.shape[0],image.shape[1],image.shape[2]))
image = preprocess_input(image)#對圖像進行預處理
y = model.predict(image)#預測圖像的類別
label = decode_predictions(y)#Keras提供了一個函數(shù)decode_predictions(),用以對已經(jīng)得到的預測向量進行解讀。該函數(shù)返回一個類別列表,以及類別中每個類別的預測概率,
label = label[0][0]
print('%s(%.2f%%)'%(label[1],label[2]*100))
# print(model.summary())
from keras.models import Sequential
from keras.layers.core import Flatten,Dense,Dropout
from keras.layers.convolutional import Convolution2D,MaxPooling2D,ZeroPadding2D
from keras.optimizers import SGD
import numpy as np
 
from keras.preprocessing import image
from keras.applications.imagenet_utils import preprocess_input, decode_predictions
import time
from keras import backend as K
K.set_image_dim_ordering('th')
def VGG_16(weights_path=None):
  model = Sequential()
 
  model.add(ZeroPadding2D((1, 1), input_shape=(3, 224, 224)))
  model.add(Convolution2D(64, (3, 3), activation='relu'))
  model.add(ZeroPadding2D((1, 1)))
  model.add(Convolution2D(64, (3, 3), activation='relu'))
  model.add(MaxPooling2D((2, 2), strides=(2, 2)))
 
  model.add(ZeroPadding2D((1, 1)))
  model.add(Convolution2D(128, (3, 3), activation='relu'))
  model.add(ZeroPadding2D((1, 1)))
  model.add(Convolution2D(128, (3, 3), activation='relu'))
  model.add(MaxPooling2D((2, 2), strides=(2, 2)))
 
  model.add(ZeroPadding2D((1, 1)))
  model.add(Convolution2D(256, (3, 3), activation='relu'))
  model.add(ZeroPadding2D((1, 1)))
  model.add(Convolution2D(256, (3, 3), activation='relu'))
  model.add(ZeroPadding2D((1, 1)))
  model.add(Convolution2D(256, (3, 3), activation='relu'))
  model.add(MaxPooling2D((2, 2), strides=(2, 2)))
 
  model.add(ZeroPadding2D((1, 1)))
  model.add(Convolution2D(512, (3, 3), activation='relu'))
  model.add(ZeroPadding2D((1, 1)))
  model.add(Convolution2D(512, (3, 3), activation='relu'))
  model.add(ZeroPadding2D((1, 1)))
  model.add(Convolution2D(512, (3, 3), activation='relu'))
  model.add(MaxPooling2D((2, 2), strides=(2, 2)))
 
  model.add(ZeroPadding2D((1, 1)))
  model.add(Convolution2D(512, (3, 3), activation='relu'))
  model.add(ZeroPadding2D((1, 1)))
  model.add(Convolution2D(512, (3, 3), activation='relu'))
  model.add(ZeroPadding2D((1, 1)))
  model.add(Convolution2D(512, (3, 3), activation='relu'))
  model.add(MaxPooling2D((2, 2), strides=(2, 2)))
 
  model.add(Flatten())
  model.add(Dense(4096, activation='relu'))
  model.add(Dropout(0.5))
  model.add(Dense(4096, activation='relu'))
  model.add(Dropout(0.5))
  model.add(Dense(1000, activation='softmax'))
 
  if weights_path:
    model.load_weights(weights_path,by_name=True)
 
  return model
 
model = VGG_16(weights_path='F:\\Kaggle\\vgg16_weights.h5')
sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(optimizer=sgd, loss='categorical_crossentropy')
 
t0 = time.time()
img = image.load_img('D:\\photo\\dog.jpg', target_size=(224, 224))
x = image.img_to_array(img) # 三維(224,224,3)
x = np.expand_dims(x, axis=0) # 四維(1,224,224,3)#因為keras要求的維度是這樣的,所以要增加一個維度
x = preprocess_input(x) # 預處理
print(x.shape)
y_pred = model.predict(x) # 預測概率
 
t1 = time.time()
 
print("測試圖:", decode_predictions(y_pred)) # 輸出五個最高概率(類名, 語義概念, 預測概率)
print("耗時:", str((t1 - t0) * 1000), "ms")

這是兩種不同的方式,第一種是直接使用vgg16的參數(shù),需要在運行時下載,第二種是我們已經(jīng)下載好的權(quán)重,直接在參數(shù)中輸入我們的路徑即可。

補充知識:keras加經(jīng)典網(wǎng)絡(luò)的預訓練模型(以VGG16為例)

我就廢話不多說了,大家還是直接看代碼吧~

# 使用VGG16模型
from keras.applications.vgg16 import VGG16
print('Start build VGG16 -------')
 
# 獲取vgg16的卷積部分,如果要獲取整個vgg16網(wǎng)絡(luò)需要設(shè)置:include_top=True
model_vgg16_conv = VGG16(weights='imagenet', include_top=False)
model_vgg16_conv.summary()
 
# 創(chuàng)建自己的輸入格式
# if K.image_data_format() == 'channels_first':
#  input_shape = (3, img_width, img_height)
# else:
#  input_shape = (img_width, img_height, 3)
 
input = Input(input_shape, name = 'image_input') # 注意,Keras有個層就是Input層
 
# 將vgg16模型原始輸入轉(zhuǎn)換成自己的輸入
output_vgg16_conv = model_vgg16_conv(input)
 
# output_vgg16_conv是包含了vgg16的卷積層,下面我需要做二分類任務(wù),所以需要添加自己的全連接層
x = Flatten(name='flatten')(output_vgg16_conv)
x = Dense(4096, activation='relu', name='fc1')(x)
x = Dense(512, activation='relu', name='fc2')(x)
x = Dense(128, activation='relu', name='fc3')(x)
x = Dense(1, activation='softmax', name='predictions')(x)
 
# 最終創(chuàng)建出自己的vgg16模型
my_model = Model(input=input, output=x)
 
# 下面的模型輸出中,vgg16的層和參數(shù)不會顯示出,但是這些參數(shù)在訓練的時候會更改
print('\nThis is my vgg16 model for the task')
my_model.summary()

以上這篇keras實現(xiàn)VGG16方式(預測一張圖片)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python關(guān)于excel和shp的使用在matplotlib

    Python關(guān)于excel和shp的使用在matplotlib

    今天小編就為大家分享一篇關(guān)于Python關(guān)于excel和shp的使用在matplotlib,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • django模板獲取list中指定索引的值方式

    django模板獲取list中指定索引的值方式

    這篇文章主要介紹了django模板獲取list中指定索引的值方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 詳解Python?中的命名空間、變量和范圍

    詳解Python?中的命名空間、變量和范圍

    Python 是一種動態(tài)類型語言,在程序執(zhí)行期間,變量名可以綁定到不同的值和類型,這篇文章主要介紹了Python?中的命名空間、變量和范圍,需要的朋友可以參考下
    2022-09-09
  • Python中的常用函數(shù)使用及說明

    Python中的常用函數(shù)使用及說明

    這篇文章主要介紹了Python中的常用函數(shù)使用及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python超越函數(shù)積分運算以及繪圖實現(xiàn)代碼

    Python超越函數(shù)積分運算以及繪圖實現(xiàn)代碼

    今天小編就為大家分享一篇Python超越函數(shù)積分運算以及繪圖實現(xiàn)代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python全棧之列表數(shù)據(jù)類型詳解

    Python全棧之列表數(shù)據(jù)類型詳解

    這篇文章主要給大家介紹了關(guān)于Python全棧之列表數(shù)據(jù)類型的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-10-10
  • Python如何用字典完成匹配任務(wù)

    Python如何用字典完成匹配任務(wù)

    在生物信息學領(lǐng)域,經(jīng)常需要根據(jù)基因名稱匹配其對應(yīng)的編號,本文介紹了一種通過字典進行基因名稱與編號匹配的方法,首先定義一個空列表存儲對應(yīng)編號,對于字典中不存在的基因名稱,其編號默認為0
    2024-09-09
  • Python+uiautomator2實現(xiàn)手機鎖屏解鎖功能

    Python+uiautomator2實現(xiàn)手機鎖屏解鎖功能

    python-uiautomator2封裝了谷歌自帶的uiautomator2測試框架,提供便利的python接口,這篇文章給大家介紹使用Python+uiautomator2實現(xiàn)手機鎖屏解鎖(期望輸入的鎖屏密碼,基于滑動解鎖),感興趣的朋友一起看看吧
    2021-04-04
  • 使用Python從PDF中提取圖片和圖片信息(坐標、寬度和高度等)

    使用Python從PDF中提取圖片和圖片信息(坐標、寬度和高度等)

    PDF文件作為一種廣泛使用的電子文檔格式,不僅包含文字信息,還可能包含各種圖片、圖表等視覺元素,在某些場景下,我們可能需要從PDF文件中提取這些圖片,用于其他用途,這篇博客將探討如何使用Python從PDF中提取圖片以及圖片的相關(guān)信息如坐標、寬度和高度等
    2025-02-02
  • 結(jié)合Python的SimpleHTTPServer源碼來解析socket通信

    結(jié)合Python的SimpleHTTPServer源碼來解析socket通信

    SimpleHTTPServer是Python中一個現(xiàn)成的HTTP服務(wù)器例子,本文我們將結(jié)合Python的SimpleHTTPServer源碼來解析socket通信,我們先來看一下socket的基本概念:
    2016-06-06

最新評論

漳平市| 东源县| 三门县| 新津县| 锡林郭勒盟| 盈江县| 比如县| 筠连县| 广丰县| 汽车| 格尔木市| 丹东市| 固阳县| 泊头市| 聂拉木县| 鄂温| 陕西省| 广昌县| 仲巴县| 遂平县| 交城县| 丹江口市| 泗阳县| 西畴县| 顺昌县| 瓮安县| 蒙阴县| 南投县| 沂水县| 孟州市| 资阳市| 大方县| 宁海县| 南平市| 镇远县| 白银市| 焦作市| 蕉岭县| 凌云县| 衡阳县| 承德县|