1. 程式人生 > >用caffe自帶的訓練好的模型測試圖片的分類結果,實現啦啦啦

用caffe自帶的訓練好的模型測試圖片的分類結果,實現啦啦啦

1、caffemodel檔案下載
可以直接在瀏覽器裡輸入地址下載,也可以執行指令碼檔案下載。下載地址為:http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel
檔名稱為:bvlc_reference_caffenet.caffemodel,檔案大小為230M左右,為了程式碼的統一,將這個 caffemodel檔案下載到caffe根目錄下的 models/bvlc_reference_caffenet/ 資料夾下面。也可以執行指令碼檔案進行下載:

# sudo ./scripts/download_model_binary.py models/bvlc_reference_caffenet

2、均值檔案獲取
有了caffemodel檔案,就需要對應的均值檔案,在測試階段,需要把測試資料減去均值。這個檔案我們用指令碼來下載,在caffe根目錄下執行:

# sudo sh ./data/ilsvrc12/get_ilsvrc_aux.sh

執行並下載後,均值檔案放在 data/ilsvrc12/ 資料夾裡。
3、synset_words.txt檔案
在呼叫指令碼檔案下載均值的時候,這個檔案也一併下載好了。裡面放的是1000個類的名稱。
python方法輸出結果
python介面可以使用jupyter notebook來進行視覺化操作,因此推薦使用這種方法。
在這裡我就不用可視化了,編寫一個py檔案,命名為py-classify.py
檔案存放到了caffe根目錄下,檔案的內容如下:

#coding=utf-8
#載入必要的庫
import numpy as np

import sys,os

#設定當前目錄
caffe_root = '/home/coco/caffe/' 
sys.path.insert(0, caffe_root + 'python')
import caffe
os.chdir(caffe_root)

net_file=caffe_root + 'models/bvlc_reference_caffenet/deploy.prototxt'
caffe_model=caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'
mean_file
=caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy' net = caffe.Net(net_file,caffe_model,caffe.TEST) transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape}) transformer.set_transpose('data', (2,0,1)) transformer.set_mean('data', np.load(mean_file).mean(1).mean(1)) transformer.set_raw_scale('data', 255) transformer.set_channel_swap('data', (2,1,0)) im=caffe.io.load_image(caffe_root+'examples/images/cat.jpg') //測試圖片的存放地址 net.blobs['data'].data[...] = transformer.preprocess('data',im) out = net.forward() imagenet_labels_filename = caffe_root + 'data/ilsvrc12/synset_words.txt' labels = np.loadtxt(imagenet_labels_filename, str, delimiter='\t') top_k = net.blobs['prob'].data[0].flatten().argsort()[-1:-6:-1] for i in np.arange(top_k.size): print top_k[i], labels[top_k[i]]

examples/images/cat.jpg 為測試貓的存放地址
執行這個檔案,輸出:

281 n02123045 tabby, tabby cat
282 n02123159 tiger cat
285 n02124075 Egyptian cat
277 n02119022 red fox, Vulpes vulpes
287 n02127052 lynx, catamount

輸出結果分析:輸出的五行分別表示和測試圖片最接近的5個類別,從上到下表示相似程度。