Baixe o app para aproveitar ainda mais
Prévia do material em texto
Redes Neurais Convolucionais Profundas Leonardo Vidal Batista DI/PPGI/PPGCC leonardo@ci.ufpb.br Programa do componente curricular Objetivos Estudar arquiteturas clássicas e avançadas de redes neurais convolucionais profundas (DCNN) Estudar técnicas de pré-processamento para redução de treinamento e aumento de acurácia de métodos baseados em DCNN Pesquisa envolvendo DCNN Programa do componente curricular Conteúdo Conceitos e técnicas fundamentais Redes Neurais Convolucionais Biblioteca Keras Arquiteturas Avançadas de CNN Tópicos de Pesquisa em Visão Computacional utilizando CNN Cronograma e avaliação 27/11/2018-05/02/2019 - Conceitos e técnicas fundamentais 07/02/2019-07/02/2019 - Entrega e apresentação do Trabalho 1 12/02/2019-14/02/2019 - Semana da Computação 19/02/2019-05/03/2019 - Redes Neurais Convolucionais (CNN) 07/03/2019-07/03/2019 - Entrega e apresentação do Trabalho 2 12/03/2019-28/03/2019 - Arquiteturas avançadas de CNN 02/04/2019-02/05/2019 - Pesquisa em VC utilizando CNN 07/05/2019-07/05/2019 - Entrega e apresentação do Trabalho 3 M = (T1+T2+T3) / 3 Referências Livro - GOODFELLOW, Ian; BENGIO, Yoshua; COURVILLE, Aaron. Deep Learning. Mit Press. 2016 Livro - Josh Patterson. Deep Learning: A Practitioner’s Approach. O'Reilly Media. 2017 Livro - BUDUMA, Nikhil. Fundamentals of Deep Learning - Designing Next-Generation Machine Intelligence Algorithms. O'Reilly Media. 2017 Processamento de Imagens e Visão Computacional Dados Imagens Computação Gráfica Visão Computacional (VC) Processamento Digital de Imagens (PDI) = PDI+ Inteligência Artificial (vídeos, sinais) Processamento de Imagens e Visão Computacional Dados CG VC PDI Por que pesquisar VC? 30% dos neurônios no cortex cerebral humano dedicados à visão (8% tato, 2% audição) Informação em pixels: mais de 85% do cyberspace (Cisco) Ver é desafiador! “As imagens dominam nossa vida, mas são a matéria escura do universo digital, a parte menos entendida. Essencialmente invisível como informação digital” Imagens Digitais Imagens Digitais Ver é desafiador! Ver é desafiador! O que é uma cadeira? Teoria das formas, ideal platônico Ver é desafiador! O que é uma cadeira? PDI e VC 29/11/2018 Leonardo Vidal Batista - 14 Você confia em seu Sistema Visual? Você confia em seu Sistema Visual? VC x Visão humana Objetiva Inflexível Insensível Algorítmica Subjetiva Flexível Emotiva Ambígua VC x Visão humana VC x VH Complementaridade VC x VH VC VH Deep Artificial Convolutional Neural Networks Reconhecimento de Padrões Probabilístico, Simbólico, Conexionista Reconhecimento de Padrões Clássico Aquisição Pré-processamento Seleção e extração de características a = (a1, a2, ... an) Classificador Cachorro Ave Gato Seleção e Extração de Atributos Número de patas, Número de asas Pelos, Penas, Bico, Focinho (boolean) Tamanho Área da cabeça / Área total Perímetro da cabeça / Perímetro total Circularidade, Solidez Razão entre os eixos da elipse de melhor ajuste para a cabeça Descritores de textura Cor Histogramas de gradientes orientados Em geral, impossível Exigem reconhecimento de padrões! Seleção e Extração de Atributos Simbólico Se Penas e Bico então Ave Senão, se Tamanho > 1 m então cachorro ... Probabilístico P(Cachorro|a) > P(Gato|a) e P(Cachorro|a) > P(Ave|a) Então Cachorro Seleção e Extração de Atributos Conexionista a = (a1, a2, ... an) Cachorro Gato Ave O que é um cachorro? Técnicas clássicas Pascal Object Recognition Challenge 2005, 4 classes: bicycles, cars, motorbikes, people Train/validation/test: 1578 images, 2209 annotated objects. 2006, 10 classes: bicycle, bus, car, cat, cow, dog, horse, motorbike, person, sheep. Train/validation/test: 2618 images, 4754 annotated objects. 2007, 20 classes: person, bird, cat, cow, dog, horse, sheep, aeroplane, bicycle, boat, bus, car, motorbike, train, bottle, chair, dining table, potted plant, sofa, tv/monitor Train/validation/test: 9,963 images containing 24,640 annotated objects. Técnicas clássicas Pascal Object Recognition Challenge Técnicas clássicas Pascal Object Recognition Challenge Técnicas clássicas Pascal Object Recognition Challenge 2008, 20 classes. The train/val data has 4,340 images containing 10,363 annotated objects. 2009, 20 classes. The train/val data has 7,054 images containing 17,218 ROI annotated objects and 3,211 segmentations. 2010, 20 classes. The train/val data has 10,103 images containing 23,374 ROI annotated objects and 4,203 segmentations. 2011, 20 classes. The train/val data has 11,530 images containing 27,450 ROI annotated objects and 5,034 segmentations. 2012, 20 classes. The train/val data has 11,530 images containing 27,450 ROI annotated objects and 6,929 segmentations. Deep Convolucional Neural Networks 2009 ImageNet Large-Scale Visual Recognition Challenge 22K classes 15M de imagens http://www.image-net.org/eva/ Redes Neurais ≈86 bilhões de neurônios, cada um conectado a até 10000 outros ≈ 33 bilhões de neurônios e 150 trilhões de sinapses no neocortex Cortex visual tem estrutura hierárquica em camadas (V1, V2, V3, V4, V5): Lateral geniculate body simple cells complex cells lower order hypercomplex cells higher order hypercomplex cells Redes Neurais “As imagens são quebradas e cada área do córtex analisa um pedaço separadamente. Esse processo começa na própria retina. De lá, os impulsos são transferidos para o córtex visual primário, também chamado V1. Essa área tem células especializadas no reconhecimento de linhas. Para essas células não interessa o recheio da imagem, e sim os contornos.” Vinicius Baldo, neurofisiologista, USP Redes Neurais Artificiais (ANN) Clássicas De dezenas até dezenas de milhares de “neurônios” Completamente conectadas ou densas Redes Neurais Artificiais Profundas Múltiplas camadas de aprendizagem hierarquicamente organizadas CNN: Camadas convolucionais seguidas por camadas densas (PDI + IA) Redes Neurais Artificiais Profundas Múltiplas camadas de aprendizagem hierarquicamente organizadas Redes Neurais Artificiais Profundas Google Brain: 24 milhões de “neurônios”, 15 bilhões de conexões, 140 milhões de parâmetros Executando em 16 mil CPUs Team GoogleNet Sejamos específicos! Descrição de cenas Interação Pessoa-Objeto 2012 Erros Erros Como funciona? Redes Neurais ArtificiaisProfundas Redes Neurais Artificiais Profundas Aprendizagem ou treinamento: determinar w Algoritmos de minimização de erros Conhecido Desconhecido Conhecido Redes Neurais Artificiais Profundas Conhecido Desconhecido Conhecido Teste: produzir y Redes Neurais Artificiais Profundas Conhecido Desconhecido Conhecido E se?... (TED - How computers are learning to be creative - Blaise Agüera y Arcas, Google Brain) Síntese de imagens Detecção de objetos Detecção de objetos Transferência de Estilo Transferência de Estilo Transferência de Estilo Transferência de Estilo Transferência de Estilo Transferência de Estilo ICAO Padrão de fotografias faciais da International Civil Aviation Organization (ICAO), agência da ONU para normatização de aviação civil e documentos de viagem Adotado pela Polícia Federal na emissão do passaporte, pelo Tribunal Superior Eleitoral e pelo Instituto de Polícia Científica da Paraíba na emissão de documentos de identidade ICAO 25 requisitos avaliados Competição 1 - Localização do centro do olho de alta precisão Softwares de Monitoramento O que é Deep Learning? Subfield of machine learning concerned with models inspired by the structure and function of the brain called artificial neural networks “very large neural networks we can now have and … huge amounts of data that we have access to” (Andrew Ng, Coursera, Chief Scientist da Baidu Research, fundador do Google Brain) O que é Deep Learning? O que é Deep Learning? Deep learning algorithms seek to exploit the unknown structure in the input in order to discover good representations, often at multiple levels, with higher-level learned features defined in terms of lower-level features Deep learning methods aim at learning feature hierarchies with features from higher levels of the hierarchy formed by the composition of lower level features (Joshua Bengio) O que é Deep Learning “Deep learning, which has been useful but not good enough, should be thrown away in favor of searching for entirely new techniques” (Geoffrey Hinton) "Artificial Intelligence Pioneer Says We Need to Start Over" Communications of the ACM. Retrieved 30 January 2018 Máquinas Morais Máquinas Morais Artificial consciousness (AC) Neuroscience hypothesizes that consciousness is generated by the interoperation of various parts of the brain, called the neural correlates of consciousness or NCC Debate da Plausibilidade Máquinas Morais Geoffrey Everest Hinton Psicólogo congnitivo e cientista da computação britânico Petições contra máquinas letais autônomas Riscos existenciais da IA “Superintelligence seems more than 50 years away” "It is very hard to predict beyond five years" O Dilema do Bonde Filipa Foot, 1967 Máquinas Morais Máquinas Morais Máquinas Morais Máquinas Morais The Malicious Use of Artificial Intelligence report Shahar Avin Cambridge University's Centre for the Study of Existential Risk Policy-makers and technical researchers should work together to understand and prepare for the malicious use of AI Reinforcement learning, where AIs are trained to superhuman levels of intelligence without human examples or guidance Palestras etc TED Talks Can we build AI without losing control over it? https://www.ted.com/talks/sam_harris_can_we_build_ai_without_losing_control_over_it?referrer=playlis t-talks_on_artificial_intelligen Machine intelligence makes human morals more important https://www.ted.com/talks/zeynep_tufekci_machine_intelligence_makes_human_morals_more_importan t?referrer=playlist-talks_on_artificial_intelligen The wonderful and terrifying implications of computers that can learn https://www.ted.com/talks/jeremy_howard_the_wonderful_and_terrifying_implications_of_computers_t hat_can_learn?referrer=playlist-talks_on_artificial_intelligen How we're teaching computers to understand pictures https://www.ted.com/talks/fei_fei_li_how_we_re_teaching_computers_to_understand_pictures?referrer =playlist-talks_on_artificial_intelligen What happens when our computers get smarter than we are? https://www.ted.com/talks/nick_bostrom_what_happens_when_our_computers_get_smarter_than_we_ are?referrer=playlist-talks_on_artificial_intelligen Palestras etc ML Review - Machine Learning Research, Projects and Educational Materials https://medium.com/mlreview Geoffrey Hinton talk "What is wrong with convolutional neural nets ?" https://www.youtube.com/watch?v=rTawFwUvnLE Capsule Networks (CapsNets) – Tutorial https://www.youtube.com/watch?v=pPN8d0E3900 How to implement CapsNets using TensorFlow https://www.youtube.com/watch?v=2Kawrd5szHE Capsule Networks: An Improvement to Convolutional Networks https://www.youtube.com/watch?v=VKoLGnq15RM Vetores a = (4, 7) 4 7 Sinais Sinal 1D = tensor de ordem 1 = sequência numérica ou vetor Ex: s = (4.5, 7, 8, -4, 3) Amostra do sinal colhida em n = 1: 4.5 s[n]: s[1] = 4.5, s[2] = 7, s[3] = 8, ... Imagens em tons de cinza Sinal 2D = tensor de ordem 2 = imagem ou matriz Ex: I = 4 7 6 2 0 0 7 1 1 Pixel na posição (1,1): 4 I(i, j): I(1,1) = 4, I(1,2) = 7, I(1,3) = 6, I(2,1)=2... Imagens em tons de cinza Imagens RGB 3 matrizes (R,G,B) = volume 3D = tensor de ordem 3 IR = 255 128 0 255 0 0 128 0 128 IG= 255 128 0 0 255 0 128 1 1 IB = 255 128 0 0 255 0 7 254 1 I = (255,255,255) (128,128,128) (0,0,0 (255,0,0) (0,255,255) (0,0,0) (128,128,7) (0,1,254) (128,1,1) Pixel na posição (1,1): I(1,1)=(255, 255, 255) I(i,j): I(1,1)=(255, 255, 255), I(1,2)=(128, 128, 128), I(1,3)=(0,0, 0), I(2,1)=(255, 0, 0)... Imagens RGB Ex: IR = 255 128 0 255 0 0 128 0 128 IG= 255 128 0 0 255 0 128 1 1 IB = 255 128 0 0 255 0 7 254 1 Associando R ao índice 1, G ao 2 e B ao 3: I(i,j,c): I(1,1,1) = ?; I(2,1,1) = ?; I(2,1,2) = ? I(i,j,c): I(1,1,1) = 255; I(2,1,1) = 255; I(2,1,2) = 0 Imagens RGB Imagem H x W x 3 Imagens H x W x C C: no. de canais, ou profundidade Coeficiente de Correlação Deseja-se invariância ao deslocamento vertical e à escala Coeficiente de Correlação Linear Tempo a b 0 3 6 1 4 8 2 8 16 a b Correlação linear máxima (=1) Coeficiente de Correlação Linear Tempo a b 0 3 9 1 4 11 2 8 19 Correlação linear máxima (=1) b a Coeficiente de Correlação Linear Tempo a b 0 3 12 1 4 16 2 8 32 Correlação linear máxima (=1) b a Coeficiente de Correlação Linearr = 0.99 Coeficiente de Correlação Linear (Grade Point Average) Coeficiente de Correlação Linear 𝒂, 𝒃: vetores ∈ ℝn Ex: 𝒂 = (𝑎1, 𝑎2,..., 𝑎n) e 𝒃 = (𝑏1, 𝑏2,..., 𝑏n) 𝒂 = (3, 4, 8) e 𝒃 = (6, 8, 16) 𝒂.𝒃 = ? 𝒂.𝒃 = 𝑎1 𝑏1+ 𝑎2 𝑏2+ ...+ 𝑎n 𝑏n = 𝑎𝑖𝑏𝑖 𝑛 𝑖=1 𝒂.𝒃 = |𝒂||𝒃|cosθ 𝒂 = 𝑎𝑖 2 𝑛𝑖=1 e 𝒃 = 𝑏𝑖 2 𝑛𝑖=1 Coeficiente de Correlação Linear Ex: 𝒂 = (3, 4, 8) e 𝒃 = (6, 8, 16) 𝒂.𝒃 = ? 𝒂.𝒃 = 3x6+4x8+8x16 = 178 ou 𝒂.𝒃 = |𝒂||𝒃|cosθ 𝒂 = 𝑎𝑖 2 𝑛𝑖=1 = 89 = 9,43 𝒃 = 𝑏𝑖 2 𝑛𝑖=1 = 356 = 18,87 cosθ = 𝒂.𝒃 𝒂 |𝒃| = 178/(9,43*18,87) = 1 Coeficiente de Correlação Linear O cosseno pode ser uma boa medida de correlação! cosθ = 𝒂.𝒃 𝒂 |𝒃| == 𝒂 𝒂 . 𝒃 𝒃 Vetores colineares de mesmo sentido: cosθ = 1 Vetores colineares de sentidos opostos: cosθ = -1 Vetores perpendiculares: cosθ = 0 Invariante à escala? Coeficiente de Correlação Linear v = (4,7), w = (8, 14) 4 7 8 v w 14 Invariante à escala! Invariante ao deslocamento? Coeficiente de Correlação Linear v = (4,7), w = v+4 = (8,11) Não é invariante ao deslocamento! 4 7 8 v w 11 Ex: 𝒂 = (1, 2) e 𝒃 = (2, 4) 𝒂.𝒃 = 1x2+2x4 = 10 𝒂 = 𝑎𝑖 2 𝑛𝑖=1 = 5 𝒃 = 𝑏𝑖 2 𝑛𝑖=1 = 20 cosθ = 𝒂.𝒃 𝒂 |𝒃| = 10 5 20 =1 Coeficiente de Correlação Linear Ex: 𝒂 = (1, 2) e 𝒃 = (2, 4)-(4,4)= (2,4) – 4 = (-2,0) 𝒂.𝒃 = 1x(-2)+2x0 = -2 𝒂 = 𝑎𝑖 2 𝑛𝑖=1 = 5 𝒃 = 𝑏𝑖 2 𝑛𝑖=1 = 4 cosθ = 𝒂.𝒃 𝒂 |𝒃| = −2 5 4 =-0.44 Não é invariante ao deslocamento! Coeficiente de Correlação Linear Solução Transformar os vetores para média 0: cosθ = (𝒂−𝜇𝑎).(𝒃−𝜇𝑏) 𝒂−𝜇𝑎 |𝒃−𝜇𝑏| = = (𝒂−𝜇𝑎) 𝒂−𝜇𝑎 . (𝒃−𝜇𝑏) 𝒃−𝜇𝑏 = = 𝜎(𝒂,𝒃) 𝜎(𝒂)𝜎(𝒃) r = cosθ: coeficiente de correlação linear de Pearson Subtração da média e divisão pela norma: normalização Coeficiente de Correlação Linear Ex: 𝒂 = (1, 2) e 𝒃 = (2, 4) 𝝁𝒂 = 1,5 e 𝝁𝒃 = 3 𝒂 − 𝜇𝑎=(-0,5, 0,5) e 𝒃 − 𝜇𝑏 = (-1, 1) cosθ = 0,5+0,5 0,5 2 = 1 Coeficiente de Correlação Linear Ex: 𝒂 = (1, 2) e 𝒃 = (2, 4)-4=(-2,0) 𝝁𝒂 = 1,5 e 𝝁𝒃 = −1 𝒂 − 𝜇𝑎=(-0,5, 0,5) e 𝒃 − 𝜇𝑏 = (-1, 1) cosθ = 0,5+0,5 0,5 2 = 1 Coeficiente de Correlação Linear r = 1: correlação máxima r = -1: correlação negativa máxima r = 0: correlação nula Muitas aplicações, inclusive em ML Coeficiente de Correlação Linear Coeficiente de Correlação Linear Coeficiente de Correlação Linear Duas sequências numéricas, s e w Sinal s, máscara w (filtro correlacional) g = s∘w: correlação não normalizada entre w e janelas de s = produto interno entre w e janelas de s Ex: w = (3, 7, 5) s = (4, 1, 3, 8, 4, 0, 3, 8, 0, 7, 7, 7, 1, 2) Correlação não normalizada 4 1 3 8 4 0 3 8 0 7 7 7 1 2 3 7 5 ? s w g (3, 7, 5).(4, 1, 3)=12+7+15=34 Correlação não normalizada 4 1 3 8 4 0 3 8 0 7 7 7 1 2 3 7 5 34 s w g 4 1 3 8 4 0 3 8 0 7 7 7 1 2 3 7 5 34 ? s w g 4 1 3 8 4 0 3 8 0 7 7 7 1 2 3 7 5 34 64 s w g Correlação não normalizada 4 1 3 8 4 0 3 8 0 7 7 7 1 2 3 7 5 34 64 85 52 27 61 65 59 84 105 75 38 s w g Correlação da máscara com (3,7,5)? (6,14,10)? Correlação normalizada Sinal s, máscara w g = s•w (correlação normalizada entre s e w) Ex: w = (3, 7, 5) s = (4, 1, 3, 8, 4, 0, 3, 8, 0, 7, 7, 7, 1, 2) 4 1 3 8 4 0 3 8 0 7 7 7 1 2 3 7 5 ? s w g Correlação normalizada 4 1 3 8 4 0 3 8 0 7 7 7 1 2 3 7 5 -.98 s w g 4 1 3 8 4 0 3 8 0 7 7 7 1 2 3 7 5 -.98 ? s w g 4 1 3 8 4 0 3 8 0 7 7 7 1 2 -.98 0.28 s w g 4 1 3 8 4 0 3 8 0 7 7 7 1 2 3 7 5 -.98 0.28 0.94 -0.5 -.96 0.37 0.62 -.92 0.87 ? s w g Correlação normalizada Filtro casado: resposta máxima na posição do sinal mais “semelhante” (correlacionada com) à máscara Correlação da máscara com (3,7,5)? (6,14,10)? Resposta: 1 e 1 4 1 3 8 4 0 3 8 0 7 7 7 1 2 3 7 5 -.98 0.28 0.94 -0.5 -.96 0.37 0.62 -.92 0.87 NaN 0 -.93 s w g Correlação normalizada Correlação produz sinal g com dimensão inferior à de s dim(g) = dim(s)-dim(w)+1 Evitar essa redução: usar extensão por zero (zero padding) Anexar zeros no início e no final de s, conforme necessário Correlação com stride (passo) = 2, 3, 4... (subamostragem) 4 1 3 8 4 0 3 8 0 7 7 7 1 2 3 7 5 ? -.98 0.28 0.94 -0.5 -.96 0.37 0.62 -.92 0.87 NaN 0 -.93 ? s w g Convolução Sinal s, máscara w (filtro convolucional) Convolução entre s e w: g = s ∗ w = s∘wr ou s•wr wr é w rebatido (“flipado”) w = (h1, h2,..., hn) wr = (hn, hn-1,..., h1) Convolução e Correlação Convolução Correlação ][][][*][][ nhsnhnsng ][][][][][ nhsnhnsng Convolução 2D Complexidade computacional elevada! Dw 2 x Df 2 Convolução 2D Máscara convolucional: campo receptivo Imagem resultante: mapa de ativação ou de características (feature maps) Convolução 2D Convolução com Filtro de Sobel 10 10 10 10 10 10 10 10 10 0 10 10 0 10 10 0 10 10 10 10 10 0 10 10 0 0 10 10 10 10 10 10 10 0 0 0 -1 0 1 -2 0 2 -1 0 1 0 40 30 0 10 10 0 10 10 0 10 10 0 -40 Convolução 2D Qual o efeito de um filtro de dimensão 1x1? R: ajuste de brilho Sobel Gx Sobel Gy Mapa de Ativação Mapa de Ativação Convolução 2D – filtros casados Convolução 2D Rebatimento horizontal e vertical da máscara a b c d e f g h i c b a f e d i h g i h g f e d c b a Convolução de convolução Tamanho do campo receptivo de Gx: 3x3 (igual ao de f) Campo receptivo de f em relação à imagem de entrada? R: 5x5 Filtro f Convolução com volumes Dois modos Convolução com volumes Exemplo Convolução com volumes Exemplo Convolução com volumes Exemplo Seis filtros 5x5x3→seis mapas de ativação: volume de dimensões 28x28x6Exemplo R: 3 filtros 1x1x6 Qual o efeito de um filtro 1x1x6? R: combinação da intensidade dos canais em cada pixel Convolução com volumes 6 filtros 5x5x3 Camada convolucional Camada convolucional Filtros? (sem zero padding) 28 28 Convolução com volumes Produto interno de Frobenius y = 𝒙.𝒘 = 𝑥0 𝑤0+ 𝑥1 𝑤1+ ...+ 𝑥n-1 𝑤n-1 = 𝑥𝑖𝑤𝑖 𝑛−1 𝑖=0 𝒙: pontos do volume “vistos” pela máscara 𝒘: pesos da máscara 1 escalar obtido por um produto interno com 75 multiplicações 𝑥0 𝑥1 … 𝑥n-1 𝑤0 𝑤1 𝑤n-1 𝑥0𝑤0 𝑥1𝑤1 = 𝑥𝑖𝑤𝑖 𝑛−1 𝑖=0 y xn-1wn-1 Convolução com bias 𝑦 = 𝒙.𝒘 + b = 𝑥𝑖𝑤𝑖 𝑛−1 𝑖=0 + 𝑏 𝑏: bias (viés) 𝑥0 𝑥1 … 𝑥n-1 𝑤0 𝑤1 𝑤n-1 𝑥0𝑤0 𝑥1𝑤1 = 𝑥𝑖𝑤𝑖 𝑛−1 𝑖=0 + 𝑏 𝑦 xn-1wn-1 Função de ativação 𝑦 = 𝑓(𝒙.𝒘 + b) = f( 𝑥𝑖𝑤𝑖 𝑛−1 𝑖=0 + 𝑏) 𝑥0 𝑥1 … 𝑥n-1 𝑤0 𝑤1 𝑤n-1 𝑥0𝑤0 𝑥1𝑤1 = 𝑥𝑖𝑤𝑖 + 𝑏 𝑛−1 𝑖=0 xn-1wn-1 𝑓 𝑦 Neurônios Artificiais 𝑥0 𝑥1 … 𝑥n-1 𝑤0 𝑤1 𝑤n-1 𝑥0𝑤0 𝑥1𝑤1 = 𝑥𝑖𝑤𝑖 + 𝑏 𝑛−1 𝑖=0 𝐶𝑜𝑟𝑝𝑜 𝑐𝑒𝑙𝑢𝑙𝑎𝑟 𝑎𝑥ô𝑛𝑖𝑜 (𝑠𝑎í𝑑𝑎) xn-1wn-1 𝑓 f( 𝑥𝑖𝑤𝑖 + 𝑏 𝑛−1 𝑖=0 ) Redes Neurais Artificiais Neurônio com conectividade local 𝑥0 𝑥1 … 𝑥n-1 𝑤0 𝑤1 𝑤n-1 𝑥0𝑤0 𝑥1𝑤1 = 𝑥𝑖𝑤𝑖 + 𝑏 𝑛−1 𝑖=0 𝐶𝑜𝑟𝑝𝑜 𝑐𝑒𝑙𝑢𝑙𝑎𝑟 𝑎𝑥ô𝑛𝑖𝑜 (𝑠𝑎í𝑑𝑎) xn-1wn-1 𝑓 f( 𝑥𝑖𝑤𝑖 + 𝑏 𝑛−1 𝑖=0 ) 𝑎𝑥ô𝑛𝑖𝑜 (saída) de outro neurônio 𝑎𝑥ô𝑛𝑖𝑜 (saída) de outro neurônio 𝑎𝑥ô𝑛𝑖𝑜 (saída) de outro neurônio Funções de ativação Função de Ativação Logística Sigmoidal Pode-se associar a saída a uma probabilidade Usada para classificação binária Função de Ativação Tangente Hiperbólica Sigmoidal Função de ativação ReLU Rectified Linear Unit Simples e eficaz A mais usada em CNN Problemas potenciais com valores de entrada negativos Função de ativação Leaky ReLU ReLU com “vazamento” ou ReLU parametrizada Parâmetro ‘a’ em torno de 0,01 Primeiro Trabalho Implementar em Python a operação de convolução Dw x Dw x C, com viés e função de ativação (ReLU e tanh), stride (inteiro positivo) e zero padding (boolean) especificados pelo usuário em tempo de execução. A máscara convolucional e o viés devem ser especificados em arquivo texto a ser lido durante a execução. Apresentar resultados com imagens monocromáticas e RGB, e com volumes Df x Df x N, produzidos a partir da aplicação prévia de N filtros convolucionais. Os campos de ativação devem ser exibidos como imagens monocromáticas com nível de cinza no intervalo [0, 255], com a) zero = preto e b) mínimo = preto. Convolução com volumes Redes Neurais Convolucionais (CNN) Redes Neurais Convolucionais (CNN) Redes Neurais Convolucionais (CNN) Convoluções: g = x.w + b Coeficientes (pesos) de w, e b, aprendidos (e.g. backpropagation) Em geral, filtros com a mesma profundidade do volume a processar CNN Rede densa ou completamente conectada (fully connected): 16*784 = 12544 pesos na 1ª camada Convolucional (16 filtros 3x3x1): 16*9 = 144 pesos na 1ª camada 28x28x1 CNN Com cinco filtros, haverá cinco neurônios “olhando” para a mesma região no volume de entrada CNN - Pooling CNN - Pooling CNN - Pooling MaxPool 3x3, stride 2 21 8 8 12 10 4 2 12 19 9 7 9 11 6 8 10 4 3 15 13 21 18 12 9 10 22 14 19 0 1 4 8 16 17 4 3 3 3 5 5 20 10 0 4 3 16 20 17 16 21 CNN - Pooling MaxPool 3x3, stride 2 21 8 8 12 10 4 2 12 19 9 7 9 11 6 8 10 4 3 15 13 21 18 12 9 10 22 14 19 0 1 4 8 16 17 4 3 3 3 5 5 20 10 0 4 3 16 20 17 16 21 15 CNN - Pooling MaxPool 3x3, stride 2 21 8 8 12 10 4 2 12 19 9 7 9 11 6 8 10 4 3 15 13 21 18 12 9 10 22 14 19 0 1 4 8 16 17 4 3 3 3 5 5 20 10 0 4 3 16 20 17 16 21 15 21 CNN - Pooling MaxPool 3x3, stride 2 21 8 8 12 10 4 2 12 19 9 7 9 11 6 8 10 4 3 15 13 21 18 12 9 10 22 14 19 0 1 4 8 16 17 4 3 3 3 5 5 20 10 0 4 3 16 20 17 16 21 15 21 18 Redes Neurais Convolucionais (CNN) Classificação de Imagens Aquisição Pré-processamento Seleção e extração de características a = (a1, a2, ... an) Classificador cachorro ave gato Classificação de Imagens Aquisição Pré- processamento Extração de características a = (a1, a2, ... an) f(a, w) fM ∈ [0,1] fH ∈ [0,1] if fM ≥ fH then M else H Treinamento supervisionado Instâncias previamente rotuladas Definir um classificador é definir uma fronteira de decisão que minimiza os erros de treinamento... e que generaliza bem! a1 a2 Treinamento supervisionado Instâncias previamente rotuladas Definir um classificador é definir uma fronteira de decisão que minimiza os erros de treinamento... e que generaliza bem! a1 a2 Treinamento supervisionado Instâncias previamente rotuladas Definir um classificador é definir uma fronteira de decisão que minimiza os erros de treinamento... e que generaliza bem! a1 a2 Classificação a1 a2 Classificador linear binário Classificação não supervisionada Instâncias não rotuladas Agrupamento ou clustering Exemplo: K-médias K-Médias K-Médias Sempre converge Resultado depende dos centróides iniciais Executa-se o algoritmo diversas vezes para encontrar um resultado “típico” Classificação de Imagens Aquisição Pré- processamento Extração de características a = (a1, a2, ... an) Classificador M H CNN (Classificador) Classificação de Imagens Aquisição Pré- processamento f(x, w) fM ∈ [0,1] fH ∈ [0,1] if fM ≥ fH then M else H x Classificação Multiclasses Aquisição Pré- processamento f(x, w) f1 fN Classe = argmax fi i x f2 Métricas de avaliação Acurácia = 𝑁𝑜 𝑑𝑒 𝑐𝑙𝑎𝑠𝑠𝑖𝑓𝑖𝑐𝑎çõ𝑒𝑠 𝑐𝑜𝑟𝑟𝑒𝑡𝑎𝑠 𝑁𝑜 𝑑𝑒 𝑐𝑙𝑎𝑠𝑠𝑖𝑓𝑖𝑐𝑎çõ𝑒𝑠 Taxa de verdadeiros positivos, taxa de verdadeiros negativos, taxa de falsos positivos, taxa de falsos negativos, precisão, revocação, especificidade, sensibilidade, F- measure, índice de Jaccard, matriz de confusão, curva ROC...Classificação de Imagens Um classificador tem uma série de parâmetros e hiperparâmetros a otimizar Parâmetros Definidos automaticamente no treinamento (w, b...) Hiperparâmetros Definidos a priori (pelo usuário) (no de camadas, no de filtros por camada, dimensões dos filtros, funções de ativação, função de perdas...) Otimização de hiperparâmetros Baseada em conhecimento prévio Baseada em dados Otimização de hiperparâmetros Estratégia I – Baseada em dados de treinamento e teste 1. Definem-se hiperparâmetros 2. Definem-se parâmetros no treinamento 3. Avalia-se o resultado em uma base de teste 4. Repete-se até algum critério de parada Qual o resultado em dados nunca vistos? Não utilizar Estratégia I! Treinamento Teste Base disponível Otimização de hiperparâmetros Estratégia II – Baseada em dados de treinamento e validação 1. Definem-se hiperparâmetros 2. Definem-se parâmetros no treinamento 3. Avalia-se o resultado em uma base de validação 4. Repete-se até algum critério de parada Avalia-se o desempenho na base de testes Treinamento Validação Teste Base disponível Otimização de hiperparâmetros Validação cruzada (para bases pequenas) Teste Base disponível Teste Teste Teste Teste Otimização de hiperparâmetros Acurácia de validação Número de filtros por camada Número ótimo Otimização de hiperparâmetros Acurácia de validação Otimizar cada hiperparâmetro individualmente? Não! O problema é combinatório! Número de filtros por camada Número ótimo Função de Perdas Aquisição Pré- processamento f(x, w) f1 fN Classe = argmax fi i x f2 ∈ ℝ Função de perdas L Permite aferir a adequação da distribuição de escores Encontrar w que minimize L Função de Perdas Classe Escore 1 Pessoa 3,7 0,5 -0,3 2 Gato 3,9 1,1 0,1 3 Carro -0.9 0,0 0,9 4 Avião -1,0 -2,4 5,0 5 Sapo 2,3 5,5 -2,3 Função de Perdas Dado um conjunto de instâncias rotuladas {(xi, yi)}, i = 1, …N xi é uma imagem yi é um rótulo (inteiro) da classe verdadeira 𝐿 = 1 𝑁 𝐿𝑖(𝑓 𝑥𝑖, 𝒘 , 𝑦𝑖 𝑁 𝑖=1 ) Função de Perdas Instâncias rotuladas {(xi, yi)}, i = 1, …N xi: imagem; yi: rótulo (inteiro) da classe verdadeira 𝑠𝑦𝑖: escore atribuído à classe verdadeira pelo classificador 𝑠𝑗: escore atribuído às demais classes pelo classificador Perda do SVM multiclasses: 𝐿𝑖 = 0 𝑠𝑗 + 1 − 𝑠𝑦𝑖 𝑗≠𝑦𝑖 𝐿𝑖 = max (0, 𝑗≠𝑦𝑖 𝑠𝑗 + 1 − 𝑠𝑦𝑖) se 𝑠𝑦𝑖 ≥ 𝑠𝑗+1 caso contrário Função de Perdas Perda do SVM multiclasses: 𝐿𝑖 = 0 𝑠𝑗 + 1 − 𝑠𝑦𝑖 𝑗≠𝑦𝑖 𝐿𝑖 = max (0, 𝑗≠𝑦𝑖 𝑠𝑗 + 1 − 𝑠𝑦𝑖) se 𝑠𝑦𝑖 ≥ 𝑠𝑗+1 caso contrário Perda para uma instância e uma classe 𝑗 ≠ 𝑦𝑖 𝑠𝑦𝑖 𝑠𝑗 𝑠𝑗+1 Hinge loss (perda dobradiça) Função de Perdas Exemplo: 3 classes, 3 instâncias de treinamento 𝐿𝑖 = max (0, 𝑗≠𝑦𝑖 𝑠𝑗 + 1 − 𝑠𝑦𝑖) Classe Escore 1 Gato 3.2 1.3 2.2 2 Carro 5.1 4.9 2.5 3 Sapo -1.7 2.0 -3.1 𝐿1 = max (0, 𝑗≠1 𝑠𝑗 + 1 − 3,2) 𝐿1 = max 0, 5.1 + 1 − 3,2 + max 0,−1.7 + 1 − 3,2 = 2,9 + 0 = 2.9 𝐿2 = max 0, 1.3 + 1 − 4,9 +max 0, 2.0 + 1 − 4,9 = 0 + 0 =0 𝐿3 = max 0, 2.2 + 1 + 3,1 + max 0, 2.5 + 1 + 3,1 = 6,3 + 6,6 = 12.9 L = (2.9+0+12.9)/3 = 5.27 Função de Perdas Limites 0 ≤ L < ∞ Variante 𝐿𝑖 = [max (0, 𝑗≠𝑦𝑖 𝑠𝑗 + 1 − 𝑠𝑦𝑖)] 2 Regularização Treinamento: encontrar w que minimize L Risco de superajuste (overfitting)! Regularização reduz o risco: 𝐿𝑖 = max (0, 𝑗≠𝑦𝑖 𝑠𝑗 + 1 − 𝑠𝑦𝑖) + λR(w) Modelo deve ser simples para generalizar bem Regularização L2: 𝑅(𝒘) = 𝒘2 Regularização L1: 𝑅(𝒘) = |𝒘| Dropout λ é mais um hiperparâmetro Dropout Em cada iteração, anula-se a saída de alguns neurônios Seleção aleatória, com probabilidade P P é mais um hiperparâmetro P = 0,5 é típico Dropout Teste Sem dropout Multiplicar cada ativação por P Função Softmax Regressão Logística Multinomial Escores ajustados e interpretados como probabilidades Classe Escore 1 Gato 3.2 1.3 2.2 2 Carro 5.1 4.9 2.5 3 Sapo -1.7 2.0 -3.1 Função softmax: 𝑒𝑠𝑘 𝑒 𝑠𝑗 𝑗 𝑃 𝑦 = 𝑘 𝑥 = 𝑥𝑖 = 𝑒𝑠𝑘 𝑒𝑠𝑗𝑗 Para a imagem de treinamento x1 (gato) 𝑃 𝑦 = 𝑘 𝑥 = 𝑥1 = 𝑒𝑠𝑘 𝑒𝑠𝑗𝑗 Função Softmax 𝑃 𝑦 = 𝑘 𝑥 = 𝑥𝑖 = 𝑒𝑠𝑘 𝑒𝑠𝑗𝑗 Para a imagem de treinamento x1 (gato) 𝑒𝑠𝑗𝑗 = 𝑒 3.2 + 𝑒5.1 + 𝑒−1.7 = 24,5 + 164,0 + 0,18=188,7 𝑃 𝑦 = 1 𝑥 = 𝑥1 = 24,5 188,7 = 0,13 𝑃 𝑦 = 2 𝑥 = 𝑥1 = 164,0 188,7 = 0,87 𝑃 𝑦 = 3 𝑥 = 𝑥1 = 0,18 188,7 = 0,00 Classe Escore 1 Gato 3.2 1.3 2.2 2 Carro 5.1 4.9 2.5 3 Sapo -1.7 2.0 -3.1 Função Softmax 𝑃 𝑦 = 𝑘 𝑥 = 𝑥𝑖 = 𝑒𝑠𝑘 𝑒𝑠𝑗𝑗 Para a imagem de treinamento x1 (gato) 𝑒𝑠𝑗𝑗 = 𝑒 3.2 + 𝑒5.1 + 𝑒−1.7 = 24,5 + 164,0 + 0,18=188,7 𝑃 𝑦 = 1 𝑥 = 𝑥1 = 24,5 188,7 = 0,13 𝑃 𝑦 = 2 𝑥 = 𝑥1 = 164,0 188,7 = 0,87 𝑃 𝑦 = 3 𝑥 = 𝑥1 = 0,18 188,7 = 0,00 Classe Escore 1 Gato 0,13 2 Carro 0,87 3 Sapo 0,00 Função de Perdas Softmax Classe Escore 1 Gato 0,13 2 Carro 0,87 3 Sapo 0,00 𝑃 𝑦 = 𝑘 𝑥 = 𝑥𝑖 = 𝑒𝑠𝑘 𝑒𝑠𝑗𝑗 𝐿𝑖 = −𝑙𝑜𝑔 𝑒𝑠𝑦𝑖 𝑒𝑠𝑗𝑗 𝐿1 = −log (0,13) = 0,89 Função de Perdas Softmax 𝐿𝑖 = −𝑙𝑜𝑔 𝑒𝑠𝑦𝑖 𝑒𝑠𝑗𝑗 ? ≤ 𝐿𝑖 < ? 0 ≤ 𝐿𝑖 < ∞ Otimização de parâmetros Procurar um ponto de perda mínima no espaço de parâmetros Otimização de parâmetros Estratégia 1: busca aleatória Testar conjuntos de parâmetros aleatórios, até encontrar um que minimize a perda O espaço pode ser enorme para que uma busca aleatória funcione! Otimização de parâmetros Estratégia 2: siga a declividade Otimização de parâmetros Estratégia 2: siga a declividade Declividade de uma função de uma variável em um ponto w 𝑑𝑓(𝑤) 𝑑𝑤 = lim ℎ→0 𝑓 𝑤 + ℎ − 𝑓(𝑤) ℎ Para f(w) = f(w1, w2, ...wn) dw = 𝜕𝑓(𝑤1) 𝜕𝑤1 𝜕𝑓(𝑤2) 𝜕𝑤2⋯ 𝜕𝑓(𝑤𝑛)𝜕𝑤𝑛 Otimização de parâmetros Estratégia 2: siga a declividade Vetor gradiente dw = 𝜕𝑓(𝑤1) 𝜕𝑤1 𝜕𝑓(𝑤2) 𝜕𝑤2⋯ 𝜕𝑓(𝑤𝑛) 𝜕𝑤𝑛 dw aponta na direção de máxima subida de f(w) -dw aponta na direção de máxima descida de f(w) Cálculo do gradiente Método simplista 𝜕𝐿(𝑤1) 𝜕𝑤1 = lim ℎ→0 𝐿 𝑤1 + ℎ − 𝐿(𝑤1) ℎ w atual wi+h dw 0.34 -1.11 0.78 0.12 0.55 ... Perda= 1.25347 Cálculo do gradiente Método simplista 𝜕𝐿(𝑤1) 𝜕𝑤1 = lim ℎ→0 𝐿 𝑤1 + ℎ − 𝐿(𝑤1) ℎ w atual w1+h dw 0.34 0.34+0.0001 -1.11 -1.11 0.78 0.78 0.12 0.12 0.55 0.55 ... ... Perda= 1.25347 1.25322 − 1.25347 0,0001 Perda= 1.25322 -2.5 Cálculo do gradiente Método simplista 𝜕𝐿(𝑤1) 𝜕𝑤1 = lim ℎ→0 𝐿 𝑤1 + ℎ − 𝐿(𝑤1) ℎ w atual w1+h dw 0.34 0.34 -2.5 -1.11 -1.11+0.0001 0.78 0.78 0.12 0.12 0.55 0.55 ... ... Perda= 1.25347 1.25353 − 1.25347 0,0001 Perda= 1.25353 0.6 Cálculo do gradiente Usar cálculo! 𝐿 = 1 𝑁 𝐿𝑖(𝑓 𝑥𝑖, 𝒘 , 𝑦𝑖 𝑁 𝑖=1 ) + λR(w) Calcular analiticamente 𝛻𝒘𝐿 Gradient descent Algoritmo simplista while (true) dw = evaluate_grad(loss_function, train_data, w) w = w - step_size*dw Step size ou learning rate (taxa de aprendizagem): hiperparâmetro (dos mais importantes!) Gradient descent while (true) dw = evaluate_grad(loss_function, train_data, w) w = w – 0.01*dw w atual novo w dw 0.34 -2.5 -1.11 0.6 0.78 ... ... 0.12 0.55 ... Perda= 1.25347 0.34 – 0.01 x -2.5 = 0.365 -1.11 – 0.01 x 0.6 = -1,116 Perda = 1.21257 Gradient descent Gradient descent Decaimento de taxa de aprendizagem Learning Rate Learning Rate Iniciar com uma taxa alta (não muito alta) Decrescer a medida que o treinamento prossegue Decaimento em passos (step decay) Reduzir a taxa pela metade (por exemplo) a cada n épocas Decaimento exponencial Decaimento 1/t Learning Rate Exemplo: step decay na ResNet Gradient descent O que acontece com os gradientes nas regiões de saturação das funções de ativação sigmóide? Gradient descent dw = 0 Pesos não serão mais atualizados Vanishing gradients Gradientes extintos Problema minimizado com ReLU e eliminado com Leaky ReLU Gradient descent Leaky ReLU ou PReLU Não satura Computacionalmente eficiente Converge mais rapidamente que sigmóides (6x) Não “morre” Gradient descent 𝐿 = 1 𝑁 𝐿𝑖(𝑓 𝑥𝑖, 𝒘 , 𝑦𝑖 𝑁 𝑖=1 ) + λR(w) 𝛻𝒘𝐿 = 1 𝑁 𝛻𝒘𝐿𝑖(𝑓 𝑥𝑖 , 𝒘 , 𝑦𝑖 𝑁 𝑖=1 ) + λ𝛻𝒘R(w) Custoso quando N é grande Aproximar a soma usando um minibatch de instâncias Tamanho típico do minibatch: 32, 64, 128, 256 Stochastic Gradient Descent (SGD) Stochastic Gradient Descent (SGD) while (true) minibatch = sample_train_data(train_data, 256) dw = evaluate_grad(loss_function, minibatch, w) w = w – step_size*dw Estratégias de atualização dos pesos Há estratégias diferentes para atualizar os pesos SGD+Momento Adam SGD + 1º Momento + 2º Momento + outras técnicas Normalização por lote Batch normalization x: imagem de entrada ou mapa de ativação 𝜇𝑏 = média das imagens ou mapa no lote 𝜎𝑏 = desvio padrão das imagens ou mapa no lote 𝒙 = 𝒙 − 𝜇𝑏 𝜎𝑏 Inicialização dos Pesos Pesos muito pequenos Ativações tendem a zero: neurônios não aprendem Pesos muito grandes Sigmóides saturam: neurônios não aprendem Usar inicialização Xavier Data Augmentation Técnica para ampliar artificialmente a base de imagens Rebatimento (flip) horizontal Data Augmentation Técnica para ampliar artificialmente a base de imagens Recortes e alteração de escala aleatórios Data Augmentation – Exemplo Resnet Treinamento Escolha L em [256, 480] Redimensione imagem para que menor dimensão = L Selecione aleatoriamente recortes de 224 x 224 Teste Redimensione imagem em 5 escalas (menor dimensão): {224, 256, 384, 480, 640} Para cada escala, use até 10 recortes 224x224: 4 quinas, centro + flip de todas Data Augmentation Alterações de cores Por exemplo, contraste e brilho aleatórios Data Augmentation Outros Translação Rotação Cizalhamento Distorção ótica Foco Etc CNN LeNet-5 (1998) Conv-pool-conv-pool-conv-FC-FC 6 filtros convolucionais 5 x 5 x 1 16 filtros convolucionais 5 x 5 x 6 120 filtros conv 5 x 5 x 16 Mapas 1x1 Entrada em níveis de cinza C1: 6 filtros 5x5, stride 1, no zero padding, tanh Pooling 2x2 C2:16 filtros 5x5x6, stride 1, no zero padding, tanh Pooling 2x2 CNN LeNet-5 (1998) CNN – AlexNet (2012) Conv1: 96 11x11 filtros, stride 4, no zero padding ... (8 camadas) Treinada em GPUs GTX 580 com 3 GB de RAM Rede dividida entre duas GPUs Primeira CNN vencedora na ILSVRC 227x 227 CNN – AlexNet (2012) CNN – ZFNet (2013) Semelhante à AlexNet, mas... Conv1: filtros 7x7, stride 2 Convs 3, 4, 5: 512, 1024 e 512 filtros, respectivamente Top 5 error rate Fração das imagens de teste para as quais o rótulo correto não está entre os cinco rótulos mais prováveis pela rede CNN – VGGNet (2014) CNN – VGGNet (2014) Por que filtros menores? conv3x3(conv3x3(conv3x3(I))) 3x9 = 27 multiplicações no produto interno Mesmo campo receptivo de conv7x7 49 multiplicações no produto interno CNN – GoogLeNet (2014) CNN – GoogLeNet (2014) Stem network conv-pool-conv-conv-pool CNN – GoogLeNet (2014) Classificações parciais para auxiliar no backpropagation CNN – GoogLeNet (2014) CNN – GoogLeNet (2014) Inception Module CNN – GoogLeNet (2014) 22 camadas 5 milhões de parâmetros 12x menos que AlexNet Network within a network, microarquitetura 6.7% top five error CNN – GoogLeNet (2014) CNN – GoogLeNet (2014) Parâmetros: 64x(1x1x64) + 192x(3x3x64) = 114688 = 112 K CNN – ResNet (2015) Residual Network 152 Camadas na ILSVRC, 1202 no CIFAR 3x3 conv 3x3 conv CNN – ResNet (2015) 64 convs 7x7, stride 2 MaxPool 2x2 Blocos residuais com 64 convs 3x3 Bloco residual com 128 convs 3x3 stride 2 Blocos residuais com 128 convs 3x3 Bloco residual com 256 convs 3x3 stride 2 Blocos residuais com 256 convs 3x3 Bloco residual com 512 convs 3x3stride 2 e 512 convs 3x3 Blocos residuais com 512 convs 3x3 AvgPool e FC 1000 (apenas para os escores) CNN – ResNet (2015) Para 50+ camadas: Bottleneck layers, como GoogLeNet CNN – ResNet (2015) Batch normalization após cada camada conv Inicialização de pesos Xavier/2 SGD+Momento (0.9) Learning rate = 0.1, /10 quando acurácia de validação estabiliza Tamanho de minibatch = 256 Taxa de decaimento dos pesos = 10-5 CNN – ResNet (2015) Com 152 camadas (ILSVRC 2015) 2-3 semanas de treinamento em 8 GPUs Testes Mais rápida que a VGG, com 8x mais camada e Top 5 error = 3.57% (contra 6.7% da VGGNet) ILSVRC 2016 Ensamble of Inception, ResNet and Inception/ResNet Top 5 error = 2,991 (próximo ao nível de ruído) Sem Google, Microsoft, Baidu… ILSVRC 2017 SENet, erro de 2,25% Interligação de blocos "Squeeze-and-Excitation" (SE) com ResNeXt modificada 29 das 38 equipes com menos de 5% de erro ILSVRC Implementar a LeNet-5 com ReLU, minibatch = 32, batch normalization, inicialização de pesos de He, saída SoftMax Testar com MNIST http://yann.lecun.com/exdb/mnist/ Trabalho 2 Matriz 2x4 de valores aleatórios de uma gaussiana de média 3 e variância 6.25, ou N(3, 6.25) sqrt(6.25) * np.random.randn(2, 4) + 3 array([[-4.49401501, 4.00950034, -1.81814867, 7.29718677], [ 0.39924804, 4.68456316, 4.99394529, 4.84057254]]) Trabalho 2 Inicialização de pesos de He Elementos de wl escolhidos de N(0, 2/𝑛l-1) 𝑛 −1: número de neurônios da camada l-1 Trabalho 2 Em redes tradicionais: camada com N filtros Dk x Dk x M Volume de entrada Df x Df x M Stride 1, zero padding Custo da camada convolucional: Dk x Dk x M x N x Df x Df MobileNet Um filtro convolucional tradicional filtra e combina M canais em um único mapa de ativação Convolução fatorada, ou separável por profundidade (depthwise separable) M convoluções Dk x Dk x 1 (uma por canal)... ... produzindo M canais filtrados, e N convoluções 1x1xM,... produzindo N mapas (combinações dos M canais) Custo: Dk x Dk x M x Df x Df + N x M x Df x Df MobileNet Exemplo: Dk = 3, Df = 112, M = 512, N = 256 Custo de uma camada convolucional tradicional Dk x Dk x M x N x Df x Df = 3x3x512x256x112x112= = 14.797.504.512 Custo de uma camada convolucional fatorada Dk x Dk x M x Df x Df + N x M x Df x Df = 3x3x512x112x112+256x512x112x112= = 1.701.969.920 100* 1.701.969.920 /14.797.504.512 = 11,5% MobileNet Temas de Pesquisa Aferição de qualidade em imagens de impressão digital Detecção de minúcias em imagens de impressão digital Análise de espectrogramas de voz Verificação de aderência ao padrão ICAO Detecção, contagem e reconhecimento de pessoas Detecção e reconhecimento de placas de automóveis Detecção e reconhecimento de sinalização de trânsito Determinação de vivacidade Realce de Imagens Classificação de idade e gênero de pessoas Rastreamento do olhar Detecção, contagem e reconhecimento de veículos Detecção de olhos e de íris MobileNet Filtros da primeira camada Visualização Ajustar minimamente a imagem de entrada de forma a “enganar” a rede Redes Adversárias Avestruz + Caminhão Ajustar (por backpropagation) os pixels da imagem de entrada, até obter a saída desejada, com a confiança que se deseja Redes Adversárias Deep learning has deep flaws! Redes Adversárias Deep learning has deep flaws! Redes Adversárias Deep learning has deep flaws! Redes Adversárias Shallow NN has deep flaws! Transformando um nove em 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9 Redes Adversárias Qualquer modelo linear tem falhas profundas! SVM etc Redes profundas são “muito lineares” por partes Redes Adversárias Solução: treinar com exemplos adversários Jogo de dois jogadores Instabilidade Redes Adversárias Redes Adversárias
Compartilhar