【實操】深度學習網絡萬萬千,到底怎麼把我的數據放進去?

在這裏插入圖片描述
如今最熱的方向莫過於深度學習了,什麼AlexNet,GoogleNet,幾乎都耳熟能詳,畢竟畢業設計一般的題目都和深度學習有關。

相信看到這篇文章的同學,對深度學習大概是幹啥的,肯定有所理解。但是可能苦惱於怎麼把我自己的數據導入這些網絡裏,怎麼讓模型輸出分類/識別的結果?

下面以在 Matlab 裏用 AlexNet 進行 分類 爲例,帶大家從零開始使用模型,一直到輸出分類結果。

首先要進行分類的話,肯定需要有已經分好類的數據庫,如下圖所示。ClassficationData文件夾裏有五個子文件夾,代表五類樣本。
在這裏插入圖片描述
可以看到,每個子文件夾中的數據格式均爲jpg
在這裏插入圖片描述
現在要做的事,就是用這些數據,訓練AlexNet模型,使其可以自動對照片進行分類。由於AlexNet對輸入圖片尺寸有要求(227227),所以我們首先要對原始數據庫的圖片尺寸統一爲227227。這部分代碼參考鏈接1。

鏈接1:Matlab批量修改文件夾中照片尺寸

值得注意的是,在使用鏈接1裏的代碼時,需要預先建立一個新的文件夾,以及裏面的子文件夾(同名),這樣纔可以把修改好的圖片存進來。如下圖:
在這裏插入圖片描述
接下來只需要把照片導入模型裏就OK了,我們這裏參考matlab官方例程,爲大家做個示範,代碼如下:

imds = imageDatastore('F:\模式識別作業\ResizeClassificationData\', ...
    'IncludeSubfolders',true,'LabelSource','foldernames');

% 每類樣本中測試集的個數,若每類樣本有50個,測試集:訓練集 = 7:3 = 35:15
numTrainFiles = 35;                                                         
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomize');

layers1 = alexnet;                                                          % 引入alexnet
layers2 = layers1.Layers(1:end-3);                                          % 去掉alexnet後3層
layers = [layers2                                                           % 修改alexnet後3fullyConnectedLayer(5,'WeightLearnRateFactor',20,'BiasLearnRateFactor',20)
          softmaxLayer
          classificationLayer];
inputSize = layers1.Layers(1).InputSize;
      
augimdsValidation = augmentedImageDatastore(inputSize(1:2),imdsValidation);
options = trainingOptions('sgdm', ...                                       % 模型參數調整
    'MiniBatchSize',10, ...
    'MaxEpochs',6, ...
    'InitialLearnRate',1e-4, ...
    'Shuffle','every-epoch', ...
    'ValidationData',augimdsValidation, ...
    'ValidationFrequency',3, ...
    'Verbose',false, ...
    'Plots','training-progress');

net = trainNetwork(imdsTrain,layers,options);                               % 訓練好的模型

YPred = classify(net,imdsValidation);                                       % 預測結果輸出
YValidation = imdsValidation.Labels;

accuracy = sum(YPred == YValidation)/numel(YValidation)                     % 精度輸出

結果輸出如下:
在這裏插入圖片描述
最後,將整個功能代碼封裝成一個簡單好操作的形式,點下“運行”就完事了,實現 尺寸重定義 + alexnet模型訓練輸出 一條龍,不用再手動建立新的文件夾,效果如下:
在這裏插入圖片描述
同時歡迎大家來技術交流,個人QQ:1356580910,圖像處理探索羣(不只是圖像處理):913931535 ,備註:CSDN深度學習

相關資料推薦如下:👇🏻
基於小波變換的圖像邊緣檢測(matlab祖傳代碼註釋)
Matlab對話框總結

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章