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

来源:互联网 发布:中国水产品出口数据 编辑:程序博客网 时间:2024/05/10 22:09


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

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

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

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

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

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

反正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 foldercnnMatFile = 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
来源:知乎

1 0
原创粉丝点击