快速入门深度学习(1)

    这一章节没有什么过多的理论介绍,照着做就是了,你会发现深度学习(Deep Learning)不过如此。我把这一章先放出来的原因就是先给大家一点信心,有了Matlab很多工作它都替你完成了,咱们只关注应用吧。Let's roll!

    这一节的内容并不是计算机视觉工具箱的内容,而在神经网络工具箱,想想也是,饭不得一口口吃嘛。在线地址:http://ww2.mathworks.cn/help/nnet/index.html我们首先进入TryDeep Learning in 10 Lines of MATLAB Code(使用Matlab 10行代码完成深度学习)。标题是不是很耸人听闻,哈哈,没错,我们就以这个例子开始我们的学习。

实验准备

Matlab 2017b或者更高版本,待识别的图片(demo里面用的是摄像头实时获取图像),使用联网的电脑获取训练好的AlexNet。首先打开Matlab 附加功能->获取附加功能,如下图:

快速入门深度学习(1)

接下来会出现附加资源管理器的界面,搜索alexnet:

快速入门深度学习(1)

点击链接,进入下载。

快速入门深度学习(1)

然后准备一个图片,我准备让它识别一个可爱的小猫

快速入门深度学习(1)

开始Coding

装载网络

第一行:

net = alexnet; 

说的是什么意思呢,就是说把已经训练好的AlexNet加载到Matlab里面。呃,好像太简单了不是,到底发生了什么呢,我们去Matlab的工作空间里瞅瞅看。

快速入门深度学习(1)

哎,出现了一个SeriesNetwork的类,看不出来什么东东,继续深入,里面有个叫Layer的属性还是25x1,莫名其妙,继续深入。喔,出现了一个25层的网络,这次好像有点明白了,原来就是这个家伙定义了AlexNet,具体的细节咱们先略过,继续咱们的Matlab10行代码完成深度学习

加载图像,调整图像大小


im=imread('./猫.jpg');
imshow(im)

这句没啥解释的,就是把图像读进内存,然后显示图像,继续coding;

Im_input = imresize(im,[227 227]);

这句话的意思就是调整下图像的大小,使之能够输入AlexNet网络。

使用AlexNet进行识别

label = classify(net,im_input);
title(char(label));

这里面有个函数classify,作用就是使用AlexNet,进行分类,是不是很简单,输出是个标签类,这又什么鬼呢,原来这就是AlexNet训练的时候,提供的图像的分类标签。下面那一句就是把这个标签显示到图像的标题位置。

快速入门深度学习(1)

埃及猫也许可能也是个猫吧,咱们这姑且认为白马也是马吧。

总结

Ok,使用预训练的AlexNet来进行识别图像就结束了,是不是很简单。把代码重新整理下:

1.net = alexnet;                         % 加载已经训练好的网络
2.im=imread('./.jpg');                % 读入待分类的图像
3.imshow(im)                             % 显示待分类的图像
4.im_input = imresize(im,[227 227]);   % 调整输入图像的尺寸
5.label = classify(net,im_input);       % 识别图像
6.title(char(label));                    % 显示标签

一共六行,Matlab果然延长了程序员的寿命。