Caffe Python介面常用API參考

2021-08-30 13:53:13 字數 2721 閱讀 1916

主要是定義了乙個transformer,preprocess和deprocess操作,完成caffe和python之間資料的格式轉換等,

注意caffe: bgr,0-255,c*h*w,而python是rgb, 0-1,h*w*c的資料格式,所以一般python讀取的資料要轉換成適合caffe用的資料。

python介面可以重點看[2][3]

net.params對應網路中的引數(卷積核引數,全連線層引數等),有兩個字典值,net.params[0]是權值(weights),net.params[1]是偏移量(biases),權值引數的維度表示是(output_channels, input_channels, filter_height, filter_width),偏移量引數的維度表示(output_channels,)

net.blobs對應網路每一層資料,對於每一層,都是四個維度:(batch_size, channel_dim, height, width)

import numpy as np # 載入numpy

import matplotlib.pyplot as plt # 載入matplotlib

%matplotlib inline # 此處是為了能在notebook中直接顯示影象

# rcparams是乙個包含各種引數的字典結構,含有多個key-value,可修改其中部分值

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

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

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

載入caffe

import sys

caffe_root = '../' # caffe根目錄,此處為相對路徑,如果失靈,可換成絕對路徑

sys.path.insert(0, caffe_root + 'python') # 載入caffe的python模組

import caffe # 載入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

# 載入imagenet訓練集的影象均值,預處理需要減去均值

# ilsvrc_2012_mean.npy檔案是numpy格式,其資料維度是(3l, 256l, 256l)

mu = np.load(caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy') # 載入均值檔案

mu = mu.mean(1).mean(1)

# 對所有畫素值取平均以此獲取bgr的均值畫素值 1代表按行取均值,在這裡不是很理解這是如何演算法bgr的均值的

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

# 取平均後得到bgr均值分別是[104.00698793,116.66876762,122.67891434]

# 對輸入資料進行變換

# caffe.io.transformer是乙個類,實體化的時候建構函式__init__(self, inputs)給乙個初值

# 其中net.blobs本身是乙個字典,每乙個key對應每一層的名字,#net.blobs['data'].data.shape計算結果為(10, 3, 227, 227)

transformer = caffe.io.transformer()

# 以下都是caffe.io.transformer類的函式方法

#caffe.io.transformer的類定義放在io.py檔案中,也可用help函式檢視說明

# python讀取的檔案格式為h×w×k(高度,寬度,通道數),需轉化為k×h×w(通道數,高度,寬度)

transformer.set_transpose('data', (2,0,1))

transformer.set_mean('data', mu) # 每個通道減去均值

# python中將儲存為[0-1]

# 如果模型輸入用的是0~255的原始格式,則需要做以下轉換,將畫素值從[0,1]變換為[0,255]

# 如果模型輸入用的是0~1的格式,則不需要用到下一句

transformer.set_raw_scale('data', 255)

# caffe中是bgr格式,而原始格式是rgb,所以要轉化

transformer.set_channel_swap('data', (2,1,0))

參考:

pycaffe學習之(一):io.py原始碼解讀

caffe學習筆記(1)--python介面

caffe-python介面常用api參考

caffe中python介面的使用

caffe Python特徵抽取

caffe大家一般用到的深度學習平台都是這個,關於caffe的訓練通常一般都可以通過一些命令來執行,但是在deploy階段,如果是做實際的工程,那麼c 介面用得會相對比較多。但是caffe是支援python和matlab介面的,所以用python來做一些相關的特徵的處理以及額外的任務比較方便 這裡我...

Caffe Python特徵抽取

caffe大家一般用到的深度學習平台都是這個,關於caffe的訓練通常一般都可以通過一些命令來執行,但是在deploy階段,如果是做實際的工程,那麼c 介面用得會相對比較多。但是caffe是支援python和matlab介面的,所以用python來做一些相關的特徵的處理以及額外的任務比較方便 這裡我...

Caffe Python開發環境設定

由於安裝 python 的第三方庫的時候需要編譯,所以需要安裝下面兩個庫 sudo yum install python devel numpy設定virtualenv環境 virtualenv caffeenv cd caffeenv bin activate安裝 python 第三方庫 cd c...