1. 程式人生 > >caffe學習筆記4-matcaffe訓練與測試

caffe學習筆記4-matcaffe訓練與測試

.m檔案流程(訓練或者測試)
1.
   新增路徑 caffe/matlab 使得 Matlab 可以使用 matcaffe, +caffe資料夾下都是matcaffe的.m介面,可用matlab操作caffe網路
   if exist('../+caffe', 'dir')
      addpath('..');

2.設定caffe cpu/gpu 模式(在測試或者訓練之前。.m檔案中)
   if exist('use_gpu', 'var') && use_gpu
      caffe.set_mode_gpu();
      gpu_id = 0;  % we will use the first gpu in this demo
      caffe.set_device(gpu_id);
   else
      caffe.set_mode_cpu(); 
   end

3.後面就是初始化網路,進行訓練或者測試。
   用已有模型進行測試流程(測試以分類為例)
  model_dir = '../../models/bvlc_reference_caffenet/';  //實際檔案路徑model = './models/bvlc_reference_caffenet/deploy.prototxt';
  net_model = [model_dir 'deploy.prototxt'];         
  net_weights = [model_dir 'bvlc_reference_caffenet.caffemodel']; 
  phase = 'test'   
  net = caffe.Net(net_model, net_weights, phase); //建立網路並載入權值 
  或者:net = caffe.Net(model, 'test'); % 建立網路,但不載入權值
              net.copy_from(weights); % 載入權值
  prepare_image() //資料預處理(格式+冗餘),自己定義
  input_data = {prepare_image(im)};  //裝載資料,等價net.blobs('data').set_data(prepare_image(im));用法
  scores = net.forward(input_data);  //前向計算
  //提取出最大的score(概率)以及對應的標籤號
  scores = scores{1};        //等價prob = net.blobs('prob').get_data();用法//計算之後再讀取原塊的資料,最後一層為prob
  scores = mean(scores, 2);  //取所有分類結果的平均值 

  [~, maxlabel] = max(scores); //找到最大概率對應的標籤號