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

使用keras內(nèi)置的模型進行圖片預測實例

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

keras 模塊里面為我們提供了一個預訓練好的模型,也就是開箱即可使用的圖像識別模型

趁著國慶假期有時間我們就來看看這個預訓練模型如何使用吧

可用的模型有哪些?

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

1、VGG16

2、VGG19

3、ResNet50

4、InceptionResNetV2

5、InceptionV3

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

模型文件從哪來

當我們使用了這幾個模型時,keras就會去自動下載這些已經(jīng)訓練好的模型保存到我們本機上面

模型文件會被下載到 ~/.keras/models/并在載入模型時自動載入

各個模型的信息:

如何使用預訓練模型

使用大致分為三個步驟

1、導入所需模塊

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

3、將圖像矩陣放到模型中進行預測

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

VGG16,VGG19,ResNet50 默認輸入尺寸是224x224

InceptionV3, InceptionResNetV2 模型的默認輸入尺寸是299x299

代碼demo

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

我需要使用預訓練模型來識別它

那我們就按照上面的步驟

第一步導入模塊

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)

第三步 將圖像矩陣丟到模型中進行預測

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

完整代碼如下

1、配置文件

2、獲取配置文件的模塊

3、圖像預測模塊

配置文件

[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)

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

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

# 使用內(nèi)置的預訓練模型的步驟
# step1 導入需要的模型
# step2 將需要識別的圖像數(shù)據(jù)轉(zhuǎn)換為矩陣(矩陣的大小需要根據(jù)模型的不同而定)
# step3 將圖像矩陣丟到模型里面進行預測
# -------------------------------------------------------
# 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預訓練模型進行圖像識別
  """
  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):
    """
    預測
    """
    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()

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

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

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

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

相關(guān)文章

  • Python使用DrissionPage實現(xiàn)網(wǎng)頁自動化采集

    Python使用DrissionPage實現(xiàn)網(wǎng)頁自動化采集

    DrissionPage 是一個基于 python 的網(wǎng)頁自動化工具,它既能控制瀏覽器,也能收發(fā)數(shù)據(jù)包,還能把兩者合而為一,可兼顧瀏覽器自動化的便利性和 requests 的高效率,本文給大家介紹了Python使用DrissionPage實現(xiàn)網(wǎng)頁自動化采集,需要的朋友可以參考下
    2025-03-03
  • Python爬蟲基礎(chǔ)之初次使用scrapy爬蟲實例

    Python爬蟲基礎(chǔ)之初次使用scrapy爬蟲實例

    今天給大家?guī)淼氖顷P(guān)于Python爬蟲的相關(guān)知識,文章圍繞著Python scrapy展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 七牛云的python sdk 批量刪除資源的操作方法

    七牛云的python sdk 批量刪除資源的操作方法

    今天做項目的時候用到七牛云,關(guān)于對資源的操作是在后端做的,用的SDK,這篇文章主要介紹了七牛云的python sdk 是如何 批量刪除資源的,需要的朋友可以參考下
    2021-10-10
  • 基于Python制作一個簡單的文章搜索工具

    基于Python制作一個簡單的文章搜索工具

    這篇文章主要為大家詳細介紹了如何基于Python制作一個簡單的文章搜索工具,都是一些基礎(chǔ)的應(yīng)用,文中的示例代碼講解詳細,感興趣的可以了解一下
    2023-05-05
  • python使用socket制作聊天室詳細源碼(可以直接運行)

    python使用socket制作聊天室詳細源碼(可以直接運行)

    Python是一個非常靈活的編程語言,我們現(xiàn)在到處可見用Python編寫的應(yīng)用程序,下面這篇文章主要給大家介紹了關(guān)于python使用socket制作聊天室的相關(guān)資料,文中的代碼可以直接運行,需要的朋友可以參考下
    2023-12-12
  • python中常見的5種框架解讀

    python中常見的5種框架解讀

    這篇文章主要介紹了python中常見的5種框架,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 對python遍歷文件夾中的所有jpg文件的實例詳解

    對python遍歷文件夾中的所有jpg文件的實例詳解

    今天小編就為大家分享一篇對python遍歷文件夾中的所有jpg文件的實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python利用smtplib實現(xiàn)郵件發(fā)送

    Python利用smtplib實現(xiàn)郵件發(fā)送

    在當今數(shù)字時代,電子郵件已成為我們生活和工作中不可或缺的一部分,本篇文章將為你講解如何在Python發(fā)送郵件,并為你提供實現(xiàn)的多種方式,希望對大家有所幫助
    2023-06-06
  • Django實現(xiàn)簡單分頁功能的方法詳解

    Django實現(xiàn)簡單分頁功能的方法詳解

    這篇文章主要介紹了Django實現(xiàn)簡單分頁功能的方法,結(jié)合實例形式分析了django的第三方模塊django-pure-pagination的安裝、使用及實現(xiàn)分頁的相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • Django中ajax發(fā)送post請求 報403錯誤CSRF驗證失敗解決方案

    Django中ajax發(fā)送post請求 報403錯誤CSRF驗證失敗解決方案

    這篇文章主要介紹了Django中ajax發(fā)送post請求 報403錯誤CSRF驗證失敗解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08

最新評論

卫辉市| 杭锦旗| 蓝田县| 萍乡市| 闽侯县| 三原县| 怀安县| 泰顺县| 巴里| 工布江达县| 松溪县| 漯河市| 德令哈市| 云安县| 依安县| 靖宇县| 迁安市| 逊克县| 晋中市| 廊坊市| 邮箱| 田阳县| 合阳县| 云阳县| 泰顺县| 阿合奇县| 富宁县| 乾安县| 中卫市| 卢湾区| 蒙山县| 蓬莱市| 伊金霍洛旗| 泾源县| 平山县| 浦城县| 鹿邑县| 尉犁县| 兰考县| 紫阳县| 杭锦旗|