Manual
do
Maker
.
com
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.
É 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.
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.
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.
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:
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.
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.
Essa foi a primeira estrutura introduzida pelos pioneiros do deep learning, sendo até hoje uma poderosa arquitetura. É uma arquitetura simples, conceitualizada nos anos 80.
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 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.
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.
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.
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.
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:
Ele consegue processar até 40 imagens em 1 segundo!
Extremamente útil em plataformas embarcadas, ocupando menos de 5MB de espaço. Para ter uma ideia, inception utiliza aproximadamente 100MB!
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:
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!
Precisarei dessas referências sobre arquiteturas de deep learning por um longo tempo, aproveite também.
Original Paper link Link for code implementation
Original Paper link Link for code implementation
Original Paper link Link for code implementation
Original Paper link Link for code implementation
Original Paper link Link for code implementation
Original Paper link Link for code implementation
Original Paper link Link for code implementation
Original Paper link Link for code implementation
Original Paper link Link for code implementation
Original Paper link Link for code implementation
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.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.