caffe中各語言預處理方式

2021-09-26 07:24:59 字數 1531 閱讀 2083

一、 caffe預處理方式

caffe有c++、matlab和python三種實現方法,每種方法的預處理方式各不相同。

1.1 c++讀入

c++用opencv讀入的是bgr格式,cv_32fc3,0-255之間,[h,w,c]排列,需要用warpinputlayer轉換成[c, h ,w]排列(c代表通道數,h代表影象的高,w代表影象的寬),然後再減去均值。

$ cv::mat sample_normalized;

$ cv:: substract(sample_float, mean_, sample_normalized);

1.2 matlab讀入

matlab讀入的是rgb,排列是[h,w,c],所謂的列主序,因此需要交換h和w,轉換成bgr,再減去均值。

$ im_data = im(:, :, [3, 2, 1]); #通道由rgb改為bgr

$ im_data = permute(im_data, [2, 1, 3]); #的h、w改為w、h

$ im_data = single(im_data); #convert from uint8 to single

$ im_data = imresize(im_data,[image_dim image_dim], 『bilinear』); #改變影象的尺寸

$ im_data = im_data -mean_data; #減去平均值(already in w x h x c, bgr)

1.3 用python讀入

1.3.1 caffe.io

caffe.io讀進去的是rgb,0-1之間的浮點數,排序方式是[h,

w, c]改為[c, h, w],變換到0-255,減去均值,再轉換為bgr。

$ transformer = caffe.io.transformer()

$ transformer.set_transpose(『data』, (2,0,1))

$ transformer.set_mean(『data』,np.load(mean_file).mean(1).mean(1))

$ transformer.set_raw_scale(『data』, 255)

$ transformer.set_channel_swap(『data』,(2,1,0))

$ net.blobs[『data』].reshape(1,3,227,227)

$ im = caffe.io.load_image(imgfileapth)

$ net.blobs[『data』].data[…] = transformer.preprocess(『data』,im)

1.3.2 opencv

讀入的是bgr格式,畫素值是0-255,需要轉換到[c, h, w],再減去均值。

$ transformer = caffe.io.transformer()

$ transformer.set_transpose(『data』, (2, 0, 1))

$ transformer.set_mean(『data』, np.array([104, 117, 123]))

MySQL 預處理方式api處理

預處理方式api處理 include include mysql.h include include define host localhost 主機 define user root mysql使用者,非主機 define passwd 123 密碼 define dbname scott 庫名 ...

執行緒實現及各狀態處理方式

執行緒實現方式 本章主要介紹執行緒實現方式及各種狀態執行緒運 況,通常實現執行緒的方式是繼承thread和實現runnable介面兩種,當然還有其他方式,比如exceutors類,不管是什麼方式,最終都是繼承thread或者實現runnable介面。1 建立執行緒 public class thre...

SpringBoot中的異常處理方式

springboot中有五種處理異常的方式 springboot預設的處理異常機制 springboot預設的已經提供了一套處理異常的機制。一旦程式出現了異常springboot就像 error的url傳送請求。在springboot中提供了乙個叫basicexceptioncontroller來處...