深度学习 Deep Learning with MATLAB(懒人版)



话说俄罗斯来的myc虽然是搞Computer Vision的,但是在上学的时候从来没有接触过Neural Network,更别说Deep Learning了。在他求职的时候,Deep Learning才刚开始进入人们的视线。

然而现在如果你有幸被myc面试,他会问你这个问题

Deep Learning为什么要叫Deep Learning?和普通的Machine Learning有什么区别?

如果你答不上来,没关系,因为作为工程师,我们只要知道怎么在MATLAB里使用就可以了(并不是

为了展示Deep Learning对Computer Vision有多么深远的影响,myc为我们准备了下面的一个小demo.

如何让程序识别图中有什么东西?

深度学习 Deep Learning with MATLAB(懒人版)_第1张图片反正MATLAB是这么做的

  1. 首先你得有Neural Network Toolbox
  2. 如果你有Computer Vision System Toolbox就更好了,这里我们用他提供的
  3. helperImportMatConvNet
    

来帮助我们导入一个Neural Network.

3. 你得有个支持CUDA的GPU

我们首先不要脸地下载大牛们训练好的网络,AlexNet是通过ImageNet提供的1000种不同的物体的图片训练出的网络,换言之,他认识这1000种东西,超出这个范围就不认识了

cnnURL = 'http://www.vlfeat.org/matconvnet/models/beta16/imagenet-caffe-alex.mat';
% Store CNN model in a temporary folder
cnnMatFile = fullfile(tempdir, 'imagenet-caffe-alex.mat');
if ~exist(cnnMatFile, 'file') % download only once
    disp('Downloading pre-trained CNN model...');
    websave(cnnMatFile, cnnURL);
end
接下来导入到MATLAB中
convnet = helperImportMatConvNet(cnnMatFile)

读入我们的图片

I = imread('sherlock.jpg');

AlexNet模型需要图片是227x227x3的彩图

I = imresize(I,[227,227]);

激活最后一个分类Layer

category = activations(convnet,I,classificationLayer);

找到概率最大的类

[~,idx] = max(category);

看看是啥

convnet.Layers(end).ClassNames{idx}

ans = 

’n02099712‘

回到ImageNet看看这是哪个类别

原来是拉布拉多,神奇吧!最重要的是,全程都很无脑有没有?

老板:不错啊myc,这么快就把狗给识别出来了
myc:哪里哪里,借用了别人的成果而已
老板:其实吧,这只狗是金毛
myc:……
老板:没事,其实人也经常弄错,再接再厉!
myc:……怪我咯

作者:波特
链接:https://zhuanlan.zhihu.com/p/20944764
来源:知乎

你可能感兴趣的:(Deep,Learning,深度学习,Deep,Learning,MATLAB)