Deep|深度学习 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|深度学习 Deep Learning with MATLAB(懒人版)
文章图片
反正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看看这是哪个类别
【Deep|深度学习 Deep Learning with MATLAB(懒人版)】Deep|深度学习 Deep Learning with MATLAB(懒人版)
文章图片
原来是拉布拉多,神奇吧!最重要的是,全程都很无脑有没有?
老板:不错啊myc,这么快就把狗给识别出来了
myc:哪里哪里,借用了别人的成果而已
老板:其实吧,这只狗是金毛
myc:……
老板:没事,其实人也经常弄错,再接再厉!
myc:……怪我咯

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

    推荐阅读