Deep Learning na Visão Computacional
Hae Yong Kim
Deep learning está realizando tarefas que pareciam impossíveis 5 anos atrás.
Estamos dando passos para computador que: * Entende o que vê;* Entende o que ouve, e fala vários idiomas;* Lê e entende texto científico, médico e jurídico;* Aprende sozinho, a partir das experiêcias.
Frequentemente sai notícias sobre deep learning em jornal de grande circulação.
Deep learning evoluiu muitíssimo rápido (5 anos).
Tarefas consideradas impossíveis 5 anos atrás são possíveis hoje. Ex: Computador soluciona melhor “captcha” do que ser humano.Nós, professores, estamos tendo que aprender deep learning, voltando a sentar no banco de alunos.
Meu esforço para aprender deep learning:1) Livro http://neuralnetworksanddeeplearning.com/2) Programas Tiny-DNN, Theano.3) Banco de imagens MNIST e CIFAR-10.4) Curso de Stanford CS231n “Convolutional Neural Networks for Visual Recognition”.5) Programas Dlib, Caffe, Tensorflow.
Deep learning (2010) é uma técnica particular de machine learning (1980).Machine learning (1980) é uma sub-área de inteligência artificial (1950).
Classifique 16kg, 3kg e 75kg.
Machine learning simples:Dadas amostras de treinamento de peso (kg) e rótulo Adulto, Bebê e Criança:
Muito simples
Feminimo Masculino
?? Muito difícil, sem usar deep learning.
Classifique:
Eu classifiquei manualmente e cometi 1% de erro.Fiz um programa deep learning simples que comete 1% de erro.Programa simples é tão bom quanto ser humano!Polêmica causada pelo software que reconhece homossexuais pela face (20-30% de erro).
Deep learning utiliza redes neurais com muitas camadas escondidas.
Em visão computacional, usa camada convolucional.
Consegue resolver problemas que pareciam impossíveis, como:
* Classificar os rostos em feminino/masculino.* Descobrir idade pela face.* Ler placas e números de casas para Google Map.
Agora, “captcha” é inútil: computador reconhece melhor letras e números distorcidos que humanos.
Procurar: “Man riding bicycle carrying dog” em mecanismos de busca: Google, Bing, Yahoo, Duckduckgo.
Como os sites de busca encontram imagens de:“Man riding bicycle carrying dog”?Se escrever em português, (ainda) não dá muito certo.
Man seated on a chair hugging dog
Man walking with dog on highway
Reconhecimento de fala (Siri, Cortana, etc)Tradução de texto (Google translate, Bing translator, etc.)Recomendação de vídeo no Youtube.Propaganda com sugestão de produtos que o usuário pode se interessar.http://www.yaronhadad.com/deep-learning-most-amazing-applications/
Restaura automaticamente cor em fotos preto-e-branco.
Colorir manualmente: https://g1.globo.com/mg/minas-gerais/noticia/imagens-historicas-ganham-cor-nas-maos-de-artista-mineira.ghtml
Super-resolução. Consegue identificar o rosto na coluna esquerda? Computador gerou a coluna do meio. Coluna da direita é a imagem alta-resolução desconhecida.
Aprende a jogar video-gameJogando (vendo os pixels e movendo joystick).
Em muitos jogos, é melhor que ser humano.
Melhora jogando contra si mesmo.
Carro autônomo.
Robótica.
Composição automática de música.
Leitura labial (93% de acerto, melhor que ser humano 52%).
Transferir estilo de pintura.
Classificação de dígitos manuscritos MNIST(provavelmente, o problema mais simples de deep learning)
Erro humano: 2 – 2,5 %Erro de machine learning convencional: 2,5%O menor erro de deep learning: 0,23%O que eu consegui: 0,35%.
Banco de dados para reconhecimento de objetos:
MNIST: Dígitos manuscritos. Imagens 28x28.
CIFAR-10: 10 categorias de objetos (trem, gato, cachorro, carro, navio, etc). Imagens 32x32.
Pascal: 20 categorias de objetos. Imagens “grandes” com bounding box localizando objetos.
Imagenet: 20000 categorias. 14 milhões de imagens.
Fei-Fei Li & Justin Johnson & Serena Yeung Lecture 9 - May 2, 20178
LeNet-5
[LeCun et al., 1998]
Conv filters were 5x5, applied at stride 1
Subsampling (Pooling) layers were 2x2 applied at stride 2
i.e. architecture is [CONV-POOL-CONV-POOL-FC-FC]
Vou usar slides do curso de Stanford.
LeNet-5 (1998)
AlexNet (2012) – aqui deep learning torna-se popular
VGGNet (2014)
GoogleNet (2014)
ResNet (2015)
Todos baseados em rede neural convolucional.Usam ReLU, maxpooling, e fully-connected layer.
Fei-Fei Li & Justin Johnson & Serena Yeung Lecture 9 - May 2, 2017Fei-Fei Li & Justin Johnson & Serena Yeung Lecture 9 - May 2, 201722
ImageNet Large Scale Visual Recognition Challenge (ILSVRC) winners
First CNN-based winner
Deep learning (convolutional neural net) aprende sozinho quais são as melhores características. Antes, ser humano tinha que dizer.
Fei-Fei Li & Justin Johnson & Serena Yeung Lecture 8 - April 27, 201711
CPU vs GPU
# Cores Clock Speed Memory Price
CPU
(Intel Core
i7-7700k)
4(8 threads with
hyperthreading
)
4.4 GHz Shared with system $339
CPU
(Intel Core
i7-6950X)
10 (20 threads
with
hyperthreading
)
3.5 GHz Shared with system $1723
GPU
(NVIDIA
Titan Xp)
3840 1.6 GHz 12 GB GDDR5X $1200
GPU
(NVIDIA
GTX 1070)
1920 1.68 GHz 8 GB GDDR5 $399
CPU: Fewer cores,
but each core is
much faster and
much more
capable; great at
sequential tasks
GPU: More cores,
but each core is
much slower and
“dumber”; great for
parallel tasks
11
Num computador bom:* GPU 50x mais rápido que CPU usando cuDNN (biblioteca otimizada).* GPU 3x mais rápido que CPU sem biblioteca otimizada.
No meu computador:* GPU 10x mais rápido que CPU usando cuDNN.* GPU e CPU mesma velocidade sem biblioteca otimizada.
É muito difícil escrever programa para GPU. Se escrever, não fica muito rápido.Tem que usar rotinas prontas (cuDNN).
Não precisa ter computador com GPU bom.É possível usar computação na nuvem (Google, Amazon, etc).
Google TPU
78
(Tensor Processing Unit)
Em uso pela Google desde 2015.TPU é 15-30x mais rápido que GPU/CPU. Gasta muito menos energia.
Fei-Fei Li & Justin Johnson & Serena Yeung Lecture 8 - April 27, 2017Fei-Fei Li & Justin Johnson & Serena Yeung Lecture 8 - April 27, 201720
Softwares para deep learning
Caffe (UC Berkeley)
Torch (NYU / Facebook)
Theano (U Montreal)
TensorFlow (Google)
Caffe2 (Facebook)
PyTorch (Facebook)
CNTK (Microsoft)
Paddle (Baidu)
MXNet (Amazon)Developed by U Washington, CMU, MIT,
Hong Kong U, etc but main framework of
choice at AWS
And others...
Empresas (e não universidades) estão fornecendo software para deep learning. Há interesse econômico.
Testei:
* Tiny_dnn (C++, só para CPU).* Dlib (C++, CPU/GPU)* Caffe (linguagem própria, Python, C++)
Testei rapidamente:
* Theano (Python)* Tensorflow (Python, C++)
Estou buscando softwares que permitam inserir novos tipos de camadas. De preferência em C++, pois é bem mais rápido que Python.
Fei-Fei Li & Justin Johnson & Serena Yeung Lecture 11 - May 10, 201717
Other Computer Vision Tasks
Classification
+ Localization
Semantic
SegmentationObject
Detection
Instance
Segmentation
CATGRASS, CAT,
TREE, SKYDOG, DOG, CAT DOG, DOG, CAT
Single Object Multiple ObjectNo objects, just pixels This image is CC0 public domain
Fei-Fei Li & Justin Johnson & Serena Yeung Lecture 14 - May 23, 2017
Reinforcement learning: Playing Atari Games
42
Objective: Complete the game with the highest score
State: Raw pixel inputs of the game state
Action: Game controls e.g. Left, Right, Up, Down
Reward: Score increase/decrease at each time step
[Mnih et al. NIPS Workshop 2013; Nature 2015]
Fei-Fei Li & Justin Johnson & Serena Yeung Lecture 14 - May 23, 201762
Video by Károly Zsolnai-Fehér. Reproduced with permission.
https://www.youtube.com/watch?v=V1eYniJ0Rnk
(Goodfellow 2016)
(Andrej Karpathy, “Breaking Linear Classifers on ImageNet”)
Problema: Adversarial attack.
8% peixe dourado 12% margarida
(Goodfellow 2016)
Problema:Adversarial attack: Turning Objects into “Airplanes”
Deep learning “explodiu” nos últimos 5 anos.
Possivelmente, estamos no meio de uma revolução em computação.
No futuro, talvez teremos computadores com processadores dedicado a deep learning.
Já estamos usando deep learning corriqueiramente (ex: quando fazemos busca na internet, usamos Siri, Cortana, etc.).
As empresas estão investindo pesado em deep learning.
Frequentemente, aparecem novas aplicações de deep learning.
Nós, professores, estamos tendo que aprender deep learning.