使用caffe訓練好的模型進行分類 官網教程

2021-08-29 15:46:14 字數 2977 閱讀 5241

# -*- coding:utf-8 -*-

import numpy as np

import matplotlib.pyplot as plt

# matplotlib inline

import sys

reload(sys)

sys.setdefaultencoding('utf8')

#設定預設顯示引數

plt.rcparams['figure.figsize'] = (10, 10) # 影象顯示大小

plt.rcparams['image.interpolation'] = 'nearest' # 最近鄰差值: 畫素為正方形

plt.rcparams['image.cmap'] = 'gray' # 使用灰度輸出而不是彩色輸出

# caffe模組要在python的路徑下;

# 這裡我們將把caffe 模組新增到python路徑下.

import sys

caffe_root = '/home/lxw/caffe/' #該檔案要從路徑/examples下執行,否則要調整這一行。

sys.path.insert(0, caffe_root + 'python')

import caffe

import os

if os.path.isfile(caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'):

print 'caffenet found.'

else:

print 'downloading pre-trained caffenet model...'

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

caffe.set_mode_cpu()

model_def = caffe_root + 'models/bvlc_reference_caffenet/deploy.prototxt'

model_weights = caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'

net = caffe.net(model_def, # 定義模型結構

model_weights, # 包含了模型的訓練權值

caffe.test) # 使用測試模式(不執行dropout)

# 載入imagenet影象均值 (隨著caffe一起發布的)

mu = np.load(caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy')

mu = mu.mean(1).mean(1) #對所有畫素值取平均以此獲取bgr的均值畫素值

print 'mean-subtracted values:', zip('bgr', mu)

# 對輸入資料進行變換

transformer = caffe.io.transformer()

transformer.set_transpose('data', (2,0,1)) #將影象的通道數設定為outermost的維數

transformer.set_mean('data', mu) #對於每個通道,都減去bgr的均值畫素值

transformer.set_raw_scale('data', 255) #將畫素值從[0,255]變換到[0,1]之間

transformer.set_channel_swap('data', (2,1,0)) #交換通道,從rgb變換到bgr

# 設定輸入影象大小

net.blobs['data'].reshape(50, # batch 大小

3, # 3-channel (bgr) images

227, 227) # 影象大小為:227x227

# 載入影象(caffe自帶的)並進行預處理

caffe練習例項(3) 使用訓練好的模型

input data input shapelayer include opencv2 dnn.hpp include opencv2 imgproc.hpp include opencv2 highgui.hpp using namespace cv using namespace cv dnn ...

使用caffe訓練好的模型測試單張手寫數字

使用caffe訓練好的模型測試單張手寫數字 初次學習caffe的時候都會按照網上的教程,對caffe經典案例手寫字型識別進行訓練一下,很滿意,訓練完後可以獲得99 的準確率,而且可以獲得乙個訓練好的lenet iter 10000.caffemodel這麼乙個模型。很多人會有困惑,有這麼乙個模型,我...

測試乙個訓練好的caffe模型

在學習caffe的過程中,訓練了出了模型出來,出了當時的準確率和loss值,並沒有看到給定輸入看到真正的輸出,這個時候需要測試一下訓練出來的模型,實際檢視一下效果,其中用到的配置檔案和網路模型在caffe的目錄下都有,自己測試自己的模型時需要修改為自己的 prototxt和 caffemodel u...