caffe大家一般用到的深度學習平台都是這個,關於caffe的訓練通常一般都可以通過一些命令來執行,但是在deploy階段,如果是做實際的工程,那麼c++介面用得會相對比較多。但是caffe是支援python和matlab介面的,所以用python來做一些相關的特徵的處理以及額外的任務比較方便
這裡我主要是結合了caffe官網的例程,當然它給的例程是參照的ipython,然後以命令的形式,我主要做了一些相關的整合。當時也不知道怎麼提取一些相關特徵,上網一搜也基本上沒有乾淨、好的**。因此我在這裡介紹如何使用python做特徵的抽取。
首先你要確保你已經在安裝caffe時,編譯了python介面,我記得對應著的命令是make pycaffe
,相關的介面是在在caffe_root\python
目錄下,這個目錄裡面還是有乙個caffe模組,提供了一些使用python的基本類
這裡我把其例程中,以及一部分我新增的**都合到了一起,並且加了注釋,希望能對大家有幫助,這裡主要是三個函式
其中在transformer那裡需要根據自己的需求設定
import numpy asnpimport matplotlib.pyplot
asplt
import os
import caffe
import sys
import pickle
import
struct
import sys,cv2
caffe_root = '
../'
# 執行模型的prototxt
deployprototxt = '
/home/chenjie/baiyan/caffe/models/compcar_model_c_all/deploy_louyihang.prototxt
'# 相應載入的modelfile
modelfile = '
/home/chenjie/baiyan/caffe/models/compcar_model_c_all/caffenet_carmodel_baiyan_iter_50000.caffemodel
'# meanfile 也可以用自己生成的
meanfile = '
python/caffe/imagenet/ilsvrc_2012_mean.npy
'# 需要提取的影象列表
imagelistfile = '
/home/chenjie/dataset/500carcnnretrieve/500ca***ceorig/images_total.txt
'imagebasepath = '
/home/chenjie/dataset/500carcnnretrieve/500ca***ceorig
'gpuid = 4
postfix = '
.classify_allcar1716_fc6
'# 初始化函式的相關操作
def initilize():
'initilize ...
'sys.path.insert(
0, caffe_root + '
python')
caffe.set_mode_gpu()
caffe.set_device(gpuid)
net =caffe.net(deployprototxt, modelfile,caffe.test)
return
net
# 提取特徵並儲存為相應地檔案
def extractfeature(imagelist, net):
# 對輸入資料做相應地調整如通道、尺寸等等
transformer = caffe.io.transformer()
transformer.set_transpose(
'data
', (2,0,1
)) transformer.set_mean(
'data
', np.load(caffe_root + meanfile).mean(1).mean(1
)) # mean pixel
transformer.set_raw_scale(
'data
', 255
) transformer.set_channel_swap(
'data
', (2,1,0
))
# set net to batch size of 1
如果較多就設定合適的batchsize
net.blobs[
'data
'].reshape(1,3,227,227
) #這裡根據需要設定,如果網路中不一致,需要調整
# 讀取檔案列表
def readimagelist(imagelistfile):
imagelist =
with open(imagelistfile,'r
') as
fi:
while
(true):
line = fi.readline().strip().split()# every line is
a image file name
ifnot line:
break
0])
'read imagelist done image num
', len(imagelist)
return
imagelist
if __name__ == "
__main__":
net =initilize()
imagelist =readimagelist(imagelistfile)
extractfeature(imagelist, net)
還沒有嘗試,等跑完模型試試特徵提取;
caffe Python特徵抽取
caffe大家一般用到的深度學習平台都是這個,關於caffe的訓練通常一般都可以通過一些命令來執行,但是在deploy階段,如果是做實際的工程,那麼c 介面用得會相對比較多。但是caffe是支援python和matlab介面的,所以用python來做一些相關的特徵的處理以及額外的任務比較方便 這裡我...
文字特徵抽取
例項 文字特徵抽取 from sklearn.feature extraction import dictvectorizer from sklearn.feature extraction.text import countvectorizer import jieba defcountvec 對...
特徵選擇和特徵抽取
特徵提取演算法分為特徵選擇和特徵抽取兩大類。特徵選擇 不改變原始的特徵資料,只是選擇一部分出來。其中常用的特徵選擇演算法有 1 df document frequency 文件頻率 df 統計特徵詞出現的文件數量,用來衡量某個特徵詞的重要性 2 mi mutual information 互資訊法 ...