欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用keras內(nèi)置的模型進(jìn)行圖片預(yù)測實(shí)例

 更新時(shí)間:2020年06月17日 09:58:53   作者:lucky404  
這篇文章主要介紹了使用keras內(nèi)置的模型進(jìn)行圖片預(yù)測實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

keras 模塊里面為我們提供了一個(gè)預(yù)訓(xùn)練好的模型,也就是開箱即可使用的圖像識(shí)別模型

趁著國慶假期有時(shí)間我們就來看看這個(gè)預(yù)訓(xùn)練模型如何使用吧

可用的模型有哪些?

根據(jù)官方文檔目前可用的模型大概有如下幾個(gè)

1、VGG16

2、VGG19

3、ResNet50

4、InceptionResNetV2

5、InceptionV3

它們都被集成到了keras.applications 中

模型文件從哪來

當(dāng)我們使用了這幾個(gè)模型時(shí),keras就會(huì)去自動(dòng)下載這些已經(jīng)訓(xùn)練好的模型保存到我們本機(jī)上面

模型文件會(huì)被下載到 ~/.keras/models/并在載入模型時(shí)自動(dòng)載入

各個(gè)模型的信息:

如何使用預(yù)訓(xùn)練模型

使用大致分為三個(gè)步驟

1、導(dǎo)入所需模塊

2、找一張你想預(yù)測的圖像將圖像轉(zhuǎn)為矩陣

3、將圖像矩陣放到模型中進(jìn)行預(yù)測

關(guān)于圖像矩陣的大小

VGG16,VGG19,ResNet50 默認(rèn)輸入尺寸是224x224

InceptionV3, InceptionResNetV2 模型的默認(rèn)輸入尺寸是299x299

代碼demo

假設(shè)我現(xiàn)在有一張圖片

我需要使用預(yù)訓(xùn)練模型來識(shí)別它

那我們就按照上面的步驟

第一步導(dǎo)入模塊

from keras.applications import VGG16
from keras.applications import VGG19
from keras.applications import ResNet50
from keras.applications import InceptionV3
from keras.applications import InceptionResNetV2

第二步將圖像轉(zhuǎn)為矩陣

這里我們需要使用 keras.preprocessing.image 里面 img_to_array 來幫我們轉(zhuǎn)

 image = cv2.imread(img)
 image = cv2.resize(image, self.dim)
 image = img_to_array(image)
 image = np.expand_dims(image, axis=0)

第三步 將圖像矩陣丟到模型中進(jìn)行預(yù)測

predict = model.predict(preprocess)
decode_predict = decode_predictions(predict)

完整代碼如下

1、配置文件

2、獲取配置文件的模塊

3、圖像預(yù)測模塊

配置文件

[image]
image_path=/home/fantasy/Pictures/cat.jpg
[model]
model=vgg16
[weights]
weight=imagenet

獲取配置文件的模塊

import configparser
cf = configparser.ConfigParser()
cf.read("configs.cnf")
def getOption(section, key):
  return cf.get(section, key)

圖像預(yù)測模塊以及主要實(shí)現(xiàn)

# keras 提供了一些預(yù)訓(xùn)練模型,也就是開箱即用的 已經(jīng)訓(xùn)練好的模型
# 我們可以使用這些預(yù)訓(xùn)練模型來進(jìn)行圖像識(shí)別,目前的預(yù)訓(xùn)練模型大概可以識(shí)別2.2w種類型的東西
# 可用的模型:
# VGG16
# VGG19
# ResNet50
# InceptionResNetV2
# InceptionV3 
# 這些模型被集成到 keras.applications 中
# 當(dāng)我們使用了這些內(nèi)置的預(yù)訓(xùn)練模型時(shí),模型文件會(huì)被下載到 ~/.keras/models/并在載入模型時(shí)自動(dòng)載入
# VGG16,VGG19,ResNet50 默認(rèn)輸入尺寸是224x224
# InceptionV3, InceptionResNetV2 模型的默認(rèn)輸入尺寸是299x299

# 使用內(nèi)置的預(yù)訓(xùn)練模型的步驟
# step1 導(dǎo)入需要的模型
# step2 將需要識(shí)別的圖像數(shù)據(jù)轉(zhuǎn)換為矩陣(矩陣的大小需要根據(jù)模型的不同而定)
# step3 將圖像矩陣丟到模型里面進(jìn)行預(yù)測
# -------------------------------------------------------
# step1 
import cv2
import numpy as np
from getConfig import getOption
from keras.applications import VGG16
from keras.applications import VGG19
from keras.applications import ResNet50
from keras.applications import InceptionV3
from keras.applications import InceptionResNetV2
from keras.applications import imagenet_utils
from keras.applications.imagenet_utils import decode_predictions
from keras.preprocessing.image import load_img
from keras.preprocessing.image import img_to_array
from keras.applications.inception_v3 import preprocess_input

class ImageTools(object):
  """
  使用keras預(yù)訓(xùn)練模型進(jìn)行圖像識(shí)別
  """
  def __init__(self, img, model, w):
    self.image = img
    self.model = model
    self.weight = w
    
  # step2
  def image2matrix(self, img):
    """
    將圖像轉(zhuǎn)為矩陣
    """
    image = cv2.imread(img)
    image = cv2.resize(image, self.dim)
    image = img_to_array(image)
    image = np.expand_dims(image, axis=0)
    return image

  @property
  def dim(self):
    """
    圖像矩陣的維度
    """
    if self.model in ["inceptionv3", "inceptionresnetv2"]:
      shape = (299, 299)
    else:
      shape = (224, 224)

    return shape

  @property
  def Model(self):
    """
    模型
    """
    models = {
      "vgg16": VGG16,
      "vgg19": VGG19,
      "resnet50": ResNet50,
      "inceptionv3": InceptionV3,
      "inceptionresnetv2": InceptionResNetV2
    }
    return models[self.model]

  # step3 
  def prediction(self):
    """
    預(yù)測
    """
    model = self.Model(weights=self.weight)
    if self.model in ["inceptionv3", "inceptionresnetv2"]:
      preprocess = preprocess_input(self.image2matrix(self.image))
    else:
      preprocess = imagenet_utils.preprocess_input(self.image2matrix(self.image))

    predict = model.predict(preprocess)

    decode_predict = decode_predictions(predict)

    for (item, (imgId, imgLabel, proba)) in enumerate(decode_predict[0]):
      print("{}, {}, {:.2f}%".format(item + 1, imgLabel, proba * 100))


if __name__ == "__main__":
  image = getOption("image", "image_path")
  model = getOption("model", "model")
  weight = getOption("weights", "weight")
  tools = ImageTools(image, model, weight)
  tools.prediction()

運(yùn)行起來時(shí)會(huì)將模型文件下載到本機(jī),因此第一次運(yùn)行會(huì)比較久(有可能出現(xiàn)的情況就是下載不了,被墻了)

我們來看看使用VGG16的模型預(yù)測輸出的效果如何

最后如果大家需要使用其他模型時(shí)修改 配置文件的model 即可

以上這篇使用keras內(nèi)置的模型進(jìn)行圖片預(yù)測實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python中的協(xié)程深入理解

    python中的協(xié)程深入理解

    這篇文章主要給大家介紹了關(guān)于python中協(xié)程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python實(shí)現(xiàn)PPT幻燈片的添加、刪除或隱藏操作

    Python實(shí)現(xiàn)PPT幻燈片的添加、刪除或隱藏操作

    PowerPoint文檔是商務(wù)、教育、創(chuàng)意等各領(lǐng)域常見的用于展示、教育和傳達(dá)信息的格式,在制作PPT演示文稿時(shí),靈活地操作幻燈片是提高演示效果、優(yōu)化內(nèi)容組織的關(guān)鍵步驟,本文給大家介紹了Python 操作PPT幻燈片- 添加、刪除、或隱藏幻燈片,需要的朋友可以參考下
    2024-08-08
  • tensorflow 變長序列存儲(chǔ)實(shí)例

    tensorflow 變長序列存儲(chǔ)實(shí)例

    今天小編就為大家分享一篇tensorflow 變長序列存儲(chǔ)實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • OpenCV半小時(shí)掌握基本操作之高斯雙邊

    OpenCV半小時(shí)掌握基本操作之高斯雙邊

    這篇文章主要介紹了OpenCV基本操作之高斯雙邊,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • python基礎(chǔ)教程之udp端口掃描

    python基礎(chǔ)教程之udp端口掃描

    開發(fā)一個(gè)程序,用于獲取局域網(wǎng)中開啟snmp服務(wù)的主機(jī)ip地址列表,并寫入相應(yīng)文件以便其它程序使用。下面是實(shí)現(xiàn)方法
    2014-02-02
  • python實(shí)現(xiàn)百萬答題自動(dòng)百度搜索答案

    python實(shí)現(xiàn)百萬答題自動(dòng)百度搜索答案

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)百萬答題自動(dòng)百度搜索答案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 在Python中通過機(jī)器學(xué)習(xí)實(shí)現(xiàn)人體姿勢估計(jì)

    在Python中通過機(jī)器學(xué)習(xí)實(shí)現(xiàn)人體姿勢估計(jì)

    姿態(tài)檢測是計(jì)算機(jī)視覺領(lǐng)域的一個(gè)活躍研究領(lǐng)域。這篇文章將為大家介紹在Python中如何利用機(jī)器學(xué)習(xí)進(jìn)行人體姿勢估計(jì),感興趣的小伙伴可以了解一下
    2021-12-12
  • Python字符串、元組、列表、字典互相轉(zhuǎn)換的方法

    Python字符串、元組、列表、字典互相轉(zhuǎn)換的方法

    這篇文章主要介紹了Python字符串、元組、列表、字典互相轉(zhuǎn)換的方法的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • 分享Pytest fixture參數(shù)傳遞的幾種方式

    分享Pytest fixture參數(shù)傳遞的幾種方式

    這篇文章主要分享的是Pytest fixture參數(shù)傳遞的幾種方式,文章基于python的相關(guān)資料展開對主題的詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • Python對文件和目錄進(jìn)行操作的方法(file對象/os/os.path/shutil 模塊)

    Python對文件和目錄進(jìn)行操作的方法(file對象/os/os.path/shutil 模塊)

    下面小編就為大家?guī)硪黄狿ython對文件和目錄進(jìn)行操作的方法(file對象/os/os.path/shutil 模塊)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05

最新評論