1、caffemodel文件
文件名稱為:bvlc_reference_caffenet.caffemodel,文件大小為230M左右,為了代碼的統一,將這個caffemodel文件下載到caffe根目錄下的 models/bvlc_reference_caffenet/ 文件夾下面。可以運行腳本文件進行下載:
./scripts/download_model_binary.py models/bvlc_reference_caffenet
2、均值文件。
有了caffemodel文件,就需要對應的均值文件,在測試階段,需要把測試數據減去均值。這個文件我們用腳本來下載,在caffe根目錄下執行:
sh ./data/ilsvrc12/get_ilsvrc_aux.sh
執行並下載后,均值文件放在 data/ilsvrc12/ 文件夾里。
3、synset_words.txt文件
在調用腳本文件下載均值的時候,這個文件也一並下載好了。里面放的是1000個類的名稱。
python方法
caffe開發團隊實際上也編寫了一個python版本的分類文件,路徑為 python/classify.py
運行這個文件必需兩個參數,一個輸入圖片文件,一個輸出結果文件。而且運行必須在python目錄下。假設當前目錄是caffe根目錄,則運行:
cd python python classify.py ../examples/images/cat.jpg result.npy
分類的結果保存為當前目錄下的result.npy文件里面,是看不見的。而且這個文件有錯誤,運行的時候,會提示
Mean shape incompatible with input shape
的錯誤。因此,要使用這個文件,我們還得進行修改:
1、修改均值計算:
定位到
mean = np.load(args.mean_file)
這一行,在下面加上一行:
mean=mean.mean(1).mean(1)
則可以解決報錯的問題。
2、修改文件,使得結果顯示在命令行下:
定位到
# Classify. start = time.time() predictions = classifier.predict(inputs, not args.center_only) print("Done in %.2f s." % (time.time() - start))
這個地方,在后面加上幾行,如下所示:
# Classify. start = time.time() predictions = classifier.predict(inputs, not args.center_only) print("Done in %.2f s." % (time.time() - start)) imagenet_labels_filename = '../data/ilsvrc12/synset_words.txt' labels = np.loadtxt(imagenet_labels_filename, str, delimiter='\t') top_k = predictions.flatten().argsort()[-1:-6:-1] for i in np.arange(top_k.size): print top_k[i], labels[top_k[i]]
就樣就可以了。運行不會報錯,而且結果會顯示在命令行下面。