MatConvNet 使用VGG網路模型對影象做分類處理
阿新 • • 發佈:2019-01-29
使用已經訓練好的VGG網路模型直接對影象做分類處理。
示例如下:
%下載一個訓練好了的模型
urlwrite('http://www.vlfeat.org/matconvnet/models/imagenet-vgg-f.mat','imagenet-vgg-f.mat'); %下載並存儲檔案,前一個引號為目標檔案地址,後一個引號為本地地址(216MB)。
%將模型載入到工作區
net = load('imagenet-vgg-f.mat');
%讀入並預處理一幅影象
im = imread('peppers.png'); %讀入matlab自帶影象
im_ = imresize(single(im), net. meta.normalization.imageSize(1:2)); %轉換影象的資料型別,規範化輸入影象的寬高
im_ = im_ - net.meta.normalization.averageImage; %將輸入影象減去模型均值
%執行CNN
res = vl_simplenn(net, im_); %返回一個res結構的輸出網路層
%展示分類結果
scores = squeeze(gather(res(end).x)); %得到影象屬於各個分類的概率
[bestScore, best] = max(scores); %得到最大概率值,及其索引值
figure(1) ; clf ; imagesc(im); %顯示影象
title(sprintf('%s (%d), score %.3f',net.meta.classes.description{best}, best, bestScore)); %新增標題——"種類(第幾類),所屬該類的概率"
結果展示: