Système de classification et de reconnaissance des déchets basé sur le réseau neuronal convolutif Matlab

        Le recyclage des déchets recyclables revêt une grande importance pour le développement durable de l'économie de mon pays. Le recyclage actuel des ordures oblige les gens à classer manuellement les ordures. Trouver une méthode de classification automatique des ordures et améliorer l'efficacité du recyclage des ordures produira non seulement des avantages sociaux importants, mais aura également d'énormes avantages économiques. Afin d'améliorer la précision de l'identification des déchets ménagers recyclables, les chercheurs ont essayé d'utiliser le traitement d'images, l'apprentissage automatique et d'autres méthodes pour identifier automatiquement les déchets ménagers courants tels que les bouteilles en verre, les vieux papiers, les cartons et les canettes. Après avoir utilisé la technologie de traitement d'image pour obtenir les caractéristiques des images de déchets, puis en utilisant le réseau d'apprentissage en profondeur, la machine à vecteurs de support, le classificateur K-plus proche voisin, la méthode d'analyse en composantes principales (PCA) [3] et d'autres méthodes pour classer les vecteurs de caractéristiques des images de déchets.

        La classification et la réutilisation des ordures ménagères recyclables est une voie importante pour un cercle vertueux d'économie sociale dans notre pays. Un algorithme de classification efficace basé sur la vision artificielle est la clé d'une classification intelligente des déchets. Une méthode d'apprentissage par transfert du modèle ResNetl8 formé sur le jeu de données d'images ImageNet est proposée. Il est utilisé pour résoudre le problème de classification et d'identification des déchets ménagers recyclables. Après avoir prétraité l'ensemble d'images de déchets ménagers recyclables existant, telles que la rotation, la translation et la mise à l'échelle, il est divisé manuellement en cinq catégories : peau de papier, vieux papiers, plastique, verre et métal. 70 % des échantillons de chaque catégorie sont sélectionnés au hasard comme ensemble d'apprentissage, et les 30 % restants sont utilisés comme ensemble de test. Dans le cadre d'apprentissage en profondeur Matlab, le modèle de pré-formation ResNetl8 est transféré sur la base de l'ensemble de formation pour former un nouveau modèle de classification ResNetl8. Les résultats expérimentaux sur l'ensemble de test montrent que la précision de classification du nouveau modèle de classification atteint 93,67 % et que la vitesse d'apprentissage du modèle est améliorée.

1. Ensemble de données

        L'ensemble de données d'images de cette étude est basé sur l'ensemble de données d'images de déchets créé par Gary Thung et Mindy Yang∞1, qui se compose de 1 989 images et est divisé en 5 catégories de peau de verre, de papier, de plastique, de métal et de papier. de l'image est ajustée à 512×84. En raison du petit nombre d'images dans le jeu de données. 2 485 images du même type sont extraites du jeu de données d'images de déchets sur le site Web de Kaggle, et enfin un jeu de données expérimental de 4 474 images est formé. Un exemple d'image de chaque catégorie est illustré à la Fig. Ces images permettent de mieux rendre compte de l'état des déchets ménagers lorsqu'ils sont recyclés, comme les bouteilles déformées, le papier froissé, etc. Il y a environ 500 à 900 images dans chaque classe, et l'éclairage et la pose de chaque photo sont différents, et des techniques d'amélioration d'image sont appliquées sur chaque image. Ces techniques comprennent la rotation aléatoire de l'image, le contrôle aléatoire de la luminosité, la translation aléatoire, la mise à l'échelle aléatoire et le cisaillement aléatoire. Les images transformées ont été choisies pour tenir compte des différentes orientations du matériau recyclé et pour maximiser la taille de l'ensemble de données.

2. Formation expérimentale

        La formation et les tests de modèles sont effectués dans le cadre d'apprentissage en profondeur de Matlab 2019a. Environnement matériel : processeur Intel i7-8750H à 2,20 GHz, mémoire de 32 Go ; GPU Nvidia RTX2070, mémoire vidéo de 8 Go. Environnement logiciel : CUDA Toolkit 9.0, CUDNN V7.0 ; Matlab Deep Learning Toolbox ; système d'exploitation Windows 10 64 bits. La formation et les tests des modèles sont accélérés par le GPU. Pour la formation du modèle d'apprentissage par transfert, il existe principalement des paramètres d'époque, de taille de lot et de taux d'apprentissage.

  1. Époque : une époque fait référence au processus d'envoi de toutes les données au réseau pour effectuer un calcul vers l'avant et une rétropropagation. À mesure que le nombre d'époques augmente, le nombre d'itérations de mise à jour du poids dans le réseau neuronal augmente.
  2. Taille du lot : le lot fait partie des données envoyées au réseau pour l'entraînement à chaque fois, et la taille du lot est le nombre d'échantillons d'images d'entraînement dans chaque lot. Afin de trouver le meilleur équilibre entre l'efficacité de la mémoire et la capacité de la mémoire, la taille du lot doit être soigneusement définie pour optimiser les performances et la vitesse du modèle de réseau.
  3. Taux d'apprentissage : il s'agit d'un paramètre important dans l'apprentissage en profondeur, qui détermine la précision de la reconnaissance des échantillons d'apprentissage. Un taux d'apprentissage approprié peut faire en sorte que la précision de la reconnaissance des échantillons d'apprentissage atteigne une valeur idéale dans un délai approprié. 70 % des images de chaque catégorie de l'ensemble de données sur les ordures ménagères recyclables sont divisées au hasard en ensemble d'apprentissage et les 30 % restants en ensemble de test. Lorsque les trois paramètres ci-dessus prennent trois valeurs différentes, un total de 27 expériences sont réalisées. Afin d'évaluer de manière exhaustive l'effet de chaque combinaison de paramètres. La précision et la consommation de temps sont normalisées en tant que scores de précision et de consommation de temps, et les scores de précision et de consommation de temps sont pondérés et moyennés par 0,6 et 0,4 respectivement. Un score complet est disponible. Selon le score global, on peut voir que lorsque la combinaison de paramètres de l'époque, de la taille du lot et du taux d'apprentissage est (5, 32, 10'3) et (10, 32, 10,3), l'effet de l'apprentissage par transfert est le meilleur . Compte tenu des erreurs aléatoires possibles dans le processus de formation NtJll, pour les deux combinaisons (5, 32, 10.3) et (10, 32, 10'3), répétez l'expérience 4 fois, et les données expérimentales du tableau 2 peuvent être obtenues. .On voit que la précision du modèle de transfert obtenu par la combinaison de ces deux paramètres est relativement proche, mais le temps d'apprentissage de la combinaison de (5, 32, 10.) est bien inférieur à celui de la combinaison de (10 , 32, 10.). La figure 4 et la figure 5 sont les courbes de processus des deux formations combinées. On peut voir que lorsque la taille du lot et le taux d'apprentissage obtiennent des valeurs appropriées, l'augmentation de l'époque peut améliorer la précision dans une certaine mesure.

3. Code expérimental

function varargout = main(varargin)
% MAIN MATLAB code for main.fig
%      MAIN, by itself, creates a new MAIN or raises the existing
%      singleton*.
%
%      H = MAIN returns the handle to a new MAIN or the handle to
%      the existing singleton*.
%
%      MAIN('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in MAIN.M with the given input arguments.
%
%      MAIN('Property','Value',...) creates a new MAIN or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before main_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to main_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help main

% Last Modified by GUIDE v2.5 14-Apr-2022 22:27:41

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @main_OpeningFcn, ...
                   'gui_OutputFcn',  @main_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before main is made visible.
function main_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to main (see VARARGIN)

% Choose default command line output for main
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);
cla reset;
box on;
set(handles.axes1,'xtick',[]);
set(handles.axes1,'ytick',[]);
cla reset;
box on; %在坐标轴四周加上边框
set(handles.axes2,'xtick',[]);
set(handles.axes2,'ytick',[]);
box on; %在坐标轴四周加上边框
cla reset;
set(handles.axes3,'xtick',[]);
set(handles.axes3,'ytick',[]);
set(handles.edit1,'string','');
set(handles.edit2,'string','');

% UIWAIT makes main wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = main_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global filepath
filepath = uigetdir('*.*','请选择文件夹');%fliepath为文件夹路径


% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global filepath
if filepath==0|isequal(filepath,0)|~exist(filepath,'dir')
    warndlg('文件夹不存在,请重新选择!','warning');
    return;
end
%%  数据集 %%
% 数据集,每个文件的标签是其所在文件夹
datas=imageDatastore(filepath,'LabelSource','foldernames');
% datas.Labels 标签
% datas.Files  路径+文件名

数量一定要相同
    softmaxLayer % 分类层
    classificationLayer];

%%  参数设定 %%
% 参数配置   
% 验证集才加入
%'ValidationData',valImg,...
%'ValidationFrequency',6,...
options=trainingOptions('sgdm',...
    'MiniBatchSize',10,... % 10
    'MaxEpochs',8,...
    'Shuffle','every-epoch',...
    'InitialLearnRate',1e-4,...
    'Verbose',true,... %命令窗口显示指标
    'Plots','training-progress');

% ,TrainingAccuracy,TrainingLoss
[net_cnn,info]=trainNetwork(trainImg,layers,options);

axes(handles.axes1);
plot(info.TrainingAccuracy);
xlabel('迭代');
ylabel('Accuracy(%)');
axes(handles.axes2);
plot(info.TrainingLoss);
xlabel('迭代');
ylabel('Loss');
%% 模型存储 %%
% 保存模型名称+训练好的模型
save net_cnn net_cnn;

res=num2str(accuracy*100);
res=strcat(res,'%'); 
set(handles.edit1, 'String',res);


% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
global str;
[filename,pathname]=uigetfile({'*.mat'});
str=[pathname filename];
if isequal(filename,0)|isequal(pathname,0)
    warndlg('模型不存在,请重试!','warning');
    return;
end

références

[1] Ning Kai, Zhang Dongbo.Détection des ordures et classification du robot de balayage intelligent basé sur la perception visuelle [J].

[2] Liu Yaxuan, Pan Wanbin.Méthode de classification à long terme des ordures basée sur l'autoformation[J].

Pour plus de détails, veuillez cliquer sur : 1341703358. À l' avenir, l'ensemble de données d'images d'ordures recyclables devrait être encore enrichi et un modèle de classification et de reconnaissance d'images d'ordures mixtes devrait être établi pour améliorer encore la précision de reconnaissance du modèle d'image d'ordures recyclables.

Je suppose que tu aimes

Origine blog.csdn.net/Jiangtagong/article/details/124197943
conseillé
Classement