Caffe Python特徵抽取

2021-09-08 04:22:09 字數 3778 閱讀 9218

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

這裡我主要是結合了caffe官網的例程,當然它給的例程是參照的ipython,然後以命令的形式,我主要做了一些相關的整合。當時也不知道怎麼提取一些相關特徵,上網一搜也基本上沒有乾淨、好的**。因此我在這裡介紹如何使用python做特徵的抽取。

首先你要確保你已經在安裝caffe時,編譯了python介面,我記得對應著的命令是make pycaffe,相關的介面是在在caffe_root\python目錄下,這個目錄裡面還是有乙個caffe模組,提供了一些使用python的基本類

這裡我把其例程中,以及一部分我新增的**都合到了一起,並且加了注釋,希望能對大家有幫助,這裡主要是三個函式

其中在transformer那裡需要根據自己的需求設定

import numpy as

npimport 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():

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

# 提取特徵並儲存為相應地檔案

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])

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 互資訊法 ...