这一章节没有什么过多的理论介绍,照着做就是了,你会发现深度学习(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 附加功能->获取附加功能,如下图:
接下来会出现附加资源管理器的界面,搜索alexnet:
点击链接,进入下载。
然后准备一个图片,我准备让它识别一个可爱的小猫
开始Coding
装载网络
第一行:
net = alexnet;
说的是什么意思呢,就是说把已经训练好的AlexNet加载到Matlab里面。呃,好像太简单了不是,到底发生了什么呢,我们去Matlab的工作空间里瞅瞅看。
哎,出现了一个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训练的时候,提供的图像的分类标签。下面那一句就是把这个标签显示到图像的标题位置。
埃及猫也许可能也是个猫吧,咱们这姑且认为白马也是马吧。
总结
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果然延长了程序员的寿命。
共同学习,写下你的评论
评论加载中...
作者其他优质文章