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.

如何讓程序識別圖中有什麼東西?

反正R2016a MATLAB是這麼做的

  1. 首先你得有Neural Network Toolbox
  2. 如果你有Computer Vision System Toolbox就更好了,這裡我們用他提供的
  3. helperImportMatConvNetn

來幫助我們導入一個Neural Network.

3. 你得有個支持CUDA的GPU

我們首先不要臉地下載大牛們訓練好的網路,AlexNet是通過ImageNet提供的1000種不同的物體的圖片訓練出的網路,換言之,他認識這1000種東西,超出這個範圍就不認識了

cnnURL = http://www.vlfeat.org/matconvnet/models/beta16/imagenet-caffe-alex.mat;n% Store CNN model in a temporary folderncnnMatFile = fullfile(tempdir, imagenet-caffe-alex.mat);nif ~exist(cnnMatFile, file) % download only oncen disp(Downloading pre-trained CNN model...);n websave(cnnMatFile, cnnURL);nendn

接下來導入到MATLAB中

convnet = helperImportMatConvNet(cnnMatFile)n

讀入我們的圖片

I = imread(sherlock.jpg);n

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

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

激活最後一個分類Layer

category = activations(convnet,I,classificationLayer);n

找到概率最大的類

[~,idx] = max(category);n

看看是啥

convnet.Layers(end).ClassNames{idx}nnans = nn』n02099712『n

回到ImageNet看看這是哪個類別

原來是拉布拉多,神奇吧!最重要的是,全程都很無腦有沒有?

老闆:不錯啊myc,這麼快就把狗給識別出來了

myc:哪裡哪裡,借用了別人的成果而已

老闆:其實吧,這隻狗是金毛

myc:……

老闆:沒事,其實人也經常弄錯,再接再厲!

myc:……怪我咯

推薦閱讀:

TAG:深度学习DeepLearning | MATLAB | 计算机视觉 |