使用Matconvnet对图片进行分类
1.准备工作
- 获取MatConvNet资源包,这里我下载的是matconvnet-1.0-beta17
- 下载预训练的网络模型,这里我下载的是imagenet-vgg-verydeep-19.mat
下面是运行的整体代码:
%进入到下载的MatConvNet资源包目录
cd C:\Users\Administrator\Desktop\matconvnet-1.0-beta17
%安装及编译MatConvNet
run matlab/vl_compilenn
run matlab/vl_setupnn
% 载入预训练的网络模型
net = load('D:\model\imagenet-vgg-verydeep-19.mat') ;
net = vl_simplenn_tidy(net) ;
% 载入及预处理图片
im = imread('peppers.png') ;
im_ = single(im) ; % 转换为单精度类型
im_ = imresize(im_, net.meta.normalization.imageSize(1:2)) ;%修改图像尺寸
im_1 = bsxfun(@minus, im_, net.meta.normalization.averageImage) ;
% 运行模型对图片进行处理
res = vl_simplenn(net, im_1) ;
%展示分类结果
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));
运行结果如下: