Escolar Documentos
Profissional Documentos
Cultura Documentos
Parte 05
Detecção e Classificação
Imagem do padrão
Imagem fonte
𝑅(𝑥, 𝑦) = (𝑇 𝑥 ′ , 𝑦 ′ − 𝐼 𝑥 + 𝑥 ′ , 𝑦 + 𝑦 ′ )2
𝑥′,𝑦′
Localização do
menor valor em R
https://link.springer.com/article/10.1007%2Fs40313-019-00514-6
Treinamento: Nesta etapa procura-se estabelecer uma descrição única para cada
categoria através de propriedades características fornecidas por descritores
Teste: As descrições de cada categoria são utilizadas para classificar novas amostra com
base em seus descritores
22
22 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Classificador de distância mínima
• O classificador de distância mínima é utilizado para classificar uma imagem/amostra como
pertencente a uma dada classe com base na distância entre seus descritores e os descritores da
classe correspondente no espaço multidimensional de descritores.
1
𝑚𝑗 = 𝑥 𝑝𝑎𝑟𝑎 𝑗 = 1,2, … , 𝑀
𝑁𝑗
𝑥∈𝑤𝑗
• Podemos então atribuir uma amostra x a uma dada classe calculando sua
proximidade para cada 𝑤𝑗 e selecionando a classe de menor distância.
23
23 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Classificador de distância mínima
• As classes são representadas por seus vetores médios, calculados no momento de treinamento.
• Durante os testes, para se classificar uma amostra x, calcula-se a distância entre a mesma e
cada vetor médio associado às classes.
• No exemplo, a distância entre a classe B e x é a menor. Desta forma, x é classificado como
pertencente a esta classe.
24
24 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Exemplo
Dados os seguintes valores médios de descritores para cada
classe apresentada, crie um programa que classifique cada peça
presente na imagem componentes_diversos.png nas 3 categorias
possíveis através do Classificador de distância mínima.
// buscando os contornos
vector<vector<Point>> contornos;
// imagem, vetor de saída com os contornos,Lista de todos os contornos, pontos exatos, sem offset
findContours( tpoImage, contornos, RETR_EXTERNAL, CHAIN_APPROX_NONE, Point(0, 0));
switch(indiceClasse)
{
case 0: // porca
drawContours(imagemDesenho, contornos, i, Scalar(255,0,0));
break;
case 1: // parafuso
drawContours(imagemDesenho, contornos, i, Scalar(0,255,0));
break;
case 2: // prego
drawContours(imagemDesenho, contornos, i, Scalar(0,0,255));
break;
}
}
Perceptron Multicamadas
28
28 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
O CÉREBRO E A REDE NEURAL BIOLÓGICA
• Cérebro humano: 100 bilhões de Neurônios
29
29 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
O CÉREBRO E A REDE NEURAL BIOLÓGICA
• Quando um neurônio recebe pulsos elétricos, ele é ativado e eventualmente dispara um
pulso ao axônio, que emite este pulso aos outros neurônios através das conexões sinápticas.
• Esta ativação ou repasse de sinal aos demais neurônios somente é realizada caso os pulsos
elétricos recebidos pelas sinapses sejam fortes o suficiente a ultrapassar determinado limiar.
30
30 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
O CÉREBRO E A REDE NEURAL BIOLÓGICA
• As conexões sinápticas e a intensidade dos pulsos necessários para ativar o
neurônio podem mudar. Estas características permitem a rede neural reter
conhecimento, ou seja, aprender.
31
31 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
A REDE NEURAL ARTIFICIAL
• Redes neurais artificiais são sistemas computacionais de implementação em hardware
ou software que imitam as habilidades computacionais do sistema nervoso, usando
um grande número de neurônios interconectados.
• Características
• Excelentes reconhecedoras de padrão
32
32 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
A REDE NEURAL ARTIFICIAL
• Exemplo de aplicação: detecção de parafusos
não não
sim
34
34 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Arquitetura – Neurônio artificial
• principais que constituem o neurônio artificial são:
• entradas;
• pesos sinápticos;
• função de ativação ou função Soma;
• função de transferência ou ativador.
35
35 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Arquitetura – Redes de neurônios
• Em uma rede neural artificial os neurônios são agrupados em camadas
36
36 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Arquitetura – Definição/Projeto da Rede Neural
Artificial
• Deve-se identificar as variáveis relacionadas ao problema que contém as
informações necessárias à resolução do mesmo.
• Uma vez identificadas estas variáveis é escolhido o modelo da rede neural a ser
utilizado. Também devem ser definidos os seguintes aspectos da rede:
• Quantidade de camadas
• Quantidade de neurônios por camada
• Quantidade de entradas
• Quantidade de saídas
37
37 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Exemplo
• Exemplo de aplicação: detecção de parafusos
38
38 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Treinamento Supervisionado
• Deve-se possuir um conjunto de treinamento organizado em pares, onde para cada
entrada se tenha a saída desejada.
• Estes pares são então apresentados à rede e para cada entrada deve ser verificado
se a saída obtida corresponde à saída desejada.
• Caso a saída obtida seja diferente da saída desejada deve ocorrer o ajuste dos
pesos sinápticos dos neurônios da rede. (Backpropagation)
• Caso a saída obtida seja igual à saída desejada, deve-se apresentar o par
seguinte à rede.
• Este processo deve se repetir para todos os pares do conjunto de treinamento, até
que se obtenha uma taxa de acerto satisfatória.
39
39 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Exemplo
Conjunto de treinamento
40
40 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Utilização da Rede
• A fase de utilização é propriamente a execução da rede neural, que se inicia quando
uma entrada é apresentada à rede e termina quando a rede gera uma saída.
41
41 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Exemplo de código – OpenCv (1/4) – criação da rede
int main(int argc, char* argv)
{
// **************** criando a rede ****************
int qtdentradas = 2;
int qtdsaidas = 1;
int qtdneuronioscamadaoculta = 8;
int qtdcamadas = 3;
treinamentoDados.at<float>(0, 0) = 1.11;
treinamentoDados.at<float>(0, 1) = 6635;
treinamentoResultado.at<float>(0, 0) = 0;
treinamentoDados.at<float>(1, 0) = 0.32;
treinamentoDados.at<float>(1, 1) = 6739;
treinamentoResultado.at<float>(1, 0) = 1;
treinamentoDados.at<float>(2, 0) = 0.19;
treinamentoDados.at<float>(2, 1) = 2212;
treinamentoResultado.at<float>(2, 0) = 0;
Mat resposta;
rede->predict(amostra, resposta);
waitKey();
return 0;
}
46
46 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Exercícios
porca
circularidade
prego
Parte 05
Detecção e Classificação