Matlab圖像分類(AlexNet)


 

Demo代碼以及測試數據下載:https://download.csdn.net/download/Ango_/15946085

圖像分類是神經網絡最典型的應用之一,常用的分類網絡有AlexNet、LeNet、VGGNet、GoogleNet、Inception網絡、ResNet、DenseNet等。

本文使用AlexNet對圖像清晰程度進行判斷,圖像分為清晰和模糊兩類。AlexNet原始網絡結構最終輸出類別為1000類,因此需要將第23層全連接層的輸出尺寸改為2。

     

                清晰圖像                                           模糊圖像

 

具體步驟:

1 加載訓練好的Alex網絡,alexnet第一次使用需要下載,再matlab中執行alexnet,將會給出下載的鏈接點擊即可下載。

alex = alexnet;
layers = alex.Layers;

2 修改網絡結構,類別改為兩類,第23層為最后一個全連接層,需要將輸出改為類別的個數。 

layers(23) = fullyConnectedLayer(2);
layers(25) = classificationLayer;

3 設置訓練數據,將每個類別的數據放到各自的子目錄中,matlab提供了imageDatastore函數,可以很方便的生成訓練數據集。

allImages = imageDatastore('E:\CodeProjects\MatPro\Classification\train','IncludeSubfolders', true, 'LabelSource', 'foldernames');

4 將數據集隨機划分為訓練數據和測試數據

[trainingImages, testImages] = splitEachLabel(allImages, 0.8, 'randomize');

5 定義訓練參數並訓練網絡

opts = trainingOptions('sgdm','InitialLearnRate',0.001,'MaxEpochs',20, 'MiniBatchSize', 64);
myNet = trainNetwork(trainingImages, layers,opts);

6 測試訓練結果,通過訓練數據集查看訓練的精度效果

predictedLabels = classify(myNet, testImages);
accuracy = mean(predictedLabels == testImages.Labels);

7 輸出模型為標准的ONNX格式,后續可以使用OpenCV、TensorRT等推理工具進行生產部署

exportONNXNetwork(myNet,'mynet_all2.onnx')

修改后的網絡結構:

網絡結構

總結:

使用Matlab可以很方便地開展神經網絡的設計和訓練,如果是一個比較簡單的需求,不想花太多時間搭建神經網絡訓練環境的同學,可以考慮使用Matlab。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM