話說俄羅斯來的myc雖然是搞Computer Vision的,但是在上學的時候從來沒有接觸過Neural Network,更別說Deep Learning了。在他求職的時候,Deep Learning才剛開始進入人們的視線。
然而現在如果你有幸被myc面試,他會問你這個問題 Deep Learning為什麼要叫Deep Learning。和普通的Machine Learning有什麼區別。
如果你答不上來,沒關係,因為作為工程師,我們只要知道怎麼在MATLAB裡使用就可以了(並不是
為了展示Deep Learning對Computer Vision有多麼深遠的影響,myc為我們準備了下面的一個小demo.
如何讓程式識別圖中有什麼東西。
反正MATLAB是這麼做的 首先你得有Neural Network Toolbox 如果你有Computer Vision System Toolbox就更好了,這裡我們用他提供的
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
來源:知乎