基于Matlab和fruits-360的水果识别

目录

0. 写在前面

1. fruits-360数据集介绍

2. 训练步骤与结果

3. 测试

4. 写在最后

5. fruits-360数据集


0. 写在前面

        本文直接上干货,不介绍理论,想了解理论的可以移步了。

        如果你对理论不太熟悉,但是又想看看效果或者只要功能,跟着我的步骤做,就能看到识别效果了。因为我也对理论了解不多。(站在巨人的肩膀上😁)

        matlab版本是2021b,用的是matlab的deepNetworkDesigner。fruits-360数据集下载链接放最后了。

1. fruits-360数据集介绍

        打开fruits-360的文件夹如图1所示,papers是大牛的论文,可以看看,但是大牛是用的python做的。Training放的是训练集,Test放的是验证集,test-multiple_fruits也是更复杂的验证集。其中图片的大小都是100*100*3(长×宽×高)。

图1 fruits-360文件夹介绍

        在训练集和验证集中放的是不同种类的水果和蔬菜。每一种水果或蔬菜占一个文件夹,文件夹的文件名就是标签,一共有131种。(验证集,训练集,标签自己百度)。如图2所示, 例如Apple Braebum文件夹中放的就全是这一种苹果的图片,Apple Braebum就是一个标签。     

图2 训练集

2. 训练步骤与结果

        步骤①  在matlab的命令行输入deepNetworkDesigner并回车

>> deepNetworkDesigner

        步骤②  打开如图3所示的深度网络设计器,选择如图4所示的预训练网络中的               SqueezeNet。      

              (也可以选择自己搭建网络,方法类似,自己研究去)

图3 深度网络设计器
图4 预训练网络

        步骤③  打开的SqueezeNet如图5所示,该网络一共有68层。  

图5 SqueezeNet

        步骤④  ctrl+滚轮放大网络,按图6中的步骤,替换掉输入层。因为fruits-360的图片大小都是100*100*3,但是SqueezeNet的图片输入大小是227*227*3。替换后的网络如图7所示。

图6 替换输入层
图7 替换输入层后的网络

        步骤⑤  按图8中的步骤替换输出层。原网络的输出层输出种类是1000,fruits-360只有131种,替换后如图9所示。

图8 替换输出层
图9 替换输出层后的网络

        步骤⑥  按图10中的步骤,替换倒数第一个卷积层conv10,替换后如图11所示。

图10 替换卷积层conv10
图11 替换卷积层conv10后的网络

        步骤⑦  按如下步骤导入训练数据和验证数据

        导入后的训练集如图12所示,验证集如图13所示。

图12 训练集
图13 验证集

        步骤⑧  训练(使用默认参数)

        步骤⑨  训练结果,训练会花很长时间,剩下就是等。如图14所示。训练后网络对水果的识别正确率是 98.25%

图14 训练结果

        步骤⑩  导出。训练好后的网络可以导出到工作区,训练代码是mlx实时文件。(注意保存训练好的网络

3. 测试

        测试代码如下,测试结果图15-图19所示。因为fruits-360中水果分类特别细,所以出来的结果有的很离谱。

load('trainedNet.mat') %加载训练好的网络
I = imread("C:\Users\1\Desktop\001.jpg"); %任意水果图片

I = imresize(I, [227 227]);

[YPred,probs] = classify(trainedNetwork_1,I); %测试
imshow(I)
label = YPred;
title(string(label) + ", " + num2str(100*max(probs),3) + "%");
图15 fruits-360中的香蕉测试
图16 网图西瓜测试
图17 拍摄香蕉测试
图18 拍摄苹果测试
图19 拍摄芒果测试

 

4. 写在最后

        ① 虽然全是实操,但是想要理解还得结合理论看

        ② 网络的选择多种多样,可以自己尝试设计网络

        ③ 步骤⑦中的训练参数也可以自己换着试

        ④ 步骤⑧的训练选项也可以调

        ⑤ 测试结果可以看出,部分水果识别结果还是很好的,但是有一些拍摄的水果不太好,甚至出现错误,如图18的苹果识别出来是梨。对于特别相似的如苹果和樱桃,在100*100*3的图片中是很难区分的。

        ⑥ 对于我们身边的常见水果可能不会分的这么细,fruits-360的苹果就有13种。可以自己从数据集中根据需要选择几种水果来做实验。但是训练集和验证集中的种类应该保持相同。

5. fruits-360数据集

        https://pan.baidu.com/s/16u2Q2P4b6aITkZE7k98VDw

        提取码:HXLX   (好学力行😬)

        测试的五张图片也放下面:

        

 

 

 

 

 

评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SudoReboot

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

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

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

打赏作者

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

抵扣说明:

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

余额充值