此篇文章主要是給大家介紹了python深度神經網絡tensorflow練習好一點的實體模型開展圖像分類實例詳細說明,感興趣的小伙伴可以參考借鑒一下,希望可以有一定的幫助,祝愿大家多多的發展,盡早漲薪。
文章正文
Google在各類圖象數據庫系統ImageNet上練習好啦1個Inception-v3實體模型,這一實體模型大家也可以用來進去圖像分類。
下載地址:https://pan.baidu.com/s/1XGfwYer5pIEDkpM3nM6o2A
提取碼:hu66
免費下載完緩解壓力后,獲得好多個文檔:
在其中
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'[nd]*[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://specialneedsforspecialkids.com/yun/128739.html
本文主要是給大家介紹了caffe的python插口生成deploy文件學習培訓及其用練習好一點的實體模型(caffemodel)來歸類新的圖片實例詳細說明,感興趣的小伙伴可以參考借鑒一下,希望可以有一定的幫助,祝愿大家多多的發展,盡早漲薪 caffe的python插口生成deploy文件 假如要將練習好一點的實體模型用于檢測新的圖片,那必然必須得一個deploy.prototxt文件,這一...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1982·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02