Sistema de clasificación y reconocimiento de basura basado en la red neuronal convolucional de Matlab

        El reciclaje de residuos reciclables es de gran importancia para el desarrollo sostenible de la economía de mi país. El reciclaje de basura actual requiere que las personas clasifiquen manualmente la basura. Encontrar un método para la clasificación automática de basura y mejorar la eficiencia del reciclaje de basura no solo producirá beneficios sociales significativos, sino que también tendrá enormes beneficios económicos. Para mejorar la precisión de la identificación de los desechos domésticos reciclables, los investigadores han intentado utilizar el procesamiento de imágenes, el aprendizaje automático y otros métodos para identificar automáticamente los desechos domésticos comunes, como botellas de vidrio, papel usado, cartones y latas. Después de usar la tecnología de procesamiento de imágenes para obtener las características de las imágenes basura, luego use la red de aprendizaje profundo, la máquina de vectores de soporte, el clasificador vecino más cercano K, el método de análisis de componentes principales (PCA) [3] y otros métodos para clasificar los vectores de características de imágenes basura.

        La clasificación y reutilización de los residuos domésticos reciclables es una vía importante para un círculo virtuoso de economía social en nuestro país. Un algoritmo de clasificación eficiente basado en la visión artificial es la clave para la clasificación inteligente de basura. Se propone un método para transferir el aprendizaje del modelo ResNetl8 entrenado en el conjunto de datos de imágenes de ImageNet. Se utiliza para resolver el problema de clasificación e identificación de residuos domésticos reciclables. Después de preprocesar el conjunto de imágenes de desechos domésticos reciclables existentes, como la rotación, la traslación y el escalado, se divide manualmente en cinco categorías: piel de papel, papel de desecho, plástico, vidrio y metal. El 70% de las muestras en cada categoría se seleccionan aleatoriamente como conjunto de entrenamiento y el 30% restante se utiliza como conjunto de prueba. Bajo el marco de aprendizaje profundo de Matlab, el modelo de preentrenamiento ResNetl8 se transfiere en función del conjunto de entrenamiento para formar un nuevo modelo de clasificación ResNetl8. Los resultados experimentales en el conjunto de prueba muestran que la precisión de clasificación del nuevo modelo de clasificación es tan alta como 93.67% y se mejora la velocidad de entrenamiento del modelo.

1. Conjunto de datos

        El conjunto de datos de imágenes de este estudio se basa en el conjunto de datos de imágenes basura creado por Gary Thung y Mindy Yang∞1, que consta de 1989 imágenes y se divide en 5 categorías de vidrio, papel, plástico, metal y piel de papel. de la imagen se ajusta a 512×84. Debido a la pequeña cantidad de imágenes en el conjunto de datos. Se extraen 2 485 imágenes del mismo tipo del conjunto de datos de imágenes de desecho en el sitio web de Kaggle y, finalmente, se forma un conjunto de datos experimental de 4 474 imágenes. Una imagen de muestra de cada categoría se muestra en la Fig. Estas imágenes pueden expresar mejor el estado de los residuos domésticos cuando se reciclan, como botellas deformadas, papel arrugado, etc. Hay alrededor de 500-900 imágenes en cada clase, y la iluminación y la pose de cada foto son diferentes, y se realizan técnicas de mejora de imagen en cada imagen. Estas técnicas incluyen rotación aleatoria de la imagen, control de brillo aleatorio, traducción aleatoria, escalado aleatorio y corte aleatorio. Las imágenes transformadas se eligieron para tener en cuenta las diferentes orientaciones del material reciclado y para maximizar el tamaño del conjunto de datos.

2. Entrenamiento experimental

        El entrenamiento y las pruebas del modelo se realizan bajo el marco de aprendizaje profundo de Matlab 2019a. Entorno de hardware: CPU Intel i7-8750H a 2,20 GHz, memoria de 32 GB; GPU Nvidia RTX2070, memoria de video de 8 GB. Entorno de software: CUDA Toolkit 9.0, CUDNN V7.0; Matlab Deep Learning Toolbox; sistema operativo Windows 10 de 64 bits. La GPU acelera el entrenamiento y las pruebas de modelos. Para el entrenamiento del modelo de aprendizaje por transferencia, hay principalmente parámetros de Época, Tamaño del lote y Tasa de aprendizaje.

  1. Época: una época se refiere al proceso de envío de todos los datos a la red para completar un cálculo directo y una propagación hacia atrás. A medida que aumenta la cantidad de épocas, aumenta la cantidad de iteraciones de actualización de peso en la red neuronal.
  2. Tamaño del lote: el lote es una parte de los datos enviados a la red para el entrenamiento cada vez, y el tamaño del lote es la cantidad de muestras de imágenes de entrenamiento en cada lote. Para encontrar el mejor equilibrio entre la eficiencia de la memoria y la capacidad de la memoria, el tamaño del lote debe configurarse cuidadosamente para optimizar el rendimiento y la velocidad del modelo de red.
  3. Tasa de aprendizaje: es un parámetro importante en el aprendizaje profundo, que determina la precisión de reconocimiento de las muestras de entrenamiento. Una Tasa de aprendizaje adecuada puede hacer que la precisión de reconocimiento de las muestras de entrenamiento alcance un valor ideal en un tiempo adecuado. El 70% de las imágenes de cada categoría en el conjunto de datos de basura doméstica reciclable se divide aleatoriamente en conjunto de entrenamiento y el otro 30% como conjunto de prueba. Cuando los tres parámetros anteriores toman tres valores diferentes, se completan un total de 27 experimentos. Con el fin de evaluar exhaustivamente el efecto de cada combinación de parámetros. La precisión y el consumo de tiempo se normalizan como puntuaciones de precisión y consumo de tiempo, y las puntuaciones de precisión y consumo de tiempo se ponderan y promedian en 0,6 y 0,4 respectivamente. Se encuentra disponible una puntuación completa. De acuerdo con el puntaje integral, se puede ver que cuando la combinación de parámetros de Época, Tamaño del lote y Tasa de aprendizaje es (5, 32, 10'3) y (10, 32, 10.3), el efecto del aprendizaje de transferencia es el mejor. . Considerando los posibles errores aleatorios en el proceso de entrenamiento de NtJll, para las dos combinaciones (5, 32, 10.3) y (10, 32, 10'3), se repite el experimento 4 veces, y se pueden obtener los datos experimentales de la Tabla 2. .Se puede observar que la precisión del modelo de transferencia obtenido por la combinación de estos dos parámetros es relativamente cercana, pero el tiempo de entrenamiento de la combinación de (5, 32, 10.) es mucho menor que el de la combinación de (10 , 32, 10.). La Figura 4 y la Figura 5 son las curvas de proceso de los dos entrenamientos combinados. Se puede ver que cuando el tamaño del lote y la tasa de aprendizaje obtienen valores apropiados, el aumento de la época puede mejorar la precisión hasta cierto punto.

3. Código experimental

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

referencias

[1] Ning Kai, Zhang Dongbo. Detección de basura y clasificación de un robot de barrido inteligente basado en la percepción visual [J].

[2] Liu Yaxuan, Pan Wanbin.Método de clasificación de basura a largo plazo basado en la autoformación[J].

Para obtener más información, haga clic en : 1341703358. En el futuro, el conjunto de datos de imágenes de basura reciclable debe enriquecerse aún más, y debe establecerse un modelo de clasificación y reconocimiento de imágenes de basura mixtas para mejorar aún más la precisión del reconocimiento del modelo de imagen de basura reciclable.

Supongo que te gusta

Origin blog.csdn.net/Jiangtagong/article/details/124197943
Recomendado
Clasificación