-
Como uma ceninha ele funciona.
-
Antes de mais nada, é importante entender
como que a entrada para esse tipo de rede
-
é formada,
que é justamente a composição de imagem.
-
Aqui nós temos uma representação
de uma imagem
-
clássica, ou nós temos aqui uma diferença
entre linhas e colunas
-
na matriz de linhas e colunas
em três dimensões.
-
Cada dimensão
é um canal de cor dessa imagem.
-
Geralmente é vermelho, verde e azul.
-
Isso compõe a função RGB de uma imagem.
-
Basicamente,
nós temos pixels que vão de zero
-
até dois
cinco cinco em cada célula dessa imagem
-
em cada um dos canais, e a soma deles
resulta na imagem final.
-
A cor final que nós vemos na tela.
-
Por exemplo, nessa representação
nós temos o número oito feito à mão.
-
Então é uma imagem esticadinha
sobre esse número oito e à mão.
-
Nós temos aqui a representação
pixel pixel dessa imagem.
-
O zero é a cor preta e O255
é a cor branca.
-
Existe uma série de variações
desses valores, que são no caso,
-
uma escala de cinza.
-
E aqui na terceira parte
nós temos a matriz de pixels,
-
onde temos o valor de cada pixel
em cada posição, até possível entender
-
como está a localização
do oito nessa imagem.
-
Então, para a
máquina poder aprender essa representação,
-
ela tem que aprender a mistura de borda
diferença desses valores
-
para uma aresta
e para uma bolinha aqui de cima.
-
Uma bolinha aqui de baixo que está
compondo a técnica visual do número oito.
-
Então, numa CNN,
a camada de entrada se conecta
-
diretamente a cada pixel das imagens.
-
Agora, como ela extrai
características dessas imagens?
-
A operação principal que dá nome
a CNN e a convolução a convolução,
-
operação matemática que representa a soma
de produto de dois duas funções.
-
Aqui no caso, uma função vai ser expressa
pelo dado pela imagem, por exemplo.
-
E outra função é uma matriz de pesos
que tá representando a important
-
de cada parte da imagem
na representação daquele conteúdo.
-
Vamos entender isso pela própria imagem.
-
Então aqui nós temos uma representação de
uma arquitetura profunda baseada em CNN.
-
Temos a camada de entrada
e a camada de saída,
-
essencialmente a parte da CNN de fato,
-
e da camada de entrada
até quase antes da saída,
-
porque é uma parte da rede utilizada
para a extração de filtros,
-
que são operação de convolução,
sendo passada
-
por cada uma das partes dessa imagem.
-
Essa convolução gera uma
um input para a próxima camada que faz uma
-
nova convolução sobre a camada anterior
e assim sucessivamente.
-
O que eu está aprendendo
são representações diretamente da imagem,
-
como por exemplo arestas, cantos
-
e depois coisa mais alto nível,
como variação de cor,
-
variação de textura ou então
combinação de partes que formam um todo.
-
Então o olhinho ou focinho
que representa a cara de um cachorro,
-
um ponteiro, o número
que representa a dimensão de um relógio.
-
Quando nós chegamos
nas últimas camadas com os sinais,
-
nós vamos ter um vetor
com alguma dimensão.
-
Então, por exemplo, 4096
ou outro número relevante,
-
isso alimenta
uma rede neural artificial clássica
-
que aprende a distinguir
o que significa esse dado, ou seja,
-
esse vetor de 4000 dimensões representa
que tipo de imagem pode ser um cachorro.
-
Essa outra, esse outro vetor
que representa uma outra imagem,
-
significa o que é um gato, uma flor.
-
E assim vai até a máquina
conseguir aprender
-
como distinguir uma imagem da outra.
-
Se o cerne da questão é uma convolução,
é muito importante
-
nós entendermos como a convolução
funciona.
-
Nós podemos entender
-
uma convolução como uma janela deslizante
que está passando pela imagem de entrada.
-
A primeira convolução é fácil
de ser entendida porque está pegando uma
-
janela de uma dimensão específica
e deslizando pela imagem como um todo
-
e saindo informações parciais
de cada parte dessa imagem.
-
Essa imagem resultante,
que não é bem uma imagem,
-
mas algo tridimensional, que representa
os pixels não mastigados, serve de entrada
-
para uma outra camada com o sinal
que estamos numa outra janela deslizante.
-
Cada janela dessa
pode ser um peso diferente
-
que representa a importância
-
daquela região da imagem para caracterizar
o seu elemento principal,
-
ou seja, a principal classe presente
naquela imagem.
-
Vamos entender o processo
pela forma diagrama.
-
Para simplificar, imagine uma imagem bem
pequenininha aqui de quatro por cinco,
-
com alguns valores aqui, zeros
e uns que indicam um pixel qualquer.
-
E nós temos aqui uma matriz menor
que apresenta um peso a ser aprendido,
-
que representa uma janela dois por dois.
-
Então essa janela vai deslizar
pela imagem.
-
Quando nós passamos pela primeira
região, nós vamos multiplicar
-
os pixels dessa imagem
-
pelo peso dessa matriz
que representa esse valor.
-
Três Quando eu faço um passinho por lado,
-
essa multiplicação dessa parte do pixel
pelo peso da matriz
-
representa um outro valor condensado
que é o três e assim sucessivamente.
-
Nós dando pulinhos nessa janela ou para
a direita ou para baixo em duas dimensões.
-
Quando nós percorremos toda a imagem,
nós vamos ter
-
uma imagem resultante
que tem essa característica.
-
Se nós queremos plotar
a imagem de entrada,
-
vamos conseguir entender
o seu significado.
-
A imagem de saída,
-
Essa convolução é algo que é difícil
de ser interpretado pelo ser humano,
-
mas a máquina consegue entender
que tem uma informação relevante para ela.
-
Ou seja, alguns.
-
Os pixels foram mastigados para condensar
informação importante
-
para caracterizar a qual classe
aquela imagem de entrada pertence.
-
De forma intuitiva,
você pode pensar o seguinte
-
se a minha janela for muito pequena
e ou se uma imagem for muito grande,
-
esse filtro convencional
pode gerar uma outra matriz muito grande.
-
Ou seja,
-
será que isso pode não ser eficiente
para representar aquele conteúdo?
-
Muito
provavelmente não será tão eficiente.
-
Portanto, outra operação tão importante
quanto a convolução é o pulling.
-
o porém representa uma sumarização
de uma parte dessa imagem resultante,
-
digamos assim.
-
Então, essa região representada
por esse quadrado aqui em vermelho,
-
pode ser simbolizada pelo pixel
mais importante que essa região.
-
Por exemplo, o seu maior valor em três.
-
Quando eu pego essa outra região aqui,
o maior valor desse pixel é um
-
dessa outra região.
-
O maior valor é o dois
e dessa outra região maior.
-
O valor presente é um.
-
Portanto, aquela imagem que entrou de três
por quatro ficou reduzida.
-
É uma imagem, ou melhor,
uma matriz de dois por dois.
-
Esse é apenas um dos tipos de pura
que existem que é o Max.
-
Porém, nós podemos trabalhar também
com Every de pulling, ou seja,
-
aqueles picos daquela região.
-
Nós fazemos a média deles
e levamos essa média adiante.
-
Agora que a primeira convolução
e o pulo foi aplicado,
-
essa matriz resultante serve de entrada
para a próxima operação de convolução
-
e depois um pulo e depois outro.
-
Convolução e depois um pulo.
-
Ou então outros arranjos, como diversas
convolução sucessivas.
-
Terminamos em uma operação de público.
-
Ou seja, tem uma regra para construir
essa arquitetura própria de CNN
-
Sim não a regra
para otimizar conversões e pulling,
-
mas o encadeamento entre
-
elas pode ser uma definição que você
vai montar na sua própria criatura.
-
no entanto, existem outras configurações
que podem ser feitas
-
para tornar esse aprendizado mais robusto,
ou se ele tentar aprender
-
mais nuances dessas imagens,
como por exemplo o pede e também o string.
-
O pede está justamente
-
relacionado a evitar a perda de informação
que está na borda da imagem com você.
-
Essa imagem original está aqui
nessa região em azul.
-
É naturalmente visível
que quanto mais a gente está deslizando
-
pela imagem,
-
a informação do centro tende a ser
mais valorizada para essa ação de filtros,
-
sendo que a informação que está na borda
tende a ser ignorada.
-
Quando nós fazemos ou pede, estamos
colocando como se fossem pixels falsos
-
em volta da imagem para simular uma imagem
um pouco maior.
-
Assim, a borda que é perdida
vai ser uma borda
-
que de fato seria irrelevante.
-
Outra estratégia interessante
-
é o sprite, que diz justamente
o tamanho do passo da janela deslizante.
-
Pela imagem podemos pensar menor ou maior.
-
E essas são apenas duas configurações
possíveis na montagem sua arquitetura.
-
Fora isso,
-
você pode pensar quantas convulsões,
quantos pulinhos, qual, além deles também
-
e outros até que ajudam a deixar a rede
mais especializada, mais rápida
-
ou até mais específica a um tipo de dado
que você queira construir.
-
Com isso, nós podemos ter outros tipos
-
de redes neurais profundas baseadas em CNN
-
a partir de uma rede tradicional,
digamos assim.
-
Nós podemos ter imagens
de outras características principais,
-
como por exemplo,
as que estão na imagem a seguir.
-
Partindo de uma rede tradicional,
digamos assim, podemos pensar
-
numa rede mais ampla,
que possui uma janela de entrada maior,
-
uma rede mais profunda,
que possui mais camadas convencionais
-
e ou de pool e uma rede de maior resolução
que está preparada para trabalhar
-
com imagens de maior resolução de fato,
ou seja, imagens maiores.
-
Dadas estas e outras configurações,
não é de se admirar que existem diversas
-
arquiteturas neurais profundas
para se trabalhar com scene.
-
Ou seja, diversas propostas de regionais
baseadas em CNN
-
foram surgindo ao longo do tempo, cada uma
com suas caraterísticas peculiares.
-
Por exemplo.
-
Se o tamanho da imagem representa
a quantidade de parâmetros
-
a ser aprendido no treinamento,
temos redes muito grandes,
-
muito profundas.
-
Eles não tão profundas
assim, redes que possuem um desempenho
-
muito bom na imagem net
e outras que exigem
-
uma quantidade muito grande de operações
serem feitas por segundo.
-
Agora, qual dessa criatura melhor
se adequa ao seu problema?
-
Depende de uma série de questões,
como por exemplo
-
qual é o ambiente funcional
onde você vai treinar?
-
E os aspones?
-
Qual é o conjunto de dados que você vai
utilizar, se algo mais específico
-
ou geral, ou até mesmo o tamanho de dados
que você tem para treinar essas redes.
-
Portanto,
a melhor saída é sempre a experimentação