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。

  • 4
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ango_Cango

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值