o Olá vocês hoje nós vamos falar de redes neurais convolucionais o continentes para reconhecimento de mais antes de ver esse vídeo da olhada nesse outro vídeo e também tem um link nos comentários hoje eu explico as intuições quais tipos de informação são importantes para serem capturados em imagens bom nós gostaríamos que modelos Capítulo fitness de imagens porém nós gostaríamos que seus filhos não sejam tão dependente de coisas como por exemplo né ouviu essa posição do objeto na imagem apresenta iluminação né a gente quer que o nosso sistema seja capaz de detectar por exemplo essas imagens
aqui e parece um pinguim independente da Luz pela escala também é nos trás não troca modelos de ternos em que isso é uma pessoa com contando na mão Independente se é uma criança se é um adulto e também por exemplo nós gostaríamos que o modelo tem que dar que é esses objetos são cadeiras dependendo do tipo da cadeira é lógico Você pode ter modelos mais específicos que tem detectar o tipo da cadeira né aí depende da sua aplicar e o modelo razoável detectaria que esses objetos são cadeira independente do formato deles então a gente quer
modelos capturem esse tipo de Fisher e que ele não seja tão sensível né a esses tipos de modificação do objeto não pensa assim na imagem que para que o modelo cabe todo esse tipo de informação é muito importante que esse modelo tenho né os ele captura os conceitos de localidades como nós vimos no vídeo anterior e o conceito de invariância translação e as conveniências tem essas propriedades desejadas bom então vamos a nossa exemplo aqui a gente tem aquela a figura né de uma árvore A gente tem aqui uma representação mais simples dela onde cada ponto
desse aqui é um pixel em Pixel o valor numérico não é tão cada quadrado desse aqui Vai representar um valor numérico e a gente tem a imagem é que vai ser entrada da rede tô sem de pegar essa imagem né e pega a cada linha dela que colocou uma na frente da outra criar um vetor resolver tu vai sentar para nossa rede e se a gente usar uma rede por exemplo comum é com o botei a perception mlp é você vai pegar esse método multiplicar por uma matriz né que são os pesos da rede e
você a saída vai ser né para essa camada vai ser um vetor que não era todos considerando aqui a não linearidade só para dar um exemplo então para cada posição daquele vetor de saída ali Você Vai Multiplicar cada Pixel da imagem por cada e a peso é da sua linha ali daquela da maquininha peso então você vai você vai ter o número de pixels da entrada para cada linha dessa mata depois disso é muito gostoso né você criar uma rede neural aí onde os pesos da rede para a cada linha da Matriz ali ela é
da Ordem do número de pixels de entrada então por exemplo uma imagem como é 1024 pixels e pode ser maiores Claro e mais com muito mais resolução 4K enfim são muito mais pistão gente percebe que fazer a computação com essa demais é muito gostoso utilizando redes neurais normais o outro ponto é que esse tipo de arquitetura ele não captura né aquelas duas informações importantes nos falamos de a noção de localidade e de variação translação E aí por aí que a gente vai falar mais de convnets né que elas elas captura sistemas de informação elas tem
até os possui uma arquitetura diferente para capturar esse tipo de informação Então nós vamos sair dessa Nós somos totalmente e onde cada saída do Senhor vetor de sair daqui né Cada unidade dele ela é o resultado né de uma soma dos valores entrado com vários pesos Ou seja todos os peixes não conectados aqui são multiplicados por um peso todos os países formados para cada unidade dessa e a gente vai entrar agora no conceito de localmente conectado a gente pode pensar que a gente tem uma janela né nesse caso aqui é de dimensão três por três
tão um dois três né a dimensão aqui ele pode com essa do Y dimensão do X3 também e a ideia que essa janela vai comportar uma unidade de saída é dessa dessa dessa camada a gente pode pensar saída da camada onde para cada Pixel dessa Janela dos multiplicar ele para um ver todo abriu então tem sido x multiplicado pelo vetor w e você vai sua mãe é isso né para cada Pixel da imagem faz essa comparação e sua mãe e você vai quer sair da Y O que é uma saída captura a a localidade né
informações localidade de pode pensar assim e esse valor não é mais computador baseado na imagem inteira esse conceito de fazer essa comparação local é um conceito relacionado à convoluções é que são operações matemáticas né convoluções Elas são feitas em cima de funções e por isso o nome das vezes são redes neurais convolucionais porque ele traz as ideia de convolução de acidente capturar informações locais uma ideia está relacionada convolução né que é uma operação matemática utilizada para esses sinais é por isso que essas redes são chama o redes neurais convolucionais que elas pegam inspiração de convulsões
né que são operações entre importa essas entre duas funções e não vou entrar moderar esquemas A ideia é que essa essa esse cálculo da convolução ela é feita né de uma forma que você desliza uma função em cima da outra de uma forma bem ele é bem simples aqui a gente tem o campo receptivo é onde o cálculo é feito aqui né dentro dessa região a gente tem uma região de Campo receptivo Ou seja a saída do seu neurônio aqui ele vai ser calculado de forma aonde apenas considerar essa região e a ideia que como
nós temos aqui tem um campo receptivo E você vai fazer o cálculo baseado nesse Campo receptivo né que são aqueles pesos * cada Pixel de se vai ter a saída aqui né que a gente sabe feito um metro e você faz isso é para todas as posições aqui da sua imagem vai ver como é isso ou seja o campo receptivo ele vai deslizar aqui né na imagem para capturar por diversas partes da imagem e no fim a gente vai ter esse vídeo map que vai ser um resumo de toda essa comparação feita a gente pode
pensar assim em cima da imagem Então nesse outro caso aqui nessa parte de baixo né o campo receptivo tá aqui fazendo o cálculo para essa posição da imagem aqui tem o resultado dele então a gente pode pensar com uma convolução na como keleu né que ele desliza o pó do valor para cada posição então ele começa aqui ele faz o cálculo Aqui de acordo com essa equação e gera essa posição aqui né ele a janela deslizada aqui e calcula a segunda posição de acordo com a mesma posição com a mesma equação e por e assim
por diante a o Kernel vai deslizando ali para imagem e aí ele vai deslizando lá que chega no fim ele volta aqui pro início vai deslizando de novo desce vai para o início a decisão de novo até chegar o fim da imagem um ponto muito importante é que esses pesos w SAC eles são compartilhados Ou seja você usa o mesmo peso os mesmos pesos dablius né os mesmos paramos para todas a para todas as vezes que o carro desliza na imagem ali ou seja os valores de saída eles são computados usando os mesmos valores é
os mesmos parâmetros e essa forma de qual que é uma interessante porque ela permite a rede neural aprender padrões locais ali ou seja então se pra é deslocada né vamos supor você tem duas e mais da mesma árvore mas composições diferentes e a mesma água não importa muito onde ela tá porque como esses pesos eles eles vão deslocando Aí você usa o mesmo peso para os pixels da imagem ele consegue capturar aquela informação local Independente de onde ela esteja na imagem e aqui gente tá vendo exemplo de um quer né só né de uma convolução
Vamos pensar assim é parece mais porém a gente pode ter múltiplas convoluções um múltiplos kernels e a ideia que cada que não vai ter um conjunto de parâmetros diferentes onde esse quebra a gente espera como eles são inicializados de uma forma e uma forma aleatória que cada quer na mesma capturar informações distintas a gente espera isso distintas a imagem que a gente pode traçar um paralelo presente com muito rede atenção nos Transformers né que captura de diversas vamos dizer assim semânticas ele da imagem a gente pode chamar também cada um né de sistemas de canais
até nos né quando você vai programar isso usando uma mulher até que geralmente eles podem chamar isso de ti e por exemplo canal pode procurar algum tipo de moda bem mais o outro Capítulo tipo de bordo esse tipo de informação porém eu havia dito que imagem né Elas são é Grid nas duas dimensões onde você tem os pisos ele mas na verdade mais colorido elas são tensores e partículas em representa a imagem né no padrão RGB a gente tem né é a imagem ela representada com três coisas né qual vermelho verde ou azul então a
gente representa a imagem né como tensor não é mais duas dimensões mas na verdade três dimensões que você tem a dimensão aqui dos canais né que são os três canais vermelho verde e azul é importante está cá então que agora você vai ter convoluções para cada um desses canais então aqui na verdade eu tô trabalhando como atriz mas contensores né que eles generalizam as matrizes né para mais dimensões então por exemplo a gente tem um tensor aqui de três dimensões nesse atende menção Y aqui da imagem dimensão x né a gente pode pensar que altura
largura e a dimensão dos canais quantos canais é mais tempo então essa vai ser entrada né para sua rede neural ali né a sua Oi e a saída de uma camada dela ela vai ter vários canais também porque são os canais que captura informações diferentes né como eu disse anteriormente e essa convolução Recebe como entrada um tensor aqui que representa a imagem e geram a saída com tensor também com vários canais porque o número de canais aqui é um hiperparâmetro da sua rede perceba também que cada canal de saída ele é gerado baseado em todos
os canais de entrada então isso é feito de uma forma que depois que você faz a convolução para cada canal de entrada aqui você soma esses valores e aí você vai ter o valor da sua convolação final baseado em todos os canais E aí e Dependendo de qual o tipo de modelo você utiliza você vai ter como o som diferente então a convulsão com as pq a convulsão básico mas existem vários tipos de convolução uma convolução simples chamada velho convolution é simplesmente acumulação normal onde você vai deslocar na janela aqui uma posição de cada vez
né Então a primeira janela começa aqui depois ela vai para outra posição e assim por diante E aí a saída que você vai gerar né ela tem um valor diferente né porque depende do do tamanho da sua convolução aqui né então ou a saída aqui para o vento convolution ela é o tamanho da saída né Ela é o tamanho da entrada menos o tamanho do que né né que aqui no caso de três por três mais um vai dar o número de posições aqui o valor gerado parece convolução a gente tem uma outra convulsão chamada
full convolution onde você expande a imagem aqui né com valores 0 já pode pensar assim precipícios e a convolução ela vai passando aqui também da mesma forma né vai pulando e a cada uma posição então quadrada aqui depois ele vai para cá depois vai pra cá esse aí por diante e nessa convolução tamanho da saída agora tá a mãe da entrada mais o tamanho do quero que nesse caso também é 93.3 - 1 Cent quiser criar uma saída né Depois do cálculo da convolução do mesmo tamanho da então a gente pode usar semi convolution aqui
onde a saída dela é o mesmo tamanho da entrada ficou uma entrada essa convolução você adiciona aqui né uma borda vão pensar assim de pixels ao redor da Imagem e aí você também faz vai passando aqui o Kernel na imagem também nós podemos também ter convoluções que elas não tem o passo de um como eu tava mostrando aquela vai ela desloca uma posição de cada vez mas a gente tem esses traz convolutions onde você pode determinar o tamanho do seu saldo vamos ver se do seu passo esse caso aqui é strass convolutions passar horas que
então aparecer nesse caso ele pulou dois aqui tá vendo furou duas posições eu posso falar mais duas posições Esse é o caso da estrad convolution temos também se deleita deconvolution na verdade agora você não tem um quadrado mais né ali gente pode pensar assim o que é no quadrado ali mas na verdade o que é nele espalhado com passos é entre seus elementos maior que o maior que um Então na verdade aqui você não calcula convolução para esses espíritos que estão entre os pisos vermelhos aqui por exemplo E aí você vai também deslocando essa convolução
aqui é um tipo diferente convolução então no seu problema você pode usar diversas convoluções algumas funciona melhores alguns casos outras funções melhores em e outras conveniências né e geralmente no seu problema é você gostaria de escolher pode ser uma preparando você pode definir quando você tiver fazendo uma busca pelo separamos eu posso escolher diferentes convoluções e ver qual delas funciona melhor para o seu problema uma outra não sou muito importante em redes neurais convolucionais ou com ver né se é a noção de pule e a noção de punho na verdade é para reduzir a resolução
do seu Grid ler a sua imagem isso é eu tô na média né ou o máximo aqui dos valores de uma janela defina do Neymar só você também defina a janela tamanho que você quer do seu pule nessa definir essa janela esse caso aqui é 2 por 2 e você tira aqui por exemplo a média dos valores dos Pisos aqui ou ou o máximo por exemplo você também vai deslizando aqui né a sua janela e faz isso para tudo imagem você vai ter uma versão reduzida da imagem né um abração com resolução menor daquele mais
ó pode pensar assim e basicamente usando essas duas noções de convolução e pulem você constrói uma rede neural que dado uma imagem você consegue classificar a quilos em um gato você não é o outros você consegue usar isso em outros problemas nem visão computacional e a ideia que você tem essa imagem né que quer um objeto né com Alta Dimensão dá para imprimir 24024 e você vai fazendo convoluções e pule você vai diminuir resolução e vai gerar um vetor posso pode pensar assim um ver toda a dimensão reduzida não pensa assim dimensão tamanho 300 por
exemplo e você pode usar a um MP uma a camada de classificação aqui o modelo é certa onde você tem esse vetor que captura as informações da imagem como entrada você passa esse número aí e aperte L1 para classificar a imagem por exemplo nessa pode entrar em concluir o centro por exemplo para classificar a imagem Então vamos montar os blocos né então convnets você pode ficar junto nesses blocos de convolução e pule E você também adiciona não-linearidades no meio né parece a fusão Reluz E aí você pode ter até 100 camadas disso né dessas intercalações
ele convoluções epulis é importante tá com essa ideia de hierarquia também é que parecia com as camadas iniciais na rede e as convulsões enfim convulsões a polícia iniciais eles vão capturar informações que são menos abstratas por exemplo as Quinas da sua na imagem ou as bordas cores estilos e a partir do momento que você vai indo para camadas é mais profundo vamos ver se elas vão capturando a padrões mais abstratos então A ideia é vincar Trono me sinto como as bordas e com esses tipos e agregando Essas fichas e criando features mais ricas né Por
Exemplo né como orelhas ou enfim olhos ou coisa existe por vamos ver um exemplo visual de uma rede de uma cosmética então por exemplo tem entrada que a imagem né Você tem uma convolução Você tem uma não linearidade aqui você usa uma camada de bullying e depois dos seus uma camada de convolução de novo depois você tem uma não unidade pule e no fio vamos supor ser reclassificado esse mais né então você vai entrar com essa saída da do pulinho aqui por exemplo no multilayer perceptron tem um mlp onde é totalmente conectado aqui de podcasts
como classificador né dado que você tem essa representação da imagem como entrada que você faz as computações e detecta por exemplo né e disse é um gato um cachorro Então é só arquitetura básica para diversos problemas Deep Lane na verdade você tem a primeira a gente postar máquina de Encoder né que é o aparte precisava da rede nesse caso é a parte precisar de imagens né o convoluções epulis por exemplo no caso de ele pensa pode pensar isso como o transforme com várias camadas e aqui você tem a gente pode pensar como decoder na verdade
né que você tem esse depois que você chegou a representação você quer classificar nesse ser um gato um cachorro coisa desse tipo né que não aqui geralmente várias arquiteturas é um multilayer perceptron né Por exemplo ele também você usa multilayer perceptron para classificar um texto por exemplo e a primeira convnet famosa é a lenet-5 de 98 na proposta não é um dos autores é o leão de cumprir e não é uma rede neural muito profunda na verdade ela só tem aqui duas convoluções dois pois tá certo e ela for utilizado para reconhecimento de dígitos manuscritos
né é escrito na mão aí naquela época teve um sucesso e foi muito antes de Deep Lane não é desse mundo de pilão que teve nos anos 2010 o trabalho muito famoso e que eu sou um das causas de Despertar esse mundo depilando em 2002 Foi a alexnet que basicamente né de novo aí você tem imagem como entrado você tem convoluções epolis aqui não linearidade como Hello você faz isso na verdade várias vezes nesse caso eles usaram 8 camadas eles usaram do pau tu enfim algumas é técnicas para para facilitar o treinamento né para regularizar
é o treinamento da sua rede e usar um Data Set muito grande né o irmãos Neto e tiveram resultados muito bom então esse trabalho com múltiplos na área como um todo e despertou esse grande interesse que tem hoje em Deep Lane fundo os responsáveis todos tá lutando aqui que me nos parece que quanto mais profundo milhão né Quanto mais camadas tiver a rede melhor uma qual o limite do número de camadas que a gente pode ter que eu vi nas fotos é 1000 2000 1 milhão como é isso na verdade não né E aí você
vai aumentando o número de camadas da rede vai ficando mais difícil o processo treinamento é mais difícil do Gradiente é propagado ali com muitas camadas a gente vai ver alguns exemplos disso outro exemplo de um trabalho famoso é o vídeo de net É que na verdade aqui você empilha várias convoluções antes do povo então a gente tava vendo que era uma convolução né Sei lá uma realidade um pulinho aqui na verdade você põe o convolução humano lenidade outra convolução uma não linearidade pule Ou seja é uma diferente arquitetura né que também trouxe resultados muito bons
para a área e permitiu por exemplo esse modelo sendo internado com mais camadas fazendo essa questão de empilhar vários convoluções Adipure eles conseguiram montar um modelo com até 19 camadas e uma ideia interessante você de você intercala convoluções é a seguinte pra gente ter convolução azul né ela passou pela imagem e calculou representações depois ela a gente tem que ter cada convulsão vermelha que a segunda aqui tem uma convulsão três por três tá vendo Neve três dimensões aqui no eixo X no eixo Y e na hora que o som vermelha vou capturar essa informação na
gerar representação né dessa parte da imagem perceba que ela vai capturar informações que estão mais distantes que não estão dentro dessa convolução porque essas informações Foram capturadas pela convulsão anterior é meio que a convulsão fica um pouco mais poderosas aqui a novela capturar informações apenas baseadas nos bichos que estão dessas janela ela tem uma composição que captura os seus um pouco mais distante porque essas informações elas foram agregadas pela convulsão interior essa mais basicamente mais ou menos a intuição Mas como eu havia dito não é só você adiciona a camada que você vai ter resultados
melhores aqui a gente tem um exemplo é no exemplo do Peppa eles utilizando 11 camadas eles têm é dez porcento taxa de erro é que eles utilizam três camadas or12 Du na hora que as utilizam 16v reduzido ainda mais mas na hora que eles chegam 19 eu começo a subir de novo ou seja tem um ponto aqui ótimo 16 camadas que funcionou para esse problema né e adicionar mais camadas não não ajudou e geralmente não ajuda e o número de camadas defender a serem definidas também o e preparando toda sua rede e no seu problema
você também gostaria de testar com vários diferentes camadas e ver qual o número de camadas tem a performance melhor para o seu problema e essa questão estamos camadas ela tá relacionada à complexidade computacional então para terminar modelos com muitas camadas é muito mais complexo e também dificuldade de utilização Como eu disse é você fazer o backpropagation guarda ele descendo com muitas camadas se torna o processo mais complexo então a gente gostaria de melhorar essa utilização na como treinar essas vezes né então um ponto importante por exemplo a inicialização cuidadosa Então existe alguns metros para inicializar
suspesão invés de ser aleatoriamente existe alguns metros que tentam inicializar os seus pesos de forma mais espertas Outro. A dificuldade de utilização então existem utilizadores melhores que que fazem um trabalho e otimizar melhores a gente vai ter vindo mais para frente explicando seus utilizadores o outro ponto importante a normalização de camadas isso ajuda a estabilizar o treinamento a gente explicou isso um pouco em vidas anteriores o Transformers e desenvolver arquiteturas novas também melhor utilização algumas arquiteturas as funcionam melhor tem uma performance melhor que outra por esse vídeo eu ficar muito longo Vou colocar aqui alguns
exemplos de arquiteturas que melhoram a performance por exemplo trabalho teve um impacto muito grande foram as resinas é o as residuais que o proposto 2015 onde você cria um atalho vamos ver se na rede então ao invés de você ter né para ficar convolução você tem aqui uma normalização Hello convolução você cria umas conexões e dois que a gente chama assim que é tipo os atalhos na rede e a ideia é que Isso facilita o treinamento da rede por quê Porque na hora você fazer o deck que eu paguei isso aqui ao invés de ele
passar aqui por todas essas camadas essa fazer a comparação todas as camadas a informação aqui ela for melhor né Porque aqui nós temos a gente passa por esse tanto de camada de uma forma intuitiva né o cálculo de beck para paguei chão e e o fruto da informação que na sua rede ele chega muito mais rápido aqui é né a sua entrada então essa intuição de por quê que é conexão residuais são tão importantes e redes profundos é que ela tenta encurtar a distância entre diversas partes do isso faz com que o treinamento é mais
fácil ser realizada no outro trabalho também bem interessante são as bençãos nessas É que na verdade nem vejo você criar conexão residuais não era você conecta uma umas camadas nas outras você cria atalhos entre as camadas isso é chamado de Deus porque uma camada ela tem como entrar no não só a camada anterior mais todas as outras camadas anteriores Então é só um conexões densas aqui na rede e também foi mostrado nesse trabalho que a o erro também diminui e muitos anos essas doenças nessa né a qualidade né do dos modelos usando esse nessa também
é muito bom em alguns casos até é tendo uma performance melhor do que é a as redes residuais o Finn como a gente viu até agora as conveniências Roubos e translação mas existe outras transformações que elas não são tão robustos né então por exemplo Como escalar a imagem o Nacional coisas desse tipo e para fazer as convnets nascer e roubos Assis tipo de transformação a gente usa uma coisa mas não dá deita augmentation onde a gente pega as imagens e os algum sócio edição para a Gerar imagem diferente baseado naquela imagem né Por exemplo a
área da imagem ou torcer ela aumentar por exemplo o brilho e ficou existe tipos e esse tipo de técnica Ele tem muito sucesso na área de visão computacional não tem muito sucesso para terminar de mlp datam de meter-se ainda mas na área de visão computacional é uma técnica que traz muito sucesso faz os modelos tem uma performance muito maior que você vai ter mais nada de treinamento e os modelos eles ficam robustos a outros tipos de transformação que é que eu quero dar um exemplo de visualizar o que as convenientes a aprende né fixa os
mais simples no início a refinado aquele Campo coisas mais abstratas então por exemplo as primeiras camadas elas capturam fiz o que que são bordas né na imagem por exemplo a camada do camadas do Meio parece aquelas captura aqui nariz padrões o de olhos de boca por exemplo e as camadas Mas acima né as convulsões é para os melhores cenas já capturam as noções de face ou seja ela a ideia de hierarquia que você vai agregando né é padrões mais simples em padrões mais complexo Então isso é muito interessante como com essas vezes Elas começam a
entender ele padrões simples até criar padrões mais complexos como a face de uma É isso aí pessoal esse vídeo corpo grande que eu tentei explicar que diversos conselhos né de convnets tô Espero que tenham gostado da o joinha aí se inscreva no canal que eu vou trazer mais novidades aí um grande abraço até mais vá