Primeiros passos em AIoT utilizando TinyML em microcontroladores Deixe um comentário

Conforme os anos passam e a tecnologia avança, o deep learning (ou aprendizagem profunda, em português) diminui, e diminui muito. Os famosos Echo Dots da Amazon ou os assistentes pessoais de empresas renomadas como Google e Apple já conseguem interpretar e detectar suas conversas com eles utilizando modelos de apenas 14 Kilobytes de tamanho, tão pequeno que é fácil de fazer rodar até mesmo em um microcontrolador. É aí que nasce a mágica do TinyML, aliar as técnicas de Deep Learning com Sistemas Embarcados, operar algoritmos de aprendizado de máquinas e inteligência artificial em microcontroladores, tendo o poder de literalmente embarcar uma mente digital pensante em qualquer aplicação que desejarmos.

Neste artigo, vamos comentar um pouco mais sobre como iniciar nesse mundo, aprendendo mais sobre os softwares e hardwares necessários para começar a brincar um pouco com TinyML, além de adquirirmos os conhecimentos teóricos necessários para utilizarmos essa técnica poderosíssima no mundo tecnológico.

Esquema básico da operação com TinyML
Esquema básico da operação com TinyML

Primeiramente, é interessante termos o conhecimento sobre Machine Learning. Muitas vezes, engenheiros, devs e entusiastas quando se deparam com o conceito de IA e Machine Learning se desencorajam a estudar sobre o assunto, muitas vezes pelos amplos conceitos matemáticos ou bibliotecas dificílimas de serem entendidas, por isso, o objetivo aqui é simplificar ao máximo esse conteúdo. Para termos uma ideia de aplicações do conceito podemos pensar em um aparelho eletrônico caríssimo no chão de fábrica prestes a quebrar. Seu reparo tem elevado custo e sua troca é inviável muitas vezes, pois pararia o processo, talvez, se tivéssemos obtidos dados sobre a máquina e sobre o ambiente onde está instalada de forma prévia poderíamos evitar esse problema com antecedência. Poderíamos capturar dados sobre quantas horas por dia a máquina produz, qual a temperatura do ambiente onde a máquina opera, quanta vibração ela está sofrendo e diversas outras informações, mas a questão é, como poderíamos prever a eventual quebra do equipamento? Prever é a palavra-chave de qualquer aplicação de IA, nós como meros humanos, não conseguimos capturar estes diversos dados soltos e garantir que certa combinação deles levará o equipamento a falha crítica, nem mesmo a máquina consegue bater o martelo e definir que se X ocorre e Y também o aparelho quebra, o que ocorre é a previsão, a máquina capturando constantemente estes dados e fazendo comparações consegue prever que uma falha pode ocorrer, este é o poder do Machine Learning, é o aprendizado contínuo que leva a previsões com elevado grau de precisão.

Você pode estar se perguntando “Mas não seria mais fácil escrever um código que analisa estes dados e corrige automaticamente, sem ter que usar nada de IA?”. Calma jovem padawan, se fossemos escrever um código usual para corrigir estes problemas precisaríamos entender exatamente qual combinação de dados causa uma eventual quebra do equipamento, além de entender profundamente a dinâmica do sistema, e ambas as alternativas são extremamente complexas de realizarmos, além de que o nosso código serviria para aquela máquina somente e naquele ambiente apenas, se mudássemos um pouco certos detalhes de nosso equipamento, certamente teríamos de refazer tudo. Tá bom, agora já sabemos em que situação aplicar os conceitos de ML (Machine Learning), mas de que forma ele opera? Bom, através de um tipo especial de algoritmo, nós, os programadores, alimentamos suas entradas com todos os dados importantes do sistema, e, a partir disto, através de um processo chamado de treino, o algoritmo constrói um modelo de como o sistema opera. O modelo funciona como um tipo de código também e neste modelo, inserimos nossos dados e conseguimos obter as previsões que quisermos. Este último processo é o chamado inferência.

Diagrama de TinyML
Diagrama de TinyML

Se você já tentou se aventurar pelo mundo do Machine Learning, com certeza já viu que não existe um método específico para criar algoritmos de previsões, mas aqui, focaremos nos conceitos de Deep Learning, que citamos anteriormente. O DL (Deep Learning) se baseia no funcionamento do cérebro humano, sendo constituído de várias redes de neurônios artificiais treinados para modelar as interações e relacionamentos entre diversas entradas e saídas. Usamos o Deep Learning pois para as aplicações que encontramos em microcontroladores ele já é mais que suficiente, operando de forma poderosa mesmo em dispositivos de baixa memória e processamento limitado como os Arduinos, STM32 ou o próprio ESP32.

A cada dia, mais e mais arquiteturas para os algoritmos de Deep Learning são criados. Cada tipo de arquitetura funciona melhor para certo tipo de dados, logo, você primeiramente deve entender e classificar seus dados para só então passar a pensar na arquitetura que vai utilizar, seja ela baseada em alguma arquitetura criada por outro usuário e disponibilizada online ou seja ela feita por você. A vantagem de criar sua própria arquitetura é a garantia de sua funcionalidade total perante os dados que você utilizará para alimentar seu modelo. Sempre pense que seus dados e a arquitetura a ser utilizada estão conectados de forma intrínseca, a funcionalidade do algoritmo depende da sinergia entre os dois. Outro detalhe importante a se pensar quando começamos a trabalhar com os algoritmos são as limitações e pontos fortes do seu hardware, os microcontroladores costumam operar com baixa memória e capacidade de processamento. Portanto, modelos de algoritmos maiores e mais extensos, que necessitam de grande memória e mais tempo de processamento, não serão 100% funcionais ao serem embarcados em dispositivos como os micros.

A complexidade e o tamanho de um modelo depende necessariamente da quantidade de neurônios artificiais utilizados e da forma como estes neurônios se conectam para operar, grandes quantias de neurônios e conexões entre neurônios feitas de formas complexas, com grande quantia de troca de informações resultam em um modelo pesado, e, para os micros, como desejamos resolver problemas mais simples é desejável enxugar bem o nível de neurônios e simplificarmos suas conexões, a fim de não sobrecarregarmos o hardware ou fazer com que seus processos ultrapassem a deadline. Adapte o modelo para não ultrapassar os limites do hardware e para aproveitar suas vantagens, por exemplo, certos hardwares são equipados com dispositivos que aceleram a execução e processamento de certos tipos de arquiteturas.

Neurônios Artificiais - Perceptrons
Neurônios Artificiais – Perceptrons

 

Ao trabalharmos com dados alimentando nosso modelo, precisamos refletir que jogar nossos dados diretamente no sistema da forma que normalmente os extraímos não é eficaz. Os modelos de DL aceitam entradas e geram as saídas no formato de tensores. Sua definição física e matemática costuma divergir, mas para os termos de ciência de dados, um tensor trata-se essencialmente de uma lista que pode conter tanto números como outros tensores (perceba que aqui o termo lista trata-se do modelo estrutural de dados). A estrutura de um tensor é conhecida como seu formato, podendo vir em diferentes dimensões, seja vetorial, matricial, escalar ou com dimensões de ordem maior (a exemplo de um tensor de ordem 2 por 3 por 3, ou seja, um tensor composto por duas matrizes com três linhas e três colunas).

Tensores em Data Science
Tensores em Data Science

Ainda falta um pouco de conhecimento para começarmos a criar modelos em Deep Learning de fato, porém vamos comentar um pouco sobre o hardware e software que utilizaremos para criarmos nossa estrutura. Já que nosso objetivo principal é embarcarmos uma mente pensante artificial, precisamos de um bom microcontrolador com certos dispositivos que capturam alguns dados que serão úteis para treinar nossos modelos. Certamente podemos adaptar nosso código para qualquer outro microcontrolador encontrado no mercado, porém caso você deseje seguir nossa ideia inicial, você pode utilizar um STM32 como seu mainboard, já que essa possui um custo acessível e tem características ótimas para desenvolver uma IA. Caso queira investir um pouco mais em uma placa mais sofisticada e com mais funcionalidades, utilize a placa de desenvolvimento Sparkfun Edge. Ambos os modelos são funcionais e serão completamente capazes de rodar nossos modelos sem maiores dificuldades, mas caso deseje utilizar outro kit de desenvolvimento, sinta-se à vontade! Apenas saiba que certos detalhes terão de ser adaptados por conta própria.

Para o desenvolvimento dos algoritmos utilizaremos apenas softwares gratuitos, então não precisa se preocupar em gastar com nada mais! Utilizaremos a linguagem Python e suas bibliotecas, a plataforma TensorFlow e o Google Colab, sendo basicamente um caderno na nuvem para treinarmos e experimentarmos com o Python.

Não teremos tempo de treinarmos nosso modelo neste artigo, mas vamos comentar brevemente sobre nosso modelo antes de partirmos para sua construção em um próximo momento. Como comentado, o objetivo de qualquer modelo é treinar com dados para que faça previsões sobre o sistema. Os dados que vamos treinar são os dados da curva senoidal, que matematicamente é o gráfico resultante de uma função seno com relação ao tempo, do tipo sen(x), onde x é a entrada angular da equação. O objetivo do modelo é prever a curva de seno a partir de um dado angular x. Certamente que poderíamos simplesmente calcular o seno de x diretamente, mas, utilizando o modelo em IA, podemos exemplificar tudo que foi dito sobre os algoritmos de Machine Learning. Com esta etapa dando certo, vamos então embarcar tudo que criamos em um microcontrolador!

Função Seno em ação!
Função Seno em ação!

E aí? Ficou curioso sobre o tema? Quer saber um pouco mais sobre? Fique ligado que em breve ensinaremos a criar o modelo prático e enfim embarcaremos tudo em um microcontrolador!


Esse conteúdo é resultado da parceria da MakerHero com a Cheetah E-Racing. Curtiu o conteúdo? Então deixe seu comentário abaixo! E não esqueça de acompanhar a Cheetah E-Racing nas redes sociais.

Faça seu comentário

Acesse sua conta e participe