terça-feira, 3 de março de 2020

Conceitos básicos em Deep Learning

Introdução



Antes de começar é preciso destacar alguns termos que serão necessários para o entendimento deste post, vou destacar os termos em inglês para ajudar em futuras buscas, pois existe muito material em inglês sobre este assunto.

O objetivo aqui é classificar (to classify) imagens, que significa apresentar um imagem (ou frame em um vídeo) e detectar algum objeto na imagem e classificá-lo. Por exemplo, encontrar um cachorro.

Em aprendizado de máquina (machine learning) para chegarmos no momento de classificar imagens precisamos primeiro treinar (to train) o modelo (model). Redes neurais profundas (deep neural network) são redes neurais que contém muitas camadas escondidas (hidden layers). É muito comum se usar o termo deep learning quando se está treinando redes neurais profundas, este é o nosso caso.

Treinar significa colocar etiquetas (labels) em fotos, muitas fotos 600, 800, 1000.... quanto mais melhor. Para colocar as etiquetas use o LabelImg

O tempo de treinamento é muito demorado e depende muito do computador que será usado, pode demorar muitos dias e até semanas. É comum utilizar computadores com GPUs (placas graficas NVidia são perferidas) para minimizar este tempo.

Uma estratégia amplamente utilizada é usar um modelo já treinado (pre-trained model) para uma base de imagens (por exemplo: COCO dataset, the Kitti dataset, the Open Images dataset) e re-treina-lo (retrain). Modelos pré-treinados podem ser encontrados no Tensorflow detection model zoo.

Depois que você tem um modelo re-treinado (ou se você simplesmente quer usar um modelo treinado) você faz a inferência (inference) (o inference graph é o arquivo .pb) que é o objetivo final: fazer predições (predictions) ou melhor classificar o conteúdo de uma imagem (ou frame em um vídeo).

Agora falta falar do framework, que é a plataforma em que se faz tanto o treinamento quanto a inferência. Existem alguns frameworks bastante utilizados: PyTorch, Caffe2 e Tensorflow. Nós iremos usar o Tensorflow.

Obs.: Glossário de machine learning.


Nenhum comentário:

Postar um comentário