基于卷积神经网络的物体分类识别(二)---绘制loss和accuracy曲线

这篇博客介绍了如何使用Python代替Caffe自带工具,自行绘制物体分类识别的loss和accuracy曲线。作者遇到数据类型问题,并参考了多个博客,最终成功实现。代码片段展示了实现过程,结果呈现了美观的图表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接上一篇博客。

五、绘制loss和accuracy曲线

上面介绍的是利用caffe自带的工具绘制,一方面绘制出来的图片太丑了 ,另一方面出来的test loss图片还有问题,那咱们准备上手Python自己弄一下。
参考:https://www.cnblogs.com/denny402/p/5110204.html
这个博客写的不错,需要注意的一点是,blobs里面的名称要改成自己网络结构定义的名称。
训练是出现了点问题:
在这里插入图片描述目测是我估计是数据类型没有给我弄好,估计把精确度给我偷偷转换为int型了?
好像应该不是,难道说,我还要分训练网络和测试网络吗?吃完饭可以回来看看官方demo找找启发看看。
噗。。。这个博客写的不好,咱不参考它了,真的是要参考许多东西,才知道最合适的是哪个啊。
现在参考这个,感觉这个不错啊Caffe—Pycaffe 绘制loss和accuracy曲线
在这里插入图片描述
I have succeeded !!!
part of my code:

part of my code:

import numpy as np
import matplotlib.pyplot as plt
import sys
import os
import re
caffe_root = '/media/xxx/Linux-doc/xxx/caffe/'
sys.path.insert(0, caffe_root + 'python')
import caffe
%matplotlib inline
os.chdir(caffe_root)

caffe.set_device(0)
caffe.set_mode_gpu()
solver = caffe.SGDSolver('models/animal_classifier/solver.prototxt')
#solver = caffe.SGDSolver('examples/mnist/lenet_solver.prototxt')

in_log_path = caffe_root + 'models/animal_classifier/plot_tools/resnet18_train_log.txt'
out_fig_path = caffe_root + 'models/animal_classifier/plot_tools/resne18_record.png'

f = open(in_log_path, 'r'
<think>好的,我现在需要帮助用户找到关于如何使用MATLAB GUI实现卷积神经网络进行垃圾分类识别的资料或教程。首先,我需要理解用户的具体需求。他们可能想要一个结合了图形用户界面(GUI)卷积神经网络(CNN)的系统,用于识别不同类型的垃圾,并且需要相关的教程或示例代码。 接下来,我应该回顾用户提供的引用内容。引用13提到了MATLAB中使用CNN进行手势识别的示例,包括训练网络、测试识别率以及GUI按钮的回调函数。引用2展示了MATLAB GUI中的一个按钮回调函数,用于训练网络并保存模型。这些引用可能对构建垃圾分类系统有帮助,因为手势识别垃圾分类在数据预处理、模型训练GUI集成方面有相似之处。 用户的需求涉及垃圾分类,可能需要调整数据集的准备方式,比如收集不同类别的垃圾图片。手势识别使用的是0-9的手势图片,而垃圾分类可能需要更多类别,比如可回收物、厨余垃圾、有害垃圾等。因此,在数据预处理部分,需要确保图像被正确标注增强,以适应垃圾分类的特点。 关于MATLAB GUI的实现,引用2中的代码示例了按钮回调函数,这可能指导用户如何在GUI中集成训练测试功能。用户可能需要设计一个界面,允许上传图片、选择模型、显示分类结果准确率。此外,引用3中的测试代码可以用来评估模型性能,这部分可以整合到GUI的结果展示部分。 接下来,我需要考虑可能的教程或资源。MathWorks官网可能有相关的示例或文档,比如使用MATLAB的Deep Learning ToolboxApp Designer创建GUI应用。此外,社区论坛或GitHub上可能有开源项目,提供类似的垃圾分类代码,用户可以参考或调整这些代码。 用户可能需要分步骤的指导:数据准备、模型构建、训练、GUI开发、集成测试。每一步都需要详细的代码示例解释。例如,数据准备阶段需要加载预处理图像数据,模型构建可能需要调整网络结构以适应垃圾分类任务,GUI开发则需要使用App Designer或GUIDE工具。 同时,需要注意潜在的问题,比如数据集的大小多样性可能影响模型性能,需要数据增强技术;训练时间可能较长,用户可能需要使用GPU加速;GUI的响应性用户友好性也需要考虑,比如添加进度条或错误提示。 最后,生成相关问题,帮助用户进一步探索,比如如何处理数据不平衡、如何优化模型结构、如何部署模型等。</think>### MATLAB GUI实现卷积神经网络垃圾分类识别的实现步骤 #### 1. 数据准备 - **数据集要求**:需包含可回收物/厨余垃圾/有害垃圾/其他垃圾四大类图像,每类至少1000张以上样本 - **数据预处理**: ```matlab imds = imageDatastore('dataset_path','IncludeSubfolders',true,'LabelSource','foldernames'); [imdsTrain,imdsTest] = splitEachLabel(imds,0.8,'randomized'); ``` #### 2. 模型构建 - **CNN架构设计**(参考AlexNet调整): ```matlab layers = [ imageInputLayer([227 227 3]) convolution2dLayer(11,96,'Stride',4,'Padding','same') reluLayer maxPooling2dLayer(3,'Stride',2) convolution2dLayer(5,256,'Padding','same') reluLayer maxPooling2dLayer(3,'Stride',2) fullyConnectedLayer(4) % 对应4类垃圾 softmaxLayer classificationLayer]; ``` #### 3. GUI界面开发 - **使用App Designer创建界面**: - 添加图像显示区域(axes组件) - 添加分类按钮(pushbutton) - 添加结果文本框(edit text) - 添加模型选择下拉菜单(dropdown) #### 4. 核心功能集成 - **模型加载回调函数**: ```matlab function DropDownValueChanged(app, event) netname = app.DropDown.Value; app.net = load(netname).net; end ``` - **图像分类回调函数**(参考引用[3]): ```matlab function ClassifyButtonPushed(app, event) I = imread(app.FilePath); I = imresize(I,[227 227]); label = classify(app.net, I); app.ResultText.Value = char(label); end ``` #### 5. 训练模块实现 - **独立训练脚本**(参考引用[2]): ```matlab function train_cnn() options = trainingOptions('sgdm',... 'InitialLearnRate',0.001,... 'MaxEpochs',20,... 'Plots','training-progress'); net = trainNetwork(imdsTrain,layers,options); save('garbage_cnn.mat','net'); end ``` #### 6. 效果验证 - **准确率测试**(改进引用[3]的方法): ```matlab function test_accuracy(net, testData) correct = 0; for i=1:numel(testData.Files) [img,info] = read(testData); pred = classify(net,img); if pred == info.Label correct = correct+1; end end fprintf('准确率:%.2f%%\n',100*correct/numel(testData.Files)); end ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值