caffe Python特徵抽取

2021-07-31 20:27:03 字數 3299 閱讀 6256

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