deep learning
DESCRIPTION
aaaaaTRANSCRIPT
Deep Learning usando CNN (Convolution NeuralNetwork)
• Temos uma imagem cinza de uma banda que corresponde a entrada, primeiro passo, do algoritmo;• No caso de uma imagem colorida, ela precisa estar num espaço descorrelacionado e só usaremos
a banda referente ao cinza. No caso do espaço YcbCr, usaremos a banda Y;• A cada camada do algoritmo, temos uma imagem de múltiplas bandas;
• O Deep Learning, usando o CNN, trabalha com 3 camadas;• Antes de entrar na primeira camada (L1), a imagem é normalizada;• O processo de normalização consiste no seguinte:
• Ou seja, o valor do pixel p na imagem normalizada, é o valor do pixel na imagem original, divididopela raíz quadrada do somatório do quadrado de todos os pixels adjacentes de todas as bandas(lembre-se que o pixel p é adjacente a ele mesmo) → A normalização do pixel p nada mais é do quea norma euclidiana;
• A normalização serve para mostrar quais são os pixels mais importantes/relevantes da imagem;• Quanto maior o valor, mais importante é o pixel;• Uma hora maneira de normalizar o pixel p é dividir o valor do pixel p, I j(p), da banda em questão,
pela raíz quadrada da soma dos quadrados dos valores de todos os adjacentes a p de todas as bandasda imagem;
• Na camada L1 do algoritmo, a entrada é uma imagem cinza, de uma banda com os valoresnormalizados;
• É criado y Kernels (Banco de Kernels), de tamanho MxN, onde y M e N são parâmetros a seremdescobertos → maior dificuldade do algoritmos;
• Nesta camada, os kernel possui apenas uma banda, pois a imagem de entrada tem apenas umabanda;
• Os pesos de cada Kernel são gerados aleatoriamente →podemos utilizar valores de 0 até 1;• Algumas coisas que devemos considerar é que a média dos pesos de todas as bandas do kernel
deve ser zero e com norma unitária;◦ Sendo median, a média de todos os pesos de todas as bandas do kernel, o valor dos pesos do
kernel são obtidos pelas equações: w' = peso com valor aleatório – median w ' q=wq−w ,para todo peso de todas as bandas do kernel → isso garante que a média de todos os pesos detodas as bandas do kernel seja Zero;
◦ Temos que norm é a norma de todos os pesos do kernel, ou seja, a raíz quadrada da soma dos
quadrados de todos os pesos de todas as bandas do kernel norm=√ ∑∀ q∈ A (p )
w i q2 )), onde i é a
banda;
◦ Logo, o valor dos pesos de cada banda do kernel é: wq=wq
norm;
• Há outras maneiras de gerar os pesos (ver slides);• Agora, é feita a convolução de cada Kernel com a imagem, onde cada convolução gerará uma nova
banda na imagem resultante;• Logo, teremos uma imagem com y bandas;• Exemplo: Supondo que nesta camada foram utilizados 64 Kernels de tamanho 3x3, a imagem
resultante terá 64 bandas, onde a banda 0 corresponde a convolução da imagem original com oKernel 0, e assim por diante;
• Se o valor de um peso do kernel gerado aleatoriamente for menor que a média dos pesos de todasas bandas do kernel, na hora de subtraí-lo por esta média, para garanta que a média dos pesos detodas as bandas do kernel é 0, este valor será negativo;
• Assim, após a convolução, poderemos ter pixels com valores negativos se o valor do peso do kernelfor negativo;
• Logo, aplicaremos um threshold a todos os valores de todas as bandas dessa imagem convolvida →se o valor do pixel for < 0, ele virá zero;
• Este valores zeros ou valores pequenos, são resultantes de valores pequenos da Imagem de entradanormalizada;
• Logo, são valores que não devemos usar para representar a imagem, pois eles não tem muitaimportância;
• Muitos deles serão eliminados na etapa do Pooling;
• A próxima etapa do algoritmo é o Pooling;• Esta etapa consiste em escolher os pixels mais significativos da imagem multibanda resultante da
convolução, de acordo com um stride passado (stride é mais um parâmetro a ser descoberto);• Com isso, se a imagem tiver um pouco transladada, não afeta no reconhecimento da imagem, pois
isso cria certa invariância à translação, além de gerar uma imagem de menor resolução espacial;• O pooling funciona da seguinte maneira:• Suponha que há vários pixels entre os pontos pretos;• Com este stride, selecionaremos apenas 9 pixels de cada banda da imagem, de acordo com alguma
eurística, resultando em uma nova imagem de 9 pixels em cada banda;• Na imagem maior, analisaremos qual é o valor máximo entre de todos os adjacentes de cada pixel
preto (um dos pixel que será percorrido na imagem, devido ao tamanho do stride);• Lembre-se que o próprio pixel é adjacente dele mesmo;
• Outro exemplo: Vamos supor que temos uma imagem 5x5, um kernel 3x3 e um stride de 2. Assim,começando do pixel (0, 0), percorreremos a imagem com base no stride;
Uma Banda da Imagem10 0 1 4 10
0 5 4 3 2
0 2 0 0 5
5 0 0 3 10
6 0 0 4 0Banda da Imagem após o Pooling
5
• Os pixels amarelos indicam as posições em que serão analisados os brilhos dos adjacentes;• Os pixels azuis são os adjacentes do pixel amarelo central 0, que no caso, está analisado;• Como o maior valor de seus adjacentes é 5, logo, o valor desta posição na nova imagem será 5;
• A respectiva Banda da Imagem após o pooling é:
10• 5 10
• 5 5 10
• 6 4 10
• A última etapa realizada em L1 é a normalização desta nova imagem multibanda resultante do pooling;
• Agora, a camada L2 recebe uma imagem de com y bandas;• Logo, teremos k kernels multibandas (banco de kernels), sendo que cada kernel possuíra y bandas
→ como y é o número de kernels da camada L1 e o número de kernels da camada L2 deve ser maior que o da camada L1, k > y;
• O tamanho do Kernel nesta camada é maior do que na camada anterior;• Ex: Se na camada L1 usamos 64 filtros, a imagem resultante após a convolução tem 64 bandas.
Supondo que na camada L2 usaremos 128 filtros (banco de filtros), cada filtro terá 64 bandas, pois aimagem de entrada tem 64 bandas. Isso viabiliza a convolução dos filtros com a a imagem. Após a convolução, teremos agora uma imagem com 128 bandas;
• Com isso, todas as etapas descritas em L1 são refeitas:• É feita a convolução da imagem com cada Kernel do banco de Kernels, sendo que cada banda da
imagem é convolvida com sua respectiva banda no kernel;• Ao final da Convolução, teremos uma nova imagem, agora com k bandas;
• Na camada L3 é refeito as mesmas etapas;
• Por fim, ao final destas 3 camadas, teremos um vetor de características (descritor), que descreve a imagem;
• Com este descritor, podemos comparar se uma imagem é similar a outras (ex: se a imagem de uma pessoa é de uma determinada pessoa);
• Podemos fazer isso usando um classificador obtido por SVM Linear;
• O problema do algoritmo consiste em aprender os parâmetros e hiperparâmetros da função de extração dos vetores de características:◦ número de kernels em cada camada, tamanho de tais kernels, strides, …;
Esquema do Algoritmo de Deep Learning com CNN