1. 程式人生 > >Caffe的matlab介面的基本操作

Caffe的matlab介面的基本操作

如果已經編譯了Caffe的matlab版本matcaffe,並將對應路徑新增到matlab的路徑中,就可以進行下面的額學習了:

%CPU模式
caffe.set_mode_cpu();
%GPU模式
gpu_id=0;
caffe.set_mode_gpu();
caffe.set_device(gpu_id);
%網路初始化
net_model=['path/to/deploy.prototxt'];
net=caffe.Net(net_model,'train')
%利用訓練好的模型初始化網路
net_weights=[path/to/model.caffemodel’];
net=caffe.Net(net_model,net_weights,'test
');
function crop_data=prepare_image(im)
    %%%%載入均值檔案:w*h*c
    f=load('path/to/mean.mat');
    mean_data=f.mean_data;

    %%%%%圖片預處理
    %RGB轉換乘BGRW*H*C
    im_data=im(:,:,[3,2,1]);
    %將WH互換,H*W*C->W*H*C
    im_data=permute(img_data,[2,1,3]);
    %將uint8轉換成single浮點數
    im_data=single(im_data);
    im_data=im_data-mean_data;

    %已知網路輸入為227
*227大小,輸入圖片為256*256大小,因此需要在原圖上進行crop抽樣。 %十張227*227的三通道單精度圖片 crop_im=zeros(227,227,3,10,'single'); indices=[0,256-227]+1; n=1; for i=indices for j=indices crop_im(:,:,:,n)=im_data(i:i+227-1,j:j+227-1,:); %映象 crop_im(:,:,:,n+5)=crop_im(end:-1:1,:,:,n); n=n+1
; end end center=floor(indices(*\2)/2)+1; crop_im(:,:,:,5)=im_data(center:center+227-1,center:center+227-1,:); crop_im(:,:,:,10)=crop_im(end:-1:1,:,:,5);
input_data={prepare_image(im)};
scores=net.forwar(input_data);
scores=scores{1};
scores=mean(scores,2);
%獲取某個層的引數或者輸出
weights_layername=net.params('layername',1).get_data();
output_layername=net.blob('layername').get_data();