Manual

do

Maker

.

com

Arquiteturas de deep learning

Arquiteturas de deep learning

Arquiteturas de deep learning - top 10

Rede neural é uma loucura. Loucura! Além de um oceano matemático ainda tem um oceano de conceitos. Após usar alguns poucos modelos, decidi fazer um estudo um pouco mais elaborado para obter mais conceitos. Vejamos algumas arquiteturas de deep learning.

Manter-se atualizado não é uma tarefa simples

É bastante complicado acompanhar a evolução das redes neurais, cada vez mais papers, mais conceitos e mais recursos! O lado negativo não é a quantidade de informação, mas nossa capacidade de acompanhar sem perder coisas importantes no caminho. Esse artigo é um "mapa" para introduzir (inclusive a mim) algumas referências importantes sobre arquiteturas de deep learning, de modo a ajudar escolher a arquitetura para cada projeto e então facilitar a busca por papers e exemplos de implementação de forma rápida e indolor.

Redes neurais são como Lego

Construir uma rede neural é realmente simples, a dificuldade está em fazer uma rede neural útil, funcional ou no caso do deep learning, sem problemas de vanish gradient ou overfitting.

Estrutura de código

Basicamente, precisamos organizar a ideia. Temos que compor as camadas de entrada, ativação, classificação, fazer a compilação e o  treino. Além disso, certamente quereremos salvar os pesos do treinamento e quando for o caso, os labels binarizados. O restante do código é uma quantidade irrisória de algorítimos simples para atuar sobre os processo que vão além do model.

Funções principais utilizando visão computacional

Focado exclusivamente em visão computacional (que é a única área que eu realmente atuei com IA), vou citar o máximo possível da minha compreensão sobre essas arquiteturas que estou estudando, sem me estender.

Podemos fazer uma quantidade de tarefas enormes com visão computacional e, talvez eu coloque algumas coisas futuramente. Agora vamos apenas ver o que podemos juntar de visão computacional e inteligência artificial, sendo as principais tarefas:

  • Classificação - simplesmente reconhecendo o que está sendo visto.
  • Classificação + localização - indicando a posição do alvo em relação ao campo de visão.
  • Detecção de objeto - podendo classificar diversos objetos em uma cena, incluindo sua localização.
  • Segmentação - Isolando o contorno do alvo, como se fosse um recorte.

Na classificação, podemos ter simplesmente um gatilho para uma ação periférica como por exemplo, acender uma lâmpada usando IoT. Isso significa que se seu gato passar na visão da câmera, a lâmpada não seria acionada, como aconteceria com um sensor PIR.

Na classificação com localização podemos fazer com mais confiabilidade uma mira eletrônica, invés de utilizarmos apenas face detection com visão computacional. Aplicando a trigonometria do artigo citado nesse parágrafo, teríamos então algo que poderia realmente ser aplicado com uma arma de verdade em projetos de segurança.

Com a detecção de objetos, poderíamos monitorar um ambiente para saber se um objeto de valor exposto está sendo furtado ou ainda, detectar um elemento armado oferecendo risco à segurança de alguém.

Com a segmentação é possível remover objetos de uma cena e sobrepor com a região de uma cópia do plano de fundo. Esse é um recurso que já foi utilizado em câmera de smartphone, não sei se hoje ainda é utilizado, mas tem outras possibilidades, como remover elementos em uma edição de vídeo.

Lista de arquiteturas de deep learning

Mas rede neural não é uma coisa genérica; devido aos muitos modelos matemáticos e combinações de funções, a melhor opção para um projeto de sucesso é utilizar modelos conceituados, evitando experimentações frustrantes na tentativa de reinventar a roda. Ainda, para quem tem um conhecimento mais robusto, ler os papers das arquiteturas aumentam as chances de sucesso.

AlexNet

Essa foi a primeira estrutura introduzida pelos pioneiros do deep learning, sendo até hoje uma poderosa arquitetura. É uma arquitetura simples, conceitualizada nos anos 80.

VGGNet

Em mim essa estrutura causou a melhor das impressões. No artigo Como criar um dataset para deep learning eu usei essa arquitetura e o resultado foi extremamente impressionante, ainda que montando um dataset simplório e pobre. O resultado da classificação foi incrível e o treinamento foi extremamente rápido! No artigo citado nesse parágrafo utilizei uma simplificação do VGGNet, mas a versão do paper tem 19 camadas.

GoogleNet

GoogleNet ou Inception Network é uma arquitetura desenhada por quem? Tchan-nam! Google! Esse modelo foi o vencedor do ImageNet 2014, com seu poderoso modelo de 22 camadas.

Entre as principais vantagens do GoogleNet está a velocidade de treinamento superior ao VGGNet, modelo treinado menor do que o VGGNet (mais de 500MB contra 96MB, o que dá algo como 20% do tamanho). Ainda há intenção de melhorar o modelo.

ResNet

Essa é considerada uma das mais brutas estruturas de deep learning. ResNet é a concatenação de Residual Networks, consiste de múltiplos módulos residuais subsequentes, que são  as bases do bloco de construção da arquitetura. Ele possui 34 camadas residuais.

ResNeXt

Essa é chamada de o estado da arte das técnicas de reconhecimento de objetos. Construída sobre os conceitos de inception e resnet para prover uma nova arquitetura, parece que tem muito a oferecer, mas ainda não experimentei.

RCNN

Region Based CNN é uma arquitetura que diz ser a mais influente de todas as arquiteturas de deep learning aplicada ao problema de detecção de objetos. Ele tende a traçar caixas (boxes) em todos os objetos presentes na imagen, então reconhece cada objeto nela contido.

rcnn.webp

YOLO

You Only Look Once, mas não é por desprezo. Mais um chamado de estado da arte em sistemas de tempo real para resolver problemas de detecção de imagem. Ele traça uma montanha de caixas, então roda um algorítimo de reconhecimento em paraelo para todos os boxes, procedendo com a detecção. Após identificar as classes, ele junta os boxes de forma inteligente para formar uma caixa otimizada. É impressionante:

yolo.webp

Ele consegue processar até 40 imagens em 1 segundo!

SqueezeNet

Extremamente útil em plataformas embarcadas, ocupando menos de 5MB de espaço. Para ter uma ideia, inception utiliza aproximadamente 100MB!

SegNet

Como está seu coração? O meu palpita com esse monte de possibilidades!

SegNet é a concatenação de Segmentation Network, utilizada para resolver problemas de segmentação. É realmente impressionante:

segnet.webp

GAN

Acrônimo de Generative Adversial Network, tem o propósito de gerar uma imagem inteira que não está presente no dataset, mas realístico o suficiente para estar no dataset. Assustador!

Códigos e papers

Precisarei dessas referências  sobre arquiteturas de deep learning por um longo tempo, aproveite também.

Gan

Original Paper link Link for code implementation

SegNet

Original Paper link Link for code implementation

SqueezeNet

Original Paper link Link for code implementation

YOLO

Original Paper link Link for code implementation

RCNN

Original Paper link Link for code implementation

ResNeXt

Original Paper link Link for code implementation

ResNet

Original Paper link Link for code implementation

GoogleNet

Original Paper link Link for code implementation

VGGNet

Original Paper link Link for code implementation

AlexNet

Original Paper link Link for code implementation

Resumo

Com essa introdução a arquiteturas de deep learning, podemos  agora focar melhor na modelagem, sabendo um pouco mais sobre arquiteturas, bastando identificar a que se adequa ao nosso projeto. Além disso, os artigos anteriores mostram diversos conceitos introdutórios e código funcionais, já dá pra trilhar esse caminho incrível das redes neurais. Por isso, sugiro que, caso tenha gostado do artigo, clique ali no canto superior direito em Curtir para dar um up em nossa página do facebook. Se ainda não é inscrito, visite nosso canal DobitAoByteBrasil no Youtube, se inscreva e clique no sininho para receber notificações.

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.