Sistema de Reconhecimento e Detecção de Defeitos Baseado em Matlab

        A detecção de defeitos de superfície é um conteúdo de pesquisa muito importante no campo da visão de máquina, também conhecido como AOI (Inspeção óptica automatizada) ou AsI (Inspeção de superfície automatizada). Atualmente, os equipamentos de defeitos de superfície baseados em visão de máquina substituíram amplamente a inspeção visual manual em vários campos industriais, incluindo 3C, automóveis, eletrodomésticos, fabricação de máquinas, semicondutores e eletrônicos, indústria química, medicina, aeroespacial, indústria leve e outras indústrias. Os métodos tradicionais de detecção de defeitos de superfície baseados em visão de máquina geralmente usam algoritmos convencionais de processamento de imagem ou recursos projetados artificialmente mais classificadores.

 

 1. Descrição do algoritmo

        Nos últimos anos, com a aplicação bem-sucedida de modelos de aprendizado profundo representados por rede neural convolucional (rede neural fConv01utional, CNN) em muitos campos de visão computacional (Computer vjsion, CV), como reconhecimento facial, re-reconhecimento de pedestres, detecção de texto de cena, reconhecimento de alvos. Muitos métodos de detecção de defeitos baseados em aprendizado profundo também são amplamente utilizados em vários cenários industriais, como rastreamento e direção autônoma, e até mesmo algumas empresas nacionais e estrangeiras desenvolveram uma variedade de software de detecção de defeitos de superfície industrial comercial baseado em aprendizado profundo, como mostrado na Tabela 1. .O tamanho do mercado global de visão industrial tradicional e seus componentes atingirá US$ 19,2 bilhões em 2025 [", dos quais a China responde por cerca de 30% e mantém uma taxa média de crescimento anual de 14%. Esse campo está sendo gradualmente substituído por uma nova geração Ao mesmo tempo, meu país propôs no livro branco "Made in China 2025" "promover o uso de métodos avançados de moldagem e processamento, dispositivos de teste on-line, sistemas inteligentes de produção e logística e equipamentos de teste, etc., para que a estabilidade de desempenho dos principais produtos físicos possa ser melhorada. , confiabilidade de qualidade, adaptabilidade ambiental, vida útil e outros indicadores atingiram o nível avançado internacional de produtos similares.”

         Nos últimos anos, a tecnologia de detecção de defeitos de superfície baseada em aprendizado profundo tem sido amplamente utilizada em vários cenários industriais. Este artigo classifica os métodos de detecção de defeitos de superfície baseados em aprendizado profundo nos últimos anos e os divide em três categorias: métodos de modelo de aprendizado totalmente supervisionado, métodos de modelo de aprendizado não supervisionado e outros métodos de acordo com os diferentes rótulos de dados. Classificação subdividida e análise comparativa, resumiu as vantagens e desvantagens e cenários de aplicação de cada método.

        No processo de detecção de defeitos superficiais de peças metal mecânicas, classificadores em cascata precisam ser introduzidos para classificar as características de saída em todas as camadas de conexão, para que resultados de classificação mais precisos possam ser obtidos. Para extrair completamente os recursos da camada totalmente conectada, o histograma de gradiente da rede neural convolucional e o padrão binário local são usados ​​para extrair os recursos de saída e, ao mesmo tempo, vários classificadores em cascata diferentes são treinados por sua vez, e os resultados de classificação obtidos são submetidos à fusão de decisão.O resultado da fusão de decisão realiza a detecção de defeitos na superfície da peça. O histograma de gradiente direcional tem boas características invariantes sob as características de deformação sutil, mas a capacidade do histograma de gradiente direcional para descrever características locais é falha e é muito sensível ao ruído. O modo binário local tem melhor capacidade de expressão local, de modo que o histograma de gradiente direcional e o modo binário local têm melhor complementaridade. Quando os recursos da imagem original das peças mecânicas de metal são extraídos através da rede neural convolucional, os recursos extraídos são contados e colocados na camada totalmente conectada. Os recursos complementares de HOG e LBP são totalmente utilizados para extrair ainda mais os recursos de saída do HOG. Os autovalores extraídos pelos métodos acima possuem características robustas relativamente fortes.

Em segundo lugar, a implementação do código

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 18-Apr-2022 10:33:59
 
% 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;
 
set(handles.radiobutton1,'value',0);
set(handles.radiobutton2,'value',0);
 
axes(handles.axes1); %指定需要清空的坐标轴
cla reset;
box on;
set(handles.axes1,'xtick',[]);
set(handles.axes1,'ytick',[]);
axes(handles.axes2); %指定需要清空的坐标轴
cla reset;
box on; %在坐标轴四周加上边框
set(handles.axes2,'xtick',[]);
set(handles.axes2,'ytick',[]);
axes(handles.axes3); %指定需要清空的坐标轴
cla reset;
box on; %在坐标轴四周加上边框
set(handles.axes3,'xtick',[]);
set(handles.axes3,'ytick',[]);
set(handles.edit1,'string','');
set(handles.edit2,'string','');
set(handles.edit3,'string','');
set(handles.edit4,'string','');
 
% Update handles structure
guidata(hObject, handles);
 
% 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)
clc;
clear;
output=VOCxml_to_matlab_main();
save dataSet output;
 
% --- 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 inputSize;
data=load('dataSet');
data=data.output;
 
% 数据存储在一个包含三列的表中,其中第一列包含图像文件路径,第二列包含车辆边界框,
% 第三列对应的类别。
% 将数据集分成训练集、验证集和测试集。选择 60% 的数据用于训练,10% 用于验证,
% 其余用于测试经过训练的检测器
 
shuffledIndices = randperm(height(data));
idx = floor(0.6 * height(data));
 
trainingIdx = 1:idx;
trainingDataTbl = data(shuffledIndices(trainingIdx),:);
 
validationIdx = idx+1 : idx + 1 + floor(0.1 * length(shuffledIndices) );
validationDataTbl = data(shuffledIndices(validationIdx),:);
 
testIdx = validationIdx(end)+1 : length(shuffledIndices);
testDataTbl = data(shuffledIndices(testIdx),:);
 
% 使用 imageDatastore 和 boxLabelDatastore 创建数据存储,
% 以便在训练和评估期间加载图像和标签数据
imdsTrain = imageDatastore(trainingDataTbl{:,'imageFilename'});
bldsTrain = boxLabelDatastore(trainingDataTbl(:,2:end));
 
 
imdsValidation = imageDatastore(validationDataTbl{:,'imageFilename'});
bldsValidation = boxLabelDatastore(validationDataTbl(:,2:end));
 
imdsTest = imageDatastore(testDataTbl{:,'imageFilename'});
bldsTest = boxLabelDatastore(testDataTbl(:,2:end));
 
%组合图像和边界框标签数据存储
trainingData = combine(imdsTrain,bldsTrain);
validationData = combine(imdsValidation,bldsValidation);
testData = combine(imdsTest,bldsTest);
 
%显示其中一个训练图像和边界框标签
data = read(trainingData);
I = data{1};
bbox = data{2};
annotatedImage = insertShape(I,'Rectangle',bbox);
annotatedImage = imresize(annotatedImage,2);
figure
imshow(annotatedImage)
 
%是否需要训练
doTraining=true;
 
end

 

referências

[1] Huang Fengrong, Li Yang Algoritmo de detecção de defeitos na superfície de peças baseado em Faster RCNN.

[2] Lu Yingying, Sun Yu. Sistema de detecção de defeitos superficiais de peças galvanizadas baseado em visão de máquina.

Para mais detalhes, clique em : 1341703358 . Neste artigo, três questões-chave na detecção de defeitos de superfície são discutidas e um conjunto de dados comum para defeitos de superfícies industriais é apresentado. Por fim, é prospectada a tendência de desenvolvimento futuro da detecção de defeitos superficiais.

Acho que você gosta

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