1. 程式人生 > >tensorflow 1.0 學習:用Google訓練好的模型來進行影象分類

tensorflow 1.0 學習:用Google訓練好的模型來進行影象分類

谷歌在大型影象資料庫ImageNet上訓練好了一個Inception-v3模型,這個模型我們可以直接用來進來影象分類。

下載地址:github:https://github.com/taey16/tf/tree/master/imagenet

下載完解壓後,得到幾個檔案:

其中的classify_image_graph_def.pb 檔案就是訓練好的Inception-v3模型。

imagenet_synset_to_human_label_map.txt是類別檔案。

隨機找一張圖片:如

對這張圖片進行識別,看它屬於什麼類?

程式碼如下:先建立一個類NodeLookup來將softmax概率值對映到標籤上。

然後建立一個函式create_graph()來讀取模型。

最後讀取圖片進行分類識別:

複製程式碼
# -*- coding: utf-8 -*-

import tensorflow as tf
import numpy as np
import re
import os

model_dir='D:/tf/model/'
image='d:/cat.jpg'


#將類別ID轉換為人類易讀的標籤
class NodeLookup(object):
  def __init__(self,
               label_lookup_path=None,
               uid_lookup_path=None):
    if not label_lookup_path:
      label_lookup_path 
= os.path.join( model_dir, 'imagenet_2012_challenge_label_map_proto.pbtxt') if not uid_lookup_path: uid_lookup_path = os.path.join( model_dir, 'imagenet_synset_to_human_label_map.txt') self.node_lookup = self.load(label_lookup_path, uid_lookup_path) def load(self, label_lookup_path, uid_lookup_path):
if not tf.gfile.Exists(uid_lookup_path): tf.logging.fatal('File does not exist %s', uid_lookup_path) if not tf.gfile.Exists(label_lookup_path): tf.logging.fatal('File does not exist %s', label_lookup_path) # Loads mapping from string UID to human-readable string proto_as_ascii_lines = tf.gfile.GFile(uid_lookup_path).readlines() uid_to_human = {} p = re.compile(r'[n\d]*[ \S,]*') for line in proto_as_ascii_lines: parsed_items = p.findall(line) uid = parsed_items[0] human_string = parsed_items[2] uid_to_human[uid] = human_string # Loads mapping from string UID to integer node ID. node_id_to_uid = {} proto_as_ascii = tf.gfile.GFile(label_lookup_path).readlines() for line in proto_as_ascii: if line.startswith(' target_class:'): target_class = int(line.split(': ')[1]) if line.startswith(' target_class_string:'): target_class_string = line.split(': ')[1] node_id_to_uid[target_class] = target_class_string[1:-2] # Loads the final mapping of integer node ID to human-readable string node_id_to_name = {} for key, val in node_id_to_uid.items(): if val not in uid_to_human: tf.logging.fatal('Failed to locate: %s', val) name = uid_to_human[val] node_id_to_name[key] = name return node_id_to_name def id_to_string(self, node_id): if node_id not in self.node_lookup: return '' return self.node_lookup[node_id] #讀取訓練好的Inception-v3模型來建立graph def create_graph(): with tf.gfile.FastGFile(os.path.join( model_dir, 'classify_image_graph_def.pb'), 'rb') as f: graph_def = tf.GraphDef() graph_def.ParseFromString(f.read()) tf.import_graph_def(graph_def, name='') #讀取圖片 image_data = tf.gfile.FastGFile(image, 'rb').read() #建立graph create_graph() sess=tf.Session() #Inception-v3模型的最後一層softmax的輸出 softmax_tensor= sess.graph.get_tensor_by_name('softmax:0') #輸入影象資料,得到softmax概率值(一個shape=(1,1008)的向量) predictions = sess.run(softmax_tensor,{'DecodeJpeg/contents:0': image_data}) #(1,1008)->(1008,) predictions = np.squeeze(predictions) # ID --> English string label. node_lookup = NodeLookup() #取出前5個概率最大的值(top-5) top_5 = predictions.argsort()[-5:][::-1] for node_id in top_5: human_string = node_lookup.id_to_string(node_id) score = predictions[node_id] print('%s (score = %.5f)' % (human_string, score)) sess.close()
複製程式碼

最後輸出:

tiger cat (score = 0.40316)
Egyptian cat (score = 0.21686)
tabby, tabby cat (score = 0.21348)
lynx, catamount (score = 0.01403)

Persian cat (score = 0.00394)

轉自徐其華的學習專欄

http://www.cnblogs.com/denny402/p/6942580.html

相關推薦

tensorflow 1.0 學習Google訓練模型進行影象分類

谷歌在大型影象資料庫ImageNet上訓練好了一個Inception-v3模型,這個模型我們可以直接用來進來影象分類。下載地址:github:https://github.com/taey16/tf/tree/master/imagenet下載完解壓後,得到幾個檔案:其中的c

tensorflow 1.0 學習別人訓練模型進行圖像分類

ima ppi gin 什麽 dir targe spl flow blog 谷歌在大型圖像數據庫ImageNet上訓練好了一個Inception-v3模型,這個模型我們可以直接用來進來圖像分類。 下載地址:https://storage.googleapis.com/d

tensorflow 1.0 學習別人訓練模型進行影象分類

谷歌在大型影象資料庫ImageNet上訓練好了一個Inception-v3模型,這個模型我們可以直接用來進來影象分類。 下載完解壓後,得到幾個檔案: 其中的classify_image_graph_def.pb 檔案就是訓練好的Inception-v3模型。 imagenet_synset_to_h

tensorflow 1.0 學習參數初始化(initializer)

正交矩陣 算子 smi esc one tor pytho ops ride CNN中最重要的就是參數了,包括W,b。 我們訓練CNN的最終目的就是得到最好的參數,使得目標函數取得最小值。參數的初始化也同樣重要,因此微調受到很多人的重視,那麽tf提供了哪些初始化參數的方法呢

tensorflow 1.0 學習模型的保存與恢復(Saver)

clas truncated 中間變量 lac tdd mini b- oat utf-8 將訓練好的模型參數保存起來,以便以後進行驗證或測試,這是我們經常要做的事情。tf裏面提供模型保存的是tf.train.Saver()模塊。 模型保存,先要創建一個Saver對象:如

tensorflow 1.0 學習十圖詳解tensorflow資料讀取機制

本文轉自:https://zhuanlan.zhihu.com/p/27238630 在學習tensorflow的過程中,有很多小夥伴反映讀取資料這一塊很難理解。確實這一塊官方的教程比較簡略,網上也找不到什麼合適的學習材料。今天這篇文章就以圖片的形式,用最簡單的語言,為大家詳細解釋一下tensorflow的

tensorflow 1.0 學習模型的儲存與恢復(Saver)

儲存模型: import tensorflow as tf #Prepare to feed input, i.e. feed_dict and placeholders w1 = tf.placeholder("float", name="w1") w2

tensorflow學習筆記十一別人訓練模型進行影象分類

谷歌在大型影象資料庫ImageNet上訓練好了一個Inception-v3模型,這個模型我們可以直接用來進來影象分類。下載完解壓後,得到幾個檔案:其中的classify_image_graph_def.pb 檔案就是訓練好的Inception-v3模型。imagenet_sy

Caffe學習4. 使用訓練的caffemodel(python)

在嘗試過 mnist 資料集進行測試後,想要對任意一張圖片進行識別測試,所以將目光瞄準了GoogleNet。在Caffe安裝好後就會有GoogleNet的example,在model種就可以找到。 ————————————————————————————————————

文字主題抽取gensim訓練LDA模型

得知李航老師的《統計學習方法》出了第二版,我第一時間就買了。看了這本書的目錄,非常高興,好傢伙,居然把主題模型都寫了,還有pagerank。一路看到了馬爾科夫蒙特卡羅方法和LDA主題模型這裡,被打擊到了,滿滿都是數學公式。LDA是目前為止我見過最複雜的模型了。 找了培訓班的視訊看,對LDA模型有了大致的認識

Windows下caffefine-tuning訓練的caffemodel進行影象分類

 小菜準備了幾張驗證的圖片存放路徑為caffe根目錄下的 examples/images/, 如果我們想用一個微調訓練好的caffemodel來對這張圖片進行分類,那該怎麼辦呢?下面小菜來詳細介紹一下這一任務的步驟。一般可以同兩種方式進行測試,分別是基於c++介

使用Keras預訓練模型ResNet50進行影象分類

Keras提供了一些用ImageNet訓練過的模型:Xception,VGG16,VGG19,ResNet50,InceptionV3。在使用這些模型的時候,有一個引數include_top表示是否包含模型頂部的全連線層,如果包含,則可以將影象分為ImageNet中的1000

Tensorflow學習 AlexNet完整訓練與測試程式碼

alexnet.py """This is an TensorFLow implementation of AlexNet by Alex Krizhevsky at all. Paper: (http://papers.nips.cc/paper/4824-imagenet-classific

tensorflow 學習CNN進行影象分類

# -*- coding: utf-8 -*- from skimage import io,transform import glob import os import tensorflow as tf import numpy as np import time path='e:/flower/'

tensorflow學習系列六mnist從訓練儲存模型再到載入模型測試

    通過前面幾個系列的學習對tensorflow有了一個漸漸親切的感覺,本文主要是從tensorflow模型訓練與驗證的模型進行實踐一遍,以至於我們能夠通過tensorflow的訓練有一個整體的概念。下面主要是從訓練到儲存模型,然後載入模型進行預測。# -*- codin

Tensorflow學習(7)別人訓練模型進行影象分類

其中的classify_image_graph_def.pb 檔案就是訓練好的Inception-v3模型。 imagenet_synset_to_human_label_map.txt是類別檔案。 隨機找一張圖片:如 對這張圖片進行識別,看它屬於

深度學習tensorflow實戰筆記(5)訓練的VGG-16模型提取影象特徵

     上一篇部落格介紹瞭如果使用自己訓練好的模型用於影象分類和特徵提取,但是有時候自己的資料集大小有限,所以更多的時候我們需要用VGG-16預訓練好的模型提取特徵,相關學者預訓練好的模型使用的都是公開的標準資料集,所以我們直接用預訓練的模型提取我們自己影象的特徵,可以用於

機器不學習神經模塊網絡學習推理

model tensor 作用 參考 我們 arr 生成 人工 相關 機器不學習 jqbxx.com-機器學習好網站 假設我們正在建造一個家用機器人,並希望它能夠回答與它周圍的一些問題。我們可能會它問這樣的問題: 我們如何確保機器人可以正確回答這些問題?深度學習的標準

tensorflow源碼學習之五 -- 同步訓練和異步訓練

stack location warning 可能 oss implicit mov -i ner 同步和異步訓練是由optimizer來決定的。 1. 同步訓練 同步訓練需要使用SyncReplicasOptimizer,參考http

tf.reshape()的Tensorflow 1.0 版本問題報錯

tf.reverse tf.reverse之前會用一維 bool 張量控制要顛倒哪些維度。現在我們使用軸索引張量。 例如,tf.reverse(a, [True, False, True]) 現在必須是 tf.reve