caffe大家一般用到的深度學習平台都是這個,關於caffe的訓練通常一般都可以通過一些命令來執行,但是在deploy階段,如果是做實際的工程,那麼c++介面用得會相對比較多。但是caffe是支援python和matlab介面的,所以用python來做一些相關的特徵的處理以及額外的任務比較方便
這裡我主要是結合了caffe官網的例程,當然它給的例程是參照的ipython,然後以命令的形式,我主要做了一些相關的整合。當時也不知道怎麼提取一些相關特徵,上網一搜也基本上沒有乾淨、好的**。因此我在這裡介紹如何使用python做特徵的抽取。
首先你要確保你已經在安裝caffe時,編譯了python介面,我記得對應著的命令是make pycaffe
,相關的介面是在在caffe_root\python
目錄下,這個目錄裡面還是有乙個caffe模組,提供了一些使用python的基本類
這裡我把其例程中,以及一部分我新增的**都合到了一起,並且加了注釋,希望能對大家有幫助,這裡主要是三個函式
其中在transformer那裡需要根據自己的需求設定
import numpy as np
import matplotlib.pyplot as plt
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'
# 初始化函式的相關操作
definitilize
():print
'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
# 提取特徵並儲存為相應地檔案
defextractfeature
(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) #這裡根據需要設定,如果網路中不一致,需要調整
# 讀取檔案列表
defreadimagelist
(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
print
'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 互資訊法 ...