Matlab影象分類(AlexNet)
阿新 • • 發佈:2022-03-06
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。